Tuesday, 23 April 2019

Acorn Electron Repair - Part 1 Main Board

Lesson one in how to pack a computer: supermarket bags for life do not make a good packaging material.
Lesson two: try to remember to plug in the connectors and fit at least some of the screws.
It looks like the keyboard ribbon has been damaged, but let's leave that for the moment.
At first glance, the rest of the machine looks fine, issue two Acorn Electron with almost everything soldered directly to the board
One thing that wasn't soldered to the board, but should have been, was the RF modulator. It is looking a bit dodgy, wobbling around loose. Looking on the back of the board, you can just make out the cracked dry joints where it used to be soldered in.
What I hadn't noticed at first is the power cable has actually broken off as well. I would guess that as the modulator got looser, the owner would have wiggled around the TV lead in order to get a picture. That's never a good idea as it usually gets worse, and I think it this case has lead that wire fraying and finally breaking off.
The wire at the top is the composite video input, just a wire passing through a plastic grommet. The other wire is some kind of pass through capacitor, built into the case, so I didn't think I would be able to reattach it. Since I had a selection of spare UM1233 RF modulators removed after composite mods, so I fitted one of those.
In order to test the board, I borrowed a keyboard from another Electron and switched it on. A quick check around power, clock and reset were all behaving as normal, but it wasn't booting up, just showing some random(ish) characters in 32 character repeated pattern.
Before I go further, I should explain that it's important to have a keyboard plugged in as the Electron will not boot without one. The only other machine I can think that has the same issue is it's big brother, the BBC micro. They keyboard circuitry is very different, but neither OS will not progress beyond a blank screen with no keyboard present. (OK, some will boot, but many won't, the pins are left floating, so it depends on variations in the particular silicon in the ULA)
The Electron keyboard is a 4x14 matrix, the 14 columns generated by the address lines A0-A13, and the 4 rows being read by the ULA. On the keyboard, there are pullup resistors on those input lines, and without those being present, the boot routine stalls.
In the past, I made a little dongle that plugged into the keyboard connector with those four resistors present (and a power LED for good measure). I couldn't find that, no idea where it is now, probably still plugged into an Electron board somewhere, so I made a new one.
I put this together on a spare bit of pad board, and as well as the four 15K pullup resistors, I added a green power LED and reset switch. As a bit of an afterthought, I added the red LED as the caps lock LED, and the right hand switch which presses shift+caps lock (which can be done with a single switch since they are on the same column wire). The idea being if the OS is running, it will toggle the LED, even if the screen display isn't working for whatever reason.
This plugs into the left hand side of the connector, and picks up pins 1 through 9 which has all the signal required. I tried it on a known working board, and it successfully does the job of replacing the keyboard and letting it boot.
As expected though, it doesn't help the faulty board in question, but it makes it easier to work on without having to keep plugging in a keyboard to test. The caps lock LED stays on and there is no response to shift + caps lock.
The random pattern on the screen is a bit unusual, Electron faults are usually black screen, or sometimes white screen, and those are usually caused by the ULA. This combines most of the IO, video generation and RAM management in the Electron.
 Under the metal cover is a ceramic chip.
You can quite often revive an electron by just cleaning the contacts and reseating the ULA.
They changed the socket type on these issue 4 boards, the chip is the same 12C021M as used on the earlier issue 2 boards, and they also suffer from the same issues.
By the time of the final(?) board revision, issue 6, they had changed to so soldered in blob chip, so that should be more reliable.
The RAM on this issue 6 board also used an alternative SIP module, with the same 4164 chips on.
4164? but there are only four of them? Well, that's one of the cost reductions in the Electron that was maybe a step too far. The 4164 is 64K by 1 bit. The Electron has four of those, and the ULA preforms two read/write cycles for each bit to get 32K by 8 bits, so memory access is half the speed it could be.
And the RAM is where I am currently looking for the problem with the faulty issue 4 board (remember that?). Probing around, the address lines on the chips were all wiggling around nicely, and the data pins (pins 2 and 14 on each chip) looked fine on three of the chips, but one wasn't moving at all.
That looked a likely suspect, so I replaced IC5 with a good working 4164 and tried it again.
Now that the board is working, it is going to be worth repairing the keyboard. Had it been a faulty ULA, I already have several boards that are fine other than a bad ULA, so would have just filed it along with those.
This has already gone on too long, so tune in for part 2 where I repair the keyboard.

If you want to support this blog, you can donate via Patreon or Paypal, or buy something from my store.

Sunday, 14 April 2019

ZX81 with early ULA

Slightly unusual blog post today. Here's a broken computer I'm not going to fix.
It's a ZX81 in not too bad condition, but with one of those aftermarket keyboards on. These give it a sort of ZX Spectrum 48K style feel.
It would originally have been stuck on, but the adhesive has dried up over time and it fell off easily.
The rubber keys press down on the original ZX81 membrane, so underneath is a standard ZX81.
This one is not working, so time to venture inside.
For once, the keyboard membrane tails don't look too bad.
This is an issue 1 ZX81 board, but quite an early one. The giveaway is the ULA.
This is one of the early ones with only a date code, no other labelling. So we know this one was produced sometime shortly after the 11th week in 1981.
Most of the issue 1 ZX81 boards after this had Ferranti labelled ULAs, 2C184E versions, and most of the chips were socketed.
Back to the earlier board, and the ROM is also soldered in, and I think is also an earlier buggy version.
The Z80 is an original Zilog part, dated even earlier, 30th week 1980.
The RAM is difficult to read, a Mostek MK4118 8038 date code?
It is at rather a jaunty angle. All the bits must have fallen down to one side.
The 5V is there, and there is a clock and the Z80 is doing stuff, but the screen is white. Testing with an external RAM pack makes no difference, so it's probably not the internal RAM, or at least not only the internal RAM.
It's looking like the ULA is faulty, and it's not socketed and soldered in. I've got (many) other ZX81s, so I don't need this one to work. It would be a shame to remove the ULA and replace it, or even to straighten up or replace the RAM, as that would make it just the same as any other issue 1 ZX81, so in this case, I think I'm going to leave it alone.

If you want to support this blog, you can donate via Patreon or Paypal, or buy something from my store.

Sunday, 7 April 2019

Atmel AVR Programming Clip Review

I've bought one of these recently, and it's great.
What is it? It is a clip to make temporary connections to a board with a microcontroller on to program it.
There is a standard pinout for programming Atmel AVR chips, a 6 pin 2x3 pin header with the following pinout. You'll see this on all sort of boards, there's even two of them on an Arduino board.
There are various programmers, from the very simple to the full features ones from Atmel themselves. The one I mostly use is the USBtiny ISP from Adafrruit.
This has an IDC connector on the end of the cable. On the early boards, and ones in active development, I solder a pin header onto the board.
For production boards, I tend to leave the holes in the board.
To program these, I insert the pin headers into the cable.
These will make a good enough connection, if held at an angle for the 10-20 seconds that it takes to program the chip.
And that's how I've been using it for years. I must have gone through half a dozen cables, as the ribbon starts to fray at the edge of the connector.
I have looked around for something to do this better, but most of the things I found need to be added as part of a programming jig. I was looking for something quick and simple. I then saw someone on Tindie selling a 6x1 programming clip.
That looked almost ideal, and I was going to get one as I do have a few boards which use the 6x1 layout with pads on the back, for a production programming jig.
I asked the seller DSTIKE, if they had a 3x2 option, and it they said one was planned, so I ordered one of each.
They arrived very nicely packed, and well protected.
This was just what I was looking for. The clip opens up, you slide it over the edge of the board and it locks in place with the 6 pins in the holes on the PCB.
You can then program the chip without having to hold it in place.
The IDC cable from the programmer plugs into the top.
And there is a clamp at the end so you can hold the wire in place (to stop it flexing and fraying like it used to do).
That's been working really well, so it is now a permanent fixture on my programmer.
The cynical amongst you (i.e. the first person I told about this), could say you could knock something up from a clothes peg. Well, maybe, but this opens wider, has all the connections already in place etc., and wasn't that expensive, so I'm very happy with it.
So, all in all, full marks, if you are interested in something like this, here is the link again to DSTIKE's Tindie store.

If you want to support this blog, you can donate via Patreon or Paypal, or buy something from my store.