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. 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). One difference between the 1401 and 1401G is how the reader-punch is controlled. ==Booting and sample program==