Write ALP for Mouse interface
Write ALP for Mouse interface
H2B MACRO NO
MOV AX,BX
MOV BX,NO
MOV DX,0000H
DIV BX
MOV BX,DX
MOV DX,AX
ENDM
.MODEL SMALL
.DATA
X DW ?
Y DW ?
Z DW ?
.CODE
MOV AX,@DATA
MOV DS,AX
;****SET CURSOR AT TOPMOST RIGHT CORNER*****
MOV AH,02H
MOV BH,00H
MOV DL,4DH
MOV DH,00H
INT 10H
;****DISPLAY CHARACTER * AT THAT LOCN*******
MOV AH,0EH
MOV AL,'*'
MOV BH,00H
MOV BL,02H
INT 10H
;****SET CURSOR AT CENTER OF DISPLAY*****
MOV AH,02H
MOV BH,00H
MOV DL,27H
MOV DH,0DH
INT 10H
;****DISPLAY CHARACTER . AT THAT LOCN*******
MOV AH,0EH
MOV AL,'.'
MOV BH,00H
MOV BL,02H
INT 10H
;*******INITIALIZE MOUSE*********
MOV AX,0000H
INT 33H
L1: CALL STATUS
;***CHECK SUPPORT OF KEYOARD***
L2: MOV AH,0BH
INT 21H
;***SUPPORT AVAILABLE IF AL=FF**
CMP AL,00H
JE L1
;**IT COMES HERE FOR VALID VALUE ie AL!=00H***
;***READ CHARACTER FROM KEYBOARD***
MOV AH,00H
INT 16H
CMP AL,'S'
JE SHOW
CMP AL,'H'
JE HIDE
CMP AL,'Q'
JE EXIT
;******SHOW MOUSE PTR******
SHOW: MOV AX,0001H
INT 33H
JMP L2
;******HIDE MOUSE PRT******
HIDE: MOV AX,0002H
INT 33H
JMP L2
;*****TERMINATE PROGRAM******
EXIT: MOV AH,4CH
INT 21H
;****STATUS PROCEDURE******
STATUS PROC NEAR
;*****TAKE STATUS OF MOUSE PTR*****
MOV AX,0003H
INT 33H
MOV X,CX
MOV Y,DX
MOV Z,BX
;****SET CURSOR AT LEFT SIDE OF . *****
MOV AH,02H
MOV BH,00H
MOV DL,10H
MOV DH,0DH
INT 10H
MOV BX,X
H2B 03E8H
CALL PRINT
H2B 0064H
CALL PRINT
H2B 000AH
CALL PRINT
H2B 0001H
CALL PRINT
;****DISPLAY CHARACTER : AT THAT LOCN*******
MOV AH,0EH
MOV AL,':'
MOV BH,00H
MOV BL,02H
INT 10H
MOV BX,Y
H2B 03E8H
CALL PRINT
H2B 0064H
CALL PRINT
H2B 000AH
CALL PRINT
H2B 0001H
CALL PRINT
CALL BEEP
CALL QUIT
RET
ENDP
PRINT PROC NEAR
AND DL,0FH
CMP DL,09H
JBE N1
ADD DL,07H
N1: ADD DL,30H
MOV AH,02H
INT 21H
RET
ENDP
QUIT PROC NEAR
CMP X,026AH
JNE R
CMP Y,0000H
JNE R
CMP Z,0001H
JNE R1
JMP EXIT
R: RET
ENDP
BEEP PROC NEAR
CMP X,0130H
JB R1
CMP X,0149H
JA R1
CMP Y,0061H
JB R1
CMP Y,0076H
JA R1
CMP Z,0001H
JNE R1
;**BEEP**
MOV DH,07H
MOV AH,02H
INT 21H
R1: RET
ENDP
END
0 comments:
Post a Comment