array's bounds, and so any indexing operation was checked by the hardware: put another way, each array formed its own address space. In any case, the tagging of all memory words provided a second level of protection: a misdirected assignment of a value could only go to a data-holding location, not to one holding a pointer or an array descriptor, etc. and certainly not to a location holding machine code. Arithmetic operators Add top two stack operands (B := B + A or BY := BY + AX if double precision) Subtract (B - A) Multiply with single or double precision result Extended multiply with forced double precision result Divide with real result Divide with integer result Return remainder after division Integerize truncated Integerize rounded Integerize rounded with double precision result Change sign Join two singles to form a double Split a double to form two singles Input convert destructive – convert BCD number to binary (for COBOL) Input convert update – convert BCD number to binary (for COBOL) Set to single precision rounded Set to single precision truncated Set to double precision Pack destructive Pack update Unpack signed destructive Unpack signed update Unpack absolute destructive Unpack, absolute update Set external sign Read and clear overflow flip flop Read true/false flip flop Comparison operators Is B < A? Is B >= A? Is B > A? Is B <= A? Is B = A? Is B <> A? Does B have the same bit pattern as A, including the tag Logical operators Logical bitwise and of all bits in operands Logical bitwise or of all bits in operands Logical bitwise complement of all bits in operand Logical bitwise equivalence of all bits in operands Branch and call operators Branch unconditional (offset given by following code syllables) Dynamic branch unconditional (offset given in top of stack) Branch if last result false (offset given by following code syllables) Dynamic branch if last result false (offset given in top of stack) Branch if last result true (offset given by following code syllables) Dynamic branch if last result true (offset given in top of stack) Exit current environment (terminate process) Step and branch (used in loops; operand must be SIW) Execute a procedure call as given by a tag 7 PCW, resulting in an RCW at D[n] + 1 Return from current routine to place given by RCW at D[n] + 1 and remove