1950年的税收准备:使用插件面板“编程” IBM 403

在现代计算机出现之前很久,该公司就使用机电记账机(BMs)处理数据。 这些重达一吨的机器通过插入式控制面板上的电线进行“编程”,从而使它们能够基于打孔卡上包含的数据创建复杂的业务报告。 尽管他们没有电子设备,并且使用旋转的机械轮来汇总数据,但是这些机器每秒可以处理两张以上的卡片。

图片
执行IBM 403税收减免的插件面板

为了纪念4月15日(美国传统的纳税申报日),我将研究1950年用于准备税收的插件面板(SC),并解释对SC进行编程的被遗忘的艺术,展示电线的交织如何实现数据处理算法。 通过将面板连接到BM,操作员可以执行特定的数据处理任务。 尽管面板看起来像是一个物理上的意大利面条代码 ,但连接跟踪仍显示了其功能:它计算了税收减免,汇总了许多字段的记录,显示了具有小计和总计的报告,并打出了一套较小的总计卡,并在其中记录了这些金额。

打孔卡概述


从1890年代到1970年代,打孔卡一直是数据处理的基础,它们被用于会计操作,库存,工资单和许多其他任务。 通常,单个80列打孔卡包含一条记录,并且数据存储在卡上的固定字段中。 下图显示了一张地图,其中的列分为日期,卖家编号,订单编号和数量等字段。 BM处理了这些卡,将数字相加,并发布了报告,其中包含客户和部门的小计,如下所示。



打孔卡处理系统是赫尔曼·霍勒里斯Herman Hollerith)在1890年的美国人口普查中发明的,该系统使用了最简单的制表器 ,该制表器通过卡中的孔来计数记录。 总而言之,制表者使用了一个名为“电池”的模块,其圆形转盘包含小数位。 电池将名称命名为今天使用的处理器寄存器。 例如,英特尔x86处理器具有EAX寄存器,即扩展累加器。 这些机器逐渐获得机会,已经成为能够发布业务报告的复杂BM。 它们在商业环境中变得很流行,到1944年, IBM已经提供了 10,000个标签和BM。 1948年7月,IBM推出了402 Accounting Machine,它使用了我正在考虑的孤岛。 402nd和403rd机器模型具有强大的功能:它们具有16个计数器,小计的多个级别,支持表格的垂直距离控制,它们支持比较,条件运算符和前导零去除。


带Type 82打孔卡分拣机的IBM 403

这个故事令人惊讶的是,在计算机出现之前,数十年来,企业一直在处理打孔卡中的数据,仅使用机电设备,甚至没有使用电子灯。 该设备由零件组成,例如用于读取打孔卡中孔的钢丝刷,用于监视回路的继电器以及用于增加值的机械计数轮。 这些技术原始的系统彻底变革了企业数据处理,并为诸如IBM 1401之类的电子商务计算机铺平了道路。

插件面板编程


BM被编程为通过在筒仓上放置电线来执行特定任务。 由于每个应用程序都使用具有不同位置的字段的地图,因此BM需要一种方法来确定每个字段的值。 根据位于页面不同部分的值生成了各种报告。 需要应用程序来计算小计和不同值的总和。 在计算机能够存储程序之前,需要一种技术来轻松地为特定应用程序配置系统。 结果,出现了用于在筒仓上放置电线的系统。



在照片中,面板显示在附近。 她有一个带有标记功能的孔(节点)网格。 通过将电线插入面板,可以连接两个节点,从而使BM执行特定的操作。 一组导线定义了在每个卡上执行的操作。



当将电线插入面板时,插头的一端从面板背面突出,如上所示。 将面板放在BM上时(下图),插头接触BM连接器的网格,关闭必要的电路(请注意设置开关,我将在下面进行讨论)。



由于母线是可移动的,因此公司可以轻松地更换面板以执行不同的任务(为新功能而在面板上戳电线会非常耗时)。 结果,公司的整个团都被配置用于所有操作的面板所堵塞。 以这种形式,“软件”占据了有形的物理空间。 下图显示了为不同任务而设计的一家公司的面板集。



税收计划


我仔细研究了税法NN上导线的位置,以了解其功能。 第一步是跟踪每条电线,并将其与显示所有面板连接器的接线图(如下)进行比较。 将图与文章开头的面板图片进行比较,您会发现它以相同的方式显示了相同的接线,只是其可读性更高。



