from cpu6502 import * import os.path import unittest class TestCPU6502(unittest.TestCase): def setUp(self): self.cpu = CPU6502() self.cpu.pc = 0x7000 self.cpu.start = self.cpu.pc self.debug = False print("") print("---------------------------") print("test method: %s" % self._testMethodName) def check_flags(self, neg, zero, carry): self.assertEqual(self.cpu.flag_n, neg) self.assertEqual(self.cpu.flag_z, zero) self.assertEqual(self.cpu.flag_c, carry) def check_a(self, val, neg, zero, carry): self.assertEqual(self.cpu.reg_a, val) self.check_flags(neg, zero, carry) def check_x(self, val, neg, zero, carry): self.assertEqual(self.cpu.reg_x, val) self.check_flags(neg, zero, carry) def listing(self): self.cpu.end = self.cpu.pc self.cpu.disass() def run_test(self, debug=False): self.cpu.resetcyc() if self.debug: self.listing() self.cpu.run() if self.debug: self.cpu.registers() print("") print("Cycles: %d" % (self.cpu.cycles)) print("") self.assertEqual(0xff, self.cpu.sp) def test_brk_file(self): # Interrupt-Ausloeser fp = open(self.cpu.brk_file, 'w') fp.close() # Assembler-Programm self.cpu.addcmd('lda #', 0x20) # Befehle werden nicht mehr ausgefuehrt self.cpu.addcmd('ldx #', 0x10) self.cpu.addcmd('brk') self.run_test() self.check_a(0x20, False, False, False) self.check_x(0, False, False, False) self.assertFalse(os.path.exists(self.cpu.brk_file)) if __name__ == '__main__': unittest.main()