Saturday, September 27, 2014

New keypunch interface construction work and 1132 printer testing

NEW KEYPUNCH INTERFACE CONSTRUCTION

I picked up the enclosure and connectors then launched into soldering up the wiring inside the box, from the DB-25 connectors to the two banks of relays. The punch cable is done - 23 wires involved. I mounted one of the relay modules in preparation for hooking it up.

Punch cable connector wired up and one relay module installed
Tomorrow I will wire the connector for the read cable, mount the second relay bank and then wire all the relays to their appropriate connector pins. The remaining steps of wiring the read wires and a few sensing wires from the other cable to the Arduino will have it prepared for initial testing.

1132 PRINTER RESTORATION

I placed the long program in memory and cabled up the printer to do some quick testing. My first run had some flaw - I could see the printer sending the emitter interrupts telling us a new character was rotating into position on the print wheels, but I wasn't properly checking the value or setting the print scan buffer at x0020-x0027 with the proper end bit.

Printing involves the following. An XIO to the printer starts it printing. In that mode, as the print wheels are spinning, each character that comes in position to print causes an interrupt. My interrupt handler has to sense the device status, verify that it is a emitter interrupt, meaning a new character is ready to print, then set up bits for each column where that particular character should be printed. These bits are set in a fixed area of memory, locations x0020 to x0027, called the scan area. Along with the string of bits matching the 120 columns of the printer, the last bit of the scan area (word x0027) has to be set on.

The printer begins fetching the scan area words and firing print hammers in any column where a 1 bit is found. It checks the last bit of the scan area since that is proof that the software has set up the proper columns. If the bit is off, meaning a new character interrupt came to us but we didn't respond fast enough to set up the scan area, then the printer recognizes a print scan check error.

When our program is sure that there are no more unprinted characters, having already received an emitter interrupt for each character that exists in the print line, then we command the printer to stop print. That simply means it should no longer send emitter interrupts or fetch scan words. At this point we can ask it to space down one line or skip to a channel with a new command for that purpose.

My code verifies it has an emitter interrupt, then checks the character against the specific set we plan to print. If no match, we set the scan area to all zeroes except for the last bit. This says that the character doesn't exist in our print line so don't fire any hammers. If we match, it sets the scan area to a specific pattern for which column will have that character printed, plus the final 1 bit. As well, with a match we decrement the count of characters to print. Once the count goes to zero, we command the printer to stop print.

I looked over my code and found a few mistakes - hand assembling code, keeping track of addresses, calculating relative addresses and watching for proper alignment of long format instructions is a lot of work using paper and pen, thus easy to slip up in longish sequences that must be entered in with the console data switches one word at a time.

It is late and it will take a while to toggle in the code again, since enough of it has shifted or changed to warrant a reload. This will be done tomorrow.


SOMETIMES WHAT SEEMS LIKE A CONVENIENT SHORTCUT IS NOT A GOOD IDEA

Fortunately, this entry has nothing to do with the 1130 restoration. Yesterday, my wife and I visited the pharmacy to get flu vaccinations. While there, the pharmacist talked us into adding the pneumonia vaccine, getting both injections in the same arm.

By late evening yesterday, my arm was extremely sore, very painful to move or touch. It is common to have some soreness, particularly if the muscle is abused with two separate injections on the same day. In this case, the arm was essentially unusable until the evening today and the pain was enough to keep me from getting any sleep until it began to abate around 6AM, but with work commitments I snatched only a couple of hours sleep.

The amount of work I did on the 1130 before 4PM was zero, but once the arm began to be usable without much pain, I did accomplish a few things as you read above. Moral of the story is that, where feasible, injections should be separated by a week.

No comments:

Post a Comment