PENX

Aus C64-Wiki
Wechseln zu: Navigation, Suche
PENX
Format: a = PENX
Parameter
keine
Einordnung
Typ: Systemvariable
Kontext: Peripheriekontrolle
Aufgabe: ermittelt die X-Position eines Lightpens
Abkürzung: keine
Verwandte Befehle
JOY - POT - PENY


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

Typ: Systemvariable
Syntax: a = PENX
oder:   PRINT 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. Laut "Trainingsbuch zum Simons' Basic" soll man daher die Rückgabe von PENX so auf Grafikkoordinaten umrechnen:

x = (PENX-40)*2

Beachten: Der korrespondierende Befehl PENY liefert nur dann sinnvolle Werte, wenn vorher PENX ausgeführt wurde. (Die eigentliche Portabfrage findet bei PENX statt.)

Beispiel: 

160 HIRES 6,7: xa=0: ya=0
170 PROC plot
180 x=(PENX-40)*2
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.