Friday, 27 October 2017

Get Your T-Shirts Here

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

Since you asked, well, OK, none of you asked, but I've done it anyway. I've setup a merch store where you can get T-Shirts and various other things, mugs, clocks, etc.
There are various logos and retro-computer related items, in different shapes and sizes.
Just what everyone will want for Christmas.
Who could resist a clock with a logo on?
Or maybe you need more cushions in your life? or mugs or laptop covers or wall hangings or duvets etc.
Go, you know you want to buy something now.

If you spot anything wrong, or have any requests or suggestions, let me know.

2022 Update: The Merch store is actually still open, although I don't think anyone has bought anything in ages.

Sunday, 22 October 2017

Commodore 64 C Internal SD2IEC


The standard SD2IEC connected to the IEC port on a range of Commodore computers and replaces a traditional IEC disk drive such as a 1541. Sometimes it can be more convenient to have this integrated into the computer.
This is an SD2IEC Classic from The Future Was 8 Bit, which is all the functionality on a single PCB. I have previous described fitting one inside a Commodore VIC20 - VIC20 Internal SD2IEC.
This time, I am going to fit one inside a Commodore 64C. The procedure is much the same. Full pinout can be found on the TFW8B website. The are pins for power and data, and connecting buttons and LEDs etc.. For most applications, if you're not disk swapping, you can get away without the buttons, so we only need the 5 wires indicated below.
Three on the top, and two on the bottom (the 'Reserved' pin is not used, so can be ignored).
You can solder direct to these pads, but I prefer to fit a connector, here I used a 2x3 0.1" header.
There are various points you can connect this to on the C64 board, directly to the pins on the 6 pin DIN socket is the usual way, but I prefer to find somewhere I can connect on the top of the board. Tracking the pins back to a set of diodes, the three data lines can be located, Data on the junction of CR11 and CR15, Clock on CR12/CR16 and Attn on CR13/CR17.
Here I desoldered the diode leg at the appropriate point, inserted the wire and then soldered both in place. The power connections I took from capacitor C1 near the datasette port. You can do the same thing with the capacitor legs, but here I moved it to two via holes nearby.
Those wires are connected to a 6 pin connector and attached to the SD2IEC classic, which is fitted on top of the modulator box using foam pads.
The spacing works out nicely as the card sticks out over the cartridge port, but you can see from the side view there are no clearance issues.
The connector is clear of the other side of the modulator, so no issues with shorting out on it's case.
You might have spotted the case in some of these photos is actually a breadbin C64 case, not a standard C64C one. This is because I am currently doing some development work on a C64 cartridge, and the C64C has a bar over the cartridge port which blocks access to the ROM chip.
I have moved to the C64 case which doesn't have that bar, so I can continue development work with full access (I have also removed the cartridge shield, but you don't need to do that to fit the SD2IEC).
You can still use the original IEC port to attach other SD2IEC devices or real disk drives. The same rules apply as normal, make sure the device ID's don't clash. Most default to ID8, and most can be changed on the fly to one of the other addresses.
I have fitted these before in various C64C cases. The positioning of the board means the LEDs shine upwards. The C64C has thin plastic grills in that section of case. This means when accessing the disk, you get clear disk activity lights shining through the case.
You can take that further and use a clear C64 case, if you're into that sort of thing.

Saturday, 14 October 2017

ZX81 Internal 16K RAM (reversible version)

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

