diff options
author | 2022-11-14 12:13:04 +0200 | |
---|---|---|
committer | 2022-11-14 12:13:04 +0200 | |
commit | 4df2a01734260df3a298acd4007f8bef162a50ae (patch) | |
tree | fb337965cb79a5c6a009dec64bb5752b2dc79d54 /src/devices/machine/nscsi_bus.cpp | |
parent | c340617fa4d2c45a893121f48bb8cbe6b67281e1 (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.cpp | 22 |
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; +} |