Section 3.1

Group 1

The instructions of this group, except 13 and 14, perform some arithmetical or logical operation between two operands, one of which is the 48-bit word x (a signed number in functions 10, 11 and 12, and a logical quantity in functions 15, 16 and 17).  The other operand is the 15-bit representation of Y itself: in fact, by modification and/or replacement, Y may be a 24-bit quantity.   The functions 13 and 14 use only the operand Y.   In 3-address form the result is written into accumulator Z and in 2-address form it is written into register X.

The operand Y can be regarded as a 48-bit word in which the m.s. 33 or 24 bits are all 0's and the l.s. 15 or 24 bits are the binary representation of Y.

If Y is written as a Basic or a Symbolic Address, the Y-operand is the corresponding 15-bit machine address.

Y is essentially unsigned in the instructions of group 1.  For convenience in writing and punching programs it can be written as a negative integer.  It is then stored and used as the 15-bit representation of this negative integer.  Thus if Y is written as -10 it is stored and used as the 15-bit representation of -10 with the effective value of 32768-10 = 32758.  If a Y-operand is written as a negative integer and is then modified, the effective Y is the 24-bit sum of the 24-bit modifier and the 15-bit unsigned representation of the written Y- operand.

Function number 10  [0001 000]

(3)  z' = x + Y                      (2)  x' = x + Y

Add Y to x, writing the result into Z or X.  OVR is set if the result is out of range.

A few examples follow:

(a)    10        A100      27        A3

sets (A3)I' = (A100)I + 27 or, equally, (A3)F' = (A100)F +(27 x 2-47)

(b)    10        A100      (A200)    A3

sets (A3)' = (A100) + A200m, i.e. the 24-bit unsigned modifier in A200 is added to the signed 48-bit number in A100.  Note that this is not the same as

       00        A100      A200      A3

in which the two signed 48-bit numbers (A100) and (A200) are added together.

(c)    10        A100      A200      A3

forms the sum of the signed 48-bit number in A100 and the machine address represented by the Basic Address A200.  (The Y-address can alternatively be written as a Symbolic Address).

(d)    10        A100      0

does not change the content of any register.   Such an instruction can be useful if it is desired to hold up a program until e.g. a peripheral transfer (ending at A100 in this case) has been completed satisfactorily.

(e)    10Y       A100      (A200)    A7

sets (A100)� = (A100) + A200m + A7m, i.e. it forms the sum of three numbers by a single instruction, saving one instruction and about 20 microsecs. over the pair of 00�instructions which constitute an alternative method.  It is, of course, necessary that A200m and A7m are unsigned (non-negative) 24-bit numbers.

Function number 11  [0001 001]

(3)  z' = x � Y                     (2)  x' = x - Y

Subtract Y from x, writing the result into Z or X.   OVR is set if the result is out of range.

The examples given for the 10-instruction are equally valid for the 11-instruction with the appropriate alterations to allow for the fact that Y is now subtracted.

Function number 12  [0001 010]

(3)  z' = Y � x                     (2)  x' = Y - x

From Y subtract x, writing the result into Z or X.  OVR is set if the result is out of range.

A special case of a 2-address 12-instruction is, typically

       12        A100      0      (A100)' = 0 - (A100) = -(A100)

which is the fastest way to overwrite a number by its own negative. This particular instruction will set OVR if xF = -1.0.

Function number 13  [0001 011]

(3)  z' = -Y                        (2)  x' = -Y

Negate Y, writing the result into Z or X.  OVR cannot be set by this instruction.

In 3-address form X is irrelevant and therefore it is recommended that this instruction should be used in 2-address form only.

In 2-address type, x is read from the store but is not used.  In 3-address type X is not checked for lockouts or violation of reservations unless replaced (see 2.2.23 and 2.2.24)

Function number 14  [0001 100]

(3)  z' = Y                         (2)  x' = Y

Copy Y into Z or X.  OVR cannot be set by this instruction.

In 3-address form X is irrelevant and therefore it is recommended that this instruction should be used in 2�address form only.  In 2-address type, x is read but not used.  In 3-address type X is not checked for lockouts or violation of reservations unless replaced (see 2.2.23 and 2.2.24).

Some examples follow

(a)    14        A100      27

set the integer +27 or the fraction 27 x 2-47 in A100.

(b)    14        A100      A200

sets, in A100, the machine address corresponding to Basic Address A200.  (If Y = A0, then this instruction sets xm = datum point).  Note that Y can also be written as a Symbolic Address.

(c)    14        A100      (A200)

copies A200m into A100, leaving Al00u clear.

Function number  15 [0001 101]

(3)  z' = x & Y                     (2)  x' = x & Y

Perform the logical operation 'and' between x and Y, writing the result into Z or X.  OVR cannot be set by this instruction.

For a further discussion of the logical operations see Section 3.2.1.

When using this function it is necessary to compute the numerical value of the required mask Y.

Function number 16 [0001 110]

(3)  z' = x � Y                     (2)  x' = x � Y

Perform the logical operation 'or' between x and Y, writing the result into Z or X.  OVR cannot be set by this instruction.

When using this instruction it is usually necessary to compute the numerical value of the required mask Y.

For a fuller discussion of the logical operations see Section 3.2.1.

Function number 17  [0001 111]

(3)  z' = x ≢ Y                     (2)  x' = x ≢ Y

Perform the logical operation 'not equivalent' between x and Y, writing the result into Z or X.  OVR cannot be set by this instruction.

When using this instruction it is usually necessary to compute the numerical value of the required mask Y.

For a fuller discussion of the logical operations see Section 3.2.1.