def test_disassemble_will_disassemble_one_address(self): stdout = StringIO() mon = Monitor(stdout=stdout) mon._mpu.memory[0xc000] = 0xEA # => NOP mon._mpu.step() mon.do_disassemble("c000") out = stdout.getvalue() disasm = "$c000 ea NOP\n" self.assertEqual(out, disasm)
def test_disassemble_wraps_an_instruction_around_memory(self): stdout = StringIO() mon = Monitor(stdout=stdout) mon._mpu.memory[0xffff] = 0x20 # => JSR mon._mpu.memory[0x0000] = 0xD2 # mon._mpu.memory[0x0001] = 0xFF # => $FFD2 mon.do_disassemble("ffff") out = stdout.getvalue() disasm = "$ffff 20 d2 ff JSR $ffd2\n" self.assertEqual(out, disasm)
def test_disassemble_wraps_disassembly_list_around_memory(self): stdout = StringIO() mon = Monitor(stdout=stdout) mon._mpu.memory[0xFFFF] = 0x20 # => JSR mon._mpu.memory[0x0000] = 0xD2 mon._mpu.memory[0x0001] = 0xFF # => $FFD2 mon._mpu.memory[0x0002] = 0x20 # => JSR mon._mpu.memory[0x0003] = 0xE4 mon._mpu.memory[0x0004] = 0xFF # => $FFE4 mon._mpu.memory[0x0005] = 0xEA # => NOP mon.do_disassemble("ffff:5") out = stdout.getvalue() disasm = "$ffff 20 d2 ff JSR $ffd2\n" "$0002 20 e4 ff JSR $ffe4\n" "$0005 ea NOP\n" self.assertEqual(out, disasm)
def test_disassemble_wraps_disassembly_list_around_memory(self): stdout = StringIO() mon = Monitor(stdout=stdout) mon._mpu.memory[0xffff] = 0x20 # => JSR mon._mpu.memory[0x0000] = 0xD2 mon._mpu.memory[0x0001] = 0xFF # => $FFD2 mon._mpu.memory[0x0002] = 0x20 # => JSR mon._mpu.memory[0x0003] = 0xE4 mon._mpu.memory[0x0004] = 0xFF # => $FFE4 mon._mpu.memory[0x0005] = 0xEA # => NOP mon.do_disassemble("ffff:5") out = stdout.getvalue() disasm = ("$ffff 20 d2 ff JSR $ffd2\n" "$0002 20 e4 ff JSR $ffe4\n" "$0005 ea NOP\n") self.assertEqual(out, disasm)
def test_disassemble_shows_help_when_given_extra_args(self): stdout = StringIO() mon = Monitor(stdout=stdout) mon.do_disassemble("c000 c001") out = stdout.getvalue() self.assertTrue(out.startswith('disassemble <address_range>'))