retreat to 640KB

This commit is contained in:
Kartik K. Agaram 2021-08-29 08:40:52 -07:00
parent 0e2a9ad93d
commit c5f8415e03
3 changed files with 5 additions and 17 deletions

View File

@ -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

View File

@ -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

View File

@ -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