summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2023-04-16 14:07:19 -0400
committer AJR <ajrhacker@users.noreply.github.com>2023-04-16 14:10:52 -0400
commite992c500ccf306f7245158d6d5ee97661211dccf (patch)
treebc417705f4a71966213659da1829e87a3406711e /src/devices
parent23e94d76d47a78b718e1708483c51bdd8603fa00 (diff)
wd_fdc: IRQ/DRQ corrections
- Always interrupt upon command completion and clear busy flag if the latter was set (even if DRQ was not serviced) - Drop DRQ when "Force Interrupt" command is issued in idle state This partially reverts the changes of 60ced2cb0c9c4ae9a2f6a65ff50b07fecee78f4c.
Diffstat (limited to 'src/devices')
-rw-r--r--src/devices/machine/wd_fdc.cpp11
1 files changed, 2 insertions, 9 deletions
diff --git a/src/devices/machine/wd_fdc.cpp b/src/devices/machine/wd_fdc.cpp
index f8ccbfb3f9f..f53c88e2934 100644
--- a/src/devices/machine/wd_fdc.cpp
+++ b/src/devices/machine/wd_fdc.cpp
@@ -366,9 +366,7 @@ void wd_fdc_device_base::command_end()
main_state = sub_state = IDLE;
motor_timeout = 0;
- if(drq)
- drop_drq();
- else if (status & S_BUSY) {
+ if(status & S_BUSY) {
if (!t_cmd->enabled()) {
status &= ~S_BUSY;
}
@@ -1096,12 +1094,7 @@ void wd_fdc_device_base::interrupt_start()
// when a force interrupt command is issued and there is no
// currently running command, return the status type 1 bits
status_type_1 = true;
- }
-
- if(drq) {
- drq = false;
- if(!drq_cb.isnull())
- drq_cb(false);
+ drop_drq();
}
intrq_cond = command & 0x0f;