From 53aa30b287fb54b2fdaedb7e3e72fa9b5af32c6c Mon Sep 17 00:00:00 2001 From: redcode Date: Thu, 9 Aug 2018 04:46:22 +0200 Subject: [PATCH] Arithmetic safety. --- sources/Z80.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/sources/Z80.c b/sources/Z80.c index e0a48a1..99295f2 100644 --- a/sources/Z80.c +++ b/sources/Z80.c @@ -366,19 +366,19 @@ static void __uuu___(Z80 *object, zuint8 offset, zuint8 value) case 0: /* ADD */ t = A + value; - F = ((zuint)A + (zuint)value > 255) /* CF = Carry */ - | pf_overflow_add8(A, value) /* PF = Overflow */ - | ((A ^ value ^ t) & HF); /* HF = Half-carry */ - A = t; /* NF = 0 */ + F = ((zuint)A + value > 255) /* CF = Carry */ + | pf_overflow_add8(A, value) /* PF = Overflow */ + | ((A ^ value ^ t) & HF); /* HF = Half-carry */ + A = t; /* NF = 0 */ break; case 1: /* ADC */ t = F_C; - F = ((zuint)A + (zuint)value + (zuint)t > 255) /* CF = Carry */ - | pf_overflow_adc8(A, value, t) /* PF = Overflow */ - | (((A & 0xF) + (value & 0xF) + t) & HF); /* HF = Half-carry */ - /* NF = 0 */ + F = ((zuint)A + value + t > 255) /* CF = Carry */ + | pf_overflow_adc8(A, value, t) /* PF = Overflow */ + | (((A & 0xF) + (value & 0xF) + t) & HF); /* HF = Half-carry */ + /* NF = 0 */ A += value + t; break; @@ -682,11 +682,11 @@ static Z_INLINE void add_RR_NN(Z80 *object, zuint16 *r, zuint16 v) { zuint16 t = *r + v; - F = F_SZP /* SF, ZF, PF unchanged */ - | ((t >> 8) & YXF) /* YF = RR.13; XF = RR.11 */ - | (((*r ^ v ^ t) >> 8) & HF) /* HF = RRh half-carry */ - | ((zuint32)*r + (zuint32)v > 65535); /* CF = Carry */ - *r = t; /* NF = 0 */ + F = F_SZP /* SF, ZF, PF unchanged */ + | ((t >> 8) & YXF) /* YF = RR.13; XF = RR.11 */ + | (((*r ^ v ^ t) >> 8) & HF) /* HF = RRh half-carry */ + | ((zuint32)*r + v > 65535); /* CF = Carry */ + *r = t; /* NF = 0 */ }