From cb63d947767dbf7ad266463cb8aca7a1acdd5bbb Mon Sep 17 00:00:00 2001 From: Mike Naberezny Date: Sun, 16 Aug 2009 18:52:47 -0700 Subject: [PATCH] Flags (P) can now be changed from the "registers" command. --- CHANGES.txt | 4 ++++ src/py65/monitor.py | 4 +++- src/py65/tests/test_monitor.py | 5 +++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index d42144f..46c4bb6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -6,6 +6,10 @@ Next Release - Fixed that relative branch calculations would not use the correct start address when assembling in the monitor. Closes #10. + - The processor status register ("p" or "flags") can now be changed + in the monitor using the "registers" command with an argument of + "p", such as "registers p=00". + 0.6 (2009-08-11) - Added monitor shortcut "a" for "assemble". diff --git a/src/py65/monitor.py b/src/py65/monitor.py index 5c1f74c..1bf84a7 100644 --- a/src/py65/monitor.py +++ b/src/py65/monitor.py @@ -295,13 +295,15 @@ class Monitor(cmd.Cmd): return self._output("Syntax error: %s" % args) for register, value in pairs: - if register not in ('pc', 'sp', 'a', 'x', 'y'): + if register not in ('pc', 'sp', 'a', 'x', 'y', 'p'): self._output("Invalid register: %s" % register) else: try: intval = self._address_parser.number(value) & 0xFFFF if len(register) == 1: intval &= 0xFF + if register == 'p': + register = 'flags' setattr(self._mpu, register, intval) except KeyError, why: self._output(why[0]) diff --git a/src/py65/tests/test_monitor.py b/src/py65/tests/test_monitor.py index 0e5eedf..c60bfe3 100644 --- a/src/py65/tests/test_monitor.py +++ b/src/py65/tests/test_monitor.py @@ -266,13 +266,14 @@ class MonitorTests(unittest.TestCase): def test_registers_updates_all_registers(self): stdout = StringIO() mon = Monitor(stdout=stdout) - mon.do_registers('a=42,x=43,y=44, sp=45, pc=4600') + mon.do_registers('a=42,x=43,y=44,p=45, sp=46, pc=4600') out = stdout.getvalue() self.assertEqual("", out) self.assertEqual(0x42, mon._mpu.a) self.assertEqual(0x43, mon._mpu.x) self.assertEqual(0x44, mon._mpu.y) - self.assertEqual(0x45, mon._mpu.sp) + self.assertEqual(0x45, mon._mpu.flags) + self.assertEqual(0x46, mon._mpu.sp) self.assertEqual(0x4600, mon._mpu.pc) def test_help_registers(self):