class TestMemoryClass(unittest.TestCase): def setUp(self): self.u8 = UInt8() self.u8.toggle(0) self.u8.bit(6, True) self.mem = MemoryMap(0x2000) self.mem.write(65) self.mem.write16(1024) self.mem[0x100] = 65 self.mem.ptr = 0x0 self.mc = MemoryController() self.mc.add_map(0x0, self.mem) self.mc.write(65) self.mc.write16(1024) self.mc[0x100] = 65 self.mc.ptr = 0x0 def test_uint8(self): self.assertEqual(self.u8.value, 65) self.assertEqual(self.u8.b, 65) self.assertEqual(self.u8.c, 'A') self.assertEqual(self.u8.bit(0), True) self.assertEqual(self.u8.bit(1), False) self.assertEqual(self.u8.bit(2), False) self.assertEqual(self.u8.bit(3), False) self.assertEqual(self.u8.bit(4), False) self.assertEqual(self.u8.bit(5), False) self.assertEqual(self.u8.bit(6), True) self.assertEqual(self.u8.bit(7), False) def test_memorymap(self): self.mem.write_protect() self.assertEqual(len(self.mem), 0x2000) self.assertEqual(self.mem.ptr, 0x0) self.assertEqual(self.mem.read(), 65) self.assertEqual(self.mem.read16(), 1024) self.assertEqual(self.mem.ptr, 0x3) self.assertEqual(self.mem[0x100], 65) self.assertEqual(self.mem.ptr, 0x3) self.assertRaises(MemoryProtectionError, self.mem.write, [0x30, 70]) self.mem.read_protect() self.assertRaises(MemoryProtectionError, self.mem.read) def test_memorycontroller(self): self.assertEqual(len(self.mc), 0xFFFF) self.assertEqual(self.mc.ptr, 0x0) self.assertEqual(self.mc.fetch(), 65) self.assertEqual(self.mc.fetch16(), 1024) self.assertEqual(self.mc.ptr, 0x3) self.assertEqual(self.mc[0x100], 65) self.assertEqual(self.mc.ptr, 0x3)
def setUp(self): self.u8 = UInt8() self.u8.toggle(0) self.u8.bit(6, True) self.mem = MemoryMap(0x2000) self.mem.write(65) self.mem.write16(1024) self.mem[0x100] = 65 self.mem.ptr = 0x0 self.mc = MemoryController() self.mc.add_map(0x0, self.mem) self.mc.write(65) self.mc.write16(1024) self.mc[0x100] = 65 self.mc.ptr = 0x0
def __init__(self): self.regs = CPURegisters() self.flags = UInt8() self.mem = MemoryController() self.iomap = IOMap() self.mem.add_map(0x0, MemoryMap(0x2000)) self.mem.add_map(0xa, self.iomap) self.cpu_hooks = {} self.devices = [] self.__opcodes = {} for name in dir(self.__class__): if name[:7] == 'opcode_': self.__opcodes.update({int(name[7:], 16): getattr(self, name)})