Core Memory

While the computer uses digital logic, the core memory is essentially an analogue component, with current pulses setting either a positive or negative polarity ferrite cores with.   The Maintenance Manual has a good section on the theory of operation for core memory.

The PDP-8 is a 12 bit machine, with 4K of memory.  The first three bits (0-2) are used to decode one of 8 major instructions leaving only nine bits left to reference the memory.  This is not enough to reference 4K directly so bit 3 is used to determine if the memory reference is a direct or indirect reference. 

Consequently it is not a simple matter to decode a memory address to a specific set of core drivers.  I decided to follow the factory memory tuning guide so that I could be confident that the core was performing to specification.

Page 8 of the tuning document discusses setting the first and second stage clamps and adjusting the lower pot on PCB G008 to achieve 7.2v between MA31N and MB30N.  On my machine this needed to be 7.7v.

I spent many hours trying to get the machine to deposit and examine with no success with the clamp voltage at 7.2v.  I would probably still be working on the machine today if not for that wonderful engineer who wrote “7.7v” on the logic diagram.  These are the kind of breaks those of us involved in restoration of these machines need, especially as we begin without any inherited knowledge of what to expect.

With this adjustment made, I was then able to reliably deposit and examine data in memory, and run a small program that incremented the front panel lights on the Accumulator. 

I eventually progressed to successfully toggling in the RIM loader, and then running this program to load the BIN loader, via the serial interface port.  More on the Serial Interface later.

The RIM loader starts at location 7756, with the Switches set to 7777.  The RIM loader programme appeared to load the BIN loader into the machine, but the data was not stored in the correct locations.  As it happens location 7776 is used by the RIM loader as a temporary location to store memory reference data.  When loading the RIM Loader manually into memory, you are required to store 0000 into this location, which, when tested, responded perfectly.

The problem, as I eventually discovered, was that you could only store 0000 into that location. If you attempted to load 7777 into location 7776 and then examined the memory, you would get 0000 as a result.  Parking that problem for one moment, I modified the program to use a different spare location to store temporary data, and the program then loaded the BIN loader into the PDP-8 correctly.  However, when attempting to run the BIN loader to load a binary program the machine would fail again.

Further investigation revealed that all 64 memory addresses ending in XX76 were bad.  As much as I didn’t want to believe it, the Core memory itself had a failure.

Next: