Thursday, June 19, 2025

Finished checking and fixing up the diagnostic load file

FOUND ALL THE DIFFERENCES TO THE LISTING

I ended up with quite a few words that didn't match, although most of them are consistently different because of some corrupted test sequences towards the end of the code. Since the test sequences were a bit longer the address of data at the end of the program shifted, thus any instructions that referenced these locations did not agree with the listing. 

In addition to all the differences based on the shifted locations near the end, there was a single word that was incorrect - the value that caused our spurious error message. However, it was not just a matter of shifted locations for everything else. Some of the test sequences to be typed were alternatives to the code I discovered but seemed like it would accomplish the same purpose.

ALTERNATIVE TYPING SEQUENCES

The first deviations in test sequences began in the middle of the Backspace and Index test. This test begins by issuing a tab, then types backspace in reverse backing up from the tab column, then does a tab and types index with a line feed and backspace between each character so that it appears vertically on the page. 

The code I have in the file issues a character code that combines more than one control function in the same character, which isn't defined as valid in the programming documentation. Every control function has the low order bit set to 1. The other bits define which control function:

  • 81 - carriage return
  • 41 - tab
  • 21 - space
  • 11 - backspace
  • 09 - shift to black
  • 05 - shift to red
  • 03 - line feed
Note that the functions above are a single bit set plus the low order one. My listing for the diagnostic accomplishes the index part of the Backspace and Index test by issuing an 11 then an 03, to backspace then linefeed. The load file has a single control character 13, which seems to combine the backspace and the line feed into a single command. 

Because the load file combines these commands, it is shorter by three words. That displaces all the sequences that follow (Auto Carrier Return, Rock, Roll and Twist) plus all the data and code that follows the sequences. One word was added to a data table, which consumes one of the three words that was gained by compressing pairs of movement commands into a single hybrid command such as line feed plus backspace

CORRECTED LOAD FILE FOR SINGLE CORRUPTED WORD

Since the typing sequences and related address shifting appear to be an intentional update made by IBM in order to fit a change in the same diagnostic test footprint, the only difference that seemed to matter was the constant for the desired Device Status Word (DSW). After the typewriter is commanded to type a character with an XIO Write instruction, while the mechanical operation is underway but before it completes. an XIO Sense Device should return a DSW that has both the busy and not ready bits set. The constant should have had both bits turned on, but it instead only had a bit for busy status. 

NEXT STEPS

With the file corrected, when I next arrive at the workshop I should be able to run the diagnostic without receiving the false error messages that were caused by the corrupted constant. I have some things to do that will delay my next visit to the shop, but once I am able to return I will load the fixed file and try out the typewriter.

I do have questions about the unorthodox combination commands that mix more than one movement command in the same XIO Write instruction. The reason I want to look closer is because the controller logic is sensitive to two feedback signals coming from the typewriter, which are -Twr CB Response and +Twr CrLfT Interlock, both of which are produced by multiple microswitches. 

Two of the typewriter movements, tab and carrier return, are variable duration events which depend upon pairs of microswitches to properly cover the entire duration. If the adjustments aren't correct, we could see a spurious edge on the signal that convinces the controller logic that the movement is complete even though the signal goes back to busy for additional time. 

I will put the oscilloscope on the two feedback signals and watch what occurs with the combination movement commands, hand coding an XIO Write to trigger the movement. If anything looks wonky, I will know the microswitch(es) to check and readjust. 

Monday, June 16, 2025

More on the errors with the console printer (typewriter) diagnostic

USED SCOPE TO VERIFY THAT NOT READY AND BUSY ARE PRESENT

I could clearly see that when an XIO Write was issued to the typewriter, both Busy and Not Ready activated at the same time and for the appropriate duration. I traced the Not Ready signal to every location in the machine just to satisfy myself there was no issue with the DSW. 

RAN DIAGNOSTIC AGAIN, THE SAVED DSW WAS CORRECT BUT ERROR PRINTED

Indeed, after an XIO Sense Device the Accumulator (ACC) had bits 3, 4 and 5 set, which stand for Console/KB switch set to Console, typewriter busy, and typewriter not ready, respectively. This is correct. 

The diagnostic printed error E0402 which indicated that our status was not correct. The text in the documentation suggests that the busy status was wrong, but it was just poorly worded. Nor was the Not Ready status wrong - as we just verified. The error message should not have been printed. 

STEPPING THROUGH TESTING CODE, I FOUND A CONSTANT WAS INCORRECT

The code involved in this producing this error message had immediately issued an XIO Sense Device after it did an XIO Write to type a character. I saw it apply some bit manipulation then check to see that the saved DSW matched the archetype for a correct status. However, the word with the archetype status, which should have held x0C00, was instead 0x0800. This was triggering the spurious error message. 

I did a quick update of that word to the proper value, reran the diagnostic and, miracle of miracles, the error message was no longer emitted. However, if there was one corrupted value, there may be more. 

COMPARING DIAGNOSTIC ASSEMBLY LISTING AGAINST CORE FILE

I began to check the value of each word in the file I load into core to run the diagnostic, comparing it to the printed listing of the diagnostic program. This is time consuming. So far, I have found the one error word that caused the erroneous error message, but also see that the address of one routine near the end of the listing is off by two words. However, every other word so far has matched perfectly. 

As I finish the cross check, I can clean up my diagnostic program file so that it will be loaded exactly as intended by the authors at IBM and therefore should run flawlessly. 

Substitute relay arrived for 2501 card reader, tested and installed

RELAY R3 HAD AN OPEN COIL THUS REPLACEMENT NEEDED

The power supply box includes a function to keep the main motor of the card reader running for 15 seconds after the 2501 receives its last read or feed request via an -execute command signal. Relay R3 latches every time -execute command arrives but the voltage across the coil declines based on an RC circuit until about 15 seconds have elapsed, when the relay coil is no longer able to hold the connection. 

