PENX
PENX | |
Syntax: | PENX |
Parameter | |
keine | |
Einordnung | |
Typ: | Systemvariable |
Kontext: | Peripheriekontrolle |
Aufgabe: | ermittelt die X-Position eines Lightpens |
Abkürzung: | keine (TSB: pE) |
Token: | $64 $5d (100 93) |
Verwandte Befehle | |
JOY - POT - PENY |
Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort PENX.
Typ: Systemvariable Syntax: PENX
PENX fragt die X-Position eines am Controlport 1 angeschlossenen Lightpens ab (Speicherstelle $D013 im VIC). Die Spitze des Stifts ist dabei sensibel für das Aufblitzen des Elektronenstrahls des verwendeten Bildschirms/Monitors bei einem Durchgang an dieser Stelle, daher funktioniert so ein Gerät nicht mehr an modernen Flachbildschirmen.
Die Ordinatenangabe muss vor einer Verwendung in Programmen zunächst kalibriert werden, da nicht die Entfernung vom linken Rand des Grafik-/Textfensters auf dem Bildschirm, sondern von Rand des Bildschirms selbst vom Interpreter ausgegeben wird. Außerdem ist die X-Auflösung etwa doppelt so hoch wie die normale Pixelaulösung des C64, daher muss man die Rückgabe von PENX so auf Grafikkoordinaten umrechnen: x = PENX*2-40
Wobei der Wert 40 bei den Lightpens verschiedener Hersteller anders sein kann und angepasst werden muss. Auch kann sich der Wert für PENY von dem für PENX unterscheiden.
Beachten: Der korrespondierende Befehl PENY liefert nur dann sinnvolle Werte, wenn vorher PENX ausgeführt wurde (Die eigentliche Portabfrage findet bei PENX statt).
Beispiel[Bearbeiten | Quelltext bearbeiten]
160 HIRES 6,7: xa=0: ya=0 170 PROC plot 180 x=PENX*2-40 190 y=PENY-40 200 IF x<0 OR x>319 OR y<0 OR y>199 THEN CALL plot 210 LINE xa,ya,x,y,1 220 xa=x: ya=y 230 GET a$: IF a$="←" THEN HIRES 6,7 240 CALL plot
Beispiel entnommen aus "Trainingsbuch zum Simons' Basic", Seite 368. PROC wird hier als Sprunglabel verwendet, nicht als Einleitung einer Prozedur.
$ | % | @ | 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