From 3ebcd40de9fd1226d10553323e83e9287dc59e41 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Mon, 14 Dec 2015 03:33:11 +1100 Subject: [PATCH] S2650 CPU: expose INTACK signal --- src/devices/cpu/s2650/s2650.cpp | 12 +++++++++--- src/devices/cpu/s2650/s2650.h | 5 +++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/devices/cpu/s2650/s2650.cpp b/src/devices/cpu/s2650/s2650.cpp index 1bb0fe01e77..ae842ca9fa6 100644 --- a/src/devices/cpu/s2650/s2650.cpp +++ b/src/devices/cpu/s2650/s2650.cpp @@ -35,9 +35,10 @@ s2650_device::s2650_device(const machine_config &mconfig, const char *tag, devic : cpu_device(mconfig, S2650, "S2650", tag, owner, clock, "s2650", __FILE__ ) , m_program_config("program", ENDIANNESS_LITTLE, 8, 15) , m_io_config("io", ENDIANNESS_LITTLE, 8, 9) - , m_flag_handler(*this), m_ppc(0), m_page(0), m_iar(0), m_ea(0), m_psl(0), m_psu(0), m_r(0) - , m_halt(0), m_ir(0), m_irq_state(0), m_icount(0), m_program(nullptr), m_direct(nullptr), m_io(nullptr) - , m_debugger_temp(0) + , m_flag_handler(*this), m_intack_handler(*this) + , m_ppc(0), m_page(0), m_iar(0), m_ea(0), m_psl(0), m_psu(0), m_r(0) + , m_halt(0), m_ir(0), m_irq_state(0), m_icount(0), m_program(nullptr), m_direct(nullptr), m_io(nullptr) + , m_debugger_temp(0) { memset(m_reg, 0x00, sizeof(m_reg)); } @@ -183,6 +184,10 @@ inline int s2650_device::check_irq_line() m_iar = (m_iar + 1) & PMSK; } vector = standard_irq_callback(0) & 0xff; + + /* Say hi */ + m_intack_handler(true); + /* build effective address within first 8K page */ m_ea = S2650_relative[vector] & PMSK; if (vector & 0x80) /* indirect bit set ? */ @@ -786,6 +791,7 @@ static void BRA_EA(void) _BRA_EA() void s2650_device::device_start() { m_flag_handler.resolve_safe(); + m_intack_handler.resolve_safe(); m_program = &space(AS_PROGRAM); m_direct = &m_program->direct(); diff --git a/src/devices/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h index 66e2af40cd5..2be3f99ce1c 100644 --- a/src/devices/cpu/s2650/s2650.h +++ b/src/devices/cpu/s2650/s2650.h @@ -29,6 +29,9 @@ extern const device_type S2650; #define MCFG_S2650_FLAG_HANDLER(_devcb) \ devcb = &s2650_device::set_flag_handler(*device, DEVCB_##_devcb); +#define MCFG_S2650_INTACK_HANDLER(_devcb) \ + devcb = &s2650_device::set_intack_handler(*device, DEVCB_##_devcb); + class s2650_device : public cpu_device { public: @@ -39,6 +42,7 @@ public: // static configuration helpers template static devcb_base &set_flag_handler(device_t &device, _Object object) { return downcast(device).m_flag_handler.set_callback(object); } + template static devcb_base &set_intack_handler(device_t &device, _Object object) { return downcast(device).m_intack_handler.set_callback(object); } protected: // device-level overrides @@ -74,6 +78,7 @@ private: address_space_config m_io_config; devcb_write_line m_flag_handler; + devcb_write_line m_intack_handler; UINT16 m_ppc; /* previous program counter (page + iar) */ UINT16 m_page; /* 8K page select register (A14..A13) */