I/O Complete (IOC)/OP=98

Format

OP AF BF A Syllable

OP = 98

AF Unused and reserved. Can be specified as an indirect field length. A literal flag causes an invalid instruction fault (IEX=21).
BF Variant, which can be specified as an indirect field length. The following variant can be specified:

  • BF = 00 Decrement I/O in process
  • BF = 01 Set I/O Inhibited Memory Area

The use of other BF values causes an Invalid Instruction fault (IEX=26).

The A Syllable is the address of the 6-digit MAST number and may be indexed, indirect, or extended. The final address controller must specify UN or cause an Invalid Instruction fault (IEX=03).

Note This instruction can only be executed with the Privileged Enable toggle set, or an Invalid Instruction fault (IEX=02) occurs.

Function

IOC examines the specified MAST entry and may update certain fields based on the BF variant.

IOC is a companion instruction to the CIO instruction.

Variants

The variants are described as follows:

BF=00 (Decrement I/O in process count)

IOC decrements the I/Os in process field and reports the status, through the COMS, of the new I/Os in the in process field and the inhibited I/O memory area flag. If the CIO instruction which specifies a MAST entry is used prior to initiating an I/O request, this variant should be used after the I/O request completion has been harvested by the PIQ instruction.

The MAST number must be decimal and the value of 40 times the MAST number must be smaller than 1 million digits; otherwise, an invalid instruction fault (IEX=07) is reported.

IOC uses the MAST number as an array subscript into the MAST to locate the specified entry.

IOC obtains exclusive access rights to the specified MAST entry, and performs the following:

  • If the number of I/Os in process field is zero, IOC sets the comparison flags to HIGH, relinquishes access rights to the MAST entry, and terminates the instruction.
  • If the number of I/Os in process field is not zero, IOC decrements the value in the field by one.
  • If the value of the number of I/Os in process field is now zero, IOC checks the inhibited I/O memory area flag.
  • If the inhibited I/O memory area flag is set, IOC sets the comparison flags to LOW, relinquishes access rights to the MAST entry, and terminates the instruction.
  • If the inhibited I/O memory area flag is reset or if the value of the number of I/Os in the process field is not zero, IOC sets the comparison flags to EQUAL, relinquishes access rights to the MAST entry, and terminates the instruction.

BF=01 (Set I/O Inhibited Memory Area)

IOC reports, through the COMS, the status of the I/Os in the process field and sets the inhibited I/O memory area flag.

The MAST number must be decimal and the value of 40 times the MAST number must be smaller than 1 million digits; otherwise, an invalid instruction fault (IEX=07) is reported.

IOC uses the MAST number as an array subscript into the MAST to locate the specified entry.

IOC obtains exclusive access rights to the specified MAST entry.

IOC sets the I/O inhibited memory area flag and checks the number of I/Os in process field of the entry.

  • If the number of I/Os in process field is zero, IOC sets the comparison flags to LOW, relinquishes access rights to the MAST entry, and terminates the instruction.
  • If the number of I/Os in process field is not zero, IOC sets the comparison flags to EQUAL, relinquishes access rights to the MAST entry, and terminates the instruction.

Comparison Flags

BF=00

  • HIGH when the number of I/O in process field is equal to zero.
  • LOW when the number of I/O in process field decremented by one is zero and the inhibited I/O memory area bit is set.
  • EQUAL when the number of I/O in process field is not zero or the Inhibited I/O bit is set

BF=01

  • LOW when the number of I/O in process field is equal to zero.
  • EQUAL when the number of I/O in process field is not equal to zero.

Overflow Flag

The overflow flag is not changed by this instruction.

instructions/ioc.txt · Last modified: 2013/12/04 09:05 by scott
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki