about summary refs log tree commit diff stats
path: root/html/081print.mu.html
diff options
context:
space:
mode:
Diffstat (limited to 'html/081print.mu.html')
-rw-r--r--html/081print.mu.html301
1 files changed, 139 insertions, 162 deletions
diff --git a/html/081print.mu.html b/html/081print.mu.html
index 19efbb1c..7bfdc7dc 100644
--- a/html/081print.mu.html
+++ b/html/081print.mu.html
@@ -48,13 +48,14 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   color:number
 ]
 
-<span class="muRecipe">recipe</span> new-fake-screen [
+<span class="muRecipe">recipe</span> new-fake-screen w:number, h:number<span class="muRecipe"> -&gt; </span>result:address:screen [
   <span class="Constant">local-scope</span>
-  result:address:screen<span class="Special"> &lt;- </span>new <span class="Constant">screen:type</span>
+  <span class="Constant">load-ingredients</span>
+  result<span class="Special"> &lt;- </span>new <span class="Constant">screen:type</span>
   width:address:number<span class="Special"> &lt;- </span>get-address *result, <span class="Constant">num-columns:offset</span>
-  *width<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  *width<span class="Special"> &lt;- </span>copy w
   height:address:number<span class="Special"> &lt;- </span>get-address *result, <span class="Constant">num-rows:offset</span>
-  *height<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  *height<span class="Special"> &lt;- </span>copy h
   row:address:number<span class="Special"> &lt;- </span>get-address *result, <span class="Constant">cursor-row:offset</span>
   *row<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
   column:address:number<span class="Special"> &lt;- </span>get-address *result, <span class="Constant">cursor-column:offset</span>
@@ -62,18 +63,17 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   bufsize:number<span class="Special"> &lt;- </span>multiply *width, *height
   buf:address:address:array:screen-cell<span class="Special"> &lt;- </span>get-address *result, <span class="Constant">data:offset</span>
   *buf<span class="Special"> &lt;- </span>new <span class="Constant">screen-cell:type</span>, bufsize
-  clear-screen result
-  <span class="muControl">reply</span> result
+  result<span class="Special"> &lt;- </span>clear-screen result
 ]
 
-<span class="muRecipe">recipe</span> clear-screen [
+<span class="muRecipe">recipe</span> clear-screen screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
+    <span class="muControl">break-unless</span> screen
     <span class="Comment"># clear fake screen</span>
-    buf:address:array:screen-cell<span class="Special"> &lt;- </span>get *sc, <span class="Constant">data:offset</span>
+    buf:address:array:screen-cell<span class="Special"> &lt;- </span>get *screen, <span class="Constant">data:offset</span>
     max:number<span class="Special"> &lt;- </span>length *buf
     i:number<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
     <span class="Delimiter">{</span>
@@ -88,32 +88,31 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
       <span class="muControl">loop</span>
     <span class="Delimiter">}</span>
     <span class="Comment"># reset cursor</span>
-    x:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-row:offset</span>
+    x:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-row:offset</span>
     *x<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-    x<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-column:offset</span>
+    x<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-column:offset</span>
     *x<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-    <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   clear-display
-  <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
 ]
 
-<span class="muRecipe">recipe</span> sync-screen [
+<span class="muRecipe">recipe</span> sync-screen screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  screen:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-if</span> sc
+    <span class="muControl">break-if</span> screen
     sync-display
   <span class="Delimiter">}</span>
   <span class="Comment"># do nothing for fake screens</span>
 ]
 
