![]() |
VOOZH | about |
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.
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.