IBM 1410 FPGA: IBM 1414 Unit Record Devices

With tape working, and after a several month hiatus, it was time to implement an IBM 1414 Synchronizer for unit record (IBM 1402 Card Read/Punch and IBM 1403 Printer) devices.

As with the 1414 Tape Adapter Unit (TAU), I unfortunately do not have the Automated Logic Diagrams (ALDs) for this unit either. It also turned out that it was easier to follow and implement the IBM 1414 I/O Synchronizer based on the 1411 Input Output Operations CE Instructional Manual (223-2692) rather than basing it on the CE Instructional Manual for the 1414 Models 3-4-5-6-8 manual (223-2590), though the later was useful as well. But the former had good information on the signal lines between the CPU Channel and the 1414 I/O synchronizer, and the signal protocols that the latter did not.

Of course, the I/O Synchronizer manual did have important information, including high-level logic diagrams and some descriptive information. But since I don’t actually have the real I/O devices, and because the interface is to the PC, rather than to core buffers inside the 1414, much of the material there was not extremely helpful.

A third manual that proved helpful was the IBM 1414 I/O Synchronizer OEM Information manual, A22-6701, because it listed the signals that go between the I/O Syncironizer and the devices, particularlly the IBM 1402 Model 2 card reader, for which I know of no manual available on the Internet. There are differences between this reader and the one used for the 1401, for example.

Of course, as usual, there was some trial and error and bug hunting involved in getting things working. The hardest parts were:

Handling of the No Transfer condition. The 1410 can read cards two different ways: The usual way is to specify a card stacker and to automatically feed the next card when one is read (I/O specifications %10, %11, %12, with %11 being the most typical. However, one can also specify that the card is to be read but not stacked until a subsequent Select Stacker and Feed instruction occurs, by specifying “stacker” number 9 (%19). Along with that there are rules so that if a card is read more than once (consecutive %19 operations) or not read at all (consecutive Select Stacker and Feed instructions), the I/O No Transfer status is set. The various sequences one might attempt, and what happens are outlined in the aforementioned I/O Operations Manual (223-2692) on page 62. Getting that all to work correctly took more than one try.

End of File. The 1402-2 has a special “End of File button”. This button is used to generate the 1402 “Last Card” signal which tells the 1414 that the last card has been read and stacked. This turned out to be tricky. In the real 1414 there are a significant group of signals which track the card feed process, including some special ones for 1401 mode (I will write more on that in another post.) I ended up having to create a process in the VHDL just to handle all of the various triggers involved and their interaction with other signals to make this work right, and it was a bit of a struggle.

The good news was that having already implemented UDP when I set up the tape drives, that was already in place, though there was a significant bug that involved hangs when the console lights were enabled, that I didn’t find until I was testing the 1401 mode – the subject of yet another post to come.

Havine done all of that, and debugging with the aid of the original 1410 reader, punch and printer diagnostics, I got it all working.

With that done, I was able to test the PR-108 processor operating system and the all-important (to me, anyway) PR-155 operating system.

The entire process happened over the course of abuot 6 months in early 2026.