Write ALP for Mouse interface

, by Prashant Gunjal

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: