Purpose: Reconfigure system as a C64
Call address: $FF4D (hex) 65357 (decimal)
Registers: none Memory: system map Flags: none Calls: noneResults:
Registers: none Memory: none Flags: none
Description: There is no returnfrom this routine. The 8502 DDR and port are initialized,
and the VIC is set to 1MHz (slow) mode. Control is passed to code in common
(shared) RAM, which sets the MMU mode register (#5) to C64 mode. From this
point on, the MMU and C128 ROMs are not accessible. The routine exits via an
indirect jump through the C64 RESET vector.
Since C64 operation does not allow for MMU access, all MMU registers must be configured for proper operation before the C64 mode bit is set. Similarly, because the start-up of the C64 operating system is not from a true hardware reset, there is the possibility that unusual I/O states in effect prior to C64MODE calls can cause unpredictable and presumably undesirable situations once in C64 mode.
There is no way to switch from C64 mode back to C128 mode; only a hardware reset or power off/on will restore the C128 mode of operation. A reset will always initiate C128 mode, although altering the SYSTEM vector beforehand is one way to automatically "throw" a system back to C64 mode.
JMP $FF4D ;switch to C64 mode