IBM 1401 memory

Memory organization

The basic unit of information is a six-bit character, consisting of a four-bit digit part (8-4-2-1) and a two-bit zone part (B-A). The addressable unit of memory consists of a character, a word mark (W), and a parity ("check") bit (C). These are written in manuals, and appear on the computer console, as CBA8421W.

The memory cycle time is 11.5 microseconds.

Models were manufactured with 1400, 4000, 8000 and 16000 characters of memory.

Data representation

Fields of data are usually referenced by the character at the highest address. The character at the lowest address is indicated to be the end of the data field by having its word mark bit set.

Character fields are stored with the first character at the lowest address and the last character at the highest address of the field.

Numeric fields are stored with the high-order digit at the lowest address and the low-order digit at the highest address. The sign of the field is represented by zone bits in the low-order character: B-zone means negative, and any other combination, including no zone, is positive. Overflows are encoded by zone bits in the high-order character, in the order A, B, BA. During arithmetic operations the zone bits in other characters of the fields are ignored in operands, and cleared in results.

Addressing

Addresses are represented by three characters.

Addresses less than 1000 consist of three digits. Addresses less than 4000 consist of three digits, plus overflows in the high-order character. Addresses above 3999 have zone bits in the low-order character. Writing the zone bits in the low-order and then high-order character in the order BABA gives the thousands part of the address in binary.

Low zones   High zones   Thousands
  B  A         B  A
  0  0         0  0          0
  0  0         0  1          1
  0  0         1  0          2
  0  0         1  1          3
  0  1         0  0          4
  0  1         0  1          5
  0  1         1  0          6
  0  1         1  1          7
  1  0         0  0          8
  1  0         0  1          9
  1  0         1  0         10
  1  0         1  1         11
  1  1         0  0         12
  1  1         0  1         13
  1  1         1  0         14
  1  1         1  1         15

Indexing

A special feature called "advanced progamming" provides three index registers. These are actually stored in memory, at locations 87-89, 92-94, and 97-99.

An address indicates indexing with zone bits in the middle character. If indexing is selected, the address used during execution of an instruction consists of the address specified in the instruction plus the contents of the specified index register. Indexing adds three cycles, and sometimes four, per address, to the instruction execution.

  B  A   Index register
  0  0     None
  0  1     X1
  1  0     X2
  1  1     X3

Address arithmetic

Address arithmetic is modular, or "wraps around," at 16000. Therefore to subtract a number X from an address, add 16000-X to it.