Specifications

OpenVMS System Routines Called by OpenVMS AXP Device Drivers
IOC$CRAM_CMD
Return Values
SS$_NORMAL The calculated command, mask, and remote bus
address values have been written to the CRAM
and/or the specified buffer.
SS$_BADPARAM Illegal command supplied as input or illegal
argument supplied in call
SS$_INSFARG Insufficient arguments supplied in call
Description
IOC$CRAM_CMD calculates the COMMAND, MASK, and RBADR fields for a
hardware I/O mailbox according to the requirements of a specific I/O interconnect.
It performs the following tasks:
Obtains the address of the command table specific to the given I/O
interconnect from ADP$PS_COMMAND_TBL.
Uses the value specified in the command argument as an index into the
command table to determine the corresponding command supported by the
I/O interconnect.
If the command is valid for the I/O interconnect, IOC$CRAM_CMD writes it
to CRAM$L_COMMAND, to the specified buffer, or to both. If the command is
invalid for the I/O interconnect, IOC$CRAM_CMD returns SS$_BADPARAM
status to its caller.
Calculates the RBADR and MASK fields based of the hardware I/O mailbox,
basing their values on the command, the address of device register interface
space (ADP$Q_CSR or IDB$Q_CSR, if the cram argument is specified), the
byte_offset argument, and interconnect-specific requirements. It writes
these values to CRAM$B_BYTE_MASK and CRAM$Q_RBADR, to the
specified buffer, or to both.
Returns SS$_NORMAL status to its caller.
A–16