RE:funcion 3 interrupcion 33H
Función 03h
Entrada: AX = 0003h Leer posición (x, y) y estado de los botones
Salida: CX = Posición horizontal
DX = Posición vertical
BX = Estado de los botones
Bit 0 1 = Pulsado el botón izquierdo
Bit 1 1 = Pulsado el botón derecho
Bit 2 1 = Pulsado el botón central
Cuando estamos en el modo gráfico 13h (320x200) las coordenadas no corresponden con las que nos devuelve la función y tendremos que dividir entre dos el eje horizontal (x).
Eje X: de 0 a 639 (dividimos entre 2)
Eje Y: de 0 a 199
En modo texto tendremos que multiplicar las coordenadas por ocho, tanto en eje horizontal (x) como en vertical (y). La función siguiente solos nos sirve en modo 13h.
void ReadMouse(int *MouseX, int *MouseY, int *MouseB)
{
int x, y, b;
asm mov ax, 03h
asm int 33h
asm shr cx, 1 // cx/2
asm mov x, cx
asm mov y, dx
asm mov b, bx
*MouseX=x;
*MouseY=y;
*MouseB=b;
}