home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of Shareware - Software Farm 2
/
wosw_2.zip
/
wosw_2
/
PRINTING
/
NOV89.ZIP
/
MOUSE1.BAS
next >
Wrap
BASIC Source File
|
1989-07-18
|
3KB
|
131 lines
' Save as Mouse1.Bas
' Requires QB.BI, QB.QLB, and QB.LIB from the
' Quick Basic 4.5 distribution disks
' To use in the QB environment: QB /LQB Mouse1
'
' To compile with BC: BC Mouse1;
' Link Mouse1,,,QB
DEFINT A-Z
' $INCLUDE: 'QB.BI'
DECLARE FUNCTION MouseReady% ()
DECLARE SUB MouseVersion ()
DECLARE SUB MakeMouseVisible ()
DECLARE SUB Report ()
DECLARE SUB MakeMouseInvisible ()
DECLARE SUB MouseStatus (Button%, Horiz%, Vert%)
CONST FALSE = 0
CONST TRUE = NOT FALSE
CONST MOUSE = &H33
CONST DOS = &H21
DIM SHARED InReg AS RegType, OutReg AS RegType
DIM SHARED InRegX AS RegTypeX, OutRegX AS RegTypeX
DIM SHARED MouseButtons, MouseVisible
MouseVisible = FALSE
CLS
IF MouseReady = FALSE THEN
PRINT "The mouse is not installed"
END
END IF
PRINT "Your mouse has"; MouseButtons; "buttons and is properly installed"
MouseVersion
MakeMouseVisible
PRINT "Press ESC to end"
DO UNTIL INKEY$ = CHR$(27)
Report
LOOP
END
FUNCTION MouseReady
InRegX.AX = &H3500 + MOUSE
CALL INTERRUPTX(DOS, InRegX, OutRegX)
IF OutRegX.ES = 0 THEN
MouseReady = FALSE
EXIT FUNCTION
END IF
InRegs.AX = 0
CALL interrupt(MOUSE, InReg, OutReg)
MouseReady = OutReg.AX
MouseButtons = OutReg.BX
END FUNCTION
SUB MouseVersion
InReg.AX = 36
CALL interrupt(MOUSE, InReg, OutReg)
MajorVersion = (OutReg.BX AND &HFF00) \ 256
MajorVersion$ = MID$(STR$(MajorVersion), 2)
MinorVersionA = (OutReg.BX AND &HF0)
MinorVersionB = (OutReg.BX AND &HF)
MinorVersion$ = "." + MID$(STR$(MinorVersionA), 2)
MinorVersion$ = MinorVersion$ + MID$(STR$(MinorVersionB), 2)
PRINT "Your mouse software reports it is driver version ";
PRINT MajorVersion$; MinorVersion$
END SUB
SUB MakeMouseVisible
IF MouseVisible = FALSE THEN
InReg.AX = 1
CALL interrupt(MOUSE, InReg, OutReg)
MouseVisible = TRUE
END IF
END SUB
SUB MakeMouseInvisible
IF MouseVisible = TRUE THEN
InReg.AX = 2
CALL interrupt(MOUSE, InReg, OutReg)
MouseVisible = FALSE
END IF
END SUB
SUB Report
STATIC OldButton, OldHoriz, OldVert
CALL MouseStatus(Button, Horiz, Vert)
IF Button <> OldButton OR Horiz <> OldHoriz OR Vert <> OldVert THEN
MakeMouseInvisible
LOCATE 5, 1
IF Button AND 1 THEN
PRINT "Left On ";
ELSE
PRINT "Left Off ";
END IF
IF Button AND 4 THEN
PRINT "Middle On ";
ELSE
PRINT "Middle Off ";
END IF
IF Button AND 2 THEN
PRINT "Right On "
ELSE
PRINT "Right Off "
END IF
LOCATE 7, 1
PRINT "Horizontal:"; Horiz, "Vertical:"; Vert
OldButton = Button
OldHoriz = Horiz
OldVert = Vert
MakeMouseVisible
END IF
END SUB
SUB MouseStatus (Button, Horiz, Vert)
InReg.AX = 3
CALL interrupt(MOUSE, InReg, OutReg)
Button = OutReg.BX
Horiz = OutReg.CX
Vert = OutReg.DX
END SUB