The IBM 1401 is a variable-wordlength decimal computer that was announced by IBM on October 5, 1959. The first member of the highly successful IBM 1400 series, it was aimed at replacing unit record equipment for processing data stored on punched cards and at providing peripheral services for larger computers. The 1401 is considered by IBM to be the Ford Model-T of the computer industry due to its mass appeal. Over 12,000 units were produced and many were leased or resold after they were replaced with newer technology. The 1401 was withdrawn on February 8, 1971.
History
The 1401 project evolved from an IBM project named "World Wide Accounting Machine" (WWAM), which in turn was a reaction to the success of the Bull Gamma 3.
The 1401 was used as an independent system in conjunction with IBM punched card equipment. It was also operated as auxiliary equipment to IBM 700 or 7000 series systems.
Monthly rental for 1401 configurations started at US$2,500 (worth about $ today). Demand exceeded expectations.
"IBM was pleasantly surprised (perhaps shocked) to receive 5,200 orders in just the first five weeks – more than predicted for the entire life of the machine!" By late 1961, the 2000 units installed in the US were about one quarter of all electronic stored-program computers by all manufacturers. The number of installed 1401s peaked above 10,000 in the mid-1960s. "In all, by the mid-1960s nearly half of all computer systems in the world were 1401-type systems." The system was marketed until February 1971.
Commonly used by small businesses as their primary data processing machines, the 1401 was also frequently used as an off-line peripheral controller for mainframe computers. In such installations, with an IBM 7090 for example, the mainframe computers used only magnetic tape for input-output. It was the 1401 that transferred input data from slow peripherals (such as the IBM 1402 Card Read-Punch) to tape, and transferred output data from tape to the card punch, the IBM 1403 Printer, or other peripherals. This allowed the mainframe's throughput to not be limited by the speed of a card reader or printer. (For more information, see spooling.) Some later installations (e.g., at NASA) included the 1401 as a front-end peripherals controller to an IBM 7094 in a Direct Coupled System (DCS).
Elements within IBM, notably John Haanstra, an executive in charge of 1401 deployment, supported its continuation in larger models for evolving needs (e.g., the IBM 1410) but the 1964 decision at the top to focus resources on the System/360 ended these efforts rather suddenly.
IBM was facing a competitive threat from the Honeywell 200among other things, Honeywell used the name Easycoder, resembling IBM's Autocoder.there was also a semi-automated converter of 1401 object code, named Liberator: and the 360's incompatibility with the 1401 design. IBM pioneered the use of microcode emulation, in the form of ROM, so that some System/360 models could run 1401 programs.
Due to its popularity and mass-production, the IBM 1401 was often considered to be the first electronic mainframe computer to be introduced in various countries, such as Singapore (1963; for the Central Provident Fund Board) and South Korea (1967; for the Economic Planning Board).Mainframe transform ibm.com 서현진. (1997). 처음쓰는 한국컴퓨터사 (서울: 전자신문사). During the 1970s, IBM installed many 1401s in India and Pakistan where they were in use well into the 1980s.
Two 1401 systems have been restored to operating order at the Computer History Museum in Mountain View, California.
Architecture
Each alphanumeric character in the 1401 is encoded by six bits, called B,A,8,4,2,1. The B,A bits are called zone bits and the 8,4,2,1 bits are called numeric bits, terms taken from the IBM 80 column punched card.
For digits 1 through 9, the bits B,A are zero, the digit BCD encoded in bits 8,4,2,1. Digit 0 is encoded 8,2. For alphabetic characters the setting of bits is derived from the zone and digit punches of the IBM 80 column punched card character code: B,A from 12, B from 11, and A from 0; the setting of bits 8,4,2,1 from BCD encoding of the 1 through 9 punches. Thus the letter A, 12,1 in the punched card character code, is encoded B,A,1. Encodings of punched card characters with two or more digit punches can be found in the character and op codes table.
IBM called the 1401's character code BCD ("binary-coded decimal"), even though that term describes only the decimal digit encoding.IBM and BCD The 1401's alphanumeric collating sequence is compatible with the punched card collating sequence.
Associated with each memory location are two other bits, called C for odd parity check and M for word mark. M is present in memory but not on punched cards, and has to be set using special machine instructions; when printing memory it is typically displayed by underlining the character. C is calculated automatically and is also not present on punched cards.
Each memory location then, has the following bits:
C B A 8 4 2 1 M
The 1401 was available in six memory configurations: 1,400, 2,000, 4,000, 8,000, 12,000, or 16,000 characters. Each character is addressable, addresses ranging from 0 through 15999. A very small number of 1401s were expanded to 32,000 characters by special request.
Some operations use specific memory locations (those locations are not reserved and can be used for other purposes). Read a card stores the 80 columns of data from a card into memory locations 001–080. Index registers 1, 2 and 3 are in memory locations 087–089, 092-094 and 097-099 respectively. Punch a card punches the contents of memory locations 101-180 into a card. Write a line prints the contents of memory locations 201–332.
The 1401's instruction format is
Opcode with [A-or-I-or-unit-address [B-address]] [modifier] word mark
Opcodes are one character. Memory addresses ("I" a branch target, "A" and "B" data) and unit address are three characters. The opcode modifier is one character. Instruction length is then 1, 2, 4, 5, 7, or 8 characters. Most instructions have to be followed by a word mark (a requirement commonly met by the word mark with the opcode of the next instruction).
See Character and op codes for a list of operations.
A three-character memory address in an instruction is an encoding of a five-digit memory address. The three low-order digits of the five-digit address, 000 to 999, are specified by the numeric bits of the three characters. The zone bits of the high-order character specify an increment as follows: A 1000, B 2000, B and A together 3000, giving an addressability of 4,000 memory locations. The zone bits of the low-order character specify increments of 4000, 8000, or 12000, to address 16,000 memory locations (with an IBM 1406 Storage Unit). For example, the three-character address "I99" is a reference to memory location 3000 + 999, or 3999.
The zone bits of the middle character of a three-character memory address can specify one of three index registers, one of many optional features.
Operands referenced by the A-address and B-address can be: a single memory location, a variable-length field, or a variable-length record. Variable-length fields are addressed at their low-order (highest-addressed) position, their length defined by a word mark set at their high-order (lowest-addressed) position. When an operation such as addition is performed, the processor begins at the low-order position of the two fields and works its way to the high-order, just as a person would when adding with pencil and paper.
The only limit on the length of such fields is the available memory. Instructions applicable to variable-length fields include: Add, Subtract, Multiply, Divide, Compare, Move Characters to A or B Word Mark, Move Characters and Edit. One or more adjacent variable-length fields can make up a variable-length record. A variable-length record is addressed at its high-order position, its length defined by a group-mark character with a word mark or a record-mark character in its low-order position. The instruction Move Characters Record or Group Mark can be used to assemble a block of records. A variable-length record, or block of records, to be written to magnetic tape is addressed at its high-order position, its length defined by a group-mark character with a word mark immediately following its low-order position.
A sequence of operations on adjacent fields can be "chained", using the addresses left in the address registers by the previous operation. For example, addition of adjacent data fields might be coded as A 700,850, A 695,845, A 690,840. With chaining, this can be coded as A 700,850, A, A - omitting data address from the second and third instructions.
IBM 1401G The IBM 1401G was sold in six models: (G1 and G11: 1,400 storage positions; G2 and G12 for 2,000; G3 and G13 for 4,000). IBM 1401G, booklet 520-1061-0 One difference between the 1401 and 1401G is how the reader-punch is controlled.
Booting and sample program When the LOAD button on the 1402 Card Read-Punch is pressed, a card is read into memory locations 001–080, a word mark is set in location 001 to indicate that it is an executable instruction, the word marks in locations 002-080 (if any) are cleared, and execution starts with the instruction at location 001. That is always the Set Word Mark, to set word marks on the two following words (instructions). A single Set Word Mark instruction can set two word marks but requires one word mark to have been on itself, so a sequence of these instructions are needed, which incrementally set word marks in the program's code or data, and set word marks for subsequent Set Word Mark instructions. Execution of instructions in the card continues, setting word marks, loading the program into memory, and then branching to the program's start address. To read subsequent cards, an explicit Read command (opcode 1) must be executed as the last instruction on every card to get the new card's contents into locations 001–080. Note that the word marks are not erased when the Read command is executed, but are kept as-is for the next card read in. This is convenient, because much of what the first few cards do is set word marks in the proper locations; having the first half dozen or so word marks set means the programmer does not need to set those word marks again.
One-card programs can be written for various tasks. Commonly available were a one-card program to print the deck of cards following it, and another to duplicate a deck to the card punch. See Tom Van Vleck's web site. Here is a one-card program which will print "HELLO, WORLD!". Pressing LOAD (above) reads one card, and begins execution at 001 (the first ,). The program will automatically set its own wordmarks, assuming that the first , has a wordmark already.
,036008,040015,044022,051029,052053/299/332L0652132.HELLO, WORLD!
Following conventional IBM notation, the underscores show where word marks are set in memory once the program has run; on punched cards they would not be indicated visually or present in the punched data.
The program is: Set Word Mark (opcode , operands 036 008). This must always be the first instruction, and one of its operands must always be 008 or else the next instruction would not have a word mark to indicate that it is an executable instruction. Additional Set Word Marks. The underscores show where the word marks are after completing all , opcodes. Only word marks from 036 and further are needed for the "guts" of the program; word marks up through 029 are only needed for Set Word Mark instructions. Since the core of the program needs six word marks, five Set Word Mark instructions are needed in total. The reason one fewer is needed is because the final Set Word Mark does not need to waste an operand on other Set Word Marks Clear Storage - the rest of the print area 299-200 (opcode / operand 299)