skiselev / 8088_bios

BIOS for Intel 8088 based computers
GNU General Public License v3.0
513 stars 61 forks source link

[Book8088] BIOS revision 0.9.4 fails to set DS if encountering an unsupported INT13 function #62

Closed boeckmann closed 6 months ago

boeckmann commented 6 months ago

This is for documentation purposes. We had a person contacting the FreeDOS project about the FreeDOS kernel not booting on a Book8088 / Xi8088 emulation with BIOS version 0.9.4. This problem occurs when an unsupported INT13 function, specifically INT13,41 is called by the kernel.

The root cause of the problem is that the BIOS fails to set DS to segment 0040 if encountering an unsupported INT13 function https://github.com/skiselev/8088_bios/blob/6da84ae09804002ae29080cd64dc85e58f46ae9f/floppy2.inc#L89-L94 , while still writing to it: https://github.com/skiselev/8088_bios/blob/6da84ae09804002ae29080cd64dc85e58f46ae9f/floppy2.inc#L126-L128

In the case of FDISK, where DS is set to 0 before calling the BIOS, this trashes the INT10 vector, making the system unusable.

Disabling FreeDOS kernel LBA and FDISK LBA support mitigates this problem, because than XT-IDE is able to handle all requests.

While this is fixed in more recent BIOS versions, it is still noteworthy for documentation purposes.

skiselev commented 6 months ago

I presume the bug happens with the BIOS that is originally shipped with Book8088. Since the bug is fixed in the current BIOS version, can I close it?

boeckmann commented 6 months ago

Yes, I just wanted to inform here in case someone else experiences the problem.