I acquired a BBC B Microcomputer that had been stored in a loft for over twenty years, which presented the following fault. Clearly something was wrong with the memory, so I read through the very helpful posts on the stardot forum to work out how to resolve it.
The BBC microcomputer was available in two versions, the A which had a very limiting 16 kilobytes of RAM and the B with 32. Back in the day a kit could be purchased to upgrade the memory on a model A to the full 32 kilobytes.
This involved soldering in the missing DRAM chips and switching a jumper S25 from its south to north position. This jumper switches the two banks of 16KB memory known as CAS1 and CAS0, so that the additionally memory of CAS0 is now placed in the lower area of the machine's memory map between addresses &0000 and &4000.
As my machine was a model B with the fully populated banks of memory S25 was already set to the north position, with CAS0 in the lower address space. It's a handy feature being able to swap the memory banks as it makes it easy to test for faulty memory chips.
After I set the jumper to the south position of the 16KB model A machine, it booted with a normal screen, albeit with only the 16 kilobytes of CAS1 available. This indicated that a fault must be apparent in one of the chips in the CAS0 bank of memory, given that becomes the lower area of memory in 'B/32K' mode which is where the display data accessed by the CRT controller is stored.
The next challenge was working out which of the DRAM chips in CAS0 was at fault, which turned out to be far easier than I'd initially imagined. The following lines of code repeatedly writes zero (0b00000000) to memory location &4000 and then prints the data stored at that location. Each bit of this byte is spread across one of the available 16,384 memory locations in each of the eight chips.
MODE 0 10 A=0 (or 255) 20 ?&4000=A: IF ?&4000<>A THEN PRINT ?&4000 30 GOTO 20
In my case this test program returned a 4 which indicated the third bit of the byte isn't being retained, and therefore IC63 was at fault - according to the following table.
CAS0 CAS1
1 D0 = IC61 IC53
2 D1 = IC62 IC54
4 D2 = IC63 IC55
8 D3 = IC64 IC56
16 D4 = IC65 IC57
32 D5 = IC66 IC58
64 D6 = IC67 IC59
128 D7 = IC68 IC60
More information about dealing with suspected memory faults can be found here on the stardot forum
I ordered a few replacement HM2816AP memory chips, even though I only needed one. Once they'd arrived I snipped the legs away from the plastic body of the faulty chip and then carefully removed each from the board and cleaned up with flux and solder braid.
I installed the new chip in a socket, just in case there were any issues with it, as I didn't want to have
to ever repeat the removal process on such an old mainboard - Issue 4 / 1984.
The Beeb was working once again, with its full 32KB of memory. I added a Smart SPI so I could easily load software from an SD card without having to resort to getting the cumbersome disc drive out. I later upgraded to a GOTEK USB floppy drive emulator, which is a very nice device as it allows .ssd (and other) disk images to be read directly from a memory stick.
Playing Chucky Egg on a now fully functional BBC Microcomputer.
I knew the power supply was running on borrowed time with its thirty-six year old X2 AC line filter capacitors, and had already ordered replacements before the inevitable happened. But to be honest, there was a childish part of me that just wanted to see the smoke bellow out the machine, which I didn't have to wait too long to experience - I could still smell it days later though, which wasn't something I'd anticipated!
The aftermath... frizzled RIFA capacitors.
Some shiny new replacements purchased from eBay
Now it's good for a few more decades. More memory chips will probably go pop long before then I expect!
A while ago I purchased a joystick on eBay from riscman which is nicely made and worked fine with my BBC Master, but when I went to use it with my BBC B I found only the left, right and fire buttons would work. It turned out that the 15 pin D-sub connector on my Beeb was broken. When I first acquired the machine I noticed the screws that secured the connector to the case were missing, and so whenever a joystick plug was pushed into the connector it would strain the connector's pins, and therefore several had broken. So I had to remove the damaged connector from the computer's mainboard and install a replacement.
The analogue port of the BBC microcomputer is unusual in that it's mounted to the case via two self-tapping screws, and it doesn't have the protruding hex-nuts that the mounting screws of a mating plug screw in to. Having taken measurements and looked at various replacement connectors, I found the Amphenol L77SDA15S1ACO4R to be a perfect match with the original connector fitted to the machine.
I ordered a few of these connectors as I might need to replace analogue ports on other machines. I snipped the existing connector's pins and removed it from the mainboard. Then removed the pins individually, followed by solder braid and flux to clean up the holes so the new connector could be installed.