Friday, September 22, 2023

Plan for partial verification of disk drive controller logic; 1053 Console Printer frozen linkage found and fixed

WHAT CAN BE TESTED WITHOUT LOWERING THE HEADS ONTO DISK SURFACE

Because the disk heads are essentially irreplaceable and the constant risk of a head crash looms, I will not be allowing the heads to be loaded onto the surface of an actual disk cartridge. Longer term I will use a Virtual 2315 Cartridge Facility which electronically emulates the disk cartridge and injects the signals into the head electronics in lieu of the actual head riding on the surface.

That facility is not ready but I want to test as much as I can while the 1130 is in my shop. I will therefore make use of the part of the facility that is already wired into the machine, which blocks the head solenoid from lowering the heads and lets me lie to the electronics to claim the heads are down. 

The drive will spin up with a cartridge inserted, then when it gets to speed it will attempt to load the heads. I block that action but can then assert they are down. The drive electronics should switch into the Ready state, which lights the Ready lamp on the console. 

At this point I can test that the controller logic correctly shows when the drive is ready and when it is not ready, via the Device Status Word (DSW) I can read with a CPU instruction. Since the drive is spinning, the controller logic should be seeing the Index Marker and Sector Markers that pass by sensors on each rotation. The outcome of that will be the sector number in the DSW advancing through the four sector numbers per rotation. 

With the drive in Ready status, it should perform the head movement (seek) operations properly. Initially the DSW should show the arm is in the Home position. Issuing an XIO instruction to seek to a given cylinder should cause the controller logic to command the drive to move the arm radially towards the center of the disk cartridge, or outwards towards the Home position. 

I can observe that the controller logic correctly sets and clears the Busy status in the DSW while the arm is moving. Then when it is finished the Operation Complete bit needs to be visible in the DSW. 

I will be unable to test any disk read operation since the heads are not riding on a disk surface reading bits. However, I suspect I can do some debugging of a disk write operation, since the drive should be merrily flipping the magnetic fields with the head assuming it is on the surface. I can hook a scope to the head cable and see the bit patterns.

If I can see the bits being 'written' I can validate that all the formatting logic works properly. I will write a pattern of words that let me test that it can access memory properly to fetch or put away words. In order to successfully write a sector, the controller logic must:

  • Sets the busy condition in the DSW
  • Turn on the erase head when the drive reaches the beginning of the sector we specified
  • write a long pattern of zero bits that will allow the read to synchronize properly
  • write a special pattern to indicate the start word that establishes start of word
  • writes the 1130 data words plus the four bit error checking code
  • writes the proper number of words to the sector before ending
  • switches off the erase head before the next sector arrives
  • signals operation complete at the end of the write

PORTIONS OF THE LOGIC THAT WILL REMAIN UNTESTED

Since I can't test a disk read without either risking the heads on a real cartridge or using my Virtual 2315 Cartridge Facility, I can't test that process. In order for the controller logic to successfully complete a read, it must:

  • Set the busy condition
  • wait until the targeted sector is approaching the disk head
  • synchronize the bit cells by reading the long sequence of 0 bits
  • detect the word alignment to finish synchronizing
  • read each word from the head pattern, separating data bits from clock bits
  • read the error check bits and validate the integrity of each word
  • store the word into main memory
  • advance the word pointer into memory
  • stop at the commanded number of words
  • signals operation complete at the end of the read

I realized that I could issue the XIO Read command just to see the busy condition go on, the drive wait in vain for bits to be detected and then for the next sector mark to arrive which should trigger a Data Error condition in the DSW. This would at least check out a portion of the read circuitry.

SELECTRIC MECHANISM OF 1053 HAD A FROZEN LINKAGE

The unique elements added to a Selectric typewriter to turn it into a computer attached I/O (Input Output) Selectric include a number of microswitches that detect when the typewriter is performing various mechanical actions that preclude issuing new character print or movement commands. These are combined to form the signal TWR CRLFT INTLK which is indicates that carrier return, line feed or tab operations are underway as these are all relatively long operations compared to the time to print an individual character. 

In addition the signal TWR CB RESPONSE indicates when various commanded actions are complete enough to allow the typewriter to accept a new command. To maximize throughput of the printer, each action was studied to determine when it is safe to accept a new solenoid activation even though the mechanism is still moving. 

For printing characters, a revolution of the print shaft takes place during which the amount of tilt and rotate are set, the ball moves to the proper character, and then the ball is thrown forward to strike the raised ribbon in front of the paper and then returns to the rest position. If the typewriter completes the entire rotation and comes to rest, the startup time to fire off the next rotation results in a slower rate of typing. 

If the computer sends the codes for the next character to type before the print shaft comes to a stop, it will just keep turning into the new rotation and produce the maximum rate of 15.5 characters typed per second. Thus the TWR CB RESPONSE signal is given before rotation is complete so that the computer can feed new print requests at the full speed. 

One of the microswitches involved in these signals is activated by the long lever that triggers a tab. This lever runs across the width of the typewriter and activates a latch on the rear of the carrier to cause it to lock open, the carrier is then pulled rightward by the wound up mainspring until a tab set pin is encountered during motion that releases the latch. The left side of the lever pushes down on a linkage that locks the microswitch on until the carrier stops moving when it is released. Thus this is the tab motion interlock portion of the TWR CRLFT INTLK signal. 

The linkage slides downward in a slot and pivots slightly along with a smaller pivoting lock plate that holds the switch activated during motion. This had been so gummed up that it wasn't pushing down. It kept the tab lever from fully rotating thus not latching the carrier to move forward. I had to work some of my Nye #80 clock oil into the slot and pivot points, wiggling the parts gently, until it freed up.  That will now allow for a consistent and correct tab action. 

No comments:

Post a Comment