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 21:20:35 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-04-10 21:20:46 -0700
commit770cac9412f95e0b305712239a86ff388467a1e1 (patch)
tree27c2d255d0b3c3056254952969ca08f7e73cd416 /shell/cell.mu
parenta509279aea989b4c0f47d1e11965ed297a4d6587 (diff)
downloadmu-770cac9412f95e0b305712239a86ff388467a1e1.tar.gz
shell: UI now showing fake keyboard
But we don't actually support fake keyboards anywhere yet.
Diffstat (limited to 'shell/cell.mu')
-rw-r--r--shell/cell.mu17
1 files changed, 13 insertions, 4 deletions
diff --git a/shell/cell.mu b/shell/cell.mu
index 6ca1fcb3..85596d64 100644
--- a/shell/cell.mu
+++ b/shell/cell.mu
@@ -13,7 +13,7 @@ type cell {
   # type 5: screen
   screen-data: (handle screen)
   # type 6: keyboard
-  keyboard-data: (handle stream byte)
+  keyboard-data: (handle gap-buffer)
   # TODO: array, (associative) table, stream
 }
 
@@ -151,12 +151,21 @@ fn clear-screen-cell _self-ah: (addr handle cell) {
   clear-screen screen
 }
 
-fn allocate-keyboard _out: (addr handle cell), capacity: int {
+fn allocate-keyboard _out: (addr handle cell) {
   var out/eax: (addr handle cell) <- copy _out
   allocate out
   var out-addr/eax: (addr cell) <- lookup *out
-  var dest-ah/ecx: (addr handle stream byte) <- get out-addr, keyboard-data
-  populate-stream dest-ah, capacity
+  var dest-ah/ecx: (addr handle gap-buffer) <- get out-addr, keyboard-data
+  allocate dest-ah
   var type/ecx: (addr int) <- get out-addr, type
   copy-to *type, 6/keyboard
 }
+
+fn new-keyboard _out: (addr handle cell), capacity: int {
+  var out/eax: (addr handle cell) <- copy _out
+  allocate-keyboard out
+  var out-addr/eax: (addr cell) <- lookup *out
+  var dest-ah/eax: (addr handle gap-buffer) <- get out-addr, keyboard-data
+  var dest-addr/eax: (addr gap-buffer) <- lookup *dest-ah
+  initialize-gap-buffer dest-addr, capacity
+}