Ken Shirriff

@kenshirriff@oldbytes.space
10.4K Followers
417 Following
1.3K Posts
Computer history. Reverse-engineering old chips. Restored Apollo Guidance Computer, Xerox Alto. Ex-Google, Sun, Msft. So-called boffin.
Bloghttps://righto.com
Blueskyhttps://bsky.app/profile/righto.com
Githubhttps://github.com/shirriff

With the switch fixed, everything worked. At least until next time...

I worked on this with @CuriousMarc, @tubetime, Wren, Shmuel, and others.

I'll leave you with this documentation of the relevant circuitry with inscrutable IBM symbols.
end/N

It turned out that the computer's START button had a strand of wire that shorted one of its contacts. As a result, it would keep re-starting as long as you held the button, blowing through the HALT or single-step until it crashed. The contacts bounced a bit, causing the random gaps we saw.
You push the green START button on the console to start the computer after a HALT, and also to single-step it. Hmmm. For convenience, there's also a START button on the card reader and one on the printer. We found that everything worked fine with those buttons. Hmmm.
I hooked up an oscilloscope and discovered that the computer wasn't running a single instruction cycle. Instead, it ran a few cycles (the pulses below), stopped briefly, ran a few more, irregularly stopping and starting, "building up steam" until it ran thousands of cycles. But why this pattern?
The IBM 1401 computer lets you run code a single cycle at a time, so you can see what happens at each step. (The arrow on the control panel.) But when I tried to single-step through the bad HALT instruction, the computer immediately died in a distant memory location. Now we had two problems. 2/N
Last week, the vintage IBM 1401 computer at the Computer History Museum started behaving strangely: it wouldn't halt. More specifically, if you had two HALT instructions in a row, it would halt for the first, but when you continued, it crashed mysteriously. Here's how we fixed it.... 1/N

I think I got that targeted ad because I looked up sodium dichloroisocyanurate (the first chemical) after watching a USCSB video where it explodes. (I'm a big fan of these videos.) Strangely enough, this chemical is Chlor Brite for swimming pools.

https://www.youtube.com/watch?v=_ZkOLxHTo1c

Outsourcing Responsibility: Explosion at Optima Belle

YouTube
I was reading the news online and saw the weirdest targeted ad. I can't even identify those last two chemicals. Any ideas?
Credits: thanks to Richard for providing the FDAI. I worked on this with @CuriousMarc, @tubetime, and Mike Stewart.
Simulator photo from "Introduction to Shuttle Mission Simulation": https://ia804505.us.archive.org/8/items/intro-to-sms/intro%20to%20sms.pdf#page=22
For more details on the FDAI, including the servo loops and electronic amplifiers (powered by germanium transistors), see my blog post: https://www.righto.com/2025/06/inside-apollo-fdai.html
Inside the Apollo "8-Ball" FDAI (Flight Director / Attitude Indicator)

During the Apollo flights to the Moon, the astronauts observed the spacecraft's orientation on a special instrument called the FDAI (Flight ...

×
The IBM 1401 computer lets you run code a single cycle at a time, so you can see what happens at each step. (The arrow on the control panel.) But when I tried to single-step through the bad HALT instruction, the computer immediately died in a distant memory location. Now we had two problems. 2/N
I hooked up an oscilloscope and discovered that the computer wasn't running a single instruction cycle. Instead, it ran a few cycles (the pulses below), stopped briefly, ran a few more, irregularly stopping and starting, "building up steam" until it ran thousands of cycles. But why this pattern?
You push the green START button on the console to start the computer after a HALT, and also to single-step it. Hmmm. For convenience, there's also a START button on the card reader and one on the printer. We found that everything worked fine with those buttons. Hmmm.
It turned out that the computer's START button had a strand of wire that shorted one of its contacts. As a result, it would keep re-starting as long as you held the button, blowing through the HALT or single-step until it crashed. The contacts bounced a bit, causing the random gaps we saw.

With the switch fixed, everything worked. At least until next time...

I worked on this with @CuriousMarc, @tubetime, Wren, Shmuel, and others.

I'll leave you with this documentation of the relevant circuitry with inscrutable IBM symbols.
end/N

@kenshirriff @CuriousMarc @tubetime Ken, your posts literally always blow my mind. 🤯

@kenshirriff @CuriousMarc @tubetime

A classic case of turn it on, and then turn it on again.

@kenshirriff That wasn't a START button, that was a START MISBEHAVING button. In those days, dedicated hardware was needed to make the computer misbehave as software developers were too highly trained to do it purely in software.

These days we have that in software, especially if it's shipped from Redmond, Washington with the help of a large language model. ;-)

@kenshirriff Ah, I was guessing a failed capacitor in the debouncing circuit.
@TimWardCam It turns out that the debouncing is more complicated than that. The switch is double-pole double-throw, with one contact turning it on and the other turning it off. So you're guaranteed not to bounce. Except if one contact is shorted.
@kenshirriff as a bicycle repairman i can tell you it needs a little spit of wd-40 and will be like new in no time
@kenshirriff My favourite CPU is the PDP-10 KI CPU, that not only let you run single cycles and let you input instructions directly on the front panel, but let you load memory words onto the push buttons and *edit* memory content. I’ve never seen that on any other CPU.
@ahltorp The IBM 1401 lets you load memory from the toggle switches, which is convenient but tedious. Is this the same as what you're describing on the PDP-10?

@kenshirriff If you by toggle switches mean switches with two physical positions, then that was the switches on most DECs.

But this was push buttons with lamps, so you could actually load a word onto the buttons, only flip the individual bits you wanted changed, and then store it back to either the same or another location.

@kenshirriff The PDP-10 KI is also one of the few mainframes I’ve worked with. I was responsible for getting 2 KI CPUs working around 1998, although I didn’t do hardly any of the actual debugging and repairing myself.

@ahltorp @kenshirriff

My PiDP-10 replica, powered by a Raspberry Pi 5. All the switches work. It comes with ITS, TOPS-10 and TOPS-20 operating systems running on top of Linux. Very cool.

https://obsolescence.wixsite.com/obsolescence/pidp10

@ahltorp @kenshirriff I had a front panel for one of those as a kid. My brother fished it out of a dumpster at University of Detroit. We had it on a table in the basement with a large DC power supply. I'd poke around with alligator clips trying to find which wires lit up which buttons. Great fun pretending I had a computer to run.

@ahltorp @kenshirriff

Gould SEL, late 70s, had similar.

@kenshirriff My Dad programmed these things in the early 1960s at Liberty Mutual in Boston. Autocoder, I think. Possibly RPG.