From c41caeb4d0e8ea8bce72fe269a96d71d4dc4b36c Mon Sep 17 00:00:00 2001 From: Richard Cornwell Date: Wed, 13 Jun 2018 23:01:27 -0400 Subject: [PATCH] B5500: Fixed bug in CMN opcode execution. --- B5500/b5500_cpu.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/B5500/b5500_cpu.c b/B5500/b5500_cpu.c index 5194c9d..9245b9e 100644 --- a/B5500/b5500_cpu.c +++ b/B5500/b5500_cpu.c @@ -3678,17 +3678,15 @@ control: R = 0; F = S; /* Set F and X */ X = toF(S); + S = CF(B); if (B & FLAG) { - if ((B & PRESENT) == 0) { - if (NCSF) - Q |= PRES_BIT; - break; - } - KV = 0; + if ((B & PRESENT) == 0 && NCSF) + Q |= PRES_BIT; + else + KV = 0; } else { KV = (uint8)((B >> (FFIELD_V - 3)) & 070); } - S = CF(B); break; case VARIANT(WMOP_MKS): /* Mark Stack */