From e1947130391133fd60285bcad9a7a26086bdedef Mon Sep 17 00:00:00 2001 From: Richard Cornwell Date: Wed, 17 Oct 2018 23:46:16 -0400 Subject: [PATCH] KA10: Fixed bug in Floating point causing invalid trap. Fixed IRQ error. --- PDP10/ka10_cpu.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/PDP10/ka10_cpu.c b/PDP10/ka10_cpu.c index d9d9c31..dade1dc 100644 --- a/PDP10/ka10_cpu.c +++ b/PDP10/ka10_cpu.c @@ -3141,19 +3141,12 @@ fxnorm: nrf = 1; } } + if (flag1) + AR = (AR ^ 00777777777777777777LL) + 1; MQ = AR & MMASK; AR >>= 27; - if (flag1) { - MQ = (MQ ^ MMASK) + 1; - AR = (AR ^ MMASK); - if (MQ & BIT8) - AR++; + if (flag1) AR |= SMASK; - } - } else if (flag1) { - AR = BIT9 | SMASK; - MQ = SMASK; - SC++; } else { AR = MQ = 0; SC = 0; @@ -4846,7 +4839,7 @@ last: if (f_pc_inh && trap_flag == 0) set_pi_hold(); /* Hold off all lower interrupts */ #else - if (f_pc_inh) + if (!QITS || f_pc_inh) set_pi_hold(); /* Hold off all lower interrupts */ #endif f_inst_fetch = 1;