diff options
Diffstat (limited to 'src/devices/cpu/tlcs900/tlcs900.cpp')
-rw-r--r-- | src/devices/cpu/tlcs900/tlcs900.cpp | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/src/devices/cpu/tlcs900/tlcs900.cpp b/src/devices/cpu/tlcs900/tlcs900.cpp index 3fc240cdb4a..ac8bfaf78fc 100644 --- a/src/devices/cpu/tlcs900/tlcs900.cpp +++ b/src/devices/cpu/tlcs900/tlcs900.cpp @@ -70,13 +70,12 @@ std::unique_ptr<util::disasm_interface> tlcs900_device::create_disassembler() } -/* Flag defines */ -#define FLAG_CF 0x01 -#define FLAG_NF 0x02 -#define FLAG_VF 0x04 -#define FLAG_HF 0x10 -#define FLAG_ZF 0x40 -#define FLAG_SF 0x80 +static constexpr u8 FLAG_CF = 0x01; +static constexpr u8 FLAG_NF = 0x02; +static constexpr u8 FLAG_VF = 0x04; +static constexpr u8 FLAG_HF = 0x10; +static constexpr u8 FLAG_ZF = 0x40; +static constexpr u8 FLAG_SF = 0x80; inline uint8_t tlcs900_device::RDOP() @@ -139,7 +138,7 @@ void tlcs900_device::device_start() save_item( NAME(m_dmac) ); save_item( NAME(m_dmam) ); save_item( NAME(m_timer_pre) ); - save_item( NAME(m_timer) ); + save_item( NAME(m_timer_8) ); save_item( NAME(m_timer_change) ); save_item( NAME(m_level) ); save_item( NAME(m_check_irqs) ); @@ -151,7 +150,7 @@ void tlcs900_device::device_start() save_item( NAME(m_halted) ); save_item( NAME(m_regbank) ); - state_add( TLCS900_PC, "PC", m_pc.d ).formatstr("%08X"); + state_add( TLCS900_PC, "PC", m_pc.d ).callimport().formatstr("%08X"); state_add( TLCS900_XWA0, "XWA0", m_xwa[0].d ).formatstr("%08X"); state_add( TLCS900_XBC0, "XBC0", m_xbc[0].d ).formatstr("%08X"); state_add( TLCS900_XDE0, "XDE0", m_xde[0].d ).formatstr("%08X"); @@ -190,8 +189,8 @@ void tlcs900_device::device_start() state_add( TLCS900_DMAC3, "DMAC3", m_dmac[3].w.l ).formatstr("%04X"); state_add( TLCS900_DMAM3, "DMAM3", m_dmam[3].b.l ).formatstr("%02X"); - state_add( STATE_GENPC, "GENPC", m_pc.d ).noshow(); - state_add( STATE_GENPCBASE, "CURPC", m_pc.d ).noshow(); + state_add( STATE_GENPC, "GENPC", m_pc.d ).callimport().noshow(); + state_add( STATE_GENPCBASE, "CURPC", m_pc.d ).callimport().noshow(); state_add( STATE_GENFLAGS, "GENFLAGS", m_sr.w.l ).formatstr("%12s").noshow(); set_icountptr(m_icount); @@ -201,7 +200,7 @@ void tlcs900_device::device_reset() { m_pc.d = 0x00008000; /* system mode, iff set to 111, min mode, register bank 0 */ - m_sr.d = 0xF000; + m_sr.d = 0xf000; m_regbank = 0; m_xssp.d = 0x0100; m_halted = 0; @@ -211,12 +210,12 @@ void tlcs900_device::device_reset() void tlcs900h_device::device_reset() { - m_pc.b.l = RDMEM( 0xFFFF00 ); - m_pc.b.h = RDMEM( 0xFFFF01 ); - m_pc.b.h2 = RDMEM( 0xFFFF02 ); + m_pc.b.l = RDMEM( 0xffff00 ); + m_pc.b.h = RDMEM( 0xffff01 ); + m_pc.b.h2 = RDMEM( 0xffff02 ); m_pc.b.h3 = 0; /* system mode, iff set to 111, max mode, register bank 0 */ - m_sr.d = 0xF800; + m_sr.d = 0xf800; m_regbank = 0; m_xssp.d = 0x0100; m_halted = 0; @@ -225,6 +224,18 @@ void tlcs900h_device::device_reset() } +void tlcs900_device::state_import(const device_state_entry &entry) +{ + switch (entry.index()) + { + case STATE_GENPC: + case STATE_GENPCBASE: + case TLCS900_PC: + m_prefetch_clear = true; + break; + } +} + void tlcs900_device::state_string_export(const device_state_entry &entry, std::string &str) const { switch (entry.index()) @@ -266,14 +277,15 @@ void tlcs900_device::execute_run() m_check_irqs = 0; } - debugger_instruction_hook( m_pc.d ); - if ( m_halted ) { + debugger_wait_hook(); m_cycles += 8; } else { + debugger_instruction_hook( m_pc.d ); + m_op = RDOP(); inst = &m_mnemonic[m_op]; prepare_operands( inst ); |