diff --git a/dsim.c b/dsim.c index 6c1d889..86f23bb 100644 --- a/dsim.c +++ b/dsim.c @@ -485,7 +485,7 @@ void next() op_t f; uint16_t i; - if ((!intq_en) && (intq_size > 0)) { + if ((!intq_en) && (intq_size > 0) && (!skip_next)) { i = intq_pop(); if (ria != 0) { intq_en = true; @@ -515,7 +515,7 @@ void next() if (!skip_next) f(pa, pb); else - skip_next = false; + skip_next = ((opcode & 0x18) == 0x10); /* Skip chained conditionals */ ticks++; }