'=========================================================================== ' Subject: MOUSE TESTER Date: Unknown Date ' Author: Chris Wagner Code: QB, PDS ' Origin: FidoNet QUIK_BAS Echo Packet: MOUSE.ABC '=========================================================================== '*** "Mouse Tester" by Chris Wagner '*** REM $INCLUDE: 'QB.BI' '*** use QBX.BI in PDS7 DECLARE SUB Mouseon () DECLARE SUB MouseOff () DECLARE SUB MouseSetHor (Min%, Max%) DECLARE SUB MouseSetVert (Min%, Max%) DECLARE SUB MouseLocate (Xpos%, Ypos%) DECLARE SUB MouseStatus (Vert%, Hor%, Mbuttons$) DECLARE FUNCTION MouseInstalled% () DIM SHARED RegX AS RegTypeX CLS LOCATE 2, 20: PRINT "Mouse Tester By Chris Wagner"; LOCATE 4, 20 IF MouseInstalled% THEN PRINT "Mouse found and reset." ELSE PRINT "Mouse not found." END END IF LOCATE 14, 30: PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"; LOCATE 15, 30: PRINT "º Press Q to Quit º"; LOCATE 16, 30: PRINT "º or Click here º"; LOCATE 17, 30: PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"; CALL MouseSetHor(1, 80) CALL MouseSetVert(1, 25) CALL MouseLocate(20, 70) CALL Mouseon LOCATE 25, 1: PRINT "X Coord: Y Coord: "; DO CALL MouseStatus(Vert%, Hor%, Mbuttons$) LOCATE 25, 10: PRINT LTRIM$(STR$(Vert%)); " "; LOCATE 25, 26: PRINT LTRIM$(STR$(Hor%)); " "; LOCATE 25, 48: PRINT Mbuttons$; A$ = UCASE$(INKEY$) IF Mbuttons$ = "L " OR A$ = "Q" THEN IF Vert% >= 14 AND Vert% <= 17 OR A$ = "Q" THEN IF Hor% >= 30 AND Hor% <= 52 OR A$ = "Q" THEN MouseOff CLS SYSTEM END IF END IF END IF LOOP '====[ EOF ]==== FUNCTION MouseInstalled% DEF SEG = 0 MouseSeg& = 256& * PEEK(207) + PEEK(206) MouseOfs& = 256& * PEEK(205) + PEEK(204) + 2 DEF SEG = MouseSeg& IF (MouseSeg& = 0 AND MouseOfs& = 0) OR PEEK(MouseOfs&) = 207 THEN MouseInstalled% = 0 EXIT FUNCTION ELSE MouseInstalled% = -1 END IF DEF SEG RegX.ax = 0 CALL INTERRUPTX(&H33, RegX, RegX) IF RegX.ax = -1 THEN MouseInstalled% = -1 ELSE MouseInstalled% = 0 END IF END FUNCTION SUB MouseLocate (Xpos%, Ypos%) RegX.dx = (Xpos% * 8) - 1 RegX.cx = (Ypos% * 8) - 1 RegX.ax = 4 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB MouseOff RegX.ax = 2 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB Mouseon RegX.ax = 1 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB MouseSetHor (Min%, Max%) RegX.cx = (Min% * 8) - 1 RegX.dx = (Max% * 8) - 1 RegX.ax = 7 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB MouseSetVert (Min%, Max%) RegX.cx = (Min% * 8) - 1 RegX.dx = (Max% * 8) - 1 RegX.ax = 8 CALL INTERRUPTX(&H33, RegX, RegX) END SUB SUB MouseStatus (Vert%, Hor%, Mbuttons$) RegX.ax = 3 CALL INTERRUPTX(&H33, RegX, RegX) Vert% = (RegX.dx / 8) + 1 Hor% = (RegX.cx / 8) + 1 SELECT CASE RegX.bx CASE 0 Mbuttons$ = " " CASE 1 Mbuttons$ = "L " CASE 2 Mbuttons$ = " R" CASE 3 Mbuttons$ = "L R" CASE 4 Mbuttons$ = " C " END SELECT END SUB