* Platform specific information ** 8086 *** Default memory map 16-bit mem map (seg:off) 0x0000:0x0000 -> 0x0000:0x0500 BIOS stuff 0x0000:0x0500 -> 0x0000:0x2100 root 0x0000:0x2100 -> 0x0000:0x3300 fat 0x0000:0x3300 -> 0x0000:0x6c00 14,25kb free space 0x0000:0x6c00 -> 0x0000:0x7c00 IDT and GDT (256 desc. eatch) 0x0000:0x7c00 -> 0x0000:0x7e00 bootsector 0x0000:0x7e00 <- 0x0000:0xffff ~32,5kb stack for boot 0x1000:0x0000 -> 0x9000:0xffff 576kb free space 0xa000:0x0000 -> ............. VGA mem etc. *** Restart code To restart the segment loaded from the bootsector: 68007C ; push 7C00 C3 ; ret For an intersegment restart: 6A00 ; push 0 68007C ; push 7C00 CF ; iret * Testing notes ** Making blank floppy disk images dd if=/dev/zero of=$filename.img count=1440 bs=1k ** Changing floppies inside of qemu While qemu is running it is possible to change floppies To achieve this you first must enter the qemu monitor by pressing: Ctrl-Alt-Shift-2 You then may change the floppy by typing: change $drivename $filename for example to use the file blank_floppy.img in the A drive: change floppy0 blank_floppy.img ** Building binaries for testing *** stage0_monitor There are literally hundreds of ways of building the root bootstrap binary. All that is required is a simply hex compiler written in any language on any system available to the user. This repository contains a hex compiler written for linux in hex and assembly as well as a platform independent C implementation. Then to complete the build process write to the master boot record of a floppy disk. Or should you desire simply use qemu to boot the compiled file directly.