summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/tms7000/tms7000.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/tms7000/tms7000.cpp')
-rw-r--r--src/devices/cpu/tms7000/tms7000.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/devices/cpu/tms7000/tms7000.cpp b/src/devices/cpu/tms7000/tms7000.cpp
index cc3c0a1ff88..2f23b4ba05a 100644
--- a/src/devices/cpu/tms7000/tms7000.cpp
+++ b/src/devices/cpu/tms7000/tms7000.cpp
@@ -119,7 +119,7 @@ tms7000_device::tms7000_device(const machine_config &mconfig, const char *tag, d
tms7000_device::tms7000_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal, uint32_t info_flags) :
cpu_device(mconfig, type, tag, owner, clock),
m_program_config("program", ENDIANNESS_BIG, 8, 16, 0, internal),
- m_port_in_cb(*this),
+ m_port_in_cb(*this, 0xff),
m_port_out_cb(*this),
m_info_flags(info_flags),
m_divider(2)
@@ -204,9 +204,6 @@ void tms7000_device::device_start()
m_irq_state[TMS7000_INT1_LINE] = false;
m_irq_state[TMS7000_INT3_LINE] = false;
- m_port_in_cb.resolve_all_safe(0xff);
- m_port_out_cb.resolve_all_safe();
-
m_idle_state = false;
m_idle_halt = false;
m_pc = 0;
@@ -222,7 +219,7 @@ void tms7000_device::device_start()
for (int tmr = 0; tmr < 2; tmr++)
{
- m_timer_handle[tmr] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tms7000_device::simple_timer_cb), this));
+ m_timer_handle[tmr] = timer_alloc(FUNC(tms7000_device::simple_timer_cb), this);
m_timer_handle[tmr]->adjust(attotime::never, tmr);
m_timer_data[tmr] = 0;
@@ -260,7 +257,6 @@ void tms7000_device::device_start()
state_add(STATE_GENPC, "GENPC", m_pc).formatstr("%04X").noshow();
state_add(STATE_GENPCBASE, "CURPC", m_pc).formatstr("%04X").noshow();
- state_add(STATE_GENSP, "GENSP", m_sp).formatstr("%02X").noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_sr).formatstr("%8s").noshow();
}
@@ -421,12 +417,12 @@ void tms7000_device::do_interrupt(int irqline)
else
m_icount -= 19;
+ standard_irq_callback(irqline, m_pc);
+
push8(m_sr);
push16(m_pc);
m_sr = 0;
m_pc = read_mem16(0xfffc - irqline * 2);
-
- standard_irq_callback(irqline);
}
@@ -585,6 +581,7 @@ void tms7000_device::tms7000_pf_w(offs_t offset, uint8_t data)
logerror("%s: CMOS low-power halt mode enabled\n", tag());
}
data &= ~0x20;
+ [[fallthrough]];
case 0x13:
// d0-d4: prescaler reload value
// d5: t2: cascade from t1