/ArGOS

Hobby x86 Operating system by Alberto Girardi.

Primary LanguageC

ArGOS OPERATING SYSTEM

Fatto da Alberto Girardi, a San Vito, Friuli, Italia

Ad gloriam humanitatis

12/09/2023

GOAL: building an OS totally from scratch. Have fun along the way. Learning assembly language, low level management of memory and execution, C language implementation and low level usage, kernel architectures and abstraction layers.

To be used on qemu, (booting as a flat binary for now).
Totally insecure. Complete possibility of memory acces.
in developement

Initial inspiration spark: jdh's "Tetris OS". First steps following nanobyte OS and Making an OS (x86)
Extrely useful information from osdev.org

wakatime

HOW TO COMPILE AND RUN and USE

REQUIREMENTS:

  • i686-elf cross compiler, GNU gcc and ld, with libgcc
  • nasm
  • qemu
  • make

compile:

make

makefile targets:

make tclean    ;deletes build directory
make clean     ;deletes other tmp build files, only final image remains
make recomp    ;tclean and then compiles
make odump     ;objdump of all .o files

boot:

make run

reboot from inside: press "r"

DOCUMENTATION

doc file
execution controll

HISTORY LOG

  • FIRST CRUDE BOOTLOADER TEST: 12/09/2023 23:04
  • in the following weeks
  • first function: 21/9/2023
  • print function, loops, arithmetic functions tests, playing around, end of asm tests 2 22/09/2023
  • function that prints a decimal number 24/09/2023
  • Understanding of asm memory model, stack
  • passing function argument to the stack 29/09/2023
  • getting user input via keyboard 05/09/2023
  • rebooting
  • reading from the disk (crude test 14/10/2023)
  • read from disk and load to memory function and stage 2 bootloader: 15/10/2023
  • ENTER 32 BIT MODE (gdt, new segments) 19/10/2023
  • 32 bit coding in the following days, reimplementing old functions
  • c kernel working 25/10/2023
  • kernel lib linking
  • vga drivers 27/10/2023
  • problems with global variables
  • problem solved 2/11/2023
  • implemented integer and hex printing function 3/11/2023

CURRENT PLAN

  1. printf
  2. terminal and scrolling, changing vga mode
  3. interrupts
  • keyboard input /
  • reboot /
  • reading disk and 2 stage bootloader/
  • kernel loader/
  • cross compiler and c running/
  • asm c wrappers
  • interrupts handling
  • screen vga drivers/
  • screen management/
  • printf
  • hardware abstraction layer
  • disk drivers
  • keyboard drivers