home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / MSMOUSE1.ZIP / BAS.ZIP / INTRRUPT.BAS < prev    next >
Encoding:
BASIC Source File  |  1988-11-23  |  3.8 KB  |  133 lines

  1.   '*******************************************************************
  2.   '*  INTRRUPT.BAS                                                   *
  3.   '*  6/24/88 by Dave Tryon, Microsoft Product Support               *
  4.   '*                                                                 *
  5.   '*  Demonstrates calling mouse functions using CALL INTERRUPT      *
  6.   '*                                                                 *
  7.   '*  To load QB.QLB into memory with QuickBASIC, type: QB /L QB.QLB *
  8.   '*  Assumes EGA - For CGA change SCREEN and LINE statements        *
  9.   '*******************************************************************
  10.  
  11.   ' Initialization
  12.     DEFINT A-Z
  13.     DIM CURSOR(15, 1)
  14.     COMMON CURSOR()
  15.     CLS
  16.  
  17.   ' Define Cursor Array
  18.     CURSOR(0, 0) = &HE1FF
  19.     CURSOR(1, 0) = &HE1FF
  20.     CURSOR(2, 0) = &HE1FF
  21.     CURSOR(3, 0) = &HE1FF
  22.     CURSOR(4, 0) = &HE1FF
  23.     CURSOR(5, 0) = &HE000
  24.     CURSOR(6, 0) = &HE000
  25.     CURSOR(7, 0) = &HE000
  26.     CURSOR(8, 0) = &H0
  27.     CURSOR(9, 0) = &H0
  28.     CURSOR(10, 0) = &H0
  29.     CURSOR(11, 0) = &H0
  30.     CURSOR(12, 0) = &H0
  31.     CURSOR(13, 0) = &H0
  32.     CURSOR(14, 0) = &H0
  33.     CURSOR(15, 0) = &H0
  34.  
  35.     CURSOR(0, 1) = &H1E00
  36.     CURSOR(1, 1) = &H1200
  37.     CURSOR(2, 1) = &H1200
  38.     CURSOR(3, 1) = &H1200
  39.     CURSOR(4, 1) = &H1200
  40.     CURSOR(5, 1) = &H13FF
  41.     CURSOR(6, 1) = &H1249
  42.     CURSOR(7, 1) = &H1249
  43.     CURSOR(8, 1) = &HF249
  44.     CURSOR(9, 1) = &H9001
  45.     CURSOR(10, 1) = &H9001
  46.     CURSOR(11, 1) = &H9001
  47.     CURSOR(12, 1) = &H8001
  48.     CURSOR(13, 1) = &H8001
  49.     CURSOR(14, 1) = &H8001
  50.     CURSOR(15, 1) = &HFFFF
  51.  
  52.     TYPE REGTYPE
  53.         ax AS INTEGER
  54.         bx AS INTEGER
  55.         cx AS INTEGER
  56.         dx AS INTEGER
  57.         bp AS INTEGER
  58.         si AS INTEGER
  59.         di AS INTEGER
  60.         ds AS INTEGER
  61.         es AS INTEGER
  62.     END TYPE
  63.  
  64.     DIM INREGS AS REGTYPE, OUTREGS AS REGTYPE
  65.     DEF SEG = 0
  66.     CLS
  67.  
  68.     MSEG = 256 * PEEK(51 * 4 + 3) + PEEK(51 * 4 + 2)
  69.     MOUSE1 = 256 * PEEK(51 * 4 + 1) + PEEK(51 * 4) + 2
  70.  
  71.     IF MSEG OR (MOUSE1 - 2) THEN
  72.         DEF SEG = MSEG
  73.         IF PEEK(MOUSE1 - 2) <> 207 THEN
  74.  
  75.             SCREEN 9
  76.  
  77.           ' Function 0  Mouse Reset and Status
  78.             INREGS.ax = 0
  79.             CALL INTERRUPT(&H33, INREGS, OUTREGS)
  80.  
  81.           ' Function 7  Limit Horizontal Motion
  82.             INREGS.ax = 7
  83.             INREGS.cx = 100
  84.             INREGS.dx = 540
  85.             CALL INTERRUPT(&H33, INREGS, OUTREGS)
  86.  
  87.           ' Function 8  Limit Vertical Motion
  88.             INREGS.ax = 8
  89.             INREGS.cx = 50
  90.             INREGS.dx = 300
  91.             CALL INTERRUPT(&H33, INREGS, OUTREGS)
  92.  
  93.           ' Draw box to show mouse motion range
  94.             COLOR 1
  95.             LINE (100, 50)-(540, 50)
  96.             LINE (540, 50)-(540, 300)
  97.             LINE (540, 300)-(100, 300)
  98.             LINE (100, 300)-(100, 50)
  99.  
  100.           ' Function 9  Set Graphics Cursor Block (custom cursor)
  101.             INREGS.ax = 9
  102.             INREGS.bx = 5
  103.             INREGS.cx = 0
  104.             INREGS.dx = VARPTR(CURSOR(0, 0))
  105.             CALL INTERRUPT(&H33, INREGS, OUTREGS)
  106.  
  107.           ' Function 1  Show Cursor
  108.             INREGS.ax = 1
  109.             CALL INTERRUPT(&H33, INREGS, OUTREGS)
  110.  
  111.           ' Loop until button pressed
  112.  
  113.             COLOR 7
  114.             OUTREGS.bx = 0
  115.             WHILE (OUTREGS.bx = 0)
  116.               ' Function 3  Get Mouse Status and Mouse Position
  117.                 INREGS.ax = 3
  118.                 CALL INTERRUPT(&H33, INREGS, OUTREGS)
  119.               ' Print Cursor Location
  120.                 LOCATE 2, 2
  121.                 PRINT OUTREGS.cx, OUTREGS.dx
  122.             WEND
  123.  
  124.           ' Function 2  Hide Cursor
  125.             INREGS.ax = 2
  126.             CALL INTERRUPT(&H33, INREGS, OUTREGS)
  127.  
  128.         ELSE PRINT "Mouse Driver Not Found.": END
  129.         END IF
  130.  
  131.     ELSE PRINT "Mouse Driver Not Found.": END
  132.     END IF
  133.