return to main 1401 Restoration Page

Decoding IBM 1401 addressing

from Stan Paddock
from Van Snyder


by Stan Paddock

Start with the units position It determines which 4k bank of memory is used

The tens position determines which, if any, index register is used.

Column K provides the value specified by the zone values.

The hundreds position determines position within a 4 k bank

If UNITS =









0 1 2 3 4 5 6 7 8 9

Address is 0 through 3999

See hundreds position

Value is


0 1 2 3 4 5 6 7 8 9 +0000
If UNITS =









' / S T U V W X Y Z

Address is 4000 through 7999

See hundreds position

Value is


0 1 2 3 4 5 6 7 8 9 +4000
If UNITS =









! J K L M N O P Q R

Address is 8000 through 11999

See hundreds position

Value is


0 1 2 3 4 5 6 7 8 9 +8000
If UNITS =









? A B C D E F G H I

Address is 12000 through 15999

See hundreds position

Value is


0 1 2 3 4 5 6 7 8 9 +12000
If TENS =









0 1 2 3 4 5 6 7 8 9

Address is 0 through 3999




Value is


00 10 20 30 40 50 60 70 80 90
If TENS =









' / S T U V W X Y Z

Address is 4000 through 7999




Value is


00 10 20 30 40 50 60 70 80 90 +X1
If TENS =









! J K L M N O P Q R

Address is 8000 through 11999




Value is


00 10 20 30 40 50 60 70 80 90 +X2
If TENS =









? A B C D E F G H I

Address is 12000 through 15999




Value is


00 10 20 30 40 50 60 70 80 90 +X3
if HUNDRES=









0 1 2 3 4 5 6 7 8 9

Address is 0 through 3999




Value is


000 100 200 300 400 500 600 700 800 900 +0000
if HUNDRES=









' / S T U V W X Y Z

Address is 4000 through 7999




Value is


000 100 200 300 400 500 600 700 800 900 +1000
if HUNDRES=









! J K L M N O P Q R

Address is 8000 through 11999




Value is


000 100 200 300 400 500 600 700 800 900 +2000
if HUNDRES=









? A B C D E F G H I

Address is 12000 through 15999




Value is


000 100 200 300 400 500 600 700 800 900 +3000


from Van Snyder

Addressing above 4k is actually simple.

The zones on the high-order character are the low-order bits of the thousands. These would get set by overflows using ordinary 3-character arithmetic on a machine with 4k or less memory, which is why those machines don't need the MA instruction.

The zones on the low-order character are the high-order bits of the thousands.

So if you know the numeric part of the address character, it's easy to compute the thousands.

Here's a little chart like the one I had on a scrap of card stock in my pocket in 1966 (much smaller than a spreadsheet), this time using Pierce's primary (business chain) ASCII encoding instead of the one from page 170 of A24-1403:

Card                             |    1 2 3 4 5 6 7 8 9 0   Card
Zone | Units |   Hundreds Zone   |    Core            1 2 3 4 5 6 7
Row  | Zone  |  none  A   B  AB  |    1 2 3 4 5 6 7 8 8 8 8 8 8 8 8
=====|=======|===================|=================================
     | none  |    0   1   2   3  |    1 2 3 4 5 6 7 8 9 0 # @ : > {
0    | A     |    4   5   6   7  |  ^ / S T U V W X Y Z | , % ~ \ "
11   | B     |    8   9  10  11  |  - J K L M N O P Q R ! $ * ] ; _
12   | AB    |   12  13  14  15  |  & A B C D E F G H I ? . ) [ < }
Record mark is |, A82 in core but 0-2-8 punch since the 0 row can't simultaneously be used for the A zone and the zero digit ;-> The ^ is the alternate space, A-zone only, used for even-parity tape. On 1410, or 1401's that have the free RPQ (which number I have forgotten), it's a 2-8 punch, not a zero punch (which is numeric zero, encoded in core as A82).

Maybe you could print each on a sheet of paper, laminate them, and cut them into shirt-pocket-size pieces.