JOY
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.
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE