- [FIX] Adjusted flags and timing for LD A, I and LD A,R
This commit is contained in:
26
z80.cpp
26
z80.cpp
@@ -407,6 +407,24 @@ namespace z80
|
||||
SUB8(b, false);
|
||||
}
|
||||
|
||||
void LD_A_I()
|
||||
{
|
||||
t++;
|
||||
rA = rI;
|
||||
KEEP_FLAGS(fC);
|
||||
FLAGS_SZXY(rA);
|
||||
if (iff2) SET_FLAGS(fP);
|
||||
}
|
||||
|
||||
void LD_A_R()
|
||||
{
|
||||
t++;
|
||||
rA = rR;
|
||||
KEEP_FLAGS(fC);
|
||||
FLAGS_SZXY(rA);
|
||||
if (iff2) SET_FLAGS(fP);
|
||||
}
|
||||
|
||||
void RLCA()
|
||||
{
|
||||
rA = (rA>>7) | (rA<<1);
|
||||
@@ -2026,26 +2044,26 @@ namespace z80
|
||||
case 0x44: NEG(); break;
|
||||
case 0x45: RETN(); break;
|
||||
case 0x46: IM(0); break;
|
||||
case 0x47: rI = rA; break;
|
||||
case 0x47: rI = rA; t++; break;
|
||||
case 0x48: rC = IN(); break;
|
||||
case 0x49: OUT(rC, rC); break;
|
||||
case 0x4A: ADC16(_rHL, rBC); break;
|
||||
case 0x4B: rBC = READ_MEM_16(READ_MEM_16());break;
|
||||
case 0x4D: RETI(); break;
|
||||
case 0x4F: rR = rA; break;
|
||||
case 0x4F: rR = rA; t++; break;
|
||||
|
||||
case 0x50: rD = IN(); break;
|
||||
case 0x51: OUT(rD, rC); break;
|
||||
case 0x52: SBC16(_rHL, rDE); break;
|
||||
case 0x53: WRITE_MEM_16(READ_MEM_16(), rDE);break;
|
||||
case 0x56: IM(1); break;
|
||||
case 0x57: rA = rI; break;
|
||||
case 0x57: LD_A_I(); break;
|
||||
case 0x58: rE = IN(); break;
|
||||
case 0x59: OUT(rE, rC); break;
|
||||
case 0x5A: ADC16(_rHL, rDE); break;
|
||||
case 0x5B: rDE = READ_MEM_16(READ_MEM_16());break;
|
||||
case 0x5E: IM(2); break;
|
||||
case 0x5F: rA = rR; break;
|
||||
case 0x5F: LD_A_R(); break;
|
||||
|
||||
case 0x60: rH = IN(); break;
|
||||
case 0x61: OUT(rH, rC); break;
|
||||
|
||||
Reference in New Issue
Block a user