about summary refs log tree commit diff stats
path: root/apps/ex10.mu
diff options
context:
space:
mode:
Diffstat (limited to 'apps/ex10.mu')
-rw-r--r--apps/ex10.mu42
1 files changed, 42 insertions, 0 deletions
diff --git a/apps/ex10.mu b/apps/ex10.mu
new file mode 100644
index 00000000..05198738
--- /dev/null
+++ b/apps/ex10.mu
@@ -0,0 +1,42 @@
+# Demo of mouse support.
+#
+# To build a disk image:
+#   ./translate apps/ex10.mu       # emits code.img
+# To run:
+#   qemu-system-i386 code.img
+# Or:
+#   bochs -f bochsrc               # bochsrc loads code.img
+#
+# Expected output:
+#   Values between -256 and +255 as you move the mouse over the window.
+#   You might need to click on the window once.
+
+fn main screen: (addr screen), keyboard: (addr keyboard), data-disk: (addr disk) {
+  # repeatedly print out mouse driver results if non-zero
+  $main:event-loop: {
+    var dx/eax: int <- copy 0
+    var dy/ecx: int <- copy 0
+    dx, dy <- read-mouse-event
+    {
+      compare dx, 0
+      break-if-!=
+      compare dy, 0
+      break-if-!=
+      loop $main:event-loop
+    }
+    {
+      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 dummy/ecx: int <- copy 0
+      dx, dummy <- draw-int32-decimal-wrapping-right-then-down-over-full-screen screen, dx, 0/x, 0x10/y, 0x31/fg, 0/bg
+    }
+    {
+      var dummy/eax: int <- copy 0
+      dummy, dy <- draw-int32-decimal-wrapping-right-then-down-over-full-screen screen, dy, 5/x, 0x10/y, 0x31/fg, 0/bg
+    }
+    loop
+  }
+}