The contacts of relay R3 send a signal -motor hold sw back to the 1130 system's controller logic, which uses it to maintain or drop the -motor relay command back to the reader. If this isn't working, the motor will shut off instantly after every card is read, which is hard on the motor and disruptive to the process of reading. 

EXACT PART NOT AVAILABLE BUT LOCATED A RELAY THAT SHOULD WORK PROPERLY

The Sigma part number did not come up in any online search, but there were many similar relays from Sigma that I could choose from. I looked for the critical specifications to get as close to the original relay as possible. This included the voltage and current rating of the contacts, the voltage for the coil, the DC resistance of the coil and factors like the drop out voltage. 

The original relay had contacts rated for 2A of current, but that is extremely far above the actual signal currents used in the 2501 and 1130 system. Thus, a 1A part was very suitable. The voltages for the contact, coil, and coil drop out were identical. The resistance of the original relay was 10K but the part I found was 9K. 

The final difference was the mounting method - the hole locations and shape of the mounting foot. I will have to adjust for the difference to install this new relay into the power supply box. 




CONNECTED AND TESTED ON THE WORKBENCH

I connected the power supply box to my 220V step up transformer and used some resistors and jumpers to simulate the control signal -execute command to trigger R3. My VOM was hooked across the contacts of the new relay to let me hear the duration of the relay actuation. The circuitry around the relay includes a potentiometer where I can fine tune the time duration, which should help me compensate for any differences due to the substitute relay.

The relay activated cleanly when the control signal was given. The relay opened up after 5.5 seconds. Based on that, I began adjusting the potentiometer but the max delay I could achieve was around 7 seconds. 

I experimented changing the resistance of the time adjustment leg - the potentiometer plus a 10K resistor - to see if I could lengthen the hold. Even with an infinite resistance, the relay held for 13 to 16 seconds, varying a bit, which I deemed close enough to proceed. The specification for motor hold time is 15 seconds +/- 3, therefore we are within the proper range. 

The potentiometer and related resistor are out of the circuit. The relay coil appears to be draining power faster than the original did, or it has a higher drop out voltage, or both. An alternative solution would be a larger capacitor in the timing circuit, which would accommodate the higher current flow and lower its voltage at a slower rate. However, since the unit performs adequately now, I won't pursue this alternative.

MODIFIED MOUNTING METHOD TO INSTALL INTO POWER SUPPLY BOX

The original relay had a rectangular plate on the back with holes near the top and bottom. The new relay has a different shape and hole pattern, thus I had to take off the plate from the old relay, drill out a hole and use a screw to attach the new relay to the plate. 



READY TO PUT POWER SUPPLY BOX BACK INTO 2501 CARD READER

The lower compartment of the 2501 card reader holds the power supply box, a card cage for the SLT circuits and the connectors used to connect cables to the 1130 system. The power supply box fits in the compartment using slots in the box that match mounting hardware in the 2501.

A flat rail runs across the top of the compartment, from front to back. Slots in the top of the power supply box allow it to fit over the rail, with enough room in the slot to move further upward than its final mounting position. 

That permits the bottom of the power supply box to be swung over the top of a rectangular rail that sits across the bottom of the compartment, running from front to back. Square cutouts on the bottom of the power supply box allow the box to settle down onto the rail. This suspends the box from moving side to side in the 2501. A bolt goes through the bottom of the power supply box to lock it down in position on the bottom of the 2501 compartment. 

Once I do this I will be reconnecting all the cables and wires I had to disconnect in order to move the power supply box to the bench for testing and repair. 

Oops - error in test code thus troubleshooting the wrong problem

MY HAND CODE TO TEST THE DSW AND SAVE IT WAS DEFECTIVE

The error messages from the diagnostic were described as indicating the failure of the typewriter to appear busy during an output operation. The hand code was intended to save the Device Status Word (DSW) immediately after a character was output, with the result saved matching the character code of the letter I typed rather than a valid status.

Based on that I was down a rabbit hole trying to imagine a failure scenario that would place the character code in the accumulator register (ACC) after a sense DSW. It was quite unlikely which meant that I didn't have a good starting point to test signals to eventually locate a fault. 

Imagine my embarrassment when I began to execute the code in single cycle mode to see exactly how the XIO Sense Device was working. I noticed that I was saving the ACC at the wrong time, just after I typed the letter with XIO Write, not after the XIO Sense Device. Thus the value I saved was in fact reasonable and consistent. Unfortunately, it was not an indication of what might be wrong in the diagnostic!

ACTUAL ERROR DISCOVERED BY LOOKING AT DIAGNOSTIC MEMORY LOCATIONS

I pulled out the listing of the diagnostic program and found the point where it was writing the error message. The code showed me a location where the DSW had been saved before it was checked doing an exclusive OR with the value x0C00 and requiring the result to be all zeroes. Those two bits in the DSW are busy and not ready, respectively. 

The busy bit was on, as it should. The not ready bit was not set. My DSW was x0800 but had to match x0C00 for the test to pass.

NOT READY SHOULD GO ON AT THE SAME TIME AS BUSY

The architecture of the IBM 1130 specifies that the not ready bit is turned on by multiple things, one of which is a busy condition. It is also set when the typewriter is out of paper (Forms Check lamp is lit on the 1130 console). In the past this had worked properly, so the diagnostic error was new, popping up sometime while I was doing the last round of typewriter adjustments. 

Since it had occurred immediately after I changed things on the typewriter device, the likely cause was something wrong in the typewriter itself. Once I watched the typewriter perform properly I turned my attention to the typewriter controller logic inside the IBM 1130. Sadly I read the error as indicating that the busy bit was not turning on. This bit turns off once the operation is complete and the controller logic requests an interrupt from the processor. 

I then set up a defective program to look at the DSW to check for busy right after the XIO Write but before the interrupt was requested. Based on a flawed test, I was chasing a false error scenario in the controller logic. Armed with the actual situation that triggers the error message in the diagnostic, I can start testing the portion of the 1130 that is involved. 

NOT READY STATUS LOGIC

