Skip Navigation.
Section 0

EPROM Code

By David Clarke [21030085++] <ac151@ncf.ca>

This page contains downloads of the Chroma's EPROM code (for the Polaris, see Polaris EPROM Code). These files are provided as a service to Chroma owners who need to replace or update firmware, as there are no longer any "authorized" service centres. This code remains the property of Fender (or whoever might currently own the rights to Chroma products).

A .obj file is a straight binary copy of the chip contents (i.e., no header info, no encoding, no nothing). If the first byte of the EPROM is 0x4E, then the first byte of the .obj file is a binary representation of 0x4E.

For programming, load the .obj file into the program that comes with your favourite EPROM programmer, and 'program' the 2716 device.

Rhodes Chroma

File Rhodes Name Location EPROM Type Mfg. Label Info/Notes
12_CBS29.obj CBS29 Z29 2716 Intel
12_CBS30.obj CBS30 Z30 2716 Intel
12_CBS31.obj CBS31 Z31 2716 Intel
12_CBS32.obj CBS32 Z32 2716 Intel
12_CBS33.obj CBS33 Z33 2716 Intel
12_CBS34.obj CBS34 Z34 2716 Intel
12_CBS35.obj CBS35 Z35 2716 Intel
12_CBS36.obj CBS36 Z36 2716 Intel
O_kybdsn.obj KBDSCAN Z33 2716 Intel Rev ? I/O Came with Rev 12 code
3_KYBDSN.obj KBDSCAN Z33 2716 Intel KBDSCAN Rev 3 I/O
14_CBS29.obj CBS29 Z29 2716 Intel 30-5603201 SFT 30-8200100 REV 14 CBS
14_CBS30.obj CBS30 Z30 2716 Intel 30-5603202 SFT 30-8200100 REV 14 CBS
14_CBS31.obj CBS31 Z31 2716 Intel 30-5603203 SFT 30-8200100 REV 14 CBS
14_CBS32.obj CBS32 Z32 2716 Intel 30-5603204 SFT 30-8200100 REV 14 CBS
14_CBS33.obj CBS33 Z33 2716 Intel 30-5603205 SFT 30-8200100 REV 14 CBS
14_CBS34.obj CBS34 Z34 2716 Intel 30-5603206 SFT 30-8200100 REV 14 CBS
14_CBS35.obj CBS35 Z35 2716 Intel 30-5603207 SFT 30-8200100 REV 14 CBS
14_CBS36.obj CBS36 Z36 2716 Intel Rev 14
14ACBS36.obj CHROMA Z36 2716 Intel B6D1 CHROMA Rev 14A
This is the 'original' 14A chip which, as noted in the Chroma list archives, has a couple errors - most notably (1) a 'hiccup' at the end of the velocity data and (2) an error in the address for the "Set Split 18" handler address. Details on how to fix the address error are contained in the list archives (Rev 14a with Set Split 18 thread in April and May of 2000).
14BCBS3.obj CHROMA Z36 2716 Intel CHROMA Rev 14, with the velocity table replaced with that from Rev 12

Kybdscan software is for a 8039 processor; other (CBS) software is for a 6809 software (mem location C000 - FFFF)

Labels were as follows:

30-5603201
SFT 30-8200100 REV 14
©1982 CBS INC.
Z29

Line 1 and 4 were bold - all lines centred. Notch in chip to left of label.

CHROMA Z36
Rev 14A

Notch to left of label

KBDSCAN Z33
Rev 3 I/O

(Z33 and I/O right-justified, notch in chip to left of label)

Labels approx. 11.5mm x 28.5mm

Rhodes Chroma Expander

Rhodes Chroma Expander Rev 12

All original labels handwritten

File Rhodes Name Location EPROM Type Mfg.
12ECBS29.obj 305-603701 Z29 9716DC AMD
12ECBS30.obj 305-603702 Z30 9716DC AMD
12ECBS31.obj 305-603703 Z31 9716DC AMD
12ECBS32.obj 305-603704 Z32 9716DC AMD
12ECBS33.obj 305-603705 Z33 9716DC AMD
12ECBS34.obj 305-603706 Z34 9716DC AMD
12ECBS35.obj 305-603707 Z35 9716DC AMD
12ECBS36.obj 305-603708 Z36 9716DC AMD

Rhodes Chroma Expander Rev 14

These images were created by taking the Chroma rev 14 images and then changing the 3 or 4 bytes which differ between the Chroma and Expander.

File Location EPROM Type
14ECBS29.obj Z29 MM2716Q
14ECBS30.obj Z30 MM2716Q
14ECBS31.obj Z31 MM2716Q
14ECBS32.obj Z32 MM2716Q
14ECBS33.obj Z33 MM2716Q
14ECBS34.obj Z34 MM2716Q
14ECBS35.obj Z35 MM2716Q
14ECBS36.obj Z36 MM2716Q

Disassembled Chroma (Main Firmware) Source

Back in the early 90's I started to disassemble the firmware for the Chroma with an eye towards looking for 'hidden features' and possibly to rewriting things to allow the Expander to be used to actually increase the polyphony of the Chroma (and not just provide a source for 'link' programs). I was never too serious about the work, and just fiddled with the disassembly when there was nothing bettter to do (like during the long plane rides I used to have to take when I was working overseas).

Anyway, it was kind of a neat thing to do as I had not heard of anyone actually having the original source still available. About a year ago I did see parts of the source for Rev 14 (and Rev 15, apparently never released). That coupled with the fact that the Rev 14 eproms are totally full (not easily lending themselves to adding in new code) has pretty much lessened my interest in doing any more work with the disassembled source.

That being the case, I thought I might as well share what I have in that some other people may find it of interest or to carry on with it. Now you can be the first guy on your block to have commented, disassembled source for the Chroma! :->

Here goes:

CHROMA1.DOC
Contains a memory map for the Chroma up to address $1FFF. (Addresses above $2000 are memory-mapped I/O and are discussed in IOSTROBE.DOC). This identifies where all the channels/instruments/programs are located, as well as the individual bit signficances, etc. The document is in Microsoft Word v6.0 format.

IOSTROBE.DOC
Provides a full decode of address $2000-$200F, which are used as memory mapped I/O. The document is in Microsoft Word v6.0 format.

CHROMHEX.LIS
This is an ASCII text disassembly of the Rev 14 firmware. The symbol names were defined by me, as were the comments.

REV12HEX.LIS
This is a quick ASCII text disassembly of the Rev 12 firmware (using the same comment/symbol file as was used for the Rev 14 firmware). In some cases, symbol names may still have to be updated to ensure that they are Rev 12 specific (and not per Rev 14). This version was created for the purposes or compariing Rev 12 and Rev 14.

All the above is the result of my fiddling - in some cases it might not be complete (or might have some errors), but in many areas it is much better documented than the original Chroma assembler source that I saw.

Oh - while I'm at it, here are a few more things:

CHROMHEX.SYM, CHROMHEX.COM and CHROMHEX.txt
These are the symbol files and comments file that I used in conjuction with the Rev. 14 disassembly. If someone wants to continue disassembly using the same disassembler that I used, they can start exactly where I left off. CHROMHEX.TXT is the hexfile input (as used by the 6809 disassembler).

scan2.asm, scan3.asm
Commented assembly source files for both the Rev 2 and Rev 3 keyscan code. See "Eprom failures," March 2015, for a discussion and source files commented by Paul DeRocco [21030230].