The IBM Electronic 50 is not the same mechanism as the IBM 1053 (or 2741 terminal) from the 360 era, although roughly speaking it attacks the problem the same way. It uses solenoids and microswitches for feedback, just as does the 1053, but it was redesigned more fundamentally for electronic printing.
The keyboard and the printing mechanism are separated in the E50, with the keyboard activating reed switches that are read by the logic board, not by pulling on links that select the typeball position and unclutch the print mechanism. The print mechanism is driven by the logic board, thus many actions like carriage return are done entirely differently. Shifting between upper case and lower case is done separately at the keyboard (to record in the memory whether the entered keystroke is upper case or not) and in the print mechanism (cause the typeball to rotate 180 degrees to the upper or lower case position, since printing is at a different time from entry of the text.
The most important difference for my implementation is that the position of the carriage across a line is tracked electronically, as are the tab settings. The carriage is moved right or left (called escapement) by a spiral grooved rotating rod and a photocell is used to count holes corresponding to 50ths of an inch of movement. Even when a single character is typed, the machine just rotates the escapement rod while counting holes until the carriage has moved 5 holes (for 10 character per inch pitch) or 6 holes (for 12 cpi).
Backspace is the same mechanism, but selecting 'reverse' gear and subtracting holes from the counter that tracks current carriage position. Tab is implemented by the escapement rod turning and holes being counted until the current position reaches the next 'tab' position in internal memory of the logic board. Carriage return is reverse gear, same escapement mechanism, subtracting holes until the left margin (effectively the zero position of the carriage) is reached.
The escapement rod runs at two speeds - low and high - both of which can be forward or reverse direction. Thus, carriage return or tab go into high speed mode as long as the carriage is more than 1.5" from its destination position, then drop to low speed for the final distance.
The E50 uses a 96 character ball, unlike the Selectric II type ball used in the 1130, thus is typeball incompatible. The codes for printed characters are different, necessarily, because you can't address 96 characters with the same number of tilt and rotate positions as the Selectric I and Selectric II. Thus, my adapter will have to translate from the 1130 tilt/rotate codes and commands into the appropriate codes for the E50 mechanism.
While the 1053 printer mechanism did not provide feedback to the 1130 adapter about whether it was in upper or lower case, the E50 provides such a signal using a reed switch. The 1130 adapter tracks the position it last set for case, ensuring that it does not do an upshift when the mechanism is already in upper case position, since that will jam the physical mechanism. On the E50, the solenoid for changing shift is a toggle, change to upper if in lower or change to lower if in upper, plus it reports the actual case of the mechanism via signal. Much safer design.
On the other hand, the 1053 has a microswitch to trigger the 'end of line' signal whereas the E50 depends on the logic board to track the carriage position compared to the right margin setting, not on detecting the actual carriage position. The E50 has failure modes where the logical position tracked in the counter does not match the real position of the physical carriage, and the E50 has no way of detecting that. It could type off the right end, attempt to backspace or CR past the left margin, tab to the wrong spot, mis-space, or other errant behavior.
The E50 uses two voltage levels - TTL compatible 5V for logic signals and 12V used for solenoids. Reed switches are used throughout, pulling down the signal to 0 when closing and letting pullup resistors yank it back to 1 when the switch opens. Little magnets are affixed to various mechanisms that will activate these reed switches as necessary.
The core switch in the E50 is the Print Feedback Switch. Printer actions are driven by activating the print clutch (PSCC) which rotates a rod 360 degrees, that rod powers all the tilting, hammering onto paper and other movements of the mechanism. At 85 degrees of rotation, it closes and it reopens at 300 degrees. It is used to block attempts to print another character or take an action like backspace while the mechanism is still in motion and could cause a jam. Various actions are performed at the 85 and 300 point, such as releasing the PSCC at 85 once movement has begun or turning on the escapement solenoids (plus low speed or hi speed) at 85.
The E50 supports variable velocity for the typeball striking the paper, producing more even levels of darkness by adjusting strike velocity to the character being typed. This is a fixed correspondence to the character code, which I will handle at the same time that I translate from Selectric II to E50 tilt/rotate codes.
The cables onto the logic board are well marked, thus I have already identified the wires to use to activate the PSCC (print mechanism), escapement low/high speeds, escapement reverse, index, toggle shift case, toggle ribbon color, escapement operation, photocell lamp turnon, and correction (erase character) solenoids. I also know how to read the photocell output, shift state of the carriage, print feedback switch state, and even the switch (I won't use for the 1130) that changes between 10, 12 and proportional character per inch spacing. There is a solenoid to ring the bell which I will make use of, if there is a way for 1130 programs to activate this.
The 1053 printer has separate solenoids to upshift, downshift, go to red ribbon and go to black ribbon, while the E50 simply toggles shift and toggles ribbon color, so a bit of translation and state tracking will occur. The 1130 expects two signals, CB Response and Twr Interlock, generated to let the adapter know when it is safe to request the next character or operation. CB response will be generated by the print feedback switch, while Twr Interlock will be generated any time that Escapement is on (we are still moving toward some target carriage position).
I am building a driver board that will take 3.3V logic signals and emit the 12V to activate each solenoid, plus it will level shift the reed switch TTL values down to the 3.3V logic levels of the FPGA board. Once this is complete, I can begin debugging the FGPA code that connects the E50 mechanism to the 1130 adapter.
The keyboard mechanism looks like it is adaptable for use as the keyboard of the 1130! That is, it has interposers that lock it when one key is pressed so that a second key can't be simultaneously activated. A clutch causes a cam to rotate once when a key is pressed, the cam will reset the depressed key after its value is read. The key pressed activates various reed microswitches that yield a 7 bit keycode - the E50 tilt, rotate, rack and shift bits - and these are read by the logic after it waits 5 ms from the first activation to ensure all of them have reached their stable final state. I need to look more closely at how the clutch mechanism works with the keyboard, as it may be possible to replace the clutch linkages with solenoids thus totally isolating the keyboard from the rotating motor driven parts. This would suit my needs perfectly.
Unfortunately, during my investigations, I created a tear on one side of a delicate ribbon cable that connects the logic board to the print carriage, bringing the tilt, rotate, shift, ribbon and velocity signals to that carriage. I will need to repair or replace that cable before I can proceed, but there are no spare parts or spare machines that I can locate, thus some form of repair or substitution will be necessary. This cable flexes every time the carriage moves across a line, thus the replacement or repair work needs to accommodate that hostile environment.
No comments:
Post a Comment