我发现该程序“记录”在电线中,可以读取卡并计算卡中数据的小计和总计。 更具体地说,每个地图上都有七个可读字段。 第一个是标识符,所有具有一个标识符的卡都被求和,其结果是五个字段中的每一个都给出了总和。 在我看来,此ID已分配给员工,每张卡对应一个付款期。 或id可能属于公司的部门,而身份证可能属于部门。 由于缺少变量名,因此无法准确确定。

汇总每个ID的记录可得出该雇员的总税收减免(从日历年开始 )。 五个汇总字段可能与工资扣除有关,例如联邦所得税,州税,社会保险税,医疗税和养老金缴费。 在读取了与员工相关的卡片之后,BM将对新的最终卡片进行穿孔,并扣除所有费用,然后打印一行报告。 将所有员工的小计相加即可得出总数。

这就是筒仓的工作方式。 读取80张卡片的地图时,每个数字在一个读取节点上可用,编号为1到80。将电线连接到该节点可将数字传输到机器的另一部分。 例如,假设第28-33列包含一个6位数的数字,而我们想添加这些数字。 这是通过将第28列读取器用一根导线连接到计数器的最高位,将第29列连接到下一位数等来完成的。 -仅6线。

下图显示了六根红色导线,它们将磁场传输到6C计数器。 地图的80列读取题为“第三读”下的两行节点。 计数器条目题字下的四行节点转到计数器输入。 其余字段以相同方式通过带有计数器的电线连接。



很难从照片中了解接线,因此通常在图中显示面板的连接图。 在其下方显示了读取列(在右侧)与计数器6C(在左侧)的连接。 按照IBM图像图中的样式,图中的一根由六根导线表示。 用一条线连接的水平条表示六根平行的线。



要显示总量,计数器输出连接到所需的打印机列。 在面板上,这些列标记为“打印条目”:43个“字母数字打印位置”,能够打印字母或数字,其后是45个数字位置,仅能打印数字。 下图显示了从计数器4C到打印位置从1到4(黄色)的四线,从计数器6C(红色)到打印列35-40的六线。



BM包含16个十进制计数器。 其中有4个是8位的,分别称为8A,8B,8C和8D。 四个6位(6A-6D),四个4位(4A-4D)和四个-2位(2A-2D)。 另外,两个计数器可以合并,并获得更大的计数器。 计数器之间也有链接,用于计算小计。 例如,计数器8A收集雇员的运行总额。 这些总计被添加到8B计数器中,并形成一个总计。

另一个重要的操作是比较两张卡的ID。 如果它们具有相同的ID,则必须将它们一起计数;如果不同,则需要显示小计并重置计数器。 通过在两行中写入两个字段以比较比较条目条目来执行比较。 如果它们不同,则信号进入比较出口。 由于我们想将当前地图与下一个地图进行比较,因此我们从“第二读数”中选取一个字段,而从“第三读数”中选取一个字段。 我们处理的地图将在第三阅读阶段,其后的卡片将在第二阅读阶段。 最后,比较输出连接到“程序开始(次要)”节点。 结果,BM开始打印下级“次要”的中间结果并开始另一个循环,并重置计数器。 BM还有另外两个小计,“中级”和“主要”(中级和高级)。


比较卡片的第1-4列,以确定是否需要打印小计。

在上图中,第二和第三读数的第1-4列连接到比较记录的节点。 对应于它们的四个输出节点通过电线(灰色)连接,并连接到初级(MI)程序启动节点(黄色线​​连接至PRG START的右上角)。 下面的放大照片显示了电线的位置。



筒仓的另一个有趣特征是使用开关的条件行为。 可以根据信号切换连接,这可以使机器根据比较结果或面板上开关的状态来改变行为。 该CW根据“设置更改1”开关(面板顶部BM上的开关之一)更改其行为。 您可以将其想象为命令行设置的原型。 根据筒仓上的铭文,开关打开“从日历年开始”模式。 它包括一个字段的处理,并且还在添加到计数器2B的常数2和5之间切换(这些常数的目的对我来说仍然是个谜)。



母线右侧的电线控制计数器的行为-例如,中间结果或总结果的累加。 它们还将几个计数器连接在一起以扩大它们。 例如,将2C和4D计数器组合起来以作为单个6位计数器工作。

下表显示了筒仓接线图,显示了输入字段和打印机输出之间的关系。

