Sunday 6 August 2017

Minstrel ZX80 Clone Troubleshooting

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

As far as I know, most of the Minstrel ZX80 clones that have been built have worked. I've had lots of reports of success and been sent pictures of working systems from all over the world. However, sometimes things don't go to plan. I try to help with troubleshooting where I can, and have seen a few common issues, all of which seemed to happen to this board.
The first things to check are the soldering, make sure there are no bridges or dry joints, and then that all the parts are in the right place. The owner has done a nice neat job of assembling this one, but unfortunately it's not working. Next to check is the ROM. The owner had said they weren't sure, and had provided two EPROMs, so I checked them out in the programmer.
Hmm, the contents starts with PK. That may be ringing alarm bells with some of you, it did with me. It looks like what has been burned to the ROM is a .ZIP file containing the ROM image which has not be decompressed. You can see the filename it contains (ZX80rom.bin) in the file contents. Sadly Zilog didn't build in decompression into the Z80, so it can't do anything with that. The other one was fine.
Another issue is that of the ROM address lines. I designed the Minstrel board so you could install a 27C64, 27C128, 27C256 or 27C512 EPROM, or a 28C64 or 28C256 EEPROM, and select between 1, 2, 4 or 8 ROM images. These are selected by three jumpers above the ROM chip.
With chips smaller than the 27C512, these extra address lines are unconnected or used during programming. Either way they should be tied high for normal read operations. The pinouts are slightly different between the common EPROM types:

Jumper
Pin
27C64
28C64
27C128
27C256
28C256
27C512
A15
1
VPP
NC
VPP
VPP
A14
A15
A14
27
PGM
WE
PGM
A14
WE
A14
A13
26
NC
NC
A13
A13
A13
A13

If you use a chip larger than a 27C64, you can place multiple 8K ROM images in there, and select the appropriate one using the jumpers. This table shows the jumper settings which should be used to select the ROM image. Entries in brackets indicate duplicates due to not connected pins. '-' indicates do not use. If you are using the 4K ZX80 ROM image, either double it up to fill 8K, or place it in the first half of the 8K block.

A15
A14
A13
27C64
28C64
27C128
27C256
28C256
27C512
0
0
0
-
-
-
-
-
ROM 1
0
0
1
-
-
-
-
-
ROM 2
0
1
0
-
(ROM 1)
-
-
ROM 1
ROM 3
0
1
1
-
(ROM 1)
-
-
ROM 2
ROM 4
1
0
0
-
-
-
ROM 1
-
ROM 5
1
0
1
-
-
-
ROM 2
-
ROM 6
1
1
0
(ROM 1)
(ROM 1)
ROM 1
ROM 3
ROM 3
ROM 7
1
1
1
ROM 1
ROM 1
ROM 2
ROM 4
ROM 4
ROM 8

Installing the good ROM chip, a video signal appeared. This may not seem much, but actually it is almost there. In order for the screen to be generated, the Z80 has to be fed the appropriate code, and if that is running, then a lot of the system is working.
OK, good start. The K isn't there, and there is a bit sticking out to the left hand side, near where the K should be. Problems with the characters on the video output seem to mainly be caused by vintage TTL chips. Not all of them seem to be up to the job, particularly the parts that run at the full 6.5MHz. These are the 74LS86 and the 74LS165. The lower 74LS74 also sees the full speed clock, but so far I have not seen any problems with it.
The owner has already addressed an issue with the 74LS86 which forms the crystal oscillator circuit. Some older chips do not seem to be able to drive the crystal. You can sometimes get away with using a ceramic resonator, which requires less drive current, however the other gate on the same chip will probably not be able to handle applying the invert signal to the pixel data. In this case, the clock was not running, so the crystal had been replaced with a ceramic resonator, and is now generating a clock signal. Characters aren't being generated, so I checked the 74LS165 which generates the character data. It wasn't getting a load signal, so wasn't outputting anything. That signal should be generated by the 74LS10, and it's inputs looked right, so I swapped that out, and I now get a black box.
The replacement 74LS10 is now generating the shift register load function, which also controls the inversion signal,  so the black box was there. The 74LS165 now seemed to be generating valid data. That signal was getting as far as the 74LS86, but no further. The 74LS86 was passing through the invert signal, but not reacting fast enough for the character data that should be in it. Replacing the 74LS86, the characters appeared. The modern 74LS86 is fast enough to handle the pixel data, and could also drive the original crystal. The crystal could be replaced, but I have left it as the ceramic resonator is working OK. However, there was still that spike on the left, just under the K.
That turned out to be down to the 74LS08 which generates the back porch signal on the composte video. Replacing that got rid of the spike. It also seemed to increase the border size as well, back to where it should be.
Now there was a nice screen with the K sign.
A quick test program and that seems to be working.
The board is now ready to go back.
I noticed that all of the chips that had failed were Signetics brand with early 80s date codes. The remaining chips were all Texas Instruments, other than three late 80s Signetics chips and one Fairchold. I have also had reports of similar issues with Motorola 74LS86 chips. One Minstrel builder had a tube of 25 of them that were not up to the job.
It is also interesting to note that all chips that were faulty did actually pass the tests on my Wellon VP-390 EPROM programmer.
On my Minipro EPROM programmer, the 74LS10 failed.
But all the others passed. It appears to be down to the speed the chips are tested at, and what speed they run at on the board.
I have verified that each of those chips were faulty as I saw the same faults when I installed them on a different Minstrel board, although the 74LS08 spike appeared to go in the opposite direction this time.
So the moral of the story is, beware old TTL chips, not all of them can cope at higher speeds, even in a 1980s design. I recommend using new Texas Instruments LS TTL chips, they are all still in production, and I haven't had any problems with those. I am not sponsored by Texas Instruments. I wish I was. I go through so many tubes of TTL chips. But it just looks nice will all uniform chips, particularly they way the use the same body size for 14 and 16 pin chips, so they all look the same even though 5 of them are 16 pin and the rest 14 pin.
It should work with HCT chips, but I would recommend sticking with LS. It probably won't work with HC chips, I would avoid those. I always supply new Texas Instruments LS TTL chips in the Minstrel kits and built units available from my Tindie store.

2022 Update: At the time of writing, there are still a few Minstrel 2 (ZX80) and Minstrel 3 (ZX81) kits available from  The Future Was 8 bit but those are the Final Edition kits, there are unlikely to be any more.