#endif
if (m68k_interrupt_delay) {
regs.ipl_pin = intlev ();
- set_special(SPCFLAG_INT);
+ if (regs.ipl_pin > regs.intmask || regs.ipl_pin == 7)
+ set_special(SPCFLAG_INT);
return;
}
if (currprefs.cpu_compatible && currprefs.cpu_model < 68020)
}
if (m68k_interrupt_delay) {
- unset_special(SPCFLAG_INT);
if (time_for_interrupt ()) {
+ unset_special(SPCFLAG_INT);
do_interrupt (regs.ipl);
}
} else {
log_dma_record ();
}
- if (r->spcflags || time_for_interrupt ()) {
+ if (r->spcflags) {
if (do_specialties (0))
exit = true;
}
}
} CATCH (prb) {
bus_error();
- if (r->spcflags || time_for_interrupt()) {
+ if (r->spcflags) {
if (do_specialties(0))
exit = true;
}