parent
eca4299b87
commit
4f63cadb4a
|
@ -874,7 +874,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
case 0xDA: JP_COND(FlagC); break; // JP C
|
||||
case 0xDB: IN_(); break; // IN A
|
||||
case 0xDC: CALL_COND(FlagC); break; // CALL C
|
||||
case 0xDD: JAM_(); break; // Jam (invalid)
|
||||
case 0xDD: PREFIX_(IXpre); break; // IX Prefix
|
||||
case 0xDE: REG_OP_IND_INC(SBC8, A, PCl, PCh); break; // SBC A, n
|
||||
case 0xDF: RST_(0x18); break; // RST 0x18
|
||||
case 0xE0: RET_COND(!FlagP); break; // RET Po
|
||||
|
@ -890,7 +890,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
case 0xEA: JP_COND(FlagP); break; // JP Pe
|
||||
case 0xEB: EXCH_16_(E, D, L, H); break; // ex DE, HL
|
||||
case 0xEC: CALL_COND(FlagP); break; // CALL Pe
|
||||
case 0xED: JAM_(); break; // Jam (invalid)
|
||||
case 0xED: PREFIX_(EXTDpre); break; // EXTD Prefix
|
||||
case 0xEE: REG_OP_IND_INC(XOR8, A, PCl, PCh); break; // XOR A, n
|
||||
case 0xEF: RST_(0x28); break; // RST 0x28
|
||||
case 0xF0: RET_COND(!FlagS); break; // RET p
|
||||
|
@ -906,7 +906,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
case 0xFA: JP_COND(FlagS); break; // JP M
|
||||
case 0xFB: EI_(); break; // EI
|
||||
case 0xFC: CALL_COND(FlagS); break; // CALL M
|
||||
case 0xFD: JAM_(); break; // Jam (invalid)
|
||||
case 0xFD: PREFIX_(IYpre); break; // IY Prefix
|
||||
case 0xFE: REG_OP_IND_INC(CP8, A, PCl, PCh); break; // CP A, n
|
||||
case 0xFF: RST_(0x38); break; // RST $38
|
||||
}
|
||||
|
@ -1139,7 +1139,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
case 0xDA: JP_COND(FlagC); break; // JP C
|
||||
case 0xDB: IN_(); break; // IN A
|
||||
case 0xDC: CALL_COND(FlagC); break; // CALL C
|
||||
case 0xDD: JAM_(); break; // Jam (invalid)
|
||||
case 0xDD: PREFIX_(IXpre); break; // IX Prefix
|
||||
case 0xDE: REG_OP_IND_INC(SBC8, A, PCl, PCh); break; // SBC A, n
|
||||
case 0xDF: RST_(0x18); break; // RST 0x18
|
||||
case 0xE0: RET_COND(!FlagP); break; // RET Po
|
||||
|
@ -1155,7 +1155,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
case 0xEA: JP_COND(FlagP); break; // JP Pe
|
||||
case 0xEB: EXCH_16_(E, D, L, H); break; // ex DE, HL
|
||||
case 0xEC: CALL_COND(FlagP); break; // CALL Pe
|
||||
case 0xED: JAM_(); break; // Jam (invalid)
|
||||
case 0xED: PREFIX_(EXTDpre); break; // EXTD Prefix
|
||||
case 0xEE: REG_OP_IND_INC(XOR8, A, PCl, PCh); break; // XOR A, n
|
||||
case 0xEF: RST_(0x28); break; // RST 0x28
|
||||
case 0xF0: RET_COND(!FlagS); break; // RET p
|
||||
|
@ -1171,7 +1171,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
case 0xFA: JP_COND(FlagS); break; // JP M
|
||||
case 0xFB: EI_(); break; // EI
|
||||
case 0xFC: CALL_COND(FlagS); break; // CALL M
|
||||
case 0xFD: JAM_(); break; // Jam (invalid)
|
||||
case 0xFD: PREFIX_(IYpre); break; // IY Prefix
|
||||
case 0xFE: REG_OP_IND_INC(CP8, A, PCl, PCh); break; // CP A, n
|
||||
case 0xFF: RST_(0x38); break; // RST $38
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
char sign = neg ? '-' : '+';
|
||||
int val = neg ? 256 - B : B;
|
||||
format = format.Replace("d", string.Format("{0}{1:X2}h", sign, val));
|
||||
addr++;
|
||||
}
|
||||
|
||||
return format;
|
||||
|
|
|
@ -723,5 +723,20 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
Flag5 = (temp & 0x02) != 0;
|
||||
Flag3 = (temp & 0x08) != 0;
|
||||
}
|
||||
|
||||
// set flags for LD A, I/R
|
||||
public void SET_FL_IR_Func(ushort dest)
|
||||
{
|
||||
if (dest == A)
|
||||
{
|
||||
FlagN = false;
|
||||
FlagH = false;
|
||||
FlagZ = Regs[A] == 0;
|
||||
FlagS = Regs[A] > 127;
|
||||
FlagP = iff2;
|
||||
Flag5 = (Regs[A] & 0x02) != 0;
|
||||
Flag3 = (Regs[A] & 0x08) != 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
{operation, dest, src,
|
||||
IDLE,
|
||||
IDLE,
|
||||
IDLE,
|
||||
SET_FL_IR, dest,
|
||||
OP };
|
||||
}
|
||||
|
||||
|
|
|
@ -74,6 +74,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
public const ushort SET_FL_CP = 59;
|
||||
public const ushort I_BIT = 60;
|
||||
public const ushort HL_BIT = 61;
|
||||
public const ushort SET_FL_IR = 62;
|
||||
|
||||
|
||||
public Z80A()
|
||||
|
@ -582,6 +583,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
case EI_RETI:
|
||||
// NOTE: This is needed for systems using multiple interrupt sources, it triggers the next interrupt
|
||||
// Not currently implemented here
|
||||
iff1 = iff2;
|
||||
break;
|
||||
case EI_RETN:
|
||||
iff1 = iff2;
|
||||
|
@ -610,6 +612,9 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
|
|||
case SET_FL_CP:
|
||||
SET_FL_CP_Func();
|
||||
break;
|
||||
case SET_FL_IR:
|
||||
SET_FL_IR_Func(cur_instr[instr_pntr++]);
|
||||
break;
|
||||
}
|
||||
totalExecutedCycles++;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue