private void flagCheckTest(InstructionData testData) { cpu.reset(); cpu.set("flags", 0xFF); cpu.step(); for (var x = 0; x < testData.flags.Length; x++) { var flag = testData.flags[x]; var mask = EXPECTED_FLAG_MAP[x]; switch (flag) { case FLAG_CLEAR: Assert.That(cpu.regCC & mask, Is.EqualTo(0)); break; case FLAG_SET: Assert.IsTrue((cpu.regCC & mask) > 0); break; case FLAG_UNAFFECTED: var unaffectedFlag = (byte)(cpu.regCC & mask); TestContext.WriteLine("offset: {0}, {1}, mask: {2}", x, unaffectedFlag, mask); Assert.IsTrue(unaffectedFlag > 0); break; default: break; } } }
public void ROLA_0xFF_CarryFlagSet() { TestContext.WriteLine("ROLA, 0xFF - carry flag set"); const byte OP_ROLA = 0x49; runRegisterATest(OP_ROLA, 0xFF, () => { var cc = cpu.regCC |= 1; cpu.set("flags", cc); }); Assert.That(cpu.regA, Is.EqualTo(0xFF)); Assert.That(cpu.tickCount, Is.EqualTo(2)); Assert.That(cpu.flagsToString(), Is.EqualTo("eFhINzvC")); }
public void oCmp_8bit_CarryFlag() { TestContext.WriteLine("oCMP 8bit, carry flag"); cpu.set("flags", 0x00); cpu.oCMP(0, 0xFF); Assert.That("efhinzvC", Is.EqualTo(cpu.flagsToString())); }