build still broken
Now we load all the code, but it overwrites the extended BIOS area. 640KB is no longer enough. Need to rethink loading strategy.
This commit is contained in:
parent
1b18ec6ee9
commit
0e2a9ad93d
28
boot.subx
28
boot.subx
|
@ -164,6 +164,34 @@
|
|||
cd/syscall 0x13/imm8/bios-disk-services
|
||||
0f 82/jump-if-carry disk_error/disp16
|
||||
|
||||
# load two more tracks of disk into addresses [0x76000, 0x85c00)
|
||||
b4/copy-to-ah 2/imm8/read-drive
|
||||
# dl comes conveniently initialized at boot time with the index of the device being booted
|
||||
b5/copy-to-ch 0/imm8/cylinder
|
||||
b6/copy-to-dh 0xe/imm8/head # <====
|
||||
b1/copy-to-cl 1/imm8/sector # 1-based
|
||||
b0/copy-to-al 0x7e/imm8/num-sectors # 2*63 = 126
|
||||
# address to write sectors to = es:bx = 0x56800, contiguous with boot segment
|
||||
bb/copy-to-bx 0x7600/imm16 # <====
|
||||
8e/->seg 3/mod/direct 3/rm32/bx 0/r32/es
|
||||
bb/copy-to-bx 0/imm16
|
||||
cd/syscall 0x13/imm8/bios-disk-services
|
||||
0f 82/jump-if-carry disk_error/disp16
|
||||
|
||||
# load two more tracks of disk into addresses [0x85c00, 0x95800)
|
||||
b4/copy-to-ah 2/imm8/read-drive
|
||||
# dl comes conveniently initialized at boot time with the index of the device being booted
|
||||
b5/copy-to-ch 0/imm8/cylinder
|
||||
b6/copy-to-dh 0x11/imm8/head # <====
|
||||
b1/copy-to-cl 1/imm8/sector # 1-based
|
||||
b0/copy-to-al 0x7e/imm8/num-sectors # 2*63 = 126
|
||||
# address to write sectors to = es:bx = 0x56800, contiguous with boot segment
|
||||
bb/copy-to-bx 0x85c0/imm16 # <====
|
||||
8e/->seg 3/mod/direct 3/rm32/bx 0/r32/es
|
||||
bb/copy-to-bx 0/imm16
|
||||
cd/syscall 0x13/imm8/bios-disk-services
|
||||
0f 82/jump-if-carry disk_error/disp16
|
||||
|
||||
# reset es
|
||||
bb/copy-to-bx 0/imm16
|
||||
8e/->seg 3/mod/direct 3/rm32/bx 0/r32/es
|
||||
|
|
|
@ -35,7 +35,7 @@ cat a.survey |linux/hex > a.bin
|
|||
dd if=/dev/zero of=code.img count=20160 # 20*16*63 512-byte sectors = almost 10MB
|
||||
dd if=a.bin of=code.img conv=notrunc
|
||||
|
||||
if [ `stat --printf="%s" a.bin` -ge 451584 ] # 14 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
|
||||
if [ `stat --printf="%s" a.bin` -ge 580608 ] # 18 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
|
||||
then
|
||||
echo "a.bin won't all be loaded on boot"
|
||||
exit 1
|
||||
|
|
|
@ -39,7 +39,7 @@ cat a.survey |linux/bootstrap/bootstrap run linux/hex
|
|||
dd if=/dev/zero of=code.img count=20160 # 20*16*63 512-byte sectors = almost 10MB
|
||||
dd if=a.bin of=code.img conv=notrunc
|
||||
|
||||
if [ `stat --printf="%s" a.bin` -ge 451584 ] # 14 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
|
||||
if [ `stat --printf="%s" a.bin` -ge 580608 ] # 18 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
|
||||
then
|
||||
echo "a.bin won't all be loaded on boot"
|
||||
exit 1
|
||||
|
|
Loading…
Reference in New Issue