Boot Layer
src/boot.s defines Multiboot header, initializes stack, and jumps to kernel_main.
Documentation
Technical reference for startup flow, interrupt model, keyboard handling, and release pipeline behavior.
Warning: Experimental alpha software. APIs, behavior, and docs may change frequently.
src/boot.s defines Multiboot header, initializes stack, and jumps to kernel_main.
src/kernel.c initializes terminal, interrupt subsystem, lock-state UI updates, shell command dispatch, memmap rendering, PMM/heap stats, and dynamic shell buffering.
src/terminal.c handles text output, scrolling, cursor behavior, and fixed-row status rendering.
src/interrupts.c remaps PIC and loads IDT. src/keyboard.c handles IRQ scancodes and key queue.
src/timer.c programs PIT channel 0 and tracks uptime ticks consumed by the status bar.
High-level flow from bootloader handoff to interrupt-driven subsystems and user command handling.
Detailed interrupt routing for exceptions, PIT timer ticks, and keyboard events.
IRQ1 (vector 0x21)
-> isr_keyboard (src/isr.s)
-> interrupts_handle_keyboard_irq()
-> keyboard_handle_irq()
-> queue char + update lock LEDs/UI
-> PIC EOI
make -C kernel all CROSS_COMPILE=
make -C kernel iso CROSS_COMPILE=
qemu-system-i386 -cdrom kernel/build/kernel.iso
| Path | Purpose |
|---|---|
| kernel/src/boot.s | Multiboot header and stack setup |
| kernel/src/isr.s | Assembly ISR entry stubs |
| kernel/src/interrupts.c | IDT init, PIC remap, IRQ dispatch |
| kernel/src/keyboard.c | Scancode handling, lock states, input queue |
| kernel/src/terminal.c | VGA text rendering and status row support |
| kernel/src/timer.c | PIT setup and uptime tick counters |
| kernel/src/multiboot.h | Multiboot structs and flags for memory map parsing |
| kernel/src/pmm.c | Bitmap-based physical memory manager and frame statistics |
| kernel/src/heap.c | Kernel heap allocator (`kmalloc`/`kfree`) and allocation statistics |
| kernel/Makefile | Build and ISO generation rules |
Project SigmaBoot is built to teach kernel fundamentals through small, testable milestones.
No. It is alpha-stage experimental software intended for learning and iteration.
Boot in QEMU, run shell commands, inspect uptime and lock states, and use the memmap command.
Date-style tags are used to keep chronological milestones clear while development moves quickly.