Esta es la librería para control del ratón. Como en "C" la he llamado MOUSE.
En este caso, al ser un código muy corto, he introducido el código como macro. Hacerlo como librería no aporta reducción de código, pues la implementación de código necesario para pasar los datos a la función de la librería, a través de pila, ocupa tanto como el código mismo.
Por lo tanto es mejor usar directamente el código en cada función, que llamar a una rutina asociada de la librería.
En todas la llamadas se utiliza la pila para mantener transparentes los registros, de forma que llamar a la función no nos cause problemas con los datos que ya tenemos en los registros. Esto nos permite, como en "C", usar de forma cómoda las funciones sin preocuparnos por el estado de los datos almacenadas en los registros antes de la llamada.
Por ello, en la mayoría de estas macros aparecen una serie de Push a la pila, que luego serán extraídos en orden inverso de esta. Estos registros salvados en la pila son precisamente los utilizados por nuestra rutina.
Las macros nos permitirán crear de una forma cómoda y potente llamadas a nuestras funciones
MOUSE.MAC
; Copyright (C) 2013 José Ángel Moneo Fernández ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; You should have received a copy of the GNU General Public License ; along with this program. If not, see <http://www.gnu.org/licenses/>.
ON = 1 ; definición de estado activado
OFF = 0 ; definición de estado apagado
; definición de constantes
;acciones posibles del ratón
m_move equ 1
m_p_left equ 2 ; Pulsar botón izquierdo
m_r_left equ 4 ; Pulsar soltar izquierdo
m_p_right equ 8 ; Pulsar botón derecho
m_r_right equ 16 ; Pulsar soltar derecho
m_p_medio equ 32 ; Pulsar botón medio
m_r_medio equ 64 ; Pulsar soltar medio
; Muestra u oculta el cursor del ratón
; la opcion es ON y OFF
mouse macro opcion
mov ax,2-opcion
int 33h
endm
;reinicializa el ratón
resmouse macro
mov ax,0
int 33h
endm
;coloca el ratón en una posición dada
putmouse macro x,y
push cx
push dx
mov ax,4
mov cx,x
mov dx,y
int 33h
pop dx
pop cx
endm
;lee los botones del ratón en ax 1 izquierdo,2 derecho,4 medio
getmouse macro
push bx
push dx
mov ax,3
int 33h
mov ax,bx
pop dx
pop bx
endm
;toma la posicion x del ratón y la devuelve en ax
getmousex macro
push bx
push cx
push dx
mov ax,3
int 33h
mov ax,cx
pop dx
pop cx
pop bx
endm
;toma la posicion y del ratón y la devuelve en ax
getmousey macro
push bx
push cx
push dx
mov ax,3
int 33h
mov ax,dx
pop dx
pop cx
pop bx
endm
;comprueba la corecta instalaci¢n del ratón
mouseok macro
mov ax,0
int 33h
dec ax
endm
;Activa un procedimiento asociado al ratón
mouseint macro accion,procedure
mov ax,0ch
push cx
push dx
mov cx,accion
push es
push cs
pop es
mov dx,offset procedure
int 33h
pop es
pod dx
pop cx
endm
;TOMA EL MOVIMIENTO DEL RATÓN DESDE LA ULTIMA LLAMADA
;SOBRE EL EJE X
movx_mouse macro
push cx
mov ax,11
int 33h
mov ax,cx
pop cx
endm
;TOMA EL MOVIMIENTO DEL RATÓN DESDE LA ULTIMA LLAMADA
;SOBRE EL EJE Y
movy_mouse macro
push dx
mov ax,11
int 33h
mov ax,dx
pop dx
endm
No hay comentarios:
Publicar un comentario
Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.