Until I ran out, I have been shipping Minstrel 3 V3.55 boards. I am now shipping V3.58 boards. What happened inbetween? Here is the story, from a series of Patreon posts.
Whenever I get new batches of boards, even if they are just a repeat order, I like to build one up, just to be sure everything is OK.
Recently, I got a new batch of Minstrel 3 boards. These had a slight change, which shouldn't have made a difference. But it did. They didn't work.
That is a little unusual for me, I build quite a lot of Minstrel and Mini PET kits, and almost all of them work first time, the ones that don't usually have a missed solder join or a chip in the wrong place or something simple like that (e.g. one diode reversed and one wrong packed picked up by mistake last week - http://blog.tynemouthsoftware.co.uk/2024/03/building-lots-of-mini-pet-4080s.html)
This time, however, I couldn't see anything wrong, but it wasn't working. Being based on the ZX81, it was in a state where it was not working in a way that was difficult to diagnose as it wasn't running the display cycle correctly.
I did a lot of probing around, but with it not being consistent, it was difficult to see what the issue was.
I knew the changes I had made were involved with generating the display, so it was going to be a challenge.
The change was to replace two flip flops, each made of two NAND gates, with two D type flip flops. This was to allow the initial state to be controlled by the reset line, so that it would start up with the NMI generator disabled. The ZX81 ROM disables it with the first instruction, this was only the 4K ZX80 integer BASIC ROM.
(This is not a problem with the ZX81 8K ROM, just the ZX80 4K ROM which was written before the slow mode NMI hardware was created. The workaround is just to switch to the 8K ROM, press reset, and then switch back to the 4K and press reset again. Not that anyone would want to run the ZX80 4K ROM, but i thought it would be good make it start in a consistent state)
The change is on the top row of chips, it what was 00 00 02 04 08 08 and is now 00 02 74 04 08 08.
I checked over the assembled board carefully, and couldn't see anything. I swapped all the chips with a working 3.5.5 board (all apart from the one different chip). And the 3.5.5 continued to work and the 3.5.6 continued to not work. (and yes, I did independently test the one different chip)
When powered on, there was a sort of a display, but what sort of display was not consistent. Sometimes a blank screen, sometimes it looked like it was loading.
There were three reasons I could see why it doesn't work.
- The design is wrong
- There is a defect in manufacturing of the PCBs
- I messed up during assembly.
All three have happened it the past, so I need to work out which one it is.
In order to test point one, I went back to the 3.5.5 board and removed the 74HC00 chip and wired it to a breadboard. I only wired up the VSync flip flop to start with, hard wiring the NMI generator disabled to simplify things.
Replicating the circuit with the same 74HC00 chip worked as expected.
Next I wired up the 74HC74 replacement, with the same inputs in parallel with the 74HC00.
I wired up the common inputs and the output from both chips to the logic analyser, and they behaved as expected. The new chip was performing exactly the same job as the old one.
I then undid all the wiring, and just wired up the new chip. It continued to work. OK, 50% success.
Next I remade the NMI generator enable flip flop with the 74HC00 chip on the breadboard. and tested that. That also worked as expected.
Following the previous method, I now wired the inputs to the 74HC74 in parallel and checked the outputs.
That was also working exactly as expected.
I removed all the wiring to the NAND gates, leaving the 74 to do both jobs, exactly as it was in the 3.5.6 design, and it still worked.
So what was going on here?
That has proved that the design changes were valid and should have worked. So we're down to either a PCB manufacturing fault, or a mistake during assembly by me.
I decided to try the reverse on the 3.5.6 board, revert it to the V3.5.5 design and then try adding the new design.
I started with the NMI generator hard wired as disabled, so I could concentrate on just the VSync generator, and making that with NAND gates as in the previous design.
That didn't fix it, with either the new flip flop or the old NAND gate circuits?
At this point, it seemed like the design was fine, but the fault was elsewhere.
I went back to scanning the board to look for problems.
I did find a couple of resistors installed upside down. I can only apologise for this, the board was assembled back in January when I was not at my best.
I did of course rectify that heinous crime, but sadly it didn't fix the problem.
I did spot one oddity, one of the pins in one of the sockets seemed to be missing the middle bit. It was still making contact with the leg of the chip, but I replaced it anyway, in case that was the intermittent issue.
It made no difference.
I started going around the board, probing looking for shorts, and found none.
I then started probing around all the important signals.
D0 Beep Beep Beep
D1 Beep Beep Beep
...
A0 Beep Beep Beep
...
A7 Beep Beep Beep
getting bored of this, may as well keep going until the end.
A8 Beep Beep Beep
...
A13 Beep Beep Beep
A14 Beep Beep -
A15 Beep Beep -
That's odd, two of the places I should have found A14 and A15, they weren't there.
Well, there's your problem.
The last two address lines were not connected up to the Z80.
What? (my "What?" in the style of David Tennant got an awful lot of use yesterday)
PCB manufacturing defect or bad soldering?
I looked at the board and couldn't see anything.
In fact, I couldn't see the tracks that connected to those pins on the CPU.
On the old V3.5.5 board, you can see the A15 track (highlighted in blue) goes past the pin on the Z80 and there is a small track going up to the pin.
On the new V3.5.6 board, the traces just saunters past the pin without making the connection.
What?
The pin above should be connected to A14, but is also similarly shunned by all the passing traces.
Then I looked at the schematic.
What?
How did that happen?
And then I saw the edge connector.
What?
Half the pins were not connected!
I hadn't noticed that because I had been concentrating on the things I had changed, not realising that somehow other stuff had got changed?
I couldn't see anything else missing, just the two pins on the CPU and half the edge connector.
How did that happen?
I bodge wired the two missing traces and gave it a go.
And there you go, working perfectly.
Damn.
OK, so the boards are no good. I am running out of V3.5.5. boards, so I need to order more.
During all the testing above, I realised that I could make a similar change but moving only one wire.
So I went back to the old V3.5.5 schematic, and checked all the CPU connections were present and correct.
The one wire change was from pin 2 of IC11.
Moving it from IC305 pin 13 to IC305 pin 11.
OK, nice simple change.
Hey, for a laugh I will go back to the page with the CPU on and see if the connections have magically disappeared again.
What?
WHAT!
OK. This is repeatable. I have tried this several times. If I go back to the good schematic and make any small change like that on page 4 of the schematic, those same pins on page 1 all get disconnected?
I have no idea what is going on.
I have never seen that happen before.
I shut everything down and went for a walk along the seafront.
Time passed.
I started everything up again and ignored the 3.5.7 I had tried several time to create, and went back to 3.5.5 and created a 3.5.8 with that small change.
And of course the pins got disconnected again.
I have run out of "what?"s at this point. So I just reconnected all the pins that were missing and made the minor change on the PCB. This time not only checking against the V3.5.8 design, but also checking against the old V3.5.5 design and finding only that one expected change.
I will order the new board, but I might just add a repeat order of a small number of the old board, just in case.
I will raise this with the PCB software people, and see if they can suggest anything.
Anyone want a Minstrel 3 V3.5.6 drinks coaster?
Update
The new V3.58 boards have arrived.
I am pleased to see all the traces are intact.
And yes, that all works as expected.
With keyboard, and with the new ZXpand board on the back.
Or even stood vertically in the expansion pin header if you want. More on that sort of thing in an upcoming post.
Advertisements
The new Minstrel 3 V3.5.8 is available from my SellMyRetro store in kit and assembled form.
Minstrel 3 on Sell My Retro:
- Built and tested with keyboard - https://www.sellmyretro.com/offer/details/63941
- Built and tested for ZX81 case - https://www.sellmyretro.com/offer/details/63727
- Full kit with keyboard - https://www.sellmyretro.com/offer/details/63947
- Full kit with no keyboard - https://www.sellmyretro.com/offer/details/62147
The full range of Minstrel and Mini PET kits and accessories are available form my SellMyRetro store.
All the links can be found here:
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.