RESTORE (Taste)
Die spezielle Taste <RESTORE> bzw. RESTORE (abgeleitet von engl. restore = wiederherstellen) löst bei Commodore-Computern wie dem C64/128 oder VC20 einen NMI aus. Interessant dabei ist, dass die Taste im Gegensatz zu (fast) allen anderen Tasten nicht in der Tastaturmatrix auftaucht bzw. mit den CIAs verbunden ist, sondern tatsächlich direkt mit der NMI-Leitung der CPU MOS 6510 verbunden ist.
Im Normalfall (Details siehe Ablauf eines NMIs) hat das Drücken von RESTORE alleine keinen sichtbaren Effekt. Jedoch kann durch Drücken der Tastenkombination RUN/STOP +RESTORE das BASIC des C64 wieder in den Ausgangszustand zurückgesetzt werden (BASIC-Warmstart), wobei ein im Speicher befindliches Programm weiterhin im Speicher verbleibt und normal gestartet werden kann. Dies funktioniert auch aus Situationen, in denen der BASIC-Interpreter nicht die Kontrolle hat (in Maschinenspracheroutinen) und damit die RUN/STOP -Taste alleine keinen Effekt hat.
Der Ausgangszustand ist die klassische Hellblau/Dunkelblau-Darstellung mit hellblauer Textfarbe und leeren Bildschirm, auf dem oben links READY. steht und darunter der Cursor blinkt.
Hardware[Bearbeiten | Quelltext bearbeiten]
Die RESTORE-Taste ist direkt über einen Kondensator mit der NMI-Hardware der CPU verbunden. Da der Kondensator bei frühen Brotkasten-C64s zu klein dimensioniert ist, muss man die Taste sehr heftig (=schnell) anschlagen, damit sie anspricht. Abhilfe schafft das Ersetzen des Originalbauteils (51 pF, C38) durch einen Kondensator mit 1 nF, der wahlweise auch einfach parallel dazugeschaltet werden kann.
Tipps[Bearbeiten | Quelltext bearbeiten]
Durch Verbiegen der Speicherstellen 792 und 793 (normale Standardwerte: 71 und 254, entspricht der Adresse $FE47, die Standard-NMI-Routine im KERNAL) kann auf eine andere Routine verwiesen werden.
Zum Beispiel wird hiermit ein Reset durch Drücken der RESTORE -Taste ausgelöst:
POKE 792,226: POKE 793,252
Das entspricht der Adresse $FCE2, der RESET-Routine im KERNAL.
Das Ignorieren der RESTORE -Taste kann aktiviert werden mit
POKE 792,193
und wieder aufgehoben (und damit das ursprünglicher Verhalten wieder hergestellt) werden mit
POKE 792,234
(vorausgesetzt, der Inhalt von Speicherstelle 793 bleibt unverändert).
Das entspricht dem Verbiegen auf die KERNAL-Adresse $FEC1, womit die NMI-Routine nur noch aus einem RTI besteht (damit keine Funktion mehr hat).