From 9cc8cdef5f6b17c1706e5e83353a09d100f5d70a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Wed, 28 Sep 2022 02:15:13 +0300 Subject: [PATCH] Fix an infinite loop bug if rounding overflowed in calculator.asm --- calculator.asm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/calculator.asm b/calculator.asm index 4cad962..aa70bec 100644 --- a/calculator.asm +++ b/calculator.asm @@ -1,5 +1,10 @@ org 0 +load r0, fResultPtr+0 +load r1, fResultPtr+1 +cleq r0, r0, pushWord +cleq r0, r0, dumpFloat + cleq r0, r0, normalize load r0, fResultPtr+0 @@ -459,7 +464,7 @@ fResult: data 05 ; exponent data 00 data 00 - data 00 ; overflow + data 09 ; overflow data 09 ; mantissa data 09 data 09 @@ -886,6 +891,10 @@ normalizeRoundUpEnd: cleq r0, r0, popWord cleq r0, r0, popWord + ; Zero out the rounding digit + xor r0, r0 + store fResult+11, r0 + ; We might have ended up with a digit in the overflow breq r0, r0, normalize