Tuesday, August 22, 2023

Quick feasibility investigation for emulating all devices on an 1130 for machines without the Storage Access Channel feature

THE PERIPHERALS CHALLENGE FACING MOST 1130 OWNERS

Most of the surviving 1130 systems, either in museums or private collector hands, do not have sufficient working peripherals to demonstrate the system adequately. Many did not have the input-output devices saved or they are very difficult to restore to operation. 

In order to show the machine in typical operation, we would want to have the internal disk drive, a card reader and a line printer operational. The demonstrator puts a boot card in the reader, loads DMS2 monitor from the disk cartridge and that prints a startup page on the printer. At this point, decks of cards can be read into the monitor and any output from the programs will print. 

While one can switch to the console to type in card images to fire up previously stored programs on disk and those programs might only write to the console typewriter, it is not feasible with DMS2 as it is written to get to that point without a reader and a line printer.

One can image a demonstration environment where the user types virtual cards into files on a support PC, has them read through a virtual card reader and any printed output from the 1130 is captured by a virtual line printer as another file. Systems that have a working internal disk drive but nothing else would be usefully demonstrated in this case.

Even more so, full emulation would allow a machine that did not have a working disk drive or other peripherals to boot up and run jobs, using virtual peripherals and files on the support PC. My own IBM 1130 is a mixed situation. I have a working 1132 line printer and working internal disk drive, thus with some work manually entering the boot card image to memory I can fire up DMS2 to the point of the start page printing. 

My 1442 card reader is not currently working, so that I can't do much more. I believe I could hack the DMS2 image to have it request card input from the console keyboard, allowing me to fire up previously loaded programs as long as they didn't need the card reader. 

I designed, built and installed an FPGA based box that connects to the IBM 1130 and implements virtual peripherals, such as additional 2310 cartridge disk drives, 1442 or 2501 card readers, 1132 or 1403 line printers and the 1053 console typewriter/keyboard. It attaches via a feature on the IBM 1130 that presents a large connector on the 1130 for a cable that would be hooked to other devices including the 1133 Multiplexor box that supports devices like the 1403 printer and 2310 disk drive. 

MY PREVIOUSLY BUILT EMULATOR DEPENDED UPON THE SAC FEATURE

IBM provided a set of signals on the Storage Access Channel feature that allows an external box, including their own 1133, to become device controllers for additional peripherals. It has the ability to send data in and out of the 1130, intercept the XIO instruction that controls peripherals, trigger interrupts and drive cycle stealing to access memory on behalf of the peripheral.

IBM attached devices through SAC such as the 1403 printer, 2310 disk drive, 2250 graphics workstation, 2420 tape drives, and others. Larger installations used the SAC to make use of these peripherals; my first experience with an 1130 at Florida Institute of Technology had a 1403 and two 2310 drives attached through an 1133. 

An 1130 itself can have device controllers for the 1132 printer, 1442 card reader, 2501 card reader, 1627 plotter, internal disk drive, 1053 console typewriter/keyboard, 1054/1055/1134 paper tape devices, the 12xx optical mark reader and the SCA communications adapter, but each is installed only if that peripheral were ordered with that 1130 machine. 

The SAC signals allow peripherals that make use of interrupt levels 2 through 5, but not levels 0 and 1. Those are used by the 1132 printer, the 1442 card reader/punch and the SCA, thus one cannot emulate these devices using the SAC connector. I therefore expanded the SAC with a second small cable that added signals for those two interrupt levels plus a signal to trigger a sequencer I also built to 'push' the three buttons needed for a boot - IMM STOP, RESET, and PROG LOAD. 

I am willing to share the design so that any owner of an 1130 that has the SAC feature can build my box and emulate any device on the 1130. One has to disable the internal controller for devices if emulating a device whose controller logic is installed in the 1130. In my case, to emulate 1442, 1132 or 1053, for example, I had to disable their logic in my machine to that did not try to respond to the XIO for the emulated devices. I did this manually. 

FINDING SIGNAL AVAILABILITY ON NON-SAC MACHINES

The SAC feature not only provides the connector, it implements line drivers to send the signals the relatively long distances over a cable and adds some logic that is not in the standard 1130 to handle some special cases needed by the 1133 and 2250 boxes. Thus I had believed it was not practical to emulate on non-SAC machines because of all the additional logic that was added.

It came to me, however, that I could capture signals with local PCBs I attached inside the covers of the 1130 and thus not need all of IBM's line drivers. The question was whether all the signalsspo needed for SAC were available on backplane pins of a machine that did not have SAC installed. I began to investigate.

I quickly found spots to pick up or inject almost all the signals. Injected a signal with IBM's SLT logic technology is easy - you find a line that is active when low and then just add a modern open collector logic gate to pull it to ground when you want it active. 

The nature of SLT circuitry is that this is perfectly fine to add and has no impact on the gates that are 'driving' the line high, since in reality the receiving gate has a weak pullup and the drivers only pull to ground or are inactive. 

There was a signal that was manufactured by a combinatorial logic circuit in the SAC version of the 1130 but not in the standard machine. This turned out to be a 5 way OR of signals which were available on the backplane pins, so I only needed to grab those five to produce the missing signal. 

A few inputs to the 1130 on the SAC commanded actions to stall the cycle steal clock, present data earlier in the cycle steal protocol than normal, to gate incoming data onto the CPU B bus, and to keep the CPU meter running while a mechanical peripheral was still physically active. None of these were needed to control when incoming data was put on B, as I could control that in my box through timing of asserting the incoming data lines. My emulated peripherals would not need to stall the cycle steal clock nor to enter data early, so those lines were moot. Finally, I don't care about running the CPU meter as I am not collecting hourly fees from renters of the 1130. Thus I didn't need any of these signals. 

On my system, I manually switched when disabling the internal device controller logic whenever I was emulating a peripheral that was configured into my machine. However, as I worked on the non-SAC version I realized that I could add a few more signal lines so that my box could disable the controller logic for any emulated device electronically. 

DETERMINATION - IT IS FEASIBLE TO MAKE SUCH AN EMULATOR

I carefully checked the locations against multiple sets of ALDs I had collected from various machines and am confident that this will work. It would require a small PCB located near four compartments on the two swing out logic gates of the 1130 - A gate compartment C1 plus on B gate all three compartments A1, B1 and C1. These small board would have wire-wrap connections from the compartment backplane and a connector taking the signals to the FPGA board mounted elsewhere inside the 1130. 

Essentially I would modify the FPGA logic I used in my SAC based emulator, which wouldn't be a huge job. The PC based application that communicates with the FPGA is attached via USB thus the 1130 would simply have a USB connector into which the laptop gets plugged to control the emulator. 

PROJECT MUST WAIT FOR CURRENT RESTORATION TO FINISH

I have an IBM 1130 I am restoring for the System Source Museum and it is already delayed while I finish the Virtual 2315 Cartridge Facility I developed. This has been bogged down in toolchain issues for too long already. I won't take on any additional project until I have the machine fully operational and ready for pickup by that museum. 

This will be very handy for owners of 1130 systems so that I will probably start on it after finishing the current 1130 restoration. 


No comments:

Post a Comment