about summary refs log tree commit diff stats
path: root/shell/cell.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-04-10 22:28:24 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-04-10 22:28:24 -0700
commit1afc02113ae7a088bf1a02ef423fcd875292c6c2 (patch)
tree951e949314423f1fcf5ee5276b38bb185f04e1c4 /shell/cell.mu
parente93bbec63b063a509f0166ee0c6129826848e347 (diff)
downloadmu-1afc02113ae7a088bf1a02ef423fcd875292c6c2.tar.gz
shell: fake keyboard
Diffstat (limited to 'shell/cell.mu')
-rw-r--r--shell/cell.mu13
1 files changed, 13 insertions, 0 deletions
diff --git a/shell/cell.mu b/shell/cell.mu
index 85596d64..7d04e5db 100644
--- a/shell/cell.mu
+++ b/shell/cell.mu
@@ -169,3 +169,16 @@ fn new-keyboard _out: (addr handle cell), capacity: int {
   var dest-addr/eax: (addr gap-buffer) <- lookup *dest-ah
   initialize-gap-buffer dest-addr, capacity
 }
+
+fn rewind-keyboard-cell _self-ah: (addr handle cell) {
+  var self-ah/eax: (addr handle cell) <- copy _self-ah
+  var self/eax: (addr cell) <- lookup *self-ah
+  compare self, 0
+  {
+    break-if-!=
+    return
+  }
+  var keyboard-ah/eax: (addr handle gap-buffer) <- get self, keyboard-data
+  var keyboard/eax: (addr gap-buffer) <- lookup *keyboard-ah
+  rewind-gap-buffer keyboard
+}