From a4742d0129692fb708171e93a55af1cbc97da3e3 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 4 Apr 2019 21:21:40 -0400 Subject: 68307, mc68681, tmp68301: Disable side effects for interrupt acknowledgment (nw) --- src/devices/machine/68307.cpp | 3 ++- src/devices/machine/mc68681.cpp | 8 ++++++++ src/devices/machine/mc68681.h | 2 +- src/devices/machine/tmp68301.cpp | 15 +++++++++------ 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/devices/machine/68307.cpp b/src/devices/machine/68307.cpp index 121a729b1fd..ca98bbfa85b 100644 --- a/src/devices/machine/68307.cpp +++ b/src/devices/machine/68307.cpp @@ -225,7 +225,8 @@ void m68307_cpu_device::licr2_interrupt() uint8_t m68307_cpu_device::int_ack(offs_t offset) { uint8_t type = m_m68307SIM->get_int_type(this, offset); - logerror("Interrupt acknowledged: level %d, type %01X\n", offset, type); + if (!machine().side_effects_disabled()) + logerror("Interrupt acknowledged: level %d, type %01X\n", offset, type); // UART provides its own vector if (type == 0x0c) diff --git a/src/devices/machine/mc68681.cpp b/src/devices/machine/mc68681.cpp index a3a3b480979..87f1c31ce07 100644 --- a/src/devices/machine/mc68681.cpp +++ b/src/devices/machine/mc68681.cpp @@ -357,6 +357,14 @@ void mc68681_device::update_interrupts() m_read_vector = false; // clear IACK too } +uint8_t mc68681_device::get_irq_vector() +{ + if (!machine().side_effects_disabled()) + m_read_vector = true; + + return IVR; +} + double duart_base_device::get_ct_rate() { double rate = 0.0f; diff --git a/src/devices/machine/mc68681.h b/src/devices/machine/mc68681.h index 50e5cdd1489..aa92ec598f6 100644 --- a/src/devices/machine/mc68681.h +++ b/src/devices/machine/mc68681.h @@ -197,7 +197,7 @@ public: virtual uint8_t read(offs_t offset) override; virtual void write(offs_t offset, uint8_t data) override; - uint8_t get_irq_vector() { m_read_vector = true; return IVR; } + uint8_t get_irq_vector(); protected: virtual void device_start() override; diff --git a/src/devices/machine/tmp68301.cpp b/src/devices/machine/tmp68301.cpp index 7e2afbe3aca..75b1f070ad8 100644 --- a/src/devices/machine/tmp68301.cpp +++ b/src/devices/machine/tmp68301.cpp @@ -217,12 +217,15 @@ uint8_t tmp68301_device::irq_callback(offs_t offset) u16 mask = (src > 2 ? 2 : 1) << src; if ((m_ipr & mask) != 0 && (m_imr & mask) == 0) { - // add cause to interrupt in-service register - m_iisr |= mask; - - // no longer pending - m_ipr &= ~mask; - update_ipl(); + if (!machine().side_effects_disabled()) + { + // add cause to interrupt in-service register + m_iisr |= mask; + + // no longer pending + m_ipr &= ~mask; + update_ipl(); + } // vary vector number by type if (src > 6) -- cgit v1.2.3