Sunday, 19 February 2017

ZX Spectrum Issue 2 Repair

As part of the testing of the DivMMC future, we tried to use a range of machines of all different types and conditions. Some pristine and working perfectly, some upgraded and recapped, some in pretty poor condition.
This was a fairly bad one from my 'broken' pile. This is an early-ish issue 2 board which arrived in this condition inside a 48K rubber key Spectrum from ebay.
The first obvious issue is the missing Z80 CPU, not a standard socket, so it's probably been repaired in the past. Also note the ROM is marked with an X, presumably someone has tested this and found it not working.
Like most issue 2 boards, the transistor mod has been done to the CPU. However this ones has not had the clock mod, this is the original version of the clock circuit with the diode and 3K3 resistor, and no pullup on the clock line. See my previous post about reverting a board to this state and earlier.
As well as the cross on the ROM, there are also marks on one chip in either set of RAM, presumably theses had been identified as faulty as well.
Looking under the PCB, it is obvious the Z80 has been replaced, and also the 74LS157 next to it, although the chip and socket look identical to the one next to that.
At the top, there seems to be some track damage, and that flux is a bit nasty.
The soldering is a bit inconsistent, so I really need to remove this.
Looks a lot better with the socket desoldered and the flux cleaned up. One of the reasons I dislike sockets with a covered base is that you can't see what condition the board is in underneath it. I've lifted a few like that and found gouges in the board from removal of the previous chip which had broken tracks so it was never going to work.
This isn't too bad, a few suspicious looking tracks, but continuity tested OK once the socket had been replaced and solder had flowed on both sides of the board.
With a new Z80 installed, the next thing was the ROM, I had noticed under the heatsink that the jumpers were set for H, a Hitachi ROM, but the chip installed was an NEC, which should have the N jumpers installed. The Hitachi ones are less common, and I didn't have a spare to hand, so I changed the links to N.
With that the machine still didn't boot, but I was now able to run a memory test cartridge which showed up a fault in D5. This is an issue 2 board, so obviously, the colour is way out. I'll address that later.
Looking at the RAM, the IC that handles D5 is the one which was marked as faulty.
I have to agree, IC11 is probably faulty as that is the chip which provides 16Kbits of RAM on D5.
With the 4116 in IC11 replaced, the memory tests now passed, and I could adjust the colour. The D5 chip in the upper bank was also marked as bad, but seems to test OK.
With the RAM tests passed, time to try the ROM and see if I can get into BASIC.
No problems with the ROM either, which is unusual as I have had a lot of issues with NEC ROMs, more on that in a later post. I presume this board originally had a Hitachi ROM and that was swapped with another Spectrum along with the CPU. The ROM was probably marked as bad when actually it was just the jumpers were set wrong.
That one didn't turn out too bad.
  • Some track damage and ugly soldering on the CPU socket
  • Missing CPU
  • Wrong jumper links for the ROM
  • One RAM chip replaced
  • The usual issue 2 colour correction. 
  • New membrane
  • Cleaning the edge connector
  • Composite video modification
Far fewer parts than were actually marked as faulty.
The important question now the board has been resurrected, is does the DivMMC Future work with it?
Well, of course it does.
Someone asked on twitter about Jet Pac, yes, that runs fine. I found there were a few flaky copies on the internet, so I saved a .z80 snapshot from the fuse emulator, and I have been using that without a problem.
I saved after I had selected Kempston joystick, so I can just press 5 to start.
I did try some other boards and things like the interface 1 with this Spectrum, but I couldn't get them to work. The clock modification done to later issue 2 boards may help, but the DivMMC future works without the need for that.
I have been testing using early prototype and release candidate DivMMC future units in 3D printed cases.
I am sure The Future Was 8 Bit would like me to remind you that the final units will come in injection moulded cases like his SD2IEC drives and the VIC20 Penultimate Cartridges.
N.B. the preorders will come with a preloaded SD card, but sadly the biro is not included in the current offer. If the lack of a yellow biro is not a deal breaker, you can preorder a DivMMC future with SD card now.

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

Friday, 17 February 2017

VIC20 Repair

The Penultimate Cartridge was launched last year, and between the initial units I sold and all the production units that have been sold by The Future Was 8 Bit, there are quite a lot of them out there.
I'm pleased to say that with all those units that have been sold there have been no returns. We almost had one, here's the story.
A user had just bought a Penultimate Cartridge and reported it was behaving oddly. The menu was appearing, and games could be loaded, the problem came with the RAM, anything over 8K was failing. This is odd, as the design has been proved to be reliable, and all the units are tested before and after being installed in their cases, so we wouldn't expect any failures. The user had done a bit of testing, and was happy to do a few more tests to try to identify the problems.
Time for some quick revision on the VIC20 memory map. The 6502 in the VIC20 has a 64K address space. This is split into 8 blocks of 8K, allocated as follows:

