TITLE PROGRAM 5-4: DISPLAYING MOUSE POSITION
;Performs the following tasks: (a) gets the current video mode and saves it, (b) sets the mode to a new video ;mode, (c) gets the mouse pointer position, converts it to character position and displays it continuously unless a ;key is pressed, (d) upon pressing any key, it restores the original video mode and exits to DOS.
PAGE 60,132
CURSOR MACRO ROW,COLUMN
MOV AH,02H
MOV BH,00
MOV DH,ROW
MOV DL,COLUMN
INT 10H
ENDM
DISPLAY MACRO STRING
MOV AH,09H
MOV DX,OFFSET STRING
INT 21H
ENDM
.MODEL SMALL
.STACK
.DATA
MESSAGE_1 DB 'PRESS ANY KEY TO GET OUT','$'
MESSAGE_2 DB 'THE MOUSE CURSOR IS LOCATED AT ','$'
POS_HO DB ?,?, ' AND $'
POS_VE DB ?,?,'$'
OLDVIDEO DB ?
NEWVIDEO DB 0EH
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV AH,0FH
INT 10H
MOV OLDVIDEO,AL
MOV AX,0600H
MOV BH,07
MOV CX,0
MOV DX,184FH
INT 10H
MOV AH,00H
MOV AL,NEWVIDEO
INT 10H
MOV AX,0
INT 33H
MOV AX,01
INT 33H
CURSOR 20,20
DISPLAY MESSAGE_1
AGAIN: MOV AX,03H
INT 33H
MOV AX,CX
CALL CONVERT
MOV POS_HO,AL
MOV POS_HO+1,AH
MOV AX,DX
CALL CONVERT
MOV POS_VE,AL
MOV POS_VE+1,AH
CURSOR 5,20
DISPLAY MESSAGE_2
DISPLAY POS_HO
DISPLAY POS_VE
MOV AH,01
INT 16H
JZ AGAIN
MOV AH,02
INT 33H
MOV AH,0
MOV AL,OLDVIDEO
MOV AH,0
MOV AL,OLDVIDEO
INT 10H
MOV AH,4CH
INT 21H
MAIN ENDP
CONVERT PROC
SHR AX,1
SHR AX,1
SHR AX,1
MOV BL,10
SUB AH,AH
DIV BL
OR AX,3030H
RET
CONVERT ENDP
END MAIN