Sunday, November 9, 2014

Keypunch now reading except it misses column 1 of each card - more progress on SAC interface


I looked inside the CHI interface box and really like the idea of using five dummy PCBs in the slots to connect to the SAC cable signals. With the CHI receiver/driver cards removed, nothing touches those leads, making it safe for me to use the sockets as a connector.

SAC signal wires are colored ones along left, connecting to backplane

The back side of the 160 pin socket with its colored wires in groups of 20

Front of the 160 pin socket
I will buy or make some 22 pin boards of the requisite width, then solder on leads from my interface boards. This isn't ideal electrically, as we get some discontinuity at the 160 pin connector, again at the socket and PCB, and then where the lines join my circuits, but hopefully the circuit is robust enough to tolerate any small reflections caused by these flaws.

I found prototype boards that are the right size, width, pin count and intended to plug into these sockets, but the cost for the five boards I would need will be about $130 with cheapest shipping. A second option is to use push-on terminals on the wirewrap backplane in the CHI unit but that makes it very difficult to switch back to using the CHI logic. A third option is to go ahead and by a 160 pin socket, wire up all the pins and use it on my box, which would be about $50 more. I decided to go with my own socket, making this interface easily movable to any 1130 with a SAC interface.


I hammered away at the issue of reading the sense pins - the timing was an issue I had not yet resolved. After some experimentation, I found I could get a reliable read of the pins at 60ms after I involved a cycle, however what I picked up was a column too late. That is, when I do the first space I am seeing the pins corresponding to column 2. This will require some cleverness to resolve.

I also have a mismatch between the actual rows and which pins I am reading - which I believe is caused by several factors. First, I have a wiring swap to accomplish at the dup relay, where I know that the sequence of pins are incorrect compared to the DB25 cable assignment. For instance, the rows 1 to 9 are assigned to the relay contacts of the same number, while 0 is assigned to 10, row 11 is 11 and 12 is 12. This was not the sequence I used on the DB25 connector, but I corrected the wiring so everything lines up with our 'standard' keypunch wiring.

After a bit more testing, I am confident that the card reading function works well, other than the "first column" problem. I read cards successfully in both ASCII and BINARY modes. I haven't tested the 'verify after punching' mode yet but that shouldn't be too bad since it mostly uses existing and debugged logic.

I checked to see whether I could see the hole pattern when the card is registered in the read station but before I punch the first space, but that doesn't work. My proposed solution is to use the multipunch feature to punch a space, assuming the keypunch can handle this mixed signal, then drop the multipunch key and issue the space again. That way I might read the initial column while in multipunch mode and get the second column as part of the first real space.

I do have to experiment to see if this can work - testing the logic of multipunching a space but also seeing if the escapement occurs immediately, moving me past column 1 on the read station. If it moves first, I will need a plan B and I don't have a clue right now about how I might address the issue.


I completed testing of all the circuits on the four boards, which helped me find two solder bridges and one resistor lead that wasn't soldered down. I then made the decision to buy a 160 pin socket, wire up all the pins and use it on my box. Ignoring the socket on the CHI interface and using my own makes this interface easily movable to any 1130 with a SAC interface.

My testbed to verify the circuits worked properly


  1. Check the schematic for the operation of the DUP key. Surely the KP is capable of dup'ing a field starting in column 1? So, it has to be able to both sense column 1 and punch column 1 during a DUP cycle. Oh! Maybe that means that on a DUP it does some kind of overlap? On the first column of the DUP field, it just does a sense, no punch (storing the sensed values somewhere, in magnets or latches); and on succeeding cycles it punches the prior column while sensing the next one. That would probably explain why you can't pick up column 1 but you can read 2 and so on. So look at how the DUP works and I bet there will be some provision for a no-punch, sense-only cycle.

  2. Yes, David, you are on the right track. When you use the DUP key, it is called a manual duplicate (contrasted to auto DUP driven by the program drum). Manual dup is done with two punch cycles per column, the first is called a 'dummy punch cycle' which rotates the mechanism to raise the sensing pins to read the holes in the 'master' card. Those holes trigger the solenoids for the holes to be punched, then a relay that is latched blocks the punch cycle from ending so it starts a second cycle where it really punches the holes in the card. The second cycle is when the card moves to the next column (just before the holes are punched).

    All this is done by sequencing of at least four relays that orchestrate these steps.

    When a card is first registered in the keypunch, the card that will have holes punched (the 'detail card') is sitting at column 0 and simultaneously if there is a card in the master station (that will be duplicated) it is sitting at column 1. The cards move in unison but are not on the same column number.

    When a key is pressed and holes punched, the first step is to release the escapement to move both cards forward one column. Once that ends the punch cycle begins, driving the punches through the card stock. This is why I wasn't reading the first column - the master card will be moved to column 2 while the detail card advances to column 1, and only then does the punch cycle run which drives the sensing pins. This is why in normal punching, column 1 will never be sensed.

    I found a way to trigger a punch cycle without activating any of the row magnets and without triggering a movement first. That makes it the same as a dummy punch cycle, so it does a sense of column 1 of the master card and leaves the detail card at column zero. Once I have the data, I revert to normal punching for the rest of teh card, where each character causes a move forward then punches the holes.