DECLARE SUB MouseShow () DECLARE SUB MouseStatus (lb AS INTEGER, rb AS INTEGER, x AS INTEGER, y AS INTEGER) DECLARE FUNCTION MouseInit% () DIM SHARED driverSeg AS LONG, driverOfs AS LONG DIM tmp AS STRING DIM lb AS INTEGER, rb AS INTEGER, x AS INTEGER, y AS INTEGER ' Get driver address DEF SEG = 0 driverSeg = (256& * PEEK(207) + PEEK(206)) driverOfs = (256& * PEEK(205) + PEEK(204)) + 2 ' See if mouse is available IF (NOT MouseInit%) THEN PRINT "Mouse not found" END END IF CLS MouseShow DO MouseStatus lb, rb, x, y LOCATE 1, 1: PRINT "(" + LTRIM$(STR$(x)) + "," + STR$(y) + ") - LB:"; lb, "RB:"; rb tmp = INKEY$ LOOP UNTIL LEN(tmp) END ' Hide mouse (set ax register to 2) SUB MouseHide DEF SEG = driverSeg CALL ABSOLUTE(2, 0, 0, 0, driverOfs) DEF SEG END SUB ' Initialize mouse (set ax register to 0, test return value) FUNCTION MouseInit% IF ((driverSeg = 0) AND ((driverOfs - 2) = 0)) THEN EXIT FUNCTION DEF SEG = driverSeg IF (PEEK(driverOfs - 2) <> 207) THEN MouseInit% = -1 CALL ABSOLUTE(0, 0, 0, 0, driverOfs) END IF DEF SEG END FUNCTION ' Show mouse (set ax register to 1) SUB MouseShow DEF SEG = driverSeg CALL ABSOLUTE(1, 0, 0, 0, driverOfs) DEF SEG END SUB ' Get mouse (set ax register to 3, test return values) SUB MouseStatus (lb AS INTEGER, rb AS INTEGER, x AS INTEGER, y AS INTEGER) DIM bx AS INTEGER DEF SEG = driverSeg CALL ABSOLUTE(3, bx, x, y, driverOfs) DEF SEG lb = ((bx AND 1) <> 0) rb = ((bx AND 2) <> 0) END SUB