S2650 CPU: expose INTACK signal

This commit is contained in:
Vas Crabb 2015-12-14 03:33:11 +11:00
parent 7754bb7951
commit 3ebcd40de9
2 changed files with 14 additions and 3 deletions

View File

@ -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();

View File

@ -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<class _Object> static devcb_base &set_flag_handler(device_t &device, _Object object) { return downcast<s2650_device &>(device).m_flag_handler.set_callback(object); }
template<class _Object> static devcb_base &set_intack_handler(device_t &device, _Object object) { return downcast<s2650_device &>(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) */