about summary refs log tree commit diff stats
path: root/baremetal/401draw-text-rightward.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2021-01-09 18:55:24 -0800
committerKartik Agaram <vc@akkartik.com>2021-01-09 18:55:24 -0800
commit57e4978eac1e5deb544b07db77ac382433d35d03 (patch)
treebe0bd25ed1bbd7bc5a7d1d8cda114d904c13f631 /baremetal/401draw-text-rightward.mu
parent0518944e379f343542c872a20d3d5a2aee744297 (diff)
downloadmu-57e4978eac1e5deb544b07db77ac382433d35d03.tar.gz
7492
Port some support for unicode to baremetal.
Diffstat (limited to 'baremetal/401draw-text-rightward.mu')
-rw-r--r--baremetal/401draw-text-rightward.mu19
1 files changed, 8 insertions, 11 deletions
diff --git a/baremetal/401draw-text-rightward.mu b/baremetal/401draw-text-rightward.mu
index 089c5d5c..61b2d9ca 100644
--- a/baremetal/401draw-text-rightward.mu
+++ b/baremetal/401draw-text-rightward.mu
@@ -1,16 +1,13 @@
-fn draw-text-rightward screen: (addr screen), _text: (addr array byte), x: int, y: int, color: int {
-  var text/esi: (addr array byte) <- copy _text
-  var len/ecx: int <- length text
-  var i/edx: int <- copy 0
+fn draw-text-rightward screen: (addr screen), text: (addr array byte), x: int, y: int, color: int {
+  var stream-storage: (stream byte 0x100)
+  var stream/esi: (addr stream byte) <- address stream-storage
+  write stream, text
   {
-    compare i, len
-    break-if->=
-    var g/eax: (addr byte) <- index text, i
-    var g2/eax: byte <- copy-byte *g
-    var g3/eax: grapheme <- copy g2
-    draw-grapheme screen, g3, x, y, color
+    var g/eax: grapheme <- read-grapheme stream
+    compare g, 0xffffffff  # end-of-file
+    break-if-=
+    draw-grapheme screen, g, x, y, color
     add-to x, 8  # font-width
-    i <- increment
     loop
   }
 }