stage0/notes.org

1.6 KiB

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.