1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# Demo of mouse support.
#
# To build a disk image:
# ./translate 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
}
}
|