diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-08-29 08:31:43 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-08-29 11:21:09 -0700 |
commit | 0e2a9ad93d96be55a4df3f509a33df882dae81ef (patch) | |
tree | 54800b358474691563504494a69d1f76b62bdf84 /boot.subx | |
parent | 1b18ec6ee960cb93f2f76d5cbaea8dc61a7339c4 (diff) | |
download | mu-0e2a9ad93d96be55a4df3f509a33df882dae81ef.tar.gz |
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.
Diffstat (limited to 'boot.subx')
-rw-r--r-- | boot.subx | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/boot.subx b/boot.subx index fc9835f8..6bed6fe2 100644 --- a/boot.subx +++ b/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 |