def disassemble(self, bytes, pc=0, mpu=None): if mpu is None: mpu = MPU() address_parser = AddressParser() disasm = Disassembler(mpu, address_parser) mpu.memory[pc:len(bytes) - 81] = bytes return disasm.instruction_at(pc)
def __init__(self, filename): self.nsf = NSFParser(bytearray(file(filename).read())) # Set up Memory with Hooks self.mem = ObservableMemory() self.mem.write(self.nsf.load_addr, self.nsf.data) self.cpu = MPU(self.mem) self.deltaCallTime = 0 self.totalCycles = 0
def __init__(self): self.mem = Memory() self.cpu = MPU() self.patches = Patches() self.dis = Disassembler(self.cpu) pc_low = self.mem[0xfffc] pc_hi = self.mem[0xfffd] self.cpu.memory = self.mem self.cpu.pc = (pc_hi << 8) + pc_low self.trace = False
def _dont_test_disassemble_wraps_after_top_of_mem(self): ''' TODO: This test fails with IndexError. We should fix this so that it does not attempt to index memory out of range. It does not affect most Py65 users because py65mon uses ObservableMemory, which does not raise IndexError. ''' mpu = MPU() mpu.memory[0xFFFF] = 0x20 # JSR mpu.memory[0x0000] = 0xD2 # mpu.memory[0x0001] = 0xFF # $FFD2 dis = Disassembler(mpu) length, disasm = dis.instruction_at(0xFFFF) self.assertEqual(3, length) self.assertEqual('JSR $ffd2', disasm)
def assemble(self, statement, pc=0000, mpu=None): if mpu is None: mpu = MPU() address_parser = AddressParser() assembler = Assembler(mpu, address_parser) return assembler.assemble(statement, pc)
def setUp(self): self.cpu = MPU()
def test_ctor_uses_bus_width_from_mpu(self): asm = Assembler(MPU()) self.assertEqual(16, asm.addrWidth) asm = Assembler(MPU65Org16()) self.assertEqual(32, asm.addrWidth)
def test_ctor_optionally_creates_address_parser(self): mpu = MPU() asm = Assembler(mpu) self.assertFalse(asm._address_parser is None)
def test_ctor_uses_provided_mpu_and_address_parser(self): mpu = MPU() address_parser = AddressParser() asm = Assembler(mpu, address_parser) self.assertTrue(asm._mpu is mpu) self.assertTrue(asm._address_parser is address_parser)
def assemble(self, statement, pc=0000): mpu = MPU() address_parser = AddressParser() assembler = Assembler(mpu, address_parser) return assembler.assemble(statement, pc)
def reset(self): self.cpu = MPU() self.start_addr = 0 self.stop_addr = 0 self.paused = False self.step = False
def disassemble(self, bytes): mpu = MPU() address_parser = AddressParser() disasm = Disassembler(mpu, address_parser) mpu.memory[0:len(bytes)-1] = bytes return disasm.instruction_at(0)
def setUp(self): self.cpu = MPU() print(self.cpu)
def __init__(self): self.mpu = MPU() self.symtab = symtab.SymTab([]) # symtab initially empty
def __init__(self): super().__init__() self.mpu = MPU() self.regsobj = self.mpu