Tuesday, April 23, 2024

Spent a few days working on a new memory loader for 1130 systems where Arduino uses DMA to core

EXISTING CONSOLE LOADER IS JUST TOO SLOW

The console loader device that I created and have installed on several 1130 systems simply automates the process of flipping the switches and pushing the buttons to enter each word into memory. Due to the speed limitations of the pushbutton debouncers in the 1130, the loader can take almost an hour to enter 4K words of memory. 

Since most 1130 systems are 8K or larger, some as big as 32K in size, loading core with this device is painfully slow. Yet, museums that have an 1130 without all the peripherals needed to run DMS2 have to use the loader in order to run demonstrations. 

1130 CYCLE STEAL IS ANOTHER NAME FOR DMA - DIRECT MEMORY ACCESS

The 1130 system has a capability that IBM calls cycle stealing, which is used by faster peripherals to access memory directly. It is very similar in concept to direct memory access (DMA) for microprocessor based systems. Instead of requiring the program in the CPU to read or write each word explicitly, the device is given a start address and amount of data to transfer, which it then does without further CPU involvement. 

The 1130 is based on core memory accesses, which take 8 clock steps to complete, the first half reading the contents of memory by erasing it and the second four clock steps used to rewrite (or change) the value in the memory location. Each instruction requires one or more memory access cycles to be fetched from memory, the effective address computed, and then up to three more memory access cycles to execute that instruction. 

Cycle stealing will pause the CPU between memory accesses, even in the middle of fetching or executing an instruction, so that the peripheral device can do a memory access. CPU memory accesses use the T clock, stepping through stages T0 to T7 for each memory access. Cycle steal holds the T clock at T7 and instead steps the X clock through its stages X0 to X7. The program has no way of detecting that it has been delayed by these interspersed memory access cycles, other than an elongation of the time to run the program compared to running with no cycle steal occurring. 

The disk drive is an example of a peripheral that is fast enough to use cycle steal, so that an entire sector of 321 words can be read by issuing a single (XIO) instruction. The disk controller than requests cycle stealing as each word is read from the disk or written the disk, until the entire sector is complete. 

IDENTIFIED SIGNALS I SHOULD BE ABLE TO USE TO TRIGGER A CYCLE STEAL

I looked over the 1130 logic diagrams and found a method that I can use to trigger a cycle steal. To simplify the design, I won't do this while instructions are executing, instead requiring that the 1130 be stopped before the cycle steal will write a word to memory. 

A cycle steal occurs in 3.6 microseconds (or 2.2 on the faster models of the 1130), so that the entire 8K of a typical machine could be accessed in under .03 seconds. Even with overhead of transmitting each word from a terminal over a 9600 baud serial link, this will complete in a satisfyingly short time. 

BUILT STATE MACHINE TO INTERACT WITH ARDUINO AND THE 1130 SYSTEM

I devised a state machine that will step the 1130 through a cycle steal as well as interact with an Arduino that is accepting the data file over the serial link from a terminal. I chose to match the current file format used by the very slow console loader, as that still offers many benefits such as interoperability with 1130 simulator environments. 

Taking a command line from the terminal, the Arduino emits the address and data value to be stored in memory, then raises a request line. If the CPU is in the stopped state, I raise the request for a cycle steal on the highest priority channel, zero. I pass the address and data values to the 1130. When the cycle steal takes place and we reach stage X6 of the access, the request is dropped as well as the address and data lines. The state machine emits a flag that our access is done, at which point we wait for the Arduino to drop the request line to finish the process. This is then repeated for each word to be transferred to core memory. 

CURRENT DESIGN USES SURFACE MOUNT ICS ON AN ARDUINO MEGA 2560 SHIELD

I have the design ready in KiCAD but before I purchase the components and send the files out to have the PCB manufactured, I will do some testing to confirm that this will work as expected. It will be about a week or two from when I kick off the board manufacturing until I have the final unit assembled. 

The Arduino with its shield will be mounted inside the 1130 near the B logic gate. I will use wire wrap to hook it into the signal lines in the 1130. A few mechanical mounting details remain to design, but I do know all the pins I need to connect with in order to make the process work. 

SIMULATING THE LOGIC FIRST USING CIRCUITLAB

