diff --git a/Components/5380/ncr5380.cpp b/Components/5380/ncr5380.cpp index 44f368224..1d89d4eac 100644 --- a/Components/5380/ncr5380.cpp +++ b/Components/5380/ncr5380.cpp @@ -314,8 +314,12 @@ void NCR5380::scsi_bus_did_change(SCSI::Bus *, SCSI::BusState new_state, double break; case SCSI::Line::Request: // Don't issue a new DMA request if a phase mismatch has - // been detected. This is a bit of reading between the lines. - dma_request_ = !phase_mismatch_; + // been detected and this is an intiator receiving. + // This is a bit of reading between the lines. + // (i.e. guesswork, partly) + dma_request_ = + !phase_mismatch_ || + (dma_operation_ != DMAOperation::InitiatorReceive); break; case SCSI::Line::Request | SCSI::Line::Acknowledge: dma_request_ = false;