16

I bought what was claimed by the seller to be an Issue 4S Spectrum 48k.

I tried loading games and some worked while others didn't. Turns out it was the 16k ones that worked and 48k didn't. This pattern took a while to work out because the tapes were old as was the tape player. I put those that worked in one pile, with the others in another pile. And tried and tried again, in the time honoured fashion, changing volume, leads, cleaning. Games like Atic Atac would appear to load then reset the machine.

Others would fail with RAMTOP no good errors on the BASIC loader. Errors I had rarely seen before.

Others with other memory errors like Out of Memory.

I suspected a memory problem.

So I tried POKEing and PEEKing to all of upper memory with 255. Checked out OK.

Then...weirdness.

POKEing 0 to 32768 PEEKed as 4. 128 gave 132 and so on.

So I checked the P-RAMT system variable. 23732+23733*256 gave 32767.

So it looked like a 16k but was claimed and sold to me as a 48k.

Various weirdness occurred. Then it occurred to me from looking at how the ROM RST 0 (hard reset) worked that it might be certain bits working while others failed. Hence why 255 worked but 0 did not.

enter image description here

And

enter image description here

The common element here appears to be that bit 2 stays on, no matter what. (using convention that bits are 0-7. That is, the bit that adds 4 to the binary number represented in decimal.

This masks 255 and other values, as per the screenshots. But most values fail.

This same problem occurs at 32768, 32768+8191, 32768+16384, and other addresses in upper RAM that I've checked.

According to the seller this is definitely a 48k Spectrum. He asked me to open it up and check and I did. The chips are there.

What could have caused this? Damage in the post? Old capacitors? Damage when the seller did the composite video modification?

Thanks.

Bulging electrolytic capacitors or not? Need replacing?enter image description here

And what about the bulging or solder damage to C64? No, not a Commodore 64 the capacitors marked c64?

enter image description here

Now trying to show the dirty and shiny side of the ICs. I apologise for the iPad 2 poor quality photo. I will post a better photo if I can get one.

enter image description here

  • Hard to tell about those capacitors. Have a close look at them: one of their end caps should be scored with either three or four radial lines. That end cap should be flat; if it isn't, replace them. If it is, they should be OK. C64 is fine however; the bulge there is just an artifact of how it was manufactured. See, for example, this photo of a new capacitor with a similar bulge. – Jules Jan 12 '18 at 17:07
  • A pleasure to see this amount of detail in the question, BTW. – user6464 Oct 16 '18 at 0:47
6

Some notes on RAM repair, which may or may not be useful:

The RAM in the upper memory of the issue 3/4 spectrum is usually a TMS4532-20NLx chip. These are 32Kb chips that are pin compatible with the 64Kb 4164 type, so as pointed out by lvd in the comments to Tommy's answer a 4164 can be directly substituted. If you do happen to find a source of 4532s, you need to ensure that the 'x' matches the ones you already have: in order to work correctly the -20NL4 chips need their A7 line pulled high during column select, while the -20NL3 type need it pulled low (this is because a 4532 is actually a 4164 that failed testing due to a fault that only occurred in one half of the columns of its memory array, so the other half is being ignored).

On issue 3 boards, the RAM is socketed, so can be easily replaced. Unfortunately, no such luck with issue 4 boards: they're soldered directly. If you're confident with a soldering iron they can be removed and replaced still (they're DIP16 chips, which aren't too hard to remove), but if you're not experienced it is possible to damage the board in ways that are hard to fix, so alternative approaches are recommended.

  • Alternative approach 1: cut the pins of the chip close to where it enters the chip body and remove it; solder replacement chip to the remaining pins. Obviously this will not solve the problem if it is caused by a failed solder joint rather than a failed chip, so checking that the chip is entirely dead is advisable (I'll put a suggestion of how to do this below). The cost of this repair would likely be approximately £2-3 in the UK (for a single DRAM chip + postage; the repair would be somewhat cheaper in the US, as there are several US suppliers with 4164s for as little as $1-$1.50; buying them from China may also be worth considering, assuming you actually get what you pay for).

  • Alternative approach 2: just solder a new chip directly to the old one, pin to pin. This will only work if the old chip is completely dead, but is possibly the easiest approach if it is. Cost same as approach 1.

  • Alternative approach 3: internal memory replacement module. these are available online for £12 and seem to be quite easy to install.

  • Alternative approach 4: cut out all of the chips, and use an external RAM upgrade module instead. All of the lines that are needed to implement the 32KB upper memory are exposed in the rear edge connector of the Spectrum circuit board, so you can simply buy or build an expansion module that attaches to the back of the machine and replaces the internal memory. Unfortunately, I can't find any sources of such modules at the moment (although they did exist historically). With a little understanding of how memory works it wouldn't be hard to put one together yourself, however: start with an appropriate 8-bit or 16-bit wide RAM chip (anything with better than about 400ns cycle time will do; if using a 16-bit chip we'll be ignoring half of its memory, but that's not a huge problem). To save costs, I would suggest recycling one from old hardware -- circuit boards from dead 90s hard disks are a good source of useful ram chips, and I bet most of us have quite a few of those hanging around, or a 30-pin SIMM could be used too, if you're feeling adventurous :) -- but they can also be purchased relatively cheaply in any case. Then add: addressing logic. If you're using DRAM (or a SIMM) then you'll need to decode column/row select and an appropriate refresh pattern yourself. Once that's sorted just arrange your chip so that it is enabled whenever A15 is high and MREQ is low. SRAM is much easier: you only need to perform that A15/MREQ decoding. You may have unused address lines; you could tie then all to zero, but what would be the fun in that? A latch attached to an I/O port address can be used to select a 32KB page out of however much memory you have (up to 8MB total). I believe port 127 has been historically used by some clones that do this, e.g. the Didaktik Gama. Cost: £2.50 gets an SRAM chip with 32KB x 8-bits; edge connectors are available at £3.50; support logic will be dirt cheap, so you could probably put together a working module for less than £10. If you really wanted to go overboard, a 2MBx8-bit SRAM chip is available for £13, but it's surface mount so you'd need a proper PCB for it... but that means you could probably put together a 2MB expansion module for about £25 if you really wanted one. :)

How to test memory chips while they're still in the system: there are a variety of ebay vendors that are selling a dirt-cheap 8-channel 16MHz logic analyzer. (It's sold as a clone of the Saleae Logic, but isn't actually compatible). It can be used with the "sigrok" software to view the signals produced on the different pins of the chip. First check the chip has power and ground (probably using a multimeter). Then hook it up to CAS, RAS, some random address lines, and the Din and Dout pins, and check that all of them have stuff happening. If nothing is reaching Din, CAS, or RAS, or any of the address pins, the chip's connection to the board is broken somehow. If data is being sent to all of these pins but nothing is coming out of Dout, the chip is faulty. If data is coming out of Dout, then again the chip's connection to the board is the problem. Chip pinouts are available at https://faqwiki.zxnet.co.uk/wiki/DRAMS

24

A single bad DRAM, probably — in machines of that vintage each DRAM holds only a single bit at each address; you use eight in parallel to serve an 8-bit bus. And the Spectrum uses physically separate chips to serve its first 16kb and the other 32kb.

So a single chip holds the value of bit 2 for every address at or above 32768. No matter which address you pick in that range, you're talking to the same chip. An alternative chip handles bit 0, a third handles bit 1, etc. I can't find schematics beyond the issue 4a/b, but from that:

enter image description here (source)

Check out IC15 to IC22 in the bottom right. Each is a 4532. That means it stores 32768 bits. Each handles a different bit on the data bus. IC18 handles bit 2.

Such machines also use an open-collector bus: lines look like a logical 1 unless something is connected to them that says otherwise. So a RAM chip that wasn't there at all would produce this problem, just as one that was simply not functioning would.

So, check for dead solder, etc, going to that DRAM and at worst consider replacing that chip. As a diagnostic, consider switching it with one of its neighbours and see whether the set bit changes.

  • Thanks for your answer. Dead solder maybe. Yes I thought about trying to see if it was just one chip, so I tried the other addresses increasing by 8k to check the other chips. Same problem with all addresses so far. With such a common problem to many addresses, it appears to be how the value is interpreted by other parts of the computer. – popeymon Jan 9 '18 at 20:21
  • 2
    Sorry, I obviously explained the '1 bit per address' thing poorly: there is one chip that can store 32768 bits of memory, and it stores bit 2 for every address greater than or equal to 32768. So as long as it's always bit 2, you've still checked only one chip. It's IC17 on retroisle.com/sinclair/zxspectrum/Technical/Hardware/… ; I couldn't find a 4s schematic. – Tommy Jan 9 '18 at 20:28
  • 2
    The bad news is that it can be hard to find working 4532s these days. The good news is that you can just stop using the existing memory and plug in an upper RAM replacement module to fix the issue, and that isn't hugely expensive either. (Unfortunately, it looks like the RAM is soldered directly to the board in issue 4S, so you'll probably not be able to remove the working chips and sell them ... which would more than pay for the replacement module if you could). – Jules Jan 10 '18 at 0:25
  • 1
    Before chip removal I would test if it is really a wrong chip. So check the ICs pins if there is proper interconnection with buses, proper voltage, no shorted or interrupted circuit on the PCB due to aging or dirt between path ways. – Spektre Jan 10 '18 at 8:18
  • 2
    " it can be hard to find working 4532" -- those can be swapped to 4164, 64kb DRAMs, obviously with only half used. – lvd Jan 10 '18 at 17:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.