23
3.1.2
Simulation Stops
The simulator can be configured to detect certain machine instruction conditions and stop execution when one of
them occurs. Stops may be enabled or disabled individually with these commands:
SET CPU STOP=<option>[;<option]
SET CPU NOSTOP=<option>[;<option]
The
SET CPU STOP
or
SET CPU NOSTOP
commands enable or disable all of the configurable stops. These
options control the simulation stop conditions:
Option
Stop Condition
UNIMPL
Stop when an unimplemented instruction is executed
UNDEF
Stop when an undefined instruction is executed
UNSC
Stop when an unused select code is referenced
IOERR
Stop when an unreported I/O error occurs
Setting the
UNIMPL
option stops the simulator if execution of an unimplemented instruction is attempted. An
instruction is unimplemented if it is provided by a firmware option that is not currently installed (e.g., a DAD
instruction when the double-integer firmware is not installed) or is an opcode provided by an installed option but not
assigned to an instruction (e.g., opcode 105335 from the double-integer firmware set). If the stop is not set,
unimplemented instructions execute as NOP (no-operation), as in hardware.
Setting the
UNDEF
option stops the simulator if execution is attempted of an instruction containing a decoded
reserved bit pattern other than the one defined in the Operating and Reference Manual for the CPU. For example,
opcodes 101700 and 105700 are not defined as DMS instructions, but the microcode executes them as XMM
instructions, rather than as NOPs. The EAU opcode 100060 is defined as the 1000 E/F-Series TIMER instruction;
it is undefined on other machines, but it executes as MPY on the M-Series and NOP on the 2100. The intent of this
stop is to catch instructions containing reserved fields with values that change the meaning of those instructions. If
the stop is not set, undefined instructions execute in the same manner as on the selected CPU hardware.
Certain programs, such as the HP diagnostic configurator, intentionally execute unimplemented instructions to
determine the CPU model and configuration. For example, the configurator executes an RRR 16 instruction to
detect the presence of the EAU. If the EAU is installed, the A- and B-register contents are exchanged; otherwise,
the instruction executes as NOP, and the contents are unaltered. Also, the 1000 M-Series is differentiated from the
E/F-Series by executing the TIMER instruction; on the M-Series, it decodes as MPY and so returns to P+2, while
TIMER returns to P+1 on the E/F-Series. Enabling the
UNIMPL
and
UNDEF
options prevent this feature detection
code from working as expected. Disabling or bypassing these stops is required to permit correct operation.
Setting the
UNSC
option stops the simulator if an I/O instruction references the select code of an I/O backplane slot
that does not contain an interface card. If this option is not set, referencing an empty slot results in a no-operation,
as in hardware.
Setting the
IOERR
option stops the simulator if an I/O error occurs on a device that does not return error status to
the CPU. For example, the paper tape punch returns low- or out-of-tape status, the line printer returns out-of-paper
and offline status, and the disc drive returns not-ready and drive-fault status. By contrast, the paper tape reader
gives no indication that a tape is loaded. If the reader is commanded to read when no tape is mounted, the
interface hangs while waiting for the handshake with the device to complete. In hardware, the CPU can detect this
condition only by timing the operation and concluding that the tape is missing if the timeout is exceeded. However,
if a
SET CPU STOP=IOERR
command has been issued, then the simulator will stop with an error message to
permit the condition to be fixed. For instance, attempting to read from the paper tape reader with no paper tape
image file attached will print
No tape loaded in the PTR device
and will stop the simulator. After issuing an
ATTACH PTR
command to load the tape into the reader, resuming simulation will retry the read. Devices that
respond to the
IOERR
stop are indicated in their respective sections below.