(none)
  

The University of Iowa's DEC PDP-8

Restoration Log

Part of the UI-8 pages
by Douglas W. Jones
THE UNIVERSITY OF IOWA Department of Computer Science

Contents


Introduction

This is a chronological log of the progress restoring the University of Iowa's PDP-8 computer. Entries are added at the end as work progresses. Click on any thumbnail image to see full-sized image.


Jan 14, 2026, Memory tuning, set up for open house

Bug 64: In preparation for an open-house, we decided to start a serious attempt at tuning the memory. We began by investigating the behavior of the memory as we varied the slice voltage. For each slice voltage we tested, we stored 32 consecutive 00008 in memory starting at address 60008 and then examined memory to see how many values were still zero, and then we stored we stored 32 consecutive 77778 to see how many values were still all ones.

Voltage not 0000  not 7777 
7.7 32 0
7.68 19 0
7.62 17 0
7.6 13 0
7.56 0 0
7.5 0 13
7.54 0 13
7.4 0 15
7.1 0 32

The slice voltage was adjusted by turning the topmost trimmer on the G008 Master Slice Control board. In adjusting this and other Bourns TrimPot trimmers on DEC flip-chip modules, we have observed that the voltage is quantized, changeing in discrete steps as the trimmer screw is turned. We wonder if the trimmers are wire-wound with a contact brush touches one turn at a time.

The voltage readings here were eyeballed off of an analog meter, so the accuracy is probably 0.02V at best.

What is clear here is that the memory only just barely works. We were hoping to find a range of slice voltages that worked and then set the potentiometer to the middle of the working range.

The working range is probably a 3-dimensional volume, with the dimensions being

The next memory tuning exercise will involve playing with the other two dimensions.

With memory working as best we could adjust it, we loaded demo code in memory for the open house on Jan 20-22:

Some of the above were hand-relocated to run in new memory locations. All were tested and seemed to work.


Jan 22, 2026, Power supply wiring, Teletype failure

  thumbnail photo     thumbnail photo  
Before and after transformer rewiring
Bug 79: In gaps betwee visitors during our open house, there was time to begin rewiring the homebrew reader-punch power supply, following the plans developed on Nov. 17, 2025. We began with the power line input, replacing the uninsulated jumper connecting two primary windings with an insulated jumper, and replacing the line cord with wires to a terminal strip comparable to the strips used for input to DEC's power supplies. As we determined on Dec. 11, 2025, it should be safe to jumper this new terminal strip to the Type 779 Supply directly below it.

Eliminating the bare wire jumper on the transformer reduces the hazards posed by this power supply, but it would be nice to make a sheet metal cover over the transformer comparable to the transformer covers on the Type 779 transformers. This will require some sheet metal bending.

Bug 80: During a demo, after turning off the Teletype, when we turned it on again, the motor did not spin. It buzzed, and when you turned the fan, you could feel it vibrating. This implies that there is power to the motor. It is a capacitor start motor with a starting relay. Teletype's schematic FS-10 MOTORS documents this and several other motor options. Any of the following could cause the motor not to spin despite there being power to the motor:

We pulled the quick-connect connectors to the starting relay, allowing us to use an ohm-meter to verify that the primary motor windings is 9Ω and the starting winding is 16.5Ω ruling out a burnt-out motor winding. Measuring between the primary and starting widings, have 25.5Ω, so there are no shorts between the windings.

  thumbnail photo     thumbnail photo  
The Teletype motor start relay
We opened the starting relay; the screw between the rightmost two quick-connect tabs in the left picture here both releases the relay from its bracket and allows removal of the case to expose the mechanism.

The relay is a normally open relay with an approximately 0.1Ω coil. During the motor's starting surge, the relay closes to power the starting winding. Once the motor is up to speed, the current through the primary motor winding is too low to hold the relay closed. Aside from evidence of contact arcing, the relay is in good condition. We burnished the contacts and put the relay back. We did not make any changes to the adjusting screw (the screw on the left of the right photo with a red dot of paint on it).

