about summary refs log tree commit diff stats
path: root/500text-screen.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-04-10 17:42:27 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-04-10 17:42:35 -0700
commit90748fa45df64d1e12e0dcb46c3074e232914d71 (patch)
tree5264dbeeb9425031e1536affa850f1683bb21a95 /500text-screen.mu
parentf6aeecdc483e07c2fdb81040d1e20b3288c3c9c3 (diff)
downloadmu-90748fa45df64d1e12e0dcb46c3074e232914d71.tar.gz
shell: render fake screens
'print' turns out to not be working yet.
Diffstat (limited to '500text-screen.mu')
-rw-r--r--500text-screen.mu29
1 files changed, 29 insertions, 0 deletions
diff --git a/500text-screen.mu b/500text-screen.mu
index 92ea1d2f..fa85085e 100644
--- a/500text-screen.mu
+++ b/500text-screen.mu
@@ -221,6 +221,35 @@ fn clear-screen screen: (addr screen) {
   set-cursor-position screen, 0, 0
 }
 
+fn fake-screen-empty? _screen: (addr screen) -> _/eax: boolean {
+  var screen/esi: (addr screen) <- copy _screen
+  var y/eax: int <- copy 0
+  var height/ecx: (addr int) <- get screen, height
+  {
+    compare y, *height
+    break-if->=
+    var x/edx: int <- copy 0
+    var width/ebx: (addr int) <- get screen, width
+    {
+      compare x, *width
+      break-if->=
+      var g/eax: grapheme <- screen-grapheme-at screen, x, y
+      {
+        compare g, 0
+        break-if-=
+        compare g, 0x20/space
+        break-if-=
+        return 0/false
+      }
+      x <- increment
+      loop
+    }
+    y <- increment
+    loop
+  }
+  return 1/true
+}
+
 fn clear-rect screen: (addr screen), xmin: int, ymin: int, xmax: int, ymax: int, background-color: int {
   {
     compare screen, 0