Friday, January 9, 2015

Shed construction progress, now installing roof panels, plus software work on keypunch interface program for PC

NEW KEYPUNCH INTERFACE DEVELOPMENT

I made the decision to use the wxPython module with the PC application I am writing, which provides a Python interface to use the wxWidget library which is a set of C++ classes to build and operate a GUI, including on Windows.

I did a bit of studying to understand the basics of the toolkit and will begin wrapping that into my code. It is higher level and more 'Pythonish" than the windows API itself or some other GUIS. The alternative GUI module would have been based on TCL/Tk, which would add a second interpreter and two more languages for coding. Even though I did some work with TCL and with Tk for GUIs about fifteen years ago, I didn't want to add the re-learning curve to the other costs of this part of the keypunch project.

The learning curve is certainly steep enough. I am using Microsoft Visual Studio, with Python installed, several packages, including pySerial and wxPython. I can't seem to get the wxPython to be recognized and used with Python 3.4, so I will try to put it on Python 2.7 for which it is known to work. Due to unfamiliarity, at each error message it takes a while to understand what is being said, where the problem is, and how to apply a fix at each level of the software (from VS to Python to the installers to the package to my code.)

I have the packages installed on Python 2.7 and working, but am at a very early stage of building up the GUI. I have a bit of design work to do now, thinking about how it will work, what controls are needed, etc.

I collected some pictures of the components and construction steps of the interface box, which I will use to update the construction manual.

DATACENTER SHED CONSTRUCTION

The last piece of flooring continued to be extremely difficult to get to interlace with the remaining tiles. I tried to reverse bend the flooring to remove some of the wave that is in the end that causes the problems. I also have a wave in the installed tile end that this piece will mate to, which might require unbending of that piece as well.

Finally, I decided I had to cut most of the tabs off of one side, since it absolutely refuses to go together. I will depending on the anchoring of the floor to the platform that will take place later as a way of holding these together, as well as the wall panels which will provide some paltry support.

Cutting off the tabs that refuse to interlock
All it takes is one section of the job that is impossible to do as "designed" to sour my opinion of Lifetime and their HDPE plastic sheds. I will get this together but the design is not at all tolerant of any bend the parts develop, and the video for additional help on this step is no more than the two sentences in the manual - push them together at a 45 degree angle to interlace the tabs then lower.

I also found the references to screwing the panels together through the 'divots' in the floor made sense only when I viewed the video and saw entirely different flooring, which had clear round depressions for the screws to enter, but there is nothing at all in the panels included with my kit. Stale instructions, changed parts. Obviously no QA assembly of the kit was done after the change (or nobody paid any attention to the mismatch between the manual and the divot-less tiles).

I can't believe this hasn't happened to other customers. I recommend against buying any of their products based on this. Otherwise I had a bit of bashing that was necessary to put the hinge rods into the doors (which also had developed a bend), yet everything else was well designed, fit together nicely and was well documented.

Whether the bend developed when they were trucked (since the shed was about a half ton weight in its two boxes) or while the panels were stacked waiting for the platform to be built, this is a problem with the parts. I did comb through the manual to see if there was any mention at all of preferred ways to stack them, on the assumption that 100% of the bend happened here on site, but there is nothing anywhere in the manual or on their site that suggests they could be warped by how they lay.

Once I had thoroughly removed the tabs from all but the two on each side, I got the pieces to lay in proximity allowing me to continue installing wall panels. There is a gap in the middle, but I can fight that together later. I then installed the rear and remainder of the right side, getting me to about 60% completion, before I took a necessary exhaustion break.

After lunch, I returned to the shed and finished up the walls. In a few places the wall section was very balky, requiring a lot of wrestling and occasionally some heavy banging with a rubber mallet. Once they were all in place, some shelves got installed. I had to rest for a while before I began on the doors and front gable.

The process of installing the doors is very tough to do without two other people helping. Six foot tall doors are pushed into a plastic foot, but there is nothing to hold the rest of the door up or in position. One fell over, twisting the plastic over 120 degrees as the top of the door bent down to the ground. With the door teetering on its rod at the bottom, you need to lie down and push a cotter pin through the rod and plastic foot.

If you get one done, you are then installing the second door in the same way, while the first door is still teetering without support. Hard to hold two doors up while pushing a cotter pin through the second rod. It gets worse. You then have to lift up the front gable and lower it onto the rods of the two doors (which are still teetering). Even when it is attached to the doors, nothing holds the gable or the doors so the entire assembly wants to twist 120 degrees to lie top down on the ground.

