Sunday 31 March 2024

Whatever happened with the Minstrel 3 V3.5.6?

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.

  1. The design is wrong
  2. There is a defect in manufacturing of the PCBs
  3. 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:

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.

Sunday 24 March 2024

Building lots of Mini PET 40/80s

It all started a couple of weeks ago.

A couple of long weeks ago.

TFW8b found the last of the Mini PET 40/80 PCBs and decided to put those up for sale again.

There were enough for 8 units, with a couple of extra mainboard PCBs without keyboard overlays. (yes, I know there are 9 in the photo, the last one is my Mini PET 40/80, there to make a square number)

It is a lot of work to pack and check (and recheck) these kits, and so it was decided it would be best to sell these as assembled units (which is more work.......).

So I set off to assemble the parts we had and the ones we needed to order to complete these builds. All looked to be available to buy, or from TFW8b stock or my stock, so they were listed for sale again. Initially to my and TFW8bs Patreon supporters, and then to the general public who snapped them up (all apart from the last one that sat there for a few days on it's own).

Whilst waiting for the PCBs to be sent up to me, I got on with the daunting task of assembling the keycaps. If you have ever built a Mini PET or a Minstrel 4D, you will know what is involved in putting these together.

You can imagine how much fun I had with this lot.

As you can tell, I was having so much fun, I made a few extras.

Even though it was only going to be me assembling these, it still made sense to sort out the ICs onto foam pads, although I wasn't as bothered about how neat they were.

That isn't the normal arrangement. This is "things that are going to be soldered to the PCBs", I populated the socketed chips direct from the tubes later on.

I went for soldering the logic chips without sockets, as I think that looks better. I'm a big fan of lining up 14 and 16 pin chips. You have to look quite hard to spot where the 14 pins stop and the 16 pins start.

Right, that's all the soldering done. Time for some ICs.

The microcontroller used on here has been discontinued in the 40 pin DIP package, but I was able to get hold of some form a supplier that still had stock, and miraculously, the EPROMs are back in production.

Lots of chips to program and label.

That's all the chips and the key switches done.

Time for the keycaps.

I use the technique of pickup up a random keycap, fitting it in place, then going back for another, then another etc. until it is done.

By the end of this, I was putting them in without reference to the layout sheet.

All done, time for some testing.

I went through the usual series of tests, self test, memory test, keyboard test, IEEE-488 port (with an SD2PET), userport (using the dual joystick module), and both datasette ports. I also measured the two 5V rails and the two 6V datasette motor supplies.

But this is the Mini PET 40/80, so as well as the usual 40 column favourites,

I also got to test out things like Cheese and Chive

And Colossal Caves in 80 column mode.

And the full built in self test.

So that's one done. Signed and numbered limited edition.

(N.B. in the Patreon preview of this post, I had written "singed" and numbered. So I have to be true to my word. Where did I put my blowtorch?)

Repeat 7 more times to make 8. (the 9th is my own Mini PET 40/80, there to make up the numbers)

That was a lot of work.

But it wasn't all plain sailing. Two of them didn't work first time.

The first started off looking OK, but then rapidly dimmed to a black screen.

After a bit of head scratching, I spotted the deliberate mistake.

I had all the resistors the right way around, but it seems I got one of the diodes reversed.

A quick swap around and that was sorted.

The second board had me puzzled for a bit longer.

Everything seemed to be working, but the picture was a bit rubbish.

It wasn't very stable, and there was coloured fringing all over the place.

I checked around the signals and there was something clearly wrong with the video signal.

There were peaks at the start of the line, and the video seemed to be at two different levels?

I double checked the second 5V rail, as the composite video output is on a different rail to the rest of the logic, but that was fine.

The input signal (below in green) was correct, but somehow when the composite video signal was being generated, it was getting messed up.

The sync input also looked correct, so that narrows it down to only a few components.

When measuring on the transistor base, I was seeing lots of negative pulses, was the transistor playing up?

I decided to cut the transistor out and recheck the signal at the base, to prove it was at fault.

It wasn't.

The negative pulses were still there on the mixed signal?

The diode was the next to go, and with that removed, the signal returned to normal.

I temporarily clipped a 1N4148 in place and it did not show the same negative pulses, so I replaced the transistor, and all three diodes, to be safe.

That sorted the problem, perfect picture again, and all the other tests passed.

So what was going on? well, looking at the diode, I can see a "23" on the marking, which is not part of "1N4148". Looking closer, that is 235B.

Looking that up, it is a 1N5235B, a 6.8V Zener diode used on the 40 column Mini PETs. (N.B. No relation to Kryten 2X4B-523P.)

No idea how that happened, all I can think is that I must have picked up some 6.8V zener diodes by mistake when I was assembling that particular board.

Now I have to pack up all these Mini PET 40/80 and get them down to TFW8b to fit the perspex and the manuals and get them out to the lucky buyers.

Advertisements

That was, as far as I know, the last of the TFW8b Mini PET 40/80s, although I still have the 40 column versions available.

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.