From c5f8415e0327124a7a9fed12b524390ddf417f83 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sun, 29 Aug 2021 08:40:52 -0700 Subject: retreat to 640KB --- boot.subx | 18 +++--------------- translate_subx | 2 +- translate_subx_emulated | 2 +- 3 files changed, 5 insertions(+), 17 deletions(-) diff --git a/boot.subx b/boot.subx index 6bed6fe2..7d4e174b 100644 --- a/boot.subx +++ b/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 diff --git a/translate_subx b/translate_subx index c123a3bc..6a902a42 100755 --- a/translate_subx +++ b/translate_subx @@ -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 diff --git a/translate_subx_emulated b/translate_subx_emulated index dde19113..87bfbf0b 100755 --- a/translate_subx_emulated +++ b/translate_subx_emulated @@ -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 -- cgit 1.4.1-2-gfad0