
8.3 Freezer
8.3.2 Mirroring the freezer memory in
When the freezer is activated, the freezer RAM resp. the flash ROM is mirrored to the
area $0000. . . $3FFF. Bank switching is used to choose between 32 RAM banks of 4k each
(a total of 128k) and 64 ROM banks of 8k each (a total of 512k). The memory map in the
Atari looks as follows.
• $0000. . . $0FFF: Fixed 4k RAM bank (bank 31)
• $1000. . . $1FFF: Switchable 4k RAM bank (bank 0. . . 31)
• $2000. . . $3FFF: Switchable 8k ROM bank (bank 64. . . 127)
The 64 ROM banks of 8k each are located at the end of the flash ROM and correspond to
the banks 64. . . 127 of the cartridge emulation. The 32 RAM banks of 4k each are located
at the end of the freezer RAMs and correspond to the banks 48. . . 63 of the cartridge
emulation. The last 4k bank (bank 31) is used for the shadowing of the hardware registers
and is mirrored to the address $0000 in the Atari if the freezer is activated.
8.3.3 Activating the freezer
The freezer logic has 5 internal states.
• Freezer deactivated
• Freezer half activated
• Freezer activation triggered
• Freezer activated
• Freezer temporarily deactivated
After switching the Atari on, the freezer is in the state “deactivated”. In this state and
in the state “half activated” all write access to the custom chip area is stored in the shadow
RAM.
When the “
Freeze
” button is pressed, nothing happens at first. Only when the first
access to the area $FFF8. . . $FFFF (which contains also the IRQ and NMI vectors) is
performed and the “
Freeze
” button is still pressed, the freezer reacts. It saves the state of
the A2 line (which is required later on to distinguish between IRQ and NMI) and enters
the state “half activated”. In the next clock cycle there are now these two possibilities:
•
If the “
Freeze
” button is no longer pressed or an access to another memory area
than $FFF8. . . $FFFF is performed, the freezer enters the “deactivated” state again.
•
If the “
Freeze
” button is still pressed and there is an access to the memory area
$FFF8. . . $FFFF again, the freezer performs the transition to the state “activation
triggered” as described below.
The freezer deactivates the memory in the Atari and puts the value $21 on the data bus.
This changes the interrupt vectors to the address $21xx, as the CPU is currently trying to
load the high byte of the interrupt vector. The low byte stems from the previous access to
the $FFF8. . . $FFFF area and therefore has the original value.
53
Komentáře k této Příručce