diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/cpu/s2650/s2650.c | 3 | ||||
-rw-r--r-- | src/emu/devcpu.c | 2 | ||||
-rw-r--r-- | src/emu/diexec.c | 4 |
3 files changed, 8 insertions, 1 deletions
diff --git a/src/emu/cpu/s2650/s2650.c b/src/emu/cpu/s2650/s2650.c index 4b73f2da0f8..6f710e5f530 100644 --- a/src/emu/cpu/s2650/s2650.c +++ b/src/emu/cpu/s2650/s2650.c @@ -890,7 +890,8 @@ static CPU_EXECUTE( s2650 ) s2650c->icount = cycles; /* check for external irqs */ - s2650c->icount -= check_irq_line(s2650c); + int irqcycles = check_irq_line(s2650c); + s2650c->icount -= irqcycles; do { diff --git a/src/emu/devcpu.c b/src/emu/devcpu.c index 2bf5d32b0cf..9f9a4d752aa 100644 --- a/src/emu/devcpu.c +++ b/src/emu/devcpu.c @@ -312,6 +312,8 @@ void cpu_device::device_start() // get our icount pointer m_icount = reinterpret_cast<int *>(get_legacy_runtime_ptr(CPUINFO_PTR_INSTRUCTION_COUNTER)); + assert(m_icount != 0); + *m_icount = 0; } diff --git a/src/emu/diexec.c b/src/emu/diexec.c index 02766c063b6..47fb9f0e826 100644 --- a/src/emu/diexec.c +++ b/src/emu/diexec.c @@ -476,6 +476,7 @@ attotime device_execute_interface::local_time() const attotime result = m_localtime; if (is_executing()) { + assert(m_cycles_running >= *m_icount); int cycles = m_cycles_running - *m_icount; result = attotime_add(result, m_device.clocks_to_attotime(cycles)); } @@ -491,7 +492,10 @@ attotime device_execute_interface::local_time() const UINT64 device_execute_interface::total_cycles() const { if (is_executing()) + { + assert(m_cycles_running >= *m_icount); return m_totalcycles + m_cycles_running - *m_icount; + } else return m_totalcycles; } |