projects
/
retroray
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add relative mouse handling in mouse.asm
[retroray]
/
src
/
dos
/
mouse.asm
diff --git
a/src/dos/mouse.asm
b/src/dos/mouse.asm
index
c82e7fd
..
3a68966
100644
(file)
--- a/
src/dos/mouse.asm
+++ b/
src/dos/mouse.asm
@@
-9,10
+9,11
@@
WRITE equ 4
PIXRATE equ 15
XLIM equ 7
YLIM equ 8
PIXRATE equ 15
XLIM equ 7
YLIM equ 8
+READREL equ 0xb
PUSHA_EAX_OFFS equ 28
PUSHA_EAX_OFFS equ 28
-PUSHA_ECX_OFFS equ 20
-PUSHA_EDX_OFFS equ 16
+PUSHA_ECX_OFFS equ 24
+PUSHA_EDX_OFFS equ 20
section .text
bits 32
section .text
bits 32
@@
-61,6
+62,19
@@
_show_mouse:
pop ebp
ret
pop ebp
ret
+; int read_mouse_bn(void)
+ global read_mouse_bn_
+ global _read_mouse_bn
+read_mouse_bn_:
+_read_mouse_bn:
+ pusha
+ mov ax, READ
+ int 0x33
+ xor eax, eax
+ mov ax, bx
+ popa
+ ret
+
; int read_mouse(int *xp, int *yp)
global read_mouse_
read_mouse_:
; int read_mouse(int *xp, int *yp)
global read_mouse_
read_mouse_:
@@
-102,6
+116,42
@@
_read_mouse:
pop ebp
ret
pop ebp
ret
+; void read_mouse_rel(int *xp, int *yp)
+ global read_mouse_rel_
+read_mouse_rel_:
+ pusha
+ mov esi, eax ; xp
+ mov edi, edx ; yp
+ mov ax, READREL
+ int 0x33
+ movsx eax, cx
+ mov [esi], eax
+ movsx eax, dx
+ mov [edi], eax
+ popa
+ ret
+
+ global _read_mouse_rel
+_read_mouse_rel:
+ push ebp
+ mov ebp, esp
+ push ebx
+ push esi
+ push edi
+ mov ax, READREL
+ int 0x33
+ mov ebx, [ebp + 8]
+ movsx eax, cx
+ mov [ebx], eax
+ mov ebx, [ebp + 12]
+ movsx eax, dx
+ mov [ebx], eax
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+
; void set_mouse(int x, int y)
global set_mouse_
set_mouse_:
; void set_mouse(int x, int y)
global set_mouse_
set_mouse_:
@@
-129,7
+179,7
@@
_set_mouse:
pop ebp
ret
pop ebp
ret
-; void set_mouse_limits(int xmin, int ymin, int xmax, int ymax)
+; void set_mouse_limits(int xmin[eax], int ymin[edx], int xmax[ebx], int ymax[ecx])
global set_mouse_limits_
set_mouse_limits_:
pusha
global set_mouse_limits_
set_mouse_limits_:
pusha