Monday, March 5, 2018

Various items - disk drives, ethernet tools and FORTH exploration


We had two disk drives that needed to have heads cleaned, installed, and aligned. One was left over from the archiving of the final group of Xerox PARC cartridges, where we had a minor crash trying to read a damaged pack. The other is a drive we are repairing for another Alto owner, who kept suffering disk crashes until shipping the drive to us for a look.

The heads were cleaned and installed in both drives. We decided to align and test the second drive, which would allow us to send it back to its owner and free up space for other restoration work. The alignment process worked fine and the heads fly with no crashing, but the drive fails to respond to the Alto when cabled up.

We will have to spend time debugging this to figure out what other components are not working. Not enough time was left to align our first drive, but it is ready for when we return next week. 


Marc built a nice enclosure for the ethernet tool developed by Ken. This tool hooks to the Alto ethernet card on the back of the computer, eliminating the need for an external transceiver and the need to run the original Xerox 3Mb/s version of ethernet. The tool converts to modern 10/100Mbs ethernet, provides a file server and other functionality, plus other routing services, all in a compact shape.


The FORTH system consisted of an assembler program that did the most basic functions of the language, reading an extensive set of FORTH statements from a disk file to yeild the full language and its interactive use of the IBM 1130 console printer and keyboard. The assembler program appears to be working correctly and my focus is now on ensuring the bootstrap statements on the disk file are working properly.

The assembler program expects the file to contain punched card images, in EBCDIC, packing two card columns per 16 bit word. Thus, each 320 word disk sector holds eight punched cards at 40 words per card.

The file is a sequential set of disk sectors, with the lowest sector containing the first 8 cards, the next higher sector holding cards 9 to 16, and so forth. Unfortunately, it gets a bit strange within each sector.

The eight cards in each sector are loaded in reverse, meaning that the first sector has card 8 at the beginning of the disk sector, next comes 7, all the way to card 1 at the end of the sector. That means a strictly sequential read through the disk file would receive cards 8 . . . 1, 16 . .. 9, 24 . . . 17 and so on. I need to reorder the card images within each sector but not across sectors.

The last oddity is that the card images, forty words that hold columns 1 to 80 normally, are swapped around so that the first word read in each card image has card columns 79 & 80, the next word is columns 77 & 78, all the way to the right where the last word has columns 1 & 2. I need my program to reverse all the words in each card image, after reordering the card images inside the sector.

I first did this reversing with an assembler program but I later switched over to a Fortran IV program because it provided a more natural way to reference sectors in a file. The Disk Monitor System attempts to file protect any stored file, blocking assembler I/O calls that attempt to write below the protect line, while Fortran ignores the protection scheme entirely.

With the file loaded with all its reversals, I set into debugging the operation of the FORTH system - I can see it loading elements into the dictionary but after just a few dozen card images executed, it goes awry. 

No comments:

Post a Comment