- [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);
|
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()
|
void RLCA()
|
||||||
{
|
{
|
||||||
rA = (rA>>7) | (rA<<1);
|
rA = (rA>>7) | (rA<<1);
|
||||||
@@ -2026,26 +2044,26 @@ namespace z80
|
|||||||
case 0x44: NEG(); break;
|
case 0x44: NEG(); break;
|
||||||
case 0x45: RETN(); break;
|
case 0x45: RETN(); break;
|
||||||
case 0x46: IM(0); break;
|
case 0x46: IM(0); break;
|
||||||
case 0x47: rI = rA; break;
|
case 0x47: rI = rA; t++; break;
|
||||||
case 0x48: rC = IN(); break;
|
case 0x48: rC = IN(); break;
|
||||||
case 0x49: OUT(rC, rC); break;
|
case 0x49: OUT(rC, rC); break;
|
||||||
case 0x4A: ADC16(_rHL, rBC); break;
|
case 0x4A: ADC16(_rHL, rBC); break;
|
||||||
case 0x4B: rBC = READ_MEM_16(READ_MEM_16());break;
|
case 0x4B: rBC = READ_MEM_16(READ_MEM_16());break;
|
||||||
case 0x4D: RETI(); break;
|
case 0x4D: RETI(); break;
|
||||||
case 0x4F: rR = rA; break;
|
case 0x4F: rR = rA; t++; break;
|
||||||
|
|
||||||
case 0x50: rD = IN(); break;
|
case 0x50: rD = IN(); break;
|
||||||
case 0x51: OUT(rD, rC); break;
|
case 0x51: OUT(rD, rC); break;
|
||||||
case 0x52: SBC16(_rHL, rDE); break;
|
case 0x52: SBC16(_rHL, rDE); break;
|
||||||
case 0x53: WRITE_MEM_16(READ_MEM_16(), rDE);break;
|
case 0x53: WRITE_MEM_16(READ_MEM_16(), rDE);break;
|
||||||
case 0x56: IM(1); break;
|
case 0x56: IM(1); break;
|
||||||
case 0x57: rA = rI; break;
|
case 0x57: LD_A_I(); break;
|
||||||
case 0x58: rE = IN(); break;
|
case 0x58: rE = IN(); break;
|
||||||
case 0x59: OUT(rE, rC); break;
|
case 0x59: OUT(rE, rC); break;
|
||||||
case 0x5A: ADC16(_rHL, rDE); break;
|
case 0x5A: ADC16(_rHL, rDE); break;
|
||||||
case 0x5B: rDE = READ_MEM_16(READ_MEM_16());break;
|
case 0x5B: rDE = READ_MEM_16(READ_MEM_16());break;
|
||||||
case 0x5E: IM(2); break;
|
case 0x5E: IM(2); break;
|
||||||
case 0x5F: rA = rR; break;
|
case 0x5F: LD_A_R(); break;
|
||||||
|
|
||||||
case 0x60: rH = IN(); break;
|
case 0x60: rH = IN(); break;
|
||||||
case 0x61: OUT(rH, rC); break;
|
case 0x61: OUT(rH, rC); break;
|
||||||
|
|||||||
Reference in New Issue
Block a user