summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit5cdfb33855ec2b2765666804a8f6d5a2dd8efae3 (patch)
treef5aa4a26a94a391e0366d441152ee39e83ab2829
parent909bfe98904ffb47c020d054faf9cfcaf9ad57b5 (diff)
parent37c3d8780797502af911094f338e42b698874691 (diff)
Merge pull request #5455 from tyfighter/master
wd33c9x - clarify hardware reset
-rw-r--r--src/devices/machine/wd33c9x.cpp12
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);
}
}