JOY

Aus C64-Wiki
Zur Navigation springenZur Suche springen
JOY
Syntax: JOY
Parameter
keine
Einordnung
Typ: Systemvariable
Kontext: Peripheriekontrolle
Aufgabe: ermittelt den Zustand des Joysticks in Port 2
Abkürzung: keine
Token: $64 $51 (100 81)
Verwandte Befehle
POT - PENX - PENY


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

Typ: Systemvariable
Syntax: JOY

Das Auslesen der Systemvariable JOY ermittelt den Wert des C64-Controlports 2 (CIA 1, $DC00), 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:

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


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


Beispiel[Bearbeiten | Quelltext bearbeiten]

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 Variable LG steht die zulässige Gesamtlänge der Eingabe, in Variable L die aktuelle Länge.
In der Variable X9$ weren alle eingegebenen Tastendrücke gesammelt. CHR$(20) ist das Backspace-Zeichen und löscht den rechten Rand von X9$, solange dort etwas vorhanden ist.