diff options
Diffstat (limited to 'src/devices/cpu/tms7000/tms7000.cpp')
-rw-r--r-- | src/devices/cpu/tms7000/tms7000.cpp | 13 |
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 |