I'm trying to build my own Operating System and its kernel (Project still in progress). So far I implemented:
- The bootloader
- Global Descriptor Table (GDT), so I can switch to 32-bit Protected mode
- Simple LBA driver to read from disk in protected mode (Because we can't use INT 0x13 from BIOS anymore)
- VGA 16-color text mode
- Interrupt Descriptor Table (IDT)
- Simple memset function
- Remapped Master & Slave PICs
- Dynamic memory (.e.g heap memory & malloc like functions)
- Memory paging
This screenshot shows the output in qemu after I devided by zero in to trigger the interrupt 0 in IDT
This screenshot shows the output after pressing a key on the keyboard (This is after remapping the PICs so the interrupt called here is 0x21)
Clone the repository
git clone https://github.com/OmarAzizi/EchoOS.git && cd EchoOS
Building the source and running it
./build.sh && make run
To build the code successfully, you need to set up:
- QEMU emulator
- GCC Cross-Compiler
- A tree structure that looks like this (in the root of the project):
.
├── bin
├── build
│ ├── disk
│ ├── idt
│ ├── io
│ └── memory
│ ├── heap
│ └── paging