Wednesday, April 24, 2024

Working on the disk drive, breadboarding new loader, repairing SSM 1053 and other tasks

ADDITIONAL TREATMENT OF RUST ON MODE SWITCH PLATE AND DISK PARTS

As I mentioned in a prior post, a few parts still had signs of orange-brown rust even after the prior treatments so I coated them again. A cylindrical rod that holds the disk drive covers over the mechanism was very badly pitted, as was the spindle that grabs and rotates the bottom of the disk cartridge. As well, the rotary mode switch plate wasn't completely converted so it got another shot of the Naval Jelly. 

SETTING UP BREADBOARD OF NEW MEMORY LOADER

I began setting up the central logic of the new core memory loader, the one that will trigger the 1130 cycle steal (DMA) mechanism to load memory much faster than the previous loader program. The breadboard will contain the state machine and logic to respond to both 1130 and Arduino, but not the output circuits as these are directly driven by reaching certain states. This reduced the wiring to just eight ICs, only 114 pins, and will make use of my Cadet testing platform.

There are four slide switches that will represent the key input signals:

  • Arduino request for a cycle steal
  • -X6 cycle steal clock stage
  • -CSLevel0 which indicates when cycle steal is active
  • -Stop Latch which is used to be certain the 1130 is stopped before loading

A pushbutton will simulate the fourth 1130 input signal, power on reset of the machine, to be certain that the loader will enter a good initial condition. The states are displayed on LEDs on the CADET.  When it appears to operate properly with manual switching, I will set up some rapid triggering and put a scope on the state outputs to be certain it doesn't glitch or step too rapidly. 

The loader is quite simple to interface with - when the Arduino places a 15 bit address and 16 bit data value on output pins, it raises the Arduino Request signal. It then waits for my state machine to get to the end of the cycle steal where the loader raises a Request Done signal back to the Arduino. The Arduino drops the Arduino Request line to finish the cycle. It can then assert new address and data values and request the next cycle steal. 

TESTED BLOWER MOTOR - FOUND OPEN CIRCUIT IN WINDINGS

I wired up 115VAC to the disk drive to check the operation of the blower motor, since it seems to have very crusty and stiff bearings. I wanted to see if it would spin normally and recover from the trauma it has suffered. When I applied power, absolutely nothing happened. I could see that 115V was present on the wires leading to the motor, but no action. 


Based on this finding, I decided to pull the motor, check more carefully for continuity and then disassemble it to find the cause of the failure. 

Motor out and on the bench

no obvious damage on the windings

No trauma that suggests why it failed

Stator seems intact but bearings are very bad

The motor has five wires connected to it, one is a frame ground shield inside the cable but does not connect to the motor itself. A black lead is connected to the metal motor housing and tied to the frame ground back in the AC power box. Neutral is delivered over the yellow lead and the hot side of the AC is connected to one winding all the time (blue wire) and also to a second winding (red wire) when the contactor energizes. Apparently the second winding is added when the current is high (at startup) and then switches off when the motor reaches its normal speed. 

I also see a thermal protection link in the diagram of the motor, which could be blown but it does not appear to affect the coil between the yellow and red wires at all, only the winding between yellow and blue wires. However, the yellow wire is open circuit to all the other windings. 

I checked against the drive motor, which uses a very similar circuit, and confirmed that there should be connectivity from yellow. I don't see any signs of damage to the cable that would explain the open circuit, therefore it is very likely to be inside the motor. 

If I can find and repair the open circuit, I will still need to get the bearings working better. If I can clear them up with new lubrication then it is possible to salvage this motor once the break is repaired, otherwise we are going to need a replacement motor. 

DISASSEMBLING BLOWER TO CLEAN

The drive has a blower that pulls outside air through the electronics and pushes air through a HEPA grade filter to flow between the head and disk platter. The chamber for the HEPA filter and the blower itself was packed solidly with rodent nesting materials. I wanted to get the blower apart to fully clean the chamber. We don't want residual material blowing to the filter and perhaps onto the disk surface, so it should be as clean as possible. 

As you can see with the picture below, the blades of the blower have a lot of crud remaining even after I pulled out the nesting junk. I loosened the setscrew to pull the blower off the motor shaft but due to the rust formed by exposure to urine, it is extremely challenging to remove. 


I have not been successful today in removing the blower, but will keep at it since it is necessary both for the cleaning and in the eventuality a new motor has to be installed. 

SSM 1053 REPAIR WORK

I did receive the new rotate tape today, which I verified is the proper length and in excellent condition. You can see that it is smooth and unbent.

Compare that to the old tape that snapped, shown below. You can still see a bent section, although the tape snapped at a different and presumably worse deformation. 

I also checked the repair of the SMS paddle card that provides the power connection to the 1053. It appears to be holding adequately, but still needs me to bridge across the crack with wire so that the fingers deliver power up to the wire. 

Crack affected the fingers on the right side

The right side fingers are K and L together for frame ground, M for +12V, N is also +12V but only one of the fingers is needed to provide that voltage, P is unused and Q and R together are the +48V source. The crack only impacted KL, M, N and P fingers, QR is past the crack thus has continuity. Two wires, to bridge KL and M lines, will restore this paddle card to good condition. 


Disk cleaning, mode switch plate, and paddle card repair

 CONVERTED RUST PRIOR TO PAINTING MODE SWITCH COVER


As you can see, it took multiple treatments to get down through the layers before it was safely encapsulated and ready for painting.

NEUTRALIZED RUST ON PARTS OF THE DISK DRIVE



As you can see, the rust went pretty deep in this section which means I have to go over it again and again, scraping away rust layers and converting, until it is sealed up.

PADDLE CARD REPAIR

The power paddle card for the 1053 printer of the System Source Museum 1130 had cracked. It appeared broken when I removed it from the 1130 at the VCF East event on the final day, but it may have broken during the removal. In any case, it had to be repaired.

I first epoxied the phenolic card itself to mechanically repair it. It had cracked the traces for a few power lines, but not the ground nor the main 115VAC pads going to the Selectric motor. The impacted wires were +12V, +48V and the frame ground. These I bridged with wire across the two halves of the break. Fortunately the break was not down on the fingers that insert into the SMS socket, thus the added wire does not block the card from inserting neatly into the machine. 

I brought the 1053 back to Florida because the rotate tape had broken on the machine, in large part because the spur of the moment demo I created for the show typed a # for every 32768 rounds of multiplication. I intended it to give a sense of the speed of the machine in doing additions and multiplications, but the # character is the position of maximum rotation tension. 

That character is on the side of the ball requiring the lever to add 180 degrees of pull, plus it is a rotation of five columns. I couldn't have chosen a more punishing character for the rotate tape to be stressed. It still shouldn't have broken, but the existing tape did have some bends in it which I believed would be okay; in hindsight, the flexing of the tape at those bends caused it to give way.

A new rotate tape will arrive today and I will install it on the machine. I will then ensure the adjustments are just right with particular emphasis on the worst case characters. It will be picked up on the next trip down here by SSM. 

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.