about summary refs log tree commit diff stats
path: root/500fake-screen.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-04-19 10:34:22 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-04-19 10:47:30 -0700
commitc22874a97f9e22f00b78b46b0647ea97325370f4 (patch)
tree9aa3c9ec5d7e1b3f273db80e1c6589b1b99825f2 /500fake-screen.mu
parent1114442c23fd89a4da1a0ae977d3d0c9c3e58e0f (diff)
downloadmu-c22874a97f9e22f00b78b46b0647ea97325370f4.tar.gz
.
Diffstat (limited to '500fake-screen.mu')
-rw-r--r--500fake-screen.mu66
1 files changed, 33 insertions, 33 deletions
diff --git a/500fake-screen.mu b/500fake-screen.mu
index 5cf925a9..90944ed0 100644
--- a/500fake-screen.mu
+++ b/500fake-screen.mu
@@ -83,39 +83,6 @@ fn screen-size _screen: (addr screen) -> _/eax: int, _/ecx: int {
   return width, height
 }
 
-fn pixel screen: (addr screen), x: int, y: int, color: int {
-  {
-    compare screen, 0
-    break-if-!=
-    pixel-on-real-screen x, y, color
-    return
-  }
-  # fake screen
-  # prepare a pixel
-  var pixel-storage: pixel
-  var src/ecx: int <- copy x
-  var dest/edx: (addr int) <- get pixel-storage, x
-  copy-to *dest, src
-  src <- copy y
-  dest <- get pixel-storage, y
-  copy-to *dest, src
-  src <- copy color
-  dest <- get pixel-storage, color
-  copy-to *dest, src
-  # save it
-  var src/ecx: (addr pixel) <- address pixel-storage
-  var screen/eax: (addr screen) <- copy screen
-  var dest-stream-ah/eax: (addr handle stream pixel) <- get screen, pixels
-  var dest-stream/eax: (addr stream pixel) <- lookup *dest-stream-ah
-  {
-    var full?/eax: boolean <- stream-full? dest-stream
-    compare full?, 0/false
-    break-if-=
-    abort "tried to draw too many pixels on the fake screen; adjust initialize-screen"
-  }
-  write-to-stream dest-stream, src
-}
-
 # testable screen primitive
 fn draw-grapheme _screen: (addr screen), g: grapheme, x: int, y: int, color: int, background-color: int {
   var screen/esi: (addr screen) <- copy _screen
@@ -454,3 +421,36 @@ fn screen-background-color-at-idx _screen: (addr screen), idx-on-stack: int -> _
   var result/eax: int <- copy *src
   return result
 }
+
+fn pixel screen: (addr screen), x: int, y: int, color: int {
+  {
+    compare screen, 0
+    break-if-!=
+    pixel-on-real-screen x, y, color
+    return
+  }
+  # fake screen
+  # prepare a pixel
+  var pixel-storage: pixel
+  var src/ecx: int <- copy x
+  var dest/edx: (addr int) <- get pixel-storage, x
+  copy-to *dest, src
+  src <- copy y
+  dest <- get pixel-storage, y
+  copy-to *dest, src
+  src <- copy color
+  dest <- get pixel-storage, color
+  copy-to *dest, src
+  # save it
+  var src/ecx: (addr pixel) <- address pixel-storage
+  var screen/eax: (addr screen) <- copy screen
+  var dest-stream-ah/eax: (addr handle stream pixel) <- get screen, pixels
+  var dest-stream/eax: (addr stream pixel) <- lookup *dest-stream-ah
+  {
+    var full?/eax: boolean <- stream-full? dest-stream
+    compare full?, 0/false
+    break-if-=
+    abort "tried to draw too many pixels on the fake screen; adjust initialize-screen"
+  }
+  write-to-stream dest-stream, src
+}