There is a small amount of logic and connections involved in turning on not ready while the typewriter is busy. This all begins when the typewriter turns on its busy flipflop, during the XIO Write instruction, step E1, at clock time T6. That signal stays on until the rising edge of the -Twr CB Response signal from the typewriter. 

At this time, the busy flipflop is turned off and the operation complete flipflop is turned on. The request for an interrupt on level 4 is raised whenever operation complete is set. A subsequent XIO Sense Device with bit 15 set will clear the operation complete flipflop, stopping the request for an interrupt. This normally is issued within the interrupt request handler code so that when the interrupt handler exits, we don't immediately jump back in due to the active request. 

-Twr CB Response is created by a chain of microswitches in the typewriter, all of which are normally closed. When one or more of them opens, indicating that a mechanical operation is in a sensitive portion of its cycle, the signal drops to logic 0. Once that protected portion of a cycle is finished the switch closes again, creating the rising edge back to logic 1 state. 

Since we are receiving the interrupt request we know that the rising edge is detected. We know from looking at the DSW after the interrupt that the busy bit is not on. I know from the stored DSW in the diagnostic that the busy bit was set while the typewriter was outputting the chosen character. 

The signal -Twr Not Ready is generated by the logic below:

As you can see, it is very simple. On the left, the End of Forms microswitch is debounced and is an inverted logic signal -Twr End of Forms. The -Twr Busy signal is also inverted. 

If both of them are logic high, thus we are not busy and we don't have an end of forms, then the signal +Twr Not Ready is generated as logic low due to the rules of a NAND gate. If either condition is true (logic low) then we raise the +Twr Not Ready signal that goes over to produce the DSW bit 4. 

Also, if we have a logic high on this generated +Twr Not Ready signal and at the same time we are not busy (logic high on -Twr Busy) then we drive the -Twr Forms Check Lamp line low to light the bulb. This means that the lamp doesn't actually go on while we are performing a typewriter mechanical operation, waiting until the completion. 

For example, if the carrier is near the right margin and a carrier return is requested, when the platen rolls up one line, we might have the paper end leave the End of Forms microswitch. The lamp doesn't turn on until the carrier has finished its move to the left margin. Presumably an eagle eye could spot that sequence of operations, but it seems to be a unnecessarily sophisticated implementation of a warning lamp. 

Finally the signal -Twr Busy that we are combining to produce the -Twr Not Ready condition comes from this logic:


The Twr Cycle flipflop is turned on by the combination of XIO Write, Area 1 (typewriter address) and time T6, as long as the typewriter is not busy. The busy signal arms the edge detector which fires off a set pulse when we exit T6 in an XIO Write to the typewriter. The flipflop is turned off when the signal +Twr Interlock Latch drops as long as we are not in a shift cycle, since shift cycle conditions the edge trigger. 

When the typewriter needs to shift between the upper case and lower case hemispheres of the typeball, it converts the request into a sequence of two typewriter actions. First, a shift is fired off. When that is complete, we then fire off the character type command. 

The interlock latch is on while mechanical action is underway and will turn off after the shift and again after the typing of a character. We don't want to turn off the print cycle after the shift, only when the actual typing is done. 

Our busy condition is formed with a NAND gate, turning on if any of three signals are true:

  • Twr cycle flipflop is set
  • We detected the end of line microswitch on the typewriter
  • The interlock latch is on due to mechanical motion
Since this output is an inverted logic signal, -Twr Busy, it is logic low when on. That feeds directly to the logic producing the +Twr Not Ready signal (see diagram). 

Now that we see how the two signals, -Twr Busy and +Twr Not Ready, are produced, we look at the logic which presents +Twr Not Ready as bit 5 of the DSW.


When we have an XIO Sense Device for Area 1 and the +Twr Not Ready signal all at logic high, we set DSW bit 5 low (which produces a 1 in the DSW). 

All of the logic involved is on gate A, compartment C1 of the 1130, which eliminates any compartment to compartment cables from suspicion. We have just a few gates that might be malfunctioning. The only other possibility is a broken trace on the backplane of compartment C1, which is very unlikely. 

Potential bad gates include:
  • A C1 C2 D07 output producing the -DSW Bit 5
  • A C1 E5 D04 producing +Twr Not Ready
The correct operation of the logic producing the interrupt request and good status for busy eliminates any other gates in the machine from consideration. 

OSCILLOSCOPE PROBE OF HAND CODE TO WATCH NOT READY SIGNAL

This is a very simple test - trigger the scope when the busy condition is produced at A C1 D4 D04, on the falling edge. Watch the two signals above to see if they are generated appropriately. Based on that, test the gate in question, find the bad component and then fix it. 

Saturday, June 14, 2025

Debugging issue with XIO Sense DSW - part 2

GATING ONE REGISTER TO ANOTHER IS A BIT COMPLICATED

The terminology suggests that you will get an exact copy of the source register in the destination register, but the reality of the circuitry is important to understand. Gating into a register involves IBM's edge sensitive gates, which produce a pulse to set a flipflop for the bit. This pulse sets the flipflop. It does not reset it. The contents of the source will not be turning off the flipflop of the destination. 

Further, the control signal that arms the edge sensitive gate is the bit value of the source. If the source holds a 0 value, then the edge sensitive gate is NOT armed and cannot set the flipflip. It is when the source holds a 1 value that the gate is armed and turns on the flipflop at the appropriate time. We transfer 1 values but not 0 values. 

This may sound like a quibble, but it means the entirely different circuits are involved in resetting the bits of the destination. This would be a register clear signal that turns all the flipflops to 0. Now imagine that the register previously held a value of x3C00 and it was not cleared. If the source holds 0x0800 when the gating occurs, the destination register remains at x3C00. If the source holds x00F0 then the destination register would become x3CF0. We are doing an OR into the destination, so that we absolutely must have it cleared to x0000 before we do the gating. 

ONE POTENTIAL FAILURE MECHANISM

