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