about summary refs log tree commit diff stats
path: root/sandbox/004-programming-environment.mu
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/004-programming-environment.mu')
-rw-r--r--sandbox/004-programming-environment.mu66
1 files changed, 20 insertions, 46 deletions
diff --git a/sandbox/004-programming-environment.mu b/sandbox/004-programming-environment.mu
index a405c173..353502fe 100644
--- a/sandbox/004-programming-environment.mu
+++ b/sandbox/004-programming-environment.mu
@@ -19,14 +19,13 @@ container programming-environment-data [
   current-sandbox:address:editor-data
 ]
 
-recipe new-programming-environment [
+recipe new-programming-environment screen:address:screen, initial-sandbox-contents:address:array:character -> result:address:programming-environment-data [
   local-scope
-  screen:address:screen <- next-ingredient
-  initial-sandbox-contents:address:array:character <- next-ingredient
+  load-ingredients
   width:number <- screen-width screen
   height:number <- screen-height screen
   # top menu
-  result:address:programming-environment-data <- new programming-environment-data:type
+  result <- new programming-environment-data:type
   draw-horizontal screen, 0, 0/left, width, 32/space, 0/black, 238/grey
   button-start:number <- subtract width, 20
   button-on-screen?:boolean <- greater-or-equal button-start, 0
@@ -37,15 +36,11 @@ recipe new-programming-environment [
   # sandbox editor
   current-sandbox:address:address:editor-data <- get-address *result, current-sandbox:offset
   *current-sandbox <- new-editor initial-sandbox-contents, screen, 0, width/right
-  +programming-environment-initialization
-  reply result
 ]
 
-recipe event-loop [
+recipe event-loop screen:address:screen, console:address:console, env:address:programming-environment-data [
   local-scope
-  screen:address:screen <- next-ingredient
-  console:address:console <- next-ingredient
-  env:address:programming-environment-data <- next-ingredient
+  load-ingredients
   current-sandbox:address:editor-data <- get *env, current-sandbox:offset
   # if we fall behind we'll stop updating the screen, but then we have to
   # render the entire screen when we catch up.
@@ -140,10 +135,9 @@ recipe event-loop [
   }
 ]
 
-recipe resize [
+recipe resize screen:address:screen, env:address:programming-environment-data -> env:address:programming-environment-data [
   local-scope
-  screen:address:screen <- next-ingredient
-  env:address:programming-environment-data <- next-ingredient
+  load-ingredients
   clear-screen screen  # update screen dimensions
   width:number <- screen-width screen
   # update sandbox editor
@@ -155,13 +149,11 @@ recipe resize [
   *cursor-row <- copy 1
   cursor-column:address:number <- get-address *current-sandbox, cursor-column:offset
   *cursor-column <- copy 0
-  reply env/same-as-ingredient:1
 ]
 
-recipe render-all [
+recipe render-all screen:address:screen, env:address:programming-environment-data -> screen:address:screen [
   local-scope
-  screen:address:screen <- next-ingredient
-  env:address:programming-environment-data <- next-ingredient
+  load-ingredients
   trace 10, [app], [render all]
   hide-screen screen
   # top menu
@@ -182,49 +174,38 @@ recipe render-all [
   screen <- update-cursor screen, current-sandbox
   #
   show-screen screen
-  reply screen/same-as-ingredient:0
 ]
 
 # replaced in a later layer
-recipe render-sandbox-side [
+recipe render-sandbox-side screen:address:screen, env:address:programming-environment-data -> screen:address:screen [
   local-scope
-  screen:address:screen <- next-ingredient
-  env:address:programming-environment-data <- next-ingredient
+  load-ingredients
   current-sandbox:address:editor-data <- get *env, current-sandbox:offset
   left:number <- get *current-sandbox, left:offset
   right:number <- get *current-sandbox, right:offset
   row:number, column:number, screen, current-sandbox <- render screen, current-sandbox
   clear-line-delimited screen, column, right
   row <- add row, 1
-  # draw solid line after code
+  # draw solid line after code (you'll see why in later layers)
   draw-horizontal screen, row, left, right, 9473/horizontal
   row <- add row, 1
   clear-screen-from screen, row, left, left, right
-  reply screen/same-as-ingredient:0
 ]
 
-recipe update-cursor [
+recipe update-cursor screen:address:screen, current-sandbox:address:editor-data -> screen:address:screen [
   local-scope
-  screen:address:screen <- next-ingredient
-  current-sandbox:address:editor-data <- next-ingredient
+  load-ingredients
   cursor-row:number <- get *current-sandbox, cursor-row:offset
   cursor-column:number <- get *current-sandbox, cursor-column:offset
   screen <- move-cursor screen, cursor-row, cursor-column
-  reply screen/same-as-ingredient:0
 ]
 
-# row, screen <- render-string screen:address:screen, s:address:array:character, left:number, right:number, color:number, row:number
 # print a string 's' to 'editor' in 'color' starting at 'row'
 # clear rest of last line, move cursor to next line
-recipe render-string [
+recipe render-string screen:address:screen, s:address:array:character, left:number, right:number, color:number, row:number -> row:number, screen:address:screen [
   local-scope
-  screen:address:screen <- next-ingredient
-  s:address:array:character <- next-ingredient
-  left:number <- next-ingredient
-  right:number <- next-ingredient
-  color:number <- next-ingredient
-  row:number <- next-ingredient
-  reply-unless s, row/same-as-ingredient:5, screen/same-as-ingredient:0
+  load-ingredients
+  reply-unless s
   column:number <- copy left
   screen <- move-cursor screen, row, column
   screen-height:number <- screen-height screen
@@ -277,19 +258,13 @@ recipe render-string [
     row <- add row, 1
   }
   move-cursor screen, row, left
-  reply row/same-as-ingredient:5, screen/same-as-ingredient:0
 ]
 
-# row, screen <- render-code-string screen:address:screen, s:address:array:character, left:number, right:number, row:number
 # like 'render-string' but with colorization for comments like in the editor
-recipe render-code-string [
+recipe render-code-string screen:address:screen, s:address:array:character, left:number, right:number, row:number -> row:number, screen:address:screen [
   local-scope
-  screen:address:screen <- next-ingredient
-  s:address:array:character <- next-ingredient
-  left:number <- next-ingredient
-  right:number <- next-ingredient
-  row:number <- next-ingredient
-  reply-unless s, row/same-as-ingredient:4, screen/same-as-ingredient:0
+  load-ingredients
+  reply-unless s
   color:number <- copy 7/white
   column:number <- copy left
   screen <- move-cursor screen, row, column
@@ -344,7 +319,6 @@ recipe render-code-string [
     row <- add row, 1
   }
   move-cursor screen, row, left
-  reply row/same-as-ingredient:4, screen/same-as-ingredient:0
 ]
 
 # ctrl-l - redraw screen (just in case it printed junk somehow)