Mr. Gilmore, I believe that you've missed the major points.

If you carefully read the quotes from Principles of Operation, you'll
see that IBM did indeed use the term "unassigned".  For example, here
is a relevant sentence from the quotation:

   "If a value must be placed in unassigned positions that are not
    checked, the program should enter zeros."

The enforcement/checking that unassigned bits in instructions are zero
should be performed by the machine itself -- this has nothing to do
with enforcement/checking by assemblers.

Because of the way IBM amended some previously existing instructions
when implementing the Long Displacement Facility, bits in those
instructions which were formerly unassigned (or "reserved" using your
preferred term) could now become non-zero.  The setting of these bits
is done by the assembler itself, or, perhaps by a compiler.

For example, consider the ALG instruction.

Prior to the implementation of the Long Displacement Facility, this
instruction was documented in Principles of Operation as:

ALG      R1,D2(X2,B2)     [RXE]

+-------------------------/--------------------+
|  'E3'  | R1 | X2 | B2 | D2 |////////|  '0A'  |
+-------------------------/--------------------+
0         8   12   16   20   32       40      47


With the introduction of the Long Displacement Facility, the same
instruction is documented as:

ALG      R1,D2(X2,B2)     [RXY]

+-------------------------/--------------------+
|  'E3'  | R1 | X2 | B2 |DL2 |  DH2   |  '0A'  |
+-------------------------/--------------------+
0         8   12   16   20   32       40      47


If, for example, a compiler or assembler emitted an ALG instruction
where the "DH2" field was non-zero (thereby intending to exploit the
Long Displacement Facility), the result at execution time would be
Incorrect (and possibly without incurring any form of an addressing
exception or storage access exception) if the execution occurred on a
machine which did not implement the Long Displacement Facility.

Bob Raicer

Reply via email to