-<span class="muRecipe">recipe</span> fake-screen-is-empty? [
+<span class="muRecipe">recipe</span> fake-screen-is-empty? screen:address:screen<span class="muRecipe"> -&gt; </span>result:boolean [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
-  <span class="muControl">reply-unless</span> sc, <span class="Constant">1/true</span>
-  buf:address:array:screen-cell<span class="Special"> &lt;- </span>get *sc, <span class="Constant">data:offset</span>
+  <span class="Constant">load-ingredients</span>
+  <span class="muControl">reply-unless</span> screen, <span class="Constant">1/true</span>
+  buf:address:array:screen-cell<span class="Special"> &lt;- </span>get *screen, <span class="Constant">data:offset</span>
   i:number<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
   len:number<span class="Special"> &lt;- </span>length *buf
   <span class="Delimiter">{</span>
@@ -129,10 +128,9 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   <span class="muControl">reply</span> <span class="Constant">1/true</span>
 ]
 
-<span class="muRecipe">recipe</span> print-character [
+<span class="muRecipe">recipe</span> print screen:address:screen, c:character<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
-  c:character<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   color:number, color-found?:boolean<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
   <span class="Delimiter">{</span>
     <span class="Comment"># default color to white</span>
@@ -149,20 +147,20 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   <span class="Delimiter">{</span>
     <span class="Comment"># if x exists</span>
     <span class="Comment"># (handle special cases exactly like in the real screen)</span>
-    <span class="muControl">break-unless</span> sc
-    width:number<span class="Special"> &lt;- </span>get *sc, <span class="Constant">num-columns:offset</span>
-    height:number<span class="Special"> &lt;- </span>get *sc, <span class="Constant">num-rows:offset</span>
+    <span class="muControl">break-unless</span> screen
+    width:number<span class="Special"> &lt;- </span>get *screen, <span class="Constant">num-columns:offset</span>
+    height:number<span class="Special"> &lt;- </span>get *screen, <span class="Constant">num-rows:offset</span>
     <span class="Comment"># if cursor is out of bounds, silently exit</span>
-    row:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-row:offset</span>
+    row:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-row:offset</span>
     legal?:boolean<span class="Special"> &lt;- </span>greater-or-equal *row, <span class="Constant">0</span>
-    <span class="muControl">reply-unless</span> legal?, sc
+    <span class="muControl">reply-unless</span> legal?
     legal?<span class="Special"> &lt;- </span>lesser-than *row, height
-    <span class="muControl">reply-unless</span> legal?, sc
-    column:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-column:offset</span>
+    <span class="muControl">reply-unless</span> legal?
+    column:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-column:offset</span>
     legal?<span class="Special"> &lt;- </span>greater-or-equal *column, <span class="Constant">0</span>
-    <span class="muControl">reply-unless</span> legal?, sc
+    <span class="muControl">reply-unless</span> legal?
     legal?<span class="Special"> &lt;- </span>lesser-than *column, width
-    <span class="muControl">reply-unless</span> legal?, sc
+    <span class="muControl">reply-unless</span> legal?
     <span class="Comment"># special-case: newline</span>
     <span class="Delimiter">{</span>
       newline?:boolean<span class="Special"> &lt;- </span>equal c, <span class="Constant">10/newline</span>
@@ -176,12 +174,12 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
         *column<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
         *row<span class="Special"> &lt;- </span>add *row, <span class="Constant">1</span>
       <span class="Delimiter">}</span>
-      <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+      <span class="muControl">reply</span>
     <span class="Delimiter">}</span>
     <span class="Comment"># save character in fake screen</span>
     index:number<span class="Special"> &lt;- </span>multiply *row, width
     index<span class="Special"> &lt;- </span>add index, *column
-    buf:address:array:screen-cell<span class="Special"> &lt;- </span>get *sc, <span class="Constant">data:offset</span>
+    buf:address:array:screen-cell<span class="Special"> &lt;- </span>get *screen, <span class="Constant">data:offset</span>
     len:number<span class="Special"> &lt;- </span>length *buf
     <span class="Comment"># special-case: backspace</span>
     <span class="Delimiter">{</span>
@@ -200,7 +198,7 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
         cursor-color:address:number<span class="Special"> &lt;- </span>get-address *cursor, <span class="Constant">color:offset</span>
         *cursor-color<span class="Special"> &lt;- </span>copy <span class="Constant">7/white</span>
       <span class="Delimiter">}</span>
-      <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+      <span class="muControl">reply</span>
     <span class="Delimiter">}</span>
     cursor:address:screen-cell<span class="Special"> &lt;- </span>index-address *buf, index
     cursor-contents:address:character<span class="Special"> &lt;- </span>get-address *cursor, <span class="Constant">contents:offset</span>
@@ -214,17 +212,16 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
       <span class="muControl">break-if</span> at-right?
       *column<span class="Special"> &lt;- </span>add *column, <span class="Constant">1</span>
     <span class="Delimiter">}</span>
-    <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   print-character-to-display c, color, bg-color
-  <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
 ]
 
 <span class="muScenario">scenario</span> print-character-at-top-left [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">3/width</span>, <span class="Constant">2/height</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
     <span class="Constant">2</span>:address:array:screen-cell<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">data:offset</span>
     <span class="Constant">3</span>:array:screen-cell<span class="Special"> &lt;- </span>copy *<span class="Constant">2</span>:address:array:screen-cell
   ]
@@ -236,10 +233,10 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   ]
 ]
 