If we first posit that a register has the typed character code at the end of the XIO Write instruction, and that nothing in the execution of the I1 and E1 steps of the XIO Sense DSW make use of that hypothetical register, then if the register clearing pulse does not get to the register, we might get the symptoms I observe where any bits from the typed character code remain on in the destination register. 

REVIEWING PATH OF DSW DATA FROM CONTROLLER TO ACCUMULATOR REGISTER

During execution of an XIO Sense DSW, at the start of the E2 step of execution, the typewriter controller logic turns on bits that should be a 1 in the DSW. It does not turn off any bits - again, the circuits in the 1130 generally are asymmetrical and flip bits on with edge sensitive gates. While the controller holds the desired bits at 1, pulling them to logic low since the IO Bus is inverted, an early step of E2 for the instruction gates the IO Bus to the B Bus. Assuming the B bus was cleared previously then it has 1 bits only in the positions that were set in the IO Bus.

A bit later in the E2 step of the instruction, it gates data from the B register to the D register. If the D register was previously cleared then it will match the B register value. A touch after the transfer, control lines are set to the arithmetic logical unit to cause the value in the D register to be transferred into the A (Accumulator) register. 

TRYING TO FIND A FAILURE MECHANISM THAT INVOLVES THE D REGISTER

We know that the B register updated after every memory access, so that the original typed character code from the XIO Write instruction is replaced, first by the XIO Sense DSW instruction itself, then by word 2 of the IOCC in step E1, and finally from gating of the IO Bus in step E2. 

However, fetching instructions and reading the IOCC does not involve the D and A registers, only the B register. Thus there is the potential that something has gone wrong with clearing one or both of them, so that when the IO Bus is gated into D we are just doing an OR of the IO bus with the prior contents of D. 

For this to happen, we must have the character code of the XIO Write instruction somehow get transferred to the D register. There is no need for this to happen as the XIO Write should simply have the data in the B register so the typewriter controller can work with. I must find evidence that a transfer takes place to D otherwise this explanation of the defect can't be correct. 

Looking at the logic of the machine, the data should stop at the B register because the CCC counter is decremented to 0 at the start of step E3 of the XIO Write instruction. The last thing in the D and A registers will be the first word of the IOCC as it was read in step E2. For this speculation to cause the symptoms we see, the transfer into D must happen in E3 of the XIO Write, through some kind of defect. Then, a second defect must suppress the clearing of register D so that when the XIO Sense DSW step E2 gates in the IO Bus, we get an OR with the prior contents of D.

I am skeptical that I would have two scattered defects that combine in this way but otherwise code seems to run fine on the 1130 system. I need a starting hypothesis to debug the machine, otherwise I might need to monitor hundreds of signals blindly to try to spot a problem. More thought is required. 

Friday, June 13, 2025

Debugging issue with XIO Sense DSW - part 1

BACKGROUND FOR UNDERSTANDING THE SENSE DSW ISSUE

The 1130 has a common input bus for I/O data as well as the device status words, with all the sources for a bit tied together so that any one of them can pull the line to ground to indicate a 1 value. This means that many circuits can be turning on those bits. 

When reading from a peripheral, the IO bus is gated into the B bus (memory data register or storage buffer register) at the correct time so that it is written back to the current memory word. DSW status bits are also gated to the B register in the same way. 

This means that the issue could also be occurring in the B register, but the IO bus value was correct. That is another avenue to chase down. In addition, there are other registers involved, which I will discuss below. 

The 1130 is a memory centric machine, with instruction execution involving one or more memory access cycles. An address is placed in the M register (Storage Address Register) before the cycle begins and the contents of memory are placed into the B register (Storage Data Register) in the midst of the cycle. If a new value is to be written into that memory location, the B register is changed before the second half of the storage cycle takes place.

The instructions themselves are in memory, thus before they can execute they must be read with a storage access. Each memory/storage access cycle is one of a number of defined types. I1 is what fetches the first word of an instruction, but we could need an additional storage cycle I2 if it is a doubleword instruction. 

The address of the target of the instruction must be determined and these might require storage access cycles themselves - IA for indirect addresses and IX if an index register is involved since those reside in memory at fixed addresses. 

Once all the preparation steps, at a minimum I1 but as much as four cycles I1, I2, IX and IA, then the purpose of the instruction can be satisfied by execution memory cycles. E1 is the first execution memory cycle, where a value might be fetched from memory or placed in memory. Some instructions may not access the memory, instead changing arithmetic or logical data, but that occurs using a storage cycle but setting a signal that suppresses access to the core memory during the cycle. 


We see the I register (Instruction Address Register) is moved into the M register before a cycle to cause the instruction's first word to be read into the B register. In the diagram above, a simple instruction has only the I1 cycle and then the E1 cycle to grab the value in the target memory location and place it in the B register. 

In the 1130, every memory access produces a value in the B register. When executing the XIO Write instruction, the last memory location we read is the address where the character we want to print is stored, thus B contains that value. When it then starts to execute the XIO Sense DSW (step I1), the first memory address read is the instruction word, which replaces the B register. The XIO step E1 then fetches the second word of the Input Output Control Command (IOCC) which has the device, IO function and sometimes control bits. Thus word 2 of the IOCC is in the B register. 

In step E2, the XIO fetches the first word of the IOCC which often is an address but for XIO Sense DSW the storage read is blocked and we instead just gate the IO bus to B register. The XIO Write, step E3, on the other hand, will fetch memory at the address we just picked up. For an XIO Sense Device, the value in the B register is then gated to the D (Arithmetic Factor Register AFR) and passed through to the A (Accumulator) register using a couple of arithmetic logical unit control signals. 

Somehow the value in the B register looks more like an XIO Write than an XIO Sense Device. However, the first word of the IOCC I used was not the address where the character value was stored, so it could NOT be actually reading it from memory like an XIO Write E3. 

