-
Notifications
You must be signed in to change notification settings - Fork 156
Description
Circling back to the Xi8088 BIOS bug that affected at least some revisions of the Book8088:
The bug was described in http://www.bttr-software.de/forum/forum_entry.php?id=21275
This is where the kernel may call a ROM-BIOS that doesn't support LBA to detect that it doesn't support LBA:
Lines 651 to 657 in 1b6de0f
/* check for LBA support */ | |
regs.b.x = 0x55aa; | |
regs.a.b.h = 0x41; | |
regs.d.b.l = drive; | |
regs.flags = FLG_CARRY; /* ensure carry is set to force error if unsupported */ | |
init_call_intr(0x13, ®s); |
My idea is to force DS = 40h for this call, which will work around the bug of the BIOS writing to offset 41h without setting up DS.
I didn't have this idea yet because my use of 13.42 without the proper 13.41 check call makes this more difficult, however I just added a workaround to the Xi8088 bug to the callers that are not as size constrained as the lDOS boot sector loaders, eg lDOS iniload: https://hg.pushbx.org/ecm/ldosboot/rev/4c929733a229
(I will upload a blog post that also addresses this later.)