Saturday, December 30, 2017

Worked on Roomba, archived large batch of Xerox PARC disk cartridges


I received the wheels I ordered from eBay and found they are close to a suitable replacement but there seems to be a bit more friction with the new wheel. I put the Roomba together but it turned in a circle then signaled a failure with a pattern of beeps.

I took it apart as there is too much friction on the new wheel. To fix this, I have to shave some of the plastic off of the gear case housing that fits inside the wheel, allowing it to turn more freely. 

The gear case housing has four posts spaced 90 degrees apart around the case, used to screw it down onto the wheel carrier. The post is a cylinder whose radius is large enough that it rubs against the inside of the new wheels. 

gear casing showing 2 of 4 cylindrical mounting posts
The new design wheel has a thicker plastic rim for the wheel, at a somewhat smaller radius than the original design, which likely delivers a long reliable tread life for the rubber on the outside. 

New wheel on left, original wheel at center and tread fragment on right
The cylindrical post has a hole in the center along its axis, threw which a screw passes to hold the case down against the carrier. The walls of the cylinder are relatively thick and could tolerate being filed into a D-shape rather than circular profile seen edgewise. The flat face of the D will provide more clearance from the flattened cylindrical post to the inside of the replacement wheel rim. 


Aligning second Diablo drive and setting up the disk tool

We moved quickly through the process of aligning the replaced heads on the second Diablo disk drive, soon getting both top and bottom heads centered over the signal on track 105 of the CE (Alignment) cartridge.

Next we hooked up my fpga based disk archiving tool, powered it up and checked out its operation. This is designed to read an entire cartridge into the onboard RAM with one push of a button, a process that takes under a minute. Too, it will retry up to 31 times if it encounters any checksum errors while reading any sector.

After a cartridge image is in the RAM on the fpga board, we transfer it over USB to a PC file, process it with a Python program and the result is a disk image file that can be used with Alto simulators or transferred to a different physical cartridge.

Archiving all the cartridges on hand

We had 22 cartridges sitting in Marc's basement that had not been archived, a few of which had suffered disk crashes or had damage on the surface as we inspected them in prior sessions. We ran through all the cartridges which looked clean first, then attempted to extract the data from the damaged cartridges last.

We set up an assembly line process. Marc would open each cartridge for inspection and cleaning. Ken and I would alternately run the disk tool to create the first PC file type and process them with Python code into the standard simulator format. With each cartridge image, I booted it up under Contralto (the Alto simulator created by Living Computer Museum and Labs to verify its operation.

Marc would wipe the cartridges down with 99% isopropyl alcohol and lint free cleaning supplies. This involved removing eight screws and lifting off the bottom cover of the plastic cartridge housing, then holding the disk platter by its central metal hub while cleaning both surfaces.

Ken inserted cartridges, spun them up to a ready state, used the tool to extract the image, and so forth. After creating the first format disk file of each image, it was put on a USB and carried over to a different laptop where the file could be transformed to its final format. Ken also inspected the heads for accumulating oxide debris or any sign of a crash.

Each time the heads became visibly dirtied, we cleaned them with swabs and isopropyl alcohol until they were ready to use again. This happened a couple of times during the processing of this large batch of disk cartridges.

The initial file format for disk cartridges is a sparse structure, where each sector, head and track is placed on boundaries that are even multiples of 2. That simplifies the logic inside the fpga, avoiding any need to multiply, but the final format for simulators has each sector packed contiguously with no empty zones between them.

Thus, the python program reads the files and converts the format, essentially packing the sectors. It takes a file that is over 6MB in size as input and produces the 2.5MB final image. That file is tested with Contralto to see if it boots.

Some images did not boot, but were verified to be an image of a dual pack file format used with the Alto. That dual pack format requires both cartridges to be mounted (in two virtual Diablo drives) in order to boot up and read the contents. These single images are saved for the time when we can read and archive its mate.

A couple of images booted up with password protection, so that I couldn't look at the list of files. Ken has a task to examine and break the protection, allowing us to access that content in the archives. At least we know they boot up fine and should have worthwhile content once the password block is bypassed. 

No comments:

Post a Comment