about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--apps/tile/environment.mu14
1 files changed, 9 insertions, 5 deletions
diff --git a/apps/tile/environment.mu b/apps/tile/environment.mu
index 3fdd8163..4ed23ecc 100644
--- a/apps/tile/environment.mu
+++ b/apps/tile/environment.mu
@@ -2,6 +2,7 @@ type environment {
   screen: (handle screen)
   functions: (handle function)
   sandboxes: (handle sandbox)
+  cursor-sandbox: (handle sandbox)
   nrows: int
   ncols: int
   code-separator-col: int
@@ -13,10 +14,13 @@ fn initialize-environment _env: (addr environment) {
   var functions/eax: (addr handle function) <- get env, functions
   create-primitive-functions functions
   # initialize first sandbox
-  var sandbox-ah/eax: (addr handle sandbox) <- get env, sandboxes
+  var sandbox-ah/ecx: (addr handle sandbox) <- get env, sandboxes
   allocate sandbox-ah
   var sandbox/eax: (addr sandbox) <- lookup *sandbox-ah
   initialize-sandbox sandbox
+  # initialize cursor sandbox
+  var cursor-sandbox-ah/eax: (addr handle sandbox) <- get env, cursor-sandbox
+  copy-object sandbox-ah, cursor-sandbox-ah
   # initialize screen
   var screen-ah/eax: (addr handle screen) <- get env, screen
   var _screen/eax: (addr screen) <- lookup *screen-ah
@@ -61,7 +65,7 @@ fn initialize-environment-with-fake-screen _self: (addr environment), nrows: int
 
 fn process _self: (addr environment), key: grapheme {
   var self/esi: (addr environment) <- copy _self
-  var sandbox-ah/eax: (addr handle sandbox) <- get self, sandboxes
+  var sandbox-ah/eax: (addr handle sandbox) <- get self, cursor-sandbox
   var sandbox/eax: (addr sandbox) <- lookup *sandbox-ah
 #?   print-string 0, "processing sandbox\n"
   process-sandbox self, sandbox, key
@@ -985,14 +989,14 @@ fn render _env: (addr environment) {
   # functions
   var functions/edx: (addr handle function) <- get env, functions
   # sandbox
-  var sandbox-ah/eax: (addr handle sandbox) <- get env, sandboxes
-  var sandbox/eax: (addr sandbox) <- lookup *sandbox-ah
+  var cursor-sandbox-ah/eax: (addr handle sandbox) <- get env, cursor-sandbox
+  var cursor-sandbox/eax: (addr sandbox) <- lookup *cursor-sandbox-ah
   # bindings
   var bindings-storage: table
   var bindings/ebx: (addr table) <- address bindings-storage
   initialize-table bindings, 0x10
 #?   print-string 0, "render-sandbox {\n"
-  render-sandbox screen, functions, bindings, sandbox, 3, repl-col
+  render-sandbox screen, functions, bindings, cursor-sandbox, 3, repl-col
 #?   print-string 0, "render-sandbox }\n"
 }