I have set up the logic for the device in Circuitlab, an online simulator site that I use. I am verifying that the state machine and the output logic works as I intend. Once it appears solid in the simulation, I will move on to testing with real chips and the 1130. 

NEXT STEP WILL BE BREADBOARD TESTING BEFORE PRODUCING THE PCB

I can use my breadboard and related tools to build the circuit with full size DIP chips, first putting it through its paces with the tools and monitoring it with logic analyzers and a scope. When that is satisfactory, I will temporarily connect it to an 1130 and test whether it does write to memory properly. 

Saturday, April 20, 2024

Back from trip and visitors, worked on relays, regulator and a 1053

END OF TRIP A BIT MORE THAN I HAD EXPECTED

After I attended the Vintage Computer Festival East and stopped off at the System Source Museum in Maryland, I drove to Virginia to board the Amtrak Autotrain which would transport my car and me back to Florida overnight, retracing the route I took to come up to New Jersey for the event.

I handed my car over a bit after noon, checked in and was waiting to board the train at 3:30. I had a bedroom where I would receive my meal and then sleep until arrival the next morning at 10AM. I paid for Priority Unloading, which would ensure that my car was one of the first sixty (of hundreds) of automobiles to be unloaded in Florida the next day. 

However, at 3:06 they announced that two freight trains had crashed in Georgia, blocking the main rail line, thus the Autotrain was cancelled for the day. I was able to get a refund and planned now to drive halfway home this afternoon and evening, stay at a hotel I booked in South Carolina, and finish the trip the next day. All I had to do was wait for the my car to be offloaded.

Apparently they have never had to unload cars from a cancelled train, although they have operated this daily since 1984. I won't give all the details of watching a large group of contractors stand idly for three hours while managers and others argued in meetings, nor the original scheme which would have involved almost thirteen hours of turning around the rail cars one by one until all 17 were unloaded. After some revisions and creative work, my car was finally handed over to me at 8:30PM, more than five hours after the cancellation. 

I could no longer safely make it to South Carolina, thus wasted the hotel expense and had to find a new stopping point just south of Virginia which I reached around 1AM. I started out the next day and drove another eleven hours until I got home. 

My visitors arrived the following day and I spent two whirlwind days escorting them through Cape Canaveral and the Kennedy Space Center. They left this morning and I had the opportunity at last to get back into the shop.

REGULATOR ISSUE TRACED TO A FAILED IBM 086 TRANSISTOR

I worked out a way to power the regulator on the workbench, which might not sound complicated but the way IBM powers this is with both a raw DC supply and an AC bias voltage, derived from a circuit like this:

The wire coming from one side of the transformer primary is rectified by the one diode on the right and powers the circuitry that generates the reference voltage, using zener diodes, that will drive the regulator to produce exactly the correct output voltage. The center tapped full wave rectifier on the left generates nominally 7.8V DC to power the regulator, but the tap is a half wave rectifier to power the reference voltage generation. 

Once I fed it 7.8VDC with one supply and -7.8V through the diode as the bias voltage, I could watch its operation and probe various points on the SMS card that has most of the regulation circuitry. The regulator begins producing a slightly high output, about 3.27V for a fraction of a minute and then ratchets up higher and higher at an increasing rate. I had an electronic load to demand only 1A from this regulator that is capable of delivering 20A, so having the voltage race over 6.5V did no harm. 

Examining the circuit, I saw that a differential pair of 026 transistors compared the reference voltage to the actual delivered voltage and fed  the difference to an 086 transistor. That produces a drive current, which is amplified by emitter follower stages of an 028 and then a 108 transistor before it drives the four parallel 108 transistors that are the output stage. 

I had tested the four output 108 transistors and the two amplification stage transistors, 028 and 108, but they were working properly on the curve tracer. I probed the voltages delivered to the 026 differential pair and the voltage drop their output produced on a resistor leading to the 086 transistor. Since they looked reasonable, I came to suspect the 086 and desoldered it from the PCB. 

The curve tracer showed the same pattern, that even with a collector voltage of just five volts it would show decent curves for tens of seconds and then begin to run away with steep distorted output curves. This is a smoking gun and my next move is to replace the 086 transistor. 



