diff options
Diffstat (limited to 'src/devices/cpu/tms9900/tms9900.cpp')
-rw-r--r-- | src/devices/cpu/tms9900/tms9900.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/devices/cpu/tms9900/tms9900.cpp b/src/devices/cpu/tms9900/tms9900.cpp index 49e60c1a28b..5ae5cb54f6b 100644 --- a/src/devices/cpu/tms9900/tms9900.cpp +++ b/src/devices/cpu/tms9900/tms9900.cpp @@ -1346,6 +1346,12 @@ void tms99xx_device::service_interrupt() m_reset = false; LOG("** RESET triggered\n"); + + // RESET could occur during a data derivation sequence, so we have to + // prevent the execution loop to return into that sequence by + // clearing the return index. This fixes a bug that leads to undefined + // behaviour in that situation. + m_caller_index = NOPRG; } else { @@ -2765,15 +2771,6 @@ uint32_t tms99xx_device::execute_max_cycles() const noexcept return 124; } -uint32_t tms99xx_device::execute_input_lines() const noexcept -{ - return 2; -} - -// clocks to cycles, cycles to clocks = id -// execute_default_irq_vector = 0 -// execute_burn = nop - // device_disasm_interface overrides std::unique_ptr<util::disasm_interface> tms99xx_device::create_disassembler() |