1.1 --- a/rsvp.py Mon Sep 29 01:30:39 2008 +0200
1.2 +++ b/rsvp.py Fri Oct 10 00:56:20 2008 +0200
1.3 @@ -107,6 +107,8 @@
1.4 self.attr_error = attr_error
1.5 self.type_error = type_error
1.6
1.7 + # Debugging methods.
1.8 +
1.9 def dump(self):
1.10 print "PC", self.pc, "->", self.load(self.pc)
1.11 print "PC stack", self.pc_stack
1.12 @@ -126,9 +128,31 @@
1.13 print "Result", self.result
1.14 print "Exception", self.exception
1.15
1.16 - def step(self):
1.17 + def show(self):
1.18 + self.show_memory(self.memory, 0)
1.19 +
1.20 + def show_pc(self, run_in=10):
1.21 + start = max(0, self.pc - run_in)
1.22 + end = self.pc + run_in
1.23 + memory = self.memory[start:end]
1.24 + self.show_memory(memory, start)
1.25 +
1.26 + def show_memory(self, memory, start):
1.27 + for i, x in enumerate(memory):
1.28 + location = start + i
1.29 + if location == self.pc:
1.30 + print "->",
1.31 + else:
1.32 + print " ",
1.33 + print "%5d %r" % (location, x)
1.34 +
1.35 + def step(self, dump=0):
1.36 self.execute()
1.37 - self.dump()
1.38 + self.show_pc()
1.39 + if dump:
1.40 + self.dump()
1.41 +
1.42 + # Internal operations.
1.43
1.44 def load(self, address):
1.45