Friday, December 5, 2025

FEDEVEL Advanced PCB Layout: Post Lesson 2 notes

I finished Lesson 2 of FEDEVEL Academy's Advanced PCB Layout course yesterday. As I expected, there ratio of review to new material (for me) is shifting toward the new stuff. There were a couple of confusing points, like the the instructor's strong recommendation to use a separate via for each power and ground connection on a BGA while watching him demonstrate routing two such adjacent balls to a shared via. Some of the recommendations  offered were things that I had read elsewhere, but it was nice to have it explained from another person's viewpoint.

And there were a couple of "Wait, what?" moments. 😯

Sunday, November 30, 2025

Taking FEDEVEL's Advanced PCB Layout Course

As part of a hobby project I'm designing a PCB that will include a Xilinx Zynq-7000 System-on-Chip and a DDR3L SDRAM. Both of these come in ball-grid array (BGA) packages with balls on a 0.8mm grid. This is my first attempt at a PCB using BGAs, but more critically, it's my first attempt with high-speed DRAMs.

I'm fairly confident, but at the same time I'm a little bit intimidated.

Saturday, November 22, 2025

A look at a vintage PC's disk storage subsystem

I've been doing a lot of work recently with vintage PC disk storage subsystems. I'm hoping to present a talk on this topic at the VCF East event in April 2026. Here's a preview of some of the material I'm planning to present.

 As always, comments and questions are encouraged. 

Saturday, November 1, 2025

My current museum project

Here's what I'm currently working on restoring for the System Source Computer Museum:


Yes, this is an IBM System/360 Model 20 from the mid 1960s.

This machine's journey started with some friends drinking in a pub in the UK while browsing eBay. They came upon an ad for some computer equipment in a building due for renovation in Nuremberg, Germany, and decided to put in a bid. If this already sounds like a recipe for disaster, well, I'd agree. 

I really can't do justice to the effort they put into the recovery. It's best if you read it in their own words here: https://www.ibm360.co.uk/

To make a long story short (and you really should go read their blog), it's on long-term loan to our museum for restoration.

Tuesday, October 21, 2025

Computeriter Emulator wrap-up

Okay, so it's been 5 months since I updated this blog. I have some catching up to do!

Spoiler alert: I did get everything working in time for VCF West. Here's a pic of the CDC-160A system on display in sunny California:

 


What did it take to get it done? I pretty much lived and breathed for this project from mid April through early August. But let me catch you up on what you missed.

Friday, May 30, 2025

Heavy Metal from the 1960s

Any time you're working with older electronics, there's a risk that some of the components may have failed as a result of age. This is especially true of wet electrolytic capacitors. Given that the museum's CDC 161 Typewriter is at least 61 years old (there's an inspection sticker from 1964 in it), the sheer mention of a power supply problem led to a decision to pull the thing out for at least a visual check of its internals. We were also looking to find the source of a loud buzzing sound coming from within the cabinet.

The power supply in the CDC 161 hangs from the underside of the cabinet's top like a bat, held in by four hefty bolts. I took photos of the wiring before disconnecting everything and stowing the cable bundle out of the way. I tried to loosen all the bolts evenly to make it easier to remove, but when the first bolt on the left side came out the second on that side broke off. I found out later that it was badly rusted, and may have been shearing rather than unscrewing. It's fortunate that I'd put some packing material to help support the power supply, because otherwise it would have crushed my hand -- it weighed 40 to 50 lbs!

It seems the CDC 161 had suffered some water exposure, as some of the screws holding the power supply's cover were rusted. With sufficient persuasion, I was able to unscrew all but one of the screws. We removed the head of the last screw with a Dremel and a cutting disc.

With the cover removed I could see why the thing weighs so much. Take a look at the three huge transformers in this thing! That's some heavy iron.



Despite being told repeatedly that switching power supplies didn't exist in the 1960s, this COTS beast from the late 1950s is indeed a switcher.

Operated on the bench it produced clean, steady DC power on all three of its outputs with only a slightly audible 60 Hz hum, even when operated under load (note the 100W load resistor on the left side of the picture). Scoping the filter capacitors showed essentially no ripple, confirming that they were still doing their jobs.

But what about the overvoltage lock-outs I'd been experiencing?

To minimize the effect or voltage losses in the wiring between the power supply and the load, this power supply has separate voltage sense inputs (the top three connections on the terminal block shown in this pic). These allow the supply to sense the voltage at the load rather than inside the power supply. The problem with this scheme is that a poor or open connection in these sense leads will cause the supply to think it needs to increase the output voltage.

While inspecting these connections I discovered that the faces of the ring terminals were corroded under the terminal block screws. My theory is that this lead to the overvoltage condition, and it correctly shut down the supply when the output voltage rose to an excessive level.

At least that's my story, and I'm sticking to it!


After reassembling the power supply, I was faced with the challenge of getting it back into the cabinet. I decided the simplest way to do this was to flip the cabinet onto its top, supported by some cribbing. This allowed gravity to work in my favor while I fitted the bolts.

But if the loud buzzing wasn't coming from the power supply, where was it coming from?

Sunday, May 11, 2025

Computeriter Emulator Software Design

Since the Soroban Computeriter is entirely electro-mechanical, I expected everything to operate glacially slowly. Examination of the documentation and measurement of the actual Computeriter proved this true.

Printer Output

For printing from the computer, the CDC 161 documentation provides this crude diagram. While it suggests the code selection solenoids (TM-1 through TM-6) will be driven for about 65 milliseconds, it doesn't directly indicate how long the TCM solenoid would be driven. Nor does it indicate when the TBS switch is expected to activate.

