From 0034381aac6413def6960c7e4a1f8b84b5538549 Mon Sep 17 00:00:00 2001 From: Ian C Date: Mon, 21 Aug 2006 22:34:54 +0000 Subject: Edits --- z80_decode.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/z80_decode.c b/z80_decode.c index 6bb34f5..c5688c8 100644 --- a/z80_decode.c +++ b/z80_decode.c @@ -210,8 +210,10 @@ static Z80Word ADC16(Z80 *cpu, Z80Word REG, Z80Word VAL) { Z80Val w; w=REG+(Z80Val)VAL+CARRY; - cpu->AF.b[LO]&=(S_Z80|Z_Z80|V_Z80); + cpu->AF.b[LO]=0; + if ((w&0xffff)==0) cpu->AF.b[LO]=Z_Z80; if (w>0xffff) cpu->AF.b[LO]|=C_Z80; + if ((VAL^REG^0x8000)&(REG^w)&0x8000) cpu->AF.b[LO]|=P_Z80; if ((REG^w^VAL)&0x1000) cpu->AF.b[LO]|=H_Z80; SETHIDDEN(w>>8); return w; @@ -223,11 +225,12 @@ static Z80Word SBC16(Z80 *cpu, Z80Word REG, Z80Word VAL) Z80Val w; w=REG-(Z80Val)VAL-CARRY; cpu->AF.b[LO]=N_Z80; + if ((w&0xffff)==0) cpu->AF.b[LO]=Z_Z80; if (w&0x8000) cpu->AF.b[LO]|=S_Z80; if ((w&0xffff)==0) cpu->AF.b[LO]|=Z_Z80; if (w>0xffff) cpu->AF.b[LO]|=C_Z80; - if ((REG^w^VAL)&0x1000) cpu->AF.b[LO]|=H_Z80; if ((VAL^REG)&(VAL^w)&0x8000) cpu->AF.b[LO]|=P_Z80; + if ((REG^w^VAL)&0x1000) cpu->AF.b[LO]|=H_Z80; SETHIDDEN(w>>8); return w; } -- cgit v1.2.3