{"id":1996,"date":"2026-08-21T13:31:57","date_gmt":"2026-08-21T18:31:57","guid":{"rendered":"https:\/\/www.computercollection.net\/?p=1996"},"modified":"2026-08-21T13:31:57","modified_gmt":"2026-08-21T18:31:57","slug":"ibm-1410-fpga-ibm-1414-unit-record-devices","status":"publish","type":"post","link":"https:\/\/www.computercollection.net\/index.php\/2026\/08\/21\/ibm-1410-fpga-ibm-1414-unit-record-devices\/","title":{"rendered":"IBM 1410 FPGA: IBM 1414 Unit Record Devices"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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.   <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, the I\/O Synchronizer manual did have important information, including high-level logic diagrams and some descriptive information.  But since I don&#8217;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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, as usual, there was some trial and error and bug hunting involved in getting things working.  The hardest parts were:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Handling of the No Transfer condition.<\/strong>  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 <em>not<\/em> stacked until a subsequent Select Stacker and Feed instruction occurs, by specifying &#8220;stacker&#8221; 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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>End of File<\/strong>.  The 1402-2 has a special &#8220;End of File button&#8221;.  This button is used to generate the 1402 &#8220;Last Card&#8221; 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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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&#8217;t find until I was testing the 1401 mode &#8211; the subject of yet another post to come.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Havine done all of that, and debugging with the aid of the original 1410 reader, punch and printer diagnostics, I got it all working. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The entire process happened over the course of abuot 6 months in early 2026.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 &hellip; <a href=\"https:\/\/www.computercollection.net\/index.php\/2026\/08\/21\/ibm-1410-fpga-ibm-1414-unit-record-devices\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;IBM 1410 FPGA: IBM 1414 Unit Record Devices&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,7,15],"tags":[],"post_folder":[],"class_list":["post-1996","post","type-post","status-publish","format-standard","hentry","category-computers","category-electronics","category-ibm1410"],"_links":{"self":[{"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/posts\/1996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/comments?post=1996"}],"version-history":[{"count":1,"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/posts\/1996\/revisions"}],"predecessor-version":[{"id":1998,"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/posts\/1996\/revisions\/1998"}],"wp:attachment":[{"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/media?parent=1996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/categories?post=1996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/tags?post=1996"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/www.computercollection.net\/index.php\/wp-json\/wp\/v2\/post_folder?post=1996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}