home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 04 / einstieg / joystick.inc
Encoding:
Text File  |  1989-01-18  |  6.5 KB  |  221 lines

  1. '* ------------------------------------------------------- *
  2. '*                  JOYSTICK.INC                           *
  3. '*       Bibliothek der Analog-Joystick-Routinen           *
  4. '*           (c) 1989 Jörg Braun  &  TOOLBOX               *
  5. '* ------------------------------------------------------- *
  6. SUB Joysticks.ON  STATIC
  7.                 ' Einschalten des Tasteninterrupts wenn ein
  8.                 ' Joystick vorhanden ist:
  9. SHARED joystick.1, joystick.2
  10.  
  11. IF joystick.1=%true THEN
  12.   STRIG(0) ON
  13.   STRIG(2) ON
  14. END IF
  15. IF joystick.2=%true THEN
  16.   STRIG(4) ON
  17.   STRIG(6) ON
  18. END IF
  19.  
  20. END SUB
  21. '* ------------------------------------------------------- *
  22. SUB Joytest.1 (joystick.1)
  23.                ' Überprüfung ob Analogjoystick A ein Signal
  24.                ' gibt ──> Ausschlag > 0 in X und Y
  25.  
  26. IF STICK(0) > %false AND STICK(1) > %false THEN
  27.   joystick.1 = %true
  28. ELSE
  29.   joystick.1 = %false
  30. END IF
  31.  
  32. END SUB
  33. '* ------------------------------------------------------- *
  34. SUB Joytest.2 (joystick.2)
  35.                ' Überprüfung ob Analogjoystick B ein Signal
  36.                ' gibt ──> Ausschlag > 0 in X und Y
  37.  
  38. IF STICK(2) > %false AND STICK(3) > %false THEN
  39.   joystick.2=%true
  40. ELSE
  41.   joystick.2=%false
  42. END IF
  43.  
  44. END SUB
  45. '* ------------------------------------------------------- *
  46. DEF FN Joybutton.1
  47.             ' Joystickbutton 1 gedrückt ?  Es erfolgt keine
  48.             ' Unterscheidung ob Joystick A (STRIG (3)) oder
  49.             ' Joystick B (STRIG (7)) aktiviert ist.
  50.  
  51. IF STRIG(3) = %true OR STRIG(7) = %true THEN
  52.   FN Joybutton.1 = %true
  53. ELSEIF STRIG(3) = %false AND STRIG(7) = %false THEN
  54.   FN Joybutton.1 = %false
  55. END IF
  56.  
  57. END DEF
  58. '* ------------------------------------------------------- *
  59. DEF FN Joybutton.2
  60.             ' Joystickbutton 2 gedrückt ?  Es erfolgt keine
  61.             ' Unterscheidung ob Joystcik A (STRIG (1)) oder
  62.             ' Joystick B (STRIG (5)).
  63.  
  64. IF STRIG(1) = %true OR STRIG(5) = %true THEN
  65.   FN Joybutton.2 = %true
  66. ELSEIF STRIG(1) = %false AND STRIG(5) = %false THEN
  67.   FN Joybutton.2 = %false
  68. END IF
  69.  
  70. END DEF
  71. '* ------------------------------------------------------- *
  72. SUB Joystick.A (ascii$)
  73.            ' Abfrage der Bewegungsimpulse von Joystick A in
  74.            ' X- und Y-Richtung und Übersetzung in Keyboard-
  75.            ' tastenimpuls (Variable ascii$).
  76.            ' Bei einem eventuellen Wechsel der Taktfrequenz
  77.            ' ändert sich  auch  die Stärke des vom Joystick
  78.            ' gegebenen Impulses !
  79.            ' Joystickempfindlichkeit ggf. an den jeweiligen
  80.            ' Joystick anpassen !
  81.            ' idealer Mittelwert  : 128.
  82.            ' Gesamt-Impulsbereich: 1 - 256  (wird nicht mit
  83.            ' jedem Joystick erreicht).
  84.            ' Ein  defekter oder nicht angeschlossener  Joy-
  85.            ' gibt ein Signal der Stärke 0 zurück.
  86.  
  87. SELECT CASE STICK(0)
  88.   CASE > 130   : ascii$ = CHR$(0) + "M"
  89.   CASE 1 TO 45 : ascii$ = CHR$(0) + "K"
  90. END SELECT
  91. SELECT CASE STICK(1)
  92.   CASE > 130   : ascii$ = CHR$(0) + "P"
  93.   CASE 1 TO 45 : ascii$ = CHR$(0) + "H"
  94. END SELECT
  95.  
  96. END SUB
  97. '* ------------------------------------------------------- *
  98. SUB Joystick.B (ascii$)
  99.            ' Abfrage der Bewegungsimpulse von Joystick B in
  100.            ' X- und Y-Richtung und Übersetzung in Keyboard-
  101.            ' tastenimpuls (Variable ascii$).
  102.            ' Weitere Informationen in SUB Joystick.A
  103.  
  104. SELECT CASE STICK(2)
  105.   CASE > 130   : ascii$ = CHR$(0) + "M"
  106.   CASE 1 TO 45 : ascii$ = CHR$(0) + "K"
  107. END SELECT
  108. SELECT CASE STICK(3)
  109.   CASE > 130   : ascii$ = CHR$(0) + "P"
  110.   CASE 1 TO 45 : ascii$ = CHR$(0) + "H"
  111. END SELECT
  112.  
  113. END SUB
  114. '* ------------------------------------------------------- *
  115. SUB Joystickbewegungstest
  116.               ' Joystickzentrierung und Testen  der Buttons
  117.               ' von Joystick A und Joystick B.
  118.               ' Eine Ausgliederung als eigenes Programm ist
  119.               ' möglich. (Konstanten berücksichtigen!)
  120.               ' Verwendete Farbkonstanten:
  121.               ' %hellcyan=11: %rot=4: %schwarz=0: %grau=7
  122.               ' %weiss=15: %blau=1
  123.               ' Verwendete Boole'sche Konstanten:
  124.               ' %true = -1: %false = 0
  125. LOCAL zaehler
  126.  
  127. SCREEN 0,0,0
  128. COLOR %grau, %schwarz, %schwarz
  129. CLS
  130. LOCATE 24,28
  131. COLOR %blau + 8
  132. PRINT "Ende mit beliebiger Taste";
  133. COLOR %weiss, %blau
  134. LOCATE 2,27: PRINT " +-----------------------+ "
  135. LOCATE 3,27: PRINT " |  Joystickzentrierung  | "
  136. LOCATE 4,27: PRINT " |   (Idealwert = 128)   | "
  137. LOCATE 5,27: PRINT " +-----------------------+ "
  138. FOR zaehler = 0 TO 6 STEP 2
  139.   STRIG (zaehler) ON
  140. NEXT
  141.  
  142. DO WHILE INKEY$ = ""
  143.   LOCATE  8,34
  144.   COLOR %weiss, %schwarz
  145.   PRINT "Joystick  A:"
  146.   COLOR %hellcyan
  147.   LOCATE  9,34
  148.   IF STICK(0) > %false THEN
  149.     PRINT USING "X─Achse: ###          "; STICK(0)
  150.   ELSEIF STICK(0) = %false THEN
  151.     PRINT "X-Achse: ";
  152.     COLOR %rot + 8
  153.     PRINT "Impuls fehlt"
  154.   END IF
  155.   COLOR %hellcyan
  156.   LOCATE 10,34
  157.   IF STICK (1) > %false THEN
  158.     PRINT USING "Y─Achse: ###          "; STICK(1)
  159.   ELSEIF STICK(1) = %false THEN
  160.     PRINT "Y-Achse: ";
  161.     COLOR %rot + 8
  162.     PRINT "Impuls fehlt"
  163.   END IF
  164.   LOCATE 13,34
  165.   COLOR %weiss
  166.   PRINT "Joystick  B:"
  167.   COLOR %hellcyan
  168.                          ' Bei PRINT USING kein Bindestrich
  169.                          ' sondern ASCII 196 !
  170.   LOCATE 14,34
  171.   IF STICK(2) > %false THEN
  172.     PRINT USING "X─Achse: ###         "; STICK(2)
  173.   ELSEIF STICK(2) = %false THEN
  174.     PRINT "X-Achse: ";
  175.     COLOR %rot + 8
  176.     PRINT "Impuls fehlt"
  177.   END IF
  178.   LOCATE 15,34
  179.   COLOR %hellcyan
  180.   IF STICK(3) > %false THEN
  181.     PRINT USING "Y─Achse: ###          "; STICK(3)
  182.   ELSEIF STICK(3) = %false THEN
  183.     PRINT "Y-Achse: ";
  184.     COLOR %rot + 8
  185.     PRINT "Impuls fehlt"
  186.   END IF
  187.   COLOR %hellcyan
  188.   IF STRIG(1) = %true THEN
  189.     LOCATE 19,10
  190.     PRINT "Joystick A Button 1 an "
  191.   ELSEIF STRIG(1) = %false THEN
  192.     LOCATE 19,10
  193.     PRINT "Joystick A Button 1 aus"
  194.   END IF
  195.   IF STRIG(3) = %true THEN
  196.     LOCATE 19,45
  197.     PRINT "Joystick B Button 1 an "
  198.   ELSEIF STRIG(3) = %false THEN
  199.     LOCATE 19,45
  200.     PRINT "Joystick B Button 1 aus"
  201.   END IF
  202.   IF STRIG(5) = %true THEN
  203.     LOCATE 20,10
  204.     PRINT "Joystick A Button 2 an "
  205.   ELSEIF STRIG(5) = %false THEN
  206.     LOCATE 20,10
  207.     PRINT "Joystick A Button 2 aus"
  208.   END IF
  209.   IF STRIG(7) = %true THEN
  210.     LOCATE 20,45
  211.     PRINT "Joystick B Button 2 an "
  212.   ELSEIF STRIG(7) = %false THEN
  213.     LOCATE 20,45
  214.     PRINT "Joystick B Button 2 aus"
  215.   END IF
  216. LOOP
  217.  
  218. END SUB
  219. '* ------------------------------------------------------- *
  220. '*         Ende der Analog-Joystick-Routinen               *
  221.