The IBM Parts Department no longer carries 086 transistors, of course, and reference materials for the transistor specifications are unavailable as well. Texas Instruments, who manufactured this, does not list the IBM private part numbers in their catalogs or spec sheets. I dug through all my spare SLT and SMS boards looking for an 086 I could extract, but had no luck.

This is an NPN Germanium transistor, one with a relatively low beta of 20, the ability to handle about 100mW of power, suitable for the 8+ volt levels of the regulator and the single digit milliamperes of current it has to provide to drive the 028 transistor that is the first amplifier. Some informal substitution charts exist which list some non-IBM part numbers that are claimed to be a decent replacement. In t the case of the 086, it listed the 2N557 and 2N214 which are indeed both NPN Germanium transistors of appropriate specifications. 

I couldn't find any IBM 086 nor 2N557 on eBay but did find a listing for a small batch of 2N214 which I purchased. After I put the through their paces on the curve tracer, I will solder one onto the board and test the regulator again. 

WORKED ON FULLY RESTORING TWO SEQUENCER RELAYS

One of the sequencer relays (R1) had a relatively high resistance for one normally open contact. I used my burnishing tool to remove oxide and make the contact almost zero ohms again. 

The other relay (R3) had the frozen armature due to rodent urine causing rusting. I carefully desoldered the wires going to the relay and unmounted it. I color coded each wire to the contacts and then again to the two sides of the relay coil.

color coding contact wires

color coding coil wires

I was able to free the armature, clean up the pivots and put it back together. When it was soldered back into the power box circuitry, I tested. I plugged in a lamp to the convenience output, turned on the main circuit break of the 1130 and heard a somewhat dramatic click and a hum from the big convenience outlet transformer. The lamp lit up, proving that the relay was now repaired. It is still noisy as it clicks on, due in part to the roughness at the pivots left by the oxidation. 

BEGAN CLEANUP OF VERY OXIDIZED MODE SWITCH AND COVER PLATE

There was substantial rusting of the top of the rotary mode switch cover and the knob itself was encrusted and looked very damaged. I took the plate off the machine and removed the switch and knob.


I was able to remove a heavy film of filth from the knob so that it doesn't look to bad at all. I was surprised that it was in such good condition as it had appeared almost melted originally. 

The plate had the loose oxide removed. It needs to have the oxide converted to an inert covering, then get primed and color matched to the rest of the cover. 

SSM 1130 SYSTEM 1053 BROUGHT BACK HERE FOR FIXES

During the VCF East show, the System Source Museum 1130 was demonstrated as part of their exhibit. The metal rotate tape on the typewriter failed on the last day, snapping at a point where it had previously had a kink. The particular demonstration was repeatedly typing the same character, one with the maximal rotation tension, which seems to have flexed the point with the kink until it broke. 

removed rotate tape fragment

I brought the 1053 back here to replace the tape, after which it can be returned to the SSM for reattachment to their machine. In the process of removing and transporting the 1053, one of the paddle cards was broken. I will repair that as well. It needs epoxy to repair the break and some wire jumpers to bridge the break. The affected pads are for +12, +48 and frame ground, not the 115V for the typewriter motor. 



Monday, April 8, 2024

Cleaning the disk drive, a disgusting and labor intensive task, which is best done on the workbench

RODENT EXCRETIONS CAUSED SIGNIFICANT CORROSION IN THE AIR PLENUM

The compartment inside the drive that pulls outside air through the SLT card compartment and forces it through a HEPA level filter that directs the air into the disk cartridge. That air flows around the platter and heads. 

The plenum was apparently a very attractive home for the rodents, because they filled it with bedding and produced a substantial amount of urine over the course of their residence. Add in some nut shells and you will imagine what it looked like inside the compartment. 

SOAKING AND WIRE BRUSHING ONLY REMOVES SOME OF THE SLUDGE

I soaked the plates, which were the floor of the rodent residence,  in Simple Green for hours but the wire brush had little effect. After I got the first few layers off with 409 and paper towels, we got down to this brown cement that appears to be a mixture of rust and animal droppings. 

Once nothing more would come off, I decided to chemically treat it (Naval Jelly) to cover the rust part to a protective material. When that was done, I closed up the chamber for the time being. 

DID QUITE A BIT OF CLEANING SO I CAN GET THE DRIVE CLOSED UP FOR MOVEMENT

