从IBM 1401 60s大型机维修打印机


计算机历史博物馆的IBM 1401大型机(左)在1403打印机(右)上打印Mandelbrot分形图像

计算机历史博物馆有两个工作中的IBM 1401大型机进行演示 ,但是几周前,其中一个突然使打印机失败。 我帮助修复了它,但是它比我们预期的要难。 在此过程中,我必须研究打印机中错误检查的逻辑,打印缓冲区,甚至是铁氧体存储器的低电平信号。 本文是关于我们的调查以及我们如何仍然发现有故障的锗晶体管的信息。

IBM 1401大型机于1959年发布,成为60年代中期最畅销的产品 :安装了10,000多个系统。 这台计算机的租金为每月2500美元(按当前价格约为20,000美元):这是一个非常低的价格,即使是中型企业也可以将其用于工资,会计,账单和许多其他任务。 IBM 1401由连接到称为门架的模块的小型电路板(称为SMS卡)组成。 下图显示带有打开的篮子之一的1401。 可以看到数十个棕色的SMS卡。


IBM 1401计算机,带有一个打开的篮子篮,您可以在其中看到许多SMS卡。 前盖上的风扇冷却卡

销售IBM 1401的主要驱动力之一是IBM 1403高速行式打印机,该打印机每秒可输出10行(IBM声称它的速度是其他打印机的四倍,但竞争对手对此说法提出异议)。 1403打印机的打印效果出色:只有1970年代的激光打印机才能超过此质量。 1个 IBM声称“即使在今天,它仍然是高速冲击印刷的质量标准。”


IBM 1403 Line Printer的文字链的特写(上下颠倒)

1403打印机使用带有字母的长链(如上图所示),使它们在纸张和色带上高速旋转。 锤子和电磁体分别安装在132个打印位置上。 在某个时刻,当所需的符号穿过锤子时,电磁体将其推到纸张的背面,结果纸张和色带撞到了链上的字母,从而打印出一个符号。 2


IBM 1401行式打印机的打印机制,摘自1401参考指南 ,第11页

不幸的是,计算机历史博物馆的打印机出现问题:每次打印该行时,由于“打印验证”错误,计算机停止了运行。 幸运的是,博物馆有一群志愿者,他们帮助维护该系统的正常运转。 参与解决此问题的专家包括Ron Williams,Frank King,Mark Verdell,Karl Clunch,Michael Marinu,Robert Garner和Alexey Toptygin。 到我来进行救援时,罗恩已经编写了一个简单的测试程序,反复尝试打印行。 他进入了手动模式并关闭了错误检查功能。 打印机按预期方式打印了字符。 因此,我们建议问题出在计算机内部错误消息的逻辑上。 策略是找到错误信号,将其跟踪到源-并确定原因。

我们首先检查闩锁电路,该电路包含打印检查错误的条件,并将其发送到计算机。 为了找到电路,我们检查了文档:计算机生成的接线图,称为自动逻辑图(ALD)。 以下是带有打印检查触发器(PR CHK LAT)的ALD的一小部分。 ALD上的每个矩形都与SMS卡上的方案相对应,而线条则表示卡之间的连接。 右侧字段中文本的解密表示一个实现“ 2 + AO”功能的2JMX卡 ,在现代术语中,该功能是带反相AND-OR逻辑电路。 每个字段中的文本还指示卡的位置:它的篮子(在本例中为01A6)以及卡在内部的位置(F10)。 因此,为了用示波器测试锁存器的输出(用H表示),我们打开了篮01A6,找到了F10卡,并将示波器连接到了引脚H。

我们发现,当引脚F和G通电时,引脚H发出低电平信号(错误),这是锁存器的正确行为。 引脚G(PR CK SAMPLE)本质上是用于采样错误状态的时钟脉冲,而引脚F是错误信号本身。 我们的下一个任务是确定是什么原因导致引脚F上出现错误信号。


IBM 1401计算机的自动逻辑电路(ALD)的片段,显示打印检查锁存器(PRT CHK LAT)。 此页面签名为36.37.21.2

在文档中,还存在逻辑级别的方案。 它们比ALD图中的物理连接更易于理解。 下面的流程图显示了打印机错误图。 在右侧,打印验证错误信号(PRT CHK ERROR)从包含错误信号的锁存器(PR CHK LAT)中出来。 (这与上面的ALD图中的锁存器相同,从信号名称可以明显看出)。 在其左侧组合了几种不同的错误状态,以形成提供给锁存器的错误信号。 (请注意,IBM逻辑符号与标准符号不匹配。半圆是“或”门,而不是I。三角形是I.门。矩形中的“ i”是逆变器)。


IBM 1401/1403中的错误检查逻辑的逻辑图。 摘自“逻辑指令手册”,第77页,“打印缓冲区控制”

