diff --git a/main.asm b/main.asm index 3581f20..68bb8fb 100644 --- a/main.asm +++ b/main.asm @@ -29,18 +29,58 @@ main: lp: - ; mov cx, 0 - ; mov al, 0 - ; mov dx, 320 - ; mov bl, 200 - ; mov bh, 0 + call update_mouse - ;call gfx_rect + jmp lp +jmp $ ; Halt + +update_mouse: cli mov bx, [mouseX] mov ax, [mouseY] sti + mov cx, [lastMouseX] + mov dx, [lastMouseY] + + push bx + push ax + xor bx, cx + jnz .update + xor ax, dx + jnz .update + + pop ax + pop bx + ret + .update: + pop ax + pop bx + call clear_last_mouse + call render_mouse + + mov [lastMouseX], bx + mov [lastMouseY], ax + ret + +; cx = lastMouseX +; dx = lastMouseY +clear_last_mouse: + pusha + + mov al, dl + mov dx, 11 + mov bl, 18 + mov bh, 0 + call gfx_rect + + popa + ret + +; bx = mouseX +; ax = mouseY +render_mouse: + pusha mov dx, 0 mov cx, 320 @@ -53,9 +93,8 @@ main: mov bl, 18 call _gfx_blit0 - jmp lp - -jmp $ ; Halt + popa + ret ; Libs %include "print_util.asm" @@ -69,4 +108,7 @@ HELLO_WORLD: No: db 'No.', 0 +lastMouseX: dw 0 +lastMouseY: dw 0 + %include "gfx/gfxd_cursor.asm" \ No newline at end of file diff --git a/mouse_util.asm b/mouse_util.asm index 3a96241..ca86449 100644 --- a/mouse_util.asm +++ b/mouse_util.asm @@ -186,9 +186,9 @@ mouse_callback: mov ax, 0 .x0: - test bx, 0x8000 + test dx, 0x8000 jz .y0 - mov bx, 0 + mov dx, 0 .y0: cmp ax, 320 @@ -196,9 +196,9 @@ mouse_callback: mov ax, 320 .x1: - cmp bx, 200 + cmp dx, 200 jle .y1 - mov bx, 200 + mov dx, 200 .y1: ; Status