about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-07-17 14:57:44 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-07-17 14:57:44 -0700
commita2a6e35ef5fd56518d6f7a719aab616a7751a551 (patch)
tree568109f3e8b191fd742d1c82f42f9b0c0c5430c9
parent52b870126fb4b90bbe0a30df4a65525bf5c59463 (diff)
downloadmu-a2a6e35ef5fd56518d6f7a719aab616a7751a551.tar.gz
1802 - cleanup
-rw-r--r--029debug.cc1
-rw-r--r--071print.mu54
-rw-r--r--081run_interactive.cc10
-rw-r--r--edit.mu76
4 files changed, 49 insertions, 92 deletions
diff --git a/029debug.cc b/029debug.cc
index 90a1159e..e185a314 100644
--- a/029debug.cc
+++ b/029debug.cc
@@ -115,6 +115,7 @@ case _DUMP: {
   break;
 }
 
+//: Helper for debugging: grab an address and then dump its value.
 :(before "End Globals")
 long long int foo = -1;
 :(before "End Primitive Recipe Declarations")
diff --git a/071print.mu b/071print.mu
index c68f1e55..85185405 100644
--- a/071print.mu
+++ b/071print.mu
@@ -91,8 +91,6 @@ recipe fake-screen-is-clear? [
 
 recipe print-character [
   local-scope
-#?   $print [--- #? 1
-#? ] #? 1
   x:address:screen <- next-ingredient
   c:character <- next-ingredient
   color:number, color-found?:boolean <- next-ingredient
@@ -107,8 +105,6 @@ recipe print-character [
     break-if bg-color-found?:boolean
     bg-color:number <- copy 0:literal/black
   }
-#?   $print [eee ] #? 1
-#?   $foo #? 1
 #?   trace [app], [print character] #? 1
   {
     # if x exists
@@ -126,8 +122,6 @@ recipe print-character [
 #?     reply-unless legal?:boolean, x:address:screen
 #?     legal?:boolean <- lesser-than column:address:number/deref, width:number
 #?     reply-unless legal?:boolean, x:address:screen
-#?   $print [fff ] #? 1
-#?   $foo #? 1
     # special-case: newline
     {
       newline?:boolean <- equal c:character, 10:literal/newline
@@ -146,19 +140,14 @@ recipe print-character [
       reply x:address:screen/same-as-ingredient:0
     }
     # save character in fake screen
-#?     $print [ggg ] #? 1
-#?     $foo #? 1
     index:number <- multiply row:address:number/deref, width:number
     index:number <- add index:number, column:address:number/deref
     buf:address:array:screen-cell <- get x:address:screen/deref, data:offset
     len:number <- length buf:address:array:screen-cell/deref
-#?     $print row:address:number/deref, [, ], column:address:number/deref, [ vs ], screen-height:number, [, ], screen-width:number, [ length ], len:number, [ 
-#? ] #? 1
     # special-case: backspace
     {
       backspace?:boolean <- equal c:character, 8:literal
       break-unless backspace?:boolean
-#?       $print [$$$]  # shouldn't come here #? 1
       {
         # unless cursor is already at left margin
         at-left?:boolean <- lesser-or-equal column:address:number/deref, 0:literal
@@ -174,51 +163,20 @@ recipe print-character [
       }
       reply x:address:screen/same-as-ingredient:0
     }
-#?     $print [hhh ] #? 1
-#?     $foo #? 1
 #?     $print [saving character ], c:character, [ to fake screen ], cursor:address/screen, [ 
 #? ] #? 1
     cursor:address:screen-cell <- index-address buf:address:array:screen-cell/deref, index:number
-#?     $dump cursor:address:screen-cell #? 1
-#?     $print [iii ] #? 1
-#?     $foo #? 1
     cursor-contents:address:character <- get-address cursor:address:screen-cell/deref, contents:offset
-#?     $dump cursor-contents:address:character #? 1
-#?     $print [jjj ] #? 1
-#?     $foo #? 1
     cursor-color:address:number <- get-address cursor:address:screen-cell/deref, color:offset
-#?     $print [kkk ] #? 2
-#?     $foo #? 2
-#?     $dump cursor-color:address:character #? 1
     cursor-contents:address:character/deref <- copy c:character
-#?     $print [lll ] #? 2
-#?     $foo #? 2
-#?     $dump x:address:screen #? 1
-#?     $dump buf:address:array:screen-cell #? 1
-#?     $dump height:number #? 1
-#?     $dump width:number #? 1
-#?     $dump row:address:number/deref #? 1
-#?     $dump column:address:number/deref #? 1
-#?     $dump index:number #? 1
-#?     $dump len:number #? 1
     cursor-color:address:number/deref <- copy color:number
-#?     $print [mmm ] #? 2
-#?     $foo #? 2
     # increment column unless it's already all the way to the right
     {
       right:number <- subtract width:number, 1:literal
-#?     $print [nnn ] #? 1
-#?     $foo #? 1
       at-right?:boolean <- greater-or-equal column:address:number/deref, right:number
-#?     $print [ooo ] #? 1
-#?     $foo #? 1
       break-if at-right?:boolean
-#?     $print [ppp ] #? 1
-#?     $foo #? 1
       column:address:number/deref <- add column:address:number/deref, 1:literal
     }
-#?     $print [qqq ] #? 1
-#?     $foo #? 1
     reply x:address:screen/same-as-ingredient:0
   }
   # otherwise, real screen
@@ -430,24 +388,12 @@ recipe move-cursor [
   x:address:screen <- next-ingredient
   new-row:number <- next-ingredient
   new-column:number <- next-ingredient
-#?   screen-width:number <- screen-width x:address:screen
-#?   screen-height:number <- screen-height x:address:screen
   # if x exists, move cursor in fake screen
   {
     break-unless x:address:screen
     row:address:number <- get-address x:address:screen/deref, cursor-row:offset
-#?     $print row:address:number/deref, [ vs ], screen-height:number, [ 
-#? ] #? 1
-#?     legal?:boolean <- greater-or-equal row:address:number/deref, 0:literal
-#?     assert legal?:boolean, [row too small in move-cursor]
-#?     legal?:boolean <- lesser-than row:address:number/deref, screen-height:number
-#?     assert legal?:boolean, [row too large in move-cursor]
     row:address:number/deref <- copy new-row:number
     column:address:number <- get-address x:address:screen/deref, cursor-column:offset
-#?     legal?:boolean <- greater-or-equal column:address:number/deref, 0:literal
-#?     assert legal?:boolean, [column too small in move-cursor]
-#?     legal?:boolean <- lesser-than column:address:number/deref, screen-width:number
-#?     assert legal?:boolean, [column too large in move-cursor]
     column:address:number/deref <- copy new-column:number
     reply x:address:screen/same-as-ingredient:0
   }
diff --git a/081run_interactive.cc b/081run_interactive.cc
index f54a73e3..d88885d7 100644
--- a/081run_interactive.cc
+++ b/081run_interactive.cc
@@ -55,7 +55,7 @@ bool run_interactive(long long int address) {
   if (Recipe_ordinal.find("interactive") == Recipe_ordinal.end())
     Recipe_ordinal["interactive"] = Next_recipe_ordinal++;
   Old_screen = Memory[SCREEN];
-  cerr << "save screen: " << Old_screen << '\n'; //? 1
+//?   cerr << "save screen: " << Old_screen << '\n'; //? 2
   // try to sandbox the run as best you can
   // todo: test this
   if (!Current_scenario) {
@@ -170,7 +170,7 @@ if (current_instruction().operation == RUN_INTERACTIVE && !current_instruction()
   }
   if (SIZE(current_instruction().products) >= 3) {
     vector<double> screen;
-    cerr << "returning screen " << Memory[SCREEN] << " to " << current_instruction().products.at(2).to_string() << " value " << current_instruction().products.at(2).value << '\n';
+//?     cerr << "returning screen " << Memory[SCREEN] << " to " << current_instruction().products.at(2).to_string() << " value " << current_instruction().products.at(2).value << '\n'; //? 1
     screen.push_back(Memory[SCREEN]);
     write_memory(current_instruction().products.at(2), screen);
   }
@@ -180,12 +180,8 @@ if (current_instruction().operation == RUN_INTERACTIVE && !current_instruction()
 //: however, we need what was on the stack to decide whether to clean up
 :(after "Starting Reply")
 bool must_clean_up_interactive = (current_recipe_name() == "interactive");
-//? cerr << "reply: " << Memory[SCREEN] << '\n'; //? 1
-//? cerr << "reply2: " << Name[Recipe_ordinal["render-sandboxes"]]["screen"] << '\n'; //? 1
 :(after "Falling Through End Of Recipe")
 bool must_clean_up_interactive = (current_recipe_name() == "interactive");
-//? cerr << "pop: " << Memory[SCREEN] << '\n'; //? 1
-//? cerr << "pop2: " << Name[Recipe_ordinal["render-sandboxes"]]["screen"] << '\n'; //? 1
 :(before "End Reply")
 if (must_clean_up_interactive) clean_up_interactive();
 :(before "Complete Call Fallthrough")
@@ -199,7 +195,7 @@ void clean_up_interactive() {
     delete Trace_stream;
     Trace_stream = NULL;
   }
-  cerr << "restore screen: " << Memory[SCREEN] << " to " << Old_screen << '\n';
+//?   cerr << "restore screen: " << Memory[SCREEN] << " to " << Old_screen << '\n'; //? 1
   Memory[SCREEN] = Old_screen;
   Old_screen = 0;
 }
diff --git a/edit.mu b/edit.mu
index e57461c3..94e4c7cc 100644
--- a/edit.mu
+++ b/edit.mu
@@ -3,13 +3,52 @@
 recipe main [
   local-scope
   open-console
-  initial-recipe:address:array:character <- new [recipe new-add [
-  x:number <- next-ingredient
-  y:number <- next-ingredient
-  z:number <- add x:number, y:number
-  reply z:number
+  initial-recipe:address:array:character <- new [ 
+# return true if a list of numbers contains the pattern 1, 5, 3
+recipe check [
+  default-space:address:array:location <- new location:type, 30:literal
+  state:number <- copy 0:literal
+  {
+    +next-number
+    curr:number, found?:boolean <- next-ingredient
+    break-unless found?:boolean
+    # if curr is 1, state = 1
+    {
+      state1:boolean <- equal curr:number, 1:literal
+      break-unless state1:boolean
+      state:number <- copy 1:literal
+      loop +next-number:label
+    }
+    # if state is 1 and curr is 5, state = 2
+    {
+      state-is-1?:boolean <- equal state:number, 1:literal
+      break-unless state-is-1?:boolean
+      state2:boolean <- equal curr:number, 5:literal
+      break-unless state2:boolean
+      state:number <- copy 2:literal
+      loop +next-number:label
+    }
+    # if state is 2 and curr is 3, return true
+    {
+      state-is-2?:boolean <- equal state:number, 2:literal
+      break-unless state-is-2?:boolean
+      state3:boolean <- equal curr:number, 3:literal
+      break-unless state3:boolean
+      reply 1:literal/found
+    }
+    # otherwise reset state
+    #state:number <- copy 0:literal
+    loop
+  }
+  reply 0:literal/not-found
 ]]
-  initial-sandbox:address:array:character <- new [print-character screen:address, 97]
+#?   initial-recipe:address:array:character <- new [recipe new-add [
+#?   x:number <- next-ingredient
+#?   y:number <- next-ingredient
+#?   z:number <- add x:number, y:number
+#?   reply z:number
+#? ]]
+  initial-sandbox:address:array:character <- new []
   env:address:programming-environment-data <- new-programming-environment 0:literal/screen, initial-recipe:address:array:character, initial-sandbox:address:array:character
   event-loop 0:literal/screen, 0:literal/console, env:address:programming-environment-data
 ]
@@ -344,7 +383,6 @@ recipe render-screen [
   row:number <- next-ingredient
   row:number <- add row:number, 1:literal
   reply-unless s:address:screen, row:number/same-as-ingredient:4, screen:address/same-as-ingredient:0
-#?   $start-tracing #? 1
   # print 'screen:'
   column:number <- copy left:number
   move-cursor screen:address, row:number, column:number
@@ -368,7 +406,6 @@ recipe render-screen [
     done?:boolean <- greater-or-equal row:number, screen-height:number
     break-if done?:boolean
     column:number <- copy left:number
-#?     $dump row:number #? 1
     move-cursor screen:address, row:number, column:number
     # initial leader for each row: two spaces and a '.'
     print-character screen:address, 32:literal/space, 245:literal/grey
@@ -1112,7 +1149,6 @@ recipe render-sandboxes [
   screen-height:number <- screen-height screen:address:screen
   at-bottom?:boolean <- greater-or-equal row:number screen-height:number
   reply-if at-bottom?:boolean, row:number/same-as-ingredient:4, screen:address:screen/same-as-ingredient:0
-#?   $dump row:number #? 1
   # render sandbox contents
   sandbox-data:address:array:character <- get sandbox:address:sandbox-data/deref, data:offset
   row:number, screen:address:screen <- render-string screen:address:screen, sandbox-data:address:array:character, left:number, right:number, 7:literal/white, row:number
@@ -1131,7 +1167,6 @@ recipe render-sandboxes [
   # render sandbox screen if necessary
   at-bottom?:boolean <- greater-or-equal row:number screen-height:number
 #?   reply-if at-bottom?:boolean, row:number/same-as-ingredient:4, screen:address:screen/same-as-ingredient:0
-#?   $dump row:number #? 1
   {
     empty-screen?:boolean <- fake-screen-is-clear? sandbox-screen:address:screen
     break-if empty-screen?:boolean
@@ -1139,19 +1174,8 @@ recipe render-sandboxes [
   }
   at-bottom?:boolean <- greater-or-equal row:number screen-height:number
 #?   reply-if at-bottom?:boolean, row:number/same-as-ingredient:4, screen:address:screen/same-as-ingredient:0
-#?   $dump row:number #? 1
   # draw solid line after sandbox
-#?   $print [aaa ] #? 1
-#?   $dump screen:address:screen #? 1
-#?   $dump right:number
-#?   $foo screen:address:screen #? 1
-#?   xxx:address:array:screen-cell <- get screen:address:screen/deref, data:offset
-#?   $dump xxx:address:array:screen-cell
-#?   yyy:number <- length xxx:address:array:screen-cell/deref
-#?   $dump yyy:number
   draw-horizontal screen:address:screen, row:number, left:number, right:number, 9473:literal/horizontal-double
-#?   $print [zzz ] #? 1
-#?   $dump screen:address:screen #? 1
   # draw next sandbox
   next-sandbox:address:sandbox-data <- get sandbox:address:sandbox-data/deref, next-sandbox:offset
   row:number, screen:address:screen <- render-sandboxes screen:address:screen, next-sandbox:address:sandbox-data, left:number, right:number, row:number
@@ -2939,22 +2963,12 @@ recipe draw-horizontal [
     break-if bg-color-found?:boolean
     bg-color:number <- copy 0:literal/black
   }
-#?   $print [bbb ], 5155:number/raw, [  #? 1
-#? ] #? 1
   move-cursor screen:address, row:number, x:number
   {
-#?   $print [ccc ], 5155:number/raw, [  #? 1
-#? ] #? 1
     continue?:boolean <- lesser-or-equal x:number, right:number  # right is inclusive, to match editor-data semantics
     break-unless continue?:boolean
-#?   $print [ddd ], 5155:number/raw, [  #? 1
-#? ] #? 1
     print-character screen:address, style:character, color:number, bg-color:number
-#?   $print [xxx ], 5155:number/raw, [  #? 1
-#? ] #? 1
     x:number <- add x:number, 1:literal
-#?   $print [yyy ], 5155:number/raw, [  #? 1
-#? ] #? 1
     loop
   }
 ]