Support large CD-ROMs in Windows 9x (MSF)#1586
Conversation
|
I tried this branch with Windows95b and it doesn't fix the problem described in #1556. Could you please upload a short video demonstrating that you have a CD-ROM image > 255M working under Windows 98 (or is it 98 SE)? We had already tried MSF encoding in #1556, and it didn't fix it for Win95 (I still have a branch atapi-toc-cmd). So it DOES fix it under Windows 98? |
|
I tested many times with mounting the Office 97 ISO for Windows 98 (using your disk/state snapshot) and every time the OS didn't seem to recognize even the name of the disk and just became unresponsive when I tried to open D:, until I made the changes in this PR. I have a some minor aesthetic custom HTML/CSS/JS on top of v86 running with the code in this PR in this recording: vibe98-recording-github.mp4The mount code I run is this: async function mountCdrom(file: File) {
const buffer = await file.arrayBuffer();
emulator.eject_cdrom();
await delay(1500);
await emulator.set_cdrom({ buffer } as unknown as V86Image);
}(It's an |
|
Happy to merge if @chschnell gives this a green checkbox. |
|
Yes, this looks good to merge! |
|
(CI needs to be green though) |

I had issues mounting a 300 MB ISO in Windows 98, and after a bit of digging it turned out it was because Windows wants the leadout in minutes:seconds:frames (MSF) format but we were providing it as blocks, so the larger the image the more wrong it was, causing misbehavior from the OS. (Sidenote: Windows NT/2000 will work with LBA and does not have this bug.)
For reference QEMU also does this conversion.
This should improve #1556, but I'm not sure if it fixes all the issues there.
As a "bonus" this PR also makes the device report "not present" when remounting an image since this seems to improve Windows 98 behavior.