From ac3c6db75e050b2ba4dd3355b151031f01267b5d Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Mon, 21 Oct 2013 18:42:10 +0000 Subject: [PATCH] Fixed stuck decrementer interrupt. --- src/emu/cpu/tms9900/tms9995.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/emu/cpu/tms9900/tms9995.c b/src/emu/cpu/tms9900/tms9995.c index a116891e86a..098dc2ebcf9 100644 --- a/src/emu/cpu/tms9900/tms9995.c +++ b/src/emu/cpu/tms9900/tms9995.c @@ -1353,10 +1353,13 @@ void tms9995_device::int_prefetch_and_decode() { m_int_pending = 0; - if (m_int1_active && intmask >= 1 && check_int) m_int_pending |= PENDING_LEVEL1; - if (m_int_overflow && intmask >= 2 && check_int) m_int_pending |= PENDING_OVERFLOW; - if (m_int_decrementer && intmask >= 3 && check_int) m_int_pending |= PENDING_DECR; - if (m_int4_active && intmask >= 4 && check_int) m_int_pending |= PENDING_LEVEL4; + if (check_int) + { + if (m_int1_active && intmask >= 1) m_int_pending |= PENDING_LEVEL1; + if (m_int_overflow && intmask >= 2) m_int_pending |= PENDING_OVERFLOW; + if (m_int_decrementer && intmask >= 3) m_int_pending |= PENDING_DECR; + if (m_int4_active && intmask >= 4) m_int_pending |= PENDING_LEVEL4; + } if (m_int_pending!=0) { @@ -2057,6 +2060,7 @@ void tms9995_device::trigger_decrementer() m_int_decrementer = true; } } + else m_int_decrementer = false; } }