Friday 13 May 2016

Colecovision repair

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

This is a Colecovision, or CBS Colecovision as it was in the UK. It's one I picked up a while ago, but have not got around to restoring yet. It's not the one I am going to be repairing, just setting the scene.
This is the board I have been sent to be repaired, which has already been removed from its case.
Nothing looks immediately wrong, other than some suspicious flux reside on the back indiciating the TMS9929A video processor has been replaced at some point.
It powers on OK, and displays a screen. It is UHF out, and my LCD's UHF tuner isn't very good. I keep a small black and white TV for UHF testing as it is old enough to cope with the rough approximation of a video signal that ZX80's and ZX81's put out.
To test properly, I clipped on a temporary composite video modification so I could view it on a modern LCD TV.
Audio and 5V come from the modulator, composite video is on the blue wire, temporarily desoldered from the modulator. The PCB has a simple transistor video buffer on it. The resistor values need adjusting to suit the Colecovision, and the cables are a bit long, so it's not perfect, but we're now getting a picture. Something's not quite right though. Is that Welsh?
A few power cycles and checking clocks and voltages, all looks right and those errors are reasonably consistent, although the N of TURN is flickering between an L and an N. This is what the screen is supposed to look like.
Many of the letters are correct, but some are consistently wrong (E always shows as G, F as D etc.). Assuming the Colecovision uses ASCII or something similar, I looked at the ASCII values of the letters. The higher 4 bits were always right, but the lower were wrong.
U -> W  55 -> 57  0101 -> 0111
R -> P  52 -> 50  0010 -> 0000
N -> L  4E -> 4C  1110 -> 1100
M -> O  4D -> 4F  1101 -> 1111
E -> G  45 -> 47  0101 -> 0111
F -> D  46 -> 44  0110 -> 0100
Of those bits, it was only ever bit 1 which was at fault. In these situations, it's often stuck high or low, but here it is just consistently wrong? The Colecovision has two sets of RAM, 2x2114 giving 1K main RAM, and 8x4116 giving 16K of video RAM. Looks like a video RAM fault, and each bit is handled by a single chip, Time to remove the RAM chip connected to 9928 pin RD1 (video RAM data 1) and test it.
My ZX Spectrum based 4116 tester showed the chip was fine? This confused me for a while, until I realised that for some reason better known to themselves, Texas Instruments used the label RD0 as the MSB, the most significant bit, or D7 as everybody else calls it. It is actually RD6 that is D1, the second least significant digit, the one that is (presumaby) faulty.
I removed that chip and it did fail the RAM test. I sorted through my collection of spare 4116 chips and found one of the same type and speed, so it would be a good match for the remaining RAM. Can you spot the replacement?
With that in place, time to retest, and it is now showing the correct characters (yes, it is the same picture I used before).
That's just the built in test screen, time for a cartridge, the compulsory 'came bundled with the system' Donkey Kong.
That's playing nicely, all sorted. I think the sound is a bit slow compared to other Donkey Kong ports. It seems the 50Hz system may simply be running slower than the 60Hz systems it was designed for?
I did try both a standard US Colecovision and a CBS branded one which was specifically marked as PAL, in case they had altered the timing for the PAL release, but both sound the same. No big issue, I guess I'm just so familiar with the arcade and other ports this one stands out as different.