Address Range
0000 - 1FFF
Internal 5K RAM + CART RAM1/RAM2/RAM3
2000 - 3FFF
Cart BLK1
4000 - 5FFF
Cart BLK2
6000 - 7FFF
Cart BLK3
8000 - 9FFF
Video / IO space
A000 - BFFF
Cart BLK5
C000 - DFFF
E000 - FFFF

A cartridge can add ROM or RAM at blocks 1,2,3 and 5, and also 3K of RAM into block 0, as three 1K blocks at RAM1, RAM2 and RAM3 (hence the maximum = 4x8K + 3x1 = 35K). 8K was working, so was 11K, so block 0 and block 1 were OK, but as soon as RAM was added to block 2, it would fail. In order to narrow things down, I asked the user to try a few games. The VIC20 will automatically start a ROM with an appropriate signature when placed in block 5. Most cartridges use an 8K ROM in block 5, and many also have an additional 8K ROM in another block. There isn't a standard here, some use block 1 some block 3. I suggested testing the following games:

Blocks Used
5 + 1
5 + 3
Adventure Land
2 + 3

Avenger, Centipede and Defender all worked fine, so blocks 1, 3 and 5 were OK. Adventure Land required block 2, and that wasn't working. So again this was pointing to block 2. This exonerates the RAM chip, but points the finger at one of the following:

  1. Something in the cartridge responding incorrectly when block 2 was selected
  2. A bad contact on the edge connector carrying the block 2 signal
  3. Something inside the VIC20 causing an issue with block 2 access

The user had already cleaned the edge connectors, and they looked fine, which seems to rule out option 2, so the cartridge was return to TFW8B for testing. When received, it tested fine, so that rules out 1. The only candidate remaining was a fault in the VIC20. The user wasn't too far from me, so dropped his VIC20 off for further testing.
All looks well inside, nice clean VIC20 CR. This later version of the VIC20 was fairly reliable, it is usually the kernal ROM or VIC chip which goes, coincidentally, the only factory socketed chips on the board.
I tried it out using my prototype Penultimate Cartridge, the LEDs on here show the mode and ROM image selected, and these were showing the right thing, so the cartridge was operating as it should, but was still failing memory tests.
Inside the VIC20, there is a 74LS138 chip which generates eight signals, one for each block of memory, each of which is normally high and is pulled low when that block is selected. Looking along the pins on the oscilloscope, all the pins were high as expected, with blocks 0, 4, 6 and 7 being used in normal operations, and blocks 5 and 3 also pulsing low when the Penultimate Cartridge menu was being used. Block 1 was high as normal. Block 2 was floating low all of the time. Bingo. There's ya problem.
I swapped that chip out and retested and everything now ran fine. Block 1,2 and 3 could be filled with RAM and that all passed memory tests. When that line was floating low, as soon as any ROM or RAM was connected to that pin, it would be enabled all the time, not just when the block was accessed, so would have caused errors throughout the address range, explaining the strange behaviour.
I've run through the Penultimate Cartridge tester a few times, and it has passed. I retested with a different Penultimate Cartridge and several original Cartridges, and finally had the users original Penultimate Cartridge sent up here from TFW8B.
That again passed all the tests. I also tried some large games loaded from SD2IEC, like Pentagorat which needs 32K of RAM and Doom which needs 35K.
All done and ready to return to the user with his original Penultimate Cartridge. That VIC20 might have been like that since new, never a problem until something larger than 8K was added to the cartridge port. I've checked and unfortunately, the warranty from Commodore has run out.

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

Monday, 13 February 2017


The PET microSD is an SD card disk drive for the Commodore PET. I have been making these for a while, but they have been out of stock recently as I have been preoccupied bringing some new products to market (namely the VIC20 Penultimate Cartridge, the Minstrel ZX80 Clone and the DivMMC Future).
I've decided the best thing to do is to setup a preorder for the PET microSD, to gauge demand for the different types and get some more boards ordered and some more units built up. There are three types of PET microSD boards. I was hoping to simplify this list, but for the moment, I'll leave them as they are.

PET microSD Horizontal

This is the original build. It sticks out of the back of a PET and is powered from the datasette port. This is suitable for any PET with IEEE-488 and datasette edge connectors (so not the 8032-SK). Note the power connector no longer sticks out as much as the version shown here.

PET microSD Vertical