One of the common issues with the ZX81 is the good old RAM pack wobble. Depending on the state of your edge connectors on your ZX81 and RAM pack, it sometimes does not take much to interrupt one or more connections and crash the ZX81.
To get around this, I have done many ZX81 internal RAM upgrades, following the procedure I described in an old blog post - ZX81 Internal 16K RAM.
I had a request to do one of these, but to do it in a reversible manner, without cutting tracks. The modification I normally do involves cutting a few tracks and making some extra links under the board.
I started with a ZX81 that had a memory fault, easy to check if it only works with a RAM pack connected. It was the version with two 2114 RAM chips.
You can see there are outlines for either IC4 (a single 24 pin or 28 pin chip) and IC4A and IC4B, (2x18 pin chips).
I removed those and cleared all the pads and fitted a 28 pin socket. Some ZX81's may already have this socket fitted, particularly kit built issue 1 boards.
To go back to a 1K ZX81, you can fit a 24 pin RAM chip here.
The originals were 4108 or 4118 chips, but you can also fit a 6116. With LK1 fitted (as standard), you will get 1K. With a 6116, you can also fit LK2 instead of LK1, and you will have 2K internal RAM. I just noticed that one of my TS1000's has a 6116 and LK2 fitted, I never knew it was 2K.
Here, we want 16K, so we are fitting a 62256. This is a 32K RAM chip, but it would require some additional logic gates to enable the full 32K, so we are just using 16K, which is fine for most ZX81 software.
Rather than cutting the tracks, I bent out the pins that needed to be connected to different places, namely pins 1, 21, 23 and 26. The wires then needed to be connected to address lines A10, A11, A12 and A13.
With a RAM chip, the order of the address and data lines is not actually important, as it reads back using the same pins in the same order as it was written. So rather than connecting to the matching pins on the RAM chip, just go for the easiest options.
PinSocket62256Connection
1RefreshA14D1 (A11)
2VCCA12VCC
26VCCA13D5 (A13)
23WEA11D3 (A12)
21VCC/A10A10D2 (A10)
Pin 2 is wired to 5V, so I left that alone, and the others are wired to the nearest points, the top of diodes D1, D2, D3 and D5. To make a clean connection, I desoldered the diode leads, inserted the bared wire ends into the same hole as the diode leg and resoldered the connection.
That doesn't look too bad, and since no tracks were cut, it means those connections can be removed and the 6116 or 4118 RAM chip fitted to go back to a 1K ZX81. You could even fit a pair of 2114 chips again if desired.
As part of the upgrade, I also swapped the 7805 regulator for a switch mode replacement (also reversible).
And fitted a composite video modification, again reversible. As described in a previous blog post (ZX81 composite video modification), the input wire is desoldered and pulled back into the modulator, and the resistor connected to the phono socket is desoldered at the top and bent out of the way, and a TFW8B video amp board fitted in the remaining space.
This has one of the later 2C210E ULAs, so the video output includes the back porch signal, so just needs buffering.
A heatsink is a good addition, to protect that ULA.
That's the board finished. Four upgrades, all of which make it a more usable ZX81, but can be reversed if so desired.
One ZX81, upgraded and ready to go.

Update - Testing the upgrade:
Once done, time to power up and wait for the K. If all is well, it should take a few seconds longer for the K to appear. You can test it by typing
PRINT PEEK 16388+256*PEEK 16389
This should display 32768, showing the top of the RAM is at 32K. The first 16K is the ROM, so that means it has recognised 16K of RAM. If it doesn't check your wiring.

Sunday, 8 October 2017

Commodore PET 3016 repair

This is an old post, preserved for reference.
The repair services mentioned within are no longer available.