几种情况可能会导致打印验证错误3 ,我们认为最可能的方法是检查锤子的操作(锤子着火)。 回想一下,在打印机132中是用于打印字符串的锤子。 为了检查它们,提供了两个特殊的存储矩阵。 (1401使用4,000个字符的4个核心内存 ; 存储器的每个位都是一个小的铁氧体环,根据磁化强度,它存储1或0。4000个核的网格形成一个存储矩阵。 许多矩阵相互堆叠,形成一个内存块。 每次计算机决定启动锤子时,它将以相等的校验矩阵将其写入铁氧体存储器。 当锤子实际跳闸时,来自电磁体的电流脉冲会将位存储在跳闸矩阵中。 5 在每个扫描周期,计算机都会比较两个主要矩阵,以检查音锤的正确/不正确操作,如果不遵守规定,则会产生验证错误。


IBM 1403中电磁体的特写镜头。电磁体(当通过其一对导线接收到脉冲时)抽出一个金属电枢,该电枢控制着字母对面的锤子,纸张和色带。 总共安装了132个木槌,每列一个,分两排,共66件

经过一些复杂的操作6 我们发现问题不在于检查锤子的操作,而在于另一检查:“打印线已完成”(打印线已完成,PLC)。 它检查每列中的每一行是否打印不超过一个字符。 这里使用了第三个特殊的存储器矩阵-矩阵“行打印完成”。 每次打印字符时,将设置相应的位。 (对于空字符或不可打印字符,该位由单独的电路设置)。 在该行的末尾(扫描49时),检查所有矩阵核。 如果它们中的任何一个为零,即打印机无法打印此列,则会显示一条错误消息。 (在前面的逻辑中,您可以看到PLC CHECK信号及其生成逻辑)。

用示波器进行的测试(如下所示)表明已触发PLC CHECK(黄色),因为系统认为第二个字符已打印在同一列中。 青色信号是内核(PR LINE COMP LATCH)的(反相)PLC位; 每个较低的脉冲指示此列中字符的打印。 粉红脉冲(打印比较)表示正在打印新字符。 问题在于,青色和粉红色信号会同时减少,从而指示该列中既有字符又有新字符。 这将产生一个紧急蓝色脉冲(PLC CHECK),该脉冲将启动一个黄色脉冲(来自锁存器的PRINT CHK ERROR)。 该图显示在先前标记为“尝试两次打印位置”的逻辑图中。


调试IBM 1401打印机时的示波器信号

系统为什么认为一列中印有两个字符? 这可能有多种原因。 在打印输出上,我们看到实际上打印机仅在纸上显示一个预期的符号,因此,用于打印符号的电路显然可以正常工作(PRINT COMPARE,顶部为单个粉红色脉冲)。 我们检查了空/不可打印的字符方案,它正确检测到空列和非空列。 因此,最可能的问题是从存储核心(上面的青色线,PR LINE COMP LATCH)读取1时应为0。但是真正的问题是:核心磁化强度错误或输出值错误?

下面的逻辑图显示了写入“打印行比较”存储器的机制。 右侧的PR LINE COMP INH是写入内核的(反相)信号。 8 扫描49(打印所有48个字符后的验证周期)时,将电压加到此行,清除内存。 如果打印了字符,则发出PRINT COMPARE EQUAL信号。 左侧的逻辑门定义空白或不可打印字符。 如果内核中已经存在位1(PR LINE COMP LATCH),则位1将被覆盖到内核中。


用于检查IBM 1401/1403中线路终止的逻辑逻辑。 摘自“逻辑指令手册”,第77页,“打印缓冲区控制”

我们发现该电路在内核中记录了错误值1,因为它从内核中读取了错误值1。 但是我们绕了一圈:目前尚不清楚最初的问题是在阅读或写作上。 为了解决该问题,我们将示波器设置为在PLC位复位时扫描打印49,然后查看下一次打印扫描,读取已清除的位。 我们看到0被记录(即高压PR LINE COMP INH),但出乎意料的是,我们看到了1返回(PR LINE COMP锁存器)。 我们意识到:铁氧体存储器中发生了一些低水平的事情。

值得一提的是,在标准1401系统中,打印机的控制位存储在铁氧体内存的主模块中,但是我们的系统使用单独的“打印内存”来提高生产率。 性能问题与打印机使用内存的方式有关:每当锤子与磁带上的字母相对时,如果存储器中的符号与锤子下的符号匹配,则计算机会从内存中读取相应的符号并启动电磁铁。 事实证明,该内存在打印过程中一直被连续使用-并且计算机在打印过程中无法进行任何计算。 因此,他们推出了具有132个内核的单独的打印存储器,用作打印缓冲区。 7 使用这样的缓冲区时,首先将打印字符串从主存储器快速复制到打印存储器。 之后,计算机可以继续使用主内存进行计算。 每个附加的IBM 1401选件均按月收取费用:打印内存每月收费386美元。


这是带有打印缓冲芯片的电路板篮。 黄色电线束连接到右上角的存储块

上面的照片显示了带有板子的篮子,这些板子实现了打印缓冲区的功能。 主内存模块是右上角带有黄线的块。 (在下面的照片中可以看到单独的铁氧体磁芯)。 铁氧体存储器需要大量辅助电路。 为了选择一个地址,驱动器卡产生X和Y信号,为了使磁芯磁化,该信号与一个时钟脉冲组合,然后控制卡放大该信号并通过查询总线将其发送,该总线通过矩阵中的所有内核。 9 读取时,磁芯在信号线上感应出一个脉冲。 该脉冲被控制卡放大,然后将该位存储在锁存器中。 在此过程中,在打印存储篮中提供了许多板用于辅助功能。


打印缓冲区中的核心。 接线与普通铁氧体存储器不同,因为每个锤子都直接连接到验证核。 由于磁芯上的塑料盖,图像质量很差

我们检查了铁氧体存储器读取侧的信号放大器和闩锁板。 事实证明它们可以正常工作,因此我们切换到了记录端。 HN总线控制卡似乎是故障的候选者,因为它在高压下工作。 我们更换了卡-但是打印机仍然无法启动。 然后,我尝试查看此卡的输入-发现一条线上没有信号。


带有AND-NOT逻辑门的错误CHWW卡的示波器图:粉色(3)和蓝色(4)对应于输入信号,青色输出(2)处于高电压状态

丢失的信号是由CHWW (NAND逻辑门)生成的,该逻辑门将禁止总线信号与时钟脉冲组合在一起,然后再将其发送到控制卡。 我将示波器连接到阀门的输入和输出,并固定了上图所示的信号参数。 该迹线说明了一切:即使两个输入(粉红色3和蓝色4)将值从低变为高,输出(青色2)仍保持高电平。 显而易见的是,阀门有故障。 这就说明了一切:在这种卡住的值的情况下,仅将值1写入PLC矩阵。打印字符后,电路从存储器中读取值1,认为字符已经被打印,PLC检查失败-并出现打印检查错误。


打印机以2的幂次打印成功工作

我们更换了这张卡-打印机开始无错误打印(上图)。 这证明我们终于找到了问题所在。 事实证明,它是打印缓冲器铁氧体存储器电路中的一个简单的“与非”门。 出现故障的卡如下所示。 它在二极管晶体管逻辑上有三个NAND门( 部分 )(IBM将其称为CDTL-互补晶体管二极管逻辑)。 每个带有两个输入信号的阀都使用一个锗晶体管(一个圆形的金属元件)和两个二极管(右边的条纹玻璃组件)。 左侧是负载电阻器(条形)和电感器(米色)。


IBM 1401 CHWW卡有故障,它具有三个NAND门。 左下晶体管故障,已被更换

我用信号发生器测试了一块卡,发现三个门中的两个正在工作,而第三个被卡在高输出信号上,从而确认了1401内部的观察结果。接下来,我在万用表上以二极管测试模式检查了晶体管。 在良好的晶体管上,电压下降到0.23V。(这似乎是一个低值,但请记住,它们是锗,而不是硅晶体管)。 为了进行比较,坏晶体管上的电压仅下降到0.95V。最后,我们卸下了晶体管,并在老式Tektronix 577字符记录仪上对其进行了测试。 我们以为坏的晶体管太弱了,无法控制锁存器,但事实证明它完全被杀死了-字符表上的线条完全平坦。

我们在车床上打开晶体管并向里看。 它使用锗合金IBM 083 NPN(在硅之前使用锗)。 该晶体管由形成基极的微小锗衬底(下图中的发光金属方块)组成。 两根导线的发射极和集电极通过锡合金点连接。 在显微镜下,看起来合金点已腐蚀并且发射极导线似乎未可靠连接:我们怀疑这是故障的主要原因。


有故障的锗晶体管内部是IBM083。中间的银色方形是连接到基础引脚的锗基板。 中间的点是用于集电器的锡合金,该锡合金通过导线连接到左侧的集电器引脚。 锗矩阵另一侧的小点形成发射极,该发射极连接到右侧的触点

结论


事实证明,与大多数IBM 1401问题相比,研究此问题更加困难。但是,我们设法找到了原因,更换了有故障的卡,并使打印机恢复了正常工作。与现代系统相比,IBM 1401的一个优点是它不是一个黑匣子:您可以查看任何电路的内部,直达单个晶体管。在这种情况下,我们能够找到导致系统故障的损坏晶体管,甚至确定它可能被腐蚀杀死。

注释和链接


1. IBM 1403的高打印质量的原因之一是使用了柔性链条,而不是带有字母的板条。许多早期的打印机使用垂直移动的字体来选择字符,因此,任何偏移或同步错误都会改变字符的垂直位置,从而产生难看的波浪文本。在1403年,一连串的字母水平旋转,并且移位仅包括字符之间的距离几乎没有明显变化。

2.可以预期,将132个槌槌与132个字母组合在链上并立即工作,但是该系统不能那样工作。取而代之的是,槌和字母的位置略有不同,因此一次只将一把锤子与链条组合在一起,并且链条的微小移动会导致另一只锤骨与另一个字母对齐。 (实际上,它们形成了一个非同寻常的)特别是,电路每隔11.1微秒移动0.001英寸。这导致锤骨和字母类型重新对齐。出于机械原因,每三把锤子都排成一行(1、4、7,...)。这称为子扫描,耗时555微秒。再进行两次扫描就可以触发一行中的每个锤子,从而形成1,665毫秒的打印扫描。 48次扫描使每个锤子都能打印每个字符,然后使用第49次扫描来检查错误(有关时间的更详细计算,请参见“使用说明书”,第37页。)

扫描和扫描机制似乎过于复杂。但是他设法将快速的“电子世界”与较慢的“机械世界”结合在一起。特别是,每11.1微秒将锤子和字母组合一次。计算机从内存核心读取此列中的字符,将其与字母进行比较,如果匹配,则启动锤子。在此重要的是,磁芯的存储周期与锤子的对准时间一致,这使您可以从锤子每次对准的磁芯中读取符号。如果您对打印机制的工作方式感兴趣,可以使用这样的动画

其中一个细微差别是锤击需要1.52毫秒(“操作指南”,第32页)。因此,您不需要在它与字母真正对齐时运行它,而是在此点之前1.52毫秒运行它。

3.对打印机的正确操作进行一些严格的检查似乎是多余的。但是对于商用计算机而言,打印错误可能是灾难性的:假设工资单或税单上的数字不正确。假设科学家会注意到问题,那么IBM科学计算机所进行的错误检查不如商业计算机那么多。

4. IBM 1401在内核的铁氧体存储器中存储了4,000个字符,而不是4096,因为它是带有十进制地址的十进制机器(即二进制十进制代码)。使用洗碗机大小的存储扩展单元,可以将存储扩展为16,000个字符。我已经写过关于该设备维修的文章。而在这里,你可以阅读更多关于核心存储1401

5.电脑不记录每次锤击的记忆。相反,每个锤子都直接物理连接到特定的存储内核。 132条导线将电磁体连接到磁芯。当锤子被触发时,来自电磁体的脉冲穿过导线穿过相应的磁芯,从而使其磁化(这些导线在制品中的磁芯照片中可见)。

6.由于1401的“布线”逻辑,很难确定哪个信号在输入F上引起了错误。由于当时晶体管价格昂贵,IBM使用了许多技巧来减少其数量。技巧之一是安装“或”而不是阀门。信号被简单地组合在一起,因此,如果两个信号之一具有高电平,则对于公共线路将获得相同的结果。因此,我们不能仅探测施加到引脚F的信号-它们都已连接。相反,我必须关闭卡才能分别测试每个信号。

7.打印缓冲区中有12个存储矩阵,也就是说,每个位置存储12位。像在普通存储器中一样,每个BCDIC字符占用6位,字标签(表示字段位置的元数据)再加上一位奇偶校验位。此外,打印缓冲区中的四个矩阵用于检测错误:锤子操作的信号矩阵,一致性检查矩阵(记录应该工作的锤子),完成行打印的矩阵(PLC,带有打印字符的记录列)和错误检查矩阵(列导致错误)。

8.写铁氧体磁芯似乎是在发生另一种情况:禁止总线中的高信号对应于记录0。这是由于磁芯的工作方式所致。要改变铁芯的磁性状态,需要强大的脉冲。电压只有一半的脉冲不会对其产生影响。芯线排列在带有地址线X和Y的网格中,地址线X和Y提供用于选择特定芯线的信号。许多矩阵彼此堆叠,每个矩阵仅占1位。沿每条线提供一半电压的信号,因此,仅在必要的线X和Y的交点处,才有足够的电流将磁芯磁化为状态1。每个矩阵都有一个禁止母线,该母线穿过所有矩阵磁芯。如上所述,在记录1时,总线不接收电流,该电流将磁芯磁化到指定的地址。要将0写入矩阵,一半的电流以相反的方向施加到总线上。结果,没有一个内核接收到足够的电流用于切换,并且位于所需地址的内核保持状态0。因此,由于总线的正确安装,可以将0和1写入所需地址。

9. . « » . 98. 1403 . « IBM 1403» , « 1403» « 1403» . . 1403 IEEE Spectrum. IBM 1401 — «IBM 1401: » .

Source: https://habr.com/ru/post/zh-CN423831/


All Articles