skiselev / 8088_bios

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

Multitasking MS-DOS 4.0: Non-System disk error #72

Closed Vutshi closed 2 months ago

Vutshi commented 2 months ago

It seems the BIOS does not recognize MS-DOS-4.0M as bootable. This affects the Book8088 and the MartyPC emulator: MartyPC_skiselev

The Multitasking DOS image can be found here. I have also attached it to this issue in MartyPC, where it revealed a bug in another BIOS.

skiselev commented 2 months ago

This error message is not coming from the BIOS. It is typically printed by the boot sector code, when it cannot read the disk or find DOS files (IO.SYS, and MSDOS.SYS) as the first two entries in the root directory of the boot device. For example, see this MS-DOS 5 boot sector analysis.

I see that your BIOS is configured with 1.44 MB floppies, while it appears that 4.00M disks are 360 KB disks. Potentially this can be the source of the issue (or not, but worth checking).

Also, I can't seem to find the DOS image at the link provided above. I found this: https://github.com/jeffpar/pcjs-diskettes/tree/master/pcx86/sys/dos/microsoft/4.0M, but it is in JSON format, and I don't know how to convert it to just a binary image. I would appreciate a link to the binary MS-DOS 4.00M images.

Vutshi commented 2 months ago

Here is the link to the DOS-4.0M image https://github.com/user-attachments/files/15754189/MSDOS400M-DISK1%2Bgame.img.zip

Vutshi commented 2 months ago

This error message is not coming from the BIOS. It is typically printed by the boot sector code, when it cannot read the disk or find DOS files (IO.SYS, and MSDOS.SYS) as the first two entries in the root directory of the boot device. For example, see this MS-DOS 5 boot sector analysis.

Hmm... With GLaBIOS and the original IBM BIOS I can boot this DOS image in MartyPC.

skiselev commented 2 months ago

Hmm... With GLaBIOS and the original IBM BIOS I can boot this DOS image in MartyPC.

Potentially because neither GLaBIOS nor the original IBM BIOS support 1.44 MB drives. And their floppy disk subsystem is configured to support 360KB disks (160K/180K/320K... maybe 720K disks would work too).

It appears that you're using the XT image of the 8088 BIOS (and Book8088 image). Both are configured to use 1.44 MB diskettes by default. You can modify that. Change the DEFAULT_FLOPPIES setting here https://github.com/skiselev/8088_bios/blob/32f82ebde058d5f92dab9f1da4e5b1906e72c9df/src/config.inc#L120 to something like 11h and recompile the BIOS code.

Another question: How do you write (or emulate) the floppy image? Particularly for Book8088, did you write the provided 360 KB image to a 1.44 MB disk? That will not work properly... You can try writing it to a diskette formatted for 720 KB, that should work, since 720 KB disks have the same number of sectors as 360 KB disks - 9 sectors.

Caveats:

In case of the emulator (MartyPC) - it might or might not properly select and emulate the floppy disk type. Perhaps it should be told that the disk size is 720 KB... Generally 360 KB disk in a 1.44 MB drive is not a supported configuration, so that might confuse the emulator. Perhaps if you pad the 360 KB image to 720 KB size, the emulator will correctly configure the floppy as 720 KB one...

Vutshi commented 2 months ago

It appears that you're using the XT image of the 8088 BIOS (and Book8088 image). Both are configured to use 1.44 MB diskettes by default. You can modify that. Change the DEFAULT_FLOPPIES setting here

https://github.com/skiselev/8088_bios/blob/32f82ebde058d5f92dab9f1da4e5b1906e72c9df/src/config.inc#L120

to something like 11h and recompile the BIOS code.

Thank you, that did the trick for MartyPC. I will take a closer look at my Book8088 later and return if I have questions.