- // could generate error irq here, but real hardware
- // only sometimes does that
- // (not done when lots of commands are sent?)
+ // IIRC this sometimes doesn't happen on real hw
+ // (when lots of commands are sent?)
+ if (cdr.Reading) {
+ StopReading();
+ SetResultSize(2);
+ cdr.Result[0] = cdr.StatP | STATUS_SEEKERROR;
+ cdr.Result[1] = ERROR_SHELLOPEN;
+ cdr.Stat = DiskError;
+ setIrq(0x1006);
+ }
+ if (cdr.CmdInProgress) {
+ psxRegs.interrupt &= ~(1 << PSXINT_CDR);
+ cdr.CmdInProgress = 0;
+ SetResultSize(2);
+ cdr.Result[0] = cdr.StatP | STATUS_ERROR;
+ cdr.Result[1] = ERROR_NOTREADY;
+ cdr.Stat = DiskError;
+ setIrq(0x1007);
+ }