diff --git a/src/devices/cpu/hphybrid/hphybrid.cpp b/src/devices/cpu/hphybrid/hphybrid.cpp index d1f907edf91..0c03210ea04 100644 --- a/src/devices/cpu/hphybrid/hphybrid.cpp +++ b/src/devices/cpu/hphybrid/hphybrid.cpp @@ -1326,8 +1326,8 @@ void hp_hybrid_cpu_device::check_for_interrupts() standard_irq_callback(irqline); - // Get interrupt vector in low byte - uint8_t vector = m_int_func(); + // Get interrupt vector in low byte (level is available on PA3) + uint8_t vector = m_int_func(BIT(m_flags , HPHYBRID_IRH_BIT) ? 1 : 0); uint8_t new_PA; // Get highest numbered 1 diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp index bc39b28d579..d4657d50c4c 100644 --- a/src/mame/drivers/hp64k.cpp +++ b/src/mame/drivers/hp64k.cpp @@ -192,7 +192,7 @@ private: DECLARE_READ16_MEMBER(hp64k_rear_sw_r); - uint8_t int_cb(); + uint8_t int_cb(offs_t offset); void hp64k_update_irl(void); DECLARE_WRITE16_MEMBER(hp64k_irl_mask_w); @@ -527,9 +527,13 @@ READ16_MEMBER(hp64k_state::hp64k_rear_sw_r) return m_rear_panel_sw->read() | 0x0020; } -uint8_t hp64k_state::int_cb() +uint8_t hp64k_state::int_cb(offs_t offset) { - return m_irl_mask & m_irl_pending; + if (offset == 0) { + return (m_irl_mask & m_irl_pending); + } else { + return 0xff; + } } void hp64k_state::hp64k_update_irl(void) diff --git a/src/mame/machine/hp98x5_io_sys.cpp b/src/mame/machine/hp98x5_io_sys.cpp index 3b79786bc50..f403117f172 100644 --- a/src/mame/machine/hp98x5_io_sys.cpp +++ b/src/mame/machine/hp98x5_io_sys.cpp @@ -70,9 +70,9 @@ void hp98x5_io_sys_device::device_reset() update_dmar(); } -uint8_t hp98x5_io_sys_device::int_r() +uint8_t hp98x5_io_sys_device::int_r(offs_t offset) { - if ((m_irq_pending & 0xff00) == 0) { + if (offset == 0) { return m_irq_pending & 0xff; } else { return m_irq_pending >> 8; diff --git a/src/mame/machine/hp98x5_io_sys.h b/src/mame/machine/hp98x5_io_sys.h index 7adeee884cf..e83f6432b24 100644 --- a/src/mame/machine/hp98x5_io_sys.h +++ b/src/mame/machine/hp98x5_io_sys.h @@ -29,7 +29,7 @@ public: auto flg() { return m_flg_handler.bind(); } auto dmar() { return m_dmar_handler.bind(); } - uint8_t int_r(); + uint8_t int_r(offs_t offset); void pa_w(uint8_t data); void set_irq(uint8_t sc , int state);