The 8/L's backplane, stuffed with Flip Chips. |
The PDP-8/L 718 Power Supply |
The replacement capacitors for the 8/L arrived on Thursday, so that evening I put on some MST3K ("Escape 2000," in which you are encouraged to Leave the Bronx!) and got to work.
The above picture shows the 8/L's power supply, designated as the 718. It's a simple linear supply and it was a trivial matter to replace the three large electrolytics (18000uF, 22000uf, and 80000uF) with their new replacements, since they're all screw-terminal types. All three appear to be originals, and while they look yellow in color in the photo, back in 1969 they were silver. Some folks prefer to reform old capacitors, but having had a couple of working capacitors go dead short on me in a previous project, I prefer not to take chances. I'll be keeping the originals just in case.
With the new capacitors in place and the power supply unit bolted back together, I powered it up and checked the voltages; the 718 provides a regulated +5V supply, and unregulated -30V and -15V supplies. The 5V measured in at 5.05V under load, and the -30V and -15V were -35V and -18V unloaded -- well within tolerances. The 8/L also uses a -6V supply and this confused me for a bit, as the -6V line was reading at -35V as well, which would be wildly wrong. It turns out that the -6V line is regulated by the G826 regulator board installed in the 8/L chassis -- it's not part of the power supply itself. Together, the -6V and -30V supplies provide the power supply for the core memory system.
Since everything looked good, I reinstalled the 718 in the 8/L chassis and powered it up (while keeping my fingers crossed):
First power-up |
Hitting the "Run" switch caused the CPU to take off running whatever it thought it was getting from memory, and hitting "Stop" caused it to stop --so quite a bit of the CPU logic appeared to be working.
Not a lot of response from the memory, though. Hitting "Exam" would step through the address space but I mostly got zeros back and I was completely unable to deposit anything into memory.
Well, I figured that was to be expected since the power supply had been rebuilt and the core memory system requires careful calibration in order to work correctly. The calibration procedure is documented in the maintenance manual (starting on page 5-7, for those following along at home). Essentially, the difference between the MEMORY SUPPLY + and MEMORY SUPPLY - lines (the -6 and -30V supplies mentioned earlier) should be about 22.5V. Mine was only reading about -18V, so I goosed it up to (er, down to) -22.5V using the trimpot on the G826 regulator):
Everything's nominal... |
Using the logic analyzer indicated that all the requisite control signals were being generated correctly (they looked identical to figure 5-3 in the manual).
Core memory is a complicated mechanism and I won't bore you too much with the details (the maintenance manual covers it in exhausting detail if you're curious). Effectively, a "read" operation destroys the contents of the memory being read (resets everything to a "zero" state), so every read must be followed by a write to put the original contents back. Given that the waveform for the read amps looked good (and also indicated that everything was zeros) and in combination with the fact that "write" operations from the front panel were not working, I began to suspect that the problem with the core memory was with the "write" side of things.
Since every bit of every address seemed to be coming back as all zeros, it seemed unlikely that it was any of the circuitry related to control or amplification of the individual data bits in the MB buffer (i.e. it was unlikely that every single read/write amp and inhibit driver for the memory data was broken in the same way). On a hunch, I swapped the pair of G228 Inhibit Driver flip chips for the X/Y Read/Write control with a pair from the Memory Buffer Inhibit Drivers. And voila -- the memory started responding again and I was able to write to and read from it reliably (with a single bit stuck).
From here it was easy to isolate the faulty flip chip, and from here to narrow down the cause to a bad 7440 IC.
The faulty G228 Inhibit Driver. |
00 7200 CLA
01 1023 TAD 30 ; Load start address
02 3024 DCA 24 ; Copy to curr. addr.
03 3025 DCA 25 ; Copy AC to test value
04 1025 TAD 25 ; reload into AC
05 3424 DCA I 24 ; Copy to memory loc
06 7200 CLA
07 1424 TAD I 24 ; reload memory
10 7041 CIA ; negate (2s cmpl)
11 1025 TAD 25 ; add current value
12 7440 SZA ; Should be zero
13 7402 HLT ; Memory did not match
14 2025 ISZ 25 ; Move to next value
15 5021 JMP 21
16 2024 ISZ 24 ; Move to next address
17 5003 JMP 03 ; Run test with new address
20 5000 JMP 00 ; Address has wrapped to 0, start again.
21 1025 TAD 25
22 5003 JMP 03 ; Run test against current address with next value
23 0030 ; Constant - starting memory address to test
24 0000 ; Variable - Address being tested
25 0000 ; Variable - Value used to test address
This walks memory from 0030 to 7777 and for each address, it writes, reads back, and compares all possible values. If a mismatch is found, it halts, otherwise it will loop forever.
I've now had it running the above test for a few hours without issue. Once I get my current loop adapter, I'll be able to run some real diagnostics on it but this is still a pretty good sign -- there are no stuck or dead bits in the core and quite a bit of the CPU is working properly.
So one dead 7440 is the only fault so far. Not bad for a 44 year-old computer.
That's all for now! Until next time, always let your conscience be your guide!
Addendum (8/26/13): Looks like I spoke a bit too soon about the core memory being 100% operational. Fired up the machine and ran test program again this evening and after about 30 seconds it hit some stuck bits (3 and 8) at address 0506; these stuck bits continued for a few pages, after which there were a few more good pages, followed by stuck bits, etc.
But, after letting the machine warm up for 20 minutes or so the test started passing again. This indicates that the memory isn't aligned quite properly, so it will need some fine tuning.