I worked for a few hours cleaning everything I could on the drive. The blower motor was detached but I have to unmount the blower blades from the motor shaft to get in and really clean it. The rust (from the acidic animal products) is making it a challenge to get these apart. I may need a gear puller or similar tool. 


I then put the drive back together, almost fully, to protect it from any damage while being moved but also to ensure that parts don't meander somewhere hard to find. I also closed up the 1130 for the same reasons, so that it is ready to be moved a short distance away. 

I have just about run out of time at the shop for a while. I have a long day volunteering at the Space Force Museum tomorrow, several groups touring the museum and hanger C but with the added complication of the last Delta Heavy launch bringing crowds and tightened security

Then on Wednesday I begin my travels up to New Jersey for the VCF East conference. My first time using the Autotrain, as I normally enjoy driving and like the control I have over my own schedule. 

After I get back mid next week, I have two sets of visitors which will command a bit of my time. Then there is the move to the new shop. 

Replaced two capacitors in the +3V regulator card due to high leakage

CHECKED ALL CAPACITORS FOR VALUE, SHORTS AND ESR

In order to check the capacitors, I had to lift one lead from the circuit to isolate them. I carefully unsoldered one side of each capacitor and made measurements. All of the capacitors had their rated value, a testament to the high quality parts that IBM used in their mainframes. No shorts on any of them. 

What I didn't like was the relatively low resistance of two of the 100uf capacitors on the card. While they were kind of marginal in general, I suspected that this circuit might be more sensitive to having a resistor effectively soldered in parallel to the capacitors. 

I replaced them with two new electrolytics of the same capacity and a higher voltage rating. I am not convinced that this alone was enough to repair the regulator, but it can't hurt. 

PULLED OUT IBM 028 TRANSISTOR AND CHECKED ON THE CURVE TRACER

The voltage regulator uses a cascade of transistors, each stage amplifying the current so that ultimately the regulator can drive 20A of current. The final stage consists of four 108 transistors in parallel. The stage which drives the last one has a single 108 transistor. All of those had been tested on the curve trace a few days ago and were good. 

I moved down the chain to the IBM 028 transistor which drives the single 108. That was removed from the board and the curve tracer showed that it was good as well. All the semiconductors left to check are three transistors, two IBM 026 which form a comparator between the actual voltage and the reference voltage, plus an IBM 086 that drives the 028. All the transistors are germanium; the 086 is NPN while all the others are PNP type. 

Cosmetic adjustments, door repair, some reassembly of 1130 system prior to shop move

REAR COVER FASTENER

One of the rear covers of the 1130 was missing the ball stud that holds it closed when that stud presses between two spring loaded rollers on the frame. I made a substitute with a bolt and two nuts. 

ADJUSTED DOOR ALIGNMENT

The two rear covers sagged down at the point furthest from the hinges and the replacement ball stud I made was entering low on the spring loaded rollers. I adjusted the mounts and now the two doors fit well, with an even gap from top to bottom where they meet. The cover with the ball stud latches properly and the other door closes easily with its latch handle.

INPUT-OUTPUT DEVICE CABLE PANEL REINSTALLED

A panel that has the connectors for the cables that would run to the printer, card reader and other peripherals was put back into place. I had removed it to get access while I was replacing all the rodent chewed wiring and inspecting all the other wires. 

SLIDING GUIDE FOR TOP COVER BROKE WHILE ATTEMPTING TO UNBEND IT

The top power, which hinges at the right side of the machine, had a brass sliding guide that would keep the cover stable as it was raised and lowered. This guide had become stuck at some point in the past, at which time some ham-fisted person bent and partially snapped the guide. 

The brass slide was twisted, bent, broken at one point and quite deformed. I tried to gently unbend all the areas and restore it to a workable condition. I oiled the joint through which the guide would move in order to make it work properly.

The guide had a slot cut in its length, so that a screw on a mount would hold the slot in position as the slot slid up and down. One side of the slot had a break in it where the material had snapped, and the corresponding other edge was pretty mangled. While I was working on flattening the bends and twists at that weak point, it broke just like the other side had. 

Later in the restoration, I will have to manufacture or buy a metal part with a compatible slot and width. For the time being, the cover does open and close it is just missing the guide. 

