Tuesday, February 1, 2022

Think I found the cause of the flaky Load function on the IBM 1130 console

LOAD MODE USE FOR HAND ENTRY AND DEBUGGING

The 1130 console has a rotary Mode switch that supports modes such as RUN, various single stepping methods, and a means of displaying and loading core memory. When the switch is turned to Load position, the console entry switches, 16 toggle switches on the front of the console printer, form the contents of the Storage Buffer Register. 

If the Start button is pressed, the machine takes a memory cycle to store that SBR value into the memory location pointed to by the Instruction Address Register (IAR). Using the CES to put an address in the SBR allows pushing the Load IAR button to change the IAR to the value from the SBR. Thus to load a value XXXX into core memory address AAAA, you would turn Mode to Load, enter AAAA in the CES and push Load IAR, then enter XXXX into the CES and push start. 

When you turn the mode switch to Display, each press of the Start button causes the contents of the memory at the address in the IAR to be read and displayed in the SBR. The IAR is incremented to the next word, thus repeated Start presses will display a sequential range of memory locations. 

I was running tests on some instructions by picking a location in memory, entering the instructions and data into a series of words, loading the IAR back to the start location and then pushing Start with the mode switch either in Run mode or one of the single stepping methods. 

ERRATIC FAILURES I EXPERIENCED

During several sessions where I was hand entering code and testing it, I found that the Load IAR and Load mode stopped working. Further, the CES switches did NOT show up in the SBR even though the mode switch was in Load mode. This would go away sometimes either by pushing the Reset button or after a power cycle. It limited the amount of hand testing I could do because of the eventual loss of Load mode capability. 

MODIFICATION I INTRODUCED FOR USE BY MY FPGA EXTENDER BOX

To set the stage for the discovery I made about the part of the machine causing these problem, I have to describe some modifications I made that go above and beyond the signals carried by the Storage Access Channel (SAC) which is connected to my FPGA extender box. 

SAC lets me pretend to be almost any peripheral device, load or dump memory, trigger interrupts and other actions that give me great control over the 1130. However, it did not allow me control over interrupt levels 0 and 1, only the lower priority levels 2 through 5. Some peripherals were designed to use those missing levels, so I added in support for the levels via an additional cable I added to the CPU.

I also added a relay board inside the 1130 which is controlled over that additional cable. These relays let me push various buttons virtually - among them Start, Imm Stop and Check Reset. This is important because the Program Load process is only hardwired into one device, the physical 1442 reader I own. However, I may want virtual peripherals to provide the same function, such as when I use a virtual 1442 or 2501 reader instead of the physical reader. 

A Program Load causes a reader to read one card, with the CPU loading the 80 columns into core memory locations x0000 to x0049 (that is the lowest 80 locations). It manipulates the 12 rows of the column to set 13 of the 16 bits of each word, the remainder left at 0. At the end of the 80th column, it resets the IAR to 0000 and begins execution based on the mode switch, usually Run mode. 

My extender box will use Cycle Steal (a form of Direct Memory Access - DMA) to load the eighty words, then send a value of 0000 and push Immediate Stop and Reset, finally pushing Start to run the code just virtually read from the peripheral. Thus I had to control various buttons and modes over my additional cable.

TAPPING MODIFICATION BOARD CAUSES/FIXES LOAD ISSUE

The relay board sits under the console table to the right of the keyboard. When I swung open the console table and tapped lightly on the relay board, I saw the CES entry flicker off and on and the Load functionality appear or disappear. This gives me an immediate means of recovering when the Load goes away, by tapping on the board. 

EXPECTATION AND RESOLUTION PLAN

I suspect that it is the unterminated inputs from the additional cable connector, since I don't have it hooked up yet, that is randomly firing the relays to cause the problem. I will look more closely at the design and decide on where to put weak pull up/down resistors to block such extraneous activation. 

I don't see a direct fingerprint of how this causes the symptoms since I can still push Prog Start and execute instructions, with the IAR advancing, but don't have load working correctly. It may be that there are other wires adjacent to the relay board that are disturbed by my mild tapping, even if that doesn't really reflect the observations.

It could be a different problem but in any case it exists in the modification area and not in the core of the 1130. A fault in 1130 logic would mean potential fixes to the SLT logic cards, whereas my modification uses readily available modern components. 

No comments:

Post a Comment