It would have been good to have the instructions mention the need for two helpers at this point (not just the generic comment that assembly requires three people for the entire shed) and to suggest how to hold them in place while the pins are pushed, the gable is fitted and then the screws are put in to secure the gable to the front walls.
Rear tile separated as I had to shift the shed during wall installation - will have to fix later
With the gable fastened down, I moved to roof installation. A truss is placed onto the walls, then the roof panels are placed and screwed down one by one. Unfortunately, all the roof panels are warped, most are not too bad so I started with those. A bit of wrestling is needed to get the screws in each portion to pull out the warp and cinch down the roof section.
Shed with doors and gables installed, beginning roof panels

First roof panel in place (notice how tight it fits to the available space
Daylight ran out by this point so it was time to call it a day. Tomorrow I finish the roof panels, after which some roof caps get screwed down, skylights installed into those, windows installed and finally the shed can be anchored to the platform as a completed project. 

Wednesday, January 7, 2015

Shed work, keypunch interface coding and 1401 restoration work

NEW KEYPUNCH INTERFACE DEVELOPMENT

I worked on the program to drive the keypunch interface - it is written in Python (because I like the language) and will serve as a reference for using the interface if other users want to write their own code to accomplish specific tasks with a keypunch.

This program will open text files on the PC and punch their contents using the keypunch. It offers some rudimentary error checking of the files and the ability to restart from a specific card image after jams or other problems arise. In addition, the program will read cards from the keypunch into a text file until the user tells the program that the last card has been read.

I am documenting it sufficiently that someone who doesn't know Python can still understand the flow and how you would use the keypunch interface box, although they would then have to code it up in their choice of language without a template like mine to copy.

I built the overall program structure, but not the file read/write functions or the protocol with the interface box. It was time to finish for the evening so I put it aside for another day. The code is in Python, using pySerial to control the serial stream and likely will make use of wxPython to give it a modern GUI.

DATACENTER SHED CONSTRUCTION

The seller of my shed is redeemed, now that I have figured out the touch and snapped in 40% of the walls in just a few minutes. The final floor tile piece is still too stubborn to interlock, but I will have some help tomorrow and get it sorted out. I had to stop with the walls when I reached the missing floor tile, otherwise I would have had all the walls installed in short order.

CHM 1401 RESTORATION WORK

I went to the Computer History Museum in the late morning to help out with some of the recalcitrant machinery. We were working on a pesky problem where the 1402 Card Reader/Punch would sporadically signal read checks on column 49, although the data entered into memory and the card itself were fine. Further, the brushes and everything else we could find seemed to be working properly.

A few of the team members hooked in a temporary fixture to the 1401 which would reverse the read and check brush inputs. The reader has two sets of brushes, each of which sends it character to the reserved memory location (the reader uses locations 1 to 80 in core, specifically location 49 for the failing column). If the two don't compare equal, a reader check is raised. The error could be on either set of brushes, the check is just to ensure they match.

However, the machine didn't work when they powered it up. It was displaying storage errors even through we saw valid data coming out of memory. We began working through the logic diagrams and putting various signals on the oscilloscope to determine where the problem was originating.

At some point as we opened logic gates, inserted probes and checked signals, we opened a logic gate and as one of the members was pushing on the probe, we spotted that a number of the backplane pins, where the wirewrap connections are made, were bent over with a couple shorting to each other.

After powering down and straightening out the pins, we brought the machine up to find our storage problem gone. A power cable for a cooling fan was curving into the space where our logic gate fits when closed and the cable was what snagged and bent all the pins in an arc at the corner which struck the cable. The cable was moved out of the way and secured with a cable tie, to ensure this didn't happen again.

We ran some code and tests successfully , then shut it down in order to go up to a conference room for the group lunch. After a quick meal and some conversation, we went down to the machine. The jumper fixture to reverse the check and read brushes was reinstalled by another member and when we powered back up, we had a new storage problem. Nothing was going into or out of the first 4K characters of memory. A quick look reassured us that the pins were okay.

We began tracing logic and checking signals for this new storage issue, which after an exhaustive verification showed us that the control, data and timing signals were operating correctly. To test further, we had to verify that the cores were actually being driven to flip state, the central process behind core memory. However, these lines were current driven, thus no voltage swing was there to monitor with the scope. We would need to begin sensing with a current probe.

Not having one handy, we began to clean up and leave the machine for the next day when team members would be in to service it. The special fixture was removed that swapped read and check brushes, when someone decided to power it up one last time. It worked again! We have a definite problem in the fixture, which is an approved service tool that has been used by IBM engineers for decades to debug 1401 systems.

Something is definitely wrong with the fixture - we will sort that out next time, when we also try to dig into the read checks on column 49. I will be away on a trip next week but there are quite a few other team members who will be in and working on this. Sometimes the problem is not the machine, it is the tool! Good to remember.

Meanwhile, the card punch on the other 1401 system had been getting punch checks due to skewed cards entering the machinery, but someone spotted a missing screw on the throat bracket that allows just one card to enter per cycle. Replacing that resolved our checks, giving us a 1402 that read and punched just fine. 

Tuesday, January 6, 2015

keypunch repair completed, shed construction continues as the base and flooring are installed


NEW KEYPUNCH INTERFACE DEVELOPMENT

The new feed wheel is noticeably larger in diameter than the worn item it is replacing - this would definitely have caused the symptoms I experienced. I installed the wheel in the keypunch and it now operates exactly as it should - cleanly registering cards to the read station, cleanly ejecting and clearing cards up to the stacker.

Here is a very short video of the cards registering and then releasing properly. Video of correct registration and release

I hooked up a terminal and repeated a few tests now that I can check for some more automatic behavior that depended on autofeed, proper registration and release of cards. Card reading was flawless, as was punching. The one function that isn't working reliably is verification mode, where the interface reads the card it previously punched while it is punching the next card, comparing what it had punched into the card to what is sensed at the read station.

I will do some more testing later this week and see if I can tighten up the operation of verification mode. I have moved on to finishing documentation and providing sample programs to exploit the interface box.

DATACENTER SHED CONSTRUCTION

I was down to only two pilings that had to have their height adjusted, with the framework sitting flat and level. After tweaking the pilings, it was time to haul the plywood sheets around and screw them down onto the framework. By mid afternoon I had the sheets in place and was finishing up screws to hold them down to the frame. With more than 100 screws to ensure it was tightly together, it did take some time to complete.

Starting to install plywood sheets atop the framework
I prepared the key parts to assemble the plastic floorboards that sit atop the platform I just built. By the early evening I was assembling the floor panels on the base. That was when I discovered that these plastic parts didn't just pop together like the instructions promised. The floor plates were bent a bit and that made it very hard to engage all the tabs necessary to link the floor plates together.

I managed to wrestle four of the five plates together, with the help of my son-in-law, but the final plate just wouldn't fit into place. I finally had to walk away, returning to this tomorrow to try to finish the flooring and begin erecting walls. The walls have tabs on the bottom which are supposed to just snap into slots in the perimeter of the floor plates. I attempted to put up the first corner section but was unable to get any of the tabs to engage.

Monday, January 5, 2015

Data Center Shed construction day 3 plus some other work

I went into the Computer History Museum today to work with a few of the team members trying to restore both of the 1401 systems' card reader/punches to full operation. We have broken parts, maladjusted machinery and oxidized connectors which had to be faced. A great deal of progress was made but we still have erratic read checks on one machine and punch checks due to skewing of incoming cards on the other machine. At least all the other problems appear fixed.

DATACENTER SHED CONSTRUCTION

This morning I installed the three cross beams on the platform base that will have limited accessibility when the framework is put in place on the pilings. It is now ready to be moved onto the pilings once I get them suitably level and properly situated.

Placing and leveling pilings
The pilings were tweaked and leveled, then the framework put in place. A few of the pilings still need some adjusting, but with just a bit of work tomorrow the framework should be level and ready for the plywood sheathing to be screwed atop it.

Framework ready to move onto the pilings
I cut the three major sheets to size today and have them ready to move into position. One of the remaining cross beams was nailed into place, the other two are ready to nail down tomorrow. There is one 4" by 93 1/2" strip of sheathing to cut, which will fill in the extreme rear of the platform after the three main sheets cover 144" of the 148" total depth.

Tonight I unpacked and organized the parts bags for the coming construction steps and located the first large plastic parts (floor boards) I will need. Since I feel optimistic that I can wrap up the construction of the base tomorrow, I will be assembling the rest of the shed beginning immediately afterwards.

Time to start planning for tasks in and around the shed

  • internal lighting (probably overhead fluorescent fixtures)
  • the power feed cord that will be connected to the outdoor fixture on the house
  • fan with thermostat and battery to keep temperatures reasonable on hot days
  • plan for outdoor fixture to feed 220V to the shed
  • temporary ramp to get the 1130 system up into the shed

NEW KEYPUNCH INTERFACE

I updated the documentation on GIThub for the keypunch interface, including pages from the 029 wiring diagrams with indications of where each wire should be attached for the cables going to the interface box. The project is public, named KPgolem, and has all the Arduino code and the construction manual uploaded.

I am working on a detailed wiring diagram for the interface box and details on the voltage regulator board I built for the unit. I also listed the specifications of the RS232 and relay boards I used for the reference implementation.

Over the next few days I will complete the other parts of the project documentation including a sample program to use the interface.

While at the CHM today, I picked up a replacement feed wheel for the keypunch, which hopefully will restore its ability to properly register cards at the read station. I will install the new wheel in the next couple of days and get the keypunch working well.

Replacement feed wheel for my 029 keypunch

Sunday, January 4, 2015

Shed construction day two

DATACENTER SHED CONSTRUCTION

Today was dedicated to work on the shed, leaving no time for work on the 1130 system.

I finalized the positioning of the 12 concrete pilings upon which the base of the shed will sit. Since the shed just fits into the space on the side yard, between the wooden fence at the property line and the living room fireplace chimney, the pilings have to fit against the fence. Each upright on the fence is set into cement in the ground, thus the piling can't be sunk into the ground at those spots. I worked out a siting and spacing that clears the sections of in-dirt cement and fits along the chimney brickwork.

The pilings have to be flat and in line, so that the wood framework will sit in the notches of the pilings and be level in all directions. The terrain was not flat, requiring some excavation under each piling. The pilings are roughly at the same height, based on using a large beam and bubble level, but some fine tuning is still needed.

I also cut all the wood for the framework to size, then began nailing in the cross pieces. I have all the cross pieces completed for the side that will fit against the fence, since there will be no space to swing a hammer once the framework is in place. Three crosspieces on the other side must be put in before the framework can be placed on the pilings, since these holes are partially or fully blocked by the chimney brickwork. The remaining cross pieces can be installed while the frame is in place.

Tomorrow I have to finish the leveling of the pilings, install three cross pieces, then haul the heavy framework over to its final site and place it onto the pilings. It shouldn't be too long from that point until the flooring is in place and I can start erecting walls.

I completed the right door assembly as well, so that all the sub-assemblies are complete and ready to put into place. Another task I did in between carpentry and digging was to plan out the placement of the 1130, its peripherals, the keypunch and storage for cards and disks. Since the inside space will be approximately 89" by 146", it will be tight inside. I have a workable layout. 

Saturday, January 3, 2015

Keypunch rehabilitation work and start of construction of the 'data center' shed

I skipped a day with the diary, including work from both Friday and Saturday in this posting. We are having a cold wave in California and it is hard to do much work when the work area is 42 degrees F inside. I lose part of the day waiting for it to warm up.

1053 CONSOLE PRINTER RESTORATION

I polled some typewriter enthusiasts to see if anyone had a spare motor pulley to replace the part that was corroded on my I/O Selectric mechanism. So far, no luck. I will check with Grainger and other suppliers to see if I can find a suitable replacement to fit a 5/16" motor shaft.



1131 DISK DRIVE RESTORATION

xxx




1132 PRINTER RESTORATION

xxx



CHI INTERFACE AND DISK DRIVE

xxx



1442 CARD READER/PUNCH RESTORATION

xx



NEW KEYPUNCH INTERFACE DEVELOPMENT

I set up a repository for this interface on Github as KPgolem, public as of yesterday (Jan 2). Initially I will upload the Arduino source code, following it later with all the details of keypunch modification, cabling, and hardware construction advice for the interface box.

I worked on the keypunch all day trying to get the adjustment right to allow the card to register in the read station but be able to move through when released. I could get one or the other but not both. I need to disassemble more of the keypunch to see what I might be able to do as a fix.

The eject and read head, the part with the two roller arms that sits over the read station, determines the relative timing of dropping the gate that blocks card movement to the movement of the two roller arms. The arm that registers the card does not move down far enough, although it may partly be a problem with how much the running feed wheel sticks up through the card bed from inside the keypunch.

I will take the card bed off and look more closely at the feed wheel and any shims for card bed height. If I can drop the bed or move the feed wheel a bit more forward, that could solve the problem. If not, I might need a bigger diameter wheel, as wear and age may have dropped the diameter below its effective range.

Keypunch after removal of card bed and other parts, then removal of feed wheel

Alternatively, I have possible modifications to the roller arm, either increasing the effective diameter of the metal roller or changing the rotary position of the arm when engaged to push it closer to the feed wheel, while the gate the blocks card movement is not yet dropped into the card path.

I removed the feed wheel and measured it - exactly 1 3/16" diameter at the rubber rim - although I have no spec to compare this to. The shaft on which it is rotated can't be moved forward, nor can the card bed be moved deeper. The only adjustable items are the feed wheel diameter and the positioning of the metal roller.

Feed wheel for read station registration, after removal

Eject unit that pinches cards onto the read registration (and stacker eject) rollers
I will check the size of the spare wheels at CHM to see if it makes any sense to replace the drive wheel. This will take a few days of investigation and work before I can get the keypunch working as it should.

DATACENTER BUILDING (SHED) CONSTRUCTION

I spent much of today working on the 8 foot by 12.5 foot shed that will house the working system in the side yard of my home. I built part of the wood platform upon which it will sit. The platform itself sits on 12 concrete pilings, even though it is pressure treated wood that could have been put directly down.
Building the framing of the platform for the shed
The reason is the uneven area, 100 square feet of it, that I would have had to level if I wanted the shed to sit directly on the ground. This way I only have to dig and adjust the height of 12 pilings, about 11 square feet worth of digging would be involved.

I have more work to do on the platform, including cutting and screwing down the 3/4" plywood sheathing that completes the substrate, in addition to the digging and setting of the pilings. However, it is less than a day's additional work to get the platform itself complete and ready for installation on the pilings.

The plywood sheathing won't be installed until the framing is on the pilings, allowing me to pick up and move the framing onto the pilings. The total weight would be too much if it was completely screwed together first.

I began construction of the shed itself, those parts that don't require the platform to be ready, such as trusses, gables and doors. I have only one of the doors left to prepare, after which I will have to wait. The following step is to lay down the plastic floor of the shed atop the installed platform, then erect the walls.

Trusses and gables built and ready to install
Left door built and ready to install

Friday, January 2, 2015

Keypunch mechanical issues addressed

New Year's Eve and kept pretty busy prepping the house for a party my daughter and son-in-law will hold for local gamers tonight. However, I was able to put in a couple of hours tuning up the keypunch. New Year's day, once all the overnight guests woke and left.  I was able to get back into the workarea and the 1130 for a while.

NEW KEYPUNCH INTERFACE DEVELOPMENT

I worked on the keypunch mechanism today, hoping to resolve several problems it has been evidencing. The first problem it had was inability to feed cards cleanly from the input hopper to the punch station. The second problem was failure to register at the read station when a card came out of the punch station. The third problem was failure to eject the card fully from the read station and move it up into the stacker. Finally, the read station card was not moving in sync with the columns of the card in the punch station.

I cleaned and adjusted the hopper feed mechanism. Several rubber rollers needed a bit of deglazing, to achieve approximately the same traction on both the left and right of the card. The original fault was skewing of the card as it was pushed down into the punch station.

Both registering at the read station and ejection to the stacker station are supported by metal rollers on arms that push down on the card to hold it against a rubber feed roller. The arms were not pushing down far/hard enough to cause the card to be moved across. I did some rough adjusting of the arm position and it fixed the eject issue easily.

However, the correct position appears to be very touchy, as each time I tried to adjust it, I either had the card registering well but unable to move through the read station on a release/clear, or it moved through the station but wouldn't reliably register. I will keep adjusting it until I get both registration and movement through the read station to work.

There is an official way to adjust this, which requires that the mechanism be partly rotated through a cycle until a cam reaches its high point, then a feeler gauge is used to measure the clearance to the roller. I don't (yet) know how to manually release and rotate the mechanism, thus I can't get the cam to the proper point to use the official adjustment method.

I believe the lack of synchronization between read and punch station columns is also caused by the same maladjustment of the arms, since the card has to stop in the proper place when registering, which depends on the pressure on that roller that is controlled by the cam. However, once the read station registration is working, I can check the card sync again to see if I have an independent problem.

I asked a fellow member of the 1401 restoration team at CHM about how to make the setting, as well as ways to follow the official adjustment process. Stan told me that he had to make the very same adjustment within the last few weeks on one of the keypunches at the museum. They did not use the official method, but did describe what worked for them.

It appears that I might have a wheel that is too small to work properly - the rubber wheel that the roller contacts, but if I can find a setting in between blocked release and failed registration, I can make do with this. If not, then there are a few spare wheels at the museum but a fair amount of disassembly is required to make the change, so I will avoid the change if it isn't necessary.

Based on the failure symptoms of the keypunch at CHM, fixing my adjustment problem will fix all the outstanding problems of my keypunch. I didn't quite get it sorted out today but I know this will be resolved soon.