The data that was in the B register multiple memory fetches ago is now showing up in the A register during the XIO Sense DSW step E2. While it looks as if the IO bus for the sense DSW stored the 'saved' value in B, it had no path to make that transfer happen. I think instead this has to do with the D and A registers. They would not be disturbed by the I1 and E1 stages of the XIO Sense DSW instruction execution, thus anything in them would remain there. 

The problem with this hypothesis is that the XIO Write should NOT be transferring the B register value to D or A. In order for the observed actions to take place, the XIO Write would have to transfer the B reg value somewhere else, which it shouldn't, then the XIO Sense Device would have to move something other than the IO bus value to B, D and A. 

Compare the XIO Write instruction, which is diagrammed above, with the XIO Sense DSW instruction diagrammed below. 

The E1 step of XIO Write will grab the second word of the IOCC and store it in the U register to determine which device and XIO function is being performed. The next storage cycle, E2, will grab the first word of the IOCC which contains the address in memory where the character data for typing is stored. That address moves to the M register and the E3 storage cycle causes the character value to be fetched into the B register. The typewriter controller logic looks at the value in the B register to determine how to control the typewriter. 

The E1 step of XIO Sense DSW also grabs word two of the IOCC, and another storage cycle takes place as E2. However, the storage access is blocked, nothing goes in or out of core memory. Instead, the typewriter controller logic sets bits to 1 in the IO bus and it is gated to move into the B register. Other signals than gate the movement of the B register to the D register (Arithmetic Factor Register) and control signals cause the value in D to move into the A register (Accumulator). All those gated moves happen during a storage cycle but no actual memory access occurs during that time. 



The address in the first word of the IOCC for XIO Sense DSW may be moved to the M register but it is ignored since we have inhibited memory access. The typewriter controller logic is only able to set some status bits in the IO bus. It is not able to write back the entire character value. This is the root of the problem - A register ends up with a value that is long since gone from the B register when XIO Sense DSW starts executing and the controller logic has no way to write it back even if it had it. 

Thursday, June 12, 2025

IBM 1130 typewriter (console printer) repair and adjustment - part 10

USING SCOPE TO VERIFY BUSY CONDITION FROM TYPEWRITER

I could clearly see the -Twr CB Response signal drop during the typing of each character, although the console printer diagnostic as reporting that the DSW did not show the typewriter busy when it was sensed immediately after an XIO Write was executed. 

There could be a failure in the controller logic inside the 1130 system that is failing to indicate the busy condition. This is set when the XIO Write instruction is completing and cleared by the -Twr CB Response signal having gone low for a while and then returning to high. When the signal returns to high, besides turning off the busy signal it also requests an interrupt on IL4, presenting Operation Complete status.  

HAND CODE TO ISSUE XIO WRITE AND XIO SENSE DSW IMMEDIATELY AFTER

I set up the machine so that when the interrupt arrives on IL4 when the typing completes, the machine simply waits. Then, the code that fires off the character typing has a sense DSW immediately, stores it in a chosen memory location and at the end waits.

I could see that the Accumulator, as well as the chosen memory location, contained x3C00 which is not correct for what should be happening. This is why the diagnostic complained. I was suspicious because the value happened to match the character I asked to type - x3C is an A - so I altered the character I was typing to J (x7C) and that value was now returned for the  Sense DSW.

This should NOT happen.  This is not a typewriter issue, so I will blog about this under a new title and once it is resolved I can go back to documenting the console printer repair and adjustment. 


Sunday, June 8, 2025

Wrapping up testing of 2501 card reader power supply box - one bad component discovered

INVESTIGATED THEORY ON HOW TRANSFORMER PRIMARIES ARE CONNECTED

My speculation on how the US transformer might be connected to the five terminals of terminal block PSTB1 was validated. I isolated windings and measured DC resistances. I removed the jumper between terminals 2 and 3 which did indicate there are two sets of primary windings, as I suspected. 


I altered the configuration to 230V, to match my workshop, and reverified the output voltages delivered. Since the transformer is ferro-resonant, thus crudely self regulating, the differences in the voltages produced were less than the delta from 208 to 230, but they did move in the correct direction. 

TESTING MOTOR CONTROL CIRCUITS

The motor is started by activation of the contactor relay K1, based on the signal -Motor Relay coming from the 1130 system controller logic. This works by grounding the input signal, thus powering the coil to switch on the contactor. I connected and disconnected ground to terminal 10 of PSTB2 where the signal arrives. The contactor clunked in and out based on the connection I made. A VOM confirmed the conductivity of the contacts when K1 was activated.  

As the power for the motor is applied via K1, it is connected to the normal winding of the motor. The starter relay K2 connects the start winding through an R-C link to shift the phase of the AC, sufficient to start rotation of the motor. Relay K2 has a time delay then switches off the start winding. I did not test this yet as I need to connect the motor first. The current draw of the motor starting is more than my bench 240V supply can deliver, thus I need to replace the PS box in the card reader and hook it up to the IBM 1130 in order to test the last piece - startup of the motor. 

Relay K3 is a time delay which delivers a signal back to the 1130 controller logic -Motor Hold that indicates that the motor should continue to be powered by asserting -Motor Relay. The relay is activated by relay K4, which switches on for each -Execute command from the 1130 controller logic. Execute is issued to feed or read a card. 

The relay K3 coil is provided with 24V from the brief activation of relay K4. The 24V charges a capacitor which continues to hold the coil activated but an RC network is draining the charge. The timing is set up so that the coil of K3 will drop out after about 15 seconds - as the voltage declines below some threshold. 

Thus, each time a card is read or fed, the hold relay activates for 15 seconds and causes the controller logic to hold K1 active so that the motor runs. During normal reading of a deck of cards, relay K4 resets the hold relay K3 repeatedly so that the motor is running continuously, but after any pause of 15 seconds the motor will stop. 

I tested relay K4 by connected terminal 9 of PSTB2 to ground, as this is where the -Motor Relay signal is connected. Each time I did the relay switched and the VOM indicated a good conductivity for the contacts. 

TESTING K3 FAILS

