49 lines
1.6 KiB
Org Mode
49 lines
1.6 KiB
Org Mode
|
* 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.
|