home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / PRINTING / NOV89.ZIP / MOUSE1.BAS next >
BASIC Source File  |  1989-07-18  |  3KB  |  131 lines

  1. '  Save as Mouse1.Bas
  2. '  Requires QB.BI, QB.QLB, and QB.LIB from the 
  3. '    Quick Basic 4.5 distribution disks
  4. '  To use in the QB environment:   QB /LQB Mouse1
  5. '
  6. '  To compile with BC:             BC Mouse1;
  7. '                                  Link Mouse1,,,QB
  8.  
  9. DEFINT A-Z
  10. ' $INCLUDE: 'QB.BI'
  11.  
  12. DECLARE FUNCTION MouseReady% ()
  13. DECLARE SUB MouseVersion ()
  14. DECLARE SUB MakeMouseVisible ()
  15. DECLARE SUB Report ()
  16. DECLARE SUB MakeMouseInvisible ()
  17. DECLARE SUB MouseStatus (Button%, Horiz%, Vert%)
  18.  
  19. CONST FALSE = 0
  20. CONST TRUE = NOT FALSE
  21. CONST MOUSE = &H33
  22. CONST DOS = &H21
  23.  
  24. DIM SHARED InReg AS RegType, OutReg AS RegType
  25. DIM SHARED InRegX AS RegTypeX, OutRegX AS RegTypeX
  26. DIM SHARED MouseButtons, MouseVisible
  27.  
  28. MouseVisible = FALSE
  29. CLS
  30.  
  31. IF MouseReady = FALSE THEN
  32.     PRINT "The mouse is not installed"
  33.     END
  34. END IF
  35.  
  36. PRINT "Your mouse has"; MouseButtons; "buttons and is properly installed"
  37. MouseVersion
  38. MakeMouseVisible
  39.  
  40. PRINT "Press ESC to end"
  41.  
  42. DO UNTIL INKEY$ = CHR$(27)
  43.     Report
  44. LOOP
  45. END
  46.  
  47. FUNCTION MouseReady
  48.     InRegX.AX = &H3500 + MOUSE
  49.     CALL INTERRUPTX(DOS, InRegX, OutRegX)
  50.     IF OutRegX.ES = 0 THEN
  51.         MouseReady = FALSE
  52.         EXIT FUNCTION
  53.     END IF
  54.  
  55.     InRegs.AX = 0
  56.     CALL interrupt(MOUSE, InReg, OutReg)
  57.     MouseReady = OutReg.AX
  58.     MouseButtons = OutReg.BX
  59. END FUNCTION
  60.  
  61. SUB MouseVersion
  62.     InReg.AX = 36
  63.     CALL interrupt(MOUSE, InReg, OutReg)
  64.     MajorVersion = (OutReg.BX AND &HFF00) \ 256
  65.     MajorVersion$ = MID$(STR$(MajorVersion), 2)
  66.     MinorVersionA = (OutReg.BX AND &HF0)
  67.     MinorVersionB = (OutReg.BX AND &HF)
  68.     MinorVersion$ = "." + MID$(STR$(MinorVersionA), 2)
  69.     MinorVersion$ = MinorVersion$ + MID$(STR$(MinorVersionB), 2)
  70.     PRINT "Your mouse software reports it is driver version ";
  71.     PRINT MajorVersion$; MinorVersion$
  72. END SUB
  73.  
  74. SUB MakeMouseVisible
  75.     IF MouseVisible = FALSE THEN
  76.         InReg.AX = 1
  77.         CALL interrupt(MOUSE, InReg, OutReg)
  78.         MouseVisible = TRUE
  79.     END IF
  80. END SUB
  81.  
  82. SUB MakeMouseInvisible
  83.     IF MouseVisible = TRUE THEN
  84.         InReg.AX = 2
  85.         CALL interrupt(MOUSE, InReg, OutReg)
  86.         MouseVisible = FALSE
  87.     END IF
  88. END SUB
  89.  
  90. SUB Report
  91.     STATIC OldButton, OldHoriz, OldVert
  92.     CALL MouseStatus(Button, Horiz, Vert)
  93.     IF Button <> OldButton OR Horiz <> OldHoriz OR Vert <> OldVert THEN
  94.         MakeMouseInvisible
  95.         LOCATE 5, 1
  96.         IF Button AND 1 THEN
  97.             PRINT "Left On     ";
  98.         ELSE
  99.             PRINT "Left Off    ";
  100.         END IF
  101.  
  102.         IF Button AND 4 THEN
  103.             PRINT "Middle On   ";
  104.         ELSE
  105.             PRINT "Middle Off  ";
  106.         END IF
  107.  
  108.         IF Button AND 2 THEN
  109.             PRINT "Right On    "
  110.         ELSE
  111.             PRINT "Right Off   "
  112.         END IF
  113.  
  114.         LOCATE 7, 1
  115.         PRINT "Horizontal:"; Horiz, "Vertical:"; Vert
  116.         OldButton = Button
  117.         OldHoriz = Horiz
  118.         OldVert = Vert
  119.         MakeMouseVisible
  120.     END IF
  121. END SUB
  122.  
  123. SUB MouseStatus (Button, Horiz, Vert)
  124.     InReg.AX = 3
  125.     CALL interrupt(MOUSE, InReg, OutReg)
  126.     Button = OutReg.BX
  127.     Horiz = OutReg.CX
  128.     Vert = OutReg.DX
  129. END SUB
  130.  
  131.