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()