From 9e9ce10632f14806e04b1cd496c42c904ee35ab7 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Mon, 21 Nov 2022 21:03:20 +0200 Subject: [PATCH] cps3: Fix nscsi regression. [Curt Coder] --- src/devices/machine/nscsi_bus.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/devices/machine/nscsi_bus.cpp b/src/devices/machine/nscsi_bus.cpp index 8706164544d..ade18c33bf3 100644 --- a/src/devices/machine/nscsi_bus.cpp +++ b/src/devices/machine/nscsi_bus.cpp @@ -336,7 +336,12 @@ void nscsi_full_device::step(bool timeout) if(!(ctrl & S_ACK)) { scsi_state &= STATE_MASK; scsi_bus->ctrl_wait(scsi_refid, 0, S_ACK); - scsi_timer->adjust(scsi_data_byte_period(), false); + attotime delay = scsi_data_byte_period(); + if (delay == attotime::zero) { + step(false); + } else { + scsi_timer->adjust(delay, false); + } } break; @@ -352,7 +357,12 @@ void nscsi_full_device::step(bool timeout) if(!(ctrl & S_ACK)) { scsi_state &= STATE_MASK; scsi_bus->ctrl_wait(scsi_refid, 0, S_ACK); - scsi_timer->adjust(scsi_data_byte_period(), false); + attotime delay = scsi_data_byte_period(); + if (delay == attotime::zero) { + step(false); + } else { + scsi_timer->adjust(delay, false); + } } break; @@ -460,7 +470,12 @@ void nscsi_full_device::step(bool timeout) scsi_bus->ctrl_wait(scsi_refid, 0, S_ACK); scsi_command(); scsi_state = TARGET_NEXT_CONTROL; - scsi_timer->adjust(scsi_data_command_delay(), false); + attotime delay = scsi_data_command_delay(); + if (delay == attotime::zero) { + step(false); + } else { + scsi_timer->adjust(delay, false); + } } else target_recv_byte(); break;