diff options
Diffstat (limited to 'src/devices/machine/mc68901.cpp')
-rw-r--r-- | src/devices/machine/mc68901.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/devices/machine/mc68901.cpp b/src/devices/machine/mc68901.cpp index 3a178089dfc..1b175bbb703 100644 --- a/src/devices/machine/mc68901.cpp +++ b/src/devices/machine/mc68901.cpp @@ -1114,30 +1114,31 @@ WRITE8_MEMBER( mc68901_device::write ) } -int mc68901_device::get_vector() +u16 mc68901_device::get_vector() { - int ch; - - for (ch = 15; ch >= 0; ch--) + for (int ch = 15; ch >= 0; ch--) { if (BIT(m_imr, ch) && BIT(m_ipr, ch)) { - if (m_vr & VR_S) + if (!machine().side_effects_disabled()) { - /* set interrupt-in-service bit */ - m_isr |= (1 << ch); - } + if (m_vr & VR_S) + { + /* set interrupt-in-service bit */ + m_isr |= (1 << ch); + } - /* clear interrupt pending bit */ - m_ipr &= ~(1 << ch); + /* clear interrupt pending bit */ + m_ipr &= ~(1 << ch); - check_interrupts(); + check_interrupts(); + } return (m_vr & 0xf0) | ch; } } - return M68K_INT_ACK_SPURIOUS; + return 0x18; // Spurious irq } WRITE_LINE_MEMBER( mc68901_device::i0_w ) { gpio_input(0, state); } |