JOY

Aus C64-Wiki

Wechseln zu: Navigation, Suche
JOY
Format: a = JOY
Parameter
keine
Einordnung
Typ: Systemvariable
Kontext: Peripheriekontrolle
Aufgabe: ermittelt den Zustand des Joysticks in Port 2
Shortcut: keiner
Verwandte Befehle
POT - PENX - PENY


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort JOY.

Typ: Systemvariable
Syntax: a = JOY
oder:   PRINT JOY

JOY liest den Wert des C64-Controlports 2 (CIA 1, $DC00) aus, um den dort angeschlossenen Joystick für das Programm nutzbar zu machen. Die Werte, die der Port liefert, werden übersetzt in Werte zwischen 0 und 8, wobei jeder Wert einer bestimmten Richtung zugeordnet ist. Wenn der Feuerknopf betätigt wird, addiert sich ein Wert von 128 zum Richtungswert hinzu:

Wert mit Feuer Richtung
0 128 -
1 129 N
2 130 NO
3 131 O
4 132 SO
5 133 S
6 134 SW
7 135 W
8 136 NW


Beispiel: 

1600 PROC stick
1610   x7=JOY:
       IF x7=0 THEN END PROC 
1620   IF x7=1 THEN x$="{crsr up}"
1630   IF x7=3 THEN x$="{crsr right}"
1640   IF x7=5 THEN x$="{crsr down}"
1650   IF x7=7 THEN x$="{crsr left}"
1660   IF x7>127 THEN x$=CHR$(13)
1670 END PROC 

Diese TSB-Abfrageroutine ist sinnvoll in Programmen mit kombinierter
Joystick-Tastatur-Bedienung. Eine solches Programm müsste die folgende 
Hauptabfrageroutine aufweisen (Ausschnitt, Achtung! TSB-Syntax, EXEC fehlt!):

1330     REPEAT :
           IF lg>0 THEN PRINT "_";
1332       GET x$:
           stick:
           IF x$="" THEN 1332
1335       IF x$=CHR$(20) THEN IF l THEN l=l-1:
             x9$=LEFT$(x9$,l):
             x$=x9$+" ":
             set:
             x$=""
1337     UNTIL x$>"":

Kommentar: In LG steht die zulässige Gesamtlänge der Eingabe, in L die aktuelle Länge. 
In X9$ wird die Summe der Eingabe-Tastendrücke zusammengestellt. CHR$(20) ist das Backspace-
Zeichen und löscht den rechten Rand von X9$, solange dort etwas vorhanden ist.

Dieser Befehl wurde in TSB um weitere Funktionen ergänzt, siehe JOY (TSB).

Persönliche Werkzeuge