2016-05-21 02:10:56 +01:00
|
|
|
* Platform specific information
|
|
|
|
** 8086
|
2016-05-21 23:37:24 +01:00
|
|
|
To encode assembly to hex, please reference: http://ref.x86asm.net/geek.html
|
|
|
|
WARNING encoding is an extremely slow and painful process by hand,
|
|
|
|
BE VERY VERY THANKFUL for those that came before us and made such wonderful
|
|
|
|
things as assemblers and C compilers that hide most of the horrible darkness from our eyes...
|
|
|
|
|
2016-05-21 02:10:56 +01:00
|
|
|
*** 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.
|
2016-05-21 23:37:24 +01:00
|
|
|
This repository contains a hex compiler written for Linux in hex and assembly as
|
2016-05-21 02:10:56 +01:00
|
|
|
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.
|