Wednesday, August 24, 2016

Work on Diablo disk driver/emulator tool

Today is the day I spend with the 1401 restoration team at CHM, thus limited time for my own projects but I did move ahead a bit. At CHM, I replaced a set of brushes in a 729 tape drive, helped diagnose and fix a problem in the 1402 card reader,


I hooked up all the remaining wires on the board, lacking only the connections to the last, missing chip socket for it to be ready to have the disk cable soldered on. The sockets will be arriving tomorrow, so we will have a working extension board by end of week for certain.

The chips and my board for the emulator role have come in, but until I get the plug and shield I can't complete wiring up that side of the project.

I plan to add two sheets of insulation and then an upper and lower copper plate to help with signal integrity, given the discrete wire runs on the board. The copper sheets should arrive by Friday.

For simplicity, I will leverage the USB communications example projects provided by Digilent, which will allow me to easily load and fetch the contents of a RAM buffer on the fpga. The Xilinx Spartan 3E chip XC3S1200E on the Nexys2 board features 516,096 bits of block RAM.

The Block RAM on the fpga chip is enough to hold 32.256 words of Alto Diablo data, just over 121 sectors or about 5 cylinders. That is 2.5% of a disk cartridge.

The SDRAM on the Nexys2 board will hold more than seven full virtual disk cartridges, while we only need a cylinder buffer of 24 sectors and a single disk cartridge in RAM. I will leverage the Digilent Block RAM code to fetch and load the cylinder buffer.  Then, I will leverage the Digilent Memory code to fetch and load the virtual cartridge SDRAM.

Essentially I have to piece together a couple of reference project modules and some glue code to implement the transaction types I want for the tool. This allows me to use the Digilent supplied Adept utility right away, not having to complete any PC side code until it is convenient.

Tuesday, August 23, 2016

Substantial progress wiring up board for Diablo driver role, plus some Calcomp investigation


I took another look at the Diablo drive that this cable originally came with, since it would have had to compensate for the lack of a Select Unit line otherwise needed to activate the drive. Nothing was changed in the drive, but I happened to notice a couple of wires on the terminator that was attached to the drive.

The Select Unit 1 line was pulled to ground by a wire on the terminator itself, which is a great idea because it is easily accessible when attaching my tool. The user hooking my driver to a Diablo drive would just jumper across the resistor for pin L (Select Unit 1) that runs to ground, thus pulling the signal permanently on.

In addition to the Select Unit, my terminator also pulled Read Gate to ground, permanently streaming bits from the heads. With no wire in the cable, I will have to logically block this with a virtual read gate inside the fpga.

With this solved, I don't need to hunt for, wait to receive and install extra pins in my cable. I can move right into wiring this up as it sits. My level shifter chips won't arrive until Friday thus I can't have the entire extension board complete today.

I grabbed socket diagrams and IC sockets to begin wiring up the extension board. In addition, I carefully identified each signal wire and labeled it, to make it easy to wire them on when it is time.

By lunchtime I had a bit less than half of the input section wired and am one 16 pin socket short of what I need for the complete board. I hoped to scrounge through my side shed to see if I had even one more socket on hand, but I have to buy more. I can't install the chips.