-<span class="muScenario">scenario</span> print-character-color [
+<span class="muScenario">scenario</span> print-character-in-color [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">3/width</span>, <span class="Constant">2/height</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">97/a</span>, <span class="Constant">1/red</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">97/a</span>, <span class="Constant">1/red</span>
     <span class="Constant">2</span>:address:array:screen-cell<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">data:offset</span>
     <span class="Constant">3</span>:array:screen-cell<span class="Special"> &lt;- </span>copy *<span class="Constant">2</span>:address:array:screen-cell
   ]
@@ -254,8 +251,8 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
 <span class="muScenario">scenario</span> print-backspace-character [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">3/width</span>, <span class="Constant">2/height</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">8</span>  <span class="Comment"># backspace</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">8</span>  <span class="Comment"># backspace</span>
     <span class="Constant">2</span>:number<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">cursor-column:offset</span>
     <span class="Constant">3</span>:address:array:screen-cell<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">data:offset</span>
     <span class="Constant">4</span>:array:screen-cell<span class="Special"> &lt;- </span>copy *<span class="Constant">3</span>:address:array:screen-cell
@@ -272,9 +269,9 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
 <span class="muScenario">scenario</span> print-extra-backspace-character [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">3/width</span>, <span class="Constant">2/height</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">8</span>  <span class="Comment"># backspace</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">8</span>  <span class="Comment"># backspace</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">8</span>  <span class="Comment"># backspace</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">8</span>  <span class="Comment"># backspace</span>
     <span class="Constant">2</span>:number<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">cursor-column:offset</span>
     <span class="Constant">3</span>:address:array:screen-cell<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">data:offset</span>
     <span class="Constant">4</span>:array:screen-cell<span class="Special"> &lt;- </span>copy *<span class="Constant">3</span>:address:array:screen-cell
@@ -288,12 +285,12 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   ]
 ]
 
-<span class="muScenario">scenario</span> print-at-right-margin [
+<span class="muScenario">scenario</span> print-character-at-right-margin [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">2/width</span>, <span class="Constant">2/height</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
     <span class="Constant">2</span>:number<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">cursor-column:offset</span>
     <span class="Constant">3</span>:address:array:screen-cell<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">data:offset</span>
     <span class="Constant">4</span>:array:screen-cell<span class="Special"> &lt;- </span>copy *<span class="Constant">3</span>:address:array:screen-cell
@@ -312,8 +309,8 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
 <span class="muScenario">scenario</span> print-newline-character [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">3/width</span>, <span class="Constant">2/height</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
     <span class="Constant">2</span>:number<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">cursor-row:offset</span>
     <span class="Constant">3</span>:number<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">cursor-column:offset</span>
     <span class="Constant">4</span>:address:array:screen-cell<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">data:offset</span>
@@ -332,9 +329,9 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
 <span class="muScenario">scenario</span> print-newline-at-bottom-line [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">3/width</span>, <span class="Constant">2/height</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
     <span class="Constant">2</span>:number<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">cursor-row:offset</span>
     <span class="Constant">3</span>:number<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">cursor-column:offset</span>
   ]
@@ -344,15 +341,15 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   ]
 ]
 
-<span class="muScenario">scenario</span> print-at-bottom-right [
+<span class="muScenario">scenario</span> print-character-at-bottom-right [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">2/width</span>, <span class="Constant">2/height</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">100</span>  <span class="Comment"># 'd'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">98</span>  <span class="Comment"># 'b'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">99</span>  <span class="Comment"># 'c'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">10/newline</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">100</span>  <span class="Comment"># 'd'</span>
     <span class="Constant">2</span>:number<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">cursor-row:offset</span>
     <span class="Constant">3</span>:number<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">cursor-column:offset</span>
     <span class="Constant">4</span>:address:array:screen-cell<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">data:offset</span>
@@ -374,70 +371,65 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   ]
 ]
 
-<span class="muRecipe">recipe</span> clear-line [
+<span class="muRecipe">recipe</span> clear-line screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists, clear line in fake screen</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
-    width:number<span class="Special"> &lt;- </span>get *sc, <span class="Constant">num-columns:offset</span>
-    column:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-column:offset</span>
+    <span class="muControl">break-unless</span> screen
+    width:number<span class="Special"> &lt;- </span>get *screen, <span class="Constant">num-columns:offset</span>
+    column:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-column:offset</span>
     original-column:number<span class="Special"> &lt;- </span>copy *column
     <span class="Comment"># space over the entire line</span>
     <span class="Delimiter">{</span>
       right:number<span class="Special"> &lt;- </span>subtract width, <span class="Constant">1</span>
       done?:boolean<span class="Special"> &lt;- </span>greater-or-equal *column, right
       <span class="muControl">break-if</span> done?
-      print-character sc, <span class="Constant">[ ]</span>  <span class="Comment"># implicitly updates 'column'</span>
+      print screen, <span class="Constant">[ ]</span>  <span class="Comment"># implicitly updates 'column'</span>
       <span class="muControl">loop</span>
     <span class="Delimiter">}</span>
     <span class="Comment"># now back to where the cursor was</span>
     *column<span class="Special"> &lt;- </span>copy original-column
-    <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   clear-line-on-display
-  <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
 ]
 
-<span class="muRecipe">recipe</span> cursor-position [
+<span class="muRecipe">recipe</span> cursor-position screen:address:screen<span class="muRecipe"> -&gt; </span>row:number, column:number [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists, lookup cursor in fake screen</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
-    row:number<span class="Special"> &lt;- </span>get *sc, <span class="Constant">cursor-row:offset</span>
-    column:number<span class="Special"> &lt;- </span>get *sc, <span class="Constant">cursor-column:offset</span>
-    <span class="muControl">reply</span> row, column, sc/same-as-ingredient:<span class="Constant">0</span>
+    <span class="muControl">break-unless</span> screen
+    row:number<span class="Special"> &lt;- </span>get *screen, <span class="Constant">cursor-row:offset</span>
+    column:number<span class="Special"> &lt;- </span>get *screen, <span class="Constant">cursor-column:offset</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   row, column<span class="Special"> &lt;- </span>cursor-position-on-display
-  <span class="muControl">reply</span> row, column, sc/same-as-ingredient:<span class="Constant">0</span>
 ]
 
-<span class="muRecipe">recipe</span> move-cursor [
+<span class="muRecipe">recipe</span> move-cursor screen:address:screen, new-row:number, new-column:number<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
-  new-row:number<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
-  new-column:number<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists, move cursor in fake screen</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
-    row:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-row:offset</span>
+    <span class="muControl">break-unless</span> screen
+    row:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-row:offset</span>
     *row<span class="Special"> &lt;- </span>copy new-row
-    column:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-column:offset</span>
+    column:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-column:offset</span>
     *column<span class="Special"> &lt;- </span>copy new-column
-    <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   move-cursor-on-display new-row, new-column
-  <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
 ]
 
 <span class="muScenario">scenario</span> clear-line-erases-printed-characters [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">3/width</span>, <span class="Constant">2/height</span>
     <span class="Comment"># print a character</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-character <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">97</span>  <span class="Comment"># 'a'</span>
     <span class="Comment"># move cursor to start of line</span>
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>move-cursor <span class="Constant">1</span>:address:screen, <span class="Constant">0/row</span>, <span class="Constant">0/column</span>
     <span class="Comment"># clear line</span>
@@ -463,193 +455,180 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   ]
 ]
 
-<span class="muRecipe">recipe</span> cursor-down [
+<span class="muRecipe">recipe</span> cursor-down screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists, move cursor in fake screen</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
+    <span class="muControl">break-unless</span> screen
     <span class="Delimiter">{</span>
       <span class="Comment"># increment row unless it's already all the way down</span>
-      height:number<span class="Special"> &lt;- </span>get *sc, <span class="Constant">num-rows:offset</span>
-      row:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-row:offset</span>
+      height:number<span class="Special"> &lt;- </span>get *screen, <span class="Constant">num-rows:offset</span>
+      row:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-row:offset</span>
       max:number<span class="Special"> &lt;- </span>subtract height, <span class="Constant">1</span>
       at-bottom?:boolean<span class="Special"> &lt;- </span>greater-or-equal *row, max
       <span class="muControl">break-if</span> at-bottom?
       *row<span class="Special"> &lt;- </span>add *row, <span class="Constant">1</span>
     <span class="Delimiter">}</span>
-    <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   move-cursor-down-on-display
-  <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
 ]
 
-<span class="muRecipe">recipe</span> cursor-up [
+<span class="muRecipe">recipe</span> cursor-up screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists, move cursor in fake screen</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
+    <span class="muControl">break-unless</span> screen
     <span class="Delimiter">{</span>
       <span class="Comment"># decrement row unless it's already all the way up</span>
-      row:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-row:offset</span>
+      row:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-row:offset</span>
       at-top?:boolean<span class="Special"> &lt;- </span>lesser-or-equal *row, <span class="Constant">0</span>
       <span class="muControl">break-if</span> at-top?
       *row<span class="Special"> &lt;- </span>subtract *row, <span class="Constant">1</span>
     <span class="Delimiter">}</span>
-    <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   move-cursor-up-on-display
-  <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
 ]
 
-<span class="muRecipe">recipe</span> cursor-right [
+<span class="muRecipe">recipe</span> cursor-right screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists, move cursor in fake screen</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
+    <span class="muControl">break-unless</span> screen
     <span class="Delimiter">{</span>
       <span class="Comment"># increment column unless it's already all the way to the right</span>
-      width:number<span class="Special"> &lt;- </span>get *sc, <span class="Constant">num-columns:offset</span>
-      column:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-column:offset</span>
+      width:number<span class="Special"> &lt;- </span>get *screen, <span class="Constant">num-columns:offset</span>
+      column:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-column:offset</span>
       max:number<span class="Special"> &lt;- </span>subtract width, <span class="Constant">1</span>
       at-bottom?:boolean<span class="Special"> &lt;- </span>greater-or-equal *column, max
       <span class="muControl">break-if</span> at-bottom?
       *column<span class="Special"> &lt;- </span>add *column, <span class="Constant">1</span>
     <span class="Delimiter">}</span>
-    <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   move-cursor-right-on-display
-  <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
 ]
 
-<span class="muRecipe">recipe</span> cursor-left [
+<span class="muRecipe">recipe</span> cursor-left screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists, move cursor in fake screen</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
+    <span class="muControl">break-unless</span> screen
     <span class="Delimiter">{</span>
       <span class="Comment"># decrement column unless it's already all the way to the left</span>
-      column:address:number<span class="Special"> &lt;- </span>get-address *sc, <span class="Constant">cursor-column:offset</span>
+      column:address:number<span class="Special"> &lt;- </span>get-address *screen, <span class="Constant">cursor-column:offset</span>
       at-top?:boolean<span class="Special"> &lt;- </span>lesser-or-equal *column, <span class="Constant">0</span>
       <span class="muControl">break-if</span> at-top?
       *column<span class="Special"> &lt;- </span>subtract *column, <span class="Constant">1</span>
     <span class="Delimiter">}</span>
-    <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   move-cursor-left-on-display
-  <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
 ]
 
-<span class="muRecipe">recipe</span> cursor-to-start-of-line [
+<span class="muRecipe">recipe</span> cursor-to-start-of-line screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
-  row:number, _, sc<span class="Special"> &lt;- </span>cursor-position sc
+  <span class="Constant">load-ingredients</span>
+  row:number<span class="Special"> &lt;- </span>cursor-position screen
   column:number<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>
-  sc<span class="Special"> &lt;- </span>move-cursor sc, row, column
-  <span class="muControl">reply</span> sc/same-as-ingredient:<span class="Constant">0</span>
+  screen<span class="Special"> &lt;- </span>move-cursor screen, row, column
 ]
 
-<span class="muRecipe">recipe</span> cursor-to-next-line [
+<span class="muRecipe">recipe</span> cursor-to-next-line screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  screen:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   screen<span class="Special"> &lt;- </span>cursor-down screen
   screen<span class="Special"> &lt;- </span>cursor-to-start-of-line screen
-  <span class="muControl">reply</span> screen/same-as-ingredient:<span class="Constant">0</span>
 ]
 
-<span class="muRecipe">recipe</span> screen-width [
+<span class="muRecipe">recipe</span> screen-width screen:address:screen<span class="muRecipe"> -&gt; </span>width:number [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists, move cursor in fake screen</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
-    width:number<span class="Special"> &lt;- </span>get *sc, <span class="Constant">num-columns:offset</span>
-    <span class="muControl">reply</span> width
+    <span class="muControl">break-unless</span> screen
+    width<span class="Special"> &lt;- </span>get *screen, <span class="Constant">num-columns:offset</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
-  width:number<span class="Special"> &lt;- </span>display-width
-  <span class="muControl">reply</span> width
+  width<span class="Special"> &lt;- </span>display-width
 ]
 
-<span class="muRecipe">recipe</span> screen-height [
+<span class="muRecipe">recipe</span> screen-height screen:address:screen<span class="muRecipe"> -&gt; </span>height:number [
   <span class="Constant">local-scope</span>
-  sc:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists, move cursor in fake screen</span>
   <span class="Delimiter">{</span>
-    <span class="muControl">break-unless</span> sc
-    height:number<span class="Special"> &lt;- </span>get *sc, <span class="Constant">num-rows:offset</span>
-    <span class="muControl">reply</span> height
+    <span class="muControl">break-unless</span> screen
+    height<span class="Special"> &lt;- </span>get *screen, <span class="Constant">num-rows:offset</span>
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
-  height:number<span class="Special"> &lt;- </span>display-height
-  <span class="muControl">reply</span> height
+  height<span class="Special"> &lt;- </span>display-height
 ]
 
-<span class="muRecipe">recipe</span> hide-cursor [
+<span class="muRecipe">recipe</span> hide-cursor screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  screen:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists (not real display), do nothing</span>
   <span class="Delimiter">{</span>
     <span class="muControl">break-unless</span> screen
-    <span class="muControl">reply</span> screen
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   hide-cursor-on-display
-  <span class="muControl">reply</span> screen
 ]
 
-<span class="muRecipe">recipe</span> show-cursor [
+<span class="muRecipe">recipe</span> show-cursor screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  screen:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists (not real display), do nothing</span>
   <span class="Delimiter">{</span>
     <span class="muControl">break-unless</span> screen
-    <span class="muControl">reply</span> screen
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   show-cursor-on-display
-  <span class="muControl">reply</span> screen
 ]
 
-<span class="muRecipe">recipe</span> hide-screen [
+<span class="muRecipe">recipe</span> hide-screen screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  screen:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists (not real display), do nothing</span>
   <span class="Comment"># todo: help test this</span>
   <span class="Delimiter">{</span>
     <span class="muControl">break-unless</span> screen
-    <span class="muControl">reply</span> screen
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   hide-display
-  <span class="muControl">reply</span> screen
 ]
 
-<span class="muRecipe">recipe</span> show-screen [
+<span class="muRecipe">recipe</span> show-screen screen:address:screen<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  screen:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   <span class="Comment"># if x exists (not real display), do nothing</span>
   <span class="Comment"># todo: help test this</span>
   <span class="Delimiter">{</span>
     <span class="muControl">break-unless</span> screen
-    <span class="muControl">reply</span> screen
+    <span class="muControl">reply</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># otherwise, real screen</span>
   show-display
-  <span class="muControl">reply</span> screen
 ]
 
-<span class="muRecipe">recipe</span> print-string [
+<span class="muRecipe">recipe</span> print screen:address:screen, s:address:array:character<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
-  screen:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
-  s:address:array:character<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
+  <span class="Constant">load-ingredients</span>
   color:number, color-found?:boolean<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
   <span class="Delimiter">{</span>
     <span class="Comment"># default color to white</span>
@@ -668,18 +647,17 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
     done?:boolean<span class="Special"> &lt;- </span>greater-or-equal i, len
     <span class="muControl">break-if</span> done?
     c:character<span class="Special"> &lt;- </span>index *s, i
-    print-character screen, c, color, bg-color
+    print screen, c, color, bg-color
     i<span class="Special"> &lt;- </span>add i, <span class="Constant">1</span>
     <span class="muControl">loop</span>
   <span class="Delimiter">}</span>
-  <span class="muControl">reply</span> screen/same-as-ingredient:<span class="Constant">0</span>
 ]
 
-<span class="muScenario">scenario</span> print-string-stops-at-right-margin [
+<span class="muScenario">scenario</span> print-text-stops-at-right-margin [
   run [
     <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>new-fake-screen <span class="Constant">3/width</span>, <span class="Constant">2/height</span>
     <span class="Constant">2</span>:address:array:character<span class="Special"> &lt;- </span>new <span class="Constant">[abcd]</span>
-    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print-string <span class="Constant">1</span>:address:screen, <span class="Constant">2</span>:address:array:character
+    <span class="Constant">1</span>:address:screen<span class="Special"> &lt;- </span>print <span class="Constant">1</span>:address:screen, <span class="Constant">2</span>:address:array:character
     <span class="Constant">3</span>:address:array:screen-cell<span class="Special"> &lt;- </span>get *<span class="Constant">1</span>:address:screen, <span class="Constant">data:offset</span>
     <span class="Constant">4</span>:array:screen-cell<span class="Special"> &lt;- </span>copy *<span class="Constant">3</span>:address:array:screen-cell
   ]
@@ -695,7 +673,7 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
   ]
 ]
 
-<span class="muRecipe">recipe</span> print-integer [
+<span class="muRecipe">recipe</span> print-integer screen:address:screen, n:number<span class="muRecipe"> -&gt; </span>screen:address:screen [
   <span class="Constant">local-scope</span>
   screen:address:screen<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
   n:number<span class="Special"> &lt;- </span><span class="Constant">next-ingredient</span>
@@ -712,9 +690,8 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
     bg-color<span class="Special"> &lt;- </span>copy <span class="Constant">0/black</span>
   <span class="Delimiter">}</span>
   <span class="Comment"># todo: other bases besides decimal</span>
-  s:address:array:character<span class="Special"> &lt;- </span>integer-to-decimal-string n
-  print-string screen, s, color, bg-color
-  <span class="muControl">reply</span> screen/same-as-ingredient:<span class="Constant">0</span>
+  s:address:array:character<span class="Special"> &lt;- </span>to-text n
+  screen<span class="Special"> &lt;- </span>print screen, s, color, bg-color
 ]
 </pre>
 </body>