- Fent proves amb DDA...
This commit is contained in:
29
z80.cpp
29
z80.cpp
@@ -479,11 +479,38 @@ namespace z80
|
|||||||
t+=4;
|
t+=4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void new_DAA()
|
||||||
|
{
|
||||||
|
uint8_t cf = rA > 0x99;
|
||||||
|
uint8_t diff = ((rF & fH) || (rA & 0xF) > 9) ? 6 : 0;
|
||||||
|
|
||||||
|
if ((rF & fC) || cf) diff |= 0x60;
|
||||||
|
diff = (rF & fN) ? rA - diff : rA + diff;
|
||||||
|
|
||||||
|
KEEP_FLAGS(fN | fC);
|
||||||
|
FLAGS_SZXY(diff);
|
||||||
|
SET_FLAGS(!(diff) << 6);
|
||||||
|
SET_FLAGS((rA ^ diff) & fH);
|
||||||
|
SET_PARITY_FLAG(diff);
|
||||||
|
SET_FLAGS(cf);
|
||||||
|
/* FLAGS = (zuint8)(
|
||||||
|
(F & (NF | CF)) | // NF unchanged; CF dominant
|
||||||
|
(t & SYXF) | // SF = sign; YF = Y; XF = X
|
||||||
|
ZF_ZERO(t) | // ZF = zero
|
||||||
|
((A ^ t) & HF) | // HF = Ai.4 != Ao.4
|
||||||
|
PF_PARITY(t) | // PF = parity
|
||||||
|
cf); // CF |= 1 (if BCD carry)
|
||||||
|
*/
|
||||||
|
rA = diff;
|
||||||
|
t+=4;
|
||||||
|
}
|
||||||
|
|
||||||
void DAA()
|
void DAA()
|
||||||
{
|
{
|
||||||
bool carry_set = false;
|
bool carry_set = false;
|
||||||
uint8_t old = rA;
|
uint8_t old = rA;
|
||||||
if ( (rA & 0x0F)>9 || (rF & fH) ) rA += 0x06;
|
if ( (rA & 0x0F)>9 || (rF & fH) )
|
||||||
|
rA += 0x06;
|
||||||
if ( (rA >> 4)>9 || (rF & fC) ) { rA += 0x60; carry_set = true; }
|
if ( (rA >> 4)>9 || (rF & fC) ) { rA += 0x60; carry_set = true; }
|
||||||
KEEP_FLAGS(fN);
|
KEEP_FLAGS(fN);
|
||||||
FLAGS_SZXY(rA);
|
FLAGS_SZXY(rA);
|
||||||
|
|||||||
Reference in New Issue
Block a user