home *** CD-ROM | disk | FTP | other *** search
- PUBLIC MouseInit, MouseOn, MouseOff, MouseRead
-
- EXTRN __retl : FAR
- EXTRN __storni : FAR
- EXTRN __storl : FAR
-
- M_RESET EQU 0
- M_SHOW EQU 1
- M_REMOVE EQU 2
- M_READ EQU 3
- M_CURS_WIDTH EQU 8
- M_CURS_HEIGHT EQU 8
-
- MOUSE_INT EQU 33H
-
- DGROUP GROUP data
-
- data SEGMENT PUBLIC 'DATA'
- ;
- ; <your data declarations>
- ;
- data ENDS
-
- code SEGMENT 'CODE'
- ASSUME cs:code, ds:DGROUP
-
- MouseInit PROC FAR
-
- push bp ; Save registers
- mov bp,sp
- push ds
- push es
- push si
- push di
-
- ; AX or AH / AL ??
- mov ax, M_RESET
- int MOUSE_INT
-
- ; in preparation for call to _retl
- push ax
-
- ; bx has number of buttons. We must pass this back to
- ; the parameter Clipper passed by reference
- ; bx into parameter 1 - must push in reverse order
- mov ax, 1
- push ax ; into parameter number 1
- push bx
- call __storni
- add sp, 4
-
- ; return ax we previously pushed
- call __retl
- add sp, 2
-
- pop di ; Restore registers
- pop si
- pop es
- pop ds
- pop bp
-
- ret
- MouseInit ENDP ; End of routine
-
- MouseOn PROC FAR
-
- push bp ; Save registers
- mov bp,sp
- push ds
- push es
- push si
- push di
-
- mov ax, M_SHOW
- int MOUSE_INT
-
- pop di ; Restore registers
- pop si
- pop es
- pop ds
- pop bp
-
- ret
-
- MouseOn ENDP
-
- MouseOff PROC FAR
-
- push bp ; Save registers
- mov bp,sp
- push ds
- push es
- push si
- push di
-
- mov ax, M_REMOVE
- int MOUSE_INT
-
- pop di ; Restore registers
- pop si
- pop es
- pop ds
- pop bp
-
- ret
-
- MouseOff ENDP
-
- MouseRead PROC FAR
-
- push bp ; Save registers
- mov bp,sp
- push ds
- push es
- push si
- push di
-
- mov ax, M_READ
- int MOUSE_INT
-
- push cx
- push dx
- push bx
-
- ; in preparation for parameter # 1
- mov ax, 1
- push ax
- test bl, 1 ; bit 0 set means left down
- jnz left_down
- left_not_down:
- xor ax, ax ; make it 0
- push ax
- jmp set_p1
- left_down:
- ; ax is 1 from whence we came
- push ax
- set_p1:
- call __storl
- add sp, 4
- check_right:
- pop bx
- ; in preparation for parameter # 2
- mov ax, 2
- push ax
- test bl, 2 ; bit 1 set means right down
- jnz right_down
- right_not_down:
- xor ax, ax
- push ax
- jmp set_p2
- right_down:
- ; ax is 2 here
- push ax
- set_p2:
- call __storl
- add sp, 4
-
- set_row:
- pop dx ; row
- mov ax, 3
- push ax
- push dx
- call __storni
- add sp, 4
-
- set_col:
- pop cx ; column
- mov ax, 4
- push ax
- push cx
- call __storni
- add sp, 4
-
- pop di ; Restore registers
- pop si
- pop es
- pop ds
- pop bp
-
- ret
-
- MouseRead ENDP
-
-
- code ENDS ; End of code segment
- END
-