summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/nscsi_bus.cpp
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2022-11-14 12:13:04 +0200
committer Curt Coder <curtcoder@mail.com>2022-11-14 12:13:04 +0200
commit4df2a01734260df3a298acd4007f8bef162a50ae (patch)
treefb337965cb79a5c6a009dec64bb5752b2dc79d54 /src/devices/machine/nscsi_bus.cpp
parentc340617fa4d2c45a893121f48bb8cbe6b67281e1 (diff)
abc1600: Fixed hard disk formatting by introducing configurable byte transfer and command delays into the NSCSI system. [Curt Coder]
Diffstat (limited to 'src/devices/machine/nscsi_bus.cpp')
-rw-r--r--src/devices/machine/nscsi_bus.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/devices/machine/nscsi_bus.cpp b/src/devices/machine/nscsi_bus.cpp
index eeaf2c2722a..8706164544d 100644
--- a/src/devices/machine/nscsi_bus.cpp
+++ b/src/devices/machine/nscsi_bus.cpp
@@ -268,7 +268,7 @@ void nscsi_full_device::device_reset()
TIMER_CALLBACK_MEMBER(nscsi_full_device::update_tick)
{
- step(true);
+ step(param);
}
void nscsi_full_device::scsi_ctrl_changed()
@@ -304,7 +304,7 @@ void nscsi_full_device::step(bool timeout)
if(scsi_initiator_id == 16)
scsi_initiator_id = -1;
scsi_state = TARGET_SELECT_WAIT_BUS_SETTLE;
- scsi_timer->adjust(scsi_bus_settle_delay());
+ scsi_timer->adjust(scsi_bus_settle_delay(), true);
}
break;
@@ -336,7 +336,7 @@ void nscsi_full_device::step(bool timeout)
if(!(ctrl & S_ACK)) {
scsi_state &= STATE_MASK;
scsi_bus->ctrl_wait(scsi_refid, 0, S_ACK);
- step(false);
+ scsi_timer->adjust(scsi_data_byte_period(), false);
}
break;
@@ -352,7 +352,7 @@ void nscsi_full_device::step(bool timeout)
if(!(ctrl & S_ACK)) {
scsi_state &= STATE_MASK;
scsi_bus->ctrl_wait(scsi_refid, 0, S_ACK);
- step(false);
+ scsi_timer->adjust(scsi_data_byte_period(), false);
}
break;
@@ -460,7 +460,7 @@ void nscsi_full_device::step(bool timeout)
scsi_bus->ctrl_wait(scsi_refid, 0, S_ACK);
scsi_command();
scsi_state = TARGET_NEXT_CONTROL;
- step(false);
+ scsi_timer->adjust(scsi_data_command_delay(), false);
} else
target_recv_byte();
break;
@@ -788,3 +788,15 @@ attotime nscsi_full_device::scsi_fast_negation_period()
{
return attotime::from_nsec(30);
}
+
+// Byte transfer rate (immediate)
+attotime nscsi_full_device::scsi_data_byte_period()
+{
+ return attotime::zero;
+}
+
+// Command execution delay (immediate)
+attotime nscsi_full_device::scsi_data_command_delay()
+{
+ return attotime::zero;
+}