Sunday, 6 August 2017

Minstrel ZX80 Clone Troubleshooting

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.

2024 Update: The full range of Minstrel kits and built units is available again, now from my SellMyRetro store - http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html

Patreon

You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.

https://www.patreon.com/tynemouthsoftware

Friday, 4 August 2017

Minstrel ZX80 Clone V2.5 boards

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

I have updated the design of the Minstrel ZX80 clone slightly, the new boards are V2.5.
The main change is the addition of a block of jumpers under the ROM socket.
These give the option of using an original ZX81 24 pin ROM chip instead of the 28 pin EPROMs normally used. These jumpers are pre-wired for 28 pin mode.
If you want to use a 24 pin ROM, you need to cut the traces which set 28 pin mode.
Once the links to 28 pin mode are cut, fit wire links for 24 pin mode,
Then just build the rest of the board as normal, other than fitting a 24 pin socket.
This means if you are using a ZX81 donor case, you can also use the Z80 and ROM chips from the original board (if they are working), along with the heatsink if you want to use a linear 7805 regulator.
As before the boards are available in blue and green.
The blue goes well with the RC2014 keyboard
The green is the more classic look.
The other jumpers on the board are also pre-wired, so you can build a version without needing to fit any jumpers or make any links.
You can fit jumpers where you want to change an option, just remember to cut the track underneath first.
For example here on the ROM selection jumpers, the board is wired for all three selections set to high. This will select the highest 8K image in your EPROM. Defaulting to high allows the use of EPROMs from 27C64 to 27C512. On the smaller capacity chips, the pins are unconnected or are only required for programming and for normal operation should be pulled high.
I have also revised the keyboard overlays. These are keyboard overlay which can be stuck over a ZX81 membrane (or more likely a ZX81 replacement menbrane).
The first is for use with the original ZX80 4K integer BASIC, and uses the keywords and colour scheme of the ZX80.
The second is for use the with ZX81 style 8K floating point BASIC. This has a different set of keywords and symbols and also follows the ZX80 colour scheme.
This shows the ZX80 style 4K version on the left, and the ZX81 (which uses the 8K BASIC) on the right, and in the middle is the new intermediate ZX80 8K BASIC hybrid. I have moved the top row of keywords above the top row of keys, as the ZX80 does. Thanks again to Grant Searle who provided the base artwork for the two original keyboards.
These were intended for use with the Minstrel to make a ZX80 clone for a ZX81 case.
Or with a ZX81 membrane on a base of some kind, I use a clear sheet of perspex on the open frame versions I sell on Tindie.
Here the membrane connectors are mounted on the underside of the board.
However, you can also use them to customise your ZX81 - like this one built by @zx_priestess.
Also in this batch of overlays, I have produced a TS1000 overlay.
The layout is almost identical to the ZX81, but has 'delete' instead of 'rubout' and 'enter' in place of 'newline'. These can be used if you need to replace the membrane on a TS1000, you can fit a ZX81 membrane then this overlay on top.
You could also use these on a normal ZX81 if you prefer DELETE to RUBOUT etc.

Update:

The current stock of boards have been updated to V2.6.
I have got rid of the pre-linked jumpers as they were causing some confusion, so all jumpers need to be installed or wire links fitted.
The Minstrel boards, overlays, kits and built units are only available from my Tindie store, TFW8b.com.

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.
I removed the 24pin/28pin jumpers on the next revision. Too many people missed them out or didn't know what they were there.

Thursday, 3 August 2017

Commodore PET 2001 Repair - Keyboard only some keys responding

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

A common problem with the Commodore PET (and indeed many computers of it's generation) is one or more keys not responding.
With the PET, most of the time, well, almost all of the time, this is down to bad contacts on the keys and can be fixed by cleaning the keyboard matrix. I'll repeat that, in bold.

Almost all the time, all that is required is cleaning the key contacts. This post is an unusual case where it was more than that, but that rarely happens. Please try cleaning the contacts first. 

With the 'chicklet' keyboard on the PET 2001, this is just a case of removing all the screws on the back and cleaning the contacts on the PCB. Full size PET keyboards are much the same - see a previous post on cleaning PET keyboards.
This is my test keyboard, and you can see from the sticker that the contacts were last cleaned a year ago and are still working fine, however, I've opened it up for two reasons. Firstly, I wanted to have some pictures of cleaning a keyboard in the post to reinforce the point that most of the problems with the keyboard can be solved by cleaning it.
Secondly, last time I picked this up off the shelf, one of the wires fell off - and by the time I took this photo, a few more had gone and the rest were looking decidedly dodgy.
This keyboard gets moved around a lot, so I thought I had better replaces the wires soldered direct to the board with something more sturdy. I removed the remaining wires and soldered on a 0.1" header.
I made up a temporary test cable and plugged the keyboard into a PET USB keyboard adapter, and all keys were working correctly.
Now that's back together I can get back to this board and confirm the problem with this board. It appears only the bottom row of keys is responding, along with a few others keys which are doing odd things, many appear shifted when shift is not pressed and most do not respond.
I ran my PET diagnostics board, and it was showing two of the ROMs were giving invalid checksums. I thought it might have been a ROM fault where the keyboard scan code or lookup table were, so I tried using a ROM/RAM board to bypass the onboard ROM and RAM, but the keyboard fault was still present.
I had already replaced the 6520 which drives the keyboard (with a W65C21N), which had got the machine booting again. I did try temporarily replacing the other IO chips on the PET, and also using an original 6520 chip, but it was behaving the same.
The problem turned out to not be too far away, the chip below is the 74LS145 BCD decoder, being used here as a 3 to 10 decoder to drive the 10 row lines from three outputs of the 6520.
That was faulty, all the outputs were low, hence the problem reading keys. With that replaced, all was well and the PET was reading the keyboard correctly again. For once, it wasn't a case of just cleaning the keyboard.
I have since made up a new cable from the 18 pin connector to the 20 way header on the board. The header on the board has a polarising pin at pin 19, and an unused (but connected to ground) pin at pin 20. This makes it easier to get it the right way around.
I made this longer than the original, to give me more space on the test bench.
Update:
I have now built some Commodore PET replacement keyboards which can be used to test in situations like this, to see if it is just bad contacts.
They are also useful on a test bench, or can be fitted to a 2001 case as a direct replacement for the chiclet keyboard.