regs.ipl[0] = 0;
}
} else {
- if (regs.ipl_pin <= regs.intmask && regs.ipl_pin > newimask) {
- set_special(SPCFLAG_INT);
+ if (!currprefs.cachesize && regs.ipl_pin <= regs.intmask && regs.ipl_pin > newimask) {
+ if (currprefs.cpu_compatible && currprefs.cpu_model < 68020)
+ set_special(SPCFLAG_INT);
+ else
+ set_special(SPCFLAG_DOINT);
}
}
regs.intmask = newimask;
update_ipl(ipl);
}
+
if (m68k_interrupt_delay) {
if (!m68k_accurate_ipl && regs.ipl_pin > regs.intmask) {
set_special(SPCFLAG_INT);
}
return;
}
- if (regs.ipl_pin > regs.intmask) {
+
+ if (regs.ipl_pin > regs.intmask || currprefs.cachesize) {
if (currprefs.cpu_compatible && currprefs.cpu_model < 68020)
set_special(SPCFLAG_INT);
else
wait_memory_cycles();
regs.instruction_cnt++;
+ regs.ce020extracycles++;
cont:
if (r->spcflags || regs.ipl[0] > 0) {