diff options
Diffstat (limited to 'src/devices/machine/wd_fdc.cpp')
-rw-r--r-- | src/devices/machine/wd_fdc.cpp | 10 |
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); |