Saturday, February 28, 2015

IBM 1132 Printer reassembled and testing underway


I can't get the clutch latch lever assembly out for a proper cleaning, because it is situated where it would require almost total dis-assembly of the printing engine to reach the attaching screws. As well, all the places I need to get new oil inside are all above where I can access them - hard to get oil to seep upwards.

This makes it a very slow process - the clutch latch lever slides into two 'comb' structures as well as rotating around a pivot rod. Sludge in all three places contribute to sticky levers. The have a spring inside that should push the lever immediately outward, but many either stick in the wrong position or creep out very slowly.

After several hours of persuasion and lots of washing out and drying with an air can, I had all 120 columns moving adequately well. Time to figure out how to get oil into the parts I just cleaned. Once I put oil on the parts, I can begin assembling all the removed bits of the printer.

I decided to pick up a small oil sprayer, originally designed for gardening and similar tasks, as this should let me spray enough oil in to do the job. I picked it up at Lowes and while it spurted more than sprayed oil, it was enough to get the key points covered with oil.

Reassembly was a slow and careful process. The comb bar that partly covers the clutch latch levers was first to go into place. As I tried to fit the restoring levers in place, I found it impossible to get the locating pins to slide in, even with the bolts loosely threaded. I took a break, checked my manuals, and discovered I was trying to install it upside down!

With the restore latch assembly oriented properly, I found its installation to be quite a bit easier (doh). Note that this is still not easy - it took about 40 minutes of painful wrestling to get to the point where the first pin could slide into the latch bar, even with the bolts in place. The second pin took another hour, because there were plates and other objects in the way that made it almost impossible to use a hammer and rod to drive it in. Glancing blows and pressure did very little. Quite annoying.

Once the restore levers were in place, the cam detente lever assembly was next to install. That was already held in place by one of the two sets of bolts, thus only needed to be rotated into position, pins pushed in and then the final pair of bolts installed.

The idler gear on the gear train had been loosened and slid partway off its shaft just to permit the bolts and pin for the restore lever assembly to have been loosened. I had to push the gear back in place - these are bakelite gears on a steel hub, not all steel, interestingly. The circlip put back on the gear shaft, it was ready to rotate.

The magnet assembly has the 120 solenoids plus the two levers per column that extend the action of the solenoid to push the clutch latch lever off the cam disc clutch dog. I slide this assembly into place and bolted it down. At this point, the printing mechanism itself was completely installed, but a few tasks still remained.

Print mechanism back together, ready to start testing.
After a check of all the bolts and attachments, to verify it was back together completely, I was ready for a test of the printer. First up was a power on inspection - followed by turning on the motor to see that the mechanical bits weren't crashing together or chewing themselves up. No damage but it was printing all 120 columns continually - kac-hing ka-ching ka-ching ad infinitum.

I am investigating possible causes and figuring out what to test to confirm the diagnosis. Not sure I will be able to move forward today, with this small setback. On the other hand, all columns do print which means I have free motion of the print wheel hangers.

I suspect that it is the way I assembled the magnet assembly (solenoids) - as these levers should hold the clutch latch in, keeping the dog from engaging to spin any disc. I will try removing and more carefully re-installing the assembly, which hopefully will resolve the problem.

Once I have this problem identified and fixed, it will be time to hand toggle a program to print some characters. Probably tomorrow since it is after 9PM already.

Most printers have a control unit with logic to handle details such as matching a desired character to the current type element that is flying past on a wheel, drum or chain, triggering the hammer at the proper time, and therefore just accepts a print line from the program and interrupts to signal completion.

Not so with the bargain basement 1132 printer. Much of the work of printing a line, that would be built into the printer itself or a control unit or as a printer driver inside a different system, was left to the software in order to skip the cost of additional SLT cards.