Sunday, April 7, 2024

Higher accuracy reading of zener diode; preparing system for movement to new shop

DID A SIDE BY SIDE COMPARISON OF NEW ZENER TO THE ONE IN THE REGULATOR

I grabbed a zener diode from my parts cabinets and did A-B comparisons on the curve tracer to more accurately determine the voltage for the part. While I had believed the diode was 4.5 volts, I found that a 4.7V part exactly matched the IBM part. It even had the same slightly slow turnon, not rising vertically but on a slight slant, something I had suspected was an issue with the IBM part. 

EXPERIMENTING WITH MY CIRCUIT SIMULATION TO GUESS AT FAILED COMPONENT

The circuit simulation is running well on CircuitLab, although the parameters of the transistors are not accurate enough to support operation with a full 20A load yet. Basically the default transistors, low current models like the 2N3906, wouldn't be able to drive enough current to maintain the voltage under heavy loads, whereas the actual transistors used in the supply certainly can do this. 

SHOP MOVE AT END OF MONTH

I am moving my workshop to a different address, not very far away from its current location, partly to support the Chiropractor next door who is desperate to expand into my storefront. The new place is being prepared with a new air conditioner and 240 service thus the exact move date is still a bit hazy. The Chiropractor will move my equipment and supplies and since he rents the storefront as of May 1, the precise date of movement is not that critical. 

TRAVELING TO SPEAK AT VINTAGE COMPUTER FESTIVAL EAST

However, between now and then, I am traveling to speak at the VCF East event and once I return it will be the final week before the move, so I have to suspend work on the 1130 and finalize all the packing beginning today. I put all the covers back on the 1130 and prepared it for safe movement, with only the disk drive being moved separately. 

Saturday, April 6, 2024

Tested blower motors and power rail voltage regulators; the +3V regulator is bad

BLOWER MOTORS CHECKED WHEN POWERING ON

Now that T2 is wired up, when the contactor switches on, it powers T2 whose output is 115VAC wired directly to the blower motors. There are three motors in gate A, three motors in gate B and one motor under the voltage regulators and lighting power supply. 

These spun up just fine with relatively little dust emitted for a few seconds before they ran clean. Before the restoration is complete, I will need to measure the air filter openings on the bottom of the blowers, find a compatible size available today and cut it down as necessary to fit the 1130. 

DISABLING THE POWER CHECK AND LOCKOUT WHILE I TEST POWER SUPPLIES

If I pull the connector off the SMS card pin A, the signal to activate the shutdown and lockout won't activate the reed relay on the card and we will merrily continue to have power. 


The green path is the power that flows to keep the contactor (K1) energized and power applied. It does so as long as relay RR1 is not activated, because of the circled contacts. When the time delay relay TD1 fires, the yellow path flows through the coil of RR1 and activates the relay, breaking the contacts that keep K1 energized thus dropping power to the machine. Pulling pin A blocks the route to activate RR1. 

DISCONNECT REGULATORS FROM CPU LOGIC BEFORE TESTING THEM

We don't want any problems with the power rails to cause damage to the SLT cards or other circuitry, so we will disconnect the output wire from each of the three regulators. This ensures that anything we do with the regulators is not reaching any further into the machine. That is terminal 2 of the +6 and +3 regulators and terminal 5 of the -3V regulator. 

CONNECT RAW POWER SUPPLY TO REGULATORS BUT LEAVE THEIR BREAKERS OFF

The three regulators have their own circuit breakers, which we will initially flip off. Then the wires from the raw DC power supply are connected so its output will power the regulators. Raw DC flows to the inputs and the outputs are disconnected until we carefully check the power quality and correctness. 


TURN ON EACH REGULATOR AND CHECK OUTPUT VOLTAGE FOR SANITY

One by one, we flip on the circuit breaker and look at the voltage level produced by the regulator. These have a narrow range of acceptable values centering on their nominal 3, -3 or 6 volt target. If the values are slightly off, we won't adjust them here because the correct procedure is to measure the voltage as delivered to the terminal strip at the bottom of the logic gates and adjust the regulator potentiometer to get the voltage correct at that point, not at the output terminal of the regulator itself. This compensates for voltage drop in the distribution wiring. 

