IBM 1401
Encyclopedia
The IBM 1401 was 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 electromechanical unit record equipment
for processing data stored on punched card
s. Over 10,000 units were produced and many were leased or resold in less developed countries after they were replaced with newer technology. The 1401 was withdrawn on February 8, 1971.
Monthly rental for 1401 configurations started at US$2,500.
"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 installed in the USA 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, the IBM 1401 was also frequently used as an off-line peripheral
controller for mainframe computer
s. 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 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.
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. Then, faced with the competitive threat of the Honeywell 200
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.
Two 1401 systems are being restored to operating order at the Computer History Museum
in Mountain View, California
, complete with a "false floor
" typical of the mainframe era (and modern data center
s), used to hide cabling.
s, called B,A,8,4,2,1. The B,A bits were called zone bits and the 8,4,2,1 bits were called numeric bits, terms taken from the IBM 80 column punched card.
IBM called the 1401's character code BCD, even though that term describes only the decimal digit encoding. The 1401's alphanumeric collating sequence was compatible with the punched card collating sequence.
Associated with each memory location were two other bits, called C for odd parity check
and M for word mark
.
Each memory location then, had the following bits:
C B A 8 4 2 1 M
The 1401 was available in six memory configurations: 1.4K, 2K, 4K, 8K, 12K, or 16K locations. A very small number of 1401s were expanded to 32K by special request. Each memory location was addressable, addresses were 0 through 15999.
Some operations used specific memory locations (those locations were not reserved and could be used for other purposes). Read a card stored the 80 columns of data from a card into memory locations 001-080. Index registers 1, 2 and 3 were in memory locations 087-089, 092-094 and 097-099 respectively. Punch a card punched the contents of memory locations 101-180 into a card. Write a line printed the contents of memory locations 201-332.
The 1401's instruction
format was
Opcode
with [A-or-I-or-unit-address [B-address]] [modifier]
word mark
Opcode
s were one character. Memory addresses ("I" a branch target, "A" and "B" data) and unit address were three characters. The opcode modifier was one character. Instruction length was then 1, 2, 4, 5, 7, or 8 characters. Most instructions had 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 was an encoding of a five character memory address. The three low order digits of the five character address, 000 to 999, were specified by the numeric bits of the three characters. The zone bits of the high-order character specified 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 specified 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" was a reference to memory location 3000 + 999, or 3999.
The zone bits of the middle character of a three character memory address specified index register
s, one of many optional features.
Operands referenced by the A-address and B-address were: a single memory location, a variable length field, or a variable length record. Variable length fields were addressed at their loworder position, their length defined by a word mark set at their highorder position. The only limit on the length of such fields was the available memory. Instructions applicable to variable length fields included: Add, Subtract, Multiply, Divide, Compare, Move Characters to A or B Word Mark, Move Characters and Edit. One or more adjacent variable length fields could make up a variable length record. A variable length record was addressed at its highorder position, its length defined by a group-mark character with a word mark or a record-mark character in its loworder position. The instruction Move Characters to Record or Group Mark could be used to assemble a block of records. A variable length record, or block of records, to be written to magnetic tape was addressed at its highorder position, its length defined by a group-mark character with a word mark immediately following its loworder position.
A sequence of operations on adjacent fields could 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 could be coded as "A 700,850", "A", "A" - omitting data address from the 2nd and 3rd instructions.
One-card programs could 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. From Tom Van Vleck's web site here is a one-card program which will print "HELLO WORLD". Pressing LOAD (above) begins execution at location 001 (the first ","). The program is: set word marks (opcode "," operands 008 015), set more word marks, clear storage - part of the print area 333-300 (opcode "/" operand 333), clear storage - the rest of the print area 299-200 (opcode "/" using a chained address), move "HELLO WORD" to the print area (opcode "M", operands 079 and 250), print a line (opcode "2"), eject the page in the printer (opcode "F" modifier "1"), and halt (opcode "." operand 065 - a branch address, to this same halt command, if start is pressed).
,008015,022029,036043,050054,055062,063065,069080/333/M0792502F1.065HELLO WORLD
(DTL), that IBM referred to as CTDL. Other IBM circuit types used were referred to as: Alloy (some logic, but mostly various non-logic functions, named for the kind of transistors used), CTRL (a type of resistor-transistor logic
(RTL)). Later upgrades (e.g., the TAU-9 tape interface) used a faster type of DTL using "drift" transistor
s (a type of transistor invented by Herbert Kroemer
in 1953) for their speed, that IBM referred to as SDTDL. Typical logic levels of these circuits were (S & U Level): high – 0 V to -0.5V, low – -6 V to -12 V; (T Level): high – 6 V to 1 V, low – -5.5 V to -6 V.
These circuits were constructed of individual discrete components mounted on single sided paper-epoxy printed circuit board
s either 2.5 by with a 16-pin gold
plated edge connector (single wide) or 5.375 by with two 16-pin gold plated edge connectors (double wide), that IBM referred to as SMS cards (Standard Modular System
). The amount of logic on one card was similar to that in one 7400 series
SSI or simpler MSI package (e.g., 3 to 5 logic gates or a couple of flip-flops on a single wide card up to about 20 logic gates or 4 flip-flops on a double wide card).
The SMS cards were inserted in sockets on hinged swing out racks, that IBM referred to as gates.
For the IBM Catalog of 1401 software, see IBM 1400 series
.
ic avante-garde musician Jóhann Jóhannsson
released the album 'IBM 1401, A User's Manual through music publisher 4AD
.
The concept is based upon work done in 1964 by his father, Jóhann Gunnarsson, chief maintenance engineer of one of the country’s first computers, and Elias Davidsson, one of the first programmers in the country. The album was originally written for a string quartet, organ and electronics and to accompany a dance piece by long-standing collaborator friend, Erna Ómarsdóttir. For the album recording, Johann has rewritten it for a sixty-piece string orchestra, adding a new final movement and incorporating electronics and vintage reel-to-reel recordings of a singing IBM 1401 found in his father’s attic.
More well-known were various demo programs to play music on transistor radios placed on the CPU and computer "art", mostly kitschy
pictures printed using Xs and 0s on chain printers.
The simplicity of the 1401 made it, if not a modern ruggedized machine, fairly reliable in stressful conditions. Thus IBM 1401 systems were more extensively used for US military logistics applications, in Vietnam and elsewhere, than were other, more advanced, systems.
During the 1970s, IBM installed many 1401s in India
and Pakistan
where they were in use well into the 1980s. Some of today's Indian and Pakistani software entrepreneurs started on these 1401s. The first computer in Pakistan, for example, was an IBM 1401 installed at Pakistan International Airlines
.
Decimal computer
Decimal computers, computers which have a decimal architecture, represent numbers and/or addresses in decimal, and provide instructions to operate on those numbers and/or addresses directly; examples of encoding used are BCD, Excess-3, two-out-of-five code, ASCII, and EBCDIC.Many early computers,...
that was announced by IBM on October 5, 1959. The first member of the highly successful IBM 1400 series
IBM 1400 series
The IBM 1400 series were second generation mid-range business decimal computers that IBM sold in the early 1960s. They could be operated as an independent system, in conjunction with IBM punched card equipment, or as auxiliary equipment to other computer systems.1400-series machines stored...
, it was aimed at replacing electromechanical unit record equipment
Unit record equipment
Before the advent of electronic computers, data processing was performed using electromechanical devices called unit record equipment, electric accounting machines or tabulating machines. Unit record machines were as ubiquitous in industry and government in the first half of the twentieth century...
for processing data stored on punched card
Punched card
A punched card, punch card, IBM card, or Hollerith card is a piece of stiff paper that contains digital information represented by the presence or absence of holes in predefined positions...
s. Over 10,000 units were produced and many were leased or resold in less developed countries after they were replaced with newer technology. The 1401 was withdrawn on February 8, 1971.
History
From the announcement:
The all-transistorized IBM 1401 Data Processing System places the features found in electronic data processing systems at the disposal of smaller businesses, previously limited to the use of conventional punched card equipmentUnit record equipmentBefore the advent of electronic computers, data processing was performed using electromechanical devices called unit record equipment, electric accounting machines or tabulating machines. Unit record machines were as ubiquitous in industry and government in the first half of the twentieth century...
. These features include: high speed card punching and reading, magnetic tape input and output, high speed printing, stored program, and arithmetic and logical ability.'
The 1401 may be operated as an independent system, in conjunction with IBM punched card equipment, or as auxiliary equipment to IBM 700 or 7000 series systems.
Monthly rental for 1401 configurations started at US$2,500.
"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 installed in the USA 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, the IBM 1401 was also frequently used as an off-line peripheral
Peripheral
A peripheral is a device attached to a host computer, but not part of it, and is more or less dependent on the host. It expands the host's capabilities, but does not form part of the core computer architecture....
controller for mainframe computer
Mainframe computer
Mainframes are powerful computers used primarily by corporate and governmental organizations for critical applications, bulk data processing such as census, industry and consumer statistics, enterprise resource planning, and financial transaction processing.The term originally referred to the...
s. In such installations, with an IBM 7090
IBM 7090
The IBM 7090 was a second-generation transistorized version of the earlier IBM 709 vacuum tube mainframe computers and was designed for "large-scale scientific and technological applications". The 7090 was the third member of the IBM 700/7000 series scientific computers. The first 7090 installation...
for example, the mainframe computers used only magnetic tape
Magnetic tape
Magnetic tape is a medium for magnetic recording, made of a thin magnetizable coating on a long, narrow strip of plastic. It was developed in Germany, based on magnetic wire recording. Devices that record and play back audio and video using magnetic tape are tape recorders and video tape recorders...
for input-output. It was the 1401 that transferred input data from peripherals, such as the IBM 1402
IBM 1402
The IBM 1402 was a high speed card reader/punch introduced on October 5, 1959 as a peripheral input/output device for the IBM 1401 computer. It was later used with other computers of the IBM 1400 series and IBM 7000 series product lines...
Card Read-Punch, to tape, and transferred output data from tape to the card punch, the IBM 1403
IBM 1403
The IBM 1403 line printer was introduced as part of the IBM 1401 computer in 1959 and had an especially long life in the IBM product line. The original model could print 600 lines of text per minute and could skip blank lines at up to 75 inches/second. The standard model had 120 print...
Printer, or other peripherals.
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
IBM 1410
The IBM 1410, a member of the IBM 1400 series, was a variable wordlength decimal computer that was announced by IBM on September 12, 1960 and marketed as a midrange "Business Computer". It was withdrawn on March 30, 1970. The 1410 was similar in design to the very popular IBM 1401, but it had one...
) but the 1964 decision at the top to focus resources on the System/360
System/360
The IBM System/360 was a mainframe computer system family first announced by IBM on April 7, 1964, and sold between 1964 and 1978. It was the first family of computers designed to cover the complete range of applications, from small to large, both commercial and scientific...
ended these efforts rather suddenly. Then, faced with the competitive threat of the Honeywell 200
Honeywell 200
The Honeywell 200 was a character-oriented two-address commercial computer introduced by Honeywell in the early 1960s, the basis of later models including 1200, 1250, 2200, 3200, 4200 and the later 2070, and the character processor of the Honeywell 8200....
and the 360's incompatibility with the 1401 design, IBM pioneered the use of microcode
Microcode
Microcode is a layer of hardware-level instructions and/or data structures involved in the implementation of higher level machine code instructions in many computers and other processors; it resides in special high-speed memory and translates machine instructions into sequences of detailed...
emulation
Emulator
In computing, an emulator is hardware or software or both that duplicates the functions of a first computer system in a different second computer system, so that the behavior of the second system closely resembles the behavior of the first system...
, in the form of ROM, so that some System/360 models could run 1401 programs.
Two 1401 systems are being restored to operating order at the Computer History Museum
Computer History Museum
The Computer History Museum is a museum established in 1996 in Mountain View, California, USA. The Museum is dedicated to preserving and presenting the stories and artifacts of the information age, and exploring the computing revolution and its impact on our lives.-History:The museum's origins...
in Mountain View, California
Mountain View, California
-Downtown:Mountain View has a pedestrian-friendly downtown centered on Castro Street. The downtown area consists of the seven blocks of Castro Street from the Downtown Mountain View Station transit center in the north to the intersection with El Camino Real in the south...
, complete with a "false floor
Raised floor
A raised floor or access floor are types of floor that provide an elevated structural floor above a solid substrate to create a hidden void for the passage of mechanical and electrical services...
" typical of the mainframe era (and modern data center
Data center
A data center is a facility used to house computer systems and associated components, such as telecommunications and storage systems...
s), used to hide cabling.
Architecture
Each alphanumeric character in the 1401 was encoded by six bitBit
A bit is the basic unit of information in computing and telecommunications; it is the amount of information stored by a digital device or other physical system that exists in one of two possible distinct states...
s, called B,A,8,4,2,1. The B,A bits were called zone bits and the 8,4,2,1 bits were called numeric bits, terms taken from the IBM 80 column punched card.
- For digits 1 through 9, the bits B,A were zero, the digit BCDBCDBCD may refer to:* Binary coded decimal, representation of individual decimal digits in binary.* Bad Conduct Discharge, a form of discharge from US military service* Barrels per calendar day, a unit for measuring output of oil refineries...
encoded in bits 8,4,2,1. Digit 0 was encoded 8,2. - For alphabetic characters the setting of bits was 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, was 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, even though that term describes only the decimal digit encoding. The 1401's alphanumeric collating sequence was compatible with the punched card collating sequence.
Associated with each memory location were two other bits, called C for odd parity check
Parity bit
A parity bit is a bit that is added to ensure that the number of bits with the value one in a set of bits is even or odd. Parity bits are used as the simplest form of error detecting code....
and M for word mark
Wordmark (computer hardware)
In computer hardware, a wordmark is a bit in each memory location on some variable word length computers used to mark the end of a word. Sometimes the actual bit used as a wordmark on a given machine is not called wordmark, but has a different name ....
.
Each memory location then, had the following bits:
C B A 8 4 2 1 M
The 1401 was available in six memory configurations: 1.4K, 2K, 4K, 8K, 12K, or 16K locations. A very small number of 1401s were expanded to 32K by special request. Each memory location was addressable, addresses were 0 through 15999.
Some operations used specific memory locations (those locations were not reserved and could be used for other purposes). Read a card stored the 80 columns of data from a card into memory locations 001-080. Index registers 1, 2 and 3 were in memory locations 087-089, 092-094 and 097-099 respectively. Punch a card punched the contents of memory locations 101-180 into a card. Write a line printed the contents of memory locations 201-332.
The 1401's instruction
Instruction set
An instruction set, or instruction set architecture , is the part of the computer architecture related to programming, including the native data types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O...
format was
Opcode
with [A-or-I-or-unit-address [B-address]] [modifier]
word mark
Opcode
Opcode
In computer science engineering, an opcode is the portion of a machine language instruction that specifies the operation to be performed. Their specification and format are laid out in the instruction set architecture of the processor in question...
s were one character. Memory addresses ("I" a branch target, "A" and "B" data) and unit address were three characters. The opcode modifier was one character. Instruction length was then 1, 2, 4, 5, 7, or 8 characters. Most instructions had 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 was an encoding of a five character memory address. The three low order digits of the five character address, 000 to 999, were specified by the numeric bits of the three characters. The zone bits of the high-order character specified 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 specified 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" was a reference to memory location 3000 + 999, or 3999.
The zone bits of the middle character of a three character memory address specified index register
Index register
An index registerCommonly known as a B-line in early British computers. in a computer's CPU is a processor register used for modifying operand addresses during the run of a program, typically for doing vector/array operations...
s, one of many optional features.
Operands referenced by the A-address and B-address were: a single memory location, a variable length field, or a variable length record. Variable length fields were addressed at their loworder position, their length defined by a word mark set at their highorder position. The only limit on the length of such fields was the available memory. Instructions applicable to variable length fields included: Add, Subtract, Multiply, Divide, Compare, Move Characters to A or B Word Mark, Move Characters and Edit. One or more adjacent variable length fields could make up a variable length record. A variable length record was addressed at its highorder position, its length defined by a group-mark character with a word mark or a record-mark character in its loworder position. The instruction Move Characters to Record or Group Mark could be used to assemble a block of records. A variable length record, or block of records, to be written to magnetic tape was addressed at its highorder position, its length defined by a group-mark character with a word mark immediately following its loworder position.
A sequence of operations on adjacent fields could 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 could be coded as "A 700,850", "A", "A" - omitting data address from the 2nd and 3rd instructions.
Booting and Sample Program
When the LOAD button on the IBM 1402 Card Read-Punch was pressed, a card was read into memory locations 001-080, a word mark was set in location 001, the word marks in locations 002-080 were cleared, and execution started with the instruction at location 001. That was always the dyadic Set Word Mark (it was the only instruction not requiring a following word mark) to set word marks for the two following instructions. Execution of instructions in the card deck continued, loading the program into memory, setting word marks, and then branching to the program's start address.One-card programs could 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. From Tom Van Vleck's web site here is a one-card program which will print "HELLO WORLD". Pressing LOAD (above) begins execution at location 001 (the first ","). The program is: set word marks (opcode "," operands 008 015), set more word marks, clear storage - part of the print area 333-300 (opcode "/" operand 333), clear storage - the rest of the print area 299-200 (opcode "/" using a chained address), move "HELLO WORD" to the print area (opcode "M", operands 079 and 250), print a line (opcode "2"), eject the page in the printer (opcode "F" modifier "1"), and halt (opcode "." operand 065 - a branch address, to this same halt command, if start is pressed).
,008015,022029,036043,050054,055062,063065,069080/333/M0792502F1.065HELLO WORLD
Hardware implementation
Most of the logic circuitry of the 1401 was a type of diode-transistor logicDiode-transistor logic
Diode–transistor logic is a class of digital circuits that is the direct ancestor of transistor–transistor logic. It is called so because the logic gating function is performed by a diode network and the amplifying function is performed by a transistor .- Implementations :The DTL circuit shown in...
(DTL), that IBM referred to as CTDL. Other IBM circuit types used were referred to as: Alloy (some logic, but mostly various non-logic functions, named for the kind of transistors used), CTRL (a type of resistor-transistor logic
Resistor-transistor logic
Resistor–transistor logic is a class of digital circuits built using resistors as the input network and bipolar junction transistors as switching devices...
(RTL)). Later upgrades (e.g., the TAU-9 tape interface) used a faster type of DTL using "drift" transistor
Drift-field transistor
The drift-field transistor, also called the drift transistor or graded base transistor, is a type of high-speed bipolar junction transistor having a doping-engineered electric field in the base to reduce the charge carrier base transit time....
s (a type of transistor invented by Herbert Kroemer
Herbert Kroemer
Herbert Kroemer , a professor of electrical and computer engineering at the University of California, Santa Barbara, received his Ph.D. in theoretical physics in 1952 from the University of Göttingen, Germany, with a dissertation on hot electron effects in the then-new transistor, setting the stage...
in 1953) for their speed, that IBM referred to as SDTDL. Typical logic levels of these circuits were (S & U Level): high – 0 V to -0.5V, low – -6 V to -12 V; (T Level): high – 6 V to 1 V, low – -5.5 V to -6 V.
These circuits were constructed of individual discrete components mounted on single sided paper-epoxy printed circuit board
Printed circuit board
A printed circuit board, or PCB, is used to mechanically support and electrically connect electronic components using conductive pathways, tracks or signal traces etched from copper sheets laminated onto a non-conductive substrate. It is also referred to as printed wiring board or etched wiring...
s either 2.5 by with a 16-pin gold
Gold
Gold is a chemical element with the symbol Au and an atomic number of 79. Gold is a dense, soft, shiny, malleable and ductile metal. Pure gold has a bright yellow color and luster traditionally considered attractive, which it maintains without oxidizing in air or water. Chemically, gold is a...
plated edge connector (single wide) or 5.375 by with two 16-pin gold plated edge connectors (double wide), that IBM referred to as SMS cards (Standard Modular System
Standard Modular System
The Standard Modular System was a system of standard transistorized circuit boards and mounting racks developed by IBM in the late 1950s, originally for the IBM 7030 Stretch. They were used throughout IBM's second generation computers, peripherals, the 7000 series, the 1400 series, and the 1620...
). The amount of logic on one card was similar to that in one 7400 series
7400 series
The 7400 series of transistor-transistor logic integrated circuits are historically important as the first widespread family of TTL integrated circuit logic. It was used to build the mini and mainframe computers of the 1960s and 1970s...
SSI or simpler MSI package (e.g., 3 to 5 logic gates or a couple of flip-flops on a single wide card up to about 20 logic gates or 4 flip-flops on a double wide card).
The SMS cards were inserted in sockets on hinged swing out racks, that IBM referred to as gates.
Software
Software for the 1401 included:- IBM 1401 Symbolic Programming System, SPS-1 and SPS-2, assemblers. SPS-1 could run on a low-end machine with 1.4K memory, SPS-2 required at least 4K memory.
- AutocoderAutocoderAutocoder was the name given to certain assemblers for a number of IBM computers of the 1950s and 1960s.The first Autocoders appear to have been the earliest assemblers to provide a macro facility....
a more advanced assembler, required at least 4K memory and four tape drives. - FARGOFARGO Programming LanguageFARGO was the predecessor to the popular RPG programming language . FARGO was more of a utility program than a programming language, whereas RPG had a program generation process that produced an executable object.- A Transitional Tool :The idea behind FARGO was to facilitate ease of transition...
(Fourteen-o-one Automatic Report Generation Operation), a predecessor of RPG, required 4K memory. - FORTRAN II required at least 8K memory; the 1401 Fortran compiler is described in Haines, L.H. (1965), below. The Fortran compiler, to generate code for small memories, used a pioneering form of interpreted "p-codeP-Code machineIn computer programming, a p-code machine, or portable code machine is a virtual machine designed to execute p-code...
" although, of course, its programmers had no name for what it was that they did. - FORTRAN IV required at least 12K memory and either 4 tape drives or 1 IBM 1311 disk drive.
- COBOLCOBOLCOBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....
required at least 4k memory and 4 tape drives. - IBM RPG (Report Program Generator) Basic RPG required at least 4K memory.
For the IBM Catalog of 1401 software, see IBM 1400 series
IBM 1400 series
The IBM 1400 series were second generation mid-range business decimal computers that IBM sold in the early 1960s. They could be operated as an independent system, in conjunction with IBM punched card equipment, or as auxiliary equipment to other computer systems.1400-series machines stored...
.
Art inspired by the IBM 1401
In October 2006, IcelandIceland
Iceland , described as the Republic of Iceland, is a Nordic and European island country in the North Atlantic Ocean, on the Mid-Atlantic Ridge. Iceland also refers to the main island of the country, which contains almost all the population and almost all the land area. The country has a population...
ic avante-garde musician Jóhann Jóhannsson
Jóhann Jóhannsson
Jóhann Jóhannsson is an Icelandic musician, composer and producer. He is a co-founder of Kitchen Motors in Reykjavík, the art organization/think tank/record label which specializes in initiating collaborations, promoting concerts and exhibitions, performances, chamber operas, producing films,...
released the album 'IBM 1401, A User's Manual through music publisher 4AD
4AD
4AD is a British independent record label that was started in 1979 by Ivo Watts-Russell and Peter Kent, funded by Beggars Banquet Records, and is still active today...
.
The concept is based upon work done in 1964 by his father, Jóhann Gunnarsson, chief maintenance engineer of one of the country’s first computers, and Elias Davidsson, one of the first programmers in the country. The album was originally written for a string quartet, organ and electronics and to accompany a dance piece by long-standing collaborator friend, Erna Ómarsdóttir. For the album recording, Johann has rewritten it for a sixty-piece string orchestra, adding a new final movement and incorporating electronics and vintage reel-to-reel recordings of a singing IBM 1401 found in his father’s attic.
1401 culture
The IBM assembler for Symbolic Programming System was implemented poorly according to some 1401 programmers. It punched one card for each input instruction in its first pass and this deck had to be loaded during pass 2. At the University of Chicago and many other locations, this assembler was replaced by one which packed the output of pass one into several instructions per card. Other assemblers were written which placed the pass one output into memory for small programs.More well-known were various demo programs to play music on transistor radios placed on the CPU and computer "art", mostly kitschy
Kitsch
Kitsch is a form of art that is considered an inferior, tasteless copy of an extant style of art or a worthless imitation of art of recognized value. The concept is associated with the deliberate use of elements that may be thought of as cultural icons while making cheap mass-produced objects that...
pictures printed using Xs and 0s on chain printers.
The simplicity of the 1401 made it, if not a modern ruggedized machine, fairly reliable in stressful conditions. Thus IBM 1401 systems were more extensively used for US military logistics applications, in Vietnam and elsewhere, than were other, more advanced, systems.
During the 1970s, IBM installed many 1401s in India
India
India , officially the Republic of India , is a country in South Asia. It is the seventh-largest country by geographical area, the second-most populous country with over 1.2 billion people, and the most populous democracy in the world...
and Pakistan
Pakistan
Pakistan , officially the Islamic Republic of Pakistan is a sovereign state in South Asia. It has a coastline along the Arabian Sea and the Gulf of Oman in the south and is bordered by Afghanistan and Iran in the west, India in the east and China in the far northeast. In the north, Tajikistan...
where they were in use well into the 1980s. Some of today's Indian and Pakistani software entrepreneurs started on these 1401s. The first computer in Pakistan, for example, was an IBM 1401 installed at Pakistan International Airlines
Pakistan International Airlines
Pakistan International Airlines Corporation commonly known as PIA, is the flag carrier airline of Pakistan. The airline has its head office on the grounds of Jinnah International Airport in Karachi. and operates scheduled services to 24 domestic destinations and 38 international destinations in 27...
.
Character and Op codes
The table is in Character Collating Sequence.- Note: If Word mark bit is set, then the C bit will be opposite of shown. Of course, the C bit was determined and checked automatically by the machine - normally it was of no concern to the programmers. The only way the C bit could be entered was by manually using the switches on the Auxiliary Console. A programmer might use these switches to make quick patches while 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-5-8 | BA84 1 | ||||
< | 12-6-8 | BA842 | Less Than | |||
12-7-8 | CBA8421 | Group Mark | ||||
& | & | + | 12 | CBA | ||
$ | $ | $ | 11-3-8 | CB 8 21 | ||
* | * | * | 11-4-8 | B 84 | ||
|
11-5-8 | CB 84 1 | ||||
; | 11-6-8 | CB 842 | ||||
Δ | 11-7-8 | B 8421 | Delta (Mode Change) | |||
- | - | - | 11 | B | ||
/ | / | / | 0-1 | C A 1 | Clear Storage | |
, | , | , | 0-3-8 | C A8 21 | Set Word Mark | |
% | % | ( | 0-4-8 | A84 | Divide | Optional special feature. |
ˠ | 0-5-8 | C A84 1 | Word Separator | |||
\ | 0-6-8 | C A842 | Left Oblique | |||
⧻ | 0-7-8 | A8421 | Tape Segment Mark | |||
ƀ | ‡ | ‡ | N/A 0 |
A | Cannot be read from card without a no-cost RPQ, in which case it is read as 8-2. Punches as zero. Blank with "even-parity" on tape. |
|
# | # | = | 3-8 | 8 21 | Modify Address | Optional (requires more than 4000 characters of memory) |
@ | @ | ' | 4-8 | C 84 | Multiply | Optional special feature. |
: | 5-8 | 84 1 | ||||
> | 6-8 | 842 | Greater Than | |||
√ | 7-8 | C 8421 | Tape Mark | |||
? | & | & | 12-0 | CBA8 2 | Zero and Add | Plus Zero |
A | A | A | 12-1 | BA 1 | Add | |
B | B | B | 12-2 | BA 2 | Branch | |
C | C | C | 12-3 | CBA 21 | Compare | |
D | D | D | 12-4 | BA 4 | Move Numerical | (Bits) |
E | E | E | 12-5 | CBA 4 1 | Move Characters and Edit | |
F | F | F | 12-6 | CBA 42 | Control Carriage | (Printer) |
G | G | G | 12-7 | BA 421 | ||
H | H | H | 12-8 | BA8 | Store B-Address Register | Optional special feature. |
I | I | I | 12-9 | CBA8 1 | ||
! | - | - | 11-0 | B 8 2 | Zero and Subtract | Minus Zero |
J | J | J | 11-1 | CB 1 | ||
K | K | K | 11-2 | CB 2 | Select Stacker and other device controls | (Card and some others) |
L | L | L | 11-3 | B 21 | Load Characters to Word Mark | |
M | M | M | 11-4 | CB 4 | Move Characters to Word Mark | |
N | N | N | 11-5 | B 4 1 | No Operation | |
O | O | O | 11-6 | B 42 | ||
P | P | P | 11-7 | CB 421 | Move Characters to Record or Group Mark |
Optional special feature. |
Q | Q | Q | 11-8 | CB 8 | Store A-Address Register | Optional special feature. |
R | R | R | 11-9 | B 8 1 | ||
‡ | ‡ | ‡ | 0-2-8 | A8 2 | Record Mark | |
S | S | S | 0-2 | C A 2 | Subtract | |
T | T | T | 0-3 | A 21 | Translate | (1460 only) |
U | U | U | 0-4 | C A 4 | Control Unit | (Tape) |
V | V | V | 0-5 | A 4 1 | Branch if Word Mark and/or Zone |
|
W | W | W | 0-6 | A 42 | Branch if Bit Equal | Optional special feature. |
X | X | X | 0-7 | C A 421 | Move and Insert Zeros | Optional special feature. |
Y | Y | Y | 0-8 | C A8 | Move Zone | (Bits) |
Z | Z | Z | 0-9 | A8 1 | Move Characters and Suppress Zeros |
|
0 | 0 | 0 | 0 | C 8 2 | ||
1 | 1 | 1 | 1 | 1 | Read a Card | |
2 | 2 | 2 | 2 | 2 | Write a Line | |
3 | 3 | 3 | 3 | C 21 | Write and Read | |
4 | 4 | 4 | 4 | 4 | Punch a Card | |
5 | 5 | 5 | 5 | C 4 1 | Read and Punch | |
6 | 6 | 6 | 6 | C 42 | Write and Punch | |
7 | 7 | 7 | 7 | 421 | Write, Read, and Punch | |
8 | 8 | 8 | 8 | 8 | Start Read Feed | Optional special feature. |
9 | 9 | 9 | 9 | C 8 1 | Start Punch Feed | Optional special feature. |
Modifiers for Select Stacker (K) instruction
BCD Character | Unit | Meaning |
---|---|---|
Blank | 1401 | set program activity recording at BBB only if A is ,dd |
1 | 1402 | select last card read to stacker 1 if within 10 ms |
2 | 1402 | select last card read to stacker 8/2 if within 10 ms |
4 | 1402 | select previous card punched to stacker 4 |
8 | 1402 | select previous card punched to stacker 8/2 |
= or # | 1444 | select previous card punched to stacker 2 |
L | 1009 | operate in load mode |
$ | 1402 | overlap on |
A | 1009 | suppress 3-second alarm |
C | DDC | read request |
D | 1009 | set direction to receive |
DDC | write request | |
E | 1009 | set direction to transmit |
DDC | reset | |
F | 1009 | send EOF |
. | 1402 | overlap off |
) | 1402 | reset overlap |
Modifiers for five-character Branch on Indicator (B) instruction
BCD Character | Unit | Meaning |
---|---|---|
Blank | 1401 | Unconditional -- no word mark needed in next character |
1 | 1009 | in run condition |
1011 | punch in backspace operation | |
1011 | reader parity indicator on | |
1231 | auto select | |
1285 | error | |
1412 | control-check indicator on | |
1418 | late read | |
1419 | document to be read | |
1428 | late read or late reading mode change | |
1445 | printer error | |
7340 | hypertape unusual end | |
7740 | transmission complete with abnormal status | |
DDC | transmission error | |
2 | 1009 | buffer available |
1011 | punch ready | |
1011 | reader ready | |
1231 | full buffer | |
1285 | end of line | |
1412 | reader-not-ready signal on | |
1418 | ready to engage | |
1419 | document under read head (PDS 4) | |
1428 | ready to engage | |
7340 | hypertape normal end | |
7740 | transmission complete successfully | |
DDC | transmission ended by GMWM | |
3 | 1009 | good transmission occurred |
1011 | punch not ready to receive data | |
1231 | ready to read | |
1285 | reader transporting | |
1412 | read-check indicator on | |
1418 | document under selected read station | |
1419 | valid amount field | |
1428 | document under selected read station | |
7340 | hypertape control unit 7641 busy | |
7740 | receive request | |
DDC | read request | |
4 | 1009 | reply-bad indicator on |
1011 | punch not ready to read | |
1231 | empty hopper | |
1285 | marked line | |
1412 | amount-field indicator on | |
1419 | valid process-control field | |
7340 | hypertape attention | |
7740 | 7740 attention | |
DDC | write request | |
5 | 1009 | error reply acknowledgement |
1011 | punch overextended | |
1231 | read error or overrun | |
1285 | header information | |
1412 | process-control indicator on | |
1418 | document end | |
1419 | valid account-number field | |
1428 | document end | |
1445 | printer busy | |
6 | 1009 | program attention required |
1011 | punch supply reel low or chad box full | |
1231 | timing mark check | |
1285 | ready to read a line | |
1412 | account-number indicator on | |
1418 | character on line | |
1419 | valid transit-number field | |
1428 | character on line | |
1445 | carriage busy | |
DDC | write in progress | |
7 | 1009 | end of message |
1285 | reader ready | |
1412 | transit-number indicator on | |
1418 | empty hopper and transport (end of file) | |
1419 | valid serial-number field | |
1428 | empty hopper and transport (end of file) | |
1445 | carriage channel 9 | |
DDC | read in progress | |
8 | 1009 | end of file |
1285 | end of file | |
1412 | document-spacing-check indicator on | |
1418 | ready to read | |
1419 | auto-select | |
1428 | ready to read | |
1448 | carriage channel 12 | |
DDC | system A stopped | |
9 | 1403 | carriage tape channel 9 |
0 | 1404 | validity error |
' or @ | 1403 | carriage tape channel 12 |
> | 1448 | end of block |
/ | 1401 | unequal compare |
S | 1401 | equal compare |
T | 1401 | low compare |
U | 1401 | high compare |
V | 1301 | disk error |
1311 | disk error | |
1405 | read or write parity check or read back check error | |
W | 1301 | wrong-length record |
1311 | wrong-length record | |
1405 | wrong-length record | |
X | 1301 | uniqual-address compare |
1311 | uniqual-address compare | |
1405 | uniqual-address compare | |
Y | 1301 | any disk-unit error condition |
1311 | any disk-unit error condition | |
1405 | any disk-unit error condition | |
Z | 1401 | arithmetic overflow |
‡ | 1403 | printer error (record mark) |
( or % | 1401 | process check with process check switch off |
1440 | I/O check stop switch off | |
\ | 1301 | access busy |
1311 | access busy | |
J | 1419 | I/O channel-busy indicator |
TAU | tape busy | |
SIO | serial input-output busy | |
K | TAU | end of reel (writing) or tape mark (reading) |
L | TAU | tape error |
N | 1301 | access inoperable |
1311 | access inoperable | |
1405 | access inoperable | |
P | 1403 | printer busy |
Q | 1407 | inquiry request |
R | 1403 | carriage busy |
! | 1402 | punch error |
* | 1407 | inquiry clear |
+ or & | 1442 | last card (Reader unit 2) |
A | 1402 | last card if SS A is on |
B | 1401 | SS B |
7340 | hypertape attention response | |
C | 1401 | SS C |
D | 1401 | SS D |
E | 1401 | SS E |
7340 | hypertape end response | |
F | 1401 | SS F |
G | 1401 | SS G |
H | 1402 | reader busy |
I | 1402 | punch busy |
? | 1402 | reader error |
< | 1448 | early warning |
Further reading
Chapter 12 Broadening the Base pages 465-494, a history of IBM's 1401 and 1403 development Brief descriptions of the machine features, components, configurations, and special featuresExternal links
- IBM 1401 documents on bitsavers.org Video captures thoughts and reflections of some of the original 1401 team members from a reunion held in Endicott, NY in 2009. Includes footage from IBM 1401 marketing films.
- IBM 1401 videos and sounds
- 1401s I have Known, Tom Van VleckTom van Vleck-Life and work:He worked on CTSS at MIT, and co-authored its first email program.In 1965, he joined Project Mac, which is the origin of the MIT Computer Science and Artificial Intelligence Laboratory., Chiou, Stefanie; et. al...
. This article was reprinted, edited, in both editions of - Music inspired by the IBM 1401: Johann Johannsson's "IBM 1401: A User's Manual"