插卡音箱
输出列
中级柜台
总柜台
1-4
1-4
4C
34-38
5-10
8D
4A / 2D
44-45岁
11-18
8A
8B
61-66
19-26
6A
2C / 4D
67-71
27-32
6B
2A / 4B
28-33
35-40
6C
8C
14-17
4D
从拨动开关
2B

第14-17列已汇总,但未打印。 也许它们的价值在最终的打孔卡上突破了。 仅当“设置更改1”拨动开关打开时,才处理第34-38列。 2B计数器由面板上的拨动开关控制,在第2步或第5步中添加了2B计数器。

机器的另一个有趣的功能是总计的打孔。 它使您可以处理一大包打孔卡,并发行少量的打孔卡。 配置税码,以便为每位员工打一张打孔卡。 因此,一组带有每个付款周期数据的员工卡减少为一张具有年度金额的卡。 该卡已经可以用于进一步处理。


Bukhmashina IBM 403连接到第519型号的打孔装置

通过将带有粗电缆的打孔机连接到BM,可以对结果进行打孔 。 一根筒仓节点中插入的一根线控制了穿孔的包含,而另一根则控制了其消耗的时间。 设置了税务汇总表,以使每个小计的最终卡都可以突破。 打孔机上的一个单独的料仓控制需要在卡上打孔的列。


控制最终卡穿孔的电线。 总打孔开关(SP.SW)节点通过灰色电线连接(左下)

403号会计机内部


这些BM仅使用巧妙的机电就可以在没有电子组件的情况下提供什么功能,这令人惊奇。 机器内部有迷宫般的电动机,旋转轴,凸轮和手柄。 它看起来更像是汽车而不是计算机,甚至还有油泵! 对于所有这些机械零件,BM的重量超过一吨(1143千克)。



在电线传输线上,特定的列将传输到卡上。 但是卡中的符号如何通过导线传输? 计数器如何增加? 结果如何显示? BM使用与打孔卡结构密切相关的复杂机制。

在现代语言中,符号是按顺序编码的-脉冲沿着导线传播,脉冲的持续时间与卡上孔的位置有关。 脉冲启动和停止计数器。 它们还控制显示结果的打印头。

403rd的工作时间基于轴的旋转,而不是时钟。 轴的每次旋转都对应于卡片的循环-读取和处理。 时间的基本单位是旋转18°:这是读取卡片的连续孔,将打印头移动一个字符和转动计数器一个之间的时间。 以每分钟150张卡片的处理速度,在18°时,每张卡片的速度约为400毫秒,每转20毫秒,因此该机制的速度惊人。

阅读卡


要了解BM的工作原理,您需要了解数据如何存储在打孔卡上。 打孔卡可存储80个字符,每个字符由列中的一组孔表示。 该照片显示了一张地图,该地图显示了字母的数字和字母的存储。 每个字符都印在卡的顶部,并在卡的底部打出与之对应的孔。 数字只是所需行中从0到9的一个空洞(请注意,数字不是以二进制存储,而是以十进制存储)。 为了支持数字行上方的字母,引入了两个辅助的“区域”字母。 字母A由列中的两个孔指示-区域和数字。

零以上的区域行称为11,即X,其上方的行称为12。 对于某些字母,第0行用作区域而不是数字。 与此相关的一些困难,例如,需要一种特殊的机制来打印“数字零”而不是“区域”。 打孔卡的这种编码后来变成了EBCDIC (扩展二进制编码的十进制交换码),在IBM计算机上使用,而不是ASCII。 该代码的许多工件,特别是违反字母顺序的工件,恰好源自打孔卡。



您可能会认为BM一次读一列卡,一次处理一个字符。 但是实际上是从底部开始横向读取卡。 从第9行开始,以零结束,然后是分区行,将并行读取所有80列。 为了读取地图,BM使用了一组80个线刷,每列一个。 如果电刷上有孔,则与卡下方的金属轴接触,这将闭合电路并产生脉冲。 每列都会有一个对应于该孔的冲量,在这种情况下,第9行将首先工作,然后是第8行,依此类推,以0结尾。因此,每个字符都被顺序编码,并且每个NR线都传输这些信号之一,但是所有列都经过处理并行。

列印


图片
第402台机器的打印头

BM打印机构由88个打印头组成。 每个磁头都有可以打印的所有字符。 磁头垂直移动,停在所需的符号上,然后锤子将其击中,并通过墨膜打印该符号。 因此,一行中的所有字符都是并行打印的。