By dinnertime I had completely wired the input section, other than attaching the actual disk cable, had wired all the power for three of the four chips in the output section (since I don't have the fourth chip socket yet), and have most of the select and enable lines hooked up.

I did buy a plug for use in the emulator role, which should arrive in about a week. It has solder-on terminals and a full set of pins allowing me to implement all the signals I need or want. I went looking for a protective housing which I found on eBay. It has to travel here from Israel, so could be 3-4 weeks until I can properly build the emulator role cable.

After dinner, I went back to my wiring and now have all the lines that will go to the cable hooked to all chips but one, and I am almost done connecting the other sides of those chips to the FPGA connector. When I have a chip socket to put in place and a few more hours, this will be almost complete. The chips themselves go into the socket and a few tantalum power filtering capacitors get added to wrap it up.

I began writing out the various finite state machines (FSMs) in pseudocode to work out the overall flow and process for the driver functionality. Once I have a reasonable idea at this level, I can convert them to FSM diagrams which ensures I think through all the transitions correctly.

I also began plotting out the pseudocode level for FSMs to handle the emulator role, since I may identify sharing opportunities or need to modify a driver role FSM slightly to fit the emulator needs. I have just the grossest levels worked out, but will iterate down through the details in the coming days.


I did some research and satisfied myself that I should be able to shrink the aluminum on the plotter drum in the few places where it is stretched, thus with enough patience and time this drum can be trued up and flat again. The solution is to use a friction wheel, called a shrinking disc, to heat the stretched sections then cool with a spray of water.

If I can make a cylinder the correct size for the inside of the drum and push it inside the aluminum cylinder, it will act as a base to shrink against or stretch any small remaining dents. I need someone with a wood lathe to turn a piece to the size I need.

Monday, August 22, 2016

Blocked on a couple of fronts with Diablo tool wiring and 3178 monitor repair


I have worked out all the wiring assignments and FPGA signals involved and was ready to begin soldering the cable to one extension board to implement the disk driver role - able to run a real Diablo 31 disk drive. To do so, I had to unambiguously identify all the wires from the plug and put them at the correct location.

I quickly discovered that my cable is missing the signals for sector count that the drive would report back, nor the unit select line, but it does have index marker and write check llines which I didn't need. I have found a site that claims to offer the pins which would let me add the missing lines. I hope they will respond and allow me to buy a small quantity.

I can use the Index Marker and Sector Marker pulses to manage my own Sector Counter in the FPGA, but without a way of selecting the drive it would stay inert. Not as simple as I had hoped to leverage my existing cable exactly as the Alto is wired to the drive.

I need at least one more socket pin, or have to remove and transfer the pin that currently delivers the Write Check status since the Alto ignores that signal. Another option might be to find a way to bypass the select line and 'hot wire' the drive to be selected at all times, but this requires me to do something inside the Diablo drive which is suboptimal.


I opened the third monitor I received, the one with a broken plastic top cover, which was suspected to not work properly. Indeed, when I had tested it, there was no vertical deflection but I could see that a whole screen of content was making the one horizontal line very bright.

I could see a burned spot on the PCB in the section marked Vertical, where an electrolytic capacitor was connected. I will remove the part and check to see if it had shorted, causing the trace to heat and melt around it. There may be collateral damage, such as driver transistors, but first step is to remove and test the capacitor.

Unfortunately, the capacitor is just fine. I am guessing this was a bad solder joint which led to overheating and failure. The problem is to figure out where the pad is supposed to be connected, then ensure good traces exist. The surface is pretty damaged looking and I may have a trace failure.

Burnt land and traces(?) on 3178 circuit board
I think I will have to open a working monitor and photograph the same area to learn what the undamaged traces look like, then go back and repair my errant board.


I had some discussions with others who might want a replica solenoid and pen for their plotters, because it may make sense to build a small batch at one time given how many people have 'penless' plotters out there.

There are a few levels of fidelity I could seek, which have increasing difficulty and cost but also increasing value to others. I am going to sketch out some ideas over the coming weeks and see what makes sense.

Sunday, August 21, 2016

Finishing design work and starting construction of Xerox Alto - Diablo disk tool


I began the design work for the tool we will use to test out and drive Diablo disk drives, which also will act as a physical drive to emulate and replace a disk cartridge with a PC based file. I am leveraging my Digilent Nexys2 fpga board as the foundation of the tool.

I had to very carefully spec out what behavior the emulator has to present to look like a real disk as well as what it has to deal with to drive, read and write on the real drives. This involved reading documentation, schematics, Alto microcode and looking at investigations done by Ken Shirriff into the same source materials.

I should be able to start building up VHDL code this week and to solder up the cables and related interface hardware that will be needed. Careful advance planning will save a lot of wasted time later, which is why I am doing all the up front work.  The parts for the level shifting boards are on order.

FX2BB, top (Without Breadboard).
The extension board for the Nexys2 FPGA board that will make wiring easy

Saturday, August 20, 2016

Got some 3178 terminals, also parts for SCR module replacements


My SCRs and resistors arrived from Digikey today, but I haven't built a circuit yet to test it out, mainly because I spent my day as a volunteer examiner for ham radio license tests today.


I spent the day yesterday on a road trip with a friend who had acquired an IBM 2540 Card Reader/Punch, hauling it back to the bay area from Sacramento. While picking up the unit, we both looked around the seller's facility where he had several 4361 and 4331 systems, keypunches, tape drives, terminals and more modems and routers than I though existed on the planet.

I picked up two complete 3178 (green screen) terminals (part of the IBM 3270 family) plus a spare keyboard and spare monitor. Now I have to pick up a controller such as the 3174 to make it usable with my P390 system. Testing (without a controller so very very limited) seemed to show everything working well.

Thursday, August 18, 2016

Light display pedestal FINALLY completed and closed up.


While I wait for my replacement bulbs to be delivered, I can get row L5 properly inserted in the honeycomb and then deal with the intermittent bulb contact in row L4. The lights, when on hand, will allow me to finish up row L6.

I did manage, after quite a bit of tweaking, to wedge L5 in adequately and all the bulbs lighting properly. Still having problems dealing with the erratic bulb on L4 - I am trying to manipulate the bulb hoping that I can get it to light reliably without having to pull row L4 out and start over. It will all come down, as it always does with the light panel, with trying to get the last couple of lights working and the last board inserted properly.

I received my bulbs and proceeded to build 16 lamp holders with these 715 mini bulbs. They are electrically identical to the full sized bulbs and produce the same light output, so my only issue is fitting them to the much larger lamp holder.

I use shrink wrap tubing on the wire leads of the bulb, from the glass down to the point where the wire lead will disappear into the pinhole of the lamp holder. This protects against the leads touching in a short circuit and also stands the bulb up further out of the holder to better match the filament locations of the original equipment bulbs.

I did a test on bit position 2, the one that I had found to be defective yesterday morning but that appeared okay when retested later in the day. I decided to hook up one bulb I have that works okay and give a test - it didn't light.

I then put on my new bulbs on row L6 - the last row to be inserted and therefore the one with the worst minimal access and maneuverability. Bit 2 is working, so I am not sure why I keep getting conflicting tests, but I tried to insert the board as it was.

 My mini lights stick out and are easily bent up or down so they won't fit in the honeycomb cells. Very tedious. All insertions begin with wrestling the board to the right as far as possible, since the power and lamp test wires are connected at that end and tend to spring out, pushing the board too far left.

It requires pushing rightward while pivoting the board around and getting sixteen lamp holders to enter their intended positions. Unfortunately, while pivoting the board, the gate lead snapped off the bit 0 SCR module. Now, I have to remove and replace that SCR before I can continue. Arrrgh.

I hoped I could dig out some of the encapsulation and save this SCR by soldering a new pin to the stub. Unfortunately, the bakelite covering crumbles easily and does not bend at all like plastic (or is a plastic whose plasticizer has departed this mortal veil many years ago). I managed to break off a lead inside while trying to clear space around the pin.

I put one of my donor SCR modules in the bit 0 location, and managed to get the board inserted almost firmly. It is wedged with very slight friction, mostly from one side, but I can't seem to wrestle it to a firmer fit. Still, it is in place and all the lights on row L6 light.

The final problem is the errant light on row L4, bit position 8 which I have to finesse until it works again, or pull the row and deal with the light issue more directly. I noticed that bit 9 is 'hot', always on and when I swap the signal connectors the flaw stays with lamp 9. Time to pull the board out and work on it.

Using my analyzer, I see that both the bit 8 and bit 9 SCRs are bad - 9 is always on and 8 is inoperative. I had only removed a total of 5 donor SCRs and have already used 4, so I ALSO have to remove row R5 and take off more SCRs from the CE light positions.

Two SCRs replaced, all bulbs lighting properly, so I insert L4 into the honeycomb. A light on position 10 is dark now. Remove board, find that the brittle leads at the glass envelope broke on the lamp. I tore it out and put in one of my mini bulbs, tested that all 16 lit, then reinserted. The bulb at position 8 is dark now. Removed board, tested lamp, which had gone open circuit.

New mini bulb in position 8 lamp holder, testing that all 16 lights illuminate during lamp test. Bend and pivot the holder into place, but before wedging it tightly, test again. Now bulb for position 5 is dark. Aaaaaaaaarrrrrrrrrrrrrrrrrrrrgggggggggggggggghhhhhhhhhhh. I hate this panel.

I may have to replace every one of the hundred or so original bulbs if they keep snapping during insertion into the honeycomb. At a minimum, if I don't disturb any other board, I might face more lamp failures on board L4.

I have 14 remaining original style lamps on board L4, one of which is bad and needs replacing. The question is whether I tear out all the other bulbs and go totally with mini lamps, or hope that the string of bulb failures will stop.

When I swung the board out yet again, it was clear that the bulb for bit 5 had self destructed. The bulb was sitting in the honeycomb while the lamp holder was still attached to the board. I replaced this with another mini bulb, tested all were lit, and managed to insert it with all still working properly

I also see that the sheet metal of the rear door comes perilously close to the signal pins on the back of the boards, something I don't like. I put an insulating layer on the offending area before I closed things up.

With the rear of the panel gently closed, I went around front and did another lamp test. Damn!! One bulb on L5 (Accumulator) and two on L6 (Extension) are off - tapping the panel slightly made a couple flicker on, but basically I would have to open the panel up and iterate endlessly with bad bulbs and contacts for L5 and L6. Meanwhile, every time I touch one thing, there is a risk another bulb will stop working.

I decided I can live with the dark positions, because I have already put in almost forty hours of frustrating work and still can't get all 156 bulbs working at the same time. The next time I touch this, I think it will be to strip out the current boards and SCRs to replace it all with some alternate system I build. This makes the machine impossibly fragile and undependable, as it sits.

I truly hate working on the light display and hope that I won't have to do anything to it for a very long time. The way the panel is built in my system is described in the ALDs and other docs as "early 1130s" style.  It has the SCR modules on the circuit boards attached to the rear of the lamp holders.

After those early machines, IBM changed to put 9 boards on the rear cover, each handing up to 20 lamps, with an unknown method of cabling to the lamp holders and for holding them in the honeycomb. I imagine it to be much easier to change bulbs and nearly impossible to blow SCRs with the new method.

To make a mid stream change of this scope to the machine probably meant there had been a flood of complaints from the CE organization about how difficult and time consuming it was to fix machines with the prior design. May also have been a very high rate of parts usage from blown SCRs on these boards.

I can probably build new SCR circuits so that I can either restore the full 8 CE light positions or replace others if more fail over time. I just need an SCR that can comfortably handle the .114A 5V load of the lamp, take the 7.5VAC input power and doesn't need any heat sink. I can wire that, plus a 6.8K resistor, onto the board in place of the encapsulated module used by IBM.

The order from Digikey is on its way - 10 sets of SCR and resistor - which I can test out on a CE light position first and then use to backfill all the modules I previously removed. It will mean opening up this bedeviled panel again, but only to touch row R5 which is relatively easy to manipulate. I won't touch any other rows for the near term.

Wednesday, August 17, 2016

SCRs replaced on light panel, nearing end of bulb insertion; checking out repaired drum for plotter

My day to meet the rest of the 1401 restoration team at CHM, but can get some work done before and afterwards.


Well, the replacement bulbs I ordered are not going to arrive today as promised on the selling website. They are coming via USPS and should be delivered by the end of tomorrow. I can't close up and finish this until I have the lights in place.

This morning, it was time to verify the bad SCRs and carefully desolder them from the PCB boards. Four of the left rows have a bad SCR - one apiece - which need to be replaced. Using my semiconductor analyzer device, I can check each suspect SCR (actually an SCR plus a resistor in a molded case). This allowed me to validate the SCRs being removed.

I had removed five SCRs from the "CE Signal" section of row 5 right, in order to repair bad SCRs on the lamps for signals that are normally used. The CE lights are ad-hoc displays that a CE will jumper to some condition to help in debugging a problem. I can use my oscilloscope and other tools instead of such lights.

With the donor SCRs removed, I populated the remaining lamps on row 5 right and inserted it into the machine; now the right side is complete. It is a pleasure to see 2/3 of the boards in place and every light in those rows lit during a lamp test.

I made use of three of my new mini lamps and indeed they look exactly like all the other incandescent lamps when viewed through the panel. I decided I will use shrink wrap as an insulator around one of the two legs of each mini bulb I make up, as there is a risk that if the bulb gets rotated it will bring the two leads into contact with each other and short out another SCR.

The failed SCRs were validated using my analyzer and are bit 10 on left row 2 (SAR), bit 5 on left row 3 (SBR), bit 5 on left row 5 (Accumulator) and bit 2 on left row 6 (Extension). I began my morning by working on L2. Somehow by the afternoon, bit 2 of row 6 was working fine, no issue with the SCR.

The SCR for bit 10 is in the most accessible position of the three failure points (10, 5 and 2) on these boards. Using solder wick and careful work, I released the failed SCR and cleaned up the board. I then took my salvaged SCR that I took out of the CE light positions, dressed its leads and inserted it in the board. Once soldered up, I could put on the bulbs, verify that all lamps lit under test and then put that of lights into place in the honeycomb assembly.
Board with defective SCR module removed

Underside of board with bad SCR module removed
Three more to do - L3 (SBR), L5 (Acc) and L6 (Ext) - with work resuming after a break on board left 3 to replace the SCR in bit position 5. These boards are wired in place and require quite a bit of torque to twist them enough to put the solder face of the board somewhat upward where I can reach it.

I need to hold the board twisted, apply the soldering iron tip, hold the wick in place, and manipulate the SCR to get it out, which takes four of the two hands I own. Persistence, creativity and luck combine to overcome this hand shortage and I completed L3 and inserted it with all bulbs working.

As so often happens with this poorly designed hot mess of a light panel, a bulb stopped working on a previously inserted board, L4. I have to investigate it, correct the problem and then get back to work on completing L5 and L6. I ran out of morning work time at this point and had to head over to CHM.

While I was out on the way to CHM, I stopped and bought some heat shrink tubing, which I will use with the mini (715) bulbs to ensure that the two legs can't twist into contact with each other. I made up one lamp using this method, which also allows me to stand the bulb higher off the socket and closer to where the filament sits in the original equipment bulbs.

I came back in late afternoon and commenced work, at least as far as I could get with the bulbs on hand. I replaced the bad SCR on board L5 at bit position 5, inserted my remaining bulbs and found that 4 and 14 were dark under lamp test. I also pushed the ground pin into the unlit bulb on L4, restoring it to proper operation.

I checked the bulbs in those positions and found them unusable. To be sure that everything else was good, I moved bulbs from 6 and 15 over to 4 and 14, ensuring that every bulb glowed. I can't insert row L5 into the honeycomb until I get my new replacement bulbs and place them on the two open spots, but otherwise it is ready to insert.

Row L6 tests fine for all 16 SCR positions, the problem I thought I had spotted on bit 2 is either cleared up on its own or was a measurement error. Therefore, it is my expectation that once I have the replacement bulbs tomorrow, I can put together than 16 lamps I need for this row and the 2 needed to wrap up row L5.

In early evening, I decided to make two more working lamps from the stock I had. There were a few bulbs which worked but whose wire leads were too short to reliably hook over the ends of the lamp holders. Other bulbs were dead inside but had good long leads.

The solution was to cut off the long leads from bad bulbs and solder them to the too-short leads on good bulbs, allowing me to mount the bulbs in holders successfully. I added them to the L5 board and have a full set of 16 working lamps for this row (Accumulator). I am still finessing the insertion of the board into the honeycomb, not yet done with L5.

The darned row L4 bulbs are flickering off again - the original unlit bulb came back along with a nearby mate. The least amount of flexing of the board and connectivity to the bulb is lost or regained. I will have to pull L4 out and reseat the bulbs more carefully, since this is unacceptable.

Now just in wait mode until I have 16 bulbs to put in holders and insert into the final L6 board. USPS, please be unusually timely and dependable. Just a few more tedious hours and frustrating setbacks until the entire light display is together and all lamps light up.

Only lower two boards on right of picture left to do, light panel coming together

I reassembled the drum with its internal braces, side mounts and brackets. It is still a bit too much out of true in a couple of spots, but those should be recoverable. The remaining issue will be a few rough spots on the drum surface which might be able to be sanded out (thinning the metal in that spot).

Drum reassembled, first view

Second view, drum rotated about 90 degrees

Third view, rotated another 90 degrees

Final view, about 270 degrees from initial view

The risk of sanding it down is a punch thru. At worst, however, it would have to be bridged with automobile dent repair materials. I am feeling cautiously optimistic about the potential to restore this to operation.