Low Level Development Project - x86 Legacy Bootloader

March 2024 - Present

x86 Assembly

I started a low-level development project to better understand how software interacts directly with hardware, using Intel’s x86 Software Developer’s Manual as my primary reference. The goal was to work directly with the x86 architecture, taking as few abstractions for granted as possible.

I began by writing 16-bit real-mode programs directly to the MBR, testing the BIOS interrupts, segmented memory, and VGA output using hand-assembled x86 machine code. Building on this, I developed a custom MBR bootloader that loads a kernel from disk, sets up a GDT, and switches the CPU into 32-bit protected mode. From there, I’ve been developing 32-bit programs that handle port IO and extended memory, and I plan to build a minimal kernel that schedules programs and manages a filesystem.

The project's source code is available on GitHub.



(Hello World 16-bit MBR program) (32-bit 7.3KB ASCII art program run from bootloader)

Return to Projects