DIAGNOSE Code X'28' allows a virtual machine to correctly execute some chan
nel programs modified after the Start
input/ output operation is completed. The channel command word (CCW) modifi
cations allowed are:
A Transfer in Channel (TIC) CCW modified to a No Operation
A TIC CCW modified to point to a new list of CCWs
A
When a virtual machine modifies a TIC CCW, it is modifying a virtual channel
program. CP has already translated that channel program and is waiting to execute
the real CCWs. The DIAGNOSE instruction, with Code X'28', must be issued to
inform CP of the change in the virtual channel program, so that CP can make the
corresponding change to the real CCW before it is executed. In addition, when a
CCWs.
To be sure that the DIAGNOSE instruction is recognized in time to update the real
CCW chain, the virtual machine issuing the DIAGNOSE instruction should have a
high favored execution value and a low dispatching priority value. The CP SET
command should be issued:
SET FAVORED xx
SET PRIORITY nn
where xx has a high numeric value and nn has a low numeric value. The virtual
machine issuing the DIAGNOSE Code X'28' must be in the supervisor mode at the
time it issues the DIAGNOSE instruction.
Entry Values: When DIAGNOSE Code X'28' is issued, the Rx register contains the
address of the TIC or
Ry register contains the device address in bits 16 through 31. Rx and Ry cannot be
the same register. The addresses specified in the Rx register, the new address in
the modified TIC CCW, and the new CCW list to which the modified TIC CCW
points must all be addresses that appear real to the virtual machine: CP knows
these addresses are virtual, but the virtual machine thinks they are real.
Condition and Completion Codes: The condition codes (cc) and completion codes
are as follows:
a zero.
cc= 1 There was probably an error in issuing the DIAGNOSE instruction. Reg
ister 15
R15= 1 The same register was specified for Rx and Ry.
R15=2 The device specified by the Ry register was not found.