How to enter C64 Mode on a Commodore 128

The Commodore 128 was marketed as being “three computers in one”. I guess technically they were correct when they made that statement. Although I’m very find of the native 128 mode, the system saw its uses mostly as a games machines in C64 mode. I don’t recall anybody ever looking at CP/M mode longer than half an hour (if that).

There are three ways to put the C128 into C64 mode. Two of which I always knew about, ever since my friend Frank Jagow bought himself a whole C128 system from his paper route money in 1986. But the third option’ve only recently learnt about – after over 30 years of being a C128 fanboy. How exciting!

Here are all three options.

Option 1: C= Key + RESET

Hold down the C= key (Commodore key, bottom left), then reset or turn on the machine. This will boot the C128 in C64 mode.

At the same time, a connected 1571 drive will automatically be switched into 1541 compatibility mode. This can be useful if your game relies on a real 1541 drive (for whatever reason), or if you have a  broken 1571 on which the seance read/write head isn’t working well.

Option 2: GO 64 command

From the C128 BASIC prompt, either in 40 or 80 column mode, issue the GO 64 command.

In direct mode, the system will ask “are you sure?”, to which you answer “y” followed by the return key. You can also type anything beginning with the letter y instead (for example, “yeah man – what a great idea”).

And omit the space between GO and 64 if you’re in a hurry by all means.

Note that this command will leave a potentially attached 1571 drive in its native 1571 mode. As a result, it will be able to format and access a double sided floppy from within C64 mode. However, programmes that rely on a native 1541 may encounter problems as a result.

Fun fact: you can also use GO 64 from within a BASIC programme. While the “are you sure” question won’t be displayed, and the system boots into C64 mode fine, there is of course nothing left in memory to execute at the other end.

Option 3: SYS 57931

The third option I’ve only recently discovered in a post by Maurizio Sorrentino on the C128 Enthusiasts FaceBook page.

We can call the machine language routine directly with SYS 57931 (or $E24B in hex). There’s no question whether you’re sure or not, much like issuing GO 64 in a BASIC programme. The result is the same: your C128 will think for a couple of seconds, then come back with deep blue colours on the 40 column display.

How does it work?

Good question! I’d love to find that out myself, but haven’t had time to dissect the code yet.

Here’s what that routine does:

It may end somewhere before the RTS, possibly at the jump to $0002. See if you can make head or tail of it, and let me know if you do.

Anyway, those are the three methods of how to put your Commodore 128 into 64 mode.

About Jay Versluis

Jay is a medical miracle known as a Super Survivor. He runs two YouTube channels, five websites and several podcast feeds. To see what else he's up to, and to support him on his mission to make the world a better place, check out his Patreon Campaign.

2 thoughts on “How to enter C64 Mode on a Commodore 128

  1. That C64 mode routine:

    . fe24b a9 e3 lda #$e3
    . fe24d 85 01 sta $01
    . fe24f a9 2f lda #$2f
    . fe251 85 00 sta $00
    . fe253 a2 08 ldx #$08
    . fe255 bd 62 e2 lda $e262,x
    . fe258 95 01 sta $01,x
    . fe25a ca dex
    . fe25b d0 f8 bne $e255
    . fe25d 8e 30 d0 stx $d030
    . fe260 4c 02 00 jmp $0002
    . fe263 a9 f7 lda #$f7
    . fe265 8d 05 d5 sta $d505
    . fe268 6c fc ff jmp ($fffc)

    Put E3 into 01 (11100011) – data register for the 8502 on chip I/O port.
    Put 2F into 00 (00101111) – data direction register for 8502 on chip I/O port.
    Put 00 into D030 – CPU clock speed register

    The routine copies 8 bytes from E263-E26A to 0002 and executes them there.

    Put F7 into D505 (11110111) – MMU mode configuration register
    Jump to (FFFC) – reset vector

Leave a Reply to Richard Atkinson Cancel reply