home *** CD-ROM | disk | FTP | other *** search
- '*******************************************************************
- '* INTRRUPT.BAS *
- '* 6/24/88 by Dave Tryon, Microsoft Product Support *
- '* *
- '* Demonstrates calling mouse functions using CALL INTERRUPT *
- '* *
- '* To load QB.QLB into memory with QuickBASIC, type: QB /L QB.QLB *
- '* Assumes EGA - For CGA change SCREEN and LINE statements *
- '*******************************************************************
-
- ' Initialization
- DEFINT A-Z
- DIM CURSOR(15, 1)
- COMMON CURSOR()
- CLS
-
- ' Define Cursor Array
- CURSOR(0, 0) = &HE1FF
- CURSOR(1, 0) = &HE1FF
- CURSOR(2, 0) = &HE1FF
- CURSOR(3, 0) = &HE1FF
- CURSOR(4, 0) = &HE1FF
- CURSOR(5, 0) = &HE000
- CURSOR(6, 0) = &HE000
- CURSOR(7, 0) = &HE000
- CURSOR(8, 0) = &H0
- CURSOR(9, 0) = &H0
- CURSOR(10, 0) = &H0
- CURSOR(11, 0) = &H0
- CURSOR(12, 0) = &H0
- CURSOR(13, 0) = &H0
- CURSOR(14, 0) = &H0
- CURSOR(15, 0) = &H0
-
- CURSOR(0, 1) = &H1E00
- CURSOR(1, 1) = &H1200
- CURSOR(2, 1) = &H1200
- CURSOR(3, 1) = &H1200
- CURSOR(4, 1) = &H1200
- CURSOR(5, 1) = &H13FF
- CURSOR(6, 1) = &H1249
- CURSOR(7, 1) = &H1249
- CURSOR(8, 1) = &HF249
- CURSOR(9, 1) = &H9001
- CURSOR(10, 1) = &H9001
- CURSOR(11, 1) = &H9001
- CURSOR(12, 1) = &H8001
- CURSOR(13, 1) = &H8001
- CURSOR(14, 1) = &H8001
- CURSOR(15, 1) = &HFFFF
-
- TYPE REGTYPE
- ax AS INTEGER
- bx AS INTEGER
- cx AS INTEGER
- dx AS INTEGER
- bp AS INTEGER
- si AS INTEGER
- di AS INTEGER
- ds AS INTEGER
- es AS INTEGER
- END TYPE
-
- DIM INREGS AS REGTYPE, OUTREGS AS REGTYPE
- DEF SEG = 0
- CLS
-
- MSEG = 256 * PEEK(51 * 4 + 3) + PEEK(51 * 4 + 2)
- MOUSE1 = 256 * PEEK(51 * 4 + 1) + PEEK(51 * 4) + 2
-
- IF MSEG OR (MOUSE1 - 2) THEN
- DEF SEG = MSEG
- IF PEEK(MOUSE1 - 2) <> 207 THEN
-
- SCREEN 9
-
- ' Function 0 Mouse Reset and Status
- INREGS.ax = 0
- CALL INTERRUPT(&H33, INREGS, OUTREGS)
-
- ' Function 7 Limit Horizontal Motion
- INREGS.ax = 7
- INREGS.cx = 100
- INREGS.dx = 540
- CALL INTERRUPT(&H33, INREGS, OUTREGS)
-
- ' Function 8 Limit Vertical Motion
- INREGS.ax = 8
- INREGS.cx = 50
- INREGS.dx = 300
- CALL INTERRUPT(&H33, INREGS, OUTREGS)
-
- ' Draw box to show mouse motion range
- COLOR 1
- LINE (100, 50)-(540, 50)
- LINE (540, 50)-(540, 300)
- LINE (540, 300)-(100, 300)
- LINE (100, 300)-(100, 50)
-
- ' Function 9 Set Graphics Cursor Block (custom cursor)
- INREGS.ax = 9
- INREGS.bx = 5
- INREGS.cx = 0
- INREGS.dx = VARPTR(CURSOR(0, 0))
- CALL INTERRUPT(&H33, INREGS, OUTREGS)
-
- ' Function 1 Show Cursor
- INREGS.ax = 1
- CALL INTERRUPT(&H33, INREGS, OUTREGS)
-
- ' Loop until button pressed
-
- COLOR 7
- OUTREGS.bx = 0
- WHILE (OUTREGS.bx = 0)
- ' Function 3 Get Mouse Status and Mouse Position
- INREGS.ax = 3
- CALL INTERRUPT(&H33, INREGS, OUTREGS)
- ' Print Cursor Location
- LOCATE 2, 2
- PRINT OUTREGS.cx, OUTREGS.dx
- WEND
-
- ' Function 2 Hide Cursor
- INREGS.ax = 2
- CALL INTERRUPT(&H33, INREGS, OUTREGS)
-
- ELSE PRINT "Mouse Driver Not Found.": END
- END IF
-
- ELSE PRINT "Mouse Driver Not Found.": END
- END IF
-