That would have also validated relay K3, as it will receive 24V every time K4 switches. I didn't see or hear the relay switching. I hooked the VOM to the contacts to see if it was working, but nothing changed. I then hooked up the VOM to the coil of relay K3 to see what voltages it was seeing.

It was presented with 24V when K4 activated and ebbed so that after 15 seconds it dropped to about 3V where K3 probably would have dropped out. However, no action and the voltage should have dropped across the terminals due to the current flowing through the coil.

I then used the VOM to test the resistance of the coil. Infinity! Open circuit. The wire entering the wrapped coil was good on each side, so the break is somewhere inside the coil of the relay. The part is a Sigma 41 F-98326 - a single pole dual throw relay with a 28V coil with the ability to switch 2A at up to 75VDC. 

This is excessive given it is just grounding a single line going into an SLT card in the 2501 card cage - it is pulled up to about about 20V when the relay is open and pulls that to ground when activated with just a few milliamps of current flow. Finding a substitute just has to support contact operation at milliamps of current with a voltage under 30V. 

LOOKING FOR REPLACEMENT RELAY


I partially disassembled the relay thinking that if I could find another Sigma relay with a 10K coil I could swap them. 

I checked eBay and did google searches, but nothing matched the exact relay. I can find many Sigma relays with similar specifications. There were plenty with contacts rated at 7.6VDC, 16VDC, or 22VDC but I need to have one at least 28V rated since it is looking at 24V or a bit more. 

The other issue is the resistance of the coil - which determines how much it drains the voltage on the capacitor in the time delay circuit. The schematic indicates this is a 10K ohm coil, however the relays I am finding on ebay are 1K or 2.5K typically. 

I found a Sigma relay with a slightly different form factor and current rating. This was also a 28VDC coil, 9000 ohms which will activate at 2.4 ma which is below the 24VDC level presented by the closing of relay K4. Thus it will activate and its current draw is only 11% higher than the nominal part. The contact is rated at only 1A but that is well above our maximum draw. 

It doesn't mount the same way, but I can work up a mounting method inside the PS box. I will buy this and verify it works properly when wired into the circuit. 

REMAINING TO TEST

I need to test the motor and its start relay K2, but that has to wait until the PS box is back inside the 2501 card reader cabinet. I feel pretty good about the condition of the PS box and the card reader. Once the time delay relay K3 is replaced I can move on with my testing. 

More on differences between US and European versions of 2501 card reader (model A1/A2) power supply

THE OBVIOUS FIRST

The mains voltage and frequency are different between the two geographies, which leads to the need to change the transformers and some attached components. Due to the magnetic saturation characteristics of the iron core in the transfer, the size and design varies based on frequency, with 50Hz transformers generally larger than their 60Hz counterpart. 

In the US, the mains frequency is 60Hz and the voltages one might encounter are 115V, 208V and 230V. Buildings whose supply is three phase would generally provide 208V as the phase to phase voltage, whereas single phase (residential style) utility connections provide 230V and 115V. 

In Europe, mains are more standardized at 220V but there is an acceptable range above and below, thus the need to adjust for mains voltage as low as 195V and voltages above 220V as well. 

The transformers IBM uses in their mainframes supported machines attached to all of the usual US voltage levels, thus they had taps for 115V, 208V and 230V which were configured during installation to match the building mains voltage. The transformers used in European machines generally had taps for 195V, 220V and 235V instead. 

CONFIGURING TRANSFORMERS DIFFER BASED ON REGION

Given the difference in the transformers installed in the machines between regions, the terminal blocks where the installer would configure the voltage change. Making this even more complicated, the transformers used by IBM might have more than a single multitapped primary winding. In that case, jumpers would connect parts of the two sets of windings so that the net magnetic drive was appropriate for the target voltage. 

Below is a transformer inside the IBM 1130 is wired for 115VAC input, along with the chart that describes the wiring needed to configure for 115, 208 or 220V.

Below this is the European equivalent of the same transformer in the IBM 1130, shown wired for 195V with its chart. 


This explains the wiring diagram for the European version of the 2501 model A2, which used terminals 1 to 4 on PSTB1 terminal block. Unfortunately, the actual connections show that it uses five terminals, similar to the US dual primary winding transformers, and couldn't just implement the chart just above for 115, 208 and 230.

SPECULATIVE WIRING OF US TRANSFORMER TO TERMINAL BLOCK PSTB1

My first guess at the connections of the transformer primary windings to terminals 1 to 5 is below. This matches the US transformer type from the US IBM 1130 and would be consistent with the jumper between terminals 2 and 3. 

In order to validate this guess and make a change to 220V, I will disconnect the terminals and measure resistance to try to verify (or disprove) the wiring concept. I will also look at where the line connections are made to see if that is consistent with my speculation and a 208V setting. 

Power supply out on bench and partially restored so far

DISCONNECTED MOTORWIRING AND ONE REMAINING WIRE

The wiring to the motor was hooked up on a terminal block on the top compartment of the machine (M Terminal Block), allowing me to disconnect the cable there and pull it down to the lower compartment. There was also a wire coming from a relay RY1 inside connected to another wire that delivers 24VDC to the logic gate. They were soldered together and wrapped with electrical tape, so I had to cut the solder joint to free up the wire. 



Cables and wires removed from machine so PS box can be moved

PS BOX REMOVED FROM THE 2501 READER

I  lifted the PS box out of the lower compartment and transported it on my lift table. I then placed it on the workbench to begin checking out components. 





CHECKED VARIOUS COMPONENTS FOR SHORTS AND PROPER VALUES

I began testing different components that might have failed either by shorting or having their values change so drastically that it could cause damage when power is applied. Among the parts I tested were:
  • Diodes used for half-wave rectifiers to produce 24V and 2.5V
  • Large capacitors used for filtering as well as ferro-resonant transformer operation
  • Transformer winding shorts or opens
As is typical with IBM mainframe produces from the 1960s, the parts were high quality and very rarely fail or drift too much. All the capacitors worked to spec. Nothing was shorted or open. 




