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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions