UNICART - Universal Commodore 64/128 Cartridge

Submitted by GG on Tue, 06/04/2019 - 20:01
Project Status

ramgsAfter we developed the UNICART/D many customers asked for a more compact version of the cartridge without the pass-through connector. The board uses one standard PLCC32 flash ROM up to 4Mbit. In C64 mode 8K, 16K and 16K Ultimax cartridge modes are supported. In C128 mode both 16K and 32K cartridges are supported.

The schematics is heavily based on the UNICART/D. The flash ROM is directly connected to the CPU bus. The most significant bits of the address are connected to dip switch P1 which selects the bank within the flash ROM.
Dip switch P2 selects the cartridge mode and size. Refer to the tables below for dip switch configuration. For C64 only configurations a 4 position dip switch can be used on P2-1 to P1-4. For C128 only configurations a 3 position dip switch on P2-4 to P2-6 is sufficient.
Diodes D1 and D3 form a wired AND to generate the ROM chip enable. D2, D4 and D5 are not strictly necessary but they protect the system bus in case of incorrect dip switch configuration. D6 is to be able to write the flash ROM in system. This feature is unfortunately not tested as we didn't have the time to write the software.
Resistors R1-R6 are used to replace P2 in fixed configurations.

DIP Name C64 8K C64 16K C64 Ultimax C128 16K C128 32K Notes
P2-1 EXROM ON ON OFF OFF OFF Not used for C128
P2-2 GAME OFF ON ON OFF OFF Not used for C128
P2-3 ROML13 OFF ON ON OFF OFF Not Used for C128
P2-5 ROML14 OFF OFF OFF OFF ON Not used for C64
P2-6 A13 OFF OFF OFF ON ON Not used for C64
P1-5 EA14 RA14 RA14 RA14 RA14 OFF  
P1-4 EA15 RA15 RA15 RA15 RA15 RA15 Only used on 512Kbit (64KB) or larger ROMs
P1-3 EA16 RA16 RA16 RA16 RA16 RA16 Only used on 1Mbit (128KB) or larger ROMs
P1-2 EA17 RA17 RA17 RA17 RA17 RA17 Only used on 2Mbit (256KB) or larger ROMs
P1-1 EA18 RA18 RA18 RA18 RA18 RA18 Only used on 4Mbit (512KB) ROMs

Please note that the polarity of P1 is reversed (i.e. ON means 0 and OFF means 1).

P1-6 P1-5 P1-4 P1-3 P1-2 P1-1 8K addr 16K addr 32K addr
ON ON ON ON ON ON 0x00000 - -
ON ON ON ON ON OFF 0x02000 0x00000 -
ON ON ON ON OFF ON 0x04000 - -
ON ON ON ON OFF OFF 0x06000 0x04000 0x00000
ON ON ON OFF ON ON 0x08000 - -
ON ON ON OFF ON OFF 0x0A000 0x08000 -
ON ON ON OFF OFF ON 0x0C000 - -
ON ON ON OFF OFF OFF 0x0E000 0x0C000 0x08000
ON OFF OFF OFF ON ON 0x38000 - -
ON OFF OFF OFF ON OFF 0x3A000 0x38000 -
ON OFF OFF OFF OFF OFF 0x3E000 0x3C000 0x38000

Creating a ROM image

The ROM can contain a mix of both C64 and C128 cartridge images of any size. The only limitation is that each ROM image must be aligned at boundaries equal to its size. I.e. 8K images can be placed at any address multiple of 8K, 16K images can be only placed at addresses multiple of 16K and so on. With this scheme the absolute maximum for wasted space is 24K (one 16K and one 8K slot). In many cases the wasted space can be reduced to zero.

The ROM images must be in bin format. To convert crt files the utility cartconv from the VICE emulator can be used.

cartconv -i image.crt -o image.bin

to combine the images in linux:
cat image_1.bin image_2.bin image_n.bin > combined.bin
or in windows:
type image_1.bin image_2.bin image_n.bin > combined.bin


This cartridge combines all the wiring diagrams for the C64 and C128 cartridges from world of Jani into a single universal design. See the links below.

Filed under