home *** CD-ROM | disk | FTP | other *** search
- '* ------------------------------------------------------- *
- '* JOYSTICK.INC *
- '* Bibliothek der Analog-Joystick-Routinen *
- '* (c) 1989 Jörg Braun & TOOLBOX *
- '* ------------------------------------------------------- *
- SUB Joysticks.ON STATIC
- ' Einschalten des Tasteninterrupts wenn ein
- ' Joystick vorhanden ist:
- SHARED joystick.1, joystick.2
-
- IF joystick.1=%true THEN
- STRIG(0) ON
- STRIG(2) ON
- END IF
- IF joystick.2=%true THEN
- STRIG(4) ON
- STRIG(6) ON
- END IF
-
- END SUB
- '* ------------------------------------------------------- *
- SUB Joytest.1 (joystick.1)
- ' Überprüfung ob Analogjoystick A ein Signal
- ' gibt ──> Ausschlag > 0 in X und Y
-
- IF STICK(0) > %false AND STICK(1) > %false THEN
- joystick.1 = %true
- ELSE
- joystick.1 = %false
- END IF
-
- END SUB
- '* ------------------------------------------------------- *
- SUB Joytest.2 (joystick.2)
- ' Überprüfung ob Analogjoystick B ein Signal
- ' gibt ──> Ausschlag > 0 in X und Y
-
- IF STICK(2) > %false AND STICK(3) > %false THEN
- joystick.2=%true
- ELSE
- joystick.2=%false
- END IF
-
- END SUB
- '* ------------------------------------------------------- *
- DEF FN Joybutton.1
- ' Joystickbutton 1 gedrückt ? Es erfolgt keine
- ' Unterscheidung ob Joystick A (STRIG (3)) oder
- ' Joystick B (STRIG (7)) aktiviert ist.
-
- IF STRIG(3) = %true OR STRIG(7) = %true THEN
- FN Joybutton.1 = %true
- ELSEIF STRIG(3) = %false AND STRIG(7) = %false THEN
- FN Joybutton.1 = %false
- END IF
-
- END DEF
- '* ------------------------------------------------------- *
- DEF FN Joybutton.2
- ' Joystickbutton 2 gedrückt ? Es erfolgt keine
- ' Unterscheidung ob Joystcik A (STRIG (1)) oder
- ' Joystick B (STRIG (5)).
-
- IF STRIG(1) = %true OR STRIG(5) = %true THEN
- FN Joybutton.2 = %true
- ELSEIF STRIG(1) = %false AND STRIG(5) = %false THEN
- FN Joybutton.2 = %false
- END IF
-
- END DEF
- '* ------------------------------------------------------- *
- SUB Joystick.A (ascii$)
- ' Abfrage der Bewegungsimpulse von Joystick A in
- ' X- und Y-Richtung und Übersetzung in Keyboard-
- ' tastenimpuls (Variable ascii$).
- ' Bei einem eventuellen Wechsel der Taktfrequenz
- ' ändert sich auch die Stärke des vom Joystick
- ' gegebenen Impulses !
- ' Joystickempfindlichkeit ggf. an den jeweiligen
- ' Joystick anpassen !
- ' idealer Mittelwert : 128.
- ' Gesamt-Impulsbereich: 1 - 256 (wird nicht mit
- ' jedem Joystick erreicht).
- ' Ein defekter oder nicht angeschlossener Joy-
- ' gibt ein Signal der Stärke 0 zurück.
-
- SELECT CASE STICK(0)
- CASE > 130 : ascii$ = CHR$(0) + "M"
- CASE 1 TO 45 : ascii$ = CHR$(0) + "K"
- END SELECT
- SELECT CASE STICK(1)
- CASE > 130 : ascii$ = CHR$(0) + "P"
- CASE 1 TO 45 : ascii$ = CHR$(0) + "H"
- END SELECT
-
- END SUB
- '* ------------------------------------------------------- *
- SUB Joystick.B (ascii$)
- ' Abfrage der Bewegungsimpulse von Joystick B in
- ' X- und Y-Richtung und Übersetzung in Keyboard-
- ' tastenimpuls (Variable ascii$).
- ' Weitere Informationen in SUB Joystick.A
-
- SELECT CASE STICK(2)
- CASE > 130 : ascii$ = CHR$(0) + "M"
- CASE 1 TO 45 : ascii$ = CHR$(0) + "K"
- END SELECT
- SELECT CASE STICK(3)
- CASE > 130 : ascii$ = CHR$(0) + "P"
- CASE 1 TO 45 : ascii$ = CHR$(0) + "H"
- END SELECT
-
- END SUB
- '* ------------------------------------------------------- *
- SUB Joystickbewegungstest
- ' Joystickzentrierung und Testen der Buttons
- ' von Joystick A und Joystick B.
- ' Eine Ausgliederung als eigenes Programm ist
- ' möglich. (Konstanten berücksichtigen!)
- ' Verwendete Farbkonstanten:
- ' %hellcyan=11: %rot=4: %schwarz=0: %grau=7
- ' %weiss=15: %blau=1
- ' Verwendete Boole'sche Konstanten:
- ' %true = -1: %false = 0
- LOCAL zaehler
-
- SCREEN 0,0,0
- COLOR %grau, %schwarz, %schwarz
- CLS
- LOCATE 24,28
- COLOR %blau + 8
- PRINT "Ende mit beliebiger Taste";
- COLOR %weiss, %blau
- LOCATE 2,27: PRINT " +-----------------------+ "
- LOCATE 3,27: PRINT " | Joystickzentrierung | "
- LOCATE 4,27: PRINT " | (Idealwert = 128) | "
- LOCATE 5,27: PRINT " +-----------------------+ "
- FOR zaehler = 0 TO 6 STEP 2
- STRIG (zaehler) ON
- NEXT
-
- DO WHILE INKEY$ = ""
- LOCATE 8,34
- COLOR %weiss, %schwarz
- PRINT "Joystick A:"
- COLOR %hellcyan
- LOCATE 9,34
- IF STICK(0) > %false THEN
- PRINT USING "X─Achse: ### "; STICK(0)
- ELSEIF STICK(0) = %false THEN
- PRINT "X-Achse: ";
- COLOR %rot + 8
- PRINT "Impuls fehlt"
- END IF
- COLOR %hellcyan
- LOCATE 10,34
- IF STICK (1) > %false THEN
- PRINT USING "Y─Achse: ### "; STICK(1)
- ELSEIF STICK(1) = %false THEN
- PRINT "Y-Achse: ";
- COLOR %rot + 8
- PRINT "Impuls fehlt"
- END IF
- LOCATE 13,34
- COLOR %weiss
- PRINT "Joystick B:"
- COLOR %hellcyan
- ' Bei PRINT USING kein Bindestrich
- ' sondern ASCII 196 !
- LOCATE 14,34
- IF STICK(2) > %false THEN
- PRINT USING "X─Achse: ### "; STICK(2)
- ELSEIF STICK(2) = %false THEN
- PRINT "X-Achse: ";
- COLOR %rot + 8
- PRINT "Impuls fehlt"
- END IF
- LOCATE 15,34
- COLOR %hellcyan
- IF STICK(3) > %false THEN
- PRINT USING "Y─Achse: ### "; STICK(3)
- ELSEIF STICK(3) = %false THEN
- PRINT "Y-Achse: ";
- COLOR %rot + 8
- PRINT "Impuls fehlt"
- END IF
- COLOR %hellcyan
- IF STRIG(1) = %true THEN
- LOCATE 19,10
- PRINT "Joystick A Button 1 an "
- ELSEIF STRIG(1) = %false THEN
- LOCATE 19,10
- PRINT "Joystick A Button 1 aus"
- END IF
- IF STRIG(3) = %true THEN
- LOCATE 19,45
- PRINT "Joystick B Button 1 an "
- ELSEIF STRIG(3) = %false THEN
- LOCATE 19,45
- PRINT "Joystick B Button 1 aus"
- END IF
- IF STRIG(5) = %true THEN
- LOCATE 20,10
- PRINT "Joystick A Button 2 an "
- ELSEIF STRIG(5) = %false THEN
- LOCATE 20,10
- PRINT "Joystick A Button 2 aus"
- END IF
- IF STRIG(7) = %true THEN
- LOCATE 20,45
- PRINT "Joystick B Button 2 an "
- ELSEIF STRIG(7) = %false THEN
- LOCATE 20,45
- PRINT "Joystick B Button 2 aus"
- END IF
- LOOP
-
- END SUB
- '* ------------------------------------------------------- *
- '* Ende der Analog-Joystick-Routinen *