JOY
Aus C64-Wiki
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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).