Author: jquelin
Date: Fri Jan 9 02:58:27 2009
New Revision: 35279
Modified:
trunk/languages/befunge/befunge.pir
trunk/languages/befunge/flow.pir
Log:
instruction ? implemented (go away)
Modified: trunk/languages/befunge/befunge.pir
==============================================================================
--- trunk/languages/befunge/befunge.pir (original)
+++ trunk/languages/befunge/befunge.pir Fri Jan 9 02:58:27 2009
@@ -74,6 +74,7 @@
if char == '^' goto FLOW_GO_NORTH
if char == 'v' goto FLOW_GO_SOUTH
if char == '<' goto FLOW_GO_WEST
+ if char == '?' goto FLOW_GO_AWAY
# flow control
if char == '`' goto FLOW_COMPARE
@@ -150,6 +151,9 @@
FLOW_END:
flow__end()
goto MOVE_PC
+ FLOW_GO_AWAY:
+ flow__go_away()
+ goto MOVE_PC
FLOW_GO_EAST:
flow__go_east()
goto MOVE_PC
Modified: trunk/languages/befunge/flow.pir
==============================================================================
--- trunk/languages/befunge/flow.pir (original)
+++ trunk/languages/befunge/flow.pir Fri Jan 9 02:58:27 2009
@@ -45,6 +45,23 @@
.end
+#
+# go away.
+# befunge stack unchanged.
+# delta <- one of N,S,E,W
+# no return value
+#
+.sub "flow__go_away"
+ $P0 = new 'Random'
+ $N0 = $P0
+ $N0 = $N0 * 4
+ $I0 = $N0
+ $P0 = get_global "status"
+ $P0["dir"] = $I0
+ set_global "status", $P0
+.end
+
+
# ** ifs & comparisons
#
@@ -154,18 +171,6 @@
_flow__flag_set(0)
.end
-=pod
-
-FLOW_GO_AWAY:
- save 4
- bsr MATHS_RAND
- restore I10
- set I2, I10
- save I2
- restore I2
- branch MOVE_PC
-
-=cut
# ** end