The printer has a set of 120 wheels, one per column, that rotate at a bit over 100 RPM. There are 48 positions around each wheel, thus the printer supports 26 alphabetic characters, 10 numeric and just 12 other characters to handle period, comma, question mark, exclamation, pound sign, dollar sign etc.

The end of the print wheel shaft has a metal disk with several concentric rows of circles that are read by photocell detectors. The disk has holes punched in the concentric circles to encode which character of the 48 is about to rotate into proper position for printing.

The programmer may make up a print line of characters, but that is not sent to the printer. Instead, when the line of print is read to be printed, the programmer issues a command to the printer, Start Print, which begins interrupting the 1130 each time a new print character of the 48 around a wheel comes into position on the encoding disk.

In addition to sending the interrupt for each print wheel position, the 1132 clears out a bit in a special fixed area of core memory. This bit must be set on by the programmer before the printer mechanism has rotated to the point where it has to fire hammers to print the current character. If the bit is not on, the printer detects a 'sync check' which means that the software wasn't fast enough to set up which columns to fire.

The program handles the interrupt by issuing another command, Read Emitter, which returns one word which is the value encoded on the disk. Now that the character is known, the software looks over its print line and finds which columns, if any, have that character to print. The fixed area in core memory is set with a 0 if the column is not to print, or a 1 when the cam disc should rotate to slam the print wheel into the ribbon and paper. Columns 1 through 16 are handled by the first word of the fixed area, location 0x0120, columns 17 to 32 are in 0x0121 and the final word in 0x0127 has 8 bits for columns 112 to 120 plus a final bit that is set to 'prove' to the printer that the line is ready to print.

The interrupt for a character precedes the time when the wheel is in the proper position to print, giving the software time to be interrupted, read the emitter value, look through the columns of the print line and set up the bits in words 0x0120 to 0x0127.

The printer executes cycle steal operations to fetch the eight words of memory starting at 0x0120, preparing to unlatch the clutch dog on any column that should print. When the mechanism is ready and the character is ready, the solenoids fire and the cam discs spin around for the chosen columns.

The program remains waiting for further interrupts, as various characters come into position around the print wheels, each time firing the columns that should print the current character. This may progress 48 times if the line has every possible character in it, but the print line could have all its characters completed before that point arrives. If so, the program issues the commend Stop Print which blocks any further interrupts or cycle steals.

The program then has to delay a certain amount of time to let the mechanical process of spacing down one line to complete. If the software wants to skip ahead to a given position on the carriage control tape (one of 10 channels, 1 to 9 plus 12, will have a hole punched on the line where the printer should stop).

The printer then interrupts the 1130 for every line where one or more of the channels is punched, allowing the program to decide if this is a match to the intended stopping position. If the user wants to stop, a suitable command is issued to the printer otherwise it keeps moving down the page.

On most other printers, the software would issue one 'print' command, point to any location in memory that begins a 120 character line, then wait until the interrupt came in with status - hopefully that the line printed correctly. Quite a bit more programmer friendly than was the 1132.

My hand coded test to be toggled in, is intended to print my name plus a space repeated across the entire line. The program looked at the code from the Read Emitter operation, firing columns only when we saw a 'c', 'a', 'r', or 'l'. Pretty simple but it does verify much of the printer operation.


I removed more signal pairs and labeled them - all of old board two is now done. Just 29 more signal pairs and I will be done. Having freed up enough room to work, I could remove the Digilent FMC Carrier S6 board and the Xilinx FMC Debug card, making room to install my new ZTEX Spartan 6 fpga board when it arrives.

The fpga board was transferred from Deutsche Post to an air freight carrier in Frankfurt two days ago, which presumably means it is in the US and clearing customs now. I hope to get a further update once it is transferred to the US postal service. My new PCBs for the interface circuitry are in process - a 72 hour turnaround was purchased - after which they will be forwarded to DHL Express for a 3-7 day transit to my home. With luck, I will receive before the March 7th but certainly before the following week is out.

No comments:

Post a Comment