The results were excellent for the +6V regulator as well as the -3V regulator. The +3V looked a bit suspect, as it was at 3.26V which is outside of the maximum range of 2.88 to 3.12V. 

HOOK UP LOAD RESISTOR NETWORK TO FULLY LOAD EACH REGULATOR

I had a resistor network which I use to present full or nearly full load on the regulators. They must hold their voltage not only when no load is present, but maintain voltage regulation up to their capacities of 25A for 6V and 20A for the others. 

I wired together 10W ceramic 1 ohm resistors in series and parallel combinations to achieve the net low resistance to load down a regulator and to have each resistor at or below its 10W dissipation limit. I could demand the full 25A capacity from the 6V regulator but for the two 3V supplies, the resistors I had on hand could only get low enough to pull a bit under 17A. 

While this is not the full 20A the regulator can support, it is close enough that all power transistors must be good to handle this and therefore it would scale up to 20A with no problem. The four germanium power transistors are in parallel across the load with each able to handle about 5A. If only three were working we would have begun to sag already. 

As expected, the +6V held its voltage right on the nose at the full 25A of load. The -3V regulator held its voltage steady up to almost 17A. The +3V regulator did not do so well.

With no load, it had operated at about 3.26V. With the load applied, the voltage began ratcheting upwards from that already unacceptable level. When I saw it going north of 3.67V I flipped off the circuit breaker before the overvoltage (crowbar) card would fire and trip the breaker off. The regulator is not doing its job. 

REGULATOR REMOVED AND PUT ON THE BENCH

I disconnected the regulator and pulled it out the 1130. It was put on the bench where I could figure out the defect and repair it. The power transistors are on heat sinks that fold out from the regulator to give good access to all four. Each heat sink wing holds two transistors and an aluminum bus bar holds the two wings together electrically when folded up. 


REMOVED AND TESTED ALL 108 POWER TRANSISTORS BUT ALL ARE GOOD

Every other time I have had a bad power supply, whether on SLT systems or 1401 systems, the fault has been one or more 108 transistors that shorted or went open or are otherwise nonfunctional. I desoldered and removed the four 108 transistors from the wings, as well as the 108 on a heat sink on the SMS regulator card. 



Regulator card

Overvoltage/Crowbar card

USED MY CURVE TRACER TO IDENTIFY VOLTAGES OF ZENER DIODES

Having just used the curve tracer to verify the health of the 108 power transistors, I decided to leverage it to identify the voltages of the two zener diodes on the regulator card. It would be hard to reverse engineer the regulator circuit without specific component details like this.  They are 10V and 4.5V by the way. 

The 10V diode had a very nice almost vertical turn-on at the 10V point, but the 4.5 had a bit of slope rather than the right angle that is characteristic of a good zener diode. I guess I could substitute a new 4.5V zener and see if that fixes things, but that is a bit of a blind shot. 

STUDYING CIRCUIT SO I CAN COMPARE WHAT IT IS DOING WITH WHAT IS CORRECT

I set up the circuit with all the parts values in Circuitlab, an online tool that lets me simulate various circuits I have designed. The transistor parameters were not accurate, however as I don't know the specs for 026, 086 and 108 transistors. I tried to get the 108 set up to look like a modern PNP Germanium power transistor. 

The simulation did let me regulate by adjusting the potentiometer setting until it produced exactly 3V as an output. I put in various load resistances with zero change in the output voltage until I got down to .45 ohms. This corresponds to a design that could handle 6.5A or a bit more, not the 20A in the IBM supply. However, I attribute this to the inaccurate transistor specifications, since the drive current to keep up with higher current depends on the abilities of the transistors in the circuit. 

This allows me to record the expected voltages at different points on the regulator, which I can compare to the failing regulator on the bench. Hopefully this will point me directly at the failed component(s). The alternative is to unsolder all the transistors on the regulator card and put them on the curve tracer to look for a bad part. 

I keep seeing references to an IBM publication named IBM FE Theory of Operation : Power Supplies SLT, SLD, ASLT which would have been very helpful, rather than having to reverse engineer the supply to understand how it must operate. Back in the day, the solution to a problem like this was for the local FE to install a spare part regulator card and if that didn't fix it, replace the entire power supply. The factory would deal with diagnosis and repair.