mirror of
https://github.com/holub/mame
synced 2025-04-26 10:13:37 +03:00
S2650 CPU: expose INTACK signal
This commit is contained in:
parent
7754bb7951
commit
3ebcd40de9
@ -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();
|
||||
|
@ -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) */
|
||||
|
Loading…
Reference in New Issue
Block a user