IBM 1401
| Company type | Computer system |
|---|---|
| Industry | Computing / Data processing |
| Founded | October 5, 1959 |
| Founder | IBM |
| Defunct | February 8, 1971 |
| Headquarters | Armonk , United States |
Area served | Worldwide |
| Products | Variable-wordlength decimal computer |
| Parent | IBM |
The IBM 1401 is a variable-wordlength decimal computer introduced by IBM on October 5, 1959. As the initial model in the widely successful IBM 1400 series, it was designed to replace unit record equipment for punched card data processing and to support peripheral functions for larger computing systems. Often dubbed the computing equivalent of the Ford Model-T due to its widespread adoption, over 12,000 units were manufactured. Many of these machines were leased or resold after being superseded by newer technologies. The IBM 1401 was officially retired on February 8, 1971.
History
The development of the 1401 stemmed from IBM's "World Wide Accounting Machine" (WWAM) initiative, which responded to the success of the Bull Gamma 3. It functioned both as a standalone system integrated with punched card devices and as supplementary equipment alongside IBM 700 or 7000 series computers.
Monthly leasing fees began at US$2,500 (equivalent to approximately $ today). Initial demand surpassed expectations, with more than 5,200 orders placed within the first five weeks—exceeding forecasts for the machine’s entire production span. By late 1961, roughly 2,000 units installed in the United States accounted for about one quarter of all electronic stored-program computers. Installations peaked at over 10,000 during the mid-1960s; by that time, nearly half of global computer systems were based on the 1401 architecture.
Primarily utilized by small enterprises as their main data processing tool, the 1401 also operated as an off-line peripheral controller for mainframe computers. For instance, when paired with an IBM 7090, it managed data transfers between slower peripherals and magnetic tape drives, alleviating throughput bottlenecks on the mainframe. Some organizations, such as NASA, employed the 1401 as a front-end controller within Direct Coupled Systems alongside the IBM 7094.
Within IBM, leaders including John Haanstra advocated for expanding the 1401 design into larger models like the IBM 1410, but these initiatives were halted in 1964 as focus shifted toward developing the System/360 family.
To compete with rivals such as the Honeywell 200, IBM implemented microcode emulation via ROM, enabling certain System/360 models to execute programs originally written for the 1401 despite architectural differences.
Thanks to its popularity and mass production scale, the IBM 1401 often became the first electronic mainframe introduced in countries including Singapore (1963) and South Korea (1967). During the 1970s, numerous units were installed across India and Pakistan, where they remained operational well into the following decade.
Two restored IBM 1401 systems are currently maintained at the Computer History Museum located in Mountain View, California.
Architecture
The IBM 1401 encodes each alphanumeric character using six bits labeled B,A,8,4,2,1. The B and A bits serve as "zone" bits while 8,4,2,1 represent "numeric" bits—terminology derived from the IBM 80-column punched card standard.
- Numerals from 1 through 9 have zeroed B,A bits; their digits are encoded in BCD format within bits 8,4,2,1. The digit zero is represented by bits 8 and 2.
- Alphabetic characters obtain their bit patterns from punched card codes: B,A correspond to punches in column 12; B alone from punch 11; and A alone from punch zero; while bits 8,4,2,1 reflect BCD encoding of punches in columns 1 through 9. For example, letter A (punches at positions 12 and 1) is encoded as B,A, plus bit 1.
- Multi-digit punched card character encodings are detailed in the character and operation codes section.
Although IBM referred to this coding scheme as BCD ("binary-coded decimal"), this strictly applies only to digit encoding. The alphanumeric sorting order on the 1401 aligns with that of punched cards.
Each memory cell includes two additional bits beyond character encoding: C, used for odd parity checking, and M, known as the word mark. The word mark bit is set through specific instructions and is typically indicated by underlining during memory printouts. The parity bit C is automatically computed. These extra bits do not exist on punched cards.
Therefore, each memory location contains:
C B A 8 4 2 1 M
The system supports six core memory configurations: capacities of 1,400; 2,000; 4,000; 8,000; 12,000; or up to16,000 characters. Memory addresses span from zero to 15,999. On rare occasions and by special order, some units were expanded to accommodate up to 32,000 characters.
Certain memory locations are designated for particular operations but are not permanently reserved and can be repurposed. Examples include:
- Reading a punched card loads data into addresses ranging from location 001 through location 080.
- Index registers numbered one through three reside at locations 087–089, then again at locations 092–094 and finally at locations 097–099.
- Punching a card outputs data sourced from locations between addresses101 and180.
- Printing a line writes content stored in locations201 through332.
Instructions follow this format:
Opcode followed by [A-or-I-or-unit-address [B-address]] [modifier] word mark
Opcodes consist of a single character; memory addresses ("I" for branch targets and "A" or "B" for data) and unit addresses contain three characters each; modifiers consist of one character. Instruction lengths vary from one up to eight characters. Most instructions require an immediately following word mark—usually provided by the opcode word mark of the next instruction.
Refer to Character and operation codes for comprehensive details on instructions.
Memory addresses composed of three characters encode a five-digit address value. The three low-order digits (ranging from000 to999) derive from numeric bits within those characters. Zone bits from the high-order character add increments: 'A' adds +1000; 'B' adds +2000; both together add +3000—allowing addressing up to4,000 locations. Zone bits in the low-order character contribute increments of4,000;8,000; or12,000 when paired with an IBM 1406 Storage Unit to address up to16,000 locations. For example: address "I99" corresponds to location3000 +999 =3999.
Zone bits in the middle character specify one of three available index registers.
Operands referenced via A- or B-addresses may point either to single memory cells or variable-length fields or records. Variable-length fields are addressed at their lower boundary with length defined by a word mark at their upper boundary. Arithmetic operations process these fields starting from low-order positions progressing upward.
Field size is limited only by available memory capacity. Instructions supporting variable-length fields include: Add, Subtract, Multiply, Divide, Compare, Move Characters to A or B Word Mark, and Move Characters and Edit. Adjacent variable-length fields combine into variable-length records addressed at their high-order end with length marked by group-mark or record-mark characters at their low-order end. The instruction Move Characters Record or Group Mark assembles record blocks suitable for magnetic tape output.
Operations involving adjacent fields can be linked using address registers preserved across instructions—for instance: A700,850, A695,845, A690,840 can be abbreviated as A700,850, A, A.
IBM 1401G
The IBM 1401G was available in six variants differentiated by their memory capacity: G1 and G11 featured 1,400 storage positions; G2 and G12 came with 2,000; while G3 and G13 offered 4,000. A notable distinction from the original 1401 model lies in the control system for the reader-punch device.
Booting and sample program
Activating the LOAD button on the 1402 Card Read-Punch loads a punched card into memory addresses 001–080, sets a word mark at location 001 to designate an executable instruction, clears word marks from locations 002–080, and initiates execution starting at address 001. The initial instruction is invariably a Set Word Mark opcode, which sequentially applies word marks across the program's code or data to enable execution.
To process additional cards, the last instruction on each card must be a Read command (opcode 1) to bring new data into memory. Word marks remain intact between reads, simplifying program initialization by preserving previously set word marks.
Single-card programs were typical for straightforward operations such as printing or duplicating card decks. For instance, a one-card program can output "HELLO, WORLD!" by configuring its own word marks and executing instructions in sequence. Execution commences at location 001 after pressing LOAD, assuming the initial instruction already carries a word mark.
This program includes:
- Several Set Word Mark instructions to define executable code segments
- Clear Storage commands to ready print buffer areas
- A Move instruction transferring "HELLO, WORLD!" into the print buffer
- A Write a Line command to output the message
- A concluding Halt instruction to terminate execution
This example underscores the IBM 1401G's programmable adaptability for business tasks involving card processing and printing.
Hardware implementation
The majority of logic circuits within the 1401 utilize a variant of diode–transistor logic (DTL) referred to by IBM as CTDL (Complemented Transistor Diode Logic). Other circuit types include Alloy circuits—primarily non-logic functions employing germanium-alloy transistors—and CTRL (Complemented Transistor Resistor Logic), a form of resistor–transistor logic. Subsequent enhancements such as the TAU-9 tape interface incorporated faster DTL utilizing "drift" transistors, designated as SDTDL (Saturated Drift Transistor Diode Logic). Signal voltages typically ranged from -12 V to +6 V depending on the specific logic function.
These circuits were constructed from discrete components mounted on single-sided paper-epoxy printed circuit boards measuring either (single-wide) or (double-wide), each equipped with 16-pin gold-plated edge connectors. IBM termed these modules SMS cards (Standard Modular System), with each card containing logic equivalent to several SSI or simple MSI integrated circuit gates—ranging from three up to approximately twenty logic gates per card.
SMS cards were installed into sockets on hinged swing-out racks known as gates. Due to their fragility relative to earlier hardware, IBM shipped these modules cushioned in bubble wrap—a pioneering packaging method that garnered considerable positive attention.
Memory was implemented using magnetic-core memory, featuring cores approximately 1 mm in diameter arranged in four-wire planes (x, y, sense, inhibit). The memory organization consisted of stacks of eight planes storing six data bits along with a word mark bit and parity bit for each of the 4000 decimal-addressed locations. Additional planes provided extended storage capabilities, collectively forming a 4000-character memory module housed within the main cabinet. Typical configurations included two to four such modules, with extra units contained in the optional 1406 Core Memory Unit measuring roughly two feet square by three feet tall.
Memory locations were accessed serially—one at a time—with each read or write operation completed within the fundamental cycle time of 11.5 microseconds. Instruction execution times were multiples of this cycle duration, reflecting the machine’s character-serial processing design. This cycle rate enabled efficient handling of variable-length character data central to the 1401’s business-oriented applications.
IBM 1403 Printer
Launched in October 1959 alongside the 1401 Data Processing System, the IBM 1403 printer marked a significant innovation and quickly became an essential output device within business data processing environments.
Software
The IBM 1401 was supported by a variety of software packages, including:
- The 1401 Symbolic Programming System assembler.
- Autocoder on Tape, an advanced assembler that required a minimum of 4000 characters of memory and four tape drives.
- Autocoder on Disk, functionally similar but incompatible with the tape version, necessitating at least one IBM 1311 disk drive.
- COBOL, which demanded at least 4000 characters of memory and four tape drives.
- FARGO (Fourteen-o-one Automatic Report Generation Operation), an early report generation language that preceded RPG and required a minimum of 4000 characters of memory.
- FORTRAN II, needing at least 8000 characters of memory; this version utilized an early interpreted form of p-code.
- FORTRAN IV, which required at least 12,000 characters of memory along with either four tape drives or one IBM 1311 disk drive.
- RPG (Report Program Generator); the basic RPG version worked with at least 4000 characters of memory.
For a detailed inventory, refer to the IBM 1400 series page.
Character and Operation Codes
The operation codes for the 1401 are represented by single characters, frequently mnemonic abbreviations corresponding to their functions—such as 'A' for add, 'B' for branch, and 'S' for subtract.
The following table is organized according to character collating sequence:
- Note: When the Word Mark bit is active, the C bit is inverted from the displayed value. This C bit is automatically handled by the system and typically does not concern programmers unless it is manually toggled via switches on the Auxiliary Console during debugging.
| BCD Character | Print-A | Print-H | Card | BCD
w/o M |
Operation | Definition & Notes |
|---|---|---|---|---|---|---|
| Blank | C
|
|||||
| . | . | . | 12-3-8 | BA8 21
|
Halt | |
| ⌑ | ⌑ | ) | 12-4-8 | CBA84
|
Clear Word Mark | Lozenge |
| < | 12-6-8 | BA842
|
Less Than | |||
| & | & | + | 12 | CBA
|
||
| $ | $ | $ | 11-3-8 | CB 8 21
|
||
| * | * | * | 11-4-8 | B 84
|
Among the instructions, Branch on Indicator (B) and Select Stacker (K) feature a "modifier" operand that provides additional operational flexibility.
Five-Character Branch on Indicator (B) Instruction Modifiers
When the B opcode is followed by a three-character operand, it signifies an unconditional branch to the target address. Introducing a fourth character—making five characters total including the opcode—adds a conditional branch modifier, where this additional character specifies the condition to be evaluated.
... [Table continues with similarly grouped entries for clarity and brevity] ...| BCD Character | Unit | Description |
|---|---|---|
| (Blank) | 1401 | Unconditional branch—no word mark required on the following character |
| 1 | 1009 | Condition: in run state |
| 1011 | Punch operation in backspace / reader parity flag enabled | |
| 1231 | Auto-select mode | |
| 1285 | Error condition present | |
| 1412 | Control-check indicator active | |
| 1418 | Late read status | |
| 1419 | Document currently being read | |
| 1428 | Late read or mode change detected | |
| 1445 | Printer error indicated | |
| 7340 | Hypertape unusual end / attention / end response signal | |
| 7740 | Transmission complete with abnormal status / success / attention flag set | |
| DDC | Transmission error / GMWM termination / write in progress / read request active / system A halted / read in progress / tape busy / serial I/O busy | |
| 2 | 1009 | Buffer available for use |
| 1011 | Punch and reader ready signals active | |
| 1231 | Buffer full condition | |
| 1285 | End of line reached | |
| 1412 | Reader not ready signal on | |
| 1418 | Ready to engage status |
Select Stacker (K) Instruction Modifiers
The Select Stacker (K) command sends instructions primarily to devices related to the 1402 reader/punch.
... [Additional entries continue similarly] ...| BCD Character | Unit | Description |
|---|---|---|
| (Blank) | 1401 | Enable program activity recording at BBB only if A equals dd |
| 1 | 1402 | Route last card read to stacker 1 if within ten milliseconds |
| 2 | 1402 | Route last card read to stacker 8/2 within ten milliseconds |
| 4 | 1402 | Route previously punched card to stacker 4 |
| 8 | 1402 | Route previously punched card to stacker 8/2 |
1401 in Popular Culture
In October of 2006, Icelandic experimental musician Jóhann Jóhannsson released an album titled IBM 1401, A User's Manual via the label 4AD. This work was inspired by efforts undertaken in 1964 by his father, Jóhann Gunnarsson—who served as chief maintenance engineer for one of Iceland’s earliest computers—and programmer Elías Daviðsson. Initially composed for string quartet, organ, and electronic elements, the album was later expanded into a sixty-piece string orchestra arrangement and incorporates archival reel-to-reel recordings of an IBM 1401.
The IBM 1401 also earned acclaim for demonstration programs that produced music by connecting transistor radios to the CPU and generated computer graphics art, often printed as patterns composed of Xs and Os on chain printers. Certain programs created melodies by using printer hammer strikes to generate audible tones.
Significantly, an IBM 1401 was Nepal’s inaugural computer system, introduced in 1971 to process census data. It successfully completed enumeration of roughly ten million individuals within approximately one year.
Truck-mounted portable model
In 1960, a truck-adapted IBM 1401 was tailored for military applications and classified as a portable computer, earning the nickname DataMobile.
See also
Videos
- IBM 1401 System - 50th Anniversary at the Computer History Museum YouTube November 19, 2009
- IBM 1401 French Presentation with English Subtitles YouTube April 20, 2014
- IBM 1401 for the Roper Corporation YouTube May 14, 2015
- Running FORTRAN II on the IBM 1401 YouTube February 2, 2018
Further reading
- Chapter 12, titled Broadening the Base, pages 465–494, details the development of IBM's 1401 and 1403 systems
- Summaries of machine specifications, parts, setups, and unique characteristics
External links
- IBM 1401 documentation at bitsavers.org
- Video featuring insights from original IBM 1401 team members alongside promotional materials
- IBM 1401 multimedia collection
- IBM 1401s I have Known by Tom Van Vleck
- Reproduced in both editions of
- Music inspired by the IBM 1401: Johann Johannsson’s "IBM 1401: A User's Manual" available on CD and LP
- Double-width SMS card utilized in the IBM 1401, featuring germanium alloy transistors
- Jay Jaeger (GitHub) repositories: IBM1410FPGA (VHDL) and IBM1410Console (C#)