diff options
Diffstat (limited to 'src/devices/cpu/unsp/unsp.cpp')
-rw-r--r-- | src/devices/cpu/unsp/unsp.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/devices/cpu/unsp/unsp.cpp b/src/devices/cpu/unsp/unsp.cpp index 13dce335aae..87a95bd900f 100644 --- a/src/devices/cpu/unsp/unsp.cpp +++ b/src/devices/cpu/unsp/unsp.cpp @@ -120,6 +120,7 @@ char const* const unsp_device::bitops[] = "tstb", "setb", "clrb", "invb" }; +// log/barrel shift char const* const unsp_device::lsft[] = { "asr", "asror", "lsl", "lslor", "lsr", "lsror", "rol", "ror" @@ -264,6 +265,28 @@ void unsp_device::device_start() set_icountptr(m_core->m_icount); } +void unsp_20_device::device_start() +{ + unsp_12_device::device_start(); + +#if UNSP_LOG_OPCODES || UNSP_LOG_REGS + int baseindex = UNSP_LOG_OPS + 1; +#else + int baseindex = UNSP_SB + 1; +#endif + + state_add(baseindex + UNSP20_R8, "R8", m_secondary_r[UNSP20_R8]).formatstr("%04X"); + state_add(baseindex + UNSP20_R9, "R9", m_secondary_r[UNSP20_R9]).formatstr("%04X"); + state_add(baseindex + UNSP20_R10, "R10", m_secondary_r[UNSP20_R10]).formatstr("%04X"); + state_add(baseindex + UNSP20_R11, "R11", m_secondary_r[UNSP20_R11]).formatstr("%04X"); + state_add(baseindex + UNSP20_R12, "R12", m_secondary_r[UNSP20_R12]).formatstr("%04X"); + state_add(baseindex + UNSP20_R13, "R13", m_secondary_r[UNSP20_R13]).formatstr("%04X"); + state_add(baseindex + UNSP20_R14, "R14", m_secondary_r[UNSP20_R14]).formatstr("%04X"); + state_add(baseindex + UNSP20_R15, "R15", m_secondary_r[UNSP20_R15]).formatstr("%04X"); + + save_item(NAME(m_secondary_r)); +} + void unsp_device::device_reset() { memset(m_core->m_r, 0, sizeof(uint32_t) * 8); @@ -275,6 +298,16 @@ void unsp_device::device_reset() m_core->m_fiq = 0; } +void unsp_20_device::device_reset() +{ + unsp_12_device::device_reset(); + + for (int i = 0; i < 8; i++) + { + m_secondary_r[i] = 0; + } +} + void unsp_device::device_stop() { if (m_drcfe != nullptr) |