diff --git a/PDP8/pdp8_cpu.c b/PDP8/pdp8_cpu.c index c91c6c98..1fce64d9 100644 --- a/PDP8/pdp8_cpu.c +++ b/PDP8/pdp8_cpu.c @@ -25,6 +25,7 @@ cpu central processor + 21-Oct-21 RMS Fixed bug in reporting device conflicts (Hans-Bernd Eggenstein) 07-Sep-17 RMS Fixed sim_eval declaration in history routine (COVERITY) 09-Mar-17 RMS Fixed PCQ_ENTRY for interrupts (COVERITY) 13-Feb-17 RMS RESET clear L'AC, per schematics diff --git a/PDP8/pdp8_fpp.c b/PDP8/pdp8_fpp.c index a96c89b1..8113c848 100644 --- a/PDP8/pdp8_fpp.c +++ b/PDP8/pdp8_fpp.c @@ -1,6 +1,6 @@ /* pdp8_fpp.c: PDP-8 floating point processor (FPP8A) - Copyright (c) 2007-2021, Robert M Supnik + Copyright (c) 2007-2022, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -25,6 +25,7 @@ fpp FPP8A floating point processor + 11-Mar-22 RMS Zeroed result exponent in double precision (COVERITY) 05-Jan-22 RHM Fix fencepost error in FP multiply for extended precision 21-Oct-21 RMS Added device number display @@ -842,6 +843,7 @@ if (fpp_sta & FPS_DP) { /* dp? */ uint32 cout = fpp_fr_add (z.fr, x.fr, y.fr, EXTEND);/* z = a + b */ uint32 zsign = z.fr[0] & FPN_FRSIGN; cout = (cout? 04000: 0); /* make sign bit */ + z.exp = 0; /* not used in DP */ /* overflow is indicated when signs are equal and overflow does not match the result sign bit */ fpp_copy (a, &z); /* result is z */ @@ -897,8 +899,10 @@ if ((fpp_fr_test(y.fr, 0, EXACT-1) == 0) && (y.fr[EXACT-1] < 2)) { y.exp = 0; y.fr[EXACT-1] = 0; } -if (fpp_sta & FPS_DP) /* dp? */ +if (fpp_sta & FPS_DP) { /* dp? */ fpp_fr_mul (z.fr, x.fr, y.fr, TRUE); /* mult frac */ + z.exp = 0; /* not used in DP */ + } else { /* fp or ep */ fpp_norm (&x, EXACT); fpp_norm (&y, EXACT); @@ -934,6 +938,7 @@ if (fpp_sta & FPS_DP) { /* dp? */ fpp_dump_apt (fpp_apta, FPS_IOVX); /* error */ return; } + z.exp = 0; /* not used in DP */ fpp_copy (a, &z); /* result is z */ } else { /* fp or ep */