void Z80::CPI() { Z80_FLAGS_REG = Z80_FLAGS_REG | Z80_SUBTRACT_FLAG; Z80_BYTE tmp = readMemory(R.HL.W); R.HL.W++; R.BC.W--; Z80_BYTE tmp2 = R.AF.B.h - tmp; Z80_FLAGS_REG = (Z80_FLAGS_REG & (Z80_SUBTRACT_FLAG | Z80_CARRY_FLAG)) | (R.BC.W == 0 ? 0x00 : Z80_PARITY_FLAG) | t.zeroSignTable[tmp2]; SET_HALFCARRY(tmp, tmp2); tmp = tmp2 - ((Z80_FLAGS_REG & Z80_HALFCARRY_FLAG) >> Z80_HALFCARRY_FLAG_BIT); Z80_FLAGS_REG = Z80_FLAGS_REG | (tmp & Z80_UNUSED_FLAG2) | ((tmp & 0x02) << 4); }