Friday, November 17, 2023

Rotate work continues on 1053; new version of console loader modification tested


I made adjustments of the rotate pivot arm and the long bar that transfers the rotate selection mechanism to the pivot arm, giving me a good +5 rotate selection but then the -5 isn't turning far enough. All of the selection latches for the tilt and rotate selection mechanism should be popping over the bottom edge of the bail that drives the tilt and rotate movement when the print cycle finishes, but on my machine all of them just fail to restore over the bail. 

The manuals state that the stop tabs should be bent to hold those latches a bit lower so they will restore over the bail. However, I find it hard to believe that all six of the stop tabs somehow are misadjusted. According to the typewriter pros that I chat with on a Facebook group, it is incredibly rare to have to bend even one tab and nobody has seen all of them need bending. 

The bail is raised and lowered by rollers that ride on a cam turned by the main shaft when the print cycle clutch is engaged. I compared their positions to that of my properly working 1053 from my own IBM 1130 and they appear to be identical. There is no adjustment other than the rotary position of the cams that determines how far down the selection bail moves.

When a print cycle starts, the bail goes slightly lower at the start which does allow all the selection latches to restore under the bail, but at full speed there is the risk that they won't pop under. That would cause erratic mis-selection of print characters. 


I supposed we could have had extreme wear that cut down on the diameter of the rollers on the cam or lessened the size of the cam, but I do not see any evidence of that. The cam is narrower than the rollers, thus the rollers would form grooves if they were eroded down. The cam has a nice smooth shape just like my working 1053, so I doubt that answer as well. 

I need to figure out what is different between the two, before I continue on this task. I don't want to bend all six stop tabs, which are metal L shaped protrusions from the bracket holding the selection mechanisms. These could snap if over stressed and if I bend them when they aren't the actual problem, it may further throw off operation of the machine. 


Further, I don't see how the latch restore problem is related to the failure to get the type ball to swing the full amount for +5 and -5 rotation positions. It may well be an evil coincidence that this typewriter has both of these issues. 


I originally designed a console loader as a request for a friend at a museum in the UK who wanted a quick way to enter large amounts of data into core memory while their card reader was inoperative. It was to be a quick and dirty fix for them, one that I built using an Arduino and some relay boards. 

The console entry switches (CES) on the front panel of the 1053 are a set of 16 toggle switches allowing the operator to set bit values in a word. The CES are used to load core, set the instruction address for execution and can be read by programs during normal execution. The logic gates that read the CES value are pulled down to ground through a 470 ohm resistor when a CES is turned to its on position. 

My solution used 16 relays and 16 resistors to activate the CES, assuming the operator has them set all to the off position when using my device. In addition. another relay board is used to activate push buttons that normally are pressed by the operator. When the rotary mode switch of the 1130 is set to LOAD mode, pushing the Prog Start button will cause the contents of the CES to be stored in core memory at the current address from the IAR, then the IAR is bumped by one to the next location automatically. 

To load a new value  in the IAR, either to store data in core with the LOAD function or to begin execution when in normal RUN mode, the operator sets the CES and pushes the Load IAR button. This is a normally open switch and my relay simply closes the circuit as if the button were pushed. 

The Prog Start button is more complicated it drives two complementary signal wires. +12V is routed to the normally closed contact when the button is not pressed, but instead that connection is opened and the 12V is connected to the normally open contact to energize that signal wire. I therefore need a relay that switches the 12V the same way, either to the NC or the NO contact wire. However, since the physical button is still active on the NC contact, I have to use an additional really to block the +12V from going to the armature of the pushbutton when my device is controlling the machine. 

That first implementation means that there are several relay boards that have to fit below the tabletop of the IBM 1130, squeezed between the 1053 typewriter front panel and the rear of the keyboard. A board of resistors sits on the side as well, plus the Arduino Mega must be located somewhere under there. It is crowded and messy as a result. 

The sixteen wires from the 1053 front panel snake out from under the 1053 panel. Note that the front panel can be separated from the 1053 typewriter itself, and the front panel can be lifted out of position. Thus there need to be connectors to disconnect my wires to the front panel. Another thing to squeeze in that limited tabletop space.

