PENX

Aus C64-Wiki
Zur Navigation springenZur Suche springen
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.