An examination of the CDC 161 logic diagrams suggests the real answer is that the solenoids are driven until the TBS switch changes state. This would allow the Computeriter to manage its own operation.

The museum's Computeriter isn't really functional, but I found I could emulate the activation of the TCM solenoid by tripping a lever with a small screwdriver. This causes the TBS switch to switch states for about 40 milliseconds. 

Hey, it's a starting point.

Originally I thought to use the TCM input as an interrupt, so it's wired to the PIC's INT0 input (RB0). However, my current software simply monitors this input until it sees it asserted for 10 ms, then reads the six TM inputs. It then asserts TBS for 40 ms, waits for TCM to be deasserted, then goes back to waiting TCM to be asserted again.

This hasn't been tested yet. In fact, I found a bug in the state machine while writing this. This is what my old boss referred to as "Debugging by explaining it to the janitor": the process of organizing your thoughts to produce a decent explanation often results in recognizing the source of the problem.

 

Keyboard Input

For keyboard input to the computer, a rather poor timing diagram in the Computeriter Coder documentation suggested it would provide about 2 milliseconds of setup and hold time in the six "TC" code outputs on either side of a 25-30 ms "TCC" code valid signal. No description of the function switch contact timing is provided, but since all the mechanism are operated by the same drive system I assumed their timing would be similar to the TCC switch.

Given how sparse the documentation is, and how many assumptions I've made, I was shocked to discover this mostly worked the first time I tried it for real. Characters typed into Minicom on my laptop were translated from 7-bit ASCII to 6-bit Computeriter codes and appeared in the CDC 160A's memory.

I did say "mostly". The CDC 161 documentation indicates there are three ways to terminate input (which the docs refer to as an "Input Disconnect"). The first is to fill the memory area the program is trying to read. The second is to momentarily move the right-hald switch on the CDC 161 console from the middle ("NORMAL") position to the down ("MANUAL") position. Both of these work, of course, as they have nothing to do with my emulator.

The third way is to position this switch in the up ("AUTO") position. This enables logic in the CDC 161 to automatically generate an input disconnect when the user presses the Carriage Return button on the typewriter. This did not work.

At first the reason seemed simple. When the emulator received an ASCII CR character (hex 0D) I was sending a Computeriter Carriage Return character (octal 045) through the TC lines and asserting TCC. The CDC 161 logic wasn't looking for this; it was looking for the CR switch contacts to change state. This required only a small change in the keyboard software to fix. Or so I thought.

When a carriage return is sent to the emulator, the emulator's CR relay switches state for 40 milliseconds then returns to its normal state. The CDC 161 recognizes this as a carriage return and sends the Computeriter CR code (octal 045) to the CDC 160A memory, but it does not send an Input Disconnect to the CDC 160A. That happens when the next character is entered, and that character appears to be lost. I can't believe this is the intended behavior.

Why doesn't Auto Input Disconnect work?

I'm not really sure yet what's causing the Input Disconnect to be delayed. Here's my current hypothesis:

When a switch in the Computeriter is actuated, the normally-closed contacts open first. Then, a short time later, the normally-open contacts close. When the switch is released, this process is repeated in reverse: first the NO contacts open, then the NC contacts close. That's the behavior I assumed I'd see with the LCC110 solid-state relay.

I woke up early one morning with the idea that maybe the LCC110 didn't emulate an electro-mechanical SPDT relay very well. I already knew that it had deficiencies, like having an on-state resistance of about 35 ohms. What if it had other issues? To find out I did some tests with an LCC110 in my home lab.

With no current flowing through the LCC110's LED, the normally-closed circuit conducts and the normally-open circuit does not. With current flowing through the LCC110's LED, the reverse is true: the normally-open circuit conducts and the normally-closed circuit does not. All fine and good. What about the transitions?

As the current stops flowing through the LCC110's LED, it takes about 400 microseconds for the normally-open circuit to stop conducting. Another 150 microseconds later the normally-closed circuit begins to conduct. Much like a mechanical switch, there is no overlap.

As current begins flowing through the LCC110's LED, nothing much happens for about 150 microseconds. Then both circuits begin changing state simultaneously. This results in a period of about 100 microseconds when both circuits are conducting to some extent. What would that mean to the CDC 161's logic?

These switch contacts connect first to an input circuit that converts the voltage swing from "line" levels (-0.5V and -16.0V) to "logic" levels (-0.5V and -3.0V). The logic level signals then connect to the "SET" and "CLEAR" inputs of a simple flip-flop made of two NOR gates. With this sort of flip-flop, if both inputs are "1" at the same time, both outputs are "0". That's normally considered an erroneous state, and that's exactly what having both relay circuits conducting might cause.

And then the power went out

It was time to see if this hypothesis was true or not.

Each of the printed circuit cards that make up the CDC 161 plugs into a backplane. In an era when electronics weren't as reliable as they are today, ease of servicing in the field was key. Most of the logic cards have test points near the exposed end of the card, where they can be accessed without removing the card from the chassis. However, accessing them requires opening the back cover of the chassis.

On my next visit to the museum I pulled the CDC 161 unit further from the wall it was near so I could open the back and connect an oscilloscope to some logic cards. Turning the system on, though, resulted in the CDC 161 shutting itself down immediately. Probing the outputs from the unit's power supply showed it would turn on for about a half-second, then turn itself back off. Why?

Studying the documentation revealed the power supply has an internal overvoltage detection circuit. When the voltage across the +20V and -20V outputs (normally 40V) approaches 60V, a relay pulls in. This relay pulls in a second relay, and the second relay cuts the AC power to the power supply and latches itself on. Turning off the AC power externally allows the second relay to reset. This matched the symptoms I was seeing.

But why?