Friday, December 22, 2017

Repairing a Roomba vacuum, aligned Diablo drive for Alto, demonstrated IBM 705 tube module function


I have an old Roomba vacuum cleaner, the original model, which I decided to haul out of storage and refurbish. First problem I discovered was broken tread on one of the wheels. I think otherwise this just needs to be cleaned out well - hairs and dust get wedged in the roller bearings and other parts of the machine over time. 

Segment of failed tread from Roomba wheel
Alas, iRobot no longer makes replacement wheels or tread for this model, nor do any third parties. Apparently tread failure was a common issue with the original Roomba based on various postings online. 

It appears that the next model, the Discovery series, uses a similar enough wheel assembly that I am hoping to swap parts onto my machine. I ordered tires on ebay that were removed from a Discovery model and should have them in about a week. 

Mounted wheel that lost its tread
Visually they appear to be compatible, based on the hole pattern for mounting and design, but without any dimensions I could find they are proportionally smaller or larger thus unsuitable. 
Replacement tire from discovery
I managed to maneuver the wheel out of the chassis enough to begin the replacement, once I get the used tires from the eBay seller. The machine will sit here waiting for the parts, although I can spend some cleaning out dust and hairs from the rollers and other parts while I wait.

Wheel out of chassis and ready for replacement

Aligning Diablo drive to continue archiving Xerox PARC cartridges

We set up the oscilloscope and the setscrew in the Diablo drive, ready to align the disk heads. This works by viewing the signal from a specially recorded Alignment Cartridge. That cartridge has one pattern recorded at Cylinder 100 and a different one at Cylinder 105. The latter location is the one for the 2200 bpi disk drives such as the one used with the Alto.

Label on special alignment cartridge for signal to match on scope
The heads are held loosely in place with only slight tension on the lockscrews. The head assemblies have a diagonal notch that is pushed by a setscrew, thus pushing the head outward towards higher track numbers as the setscrew is advanced.

The initial location of the heads is about 5 cylinders too low, with the setscrew moving the head over a range of at least 10 cylinders. Watching the scope, we saw no signal until we neared the proper cylinders. Of course, we had to skip over the incorrect signal on Cylinder 100 in order to move the head onto the proper signal for our drive type.

It wasn't hard to get the heads placed at the right point, where the special signal produces a symmetric pattern. When off center, one lobe or the other is larger, thus alignment is achieved when the peaks are balanced.

We hooked the drive up to our Xerox Alto, put in a cartridge from Parc that we had previously archived, and successfully booted it up. To ensure we had the alignment right, we ran the program scavenger which double checks all files using both the file directory and the label fields of each sector. 

Results were perfect and the heads remain clean as a whistle at the end of the session. Next week we will start up our production line to archive more of the Xerox PARC cartridges.

Demonstrating function of IBM 705 computer tube based module

I had a module I bought years ago on eBay that Ken Shirriff took to work out the function implemented by the unit. Based on the circuit and voltages used, it would have been in either a 702 or 705 computer of the mid 1950s. Since the IBM 705 was sold in much higher numbers than the 702, we assume it was in the 705.

Tube module from IBM 705 computer, powered and under test
The circuit as he worked it out provides five independent debouncers and five cathode followers. The debouncer takes a signal from a mechanical switch or relay contact and removes the rapid multiple contact and release that occur when the contacts are changing from on to off or vice versa. These multiple rapid changes are referred to as switch bounce.

If a switch is intended to step a computer to execute one instruction per press, but the contacts have bounce, then it might actually execute multiple instructions. A debouncer will detect the first change in state on the contacts and ignore any changes for a short interval of time. This converts the switch activation to a single output when a human activates it one time.

We cobbled together multiple power supplies and cables to provide the module with multiple voltages required by the design. We couldn't provide exactly the levels intended, but the maximums we could attain were likely to work according to an LTspice circuit simulation run by Ken.

Cobbled together demonstration of the tube module
The module used 6.3VAC to power the two filaments in each of the eight tubes. Each debouncer uses the two triodes in an individual tube, accounting for five of the eight tubes installed. The cathode follower requires only one triode of the pair in a dual triode tube, thus five cathode followers need only 2.5 dual triode tubes.

The filament power burned about 27W of power, while the remaining circuitry on the module would average around the same for a module total of just over 50W. A computer with 1,000 modules like this would draw 50KW of power, more when you consider the losses in power supplies that deliver the needed voltages.

The module used +140V, -60V, -130V, and 48V but we could provide only +120V, -60V, -120V, and 30V with the boxes we had on hand. To show the results, we routed both input and output of the debouncer to an oscilloscope and in parallel to a pulse counter.

When pushing the input button to route 30V into the tube module, we saw typical switch bounce on the scope and our counter would jump several digits for each push. The output of the tube module, on the other hand, had a single well defined pulse for each switch push and the counter advanced by exactly one.
Input on bottom with switch bounce, top is output of circuit
One last part of the circuit was an output to drive a neon bulb. When we wired up a bulb, we saw it light up when the switch was pushed and extinguish after the switch was pushed. We had demonstrated the functions of the module and Marc has enough material to edit together an interested YouTube video.
Neon bulb driven by circuit
Ken has a similar module, although his is from an IBM 709. The module he owns houses one bit of each of three registers in a dynamic memory. That is, the register requires a 1 MHz clocked signal to retain the state of each bit. It also has combinatorial logic gates to route signals and control the registers. This module is part of the arithmetic control unit which is at the heart of a scientific computer like the 709.

It requires even more voltages, and somewhat different values, than the 705 module we just demonstrated. We have to provide two 40V one megahertz clocks with a fixed phase difference, plus develop some logic inputs to show off the module function to best effect. That is a future project. 


  1. Happy holidays, Carl. Thank you for this blog. It has inspired my own software restoration efforts.