Sunday, 27 August 2017

Commodore PET video RAM faults

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

This seems to be quite a common fault throughout the range of Commodore PET machines, so I thought I would roll up several repairs into a single post.
On power on, you get a screen full of characters, and there is something that looks about right, but all the letters look wrong.
If you look closer, you can see that in this case, the numbers and some of the letters are right. This is what it should say.
Now we need to do a bit of maths. First you need a table of the PETSCII character set (which is not quite the same as the ASCII one). This screen is generated by my PET Diagnostics board, and is quite handy for this.
Look up the values of some of the characters which are displaying correctly and incorrectly and look for a common factor.

Expected
Hex
Binary
Displayed
Hex
Binary
R
12
0001 0011
R
12
0001 0011
E
05
0000 0101
U
15
0001 0101
A
01
0000 0001
Q
11
0001 0001
D
04
0000 0100
T
14
0001 0100
Y
19
0001 1001
Y
19
0001 1001
3
33
0011 0011
3
33
0011 0011
*
2A
0010 1010
:
3A
0011 1010

From that it can be seen that the characters all being displayed all have bit 4 set, even the ones that shouldn't have bit 4 set. So the RAM chip which stores bit 4 is faulty (or sometimes the buffer that writes into it, or the latch which reads out of it).
On earlier 40 column machines (usually the ones with 9" monitors), there are two 2114 RAM chips. One handles bits 0,1,2 and 3, and the other bits 4,5,6 and 7.
Later CRTC based 40 column machines, there are two 2114 chips next to the empty spaces where the 80 column circuitry would go.
On 80 column machines, all four RAM chips are populated. Each pair handling alternate characters, so if you have the same bit 4 fault on an 80 column machine you would see alternating faulty characters.
You can see the first, third, fifth etc. characters are all correct, and the second, forth, sixth etc. have bit 4 stuck high as above.
I have written a program to simulate bit faults in the video RAM:
You can also see whole RAM chips failing, so you all four bits in the upper or lower nibble are stuck.
Finally, if both RAM chips are faulty, you get a nice chequer board pattern or a screen full of @'s.
The 2114 RAM chips used on most PETs are still available, but the 6550 RAM chips used in some of the earliest 2001-8 models are more difficult to locate. You can just see them under the dust.
This 2001 appears to have one dead chip, you can see the same O's and /'s pattern in the simulations above.
Swapping the chips around shows the opposite problem, so it is definitely a faulty chip.
I have built a module which can plug in and replace both of those chips.
I haven't listed these for sale, but if anyone needs one, let me know.
In this case, once the display was working, the RAM count was short, one of the main bank of RAM was faulty.
The spare working video RAM chip was used and the full 8K restored.
It is worth noting that a common fault on the 6550 RAM chip is the enable lines, there are several of them and the seem to fail in a way that enables the chip all the time, drowning out or fighting with whichever other chips should be active at the time.
When used as video RAM, the enables are not required, so you can sometimes shuffle the chips around so the ones with faulty enable lines are used as video RAM. I didn't have any spare dust to reapply to these chips.
Here is the same sort of fault, this time on a TRS80 Model I. Unusually, it only affects part of one line, which is showing '£' characters.
The characters all work when typed anywhere else on the screen, just the £ sign appearing on the end of that line.
Typing into that area shows characters are being modified, and the space is being shown as a £, in the same way as the space on the PET was shown as @ or / etc. depending on the fault.

Expected
Hex
Binary
Displayed
Hex
Binary
q
31
0011 0001
1
71
0111 0001
r
32
0011 0010
2
72
0111 0010
space
20
0010 0000
£
60
0110 0000
*
2A
0010 1010
j
6A
0110 1010

These all point to bit 6, which on the TRS80 is a bit unusual as the video RAM is made up of 7 chips with bit 6 unused. Later an eighth chip for bit 6 was bodged on with a piggy back chip.
With that replaced, the TRS80 was back to normal.
Whilst on the subject of video faults, I may as well mention another few oddities. This PET showed only a flashing white cursor, which moved around as you types, but no characters.
This was down to a dead character ROM.
The character ROM is also to blame if you get characters that aren't quite right, such as the extra bar on the E here.
On most PETs, a 27C16 or 2816 can be used, but for 2001-8's with 6540 ROM chips, I have an adapter.
With that, the video RAM replacement and a ROM/RAM board, you can get rid of all the 6540 and 6550 chips and have a 2001 PET which should be considerably more reliable (and less than half the power consumption).
A permanently inverted picture can be caused by a few things, it bit 7 fault can do that, but in this case it turned out to be a 74LS74 flip flop.
The same machine also developed a screen which was full of stripes, even with the character ROM removed, so that was narrowed down to the 74LS165.
Both replaced and the machine is back to normal.
I think that's about all I can say about video faults on the Commodore PET. Congratulations if you got this far, by the way.

Saturday, 19 August 2017

Z80 CPU, Clock and Reset module for RC2014

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

This is the first of several modules I will be producing for the RC2014 modular computer system.
This board contains the Z80 CPU, clock and reset circuitry, meaning you can replace the original CPU and Clock/Reset boards with a single board, handy if you're running out of space.
Most of the pins of the CPU are connected directly to the RC2014 bus connector. The input lines (INT, HALT, WAIT, NMI and BUSRQ) are pulled high via 10K resistors. HALT, WAIT and NMI are not part of the normal RC2014 bus, but can be jumpered to three of the spare pins if required.
The reset circuit is based on that used in many 1980s computers, and uses a 555 timer to generate a clean reset pulse at power on and when the onboard reset button is pressed. The reset line is driven via a transistor so that it can be pulled low by other devices on the RC2014 bus is required.
The clock is a standard 74HCT04 clock circuit, with separately buffered outputs for the Z80 CPU and the rest of the bus.
The board is the same size and shape as other new RC2014 modules, so sits nicely in an ever expanding system.
The Z80 CPU, Clock and Reset module is available as a bare PCB, a kit and as assembled and tested units.
All available from my Tindie store.

Monday, 14 August 2017

Timex Sinclair TS1000 Replacement keyboard membranes

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

The Timex Sinclair TS1000 was a rebadged version of Sinclair's ZX81, with a few minor changes.
Inside is a standard ZX81 Issue 3 board, with some extra shielding and some modifications for NTSC mode and a channel switch (more on that on my previous post on making a multi-region TS1000).
One less obvious change is two of the legends on the keyboard have been altered. 'RUBOUT' becomes 'DELETE' and 'NEW LINE' becomes 'ENTER'. Both fairly logical and more widely used than the terminology used on the ZX81.
The ZX81 is a more common machine, with a big following, and this makes it viable for replacement keyboard membranes to be manufactured for the ZX81, such as these excellent membranes produced by RWAP software.
However, the TS1000 are not as widespread, so it's probably not cost effective to get TS100 versions of these membranes produced.
I had already had some stick on overlays produced for my Minstrel ZX80 clones, in the ZX80 colour scheme. These were designed to stick over one of those ZX81 replacement membrane.
I have now added a TS1000 stick on overlay to that range, so now you can make TS1000 replacement membranes.
These stick over the ZX81 membrane to give you the correct keywords for the TS1000.
The resulting membrane is just what you need if you have a TS1000 with some rows or columns not responding.
This is one I had already tried to save a couple of times, but the cracks were too close to the keyboard end.
The old membranes usually peel off quite cleanly, if not, clean up the case so it is flat and level. Then remove the adhesive backing on the membrane and fit into place.
And there you have a TS1000 with a new membrane with the correct keywords in place.
All keys are now working, so I can get back to loading 3D Monster Maze.
The stick on overlays are available to order from my Tindie Store, I also have the RWAP ZX81 replacement membranes if you need one of those as well.
There are also the ZX80 style overlays if you fancy a change of colour scheme on your TS1000 or ZX81. The 8K ZX80 overlay uses the same keywords as the ZX81, so you can use it as normal. Build you own custom ZX81, such as this fetching example from ZX Priestess.
Or this blue themed transformation from Dave Williams.
Or my own ZX80 style white ZX81 (using the 4K ZX80 overlay with different keywords).
Overlays and membranes are available from my Tindie store.

Alternatively, you can order the overlays from SellMyRetro, where you can also buy the RWAP ZX81 Membranes.

Thanks again to Grant Searle who provided the base artwork for the original ZX81 keyboard.