chysn wrote:For the uninitiated, what is "freezer software?"
Without that 'software' part explicitly factored in, a freezer as such is a device - mostly in cartridge form - that aims to capture the entire state of the computer at a certain time, write that state to a permanent storage medium and then is able to reload that state to the computer and let operation continue from there on.
As might be expected from that description, doing that is no easy thing.
On the C64, such freezer cartridges exist, and they do their job quite well - being one of several methods to create 'decentral backups' of games, for example (even though producing those backups this way is generally being frowned upon). The C64 provides a certain operation mode, called Ultimax, which eases the operation of those freezer cartridges A LOT. It becomes more difficult though, when not only the state of the computer, but also the state of peripheral devices needs to be saved.
Rich wrote:[...]
That being said: a software-only freezer is more or less wishful thinking. On the C64 and VIC-20, software can in principle take over the whole computer, (re-)claim all relevant vectors and write over all available memory (including the memory occupied by 'freezer software').
The VIC-20 is missing the aforementioned Ultimax mode; also, it is not possible for a cartridge to replace the internal ROMs. That especially means, a cartridge on the VIC-20 cannot replace the hardware IRQ, NMI and Reset vectors at $FFFA to $FFFF. On the C64, the hardware NMI vector is essential to start the freeze operation.
The next best option available then is being able to temporarily disable the BLK5 signal on the cartridge port. This is not possible with software alone, it needs extra hardware between VIC-20 and cartridge. The MINIMON cartridge offers such a freeze reset, which disables autostart of the secondary cartridge in the extender. Furthermore, the reset signal is not sent to the secondary cartridge, any internal logic there (for example banking registers) will retain their state. MINIMON is then started with SYS 38912 and allows to inspect the memory (internal and external), make a copy to storage, etc.
Finally, the built-in disassembler and assembler, and the other tools in MINIMON allow for a finer treatment of making a backup copy. The real deal is not letting the game take over the computer, but letting it run under control of the monitor, like shown
here for an example.
This method results in a capture of the computer's state right
after the program has been loaded but
before it has been started - and that is exactly the aim of the game!