Monday, February 7, 2022

Finished placement of all components and beginning hand routing of traces

 PLACED ALL COMPONENTS WITH ROUTING AND ACCESS IN MIND

I organized the components around the board so that the routes would be as direct as possible. For example, the output driving circuits use 74LS06 chips with six open collector outputs. I arranged the screw terminals for those around each chip in the proper order so that the paths would not cross. I also arranged the six resistors and the transistor for each input receiver circuit where traces would be direct and not need to cross.

The larger routing work will be to take the signals from each of the receiver and driver circuits and route it to the twin 64 pin connectors that mount the FPGA board. I arranged the receiver circuits in approximately the sequence of the pins on the connector which hosted the inputs. Similary I put the seven buffer chips in the order where their inputs will come from the other 64 pin header that hosts the outputs. 

I also considered the wire routes for all more than 80 signal wires that run from the SAC cable connector to the various screw terminals. I oriented the terminals to face the path of the wiring and left room to get wires in and out for service. 



HAND ROUTING OF EASY TRACES UNDERWAY

I began to draw traces between the components of each of the 36 receiver circuits as well as the LED driver circuits and the path from the driver circuit buffer chips to the screw terminals. I will let the system route the ground, 5V, 3.3V and 3V power lines. Too, I will let the KiCAD system work out the trace routes from the twin 64 pin connectors to all the circuits. 

SNAPSHOT OF THE SCHEMATIC



Sunday, February 6, 2022

I like KiCAD very much; great experience switching over and building my 1130 extender box PCB

LEARNING CURVE EASED BY VERY INTUITIVE AND LOGICAL SOFTWARE

I was surprised by how quickly I was able to pick up the proper commands and tools to accomplish everything I wanted. Instead of the days of google searches and stumbling around that I anticipated, the process was smooth and rapid.

TEXT BASED FILES PERMIT PROGRAMMATIC ALTERATIONS TO SPEED CHANGES

I was delighted to discover that KiCAD stores the schematics and other files in plain text, allowing me to make bulk changes. For example, almost 100 terminals are in the design but the KiCAD standard library didn't have the proper layout to place these on the circuit board. 

After I designed the layout for the screw terminal part I ordered, I had to switch all the terminals in the schematic. Using the GUI, it takes multiple clicks and mouse movements to change on terminal to the new layout. Modifying the text file allowed me to switch all of them in just a couple of minutes.  

SCHEMATIC COMPLETED, LAYOUTS CREATED FOR PARTS, BEGINNING PLACEMENT

I have finished the schematic completely, with all the missing parts layouts built, I was ready to transfer the schematic over to the PCB layout tool. I set up the board as 13.5" x 9", able to fit in the 14 3/8 x 9 1/2" section of the case I bought. 

The first parts I put in place were the header rails for the FPGA board, so that it can be plugged in when the PCB is finished. I then installed the ATX power supply connect and another connector for the 24VAC that the 1130 furnishes to sequence power on all the attached boxes. Finally I put on the linear voltage regulator that will convert the 5V from the PC power supply down to 3.0V since that is the high rail for SLT (Solid Logic Technology) systems like the 1130 and the S/360. 

Saturday, February 5, 2022

Working on schematic for new PCB for the 1130 extender box; investing time to learn KiCad; sourcing parts

TAKING ON LEARNING CURVE FOR KiCAD

I have used a variety of PCB design tools in the past but have had friends who get great results using the open source KiCAD toolkit. In the past, my designs were small enough that I didn't want to spend the time it would take to learn an entirely new product and all its idiosyncrasies. I had painfully learned over the years how to force the software like Designspark to do what I wanted and how to recover from the peculiarities of each product.

This project is going to take long enough to finish that I can afford the extra delay introduced by switching over to KiCAD, so that is what I have done. At least as far as the schematic side of the product, I am impressed and find it more intuitive and less quirky that past tools. I am hoping that the PCB side is equally favorable, although I will be happy if I at least achieve the same results as I know I could have attained with my old toolbag. 

SCHEMATIC ROUGHLY HALF DONE

The schematic has to deal with 40 driver and 36 receiver circuits that talk to the IBM 1130 CPU over the Storage Access Channel. In addition, there are many circuits for my extensions to SAC, the SPI links and expansion I/O pins I might use to expand the box or attach some real peripherals. 

As an example of the latter, I might build an interface to attach a Documation card reader, making it appear to be an IBM 2501 reader as far as the 1130 system is concerned. I also have paper tape and plotter hardware that I can connect. 

