First post, by superfury
I'm trying to get the ATAPI CD-ROM emulation in UniPCemu working. So far I've found out that the CD-ROM(SCSI) Inquiry command doesn't fail when no media is inserted, and fixed it accordingly. Then I notice that the IRQ is trying to be raised, but it's already raised(not lowered by reading the ATA Status register), thus not triggering the IRQ that's needed for the command to be recognized.
Is it correct that the IRQ line is only lowered when the Status Register is read?
Edit: I now see the driver (vide-cdd.sys) execute a ATAPI Inquiry command, which has strange packet data (6 words of 0x12 in little endian, so 0x12 0x00 0x12 0x00 0x12 0x00 0x12 0x00 etc...), then it waits some thing until finally giving up? Anyone can tell me what's going wrong? The IRQ(IRQ15 for the CD-ROM controller, the Secondary ATA controller) should be triggered? So why doesn't it continue? I've also implemented the missing ATAPI packet size that's returned when the packet's sent(in the Mid and High registers), but it won't read the resulting data for some reason?
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io