home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_BAS / DNALIB59.ZIP / MOUSE.BAS < prev    next >
BASIC Source File  |  1994-02-06  |  6KB  |  216 lines

  1. SUB LocateCursor (Row%, Col%)PUBLIC
  2.      REG 4, 8 * (Row% - 1)
  3.      REG 3, 8 * (Col% - 1)
  4.      REG 1, 4
  5.      CALL INTERRUPT &H33
  6. END SUB
  7. '----------------------------------------------------------------------------
  8. SUB FindMenu(Row%,Col%,Found%)PUBLIC
  9.  
  10. Found% = 0
  11. Find% = SCREEN(Row%,Col%)
  12.  IF CHR$(Find%) = CHR$(32) THEN  'which side closest left or right
  13.    EndCol% = Col%
  14.    StartCol% = Col%
  15.    DO
  16.      IF EndCol% > 1 THEN DECR EndCol%
  17.      IF StartCol% < 80 THEN INCR StartCol%
  18.      RightFind% = SCREEN(Row%,StartCol%)
  19.      IF CHR$(RightFind%) <> CHR$(32) THEN
  20.        Col% = StartCol%
  21.        EXIT LOOP
  22.      END IF
  23.       LeftFind% = SCREEN(Row%,EndCol%)
  24.       IF CHR$(LeftFind%) <> CHR$(32) THEN
  25.         Col% = EndCol%
  26.         EXIT LOOP
  27.       END IF
  28.     LOOP UNTIL StartCol% = 80 AND EndCol% = 1
  29. END IF
  30.  
  31. FOR i% = 1 TO Col%
  32.   Find% = SCREEN(Row%,i%)
  33.     IF CHR$(Find%) <> CHR$(32) THEN
  34.       INCR Found%
  35.       DO
  36.         Find% = SCREEN(Row%,i%)
  37.         INCR i%
  38.       LOOP UNTIL Find% = 32 OR i% = Col%
  39.     END IF
  40. NEXT i%
  41.  
  42. END SUB
  43. '----------------------------------------------------------------------------
  44. SUB ScreenPlus(Row%,Col%,TextFound$)PUBLIC
  45.  
  46. TextFound$ = ""
  47.  
  48.   Find% = SCREEN(Row%,Col%)
  49.   IF CHR$(Find%) = CHR$(32) THEN  'which side closest left or right
  50.     EndCol% = Col%
  51.     StartCol% = Col%
  52.     DO
  53.       IF EndCol% > 1 THEN DECR EndCol%
  54.       IF StartCol% < 80 THEN INCR StartCol%
  55.       RightFind% = SCREEN(Row%,StartCol%)
  56.       IF CHR$(RightFind%) <> CHR$(32) THEN
  57.         Col% = StartCol%
  58.         DO
  59.           Find% = SCREEN(Row%,Col%)
  60.           TextFound$ = TextFound$ + CHR$(Find%)
  61.           INCR Col%
  62.         LOOP UNTIL CHR$(Find%) = CHR$(32) OR Col% = 81
  63.         TextFound$ = RTRIM$(TextFound$)
  64.         EXIT LOOP
  65.       END IF
  66.       LeftFind% = SCREEN(Row%,EndCol%)
  67.       IF CHR$(LeftFind%) <> CHR$(32) THEN
  68.         Col% = EndCol%
  69.           DO
  70.             Find% = SCREEN(Row%,Col%)
  71.             TextFound$ = CHR$(Find%) + TextFound$
  72.             DECR Col%
  73.           LOOP UNTIL CHR$(Find%) = CHR$(32) OR Col% = 0
  74.           TextFound$ = LTRIM$(TextFound$)
  75.           EXIT LOOP
  76.         END IF
  77.     LOOP UNTIL StartCol% = 80 AND EndCol% = 1
  78.   ELSE
  79.     IF Col% > 1 THEN
  80.       StartCol% = Col%
  81.       FOR i% = 1 TO Col%
  82.         DECR StartCol%
  83.         IF StartCol% THEN Find% = SCREEN(Row%,StartCol%)
  84.         IF CHR$(Find%) = CHR$(32) OR StartCol% = 0 THEN
  85.           Col% = StartCol% + 1
  86.           DO
  87.             Find% = SCREEN(Row%,Col%)
  88.             TextFound$ = TextFound$ + CHR$(Find%)
  89.             INCR Col%
  90.           LOOP UNTIL CHR$(Find%) = CHR$(32) OR Col% = 81
  91.           TextFound$ = RTRIM$(TextFound$)
  92.           EXIT FOR
  93.         END IF
  94.       NEXT i%
  95.     ELSE
  96.       DO
  97.         Find% = SCREEN(Row%,Col%)
  98.         TextFound$ = TextFound$ + CHR$(Find%)
  99.         INCR Col%
  100.       LOOP UNTIL CHR$(Find%) = CHR$(32) OR Col% = 81
  101.       TextFound$ = RTRIM$(TextFound$)
  102.     END IF
  103.   END IF
  104.  
  105. END SUB
  106. '----------------------------------------------------------------------------
  107. FUNCTION MouseThere%()PUBLIC
  108.          REG 1,0
  109.          CALL INTERRUPT &H33
  110.          MouseThere%=REG(1)
  111. END FUNCTION
  112. '----------------------------------------------------------------------------
  113. SUB ShowCursor()PUBLIC
  114.      REG 1,1
  115.      CALL INTERRUPT &H33
  116. END SUB
  117. '----------------------------------------------------------------------------
  118. SUB HideCursor()PUBLIC
  119.      REG 1,2
  120.      CALL INTERRUPT &H33
  121. END SUB
  122. '----------------------------------------------------------------------------
  123. SUB Clicked (Rgt%, Lft%, Row%, Col%)PUBLIC
  124.  
  125.      REG 1,3
  126.      CALL INTERRUPT &H33
  127.      SELECT CASE REG(2)
  128.             CASE 1
  129.                  Lft%=1
  130.             CASE 2
  131.                  Rgt%=1
  132.             CASE 3
  133.                  Lft%=1
  134.                  Rgt%=1
  135.      END SELECT
  136.  
  137.      Row%=REG(4) \ 8 + 1
  138.      Col%=REG(3) \ 8 + 1
  139.  
  140. END SUB
  141. '----------------------------------------------------------------------------
  142. FUNCTION LeftButtonReleased%()PUBLIC
  143.  
  144.      REG 1,3
  145.      CALL INTERRUPT &H33
  146.      Button% = REG(2)
  147.      IF Button% = 1 THEN
  148.        DELAY .05
  149.        REG 1,3
  150.        CALL INTERRUPT &H33
  151.        Button% = REG(2)
  152.        IF Button% = 0 THEN
  153.          LeftButtonReleased% = 1
  154.        ELSE
  155.          LeftButtonReleased% = 0
  156.        END IF
  157.      END IF
  158.  
  159. END FUNCTION
  160. '----------------------------------------------------------------------------
  161. FUNCTION RightButtonReleased%()PUBLIC
  162.  
  163.      REG 1,3
  164.      CALL INTERRUPT &H33
  165.      Button% = REG(2)
  166.      IF Button% = 2 THEN
  167.        DELAY .05
  168.        REG 1,3
  169.        CALL INTERRUPT &H33
  170.        Button% = REG(2)
  171.        IF Button% = 0 THEN
  172.          RightButtonReleased% = 1
  173.        ELSE
  174.          RightButtonReleased% = 0
  175.        END IF
  176.      END IF
  177.  
  178. END FUNCTION
  179. '----------------------------------------------------------------------------
  180. FUNCTION BothButtonReleased%()PUBLIC
  181.  
  182.      REG 1,3
  183.      CALL INTERRUPT &H33
  184.      Button% = REG(2)
  185.      IF Button% = 3 THEN
  186.        DELAY .05
  187.        REG 1,3
  188.        CALL INTERRUPT &H33
  189.        Button% = REG(2)
  190.        IF Button% = 0 THEN
  191.          BothButtonReleased% = 1
  192.        ELSE
  193.          BothButtonReleased% = 0
  194.        END IF
  195.      END IF
  196.  
  197. END FUNCTION
  198. '----------------------------------------------------------------------------
  199. FUNCTION CentreButtonReleased%()PUBLIC
  200.  
  201.      REG 1,3
  202.      CALL INTERRUPT &H33
  203.      Button% = REG(2)
  204.      IF Button% = 4 THEN
  205.        DELAY .05
  206.        REG 1,3
  207.        CALL INTERRUPT &H33
  208.        Button% = REG(2)
  209.        IF Button% = 0 THEN
  210.          CentreButtonReleased% = 1
  211.        ELSE
  212.          CentreButtonReleased% = 0
  213.        END IF
  214.      END IF
  215.  
  216. END FUNCTION