After reassembly, we used an ohm meter to verify that the start relay closes when power is briefly applied to the motor.

The above observations point to the motor start capacitor itself. Teletype's schematic identifies this as C3 88-108, which agrees with the markings on the capacitor, 88-108MFD. This is an 88-108μF capacitor, a very common value of motor start capacitor.


Jan 27, 2026, Teletype failure, power supply wiring

Bug 80: Continuing the diagnostic work from Jan 22, we used an analog ohm meter on the Rx1K scale to test the 88-108μF motor-start capacitor. It conducts very briefly when the meter leads are first connected and then drifts up to infinite resistance. That is how a capacitor ought to behave when measured this way. We compared it with a known good 5μF capacitor, and saw that the response on the ohm meter was far stronger with the latter than with the capacitor from the Teletype. Therefore, while the capacitor still has some capacity, it has much less than 5μF.

So, we ordered a replacement capacitor. The original capacitor was a 1" (26mm) diameter cylinder 2.5" (65mm) long. The smallest replacement we could find was 34mm by 69mm, 8mm larger in diameter. This will be a tight fit in the space in the Teletype. Also, we will need some 4.8mm (0.187") faston connectors to attach the capacitor to the wiring. Teletype corp. seems to have used that size exclusively, while the similar connectors in the PDP-8 are all the more common 1/4" wide.

  thumbnail photo     thumbnail photo  
Before and after transformer rewiring
Bug 79: We continued the work started on Jan 22 adding insulated wire to the homebrew reader-punch power supply, following the redesign given on Nov. 17, 2025.

We had finished rewiring the transformer primary. Now, we rewired the secondary, moving the fuse to the bridge between the two secondary windings and finishing adding spiral-wrapped insulation to the remaining uninsulated wires.

We still need to install metal shields to protect fingers and make accidental shorts less likely. This is most important on the 120V primary side of the transformer, but would also be helpful on the 30V secondary side.


Feb 3, 2026, Gasket, memory tuning, Tally reader

  thumbnail photo  
Decayed foam
Bug 11: We noticed (again) the decayed gasket on the rear plenum door of the I/O rack. We'd noted this before on Oct. 28, 2013. We took the time to scrape the foam out of the channel, making a mess with all the crumbs of decayed foam. A screwdriver with a tip 1/4" wide worked as a scraper, easily removing not only the bad foam, but also the adhesive backing, leaving only a little adhesive residue in the metal channel that held the foam.

Bug 64: We returned to the memory tuning problem last addressed on Jan. 14. We connected the current probe and began trying to adjust the inhibit and read-write (or select) currents. We found that the inhibit current was 0.28A, not the recommended 0.31A. We were able to bring it up to 0.295, but no higher.

We also found that the select current was also low. We were able to turn it up to 0.32A.

With these changes, we repeated the exercise we had done on Jan. 14, varying the slice voltage, and at each step, writing 16 consecutive words of 00008 and 16 consecutive words of 77778 to memory and reading them back. On Jan. 14, only one slice voltage worked, 7.56V. Our changes to the select and inhibit currents made a big difference:

We left the slice voltage set to 7.72V, roughly the middle of the good range.

  thumbnail photo  
Bug 34: Continuing from the work on July 1, 2025, we worked out a timing diagram for the top-level events in a read cycle to the Tally reader. The top two lines (voltage to the reader solenoid and the timing of the switching transient) are takn from Fig. 27 on page 33 of the Tape Reader Manual - Model 424, Tally Register Corporation, Seattle, no date (Revised 4-1-62).

The 16.7mS delay between initiation of a read cycle and the setting of the device flag allowing initiation of the next cycle is also from the Tally manual. The role of the RSF, RRB and RFC instructions and their relationship to the reader flag and the rest of the read cycle is from the description of the Type 750 High Speed Reader interface on pages 62-63 of the PDP-8 Users Handbook, Digital Equipment Corporation, F-85, 5/66, 1966.

From this timing diagram, we conclude that our speculation on July 1, 2025 that only 2 delays are required seems correct so long as the reader flag is only set after the full 16.7mS read cycle, at the earliest time that it is acceptable to start the next read cycle. Given that software should only take a few tens of microseconds to initiate the next read, this should not appreciably slow the reader. It would be possible, at the cost of considerable complexity, to read the input into the reader-data register and set the reader-ready flag at the end of the switching transient, 14mS into the read cycle. This would require an additional delay and an additional flipflop to allow the RFC to queue up starting a read cycle before 16.7mS have elapsed.


Feb 5, 2026, Replace Teletype starting capacitor

  thumbnail photo     thumbnail photo  
Old and new starting capacitors
Bug 80: New-old-stock Teletype starting capacitors are available, but when we contacted people who had bought them, we found that a significant fraction have failed, suggesting that these parts are nearing the end of their useful lifetime. The old one is apparently made from a pair of back-to-back electrolytic capacitors, and the most likely problem they have with age is drying out.

So, we hunted for new parts. While 88-108μF capacitors are available, they tend to come in large packages. The smallest motor start capacitors we could find were CD60 100μF &plusminus; 15% rated at 250VAC. Among these, we found some with bodies 34mm diameter by 69mm or 70mm long with wire terminals comparable to the originals. Most modern motor starting capacitors are polyester film and not electrolytic capacitors, and we think this applies to the capacitor we bought.

Polyester film capacitors are generally larger than electrolytics, and in this case, the difference in size is enough that we were not certain that the new capacitor would fit. As can be seen in the photos here, the new capacitor just fits. We had to bend the hold-down finger that extends from the starting relay mounting bracket to make it fit, and there was just over 1mm clearance between the new capacitor and the fan on the back of the Teletype motor. Fortunately, the capacitor is tightly held and does not threaten to bounce into the fan, and as the photo shows, the fan spins freely and the Teletype works well.


Feb 12, 2026, Rack wiring, power supply check

Bug 16: Now that the homebrew reader-punch power supply works and our estimate of power demand made on Dec. 11, 2025 suggests that it will not overtax the PDP-8's rack wiring, we jumpered it to the line-line current terminal strip on the Type 779 power supply directly below it.

Bug 10: We have not powered up the Type 779 supply since Oct. 9, 2014 so we disconnected the fan in the base of the I/O rack and disconnected the wiring from the supply to the logic in the rack and then connected it to a variac so we could slowly raise the voltage.

The ferroresonant transformers in the Type 779 supply created a very nonlinear relationship between the output voltage and the setting on the variac. Under no load, the DC output voltages on the Type 779 supply approached their rated values at AC input voltages under 50 volts. Fortunately, the capacitors we had reformed a decade ago were in pretty good shape, and we saw no ill effects from raising the output voltage in 5V steps about an hour apart.

We paused periodically to check for leakage by looking at the rate of decay of the charged capacitors with no power input and no load. We were briefly alarmed to discover that the +10 output of the Type 779 supply was decaying rapidly, until we noticed that there is a 15Ω resistor shunting a 35,000μF capacitor to ground for that output. output to ground. This matches the Type 779 Power Supply schematic. The RC time constant for this capacitor is 35,000μF×15Ω = 0.525s. By eyeball, watching the needle of an analog volt meter drop as we turned off the power, it fell most but not all of the way to zero in about a second, which is in the right order of magnitude for this RC time constant. We conclude, therefore, that the supply is good.

Note: Ferroresonant transformers are well known to hum louder than other transformers, and in our Type 779 supply, we noticed this hum, starting when the AC input was around 30V and getting louder as the AC input was ramped up to 120V.


Feb 19, 2026, Better Teletype demo, try BIN loader

Bug 43: With memory working better, we tried keying in a more ambitious program from the front panel. Of course, we made mistakes in the code and mistakes in the keying in. We debugged the code using a Linux-based assembler and PDP-8/E emulator before trying again. The following code worked:

           / Teletype demo (poorly optimized code)
           / Typing char echos and appends char to buffer except
           STX=    202             / Control B -- clear buffer
           ENQ=    205             / Control E -- replays buffer
           *4000
04000 7200         CLA
04001 1253         TAD     PBUF
04002 3260         DCA     INPTR   / bufptr = start
           LOOP,                   / loop -- outer loop of program
04003 6031 INPOLL, KSF             /    loop -- polling input
04004 5203         JMP     INPOLL  /    until -- key pressed
04005 6036         KRB
04006 3256         DCA     CHAR    /    char = character from tty
04007 1256         TAD     CHAR
04010 1254         TAD     NEGSTX
04011 7440         SZA             /    if char = STX
04012 5216         JMP     NOTSTX
04013 1253         TAD     PBUF
04014 3260         DCA     INPTR   /       bufptr = start
04015 5203         JMP     LOOP    /       continue
04016 7200 NOTSTX, CLA             /    endif
04017 1256         TAD     CHAR
04020 1255         TAD     NEGENQ
04021 7440         SZA             /    if char = ENQ
04022 5242         JMP     NOTENQ
04023 1253         TAD     PBUF
04024 3257         DCA     OUTPTR  /       outptr = start
04025 7200 OUTLP,  CLA             /       loop -- exit by break
04026 1260         TAD     INPTR
04027 7041         CMA IAC
04030 1257         TAD     OUTPTR  /          a = outptr-inptr
04031 7500         SMA             /          if a >= 0
04032 5203         JMP     LOOP    /             break
04033 7200         CLA
04034 1657         TAD I   OUTPTR
04035 6046         TLS             /          output *outptr
04036 6041 OUTPOL, TSF             /          loop
04037 5236         JMP     OUTPOL  /          until output done
04040 2257         ISZ     OUTPTR  /          outptr++
04041 5225         JMP     OUTLP   /       endloop
                                   /       continue outer loop
04042 7200 NOTENQ, CLA             /    endif
04043 1256         TAD     CHAR
04044 3660         DCA I   INPTR   /    *inptr = char
04045 2260         ISZ     INPTR   /    inptr++
04046 1256         TAD     CHAR
04047 6046         TLS             /    output char (echo it)
04050 6041 OUTPOM, TSF             /    loop
04051 5250         JMP     OUTPOM  /    until output done
04052 5203         JMP     LOOP    / forever
           
           / constants
04053 4061 PBUF,   BUF             / start of buffer
04054 7576 NEGSTX, -STX            / used to compare with stx
04055 7573 NEGENQ, -ENQ            / used to compare with enq
           
           / variables
04056 0000 CHAR,   .-.             / most recent input character
04057 0000 OUTPTR, .-.             / buf pointer to output buffer
04060 0000 INPTR,  .-.             / buf pointer fill buffer
04061 0000 BUF,    .-.             / start of data buffer

This is a far more satisfactory Teletype demo program than the smaller one we keyed in on Sept. 29, 2025 (that code was still in memory).

With this demo code working, we tried using the RIM loader to load the BIN loader. This seemed to work, but when we tried using the BIN loader to load ODT, the octal debugging tool, it did nothing. The paper tapes we used were from 1966 and 1967. We need to explore what happened.


Feb 19, 2026, Fix Teletype linefeed

Bug 62: We made a thin 1/4" hex box wrench so that we could loosen (and retighten) the screws in the linefeed drive link. See the June 29, 2017 log entry for a discussion of this adjustment and the need for a thin box wrench. Our home-made wrench is made from a piece of 1/8" thick hot-rolled steel bar. We drilled 1/4" round holes the two ends, then drove center punch that had a 1/4" hexagonal body completely through the holes. The resulting hexagonal holes were undersized because the center punch body was slightly undersized, so we further enlarged the holes be driving a 1/4 inch screwdriver bit through the hole; the screwdriver end itself is irrelevant here, what matters is the 1/4" hexagonal back end of the bit. What remained was to file off the burrs from the holes and grind and then file the outside profile of the wrench.

With our wrench made, we were able to tighten the marginally loose screws in the drive-link. These had been slightly loosened at some point in the past while trying to adjust the drive link. We solved the actual linefeed problem by careful adjustment of the drive-link up stop.