about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--apps/ex10.mu.176
1 files changed, 0 insertions, 176 deletions
diff --git a/apps/ex10.mu. b/apps/ex10.mu.
deleted file mode 100644
index 35fea653..00000000
--- a/apps/ex10.mu.
+++ /dev/null
@@ -1,176 +0,0 @@
-# Demo of mouse support.
-#
-# To build a disk image:
-#   ./translate ex10.mu            # emits disk.img
-# To run:
-#   qemu-system-i386 disk.img
-# Or:
-#   bochs -f bochsrc               # bochsrc loads disk.img
-
-fn main screen: (addr screen), keyboard: (addr keyboard), data-disk: (addr disk) {
-#?   var x/esi: int <- copy 0x200
-#?   var y/edi: int <- copy 0x180
-#?   render-grid x, y
-  $main:event-loop: {
-    # read deltas from mouse
-    var dx/eax: int <- copy 0
-    var dy/ecx: int <- copy 0
-    dx, dy <- read-mouse-event
-    # loop if deltas are both 0
-    {
-      compare dx, 0
-      break-if-!=
-      compare dy, 0
-      break-if-!=
-      loop $main:event-loop
-    }
-    # render unclamped deltas
-#?     render-grid x, y
-    draw-int32-decimal-wrapping-right-then-down-from-cursor-over-full-screen screen, dx, 7/fg, 0/bg
-    draw-text-wrapping-right-then-down-from-cursor-over-full-screen screen, " ", 7/fg, 0/bg
-    draw-int32-decimal-wrapping-right-then-down-from-cursor-over-full-screen screen, dy, 7/fg, 0/bg
-    move-cursor-to-left-margin-of-next-line screen
-#?     {
-#?       var dummy1/eax: int <- copy 0
-#?       var dummy2/ecx: int <- copy 0
-#?       dummy1, dummy2 <- draw-text-wrapping-right-then-down-over-full-screen screen, "         ", 0/x, 0x10/y, 0x31/fg, 0/bg
-#?     }
-#?     {
-#?       var ephemeral-dx/eax: int <- copy dx
-#?       var dummy/ecx: int <- copy 0
-#?       ephemeral-dx, dummy <- draw-int32-decimal-wrapping-right-then-down-over-full-screen screen, ephemeral-dx, 0/x, 0x10/y, 0x31/fg, 0/bg
-#?     }
-#?     {
-#?       var dummy/eax: int <- copy 0
-#?       var ephemeral-dy/ecx: int <- copy dy
-#?       dummy, ephemeral-dy <- draw-int32-decimal-wrapping-right-then-down-over-full-screen screen, ephemeral-dy, 5/x, 0x10/y, 0x31/fg, 0/bg
-#?     }
-#?     # clamp deltas
-#?     $clamp-dx: {
-#?       compare dx, -0xa
-#?       {
-#?         break-if->
-#?         dx <- copy -0xa
-#?         break $clamp-dx
-#?       }
-#?       compare dx, 0xa
-#?       {
-#?         break-if-<
-#?         dx <- copy 0xa
-#?         break $clamp-dx
-#?       }
-#?       dx <- copy 0
-#?     }
-#?     $clamp-dy: {
-#?       compare dy, -0xa
-#?       {
-#?         break-if->
-#?         dy <- copy -0xa
-#?         break $clamp-dy
-#?       }
-#?       compare dy, 0xa
-#?       {
-#?         break-if-<
-#?         dy <- copy 0xa
-#?         break $clamp-dy
-#?       }
-#?       dy <- copy 0
-#?     }
-#?     # render clamped deltas
-#?     {
-#?       var dummy1/eax: int <- copy 0
-#?       var dummy2/ecx: int <- copy 0
-#?       dummy1, dummy2 <- draw-text-wrapping-right-then-down-over-full-screen screen, "         ", 0/x, 0x20/y, 0x31/fg, 0/bg
-#?     }
-#?     {
-#?       var save-dx/eax: int <- copy dx
-#?       var dummy/ecx: int <- copy 0
-#?       save-dx, dummy <- draw-int32-decimal-wrapping-right-then-down-over-full-screen screen, save-dx, 0/x, 0x20/y, 0x31/fg, 0/bg
-#?     }
-#?     {
-#?       var dummy/eax: int <- copy 0
-#?       var save-dy/ecx: int <- copy dy
-#?       dummy, save-dy <- draw-int32-decimal-wrapping-right-then-down-over-full-screen screen, save-dy, 5/x, 0x20/y, 0x31/fg, 0/bg
-#?     }
-#?     # loop if deltas are both 0
-#?     {
-#?       compare dx, 0
-#?       break-if-!=
-#?       compare dy, 0
-#?       break-if-!=
-#?       loop $main:event-loop
-#?     }
-#?     # accumulate deltas and clamp result within screen bounds
-#?     x <- add dx
-#?     compare x, 0
-#?     {
-#?       break-if->=
-#?       x <- copy 0
-#?     }
-#?     compare x, 0x400
-#?     {
-#?       break-if-<
-#?       x <- copy 0x3ff
-#?     }
-#?     y <- subtract dy  # mouse y coordinates are reverse compared to screen
-#?     compare y, 0
-#?     {
-#?       break-if->=
-#?       y <- copy 0
-#?     }
-#?     compare y, 0x300
-#?     {
-#?       break-if-<
-#?       y <- copy 0x2ff
-#?     }
-    loop
-  }
-}
-
-#? fn render-grid curr-x: int, curr-y: int {
-#?   and-with curr-x, 0xfffffffc
-#?   and-with curr-y, 0xfffffffc
-#?   var y/eax: int <- copy 0
-#?   {
-#?     compare y, 0x300/screen-height=768
-#?     break-if->=
-#?     var x/edx: int <- copy 0
-#?     {
-#?       compare x, 0x400/screen-width=1024
-#?       break-if->=
-#?       var color/ecx: int <- copy 0
-#?       # set color if either x or y is divisible by 4
-#?       var tmp/ebx: int <- copy y
-#?       tmp <- and 3
-#?       compare tmp, 0
-#?       {
-#?         break-if-!=
-#?         color <- copy 3
-#?       }
-#?       tmp <- copy x
-#?       tmp <- and 3
-#?       compare tmp, 0
-#?       {
-#?         break-if-!=
-#?         color <- copy 3
-#?       }
-#?       # highlight color if x and y match curr-x and curr-y (quantized)
-#?       {
-#?         var xq/edx: int <- copy x
-#?         xq <- and 0xfffffffc
-#?         var yq/eax: int <- copy y
-#?         yq <- and 0xfffffffc
-#?         compare xq, curr-x
-#?         break-if-!=
-#?         compare yq, curr-y
-#?         break-if-!=
-#?         color <- copy 0xc
-#?       }
-#?       pixel-on-real-screen x, y, color
-#?       x <- increment
-#?       loop
-#?     }
-#?     y <- increment
-#?     loop
-#?   }
-#? }