The Danish C64 came with some stickers on the keys, had a different character generator ROM and also a different kernal that was modified to support the new keyboard layout.
So I had two ideas for this C64c - I wanted JiffyDOS, but I also wanted Danish characters. And it should ideally be possible to swap either of them out using two toggle switches.
Having obtained the ROM images, first point of order was to send them off to Bo Zimmerman, for inclusion in the CBM archive for future generations to enjoy. It pleases me immensely that they can now be found on the 'net, both the character generator and kernal.
Time to see if this theory held up.
Basically I wanted to transplant the changes made to the Danish kernal over to the JiffyDOS kernal. Some useful tools for this task are bsdiff and bspatch, available for most Linux distros and also in Cygwin for Windows. First I had to make a patch file that contained the diff between the regular C64 kernal and the Danish C64 kernal:
$ bsdiff kernal.901227-03.bin kernal.901227-03-DK.bin kernal.901227-03-DK.bin.patch
Then I replayed those changes on top of the JiffyDOS C64 kernal and hoped for the best:
$ bspatch JiffyDOS_C64_6.01.bin JiffyDOS_C64_6.01-DK.bin kernal.901227-03-DK.bin.patch
By now I had four different kernals - normal, Danish, JiffyDOS and Danish JiffyDOS. I had two different character ROMs - normal and Danish. I should be able to burn all these to two EPROMs, replace the originals and use two toggle switches - one for JiffyDOS and one for Danish.
The C64c ROM is 16 KiB and consists of the BASIC ROM followed by the kernal. I wanted to switch in four different kernals but I didn't want to replace the BASIC ROM. In order to achieve that, I was going to have to duplicate BASIC four times, like so:
$0000 - basic.901226-01.bin
$2000 - kernal.901227-03.bin
$4000 - basic.901226-01.bin
$6000 - kernal.901227-03-DK.bin
$8000 - basic.901226-01.bin
$A000 - JiffyDOS_C64_6.01.bin
$C000 - basic.901226-01.bin
$E000 - JiffyDOS_C64_6.01-DK.bin
With this layout, pulling A15 high switches in JiffyDOS and pulling A14 high switches in the national character layout.
I turned to the command line to create the 64KiB image for burning into the EPROM:
C:\>copy /b basic.901226-01.bin+kernal.901227-03.bin+basic.901226-01.bin+kernal.901227-03-DK.bin+basic.901226-01.bin+JiffyDOS_C64_6.01.bin+basic.901226-01.bin+JiffyDOS_C64_6.01-DK.bin c64c_64KiB.bin
C:\>copy /b characters.901225-01.bin+characters.901225-01-DK.bin chargen.bin
No turning back
But the ones I was interested in, the two ROMs, they were not socketed.
Having brutally and irreversibly removed the ROMs, it was time to install some IC sockets.
The character set switch requires a pull-up resistor between pin 28 (VCC) and pin 2 (A12) on the character EPROM. A wire should be soldered between the character EPROM's pin 2 (A12, controls character set) and the kernal EPROM's pin 27 (A14, controls keyboard layout), as these two address lines must be switched at the same time. The second switch goes between the character EPROM's pin 2 and pin 14.
When mounting the EPROMs in their sockets, the kernal EPROM's pin 1 and pin 27 should not make contact with the socket, ideally they should be bent out slightly and not cut off, so the EPROM can be reused another time. The same goes for the character EPROM's pin 2.
As I had the case open anyway, I also installed a reset button. All that remained was to drill some holes for the switches, fit them and close the case back up.