Reset
Mit Reset (zu deutsch: das Rücksetzen oder die Grundeinstellung) wird allgemein der Vorgang des Zurücksetzens eines Geräts oder eines Programms auf den Grundzustand bezeichnet.
Bei Hardware wird der Reset-Vorgang nach dem Anschalten des Geräts oder nach Druck auf einen Reset-Taster durchlaufen (auch "Kaltstart"). Die meisten Hardware-Komponenten erhalten im Zuge dessen auch eine entsprechende Signalisierung über die sogenannten Reset-Leitung am RES-Anschluss, wodurch auch auf Hardware-Ebene integrierte Schaltkreise zurückgesetzt werden (siehe auch Hardware-Aufbau des C64).
Im Gegensatz zum Warmstart ist die üblicherweise hardware-bedingte Auslösung immer zwingend und wirkt selbst bei verfahrenen Situationen, etwa dort, wo die CPU in einem unbrauchbaren Zustand "hängt". Beim C64 haben einige Programme zwar einen "Reset-Schutz"; dieser verhindert zwar den Reset an sich nicht, das Programm übernimmt aber bedingt durch die Modulkennung nach dem Reset sofort wieder die Kontrolle über den Rechner. Die beim Kaltstart durchgeführte Initialisierung lässt mitunter gewisse Zustände unberührt, z.B. den aktuellen Speicherinhalt. Mit Hilfe einer UNNEW-Funktion kann beispielsweise nach einem Reset ein zuvor aktives BASIC-Programm wieder restauriert werden.
Beim C64 geht bei einem Kaltstart die Kontrolle an den KERNAL zur Reset-Routine (bei $FCE2, Details). U.a. wird dabei, falls eine Modulkennung gefunden wird, der Vektor an der Stelle $8000/$8001 angesprungen, sonst wird der Vektor bei $A000/$A001 (BASIC-ROM) verwendet.
Ein Programm kann auch einen Soft-Kaltstart herbeiführen. Hierbei fehlt die explizite Signalisierung der Hardware-Komponenten und es werden nur die Vorgänge in Software abgearbeitet, als hätte es eine hardware-bedingte Auslösung gegeben. Der Reset-Vorgang kann auf verschiedene Weise angestoßen werden; beim C64 ist eine KERNAL-Routine zum Ausführen des Resets verantwortlich, die von BASIC aus per SYS 64738
($FCE2) aufgerufen werden kann.
Viele Anwendungsprogramme, aber auch Spiele bieten ein "Beenden"- oder eine "Exit"-Funktion an, die in diesen Soft-Kaltstart mündet.
Speicheradressen[Bearbeiten | Quelltext bearbeiten]
Die Reset-Vektoren (abgelegt als Low- und High-Byte) verweisen auf die Speicheradresse, hinter der sich die vom KERNAL genutzte System-Reset-Routine befindet. Bei allen MOS Technology 65XX-Prozessoren ist der Reset-Vektor an den gleichen Speicheradressen, nämlich $FFFC/$FFFD (65532/65533), positioniert.[1] In BASIC lässt sich ein Software-seitiger Reset z.B. mit SYS 64738
für den C64 (siehe auch Spalte Adresse Reset-Routine in der Tabelle) durchführen, während in Assember der Programmiercode JMP $FCE2
diesen ausführt.
Reset-Vektor und -Routine Speicheradressen | |||||
---|---|---|---|---|---|
CPU | Computer | Adresse Reset-Vektor | Adresse Reset-Routine | ||
Hex | Dezimal | Hex | Dezimal | ||
MOS Technology 6502 | PET 2000er-Reihe | $FFFC | 65532 | $FD38 | 64824 |
MOS Technology 6502 | CBM 3000er-Reihe | $FFFC | 65532 | $FCD1 | 64721 |
MOS Technology 6502 | PET 4000er-, CBM 8000er-, SuperPET 9000er-Reihe | $FFFC | 65532 | $FD16 | 64790 |
MOS Technology 6502 | CBM 500 | $FFFC | 65532 | $F99E | 63902 |
MOS Technology 6502 | CBM 600/700 | $FFFC | 65532 | $F997 | 63895 |
MOS Technology 6502 | VIC-20 | $FFFC | 65532 | $FD22 | 64802 |
MOS Technology 6510 | C64, SX-64 | $FFFC | 65532 | $FCE2 | 64738 |
MOS Technology 7501/8501 | C16, C116, Plus/4 | $FFFC | 65532 | $FF6F | 65380 |
MOS Technology 8502 | C128x | $FFFC | 65532 | $FF3D | 65341 |
Siehe auch[Bearbeiten | Quelltext bearbeiten]
Quellen[Bearbeiten | Quelltext bearbeiten]
Weblinks[Bearbeiten | Quelltext bearbeiten]
Wikipedia: Reset |