This is a simple bootloader/OS project, with the goal of hopefully becoming a basic operating system.
Under the releases page for the repo you can find previous milestones reached in this project. These serve as an archive of my progress and to save any interesting programs I make which are later removed.
- [v0.0.1] Pong bootloader - a simple remake of the classic game Pong that fits in the 512 bytes of the bootsector.
Before building, you'll need to download and setup your own cross compiler for the i686-elf architecture. You can find instructions on how to do this in the OSDev Wiki page (GCC Cross-Compiler).
Once you've setup the cross compiler, you can simply run make in the root of the project folder, and make run to start running it.
Good question! Well in short I have two reasons:
- I'm bored of building CRUD mobile and web apps in university at the moment and want to do something more low level for a while, and
- OSDev is really fun and interesting!
I've never done any form of operating system development before, so this'll be a difficult challange, and I'm hoping to track the progression of this project through this repository as it progresses over time (which could either be weeks, months, or years!)
Below is a rough outline of the roadmap I'm following for now
- Setup a first and second stage bootloader,
- Setup protected mode (GDT, IDT, A20 line, etc...),
- Setup FAT 12 (or 16) file system
- Load C kernel from file system
One of the most important parts about OS Dev is finding the right resources and sites to start out. Obviously there is the OSDev Wiki which has a surplus of documentation and tutorials to follow. I've created a list of some of the links I'll be using for this project in case anyone is curious:
- Babysteps Guide - this is the starting point for the project, it contains a step by step guide for understanding the basics of a bootloader and building one.
- IBM's VGA XVG Technical Reference Manual - to help understand VGA graphics a bit better while devloping the graphics driver.
- Intel 8086 ISA - Full instruction set for the Intel 8086 assembly language.
- BIOS Interrupts and Functions - a useful PDF listing several BIOS interrupts and functions that can be used in real mode for setup.
As you can probably tell, this is very casual side project, and it'll probably change a lot as I learn more and get more ideas. Thanks for reading, I hope you stick around for the journey that lies ahead!
El Psy Kongroo