I verified this on my own IBM 1130, even though I have a different and easier mechanism on that machine allowing me to load and dump core memory locations. I installed another on the 1130 I am restoring. However, the messy nature of the implementation bothered me.


To solve the messy nature and build a more elegant version I decided to replace the relays with photo-isolator switches. These electronic switches are considerably smaller and allow me the opportunity to place the device in a better location on the IBM 1130. 

I designed and fabbed a printed circuit board that sits atop the Arduino Mega 2560 (a shield to use Arduino terminology), mounting surface mount versions of the photoisolators and resistors. The sandwich of the Arduino and its shield is small enough to fit behind the 1053 front panel. The typewriter mechanism has lots of open space in the front, below the row of three buttons for Tab, Space and Return. The device can mount on the panel and fit in that open space. 

It has a connector for the 16 wires from the CES and another connector for wires going to the area under the tabletop. These bring +12V and ground to my device as well as wires to hook to the Prog Start and Load IAR buttons. Thus, the formerly cluttered area now has a small bundle of six wires that run under the front panel of the 1053, with everything else out of sight.

I put together a test rig to verify the operation of the loader, feeding it +12V from a supply and using LEDs on a breadboard to indicate when the wires were energized. Everything worked as expected, so the device is now ready to be installed into the 1130 for its final test, removing the ugly version 1 of the console loader.

Testbed for loader device on left

I had also improved the program running in the Arduino in quite a few ways. The goal is to take a text file on a PC or other terminal, feed text lines to the Arduino over the USB serial interface whenever the Arduino issues a prompt character, and have that file control the operation of the loader device. It will always be active, listening on the USB connector for command lines. The format of the files was chosen to match the format that the Simh based IBM 1130 Simulator will dump memory contents. Thus the simulator can be used to prepare and test information, then those files used with my device to load core on the physical IBM 1130. 

The file has four hex characters per line to be loaded into the CES. 

  • A prefix character (default @) indicates that the Load IAR button is to be virtually pushed to put the CES as the next address. 
  • A different prefix (default =) saves the value as the location for the IAR to be used when the machine begins to run at the end of the session. 
  • A third prefix (default Z) tells the loader to put 0000 in the CES and push Prog Start as many times as the value of the four hex digits indicates, thus zeroing out a block of memory. 
  • If there is no prefix, the value put in the CES by the four hex digits will be loaded to memory by virtually pushing Prog Start. 
The device is inactive in its normal state. When a command line with only the activation character is sent (default #) then the Prog Start button is disabled and my device will begin responding to the other lines of the file. If not activated, my code ignores any command lines. At the end of the session loading memory, another command line with only the activation character is sent. This returns the Prog Start button to its normal operation and loads the IAR with the saved value if we had a = prefix during the session.

The code allows for reconfiguration of the characters to be used for the various prefixes and activation characters as well as other customization options. It has documentation throughout the code showing what is intended. 

To use the loader, a text file is generated manually or one is produced by the IBM 1130 Simulator. Simulator generated files need to have a first and last line of the activation character added as my device needs those to activate and deactivate. The operator turns the rotary mode switch to LOAD, turns off all the CES and then transfers the file over USB serial with the program on the PC/terminal sending one line every time it receives a prompt character. When the file transfer is complete, the operator turns the rotary mode switch to RUN and then pushes Prog Start to begin executing what they loaded into core. 


  1. Only speculating, but almost all 1053 problems seem to come back to old grease a/o dirt, so just assume a latch that doesn't drop as fast as it should is being slowed by crud of some kind. I notice that the Phoenix Typewriter guy on youtube has a squeeze bottle of lacquer thinner and uses it to free up selectric pivots.

    1. Hi David

      Besides the trusty Nye clock oil I use, I do have lacquer thinner for difficult cases. Generally if I can get the clock oil on the joints and I can move the parts manually, the clock oil is the better solution but sometimes you need the grease off an area that you can't manipulate, thus lacquer thinner.

      The latches in this case hang down, rather than moving, and can't move any lower unless pulled down by the selection bail. it is the bail that needs to move under the latches.

      This machine has some adjustments that are way off, not just bad lubricants like most.