CLEANING CONTACTS ON RELAYS AND SWITCHES

What does tend to fail as these systems sit unused for decades are contacts on relays and switches, which form a layer of oxidation which is an insulator. Deoxit spray and work with a burnishing tool returns them to good working order. 

I cleaned the contacts on relays K4 and RY1, using a VOM to verify good conductivity and reliable switching. 

Coil connections in green, one set of contacts used in yellow

Although relay K4 is complex, a 4 pole double throw relay, only a single pole and contact are wired in. 

Relay RY1

USING FUSES TO ISOLATE SECTIONS AS I APPLY 240VAC

The power supply employs five fuses, which I can take out to isolate the sections of the circuits they feed. Fuse F1 controls the 2.5VDC that powers the lamp for the photocell that detects cards in the pre-read station. Fuses F2A and F2B feed the primary of the main transformer which generates the 24VDC, 2.5VDC and 6VAC. Fuses F3A and F3B feed the motor power through a line filter and contactor K1. 

The usage meter power supply does not have a fuse in the circuit, so it is always powered as long as the CE Switch is in the normal position. The fuses interact for certain functionality - the 2.5VDC requires fuses F2A, F2B and F1 to all be working. The motor is fed by F3A and F3B but the contactor K1 is activated by the 24V that comes from the power supply, thus fuses F2A and F2B must be working for the motor to work. 

I have a step up transformer at the bench which I used for convenience rather than hooking the PS box up to 240V directly. This cannot handle the load of the motor but is sufficient to test out power supply sections. 



METER SUPPLY WORKING PROPERLY

I switched the connections for the primary to feed the meter power supply transformer for the 240V present in my shop. I will set it back to 208V when it is ready to ship to the system owner whose facility is powered by 208V. 

I validated that the supply produces 41VAC. It will switch on when appropriate logic signals come from the controller in the 1130 - one wire brings +6V for the relay coil and the other is pulled to ground to activate the relay. This feeds the 41VAC out to the usage meter in the top compartment of the 2501. 



POWER SUPPLY SECTIONS WORKING PROPERLY
xxx

NEED TO WORK OUT WIRING OF TRANSFORMER PRIMARY FOR 230 VS 208

There is a discrepancy in the wiring diagram between the European version and the US version. The schematics I have show four terminals that allow selection of 195, 220 or 235 V mains voltage. Relay RY1 is wired across terminals 1 and 4 in the diagram. 



However, the actual wiring of terminal block PSTB1 doesn't match that and doesn't make sense. There is a metal jumper between terminals 2 and 3. RY1 is wired between terminals 1 and 5 in the US version. Thus I can't make changes to convert this to 240V until I can reconcile the differences. 



The transformer is a ferro-resonant type, which uses a capacitor you can see at the bottom of the picture just above to achieve resonance at the mains line frequency. This saturates the core of the transformer, thus variations in input voltage produce almost no swing in output voltages. This is a form of voltage regulation that IBM often uses. 

Multi-tap transformers for US machines use a different scheme to select voltages, usually involving jumpers as well as moving the input wires to specific terminals. Here is a diagram from another transformer in a US machine that shows how jumpers and wiring changes are used:




As you can see, this doesn't match our terminal block either, since there is a jumper between terminals 2 and 3 on our machine but those would be used to supply the input line voltage per the two diagrams above. I thus have to figure out how the actual wiring I see for PSTB1 would map to 208V and then work out how to change it to select 230V. 

NEXT UP IS WORKING ON MOTOR CONTROL CIRCUITS

The motor control circuits involve several relays and a main contactor K1 to switch the power on to the motor. The motor has start windings that depend on a phase shift relative to the main winding to achieve initial rotation, provided by an RC network that is switched out by relay K2 once the motor achieves speed. 

The 2501 card reader will start up the motor when it needs to read or feed cards, using contactor K1. A timer circuit turns off the motor after approximately 15 seconds, unless another feed or read request arrives to reset the timer. Relay K3 is the time delay relay which sends a signal -Motor Hold back to the controller logic. Relay K4 is activated by the -Execute signal when a new read or feed is requested, and acts to reset the timer for K3. 
 
I will have to clean and verify the contacts on relays K1 and K3, having already cleaned up K4. K2 is a sealed unit providing motor startup functionality and should be safe from oxidation. 

K3 at top, K2 at bottom

Saturday, June 7, 2025

Received scan of 2501 card reader logic diagrams and wiring schematics

ASSISTANCE RECEIVED (ONCE AGAIN) FROM A EUROPEAN MUSEUM

A museum that has successfully restored a 2501 as part of an IBM 1130 system did have the diagrams I needed. They kindly scanned them and sent them by email. That is just what I needed to continue with the testing and restoration of the card reader. While the wiring diagrams are for the European versions of the device - 50Hz and 220V - but the differences are fairly minor. The convenience outlet on the 2501 where oscilloscopes or lights could be plugged in are 115V in the US and 220V in Europe, for example. 

INTERESTING DETAILS FROM THE WIRING DIAGRAM

The two main AC legs for 220V are wired directly to the poles of the CE Switch (a DPST switch that disconnects the mains from the rest of the power supply). Thus I only have to remove those two to complete the unhooking of incoming AC to the PS box that I wish to remove and put on the workbench. 

The small relay I saw at the bottom of the PS box, hooked in series with the +24VDC connections out to the logic gate and other machine parts, is used to drop the +24VDC immediately when the 220V mains supply to the transformer primary drops. I assume this blocks any unintended firing of solenoids while the supply capacitor still retains the majority of the 24V. The version of the PS box attached to a 360 model 20 does NOT include this relay. 

Some of the schematics mention a +20V supply, mostly to the different panel switches but also to the hold solenoid that keeps the picker-knives from oscillating unless the other solenoid is activated to overpower it. Since the Field Engineering Theory of Operations manually asserts that the power supply only produces +24VDC, +2.5VDC and 6VAC, I was confused by the mention of this additional voltage level. On close inspection, however, I see that a couple of series resistors drop the +24V down to create the 20V level. 

