# New Ticket Created by Jerome Quelin
# Please include the string: [perl #18793]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=18793 >
>From the Changes file:
- debugger can now interact with user.
- debugger can dump playfield.
- debugger can print information about current IP.
- debugger can execute a befunge program step by step.
Next step: introduce breakpoint support...
Jerome
--
[EMAIL PROTECTED]
-- attachment 1 ------------------------------------------------------
url: http://rt.perl.org/rt2/attach/43626/34713/348f93/befunge_debugger_dump_step.patch
? befunge.pbc
Index: Changes
===================================================================
RCS file: /cvs/public/parrot/languages/befunge/Changes,v
retrieving revision 1.3
diff -u -d -r1.3 Changes
--- Changes 30 Nov 2002 15:51:09 -0000 1.3
+++ Changes 1 Dec 2002 09:08:29 -0000
@@ -1,5 +1,11 @@
Revision history for Befunge-93 interpreter written for Parrot.
+0.06 Sun Dec 1 10:00:35 CET 2002
+ - debugger can now interact with user.
+ - debugger can dump playfield.
+ - debugger can print information about current IP.
+ - debugger can execute a befunge program step by step.
+
0.05 Sat Nov 30 11:31:25 CET 2002
- new file debug.pasm that will handle all the debugging
capabilities of the interpreter.
Index: README
===================================================================
RCS file: /cvs/public/parrot/languages/befunge/README,v
retrieving revision 1.5
diff -u -d -r1.5 README
--- README 30 Nov 2002 15:51:09 -0000 1.5
+++ README 1 Dec 2002 09:08:29 -0000
@@ -1,6 +1,6 @@
DESCRIPTION
-----------
-This is a Befunge interpreter written in Parrot assembler, version 0.05
+This is a Befunge interpreter written in Parrot assembler, version 0.06
This interpreter should be Befunge-93 compliant. This means the
playfield is limited to 80x25 and can hold *only bytes*. This means
Index: debug.pasm
===================================================================
RCS file: /cvs/public/parrot/languages/befunge/debug.pasm,v
retrieving revision 1.1
diff -u -d -r1.1 debug.pasm
--- debug.pasm 30 Nov 2002 15:53:38 -0000 1.1
+++ debug.pasm 1 Dec 2002 09:08:30 -0000
@@ -44,8 +44,69 @@
# stop and interact with user.
DEBUG_INTERACT:
bsr DEBUG_PRINT_STATUS
+ print "bef> "
+ readline S10, 0
+ chopn S10, 1
+ length I10, S10
+ eq I10, 0, DEBUG_INTERACT_NEXT
+ substr S11, S10, 0, 4
+ eq S11, "dump", DEBUG_INTERACT_DUMP
+ eq S11, "help", DEBUG_INTERACT_HELP
+ eq S11, "list", DEBUG_INTERACT_LIST
+ eq S11, "next", DEBUG_INTERACT_NEXT
+ eq S11, "quit", DEBUG_INTERACT_QUIT
+ substr S11, S10, 0, 5
+ eq S11, "break", DEBUG_INTERACT_BREAK
+ substr S11, S10, 0, 6
+ eq S11, "status", DEBUG_INTERACT_STATUS
+ substr S11, S10, 0, 7
+ eq S11, "restart", DEBUG_INTERACT_RESTART
+ substr S11, S10, 0, 8
+ eq S11, "continue", DEBUG_INTERACT_CONTINUE
+ print "Unknown instruction. Type help for help.\n"
+ branch DEBUG_INTERACT
+DEBUG_INTERACT_BREAK:
+ print "Not yet implemented...\n"
+ branch DEBUG_INTERACT
+DEBUG_INTERACT_CONTINUE:
+ set P3[0], 0 # do not stop at next instruction
+ branch DEBUG_INTERACT_END
+DEBUG_INTERACT_DUMP:
+ bsr DEBUG_DUMP_PLAYFIELD
+ branch DEBUG_INTERACT
+DEBUG_INTERACT_HELP:
+ print "Available commands are:\n"
+ print " status - print state of current IP\n"
+ print " dump - dump playfield\n"
+ print " break char c - set a breakpoint on character c\n"
+ print " break at x,y - set a breakpoint at coords (x,y)\n"
+ print " list - list breakpoints\n"
+ print " next - step one befunge instruction\n"
+ print " continue - resume execution\n"
+ print " restart - restart execution\n"
+ print " quit - abort execution\n"
+ print " help - display this message\n"
+ print "\n"
+ branch DEBUG_INTERACT
+DEBUG_INTERACT_LIST:
+ print "Not yet implemented...\n"
+ branch DEBUG_INTERACT
+DEBUG_INTERACT_NEXT:
+ set P3[0], 1 # stop at next instruction
+ branch DEBUG_INTERACT_END
+DEBUG_INTERACT_QUIT:
+ end
+DEBUG_INTERACT_RESTART:
+ #branch MAIN
+ print "Not yet implemented...\n"
+ branch DEBUG_INTERACT
+DEBUG_INTERACT_STATUS:
+ bsr DEBUG_PRINT_STATUS
+ branch DEBUG_INTERACT
+DEBUG_INTERACT_END:
ret
+
# Print the status of the instruction pointer:
# coordinates, current char, direction, flags and stack.