汇流排上的导线确定需要打印的内容,并在正确的时间停止每个打印头,以便选择正确的字符。 磁头的移动与卡的读取精确地同步,因此,例如,在打印头上的“ 3”移动到打印位置的同时读取卡的第三行。 如果将电刷组件连接到该列的打印单元,则脉冲将向磁铁供电,释放锁定机构,紧贴打印头的齿并停止它,以便打印“ 3”符号。 如果从卡上读取“ 2”,则刷子将在一个单位时间后与孔相对,打印头将再上升一个位置,然后将打印“ 2”。

打印机制包括机械零件的复杂连接:凸轮,卡爪,导向装置,弹簧和夹具,以及在适当的时间激活这些零件的电磁体。该机制每分钟可以打印100行,因此零件来回快速移动,需要精确同步。轴每旋转18°,打印头就会移动一个位置,从而与卡的读取同步。

专柜


BM的基础-机电计数器,将这些值相加。每个数字都是一个单独的轮子,可以旋转进行累加。轮子的位置对应于该类别的值。例如,要在计数器上加上27,十位轮会旋转两个位置,而单位轮会旋转七个。因此,要增加卡上的值,轮子必须转动相应的转数。遇到孔时,轮子旋转,每增加一行旋转一个位置,然后在第0行停止读取。由于首先读取第9行,最后读取第0行,所以计数器旋转孔数所指示的位置数。

图片
403机的机电表

顶部是一个两位数的数字计数器。车轮在左边。启动和停止线圈迫使车轮在正确的时间启动和停止旋转,从而激活控制停止的杆。传递是通过车轮下方的凸轮进行的,从而闭合触点。面板后面有电触点,可读取存储在计数器上的值-它们连接到右侧的触点。



SP确定卡中的哪些列添加到哪些计数器。要向计数器添加字段值,读取器的画笔通过控制面板连接到计数器;因此,卡控制计数器轮的旋转。信号打开计数器的启动线圈,制动器松开轮子,然后开始旋转。在位置0,固定线圈释放制动器,并停止车轮。例如,如果刷子从卡上读取值“ 7”,则计数器将经过7个位置,然后停止。如果刷子的读数为“ 1”,则计数器只会旋转一个位置。一切都通过同步卡片移动和反向旋转来进行。 18°的旋转对应于卡片移动一排,计数器的旋转对应一个位置。计数器有20个相距18°的位置。加10会使它旋转半圈。减法通过加法完成通过加到9(减去数字n加上9-n来代替,之后添加校正单位)。为此,计数器从位置“ 9”开始,并在读取孔时停止。例如,如果在位置7上打孔,则计数器将旋转2个位置。

从一个类别到另一个类别的转移执行了一种复杂的机制。您可能希望当一个轮子从9变为0时,它会像里程表一样转动下一个等级的轮子,但是对于多值计数器而言,它会太慢。计数器每分钟增加150个数字,并且旋转速度非常快。相反,计数器使用类似于加速提前进位的方案。如果车轮位于位置9,则它会闭合触点,并且该装置将从下部的排出口移动到上部的排出口。当方向盘从9变为0时,另一个触点闭合,从而创建一个牢记“记住”的数字。在所有添加之后,并行创建所有“思维”编号并一次添加。因此,像99999999 +1这样的加法项不会因链转移而延迟-它们都同时旋转。

接力赛


BM由数百个继电器,机电开关和系统“控制逻辑”的管理器控制。图为BM的背面,上面装有继电器。在极端面板上可以找到另一个继电器。要创建定时信号,请使用转轴上的凸轮打开和关闭开关。因此,整个系统与旋转轴同步。



结论


现在打孔卡的处理几乎被遗忘了,但是它已经对数据处理进行了近一百年的管理。甚至在没有计算机存在之前,企业就使用打孔卡和标签进行记帐。尽管IBM计费机由看似原始的组件组成,却能够执行惊人的复杂任务。 BM和NW编程一直很流行,直到1960年代,企业开始逐渐转向具有存储程序(例如IBM 1401)的商用计算机。尽管如此,IBM一直积极地推广BM,直到1976年。有趣的是,得克萨斯州的一家公司仍然使用IBM 402 BM,这证明了打孔卡技术的惊人耐用性。

可以从Bitsavers网站下载不同BM的说明:

IBM 402、403和419计费机:操作手册
IBM 402、403和419现场工程指导手册
IBM功能接线原则

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


All Articles