retreat to 640KB
This commit is contained in:
parent
0e2a9ad93d
commit
c5f8415e03
18
boot.subx
18
boot.subx
|
@ -164,13 +164,13 @@
|
|||
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)
|
||||
# load one final track of disk into addresses [0x76000, 0x7de00)
|
||||
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
|
||||
b0/copy-to-al 0x3f/imm8/num-sectors=63
|
||||
# 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
|
||||
|
@ -178,19 +178,7 @@
|
|||
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
|
||||
### Can't load more tracks without clobbering BIOS code. To load more code we'll need a new compilation strategy.
|
||||
|
||||
# reset es
|
||||
bb/copy-to-bx 0/imm16
|
||||
|
|
|
@ -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 580608 ] # 18 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
|
||||
if [ `stat --printf="%s" a.bin` -ge 492544 ] # 15 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 580608 ] # 18 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
|
||||
if [ `stat --printf="%s" a.bin` -ge 492544 ] # 15 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