Thursday, June 5, 2025

Disconnecting wiring to remove power supply box from 2501 card reader

WOULD BE VERY INCONVENIENT TO TEST PS WHILE INSTALLED UNDER READER

The power supply and power control box sits in the bottom cabinet of the 2501 card reader, which would require me to lay down to reach inside to properly test it. Making this even more challenging, as of yet I do not have the wiring diagrams and schematics for the 2501; I am hoping I can find someone with a copy that can send me a scanned image. If not, I will need to reverse engineer the wiring to complete my restoration and testing, which will be vastly easier if I can put the box up on the workbench. 

MULTITUDE OF WIRES BETWEEN THE PS BOX AND VARIOUS OTHER PARTS OF 2501

Some wires come to the PS box and are connected to terminals. Others are wires that enter/exit the box and are connected inside. There is the possibility of labeling the wires going onto terminal blocks so they can be reattached correctly. Wires running directly inside the box must either be disconnected inside the box or at the other end where they connect to the reader mechanism or logic gate. 


Two terminal blocks on the outside are the simplest aspect of disconnecting the box for removal. There is a usage meter power box on the side of the main PS box which has three sets of wiring running into it - for AC, control signals and drive power for the usage meter itself. A cable runs up to the AC motor for the drive mechanism. The incoming AC power that arrives on cables from the IBM 1130 system is fed through a cable clamp inside the PS box. 

The IBM 1130 delivers 115VAC, 208/230VAC, and 7.5VAC into the PS box. Other wires in the power cable from the 1130 run directly to the logic gate to feed it +3, -3 and +6V. The PS box itself will produce 24VDC and 2.5VDC for use within the 2501. In addition, the usage meter box has its own power supply to produce the 41VAC to spin the usage meter. 

TERMINAL BLOCKS 2 AND 3 LABELED AND DISCONNECTED

Terminal block 3 delivers the 2.5VDC generated by the PS box up to a distribution box on the top of the reader where it powers the main lamp used to read holes in the punched card as it moves past photocells. Terminal block 2 connects many control circuits inside the PS box to the rest of the machine. 


The 24VDC supply is controlled by a relay inside the box before it is passed along to control the various solenoids for picking and feeding cards. The wires from the relay pop out alongside TB2 and run to the logic gate. 
relay controlling 24VDC

IBM laces their cables very carefully so that the wires for each screw on a terminal block are easy to distinguish as they fall naturally right at the point where they should be connected. 


USAGE METER PS CONNECTIONS UNHOOKED

Two thin yellow wires bring the control signals to the usage meter, driving it to accumulate usage hours when the reader and/or the IBM 1130 are busy. They were connected to a terminal block inside the meter compartment on the side of the PS box. Another pair of wires (red and black) attached to the terminal block runs from the meter box up to the top of the 2501 to connect to the usage meter. 


Lastly, some 208/220VAC wires from the PS box run into the meter compartment and hook to a second terminal block feeding the transformer primary. I unhooked and labeled the logic and usage meter wires, but left the AC connections attached. The meter compartment was unattached from the PS box but will be brought to the workbench along with the PS box. 

AC INPUT WIRING BEING DISCONNECTED

The 115VAC wiring - not, neutral and ground - run directly to a convenience outlet but nowhere else in the machine. I removed the convenience outlet from the PS box and labeled the wires that had been attached to it. 
Plastic box housing convenience outlet

The 208/220VAC consists of two hot wires that are connected within the PS box somewhere behind the four large screw-in fuses. They must also run to the contactor, circuit breaker and cable up to the main reader drive motor. I have yet to find and disconnect these. 

rubber sleeves over terminals on fuse holders

MOTOR POWER WIRING MUST BE DISCONNECTED AS LAST STEP

Until I look more closely, I don't know if this wiring must be removed inside the PS box or up at the motor on the top compartment of the 2501, but it will need to be disconnected before the PS box is fully independent allowing it to be removed from the 2501. 

Motor wiring, 2.5VAC wiring and other signals go up

TERMINAL BLOCK 1 INSIDE PS BOX ROUTES AC TO VARIOUS COMPONENTS

There is a terminal block inside the PS which interconnects various relays, power supplies, transformers, fuses etc. This will require reverse engineering if I can't find a copy of the IBM diagrams and schematics. 



Sunday, June 1, 2025

Cleaning up the acrylic cover for the 1053 console printer and identifying another issue

COVER FOR 1053

The cover over the IBM Selectric typewriter mechanism that is the console printer for the 1130 computer has an acrylic cover on the lid, minimizing noise for the operator while allowing a view of the ball, paper and printed output. This acrylic piece had been snapped into two parts prior to my receiving the machine for restoration. Either someone tried to remove the cover but didn't know the proper way or it was struck by some heavy object. 

CLEANING UP THE BLUE TAPE LEFT OVER AFTER REGLUEING THE PARTS

I carefully scraped away as much blue tape from the glue joint edges as I could so that the cover was colorless rather than tinted with blue bits. It was a tedious process but is almost fully done.

ANOTHER PIECE OF THE COVER DISCOVERED TO BE MISSING

The way that the cover is placed on the 1053 is to slide it backwards on the lid so that tabs on the underneath sides of the cover push back on springy projections, then letting the spring push the cover forward to hold it in the lid opening. 

We can see in the picture above the tab on the underside of the cover that hooks onto the springy projection for left side of the typewriter. It is a sort of triangular shaped ramp under which the projections fit. The projections on both sides are below.



These projections bend backwards as you can see, so that as the cover is pulled to the front of the lid it bends the springs. The cover can be dropped down so that its rear fits into the opening of the lid, then the spring force pushes it rearward in place. 

However, in the picture below look at the right side underneath the cover, where the triangular sort of tab was snapped off. This piece was not provided to me, thus I will have to make a bit and glue it on to restore the functionality.

Site of missing tab within red circle