A slightly different repair today. This is a Commodore PET 3016 board, the same board as used in the 2001N and 30xx and 40xx series (but not the 12" monitor 40xx series). It's not working, but it looks like it has had a lot of work done to it already. I normally try to avoid working on boards like this.
All the ROMs have been socketed, the original white single wipe contact sockets tend to be a bit rubbish, so they have been replaced with good quality turned pin sockets, I approve.
The capacitors have also been replaced. I'm never sure of the point of this, all of the caps I have removed from PET boards to check have tested fine, often still showing higher than the rated values of capacitance, and acceptable levels of internal resistance, so I don't really see the need to change them.
Looking around the board, it is clear that quite a lot of chips have already been replaced. No clear pattern, some with 80s date codes, some modern looking TI chips (which annoyingly don't have a date code). The latest actual date code was 1999 on one of the 74LS244 RAM data buffers.
Plugging in the PET diagnostics, a couple of problems show up, firstly there were some intermittent video RAM faults (only a couple showing up on this picture, as it is difficult to read otherwise).
The RAM appears to have passed (the last four blocks are the second bank of 16K which is not fitted in the 3016). Two of the ROM chips are OK, two faulty.
Looking at the video RAM, it appears the two chips have been replaced. One is at a definite angle, it appears to be making connection, but is certainly not straight. I socketed these to retest the chips to make sure it wasn't just an intermittent connection.
The problems persisted, but were also present with known working 2114 chips. So since the video RAM tests were failing, and always bits 0-3 only, and the display was corrupted, the problem must be the buffer feeding the video RAM (if the tests passed but the screen was still corrupted, I would be looking at the latch on the video output side instead). Swapping out that 74LS244 (UE8) and the problem was fixed.
I tested the two faulty ROMs in a programmer and one didn't respond and the other had corrupted data. Replacing those with EPROMs in adapters, all the tests passed. I had now set the diagnostics to 16K RAM test mode.
Swapping back to the original CPU, I still got a black screen. I tried a known working one, and got the same. Switching back to the diagnostics, all passed. Hmm, something odd is going on here.
I installed a ROM/RAM board, with the original 6502 CPU*, and got a READY prompt no problem. Switching off the ROM, and rebooting also brought up the READY prompt, so the ROM was working. Switching off the RAM and I got a black screen. (* actually just looking at the photos, it's not the original CPU or 6522, both have been replaced at some point, as has the RS branded 7425 below, I'll add those to the list)
Switching the ROM/RAM board to the PET Tester ROM, rather than the screen full of 'G' (for Good), it was more than half full of 'B' (for Bad). Going back and repeating the testing with the diagnostics board seems to indicate there was a timing difference between when the 6502 itself was accessing the RAM, and when the diagnostics board was.
I started looking through what could be causing that, starting with the data buffers, or maybe the address select logic, or the multiplexing. Maybe an issue with the R/W line. Following those up on the board, I found all the chips I was checking had already been replaced, the 74LS04 by the CPU, the 7417 by the IEEE-488 port, the 74LS10 in the middle of the board, the 74154, one of the RAM data buffers, one of the RAM multiplexors. Oh, and all 8 RAM chips.
This was ringing alarm bells. Someone has already spent a lot of time looking at this fault, and has replaced a lot of chips. What I don't know is whether they fixed the problem, or if they gave up. Also, crucially, I don't know if they damaged any tracks or through hole plating whilst replacing all these chips, potentially introducing the fault whilst repairing another. Or if any of the chips used were out of spec, or already faulty. This is why I don't like working on boards which have already had work done on them.
I went back to the ROM/RAM board and gave the rest of the board a thorough test. It was all running fine, the board bypassing the RAM fault. I looked further into the problem and replaced a few more chips, the 244 buffers and the 153 multiplexors without any improvement. The next step would have been to socket and replace the RAM chips, which probably wouldn't have helped, or go back and remove more of the previously replaced chips, test those and also check the state of the board underneath for faults. Which would make this a much longer and more expensive repair. At this point, I was aware the owner had said they didn't want to spend too much if it wasn't repairable and decided to give up on tracing that RAM fault.
I suggested the owner use the ROM/RAM board, which also gave them the option of upgrading to the full 32K from the original 16K and selecting the original BASIC 2 or upgrading to BASIC 4. Not ideal, I would have like to have repaired the board fully, but when there are that many unknowns, it would have meant a lot more work, and potentially a full set of RAM chips, which along with the two EPROM adapters would have worked out several times more expensive than going for the ROM/RAM board.
With the ROM/RAM board in place, that is all working nicely, I also fitted a user port piezo buzzer, which gives sound to games which support it such as Space Invaders and things like Down from Revival Studios.

2022 Update: PET ROM/RAM boards are still available from my SellMyRetro store.