Skip to content

Suggestion: Work around Xi8088 BIOS bug by setting DS = 40h for 13.41 call #156

@ecm-pushbx

Description

@ecm-pushbx

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:

kernel/kernel/initdisk.c

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, &regs);

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.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions