====== lDebug: BOOTUNITFLx flag 2 to force using BPB geometry ====== After [[blog:pushbx:2022:1111_lcdebug_image_for_use_with_pcjs.org#it_can_be_booted_as_well|having found that some pcjs.org machines report wrong CHS geometries]] on function 13.08, I [[https://hg.pushbx.org/ecm/ldebug/rev/fafa1072a343|prepared a flag]] that can be set in lDebug's ''BOOTUNITFLx'' variables to force falling back to the geometry noted in a unit's BPB. (For now this blindly assumes that the unit starts with a boot sector with BPB, even if the unit is actually >= 80h and partitioned with an MBR.) ===== ===== This is a hack, and probably will be extended or replaced by something better, but it does work insofar as what it's intended to do. I also prepared a small test case to check that it works, at https://pushbx.org/ecm/test/20221111/geofake.txt 0060:0000 B80000 mov ax, 0000 0060:0003 8ED8 mov ds, ax 0060:0005 668B1E4C00 mov ebx, [004C] 0060:000A 0E push cs 0060:000B 680010 push word 1000 0060:000E 662E891E0020 mov [cs:2000], ebx 0060:0014 668F064C00 pop dword [004C] 0060:0019 90 nop 0060:001A CC int3 0060:001B 90 nop 0060:1000 80FC08 cmp ah, 08 0060:1003 751B jnz 1020 0060:1005 9C pushf 0060:1006 2EFF1E0020 call far [cs:2000] 0060:100B 7203 jb 1010 0060:100D B10F mov cl, 0F 0060:100F 90 nop 0060:1010 55 push bp 0060:1011 89E5 mov bp, sp 0060:1013 D05E06 rcr byte [bp+06], 1 0060:1016 D04606 rol byte [bp+06], 1 0060:1019 5D pop bp 0060:101A CF iret 0060:1020 2EFF2E0020 jmp far [cs:2000] Before running the interrupt handler interception, try ''boot dir fda'' (on a typical 1440 KiB 90mm diskette drive). It will list the directory entries. Run the interception. ''boot dir fda'' will show nothing now. Run ''r bootunitfl(0) or= 2''. The directory listing works again. {{tag>ldebug}} ~~DISCUSSION~~