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.