Sunday, 16 August 2026

Minstrel 4th Repair

A few people who have bought Minstrel or Mini PET kits have documented the process of building the kit on their social media of choice.

This one happened last week.

You get to watch the process and hope it all works out.

Most of the time, you get a Tah Dah! it works at the end.

Every now and then you get one where it is something simple, like in this picture, the user has not set any of the DIP switches on.

I like to try to arrange it so that the default of no switches on gives a good starting point, but in this case, it needed one or other of the clock select switches set to on. It tried to make it work with all the switches off, but it would have meant adding another chip.

Unfortunately, in this case, when the DIP switches were set correctly, things were still not working.

The screen was partly corrupted, and the text displayed was wrong.

The user reported that they keys they typed were not generating the right characters, and started pursuing a potential keyboard fault.

I was thinking it was more likely a display fault.

Potential Causes

There are things which can cause the wrong information being displayed on the screen, but it usually boils down to:

1) The video side is fine and is displaying what is in the video RAM, however the CPU side has a problem, and it is putting the wrong thing into video RAM.

2) The CPU side is fine and is putting the right thing into video RAM, but the video side is not displaying it correctly

3) All of the above

I asked the owner, we will call him "Chris" (because that is his name).

I asked Chris to try switching to the Lambda 8300 ROM. This is useful because it beeps at startup, and it beeps whenever you press a key.

That can be handy when you can't quite see what is going on.

I asked him to type 1 0 P R I N T 4 2 then press newline.

Lambda 8300 BASIC is not tokenised, so you have to type keywords like PRINT out in full.

He did that, and it appeared at the top of the screen (or somewhere near at least), but is showed 00 OQIMS 42.

One reason for that could be the keyboard is faulty and so that is what the Z80 thinks you typed, however, if you had of typed that in, it would have generated a syntax error and not displayed it at the top of the screen.

If I try that in the EightyOne emulator, you see the E error.

If, however, the keyboard is fine and it has read that as 10 PRINT 42, then it will move it to the top of the screen, ready for the next line.

That is what appears to have happened here. The line has been accepted, but it is not being displayed correctly.

That is a good sign to me, it appears the Z80 side is working correctly, but the display is showing the wrong thing.

I think the fault is somewhere around one of the 7 chips involved in the video generation, the video RAM chip, the microcontroller and the five logic chips.

The microcontroller in this case is acting like a 6545/6845 CRTC, it is counting up the address lines to the video RAM chip and generating the video timing. The video itself comes out of a 74HC166 shift register, much like the original machines did.

I have seen this sort of thing many times before, and you start to notice the patterns. This is quite a familiar one.

10 PRINT 42

00 OQIMS 42

If you look at the ZX81 BASIC character codes for those letters, you get

1D 1C 00 35 37 2E 33 39 00 20 1E

What was displayed was

1C 1C 00 34 36 2E 32 38 00 20 1E

If you can accept (as my brain still refuses to do) that A, C and E are even numbers in hex, then it looks like all of those characters have bit 0 set to 0. The already even numbered characters display correctly, the 0 for example, but the odd numbers are replaced with the even number directly below. The final 1 in position 0 is switched to a 0, T to S etc.

That usually means D0 is stuck low - look for a short or missed pin somewhere.

You can get the same things with the other 7 data bits, some of the others are less obvious, but start to make sense when you work out the character code.

Addressing Fault

There is also the mess at the bottom of the screen, that is a most likely a different problem, one on the addressing side of things.

The ZX81 style 32 line display is easier to spot this issue on that something like a PET with 40 character lines.

Here, it seems to be in blocks of 8 lines. 8x32 = 256 bytes. That usually means there is a problem with A8 or A9, as those control the 8 and 16 line blocks on the screen. If one of those is stuck low, there will be gaps of 8 or 16 lines.

The blocks of 8 characters wide also suggest an issue with A3 stuck high in those places. If you write to address 0, it sees that as 8. Address 1 is 9, and so on up to 8, which is sees as 8 because A3 is already set. That continues up to 15, but when you get to 16, it reads that as 24, and so on up to 31.

If you were to write to positions 0-31, it would actually write to positions 8-15 twice, and then positions 24-31 twice, hence seeing valid data only on those areas and for some reason inverse Y on the rest.

There were no obvious shorts or missed solder joints visible, so Chris sent the board to me to investigate further.

Fixing the Problems

The board arrived here a couple of days later, and I couldn't seem anything obvious either, but the faults were still there and had not been magically fixed in the postal system.

The blocks were not consistent and were flashing on and off, suggesting a floating line somewhere.

The banner at the top announces

KAMACA 8200 - MIMSSQEK 4SG U0,0

When it should say

LAMBDA 8300 - MINSTREL 4TH V1.0

Just to confirm my D0 theory, I wrote a little test program in ZX81 BASIC on the Eighty One emulator.

This reads through the string and prints it to the screen one character at a time.

It is showing what the Minstrel 4th is meant to be displaying.

I then modified the code to set bit 0 to 0, making all the odd numbers even.

There is no bitwise AND in ZX81 BASIC, so I had left a good few lines in case it got complicated.

The ZX81 uses floating point numbers, so I needed to use INT to remove the fractional part after the divide by 2, and then a multiply by 2 to get it back with bit 0 set low. (9/2 = 4.5, INT 4.5 = 4, 4*2 = 8)

And there it was, KAMACA 8200, as was shown on the screen.

Finding the Fault

I decided to have a closer look at the board with the USB microscope.

Oh, hello, that's not good.

Yes, clean through that track. The one to it's left has the solder mask damaged, but the track looks intact.

Oh, there's another one.

This one looks to have taken out two tracks, it is actually down into the fibreglass of the board.

The two areas of damage are both next to capacitor legs are.

I think this board get caught by the wire cutters when the leads were being trimmed.

I checked the traces for continuity, and there was indeed a break in each of the damaged tracks.

The first one was D0. Well, there's a surprise.

The track next to it is the border signal which is connected to the tape output, we hadn't got far enough to test that yet.

And finally A9, on the Z80 side, explains why some blocks were in the wrong place.

I was able to fix all of those with three bodge wires on the back, so you wouldn't know from the front.

Testing the Repair

Time to try it out.

Well, would you look at that.

Credit to Chris, everything else was fine, just those two tiny nicks on the back of the board from some overzealous side cutter action.

Of course I have to include a VLIST, which looks a lot better than it would have done with D0 stuck low.

The load lines also worked, and I tried out a few games.

The ZX81 has quite a nice Hopper I remember having back in the day. Not exactly GTA (or whatever the cool kids play these days, Broken Sword or the City Skylines or something like that I imagine), but I enjoyed it.

All done and ready to go back, and I see from the socials that it has arrived.

Hopefully we will get some shots of it working to balance out all the ones of it not working.

Thank to Chris for letting me write this up and use his photos.


All items are still available, and I can ship worldwide.

Including the Minstrel 4th, which is available in kit form, or pre-built, but as you have seen that should be fine as long as you are careful with the wire cutters.

International shipping is a bit complicated at the moment, so if you want to order from outside the UK, please see this page for more information:

Sorry to have to do this, and I know this is going to affect sales, but please understand it is the only option I have right now.

Patreon

If you enjoy posts like this, you can support me via Patreon, and get access to advance previews of blog posts, and exclusive posts.

You also get progress updates on new projects and other behind the scenes updates, as well as access to my Patreon only Discord server for even more regular updates, and to discuss your own projects.

I currently have 50% off your fist month if you want to try it out.