This also fits on the back of the PET, but is low profile, so does not stick out as much as the Horizontal. Again suitable for most PETs except the 8032-SK.
It is powered by a 9V DC tap from inside the PET, normally by plugging into the expansion power connector (J11).
If J11 is not present, or in use for something else, it can be powered by a clip onto a diode near the power connector. The 2001 does not have J11, and the 8096, 8096-SK and things like the Super PET use J11 for expansion boards, so these would need the power clip. The rest can use J11 for power.

PET microSD Internal

This version fits almost totally inside the PET. These is a small loopback board which plugs into the back and passes the signal back inside. This is also powered via the 9V tap as above.
This is suitable most PETs, and these is a version with an edge connector suitable for the 8032-SK, this will allow the rear IEEE-488 port of the 8032-SK to still be used.


This is a pre-order for the next batch of PET microSD boards. All are supplied with a microSD card preloaded with some example software to get you started.
These are pre-orders, and should be dispatched by the end of March 2017, if not before.

Select model:
Price including postage:
Special requests / Comments


  • When I say PET, I mean PET and CBM and CBM-II
  • When I say 8032-SK, I mean 8032-SK and 8096-SK machines with rounded cases and separate keyboards
  • When I say 2001, I mean 2001 series PETs with chicklet keyboards and built in datasettes
  • When I say 2001N, I mean 2001-8N/-16N/-32N and other 2001N machines, which were also called the 3000 series and 4000 series. All with 9" screens, and full size keyboards.
  • PETs with BASIC version 1 will need to be upgraded to BASIC 2 or BASIC 4 (why not use a PET ROM/RAM board)
  • Click here for a full list of which PETs support which version of PET microSD
If you want to support this blog, you can donate via Patreon or Paypal, or buy something from my store.

Wednesday, 8 February 2017

Flip Pins - A Review

These are Flip Pins, advertised new IC style pins for PCB projects. They come in 20 pin, 14 pin and 8 pin versions (for 40, 28 and 16 pin sockets).
The idea is they can be soldered to a PCB to form a unit which can plug into an IC socket. When I saw these, I ordered a few sets to try them out.
There are many options already available. The easiest and by far the worst is to use square pin 0.1" header, designed for connectors or jumpers. These won't fit turned pin sockets, and will damage single or dual wipe standard IC sockets or breadboards. These were some QFP adapter boards which came with pins attached. I wouldn't recommend using these type of pins.
You can get single inline pin strips with pins on both sides, I used to use these on the dual SID boards and various IC adapters. They can be a little fragile and if a pins snaps, the whole row has to be replaced.
Recently, I have been using these IC sockets with pins on both sides. This means I can solder these directly to a PCB to leave pins sticking out the bottom of the PCB.
I also use these with a socket IC soldered onto the bottom of the PCB, and plug the double sided socket into that. This raises the plug in board higher, which is often useful for something like the PET ROM/RAM boards which need to overhang adjacent chips which may also be in sockets.
The idea with the flip pins is they have a flat profile, like an IC, rather than round like the SIL/DIL pins or square like the header pins. This should mean they can be used in any sockets.
The obvious project to test these with was the PET diagnostic boards, which are designed to plug into the 6502 socket of a Commodore PET. These now form something which looks even more like the IC it replaces.
The pins arrive in a carrier, which holds them in place whilst you solder, and then is removed to reveal the pins. I ended up making a jig to hold both sides level. Would be nice if they came in a 0.6" wide carrier with pins on both sides like a 40 pin socket, so both sides would be correctly spaced and aligned.
I found during assembly that the pins do not stick up through the holes on the PCB enough to solder them properly. You can't get to the pin itself to heat it with the tip of the soldering iron, so you are relying on heating the pad and letting the solder flow around the pin and hope it takes. I would prefer if they stood at few millimetres above the PCB so they could be properly soldered.
The completed units can be produced to be no larger than an original IC, so would be ideal for IC replacements.
I've built up a few boards to try this out. I think this main issue for me is not being able to solder the pins properly, so they aren't are firmly attached as I would like. Don't even think about trying to rework them once the carrier has been removed as they will rotate or fall out and you will spend the ages trying to get them back in line (see if you can spot which of the previous photos was taken after I had tried to tidy up a PET diagnostics board and made it far worse).
You can see how flat the solder joints are on the top of the PCB, there is no protruding pin. I can see that might be an advantage in some situations, but maybe they could offer two versions, one with longer pins that can be soldered normally.
I don't think I will be using them, I would like to, it's a great idea but I don't think in the current format, they are strong enough. They do work, and may be suitable for other projects. I'll be keeping a look out for a version with longer pins or a dual carrier.
The standard IC pin/socket holes in these boards are 0.035" diameter, whereas the Flip Pin site recommends 0.025". I may get a batch of boards made with smaller holes and see if that makes a difference,

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