When I try to use the UniPCemu CD-ROM emulation, it works fine while no disks are changed. But when I load another CD-ROM in the drive(which causes an IRQ with reason C/D=1, I/O=1), no handling by the MSCDEX.EXE/VIDE-CDD.SYS happens. Then, when I try to use MS-DOS to execute dir on the newly inserted disk, it executes a TEST UNIT READY and locks up?
Last edited by superfury on 2017-08-01, 16:25. Edited 1 time in total.
After some time, it continues(with huge delays between and after reads), but after that specific IRQ, it goes slowly instead of the usual fast(huge delays)?
It eventually ends up with an "CDR101: Not ready reading drive X"? This happens while it's still transferring said sector? It isn't being read by the drive? The reading of the sector isn't happening?
I've modified the code a bit, to act like Bochs(removing the disk, waiting a bit(100us), inserting a disk), while the removing and inserting of the disk trigger IRQs with the Sense Packet filled with data for the driver to read. Now, I see it emitting a TEST UNIT READY command(0x00), but after that it delays a long time(many seconds, at least, in emulated time), then a Read sectors command and another very long inactivity from the driver?
No matter what I do, the IRQ that triggers because of ATAPI_diskchangedhandler keeps making the following instructions fail, according to the program that's running? It will report C/D=1, I/O=1, REL=0, Sense key Unit Attention, Abort 0, Status register Error bit 1 and handle it like a result phase(it essentially is just a hardware-induced result phase)?
Anyone knows why the VIDE-CDD.SYS driver doesn't seem to like the disk being changed?