summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/wd_fdc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/wd_fdc.cpp')
-rw-r--r--src/devices/machine/wd_fdc.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/devices/machine/wd_fdc.cpp b/src/devices/machine/wd_fdc.cpp
index 07836bdeeb9..056faa5cdf5 100644
--- a/src/devices/machine/wd_fdc.cpp
+++ b/src/devices/machine/wd_fdc.cpp
@@ -1146,7 +1146,15 @@ void wd_fdc_device_base::cmd_w(uint8_t val)
LOGCOMP("Initiating command %02x\n", val);
- if(intrq && !(intrq_cond & I_IMM)) {
+ // INTRQ flip-flop logic from die schematics:
+ // Reset conditions:
+ // - Command register write
+ // - Status register read
+ // Setting conditions:
+ // - While command register contain Dx (interrupt cmd) and one or more I0-I3 conditions met
+ // - Command-specific based on PLL microprogram
+ // No other logic present in real chips, descriptions of "Forced interrupt" (Dx) command in datasheets are wrong.
+ if (intrq) {
intrq = false;
if(!intrq_cb.isnull())
intrq_cb(intrq);