Freezer

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Der Freezer (zu deutsch: "Gefrierschrank") ist Bestandteil vieler Steckmodule wie Final Cartridge 3 oder Action Replay. Es gibt auch rein als Software ausgeführte Freezer.

Anwendungen[Bearbeiten]

Ein Freezer dient insbesondere zum Anhalten und Abspeichern von Programmen auf Diskette oder Datasette; dieser "Freeze" oder "Snapshot" kann später wieder geladen und gestartet werden, woraufhin an der gleichen Stelle fortgefahren wird, an der der Rechner eingefroren wurde.

Ein Freezer kann auch den Inhalt des Arbeitsspeichers per Maschinensprachemonitor darstellen. Auch das Ausdrucken des Bildschirminhalts (auch "Screenshot" oder "Hardcopy") ist möglich.

Weiterhin erlauben manche Freezer auch eine Manipulation der Speicherinhalte. 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. POKEs wurden in den Computerzeitschriften der 80er als Spieletipps (Cheats) abgedruckt. Gab es mehrere Manipulationsmöglichkeiten eines Spiels, so wurde oft durch bestimmte Gruppierungen ein Trainer-Programm daraus erstellt, um somit im Spiel einen sogenannten Trainer-Modus zu haben.

Technische Realisierung und Grenzen[Bearbeiten]

Technisch 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 (siehe PLA); 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 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.

Weblinks[Bearbeiten]