The schematic also includes the power sources and regulation, the LED display drivers and power sequencing connections from the 1130. Since a receive circuit consists of seven resistors and a transistor, the parts count just for the 36 receive channels is 288 components. I will mostly use surface mount parts to keep the space requirements low. 

The secret sauce here is the FPGA board, of course, as the vast majority of the circuitry for this extender box is implemented in VHDL or with the support chips on that Ztex FPGA board. My schematic only has to get the signals to the connector where the FPGA board plugs in. 

SOURCING (AND SUBSTITUTING) PARTS

My receiver circuits used a BSV52 switching transistor but that is now obsolete and difficult to find. I had to switch to an MMB2369 to put on the board. I have been adding parts to a Digikey shopping cart and soon will fire off the order. 

Friday, February 4, 2022

Verified correct typing of all 88 characters on the type ball of the 1053; design decisions and study for the FPGA box rebuild

QUICK AND DIRTY METHOD TO TRIGGER ALL VALID CODES TO THE 1053

I set up my new power supply to output 48V and fed it to the typewriter through its power SMS paddle card. The solenoids get grounded by the CPU to complete the circuit and activate a function. I had a spare SMS card socket which I wired to a breadboard. 

Setup to select characters on 1053 typewriter

By plugging in jumpers between the seven solenoids and a common strip, I can briefly connect that strip to ground to type a selected character. I had prepared a comprehensive table of all the characters on the typeball, which involves selected one of four tilt levels and a rotation from +5 to -5 positions including 0 (home) in the center. 

This gives 44 selectable characters on the hemisphere. If you 'shift' the machine it rotates the typeball 180 degrees, exposing the other side for a second set of 44 selectable characters. The combination of shift, tilt and rotate chooses any of the 88 characters on the typeball. 

SPOTTED SECOND SPRING IN CARRIER BUT TAB STILL NONFUNCTIONAL

Armed with the pictures from the typewriter repair videos I watched, I was able to spot the small second spring sitting in the escapement area of the carrier. The typewriter has a rack with teeth that defines the character positions across a line. Pawls engage with the rack to hold the carrier in place during normal operation. 

Other pawls force the carrier in reverse for backspace operations, or click over to the next tooth on the right for space operations. A latch should hold the pawls away for a tab operation, being reset when the little pin is set in a position for a tab stop, by forcing the mechanism back to release the tab latch.

My issue is that the tab is not latching and I can see a lever flopping around down deep in that section. It should be connected to the small spring, but perhaps the far end is loose. Visibility is quite limited so that I still don't know exactly what is wrong. 

This lack of latching also causes some problems sporadically for both carrier return and normal spacing, where the carrier sticks or rubs because of that loose latch. This can jam the carrier at a specific position and block spacing, or more commonly it causes drag that almost stops the carrier from returning. 

SOME FUNCTIONS WORK WELL UNDER SOLENOID COMMAND

The Space, Line Feed and Backspace solenoids were activated under power and worked just as expected. This confirms the mechanisms are set up properly as they do as intended both under power and with manual hand cycling. 

Shifting between 'upper' and 'lower' case hemispheres of the typeball works great under power. Similarly, shift to Black and shift to Red work under power. I did notice that the ribbon lift mechanism needs a bit of adjustment as it isn't solidly in the red portion of the ribbon when shifted that way. This is a simple adjustment I can do later. 

FAILING FUNCTIONS

On the other hand, the Tab solenoid does absolutely nothing. I expected this as I had found that I couldn't trip it manually by pulling on the linkage from the solenoid. Whether this is related to the other tab problems or a separate fault is yet to be determined. 

The other function that doesn't work well as CR-LF, a combination of carrier return and line feed, as the sticking tab latch makes the carrier drag along the escapement rack instead of zipping to the left. Under manual cycling it works just fine, but not under power.

CASE SELECTED FOR THE REBUILT 1130 EXTENDER BOX

I found a case that was reclaimed from some RF gear and seems ideal for my purposes. It doesn't look like a PC and is not very strongly tied to a particular period of time. It is ordered and my design is underway to fit inside that shape.


DESIGN DECISIONS MADE

I will create one large PCB to implement all the logic spread across multiple boards and discrete components in the current unsatisfactory implementation. The existing box has four small PCBs that hold 12 receiver circuits each, for signals coming in from the 1130 CPU. It has two perf boards with seven driver chips to send 42 signals outbound to the 1130. There is a FPGA board that was cabeled to all of this. A PC power supply gives us 3.3V and 5V, then a regulator circuit produces 3V for the SLT logic levels. Finally there were several cables entering the box. 

