Colecovision Cartridge

The goal here is to create a cheap and cheerful Colecovision cartridge, suitable for development work.

Design

I used to KiCad to prepare this circuit diagram. When placed and routed, and then the board manufactured and populated, you get :-

I've added the all.tar.gz library of extra converted parts from http://library.oshec.org/ to my installation of KiCad. I also have my own extra cv.lib containing an edge-connector component and cv.mod containing a footprint for it.

The design uses a (27512 EPROM or a) W27C512 EEPROM. W27C512 EEPROMs are quite easy and cheap to source, and because they're EEPROMs, easy to program using a USB powered programmer.

Rather than use a DIP28 socket, I use a cheap low profile DIP28 ZIF socket. This means the board and EEPROM should withstand many insert/remove cycles.

The design uses a GAL16V8 to do address decoding. The edge-connector supplies 4 8KB chip-enables called 8000_n, A000_n, C000_n and E000_n. In addition, there are 5 jumpers (K5, K4, K3, K2, K1) which are also passed into the GAL. The GAL decides whether the EPROM chip is enabled, and what 8KB section of it is to supply the data (MA15, MA14, MA13). This provides a lot of flexibility as to how much data is provided, and from what part of the EEPROM. Note that at most 32KB of data is visible at any one time, and the EEPROM is 64KB. Having the jumpers lets you program more than 32KB of data in the EPROM, then change which parts are visible at any one time.

You can populate the EEPROM with a mixture of 8KB, 16KB, 24KB and 32KB games. The standard GAL configuration allows you to select how much data to present (using K5,K4) and from whereabouts in the EEPROM (using K3,K2,K1). The values in the table show where that portion of ROM appears in the Z80 address space :-

Jumpers ROM address ranges
K5K4K3K2K10000-1FFF2000-3FFF4000-5FFF6000-7FFF8000-9FFFA000-BFFFC000-DFFFE000-FFFF
0 0 0 0 08000-9FFF             
0 0 0 0 1  8000-9FFF           
0 0 0 1 0    8000-9FFF         
0 0 0 1 1      8000-9FFF       
0 0 1 0 0        8000-9FFF     
0 0 1 0 1          8000-9FFF   
0 0 1 1 0            8000-9FFF 
0 0 1 1 1              8000-9FFF
0 1 0 0 x8000-BFFF     
0 1 0 1 x  8000-BFFF   
0 1 1 0 x    8000-BFFF 
0 1 1 1 x      8000-BFFF
1 0 0 x x8000-DFFF  
1 0 1 x x  8000-DFFF 
1 1 0 x x8000-FFFF 
1 1 1 x x  8000-FFFF

eg: The EEPROM could contain an 24KB game (selected by 100xx), followed by an 8KB game (seletecd by 00011), followed by a 32KB game (selected by 111xx).

It is possible to devise other GAL configurations which expose other combinations. eg: a GAL which always exposed the same block of EEPROM in one Z80 range, but exposed other blocks of EEPROM in another Z80 range, depending upon jumper settings. This kind of thing seems a bit niche, so I've not written any PALASM for it.

In effect this cartridge is offering a form of bank switching. However, the bank switching is controlled by jumpers, not by Z80 code accessing registers or ranges of memory.

The physical size and shape of the cartridge is intended to match that of a real cartridge, although it seems unlikely anyone would bother to put this card in a real plastic case.

This cartridge is taller than most real cartridges. This is done so that if the PCB is inserted into the Colecovision, the EEPROM socket sits outside the console case. This allows the use of ZIF sockets that aren't low profile, and makes it easy for the user to replace the EEPROM (or adjust the jumpers) without removing the cartridge from the console.

Manufacture the PCB at iteadstudio using the 2 layer green PCB 5cm x 10cm max product, using 1.6mm thickness, HASL finish and 100% e-test options.

Test ROM

This photo shows the cartridge installed, with the Test ROM in it, to show that it works :-

The Test ROM has the same small test program repeated 8 times on 8KB boundaries.

However, one of the bytes is different for each. This is the character X (range 0 to 7) which appears in the title screen when it signs on as "Test ROM X". This means you can see which part of the EEPROM the Colecovision is initially going to run.

Once the title screen vanishes, the ROM runs. Its shows some of the memory from the 8000, A000, C000 and E000 areas, starting with the X character (which appears as hex 30 to hex 37). This means you can see what portions of the EEPROM are visible in each of the 4 8KB regions.

While the system runs, you can adjust the jumpers and see more or less memory become visible, and/or change the regions of EEPROM it comes from. This is safe to do as the system runs, because the code present in any of the 8KB pages is the same.

In this way, the big mapping table above can be validated.

In the picture above, the jumpers are set so that K5=1, K4=1, which makes 32KB of EEPROM visible. Also, K3=0, which means that the 8KB EEPROM pages used are 0, 1, 2 and 3. Although the photo is poor, you might be able to make out that the screen looks like this :-

 Colecovision
 Cartridge
 Test ROM              @2013 AK
 ------------------------------

 30  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx

 31  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx

 32  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx

 33  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx
 xx  xx  xx  xx  xx  xx  xx  xx

The xx's don't matter particularly.

Ordering

This is what it costs me to build one :-

Item Where Cost
PCB iteadstudio£2
W27C512 eBay £1
GAL16V8 Futurlec £1
ZIF socket eBay £3
Misc bits eBay £1
Total£8

Prices assume buying enough parts for 10 cartridges and then dividing by 10.

So I've made a few of these, but I don't need them all.

You must appreciate that I have limited skill with a soldering iron. Unfortunately I can't guarantee it won't electrocute your Colecovision, so you'd use it at your own risk. That having been said, I will test that any board I make works when connected to my test-bed Colecovision.

If you would like one, email andy.z.key@googlemail.com and please put "Colecovision Cartridge order" in the subject line. Include your postal address. I will send one. If you like it, you send me £12 (to cover costs and postage). If you don't, you send it back. Either response within a month.

Of course, all the project collateral is downloadable, so you could make one yourself. You'd probably need to run a minimum batch of 10 PCBs. Less cost-effective, but possible.

Download

Full package downloadable from here.


This page maintained by Andy Key
andy.z.key@googlemail.com