Skip to content

OmarAzizi/EchoOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EchoOS

C Assembly Icon

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

Testing Interrupts

This screenshot shows the output in qemu after I devided by zero in to trigger the interrupt 0 in IDT image

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) image

Clone & Run

Clone the repository

git clone https://github.com/OmarAzizi/EchoOS.git && cd EchoOS

Building the source and running it

./build.sh && make run

Note

To build the code successfully, you need to set up:

  1. QEMU emulator
  2. GCC Cross-Compiler
  3. A tree structure that looks like this (in the root of the project):
.
├── bin
├── build
│   ├── disk
│   ├── idt
│   ├── io
│   └── memory
│       ├── heap
│       └── paging