Kurs starten

**** PEEK ****

PEEK: Speicherstellen auslesen

PEEK ist das Gegenstück zu POKE: Es liest den Wert einer Speicherstelle aus, statt ihn zu schreiben.

Schreibweise

FormBedeutung
PRINT PEEK(53281)Gibt den Wert der Hintergrundfarbe aus.
A=PEEK(53280)Speichert den aktuellen Rahmenwert in einer Variablen.
IF PEEK(53281)=0 THEN ...Reagiert auf den Inhalt einer Speicherstelle.

PEEK ist eine Funktion, kein Befehl

PEEK liefert einen Wert zurück und steht deshalb dort, wo eine Zahl erwartet wird: in einem PRINT, in einer Zuweisung oder in einer Bedingung. Ein PEEK(53280) allein in einer Zeile ergibt dagegen keinen Sinn.

Schreiben und wieder lesen 10 POKE 53281,0 20 PRINT PEEK(53281) 0

Zeile 10 schreibt, Zeile 20 liest denselben Wert wieder zurück.

Den alten Wert sichern

Ein häufiges Muster: vor einer Änderung den bisherigen Wert merken und am Ende wiederherstellen. So hinterlässt ein Programm den Bildschirm so, wie es ihn vorgefunden hat.

Farbe merken und zurücksetzen 10 ALT=PEEK(53280) 20 POKE 53280,2 30 PRINT "JETZT IST DER RAHMEN ROT" 40 FOR D=1 TO 10 50 NEXT D 60 POKE 53280,ALT 70 PRINT "UND WIEDER WIE VORHER"

Zeile 10 sichert den Ausgangswert, Zeile 60 stellt ihn wieder her.

Was PEEK sonst noch verraten kann

Auf dem echten C64 liessen sich über PEEK viele Zustände abfragen: gedrückte Tasten, die Position des Joysticks, der Inhalt des Bildschirmspeichers. Dieser Nachbau bildet den Speicher als reines Zahlenfeld nach. Geschriebene Werte kommen unverändert zurück, aber nur die beiden Farbadressen haben eine sichtbare Wirkung.

Typische Stolperfallen

Klammern vergessen

PEEK braucht seinen Wert in Klammern: PEEK(53280), nicht PEEK 53280.

PEEK ohne Verwendung

Eine Zeile, die nur aus PEEK(53280) besteht, ist unvollständig. Der Rückgabewert muss irgendwo landen, etwa in einem PRINT oder einer Variablen.

Werte ausserhalb des Speichers

Adressen über 65535 gibt es nicht, sie ergeben einen ?ILLEGAL QUANTITY ERROR.

Passt dazu

Im Kurs lernst du PEEK in Lektion 21: PEEK: Farben lesen und setzen. Die vollständige Referenz aller Befehle steht im Befehls-Lexikon.

HAEUFIGE FRAGEN

Fragen zu PEEK

Was ist der Unterschied zwischen PEEK und POKE?

POKE schreibt einen Wert in eine Speicherstelle, PEEK liest ihn wieder aus. Die beiden gehören zusammen wie Schreiben und Lesen.

Warum gibt PEEK bei mir immer 0 zurück?

Dann steht an dieser Stelle tatsächlich eine 0. In diesem Nachbau enthält der Speicher nur das, was zuvor hineingeschrieben wurde, plus die beiden voreingestellten Farbwerte.

Gleich selbst ausprobieren

Tippe die Beispiele in den freien Editor und sieh dir an, was passiert.

Freien Editor oeffnen →