Freezer
Ein Freezer (zu deutsch: "Gefrierschrank") erlaubt es, den Computer gewissermaßen anzuhalten und seinen Zustand abzuspeichern bzw. zu inspizieren. Freezer sind Bestandteil vieler Steckmodule wie Final Cartridge 3 oder Action Replay. Es gibt auch rein als Software ausgeführte Freezer. Auch von Emulatoren wie VICE angebotene Snapshots oder der Maschinensprachemonitor kann als Freezer-Funktionalität aufgefasst werden, wobei die technische Realisierung dort völlig anders ist als bei Steckmodulen.
Anwendungen[Bearbeiten | Quelltext bearbeiten]
- Snapshots (oder einfach Freezes oder - neuer - im Zusammenhang mit Emulatoren Savestates) erstellen: Anhalten und Abspeichern des Systemzustands. Die abgespeicherten Daten können später wieder geladen und gestartet werden, woraufhin an der gleichen Stelle fortgefahren wird, an der der Rechner eingefroren wurde.
- Eingabe von Cheat-POKEs: Z.B. das Action Replay erlaubt es, über den Freezer POKEs direkt im laufenden Spiel einzugeben.
- Maschinensprachemonitor: Ein Freezer kann auch den Inhalt des Arbeitsspeichers darstellen und manipulieren. Damit lassen sich z.B. Computerspiele beeinflussen, um z.B. Unbesiegbarkeit oder "Mehr Leben" bzw. "Mehr Kraft" oder "Mehr Zeit" zu Verfügung zu haben. Diese Manipulation der Speicheradressen kann auch in BASIC mit POKEs erfolgen, dafür darf das Programm aber keine Autostart-Funktion haben bzw. muss sich nach einem Reset (und nach dem POKE) wieder per SYS neu starten lassen, was eher selten der Fall ist.
- Screenshot/Hardcopy: Einige Freezer unterstützen das Ausdrucken oder Speichern des Bildschirminhalts.
Technische Realisierung und Grenzen[Bearbeiten | Quelltext bearbeiten]
Als C64-Hardware wird ein Freezer realisiert, indem beim Freeze die /GAME-Leitung des Expansionsports auf Low gezogen und dann ein NMI oder IRQ ausgelöst wird. Der dadurch gewählte Ultimax-Modus blendet das Hirom bei $E000 ein; der NMI/IRQ-Vektor wird also vom Cartridge-ROM überschrieben und auf Knopfdruck ein vom Modul vorgegebenes NMI/IRQ-Programm ausgeführt. Der Vorgang ist etwas heikel: Hat z.B. das laufende Programm NMIs unterdrückt (NMI-Leitung ständig aktiv) und sind IRQs gerade (per SEI) abgeschaltet (was z.B. immer in der IRQ-Routine der Fall ist), wird der CPU durch das Umschalten in den Ultimax-Modus sozusagen das Programm unter den Füßen weggezogen, und ein Absturz ist unvermeidlich. Deswegen laufen mit bestimmten Programmen Freezer nicht oder nur sehr unzuverlässig. Dazu kommt noch, dass ein Freezer den Zustand des C64 beim Freezen nicht völlig sicher auslesen kann, da mancher interner Zustand der CIAs, des SID und des VIC nicht auszulesen sind. Deswegen funktionieren gespeicherte Freezes nicht immer, und auch das Verlassen des Freezers führt manchmal zu Abstürzen. Noch ein weiteres Problem ist, dass die Floppy nicht erfasst wird; läuft in der Floppy ein Programm, das mit dem Programm im C64 gekoppelt ist (z.B. ein Schnelllader), wird der Snapshot nicht funktionieren. Deswegen ist zum Beispiel ein Freeze von GEOS nicht einfach möglich. Außerdem braucht sowohl der Freezer an sich als auch der Unfreezing-Code etwas Speicherplatz im RAM. Manche Programme füllen den Speicher nahezu komplett (teilweise auch einfach mit Zufallszahlen als "Anti-Freeze"-Maßnahme), wodurch dem Freezer seine Arbeit erschwert wird.
Weblinks[Bearbeiten | Quelltext bearbeiten]
- Safely freezing the C64 - zuverlässiger Freezer der 1541 Ultimate (funktioniert so nur dank externer CPU)
- Schaltpläne einiger Freezer-Steckmodule
- Freezer aus 64'er Sonderheft 34 als KERNAL-Erweiterung
- Multiface - ein Freezer für Amstrad, Spectrum, Atari ST
- vsfReanimator , konvertiert eine VICE-Snapshot-Datei in eine ausführbare Datei (für den C64DTV)
- Savestates/Snapshots im C64 VICE-Emulator anlegen auf YouTube, Tutorial von Benutzer:Spielerheinz