MIT PDP-10 'Info' file converted to Hypertext 'html' format by Henry Baker

Previous Up Next

PC format.

A subroutine call instruction is one which changes the PC (jumps) but stores the old value of the PC so that the subroutine can "return" (jump back) when it is done. There are several subroutine call instructions on the PDP-10, but they all store the PC in the same format:
 0 0 0 0 0 0 0 0 0 0 1 1 1 11111 112222222222333333
 0 1 2 3 4 5 6 7 8 9 0 1 2 34567 890123456789012345
 __________________________________________________
|A|C|C|F|F|U|I|P|A|T|T|F|D|     |                  |
|R|R|R|O|P|S|O|U|F|R|R|X|C|00000|       PC         |
|O|Y|Y|V|D|E|T|B|I|A|A|U|K|     |                  |
|V|0|1| | |R| |L| |P|P| | |     |                  |
| | | | | | | | | |2|1| | |     |                  |
|_|_|_|_|_|_|_|_|_|_|_|_|_|_____|__________________|
The right half is the PC proper -- the address of the next instruction to be executed (the one which follows the subroutine call instruction). The other individual bits are the status flags. They are stored in case the subroutine wants to restore them when it returns.

AROV, ARithmetic OVerflow, is set by any of the following:

CRY0, short for Carry 0, means that there was a carry out of bit 0 in an addition. Note that a carry out of bit 0, with no accompanying carry out of bit 1 (into bit 0), causes AROV to be set.

The precise conditions which can set CRY0 and not CRY1 are:

CRY1, short for Carry 1, means that there was a carry out of bit 1 in an addition. Note that a carry out of bit 1, with no accompanying carry out of bit 0, causes AROV to be set.

The precise conditions which can set CRY1 and not CRY0 are:

In addition, the following non-overflow conditions set both CRY0 and CRY1: FOV, Floating point OVerflow, is set by any of: FPD, First Part Done, is set when the processor responds to a priority interrupt, after having completed the first part of a two part instruction (e.g., ILDB). This flag is not usually of interest to the programmer.

USER is set while the processor is in user mode. In user mode, various instruction and addressing restrictions are in effect.

IOT, User IN-Out mode, (also called IOT User), is a special mode in which some of the user mode instruction (but not addressing) restrictions are removed. In this mode a user program may perform the hardware I/O instructions.

[PUBL, Public mode, signifies that the processor is in user public mode or in exec supervisor mode. This bit exists only on standard KL-10 systems; it is not on ANY ITS system.]

AFI, Address Failure Inhibit, if this flag is set, address break is inhibited for during the execution of the next instruction [KI10, KL10 only].

TRAP2 - if bit 10 is not also set, pushdown overflow has occurred. If traps are enabled, setting this flag immediately causes a trap. At present no hardware condition sets both TRAP1 and TRAP2 simultaneously. [KI10 KL10 only]

TRAP1 - if bit 9 is not also set, arithemetic overflow has occurred. If traps are enabled, setting this flag immediately causes a trap. At present no hardware condition sets both TRAP1 and TRAP2 simultaneously. [KI10 KL10 only]

FXU, Floating eXponent Underflow, is set to signify that in a floating instruction other than DMOVNx, FLTR, or DFN, the exponent of the result was less than -128 and AROV and FOV have been set.

DCK, Divide ChecK, signifies that one of the following conditions has set AROV:

Bits 13 through 17 of the PC word are always zero to facilitate the use of indirect addressing to return from a subroutine.

Bits 18 through 35 store an address that is one greater than the address of the instruction that stores the PC. Thus, the PC word points at the instruction immediately following the subroutine call.