I replaced the seal that connects the air duct to a disk cartridge, installed the logic cards and did a controlled bringup. The drive does everything right without a cartridge loaded - doors unlock, status is good, write protect status toggles, it tries to go into run mode (except there is no cartridge in the drive), the blower runs, the safety relay is latched, AC and DC power levels report good.
If I had finished the replacement of the filter foam between the logic card cage and blower motor inlet, I could have moved on and loaded a cartridge, but with the air pathway still contaminated, I won't risk the heads or cartridges. I need an extra long allen head socket to get to the four bolts that hold the blower on the frame, which is coming by Wednesday, when I can finish the cleanup then I will prove out the drive ability to load and seek, but reading and writing will have to wait until my interface is done.
The tool now in hand, I removed the blower, removed the old foam and cleaned the drive up. I pulled out my air compressor and blew out all the dust, wiped it down well, and was ready to reassemble it with the new absolute filter, when a spacer from under the blower motor disappeared into the drive somewhere. I tilted, turned and upended it several times, then heard it drop, but it wasn't under the drive on the table.
I didn't see it anywhere near where I was working in the garage, nor did I find it inside the drive anywhere. I am disassembling the drive further because the one situation I can't allow is to have a loose metal item inside the drive. I took out power supplies and other parts, and will continue until I have line of sight to anywhere it might be hiding. If I can be certain it isn't inside, then if it is hiding somewhere under something in the garage, i can just replace it with another spacer.
The next day, I spotted my errant spacer just outside the garage, in spite of having hunted there the evening before. From this point, it was quick work to reassemble the removed parts, add foam where needed, reinstall the blower motor and put the bottom covers back onto the drive. Power up was clean and a healthy volume of clean air is now flowing to the cartridge mating duct. With the condition so promising, it was time to put in a cartridge and load the heads. More good news, the drive loads the heads, they fly beautifully at cylinder zero and the drive reports "On Cyl" status, meaning that it does recognize it has the heads applied and is holding the arm in place.
To do more, I need to build my terminator and interface cards, allowing me to begin testing the commands, read and write capability and ultimately my logic to mate the drive to the 1130 adapter logic. At this point the terminator card is assembled, but needs to have the outlines cut around the fingers that side into the DEC backplane connectors on the disk drive, then the handles installed on the other end of the board.
I bid on a couple of disk cartridges, one for an RK05 and the other made for another drive type from a different maker but that is using the same media. I am not willing to pay all that much because they might be scratched up and unusable on the inside, but at the right price I would take the gamble. Both sellers, however, believe these to be rare and quite valuable, thus they remain active with no takers.
On the other hand, I did agree to an offer from a collector to pick up two more RK05 drives, which I will have shipped cross country next week. The 1130 that I first worked with had a 2310 enclosure with two drives in addition to the drive inside the 1130 cabinet, a configuration that I can now replicate. I will need to work out the adapter logic for the 1130, since I have not discovered ALDs from any machines that had the 2310 attached.
HOME MANUFACTURED PCBS
I have completed the disk drive terminator PCB design and am ready to make it at home, but I need to get a good quality transparency of the design. My inkjet and laser printers are not producing a good enough image, but I will give the inkjet one more try with a different transparency stock. If that doesn't work, I will go to Fedex Kinkos to have it printed on their highest quality printer.
My laser printer and the Kinkos work are about the same quality - a bit streaky and not sufficiently dark black areas, but otherwise sharp enough. I did a trial run, but made a few mistakes and learned where I need a better method than I used on the first board.
I underestimated how differently the photosensitive surface would look compared to the white plastic cover, making alignment of my transparency mask very difficult to achieve in low light. I thought I would drill a couple of the thru holes before flipping the board and applying the backside mask, to make alignment easy, but forgot that the undeveloped board would have no indication of the mask image. I taped my mask down to the plexiglas cover plate, not to the board, thus couldn't keep it in place to drill a hole.
I also dropped the drill bit in the garage and couldn't find it - the #60 bit is very very small, hard to spot. This meant a trip to the store to pick up another one. In the time it took to buy the drill, the solutions I mixed cooled down to room temperature. That slowed down the rate at which the board developed and the copper etched. I need a method to warm or keep the solution warm, just in case I can't move right to processing after I mix it up.
|Exposure bed for PCB work and drill press to produce holes|
In my first run, I pulled the board a bit too early from the developer, which left some protective covering on part of the copper that should have been etched away. The room temperature etchant required more than an hour to produce reasonable results, with a fresh solution. It would only get worse on boards I process later in the same solution.
|Etching solution to remove unwanted copper from board|
Once done with drilling the holes, I can remove and separate the two masks, peel off one side's white covering, apply that side's mask using bits of bare wire to align the mask, tape it down, then put that aligned assembly under the plexiglass and expose. I then will remove the first mask, flip the board, remove the other white cover, put the other side's mask into place using bare wires to align it to the same holes, tape it down and expose this under plexiglass.
If the second run went well, showing I have the developing and etching process worked out, a production run will be done with a double sided card to produce my terminator card. Unfortunately, the second trial didn't go well, as only some of the traces were there when developed for a long time. This suggests that I need to increase the exposure time quite a bit from the midpoint of the manufacturers recommended range - 5 to 8 minutes - up to a minimum of 10 minutes. A third run at 10 minutes did yield all the traces at good quality, but it took longer than the 2 minutes maximum claimed by the maker.
Still not good enough, on to try four with 15 minutes of exposure, developer pretty warm, looks much better. A few traces were too thin to maintain a solid path, particularly where the traces were many and close together. I will now go to my terminator design and alter the traces to 35 thousandths, up from 15 thousandths. This should be able to produce solid and reliable patterns.
My next run was an attempt to create the terminator board using the amended pattern. I cut the masks down to easily locate the edge that will insert into the socket of the DEC drive, and to tape them more readily onto the board. Under my safelight, I taped the top mask over the white peel-off covering, then drilled two holes through the sandwich. This done, I removed the white peel from the two sides of the board and located both of my masks to the reference holes, taping them down well.
Fifteen minutes exposure on each side, then into the developer which I will mix up as the second exposure is underway. However, when I was positioning the mask on the second side, the holes didn't make sense. It appeared I had confused which side I was going to expose next. I flipped the board, but that was NOT the right decision. As soon as I began developing the board, I could see that I had a double exposure on side A and nothing on B. Ruined board, yanked and stopped for the night.
The next day, everything worked better. My single sided board came out almost perfect, there were a few grains of copper shorting traces in one area that must have had a thin bit of resist still not removed. This tells me to go a bit long on developing once it appears to the eye to be complete. A bit of work with a razor cleaned out those shorting particles in the grooves. I am busy soldering the parts onto the board and hope to have it ready for the weekend.
One bit of advice I have been following is to 'pour' a ground plane on each side after finishing all the traces - this is a good practice but has some downsides. With ground wrapping around every pad and trace, any small misalignment of a part or hole produces a short to ground. In particular, my 1206 size resistors don't have a lot of spare room around the pads and the process of installing them without shorts is very slow and tedious.
The double sided board worked out pretty well also. I drilled a few holes for alignment, as I had mentioned, but even with wires in the drilled holes, there is a bit of slop that results in slight misalignment. It was enough that the through holes for the 16 pin DIP resistor packs didn't span far enough to drill one hole that would not hit ground plane on one side or the other. I am reworking this by cutting the ground plane into disconnected segments near the pins in question, thus removing the ground short.
In both cases, the poured ground plane produced problems that would not have occurred had I put down only traces and pads. The tool I used did not seem to have a setting that would increase the gap from the ground plane to the other elements on the board, as that would be a good compromise. I may be able to block off areas that are likely to cause problems, leaving them free of ground plane, but that does not look like a simple process with the design tool I am using. I believe that my next version of the double sided board, the interface card for the disk, will be built without the poured copper option.
Saturday morning, ran off terminator and connector card PCBs without copper pour areas. These are good enough to use, so I set into assembly and testing.
The terminator card was perfect except for one trace that had a hairline break where mask wasn't dark enough due to laser printer variations in density. I soldered a bridging conductor in place, drilled the holes for the thru components, mounted and soldered them, then put on silicon conformal spray to insulate and protect the board. I have to cut this on a jig saw to the width of the DEC cards and form the cutout shapes around the fingers where the card will mate with the disk drive backplane connector.
|Terminator card before trimming, shaping and handles|
The connector board is a variant of the terminator board, where I will use headers in place of the resistor networks to connect ribbon cable leads and I slightly simplified the board design. I am not sure if the laserjet mask was too light in a couple of critical spots or if I overdeveloped the board eating away too much resist, but the board came out of etching with a number of traces very light and probably not conducting well. I can bridge them all by soldering down bare wire, since the key parts, such as the fingers and the header connections, are in good shape. When it tests out well, I will install headers and add a silicon conformal coating for protection. Final steps will be to mount the handles, cut out the notches and clearances around the fingers and solder on the ribbon cable.
CONSOLE PRINTER (SELECTRIC MECHANISM)
I set up the testbed for debugging the full fpga logic handling the console typewriter. A logic analyzer is recording the output lines my logic will activate, an Arduino is delivering the feedback signals with realistic timing, and I have to enter a small program to write to the 1130 printer device.
The temporary method I use to preload 'core memory' with test programs, until my full console with switches, rotary switch and buttons is operational, is a bit complex to set up because every other word in the memory on the fpga board is for the two parity bits, thus when I load a program I have to remember that two adjacent addresses in the 1130 are separated by a parity word on the Digilent board. This is invisible to all the 1130 logic and operator console, but exposed for my memory loading shortcut.
My first trial didn't work, because I forgot about the memory word and thus ran a program with every other instruction missing (hiding in the parity words). The machine is running with the CE switch 'Parity Run' active, thus ignoring parity errors. This frees me from having to figure out the proper parity and load it along with my code and data.
It took a while to shake out the tool code in the Arduino and some wiring issues, but now I am able to test and debug my logic. The first logic issue in the fpga was failure to release the escapement clutch to allow the carriage to move. This would have caused the typewriter to repeatedly strike the same location with whatever I attempted to type. I don't like the FSM logic that is handling the movement because it is trying to count emitter pulses as well as controlling stages of movement, which is where it got into trouble.
I have an idea for a different approach which I will substitute for the existing movement logic, one that separates the counting of emitter pulses from any movement state. One bit of logic will track the current carrier location by adding (or subtracting if in reverse) emitter pulses. The movement logic will have a target carrier location when it begins any kind of movement and will come to a stop when the current location matches its target. Much simpler approach, should be more resilient.
Debating Arduino versus raspberry pi as the printer interface microcontroller. Operator interfaces easier with the pi but the Arduino Mega model supports multiple serial ports as it comes out of the box, has plenty of performance to handle the work of translation and carriage tape emulation. Will sketch out approach with Arduino for user interface, see if I can come up with an acceptable strategy; if so, the Arduino wins.
After some thought, I decided I could use a touchscreen interface with the Arduino to define and/or select virtual carriage control tapes, also allowing me to select among some preconfigured 'print chains' if I need more than a standard one. I have ordered a shield with an 84 by 48 pixel screen and a joystick, a mere matter of some programming and I can box this up. The Arduino Mega I will attach it to supports up to four RS232 links, but I only need two - one from the fpga and one to the HP printer.
One important caveat about the RS232 support the Arduino offers - that is the protocol but the voltage levels are TTL, +5V and 0, not the higher voltage levels of true RS232. I need to do level shifting or translation, which means a small amount of added hardware beyond the Arduino and its interface screen. More specifically, the printer side uses RS232 with swings of up to 25V plus and minus, logic inverted, so one of our connections has to adjust this to TTL logic. The other link goes to our fpga, so it has to be voltage shifted down to 3.3V for logic 1, ground for logic 0. We will use a MAX232 or MAX3232 for the true RS232 side and a 74AHCT245 to match the 3.3V fpga side. I bought a few of each chip type to prototype and try out ideas.
I began working on the code for the Arduino LCD display, solving a few compatibility and version problems with the library for the device first.
|Arduino screen shield to serve as printer controller|
I have now completed wiring the new auxiliary board for the keyboard - this board uses comparators to more reliably detect the photocell states when keys are pressed. It is hooked between the photocells and the main keyboard interface card. The main card still provides the local keyboard unlock function and the multiplexor channel carrying the data to the fpga,
|Keyboard auxiliary card, when done except for a few point to point wires.|
CARD PUNCH WORK
I picked up the laser chiller, which will need a 12V power supply, a checkout and then be attached to the card punch in lieu of the ammonia cooling. This will pump glycol through the punch head and remove the heat.
|Laser chiller unit that will cool the card punch head|
The input side of the card reader is complete and in its enclosure, accepting a line for the pick command and a pair of lines that form an I2C link to the fpga. I have designed the use of my generalized output board to host the pick command, drive the five lights of the 2501 control panel, and to remotely operate two buttons on the documation - stop and reset - to allow me to mimic the 2501 to the operator and the 1130 logic. To complete the requirements, I have to accept three more input signals, assigned to the 2501 buttons Start, Stop and NPRO on the control panel. I can use three of the output channels of the board as inputs, simply by changing the initialization pattern sent to the MCP23017.
The five indicator lights are powered by transistors on the board, the pick is just a direct TTL link as it has low power requirements, and I installed two relays to handle the remote switches on the documation. The Stop button on the documation reader is a normally open button that grounds a line when depressed. I tapped onto those two lines and brought them out to my output board where they hooked to a normally open contact on a relay channel. The reset switch is more complex, as it delivers 5V to one wire when not pressed, switching the 5V to the other wire whenever the button is activated. I will cut the two lines from the switch on the documation, carry each side of the wires out to the output board where those four wires are swapped by activation of another relay channel.
The three pushbuttons from the 2501 panel will be debounced by a small daughterboard I will build. It will use a DIP MC14490 debouncer chip I have left over, putting it on some perfboard. and mounting it behind the 2501 control panel.
Today I completed the output board and daughterboard for the reader, all that is left is testing and installation into an enclosure.
|Output board set up for card reader - 2 relays, 4 LED drivers, picker driver and 3 input channels|
|Debouncer daughter card for 2501 panel pushbuttons|
I am helping out with several interfacing tasks to help some museum restoration teams working with old IBM equipment. For one project, they want to make use of two paper tape peripherals but they have no documentation for how IBM handled those with the 1401. For the other project at another museum, they are restoring a 360/20 but that model did not attach to peripherals with a standard channel interface. If I can create a channel interface for the machine, they can leverage other 360 peripherals to achieve an operable system. A third effort needs to interface a 1403 printer to a 1440 system and are missing some circuitry to make this work.
I met with a member of those teams, who coincidentally I had worked with about thirty years ago, and we will work on some approaches and understand all the goals and constraints.
In order to do these tasks, I need to study the IBM 360 channel protocol and electrical requirements, in order to create a 'channel' for the control unit of the peripheral, allowing it to believe it is attached to a 360 multiplexor channel. If disks or tapes or other very high speed devices are desired, I will need to model the 360 selector channel for them. Second, I need to study and understand the 14xx series logic levels and electrical needs. Third, I must understand what a 1401 requires from its adapter circuits in order to drive a peripheral device. Fourth, I must understand the specific peripherals well enough to drive them properly.
I received a full set of logic diagrams (ALDs) for the 360/20 and have access to the 1401 diagrams when I need those. I have already glanced at a few devices that I know well from the 1130 and see that the lines from the device into the 360/20 and the 1401 seem to be the same ones that are connected to an 1130. That means that I have full documentation of how an adapter works to drive the peripheral, although the 'inbound' side of the adapter maps this to the 1130 signals for I/O. Once I know the 1401 and 1440 signals and protocols for I/O, I can alter that part of the 1130 adapter logic while keeping the portion that is concerned with the device. A mere matter of writing some VHDL, some electrical and logic level translation outside of the fpga, and then testing.
The paper tape devices will be the best choice for a first project, since I have them so fully documented and well understood, plus they are very, very simple devices that need little logic in the adapter. This will let me concentrate on the 1401 I/O requirements, thus having mastered that my issues with the other 14xx task will be limited to understanding the peripheral itself.
The 360/20 channel effort will be more complex and substantial. I will be doing the research and development in parallel with the 14xx tasks.
MAG TAPE DRIVE
I hauled out a 9 track tape drive I bought several years ago and have been storing in my retro technology museum - aka my home office. It was packed poorly by the seller and arrived with quite a few dents in the outside. Time to open it up and assess its condition, then restore it if possible and work out an interface for the 1130.