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

Reply via email to