diff options
author | R. Belmont <rb6502@users.noreply.github.com> | 2019-08-10 07:59:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-10 07:59:25 -0400 |
commit | 5cdfb33855ec2b2765666804a8f6d5a2dd8efae3 (patch) | |
tree | f5aa4a26a94a391e0366d441152ee39e83ab2829 | |
parent | 909bfe98904ffb47c020d054faf9cfcaf9ad57b5 (diff) | |
parent | 37c3d8780797502af911094f338e42b698874691 (diff) |
Merge pull request #5455 from tyfighter/master
wd33c9x - clarify hardware reset
-rw-r--r-- | src/devices/machine/wd33c9x.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/devices/machine/wd33c9x.cpp b/src/devices/machine/wd33c9x.cpp index f3efe1f1dab..7c84c86f72d 100644 --- a/src/devices/machine/wd33c9x.cpp +++ b/src/devices/machine/wd33c9x.cpp @@ -415,6 +415,8 @@ void wd33c9x_base_device::device_start() void wd33c9x_base_device::device_reset() { + // This is a hardware reset. Software reset is handled + // under COMMAND_CC_RESET. scsi_bus->ctrl_w(scsi_refid, 0, S_ALL); scsi_bus->ctrl_wait(scsi_refid, S_SEL|S_BSY|S_RST, S_ALL); m_addr = 0; @@ -433,6 +435,10 @@ void wd33c9x_base_device::device_reset() m_irq_cb(CLEAR_LINE); m_drq_cb(CLEAR_LINE); m_drq_state = false; + + // Hardware reset triggers a SCSI_STATUS_RESET interrupt. + irq_fifo_push(SCSI_STATUS_RESET); + update_irq(); } @@ -668,13 +674,7 @@ WRITE_LINE_MEMBER(wd33c9x_base_device::reset_w) { if (state) { LOGMASKED(LOG_LINES, "Reset via MR line\n"); - // FIXME: hardware reset is not the same as software reset, and - // wd33c93a behaves differently to wd33c93 device_reset(); - - // hardware reset produces an interrupt - m_regs[AUXILIARY_STATUS] |= AUXILIARY_STATUS_INT; - m_irq_cb(ASSERT_LINE); } } |