about summary refs log tree commit diff stats
path: root/apps/tile/main.mu
diff options
context:
space:
mode:
Diffstat (limited to 'apps/tile/main.mu')
-rw-r--r--apps/tile/main.mu35
1 files changed, 24 insertions, 11 deletions
diff --git a/apps/tile/main.mu b/apps/tile/main.mu
index 1ef1e268..6b18e82e 100644
--- a/apps/tile/main.mu
+++ b/apps/tile/main.mu
@@ -66,17 +66,30 @@ fn interactive {
 }
 
 fn test {
-  test-surface-pin-at-origin
-#?   var env-storage: environment
-#?   var env/esi: (addr environment) <- address env-storage
-#?   initialize-environment-with-fake-screen env, 5, 0xa
-#?   var g/eax: grapheme <- copy 0x22  # '"'
-#?   process env, g
-#?   g <- copy 0x61  # 'a'
-#?   process env, g
-#?   g <- copy 0x22  # '"'
-#?   process env, g
-#?   render env
+  var env-storage: environment
+  var env/esi: (addr environment) <- address env-storage
+  initialize-environment-with-fake-screen env, 0x20, 0xa0
+  process-all env, "3 3 fake-screen =s"
+  process env, 0xc  # ctrl-l
+  process-all env, "s 1 down "
+  render env
+#?   var fake-screen-ah/eax: (addr handle screen) <- get env, screen
+#?   var fake-screen/eax: (addr screen) <- lookup *fake-screen-ah
+#?   render-screen 0, 1, 1, fake-screen
+}
+
+fn process-all env: (addr environment), cmds: (addr array byte) {
+  var cmds-stream: (stream byte 0x100)
+  var cmds-stream-a/esi: (addr stream byte) <- address cmds-stream
+  write cmds-stream-a, cmds
+  {
+    var done?/eax: boolean <- stream-empty? cmds-stream-a
+    compare done?, 0  # false
+    break-if-!=
+    var g/eax: grapheme <- read-grapheme cmds-stream-a
+    process env, g
+    loop
+  }
 }
 
 fn repl {