The old method required cabling between all the boards, a mess of wiring inside. The boards weren't mounted solidly, instead they were separated by chunks of foam. Having a single board will slash the amount of wiring. It can be firmly mounted with standoffs and screws to the case. 

The mess that is the old implementation

The case will fit a micro-ATX size PC power supply, which I will plug into the board I am designing. That board will have the relay to switch on the power supply when the 1130 starts up, also the 3V regulator and connectors to drive the four LEDs that come on the case, with some status that makes sense as I finalize the design.

Closeup of the 160 pin signal connector

The wires from the 160 pin signal connector will attach to screw terminals on my PCB. The FPGA will mount on header strips installed on my PCB. In addition to the connector carrying signals to the 1130, there are additional signals on a second cable I created to expand this beyond the IBM Storage Access Channel function. That expansion adds interrupt levels 0 and 1 as well as the Program Load sequencer trigger signal. 

There are two SPI links implemented on the FPGA which can connect to expansion hardware to drive real peripherals such as paper tape and plotter devices. I will provide connectors for them on the PCB. Finally, I will provide a header strip for all the unused signal pins on the FPGA to support any future features I want to add. 

The FPGA has a mini USB connector that provides the USB Serial link to the PC that provides the graphical interface and stores the files connected to the virtual peripherals. Rather than feeding a cable through a hole, I will find an extender to provide a USB connector on the outside of the case. 

VHDL CODE CLEANUP FOR THE FPGA

I am working through the FPGA code to clean up minor issues, but I don't want to touch anything that is functional until I have the rebuilt system working exactly like the old one. 

ADDED WASHER TO REDUCE PICKER PLAY ON THE DOCUMATION M600 CARD READER

My M600 reader had a picker arm which had excessive play vertically, allowing the picker foot to jump up and down. This caused scoring of the aluminum under the foot, forced a wider gap that lessened the vacuum applied to pick cards, and led to more misfeeds compared to the properly adjusted M1000 reader. 

I measured carefully, bought a washer to add the necessary thickness, and reassembled it. The arm will now move more normally. Once I reassemble everything, I hope to adjust it to deliver solid reliable reading for years to come. 

Washer in place, snap ring reinstalled.

Wednesday, February 2, 2022

Planning to rebuild the 1130 Extender Box

ABOUT THE 1130 EXTENDER BOX

The IBM 1130 had a feature called Storage Access Channel that allowed peripheral expandability. In most cases, it was connected to a large external chassis, the 1133 Multiplexor, which in turn could support a wide range of peripherals such as 1403 printers, 2310 and 2314 disk drives, even tape drives. It did this by remoting all the signals necessary for a peripheral controller to interface with the CPU.

It had signals to detect when an I/O instruction was executed, to see the addresses and values in key registers, to request and service interrupts, to access core memory via Cycle Stealing, the name IBM used for Direct Memory Access (DMA) back in the early 1960s, and others that were necessary for controller functionality. 

It provided this over a 160 pin cable that similar to the connectors for other peripherals or the IBM Bus and Tag channels of S/360. In addition to the signal cable, there was a standard power connector that brought AC, DC, Lamp Test and power sequencing signals to the attached box from the 1131 Processor. 

I developed a set of interface circuits to bridge between the 1130's SLT logic family (3V signals but not LVCMOS) and modern devices so that I could hook up an FPGA. The FPGA implemented every peripheral that could be attached to an 1130, by responding to the XIO instruction and behaving exactly as the real device would. 

These virtual devices were fed data from a Python program running on a PC, communicating with the FPGA over USB serial. My box implemented additional disk drives, 1132 and 1403 printers, 1442 and 2501 card readers, 1134 and 1055 paper tape devices, a 1627 plotter, and a shadow 1053 console printer to see what was being typed.

Since the box could perform cycle stealing, thus reading and writing to core memory in any location, I also used it to load and dump memory to files on the PC. This is very handy to inject large blocks of code into the machine, rather than toggling the CES switches and using load mode laboriously at the console. 

I had a switch to disable the attached physical 1132 printer, since the 1131 Processor had built in controllers for 1442, 1132, 1053 and keyboard. If I wanted to print to a virtual 1132, I blocked the controller for the real box from seeing its IO address during an XIO, a very simple modification done with a toggle switch mounted under the covers near the CE switch panel. 

PROTOTYPE-LIKE CONSTRUCTION IS UNSATISFACTORY

I did whip this up for my own purposes but completed it rapidly to take the 1130 system to exhibit at a Vintage Computer Festival West conference a number of years ago. As a result, this was more of a sloppy prototype than a solidly constructed box. I took an old PC case, hollowed it out and installed the  extender box.

It consisted of four PCBs with the SLT to TTL conversion circuits, two proto boards mounting seven open collector chips to replace my driver circuits, the FPGA board itself with connectors attached, power supply and powering sequencing relay, the connectors running to the 1131 Processor, and lots of foam rubber wedged between cards to hold them in the air without shorting to each other. In other words, not an elegant implementation, difficult to maintain, and not very suitable for transportation. Finally, having something that looks like a PC sitting near a 1960s mainframe is poor esthetics. 

IMPROVING MOUNTING

One requirement is that I have all the boards and connections firmly mounted to whatever case they will reside in. That may be via connectors to a new wide motherboard, or by redesign of everything on a single new PCB. 

IMPROVING CONNECTIONS

Some wires are soldered to header pins, others are clamped in ribbon cable connectors. It does not permit disconnection to service individual boards nor is it safe to move wires around. I want to implement this with reliable and secure connectors. 

CHOOSING ESTHETICS FOR THE CASE

The form factor and appearance of the box should be more consistent with the 1130 system. I have to find or build a case that meets this requirement. 

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. 

Working on 1053 printer, making progress

 REMAINING ISSUE WITH 1053 CONSOLE PRINTER OF 1130 SYSTEM IS TAB

The Tab button won't consistently fire off a tab cycle. The solenoid to tug down and fire off a tab cycle doesn't work. When a tab is triggered it doesn't lock and slide up to a set position instead stopping immediately.

MAY BE A MISSING SPRING BUT HARD TO FIND ITS LOCATION

I see on the parts catalog and on the diagrams in the various maintenance manuals for the 1053 a spring attached to the 'tab latch' on the carrier. Unfortunately, all of these diagrams show a spring with the other end floating in space. I don't know where it attaches because of this omission. 

I also detected some gummed lubricant on the plate with an oval hole such that it didn't slide easily. This oval hole is used so that the tab latch keeps engaged until the carrier bumps into a set tab stop pin. The pin forces the latch and the plate to the back, which lets the latch pop off and stop the tab movement. 

If the plate doesn't move freely we can have the carrier jam when it strikes a set tab position, as well as failing to release the latch. I worked some clock oil into the pivot and exercised the plate to get it sliding freely. 

INCONSISTENT TAB CYCLE IS A DIFFERENT ISSUE

There is something inside the mechanism around the clutch on the operational shaft which fires off a tab cycle. There is an arm that should pop forward normally but be pushed back by the tab button to trigger the clutch. The linkage arm from the solenoid below will also push the tab arm back to fire off a cycle. 

This mechanism is a set of arms, pivots and springs, well hidden inside a mass of other gear such as the coil spring that powers the carrier return movement, but also a motor start capacitor and all the pivots for the other functions. The bottom is blocked by the solenoid assembly. This all makes visibility quite difficult.

I first need to spot what is amiss before I could possibly correct it. I may have to partially disassemble the items blocking my view and access, which could force me to readjust parts of the machine. 

TESTED SELECTION OF ALL CHARACTERS ON TYPE BALL WITH HAND CYCLING

I built a document with the patterns of the seven solenoids to select each of the 44 character positions on a hemisphere of the typeball. We have two tilt solenoids, four rotate solenoids and one aux solenoid where some pattern of those being engaged will cause the ball to tilt to a band and rotate to a position for typing. Aux is only selected for one character position, where it stays at the default tilt and doesn't rotate (home position). Otherwise, characters are chosen with a pattern of the remaining six solenoids.

I worked through all the characters and verified that the ball moved to the correct rotation and tilt. I also verified that the shift to upper and shift to lower solenoids caused the typeball to rotate 180 degrees to reach the second hemisphere. I could test those shift solenoids under power and was satisfied with their operation. The character selections were still done under hand cycling because my 48V power supply won't arrive for a couple more days, which is required to fire off a character under motor power. 

I also verified that the shift to black and shift to red solenoids change the tension of the tape that chooses whether the upper half or lower half of the ribbon is placed in front of the character being typed.