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
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
@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.
×
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 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 This sounds similar to a bouncing switch, did those systems back then not have an RC circuit to prevent physical switches from sending multiple signal whent actuated ?
Ken Shirriff (@kenshirriff@oldbytes.space)

@TimWardCam@c.im 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.

OldBytes Space - Mastodon
@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.
@kenshirriff My Dad programmed these things in the early 1960s at Liberty Mutual in Boston. Autocoder, I think. Possibly RPG.