Previous topic |
Next topic |
Contents |
Index |
Contact z/OS |
Library |
PDF
Sample of a Unit Information Module (UIM) z/OS V1R7.0-V1R12.0 MVS Device Validation Support SA22-7586-01 |
|
********************************* TOP OF DATA ************************* * * The CBDSUIM member in SYS1.SAMPLIB can be used as a model * by customers when writing a Unit Information Module (UIM). * Customer-written UIMs are used to define non-IBM I/O units, * including devices, control units and ESCON directors, * in an I/O configuration. UIMs are invoked by the * Hardware Configuration Definition (HCD), by MVS IPL, and * by MVS Dynamic Activate. * * For each UIM, a corresponding UDT must be developed. * * Instructions: * * 1) Define a name for your UIM, of the format * CBDUCnnn, with nnn between 001 and 256. * Note: The sample UIM uses the number 255. If you like * to use another number, replace the number. * * 2) Copy this Sample UIM to a PDS member with the name * chosen for your UIM. * * 3) Change all strings "CBDUC255" in the UIM to the * chosen name. * * 4) Change the UIM according to your needs. * * 5) Separate the JCL at the end of the UIM, * and correct the names in the JCL. * Assemble and link-edit your UIM using the JCL. * *--------------------------------------------------------------------- * Note: * If you write an UIM, you should know the hardware and software * configuration characteristics of the I/O unit that needs a UIM * and should be familiar with the basic concepts of MVS and IOCP. * * Following additional documentation is required: * * - z/OS MVS Device Validation Support * - > * - IOCP User's Guide *--------------------------------------------------------------------- * Attention: The UIM must not use any MVS services, except those * described in the manual z/OS MVS Device Validation Support * ********************************************************************** TITLE 'CBDUC255: Sample UIM' * * START OF SPECIFICATIONS **************************************** * *01* MODULE NAME = CBDUC255 * *01* DESCRIPTIVE NAME = SAMPLE UIM * ********************************************************************** * PROPRIETARY STATEMENT = * * LICENSED MATERIALS - PROPERTY OF IBM * THIS SAMPLE IS "RESTRICTED MATERIAL OF IBM" * 5655-068 (C) COPYRIGHT IBM CORP. 1990, 1995 * * END PROPRIETARY STATEMENT ********************************************************************** * *01* FUNCTION = * * This sample UIM describes 2 sets of DASD equipment: * * Control Units: 39CC-6 93CC * * Devices attachable * to above control units: 33UU-1 93UU * 33UU-2 * 33VV * * MVS GENERIC names * for above devices: 33GG 93GG * * The following parameters are recognized for the 33UU-1, 33UU-2 * and 33VV DASD devices: * Common parameters: OFFLINE, DYNAMIC, FEATURE * Private parameter: DASDPOOL * * The following features are recognized for the 33UU-1, 33UU-2 * and 33VV DASD devices: * SHARED, SHAREDUP, ALTCTRL * * The following parameters are recognized for the * and 93UU DASD device: * OFFLINE, DYNAMIC, FEATURE * * The following features are recognized for the 93UU DASD * device: * ALTCTRL * * *02* OPERATION = * This unit information module defines the device dependent * support for the 33GG and 93GG DASD DEVICES. * * o When called with the initialization call, * * - CBDUC255 builds the parameter list for the Generic Information * Table and calls the GIT Build Routine to create the GITs * for the following generics: * .33GG * .93GG * * - CBDUC255 builds the parameter list for the Unit Information * Table and calls the UIT Build Routine to create the UITs * for the following devices: * .33UU-1 and its look-alike devices 33UU-2, 33VV * .93UU * * - CBDUC255 builds the parameter list for the Control Unit * Information Table and calls the CIT Build Routine to * create the CITs for the following control units: * .39CC-6 * .93CC * * - CBDUC255 builds the parameter list for the Device * Characteristics Table and calls the DCT Build Routine to * create the DCTs for the following devices: * .33UU * .93UU * * o When called by the HCD validation routines with a parameter * check request, * no parameter check is performed because there are no * additional rules for the provided parameters than * those already supported by HCD. * * o When called by the HCD validation routines with a feature * check request, * the features the user specified, contained in the IODV, * are validity checked. * * o When called by the HCD validation routines with a device number * check request, * no device number check is performed as no special rules for the * device number are applicable for 33GG and 93GG devices. * * o When called by the HCD validation routines with a unit address * check request, it is checked if the starting unit address of * a 93UU device definition is even-numbered. * * o When HCD runs in Report Mode and during IPL and dynamic * activation, CBDUC255 is called to build the parameter list * for the Device Feature Table build routine for each device * defined in the IODF. * The DFTs are used to build the UCBs for the configuration. * * o When, during MVS IPL, CBDUC255 is called for end-of-data * processing, no special action is taken as no end-of-data * processing is required. * * *03* RECOVERY OPERATION = * If an unexpected error occurs in CBDUC255, the ESTAE * routine CBDMSTAE established in module CBDMGHCP * will provide the diagnostic information. * No recovery is done during IPL. Any unexpected errors * during IPL will cause a wait state to be loaded. * *01* NOTES = * *02* DEPENDENCIES = None * *02* RESTRICTIONS = None * *01* MODULE TYPE = Procedure * *02* PROCESSOR = ASSEMBLER-H * *02* MODULE SIZE = For exact size see assembler listing * *02* ATTRIBUTES = * *03* LOCATION = Private * *03* STATE = Problem * *03* AMODE = 31 * *03* RMODE = Any * *03* KEY = User * *03* MODE = Task * *03* SERIALIZATION = None * *03* TYPE = Non-reusable * *01* ENTRY POINT = CBDUC255 * *02* PURPOSE = See FUNCTION * *02* LINKAGE = Standard Linkage * *03* CALLERS = * HCD Routines * (Functional Initialization routine, * Validation routines, * Report routine), * IPL Routine * Dynamic Activate Routine * *01* INPUT = * UCA * IODV (anchored off UCA), * for the following request types: * UCARADDR * UCARDFTB * UCARPARM * UCARFEAT * UCARUADD * * *02* ENTRY REGISTERS = * Register 0 - Undefined * Register 1 - Pointer to a one word parameter list, * defined as follows: * Word 1 - Address of the UCA * Registers 2-12 - Undefined * Register 13 - Address of an 18-word save area * Register 14 - Return address * Register 15 - Entry point address * * *01* OUTPUT = * Causes GITs for generics supported by this UIM to be built. * Causes UITs for devices supported by this UIM to be built. * Causes CITs for CUs supported by this UIM to be built. * Causes DCTs for each defined device type to be built. * Causes DFTs for devices supported by this UIM to be built. * Modifies the UCA. * *02* EXIT REGISTERS = * Registers 0-15 - Restored to contents on entry * *02* RETURN CODES = see UCA ( set in UCA ) * *01* EXIT NORMAL = Returns to the caller * *01* EXIT ERROR = None * *01* EXTERNAL REFERENCES = * *02* ROUTINES = * CIT Build Routine * DCT Build Routine * DFT Build Routine * GIT Build Routine * UIT Build Routine * *02* DATA AREAS = * CBDZDIAG - Diagnostic Stack Entry * *02* CONTROL-BLOCKS = * Common name Macro Name Usage * ----------- ---------- ----------- * CIP CBDZCIP write * DCE IECDDCE read * DCP CBDZDCP write * DFP CBDZDFP write * GIP CBDZGIP write * IODV CBDZIODV read * MSGR CBDZMSG write (via CBDIMSG) * UCA CBDZUCA read/write * UCB IEFUCBOB read * UIP CBDZUIP write * *01* TABLES = None * *01* MACROS EXECUTABLE = * CBDIMSG - Write Message * CBDIPPDS - Push/Pop Diagnostic Stack Entry * *01* CHANGE ACTIVITY = * * $H0= HCD HCSH501 940501 BOEB: Sample UIM for DASD I/O * $H4= OSA HCSH521 941011 BOEB: Open systems adapter support * $H1= OW12423 HCSH521 950504 BOEB: Quality enhancements * - Documentation of function codes * - Add MODCAT to CBDZDIAG statement * *01* SERIALIZATION = None * *01* MESSAGES = * * CBDB805I Features (SHARED) and (SHAREDUP) are mutually * exclusive for device type dddddddd. * * CBDB814I The left-most digit of unit address nn for device * type dddddddd must be even. * *01* ABEND CODES = None * *01* WAIT STATE CODES = None * ***** END OF SPECIFICATIONS ******************************************* EJECT ********************************************************************** * * Initial House-keeping * ********************************************************************** SPACE 1 CBDUC255 CSECT CBDUC255 RMODE ANY CBDUC255 AMODE 31 SPACE 1 USING *,R15 USING UCA,UCAPTR Define pointer to UCA USING ITRH,IODVPTR Define pointer to IODV B START SPACE 1 DC AL1(LENGTH-LENEBCDC) Length of EBCDIC description LENEBCDC DC C'CBDUC255 ' EBCDIC description of module DC C'&SYSDATE'; Compile date LENGTH EQU * SPACE 2 START STM R14,R12,12(R13) Save caller's registers LR R11,R15 Set base register contents DROP R15 Drop R15 as base register USING CBDUC255,R11 Establish addressability to * UIM csect ST R13,SAVAREA+4 Establish backward linkage in * current savearea LA R10,SAVAREA Obtain savearea address ST R10,8(R13) Establish forward linkage in * caller's savearea LR R13,R10 Places this UIMs own savearea * address in register 13 L UCAPTR,0(R1) Establish addressability to UCA L IODVPTR,UCAIODVP Establish addressability to IODV * ********************************************************************** * Pushes a new entry on the diagnostic stack. * The entry * - provides diagnostic information for abnormal termination * - causes a trace entry to be written into the HCD.TRACE dataset, * when the HCD trace is active. ********************************************************************** SPACE 1 CBDIPPDS PUSH,DIAG=DIAGDATA,REQ=UIM SPACE 1 LA R0,UCARCOK Set up good return code ST R0,UCARETC Initialize return code * EJECT ********************************************************************** * * Determine what function the UIM is called to perform *--------------------------------------------------------------------- * * Whenever the UIM is called, the field UCAUIMRT is set by the * calling routine with one of the request types listed below. * * Request Type: UIM function to be performed: * * UCARINIT Initialization request * as required: * build GIT * build UIT * build DCT (only for DASD devices) * build CIT * build SIT (only for ESCON directors) * UCARDFTB DFT build request * UCARADDR Device Number check * UCARPARM Parameter check * UCARFEAT Feature check * UCARUADD Unit Address check * UCAREOD End of data processing * * On each call, the UIM must analyze the Request Type and call the * appropriate internal routines. * The UIM may be called with Request Types which are not applicable * to this UIM, in this case the UIM must perform no operation, * and return to the calling routine. * *--------------------------------------------------------------------- * Handle Initialization Request *--------------------------------------------------------------------- * CLI UCAUIMRT,UCARINIT Initialization request ? BNE TSDFTBLD ..No, branch to test if called for * another request BAL R14,BUILDGIT Calls routine to build the GIT BAL R14,BUILDUIT Calls routine to build the UIT BAL R14,BUILDCIT Calls routine to build the CIT BAL R14,BUILDDCT Calls routine to build the DCT B EXIT Branch to leave routine SPACE 1 *--------------------------------------------------------------------- * Handle DFT Build Request *--------------------------------------------------------------------- * TSDFTBLD DS 0H CLI UCAUIMRT,UCARDFTB Test the caller's function code * to determine if the purpose of this * call is to build the DFTs BNE TSADDCHK ..No, branch to test if called for * another request @H1C BAL R14,BUILDDFT Call routine to build DFTs B EXIT Branch to leave routine * SPACE 1 *--------------------------------------------------------------------- * Handle Device Number Check Request *--------------------------------------------------------------------- * TSADDCHK DS 0H @H1A * CLI UCAUIMRT,UCARADDR Test the caller's function code * to determine if the purpose of this * call is to check the device number * @H1A * BNE TSPRMCHK ..No, branch to test if called for * another request @H1A * BAL R14,ADDRCHEK Call routine to check device # @H1A * B EXIT Branch to leave routine @H1A * * SPACE 1 @H1A *--------------------------------------------------------------------- * Handle Parameter Check Request *--------------------------------------------------------------------- * TSPRMCHK DS 0H @H1A * CLI UCAUIMRT,UCARPARM Test the caller's function code * to determine if the purpose of this * call is to check the device * parameters @H1A * BNE TSFEACHK ..No, branch to test if called for * another request @H1A * BAL R14,PARMCHEK Call routine to check device * parameters @H1A * B EXIT Branch to leave routine @H1A * * SPACE 1 @H1A *--------------------------------------------------------------------- * Handle Feature Check Request *--------------------------------------------------------------------- * TSFEACHK DS 0H CLI UCAUIMRT,UCARFEAT Test the caller's function code * to determine if the purpose of this * call is to check the device * features. BNE TSUADCHK ..No, branch to test if called for * another request BAL R14,FEATCHEK Call routine to check the features * of the passed device B EXIT Branch to leave routine * SPACE 1 *--------------------------------------------------------------------- * Handle Unit Address Check Request *--------------------------------------------------------------------- * TSUADCHK DS 0H CLI UCAUIMRT,UCARUADD Test the caller's function code * to determine if the purpose of this * call is to check the device * unit address. BNE TSEODPRO ..No, branch to test if called for * another request @H1C BAL R14,UADDCHEK Call routine to check the features * of the passed device B EXIT Branch to leave routine * SPACE 1 *--------------------------------------------------------------------- * Handle Parameter Check Request *--------------------------------------------------------------------- * TSEODPRO DS 0H @H1A * CLI UCAUIMRT,UCAREOD Test the caller's function code * to determine if the purpose of this * call is end of data processing @H1A * BNE TSOTHERS ..No, branch to test if called for * another request @H1A * BAL R14,PROCEOD Call routine for end of data * processing @H1A * B EXIT Branch to leave routine @H1A * * SPACE 1 @H1A *--------------------------------------------------------------------- * Handle other Request(s) *--------------------------------------------------------------------- * * There are no other requests. * Return to the calling routine. * TSOTHERS DS 0H EJECT , ********************************************************************** * * Final House-keeping * *--------------------------------------------------------------------- * * Pops the top entry from the diagnostic stack. * EXIT DS 0H CBDIPPDS POP,DIAG=DIAGDATA,REQ=UIM * *--------------------------------------------------------------------- * Restores caller's registers and returns *--------------------------------------------------------------------- * L R13,4(R13) Obtains callers savearea. LM R14,R12,12(R13) Restore caller's registers. BR R14 Return to caller. * EJECT * ********************************************************************** * * Procedure: BUILDGIT * * Descriptive Name: Build Generic Information Parameter * * Function: Builds the Generic Information Tables (GITs) * for the device types supported by this UIM. * * Operation: Fills in the Generic Information Parameter * and calls the GIT Build Routine to create * the GIT. * ********************************************************************** * The Generic Information Table GIT is used to register * GENERIC device names to MVS. * For every GENERIC name, the UIM must set the Generic Information * Parameters GIP, and call the HCD routine to build the GIT. * (The information provided with the GIP is stored in the GIT.) * The GIP layout is defined in macro CBDZGIP. * * All GIP fields set in this sample UIM are mandatory. * * The UCB TYPE values for units, configured by means of HCD, can * be seen in the HCD "MVS Device Report". * * The generic preference value for a generic device must * be UNIQUE, which means no other generic device in the * same MVS must have the same value. * For preference values used by IBM units, refer to the * appendix of "z/OS MVS Device Validation Support" * * For affinity index values dedicated to IBM units and values * reserved for users, refer to macro CBDZGIP. * *--------------------------------------------------------------------- * Following GIP fields are not set by this sample UIM * * Name Description Remarks * ----------|-------------------------------|------------------------ * GIPCMPNL |Compatible generic device name |Used by tape UIMs * |list | * GIPCMPNM |Compatible generic device name |Used by tape UIMs * | | * GIPDENL |Densities supported list |Used by tape UIMs * GIPDENSY |Density |Used by tape UIMs ********************************************************************** ********************************************************************** * * Builds GIT Routine. * * This routine initializes the GIT build parameter list and * then calls the GIT Build Service Routine. * ********************************************************************** * BUILDGIT DS 0H ST R14,SAVWORD1 Place return address in savearea. ********************************************************************** * * Builds GIT parameter list for 33GG. * ********************************************************************** XC GIP,GIP Zero out GIT build parameter list. MVC GIPID,GIPIDNM Insert control block ID MVI GIPVER,GIPVERN Place version number in parameter * list. MVC GIPNAME,GEN33GG Place name of generic device name * in GIP. MVC GIPUCBTY,GNRCTYP1 Initialize allocation UCB type * information. MVC GIPGPTPR,GNRCPRT1 Initialize generic preference * table priority. MVC GIPAFFIX,=AL2(GIPNOAFF) Set the affinity index to * "No affinity consideration" SPACE 1 ST UCAPTR,PARMAREA Store address of UCA in first word * of parmarea. LA R0,GIP Get address of GIP ST R0,PARMAREA+4 Store address of GIP in second word * of parmarea. LA R1,PARMAREA Load address of parameter list * in register 1 L R15,UCAGITP Pick up entry point address of * GIT Build Routine BALR R14,R15 Call routine to build GITs SPACE 1 *********************************************************************** * * Builds GIT parameter list for 93GG. * *********************************************************************** XC GIP,GIP Zero out GIT build parameter list. MVC GIPID,GIPIDNM Insert control block ID MVI GIPVER,GIPVERN Place version number in parameter * list. MVC GIPNAME,GEN93GG Place name of generic device name * in GIP. MVC GIPUCBTY,GNRCTYP2 Initialize allocation UCB type * information. MVC GIPGPTPR,GNRCPRT2 Initialize generic preference * table priority. MVC GIPAFFIX,=AL2(GIPNOAFF) Set the affinity index to * "No affinity consideration" SPACE 1 ST UCAPTR,PARMAREA Store address of UCA in first word * of parmarea. LA R0,GIP Get address of GIP ST R0,PARMAREA+4 Store address of GIP in second word * of parmarea. LA R1,PARMAREA Load address of parameter list * in register 1 L R15,UCAGITP Pick up entry point address of * GIT Build Routine BALR R14,R15 Call routine to build GITs SPACE 1 L R14,SAVWORD1 Restore mainline's return address BR R14 and return to mainline EJECT * ********************************************************************** * * Procedure: BUILDUIT * * Descriptive Name: Build Unit Information Parameter * * Function: Builds the UITs for the device types supported * by this UIM. * * Operation: Fills in the Unit Information Parameter * and calls the UIT Build Routine to create * the UIT * ********************************************************************** * The Unit Information Table UIT is used to register * type/model names and parameters of device units to HCD. * Only unit types which are defined by any UIT can be * configured by HCD and can be operated by MVS. * * You can view many of the UIT fields defined by the UIM, when you * select "List supported devices" and in device definition panels. * * For each unit type with unique configuration parameters * the UIM must fill the Unit Information Parameters UIP * and call the HCD routine to build the UIT. * For each UIP field, there is a corresponding UIT field. * * The UIP layout is defined in the macro CBDZUIP * * There are 3 UIP sections: * 1) The General section describes device characteristics which * are independent from the operating system, such as type, model, * or attachment information, such as the maximum number of CUs * a device can attach to. * This section is required. * 2) The MVS Section describes device characteristics which are * relevant for MVS only, such as generic name, device parameters * and features. * This section is required if the device is to be defined * as a device supported by MVS. * 3) The VM Section - which is not shown in this sample UIM - * describes device characteristics which are relevant to * VM only, such as "RDEV device class" or "RDEV device type". * This section is required if the device is to be defined * as a device supported by VM. * ********************************************************************** * Following UIP fields are not set by this sample UIM * * Name Description Remarks * ----------|-------------------------------|------------------------ * UIPGUSER |UIM user value for device |Processing control field * | |At Initialization, the * | |UIM can set a value per * | |UIP. At successive calls * | |this value is passed to * | |the UIM via the field * | |UCAUSER. * | | * UIPGDNC |Count of device numbers to |Used for multiple * |generate for each device if |exposure devices * |multiple-exposure device or |and parallel access * |parallel access volume |volumes. * | | * UIPGDNI |Interval between device |Used for multiple * |numbers when multiple device |exposure devices * |numbers are generated for the |and parallel access * |same device (valid only when |volumes. * |the value of UIPDNC is greater | * |than one) | * UIPGRFLG |Replication factor flags |Used for multiple * | |exposure devices and * | |parallel access volumes. * | | * UIPGPFLG |Processing flag | HCD internal use only; * | | UIM must not set this. * | | @H4A * | | * UIPGDFLG |Default flags |Defines defaults for * UIPGFTOU |if 1, TIMEOUT=NO is default |parameters which are not * UIPGFSTA |if 1, STADET=NO is default |OS specific. * | | * UIPGATT |Attachment information |OS independent * | |attachment information. * UIPGMNCU |max. number of CUs a device |The # of CUs a device * |can be attached to |can be attached to is * |if hex zero,the value enforced |restricted to this * |by the dialog is taken |maximum number by HCD. * | | * UIPGPR |Processing flags |HCD internal use only, * | |UIM must not set this. * | | * UIPMCFEA |Map of features that are |The features defined * |recognized for migration |here are tolerated, but * |compatibility (bits correspond |ignored during migration * |to sequence of compatible |of MVSCP decks. * |features in UDT. - Valid only | * |if IODVFFEA flag within | * |UIPOPARM is set) | * | | * UIPMATT |Attachment information |MVS attachment informa- * UIPMNIPC |NIPCON device type codes |tion, set only if NIPCON * | |device. * | | * UIPSIMFL |Device flags | * UIPSDFLT |Device model is default |Indicates that, if the * | |user does not define a * | |model, the model speci- * | |fied in UIPSMODL is used. * UIPMLTFL |Flags | * UIPMLTOP |MLT contains module names | * |associated with a product that | * |provides optional support for | * |this device | ********************************************************************** * * UIT Build Routine * * This routine initializes the UIT build parameter list and * then calls the UIT Build Service Routine. ********************************************************************** * BUILDUIT DS 0H ST R14,SAVWORD1 Place return address in savearea. * *--------------------------------------------------------------------- * * Builds UIT parameter list for 33UU-1 * * Note, that the CBDZUIP macro already initializes the UIP structure. *--------------------------------------------------------------------- * General section *--------------------------------------------------------------------- * Following registers the type/model name of a device to HCD *--------------------------------------------------------------------- * MVC UIPGUNIT,UNIT33UU Place device type in UIP MVC UIPGMODL,MODL1 Place the device model in UIP * *--------------------------------------------------------------------- * For each Unit defined in an UIP, there must be a unit * description in the corresponding UDT. * You can view the unit description texts in HCD, by selecting the * "List installed UIMs" panel, and then the * "View Supported devices" panel. * There may be multiple unit descriptions in a UDT. * The UIPGDESI parameter is used by HCD to find the appropriate * unit description for a device type. *--------------------------------------------------------------------- * MVI UIPGDESI,1 Set index to the unit description * for the device concerned in the UDT * *--------------------------------------------------------------------- * In the HCD "List Supported Device" panel and in the device * prompt panels, the devices are grouped in order * to facilitate the navigation among many device types. * * HCD uses the UIPGGRP parameter to associate a device type to * a certain device group such as DASD or Tape devices. * Refer to macro CBDZUIP for available group values. *--------------------------------------------------------------------- * MVI UIPGGRP,UIPGDASD Indicate that the device belongs * to the DASD group *--------------------------------------------------------------------- * When a device is defined in HCD, the user can specify * the Replication Factor (Number of Devices). * Following UIP fields are used to handle the Replication Factor * * UIPGDDRF Minimum Replication Factor (required) * * Specifies the minimum number of device definitions * to be created. * * UIPGHHRF Maximum Replication Factor (optional) * * Specifies the maximum number of device definitions * to be created. * * UIPGDLRF Default Replication Factor (required) * * Specifies the default value used if the number of * device definitions to be created was not specified. *--------------------------------------------------------------------- * MVC UIPGDDRF,=H'1' Set default replication factor MVC UIPGDLRF,=H'1' Set minimum replication factor * *--------------------------------------------------------------------- * MVS section *--------------------------------------------------------------------- * The following associates the device type "33UU-1" with the * Generic Device "33GG". *--------------------------------------------------------------------- * MVC UIPMGNNM,GEN33GG Set name of generic device in UIP * *--------------------------------------------------------------------- * The following defines the parameters and features that are * applicable when defining a device unit in HCD. * * Generally, the parameters must be described in the associated UDT. * The following parameters are applicable for all device types. * They need not be described in the UDT. * * ADDRESS - specifies the device number * UNIT - specifies the device type * MODEL - specifies the device model * * HCD distinguishes between required and optional parameters. * *--------------------------------------------------------------------- * Required parameters *--------------------------------------------------------------------- * * Parameters defined as required for a device unit must be * given a value when creating the device definition. * * The required parameters are set in bit string UIPMRPRM. * The position in the bit string is given by the parameter ID. * The first four bytes of UIPMRPRM are reserved for common parameters, * Bytes 5 through 8 are used for private parameters. * * The following parameters are required for all device types: * * ADDRESS - specifies the device number * UNIT - specifies the device type *--------------------------------------------------------------------- * OI IODVFLG1-IODVPRMS+UIPMRPRM,IODVFADD ADDRESS parameter OI IODVFLG2-IODVPRMS+UIPMRPRM,IODVFUNI UNIT parameter * *--------------------------------------------------------------------- * Optional parameters *--------------------------------------------------------------------- * Parameters defined as optional for a device unit need not be * given a value when creating the device definition. * * The optional parameters are set in bit string UIPMOPRM. * The position in the bit string is given by the parameter ID. * The first four bytes of UIPMOPRM are reserved for common parameters, * Bytes 5 through 8 are used for private parameters. *--------------------------------------------------------------------- * OI IODVFLG1-IODVPRMS+UIPMOPRM,IODVFMOD MODEL parameter OI IODVFLG1-IODVPRMS+UIPMOPRM,IODVFOFF OFFLINE parameter OI IODVFLG2-IODVPRMS+UIPMOPRM,IODVFDYN DYNAMIC parameter OI IODVFLG1-IODVPRMS+UIPMOPRM,IODVFFEA FEATURE parameter OI UIPMOPRM+4,DASDPPRM DASDPOOL parameter * *--------------------------------------------------------------------- * Features *--------------------------------------------------------------------- * The supported features are set in bit string UIPMSFEA. * Features can have the values 'Yes' or 'No'. 'No' is the default * value, unless the corresponding feature is defined in the * default feature bit string UIPMDFEA; in this case, the default * value is set to 'Yes'. * * All features must be described in the associated UDT. * The positions of the features in the bit string correspond to * to their sequence in the UDT. *--------------------------------------------------------------------- * OI UIPMSFEA,FEATACTL ALTCTRL feature OI UIPMSFEA,FEATSHR SHARED feature OI UIPMSFEA,FEATSHUP SHAREDUP feature *--------------------------------------------------------------------- * Parameter default values *--------------------------------------------------------------------- * The UIM allows you to set defaults or initial values for * parameters. * For some common parameters, defaults are indicated by flags * in the UIP: * - UIPMDFLG specifies defaults for * MODEL - If UIPMFDMD is set, and the model is not specified * during device definition, the default * device model is taken from UIPGMODL. * OFFLINE - If UIPMFOFF is set, the device is defined * as offline during IPL (OFFLINE=YES). * DYNAMIC - UIPMFDYC indicates whether the device supports * dynamic reconfiguration. * You can set DYNAMIC=YES only if UIPMFDYC is set. * If UIPMFDYC is set, the device will default to be * dynamically reconfigurable in the HCD dialog * (DYNAMIC=YES). * Note, however, that for the migration function * this default does not apply; here, if DYNAMIC is not * specified, it is left undefined. * * To provide default values for other OS specific parameters * (common or private), you can provide an entry in the parameter * default list. The entry contains the parameter ID together with * the default value. *--------------------------------------------------------------------- * OI UIPMDFLG,UIPMFDMD Indicates that, if no device model * is specified, the model specified * in UIPGMODL is used as default. OI UIPMFLG2,UIPMFDYC Indicates that the device supports * dynamic reconfiguration. * The DYNAMIC parameter is * initialized to YES in the HCD * dialog. L R1,UIPMDLFP Gets address of parameter default * list. USING UIPDLFPL,R1 Establishes addressability to * parameter default list. MVC UIPDPID,DASD_PID Identifies parameter to which the * default applies: DASDPOOL. LA R2,L'DASD_DEF Gets length of default value * string. STH R2,UIPDLEN Stores length of default value * in parameter default list entry. LA R2,DASD_DEF Gets address of default value * string. ST R2,UIPDPTR Stores address of default value * in parameter default list entry. DROP R1 Removes addressability of parameter * default list. *--------------------------------------------------------------------- * Parameter selection values *--------------------------------------------------------------------- * * The UIM allows you to specify the allowed values for a parameter * in the parameter selection list. * * The values specified in the parameter selection list for a * parameter serve two purposes: * (1) They are offered via prompt in the OS/device parameter and * feature panel. * (2) The HCD validation function checks the entered value * against the values specified in the parameter selection list. * If the entered value is not contained, an error message * is provided, and the parameter value is rejected. This * technique frees the UIM from checking the valid parameter * values. * * To provide selection values for an OS specific parameter * (common or private), you must provide an entry in the parameter * selection list. The entry contains the parameter ID together with * the selection values. *--------------------------------------------------------------------- * L R1,UIPMSELP Gets address of parameter selection * list. USING UIPSELPL,R1 Establishes addressability to * parameter selection list. MVC UIPSPID,DASD_PID Identifies parameter to which the * selection values apply: DASDPOOL. LA R2,3 Gets the number of selection values * for the parameter. STH R2,UIPSCNT Stores the number of selection * values in the parameter selection * list entry. LA R2,L'DASD_SP1 Gets length of a parameter * selection value. STH R2,UIPSLEN Stores length of selection value * in parameter selection list entry. LA R2,DASD_SEL Gets address of selection value * string. ST R2,UIPSPTR Stores address of selection values * in parameter selection list entry. DROP R1 Removes addressability of parameter * selection list. *--------------------------------------------------------------------- * Similar device list *--------------------------------------------------------------------- * * The UIM allows you to specify for a given device * a list of device types which * are look-alikes to the device. This frees you from * specifying the same UIP settings and calling the * UIT Build routine again if only the device types and models differ. * * An entry in the similar device list causes the UIT Build routine * to build a UIT with the same values as specified in the UIP, * using the device type of the similar device list entry. *--------------------------------------------------------------------- * L R1,UIPMSIMP Gets address of similar device * list. USING UIPSIMDL,R1 Establishes addressability to * similar device list. MVC UIPSUNIT,UNIT33UU Moves first similar device type to * the similar device list. MVC UIPSMODL,MODL2 Moves the model of the first * device type. LA R1,UIPSLENG(R1) Advance to next entry. MVC UIPSUNIT,UNIT33VV Moves second similar device type to * the similar device list. DROP R1 Removes addressability of similar * device list. *--------------------------------------------------------------------- * Following indicates that 4-digit device numbers for this * device type are supported *--------------------------------------------------------------------- * OI UIPMFLG2,UIPMFDVN Device supports 4-digit device * numbers * *--------------------------------------------------------------------- * The MLT is the list of modules representing the device code that * is loaded at IPL time *--------------------------------------------------------------------- * LA R2,UIPMLTNM Initialize pointer to MLT name list ST R2,UIPMMLTP Put this value in the UIP MVC UIPMLTNM,NAMEMLT Set MLT name. MVC UIPMMLTC,ONE Set MLT count. * *--------------------------------------------------------------------- * The DDT name represents a Device Definition Table that is loaded * at IPL time *--------------------------------------------------------------------- * MVC UIPMDDTN,NAMEDDT Set DDT name. ********************************************************************** * Call UIT Build Service Routine ********************************************************************** ST UCAPTR,PARMAREA Store address of UCA in first word * of parmarea. LA R0,UIP Get address of UIP ST R0,PARMAREA+4 Store address of UIP in second word * of parmarea. LA R1,PARMAREA Store address of parameter list * in register 1 L R15,UCAUITP Pick up entry point address of * UIT Build Routine BALR R14,R15 Call routine to build UITs SPACE 1 ********************************************************************** * * Builds UIT parameter list for 93UU * ********************************************************************** * * Since the UIP is used for another device unit, it has to * be initialized again. *--------------------------------------------------------------------- XC UIP(UIPGELN1),UIP Zeroes out UIP list. * Initialize the UIP header. MVC UIPGID,UIPIDNM Sets storage descriptor in header. OI UIPGVER,UIPGVER1 Sets UIP version code. MVC UIPGELEN,=AL2(UIPGELN1) Sets total length of UIP. * Initialize the UIP general section. OI UIPGTYP,UIPGEN Indicates general section. MVC UIPGLEN,=AL2(UIPGLN1) Sets length of general section. * Initialize the UIP MVS section. OI UIPMTYP,UIPMVS Indicates the MVS section. MVC UIPMLEN,=AL2(UIPMLN1) Sets length of MVS section. * Initialize the parameter default area. LA R2,UIPPDFLT Loads address of parameter default * list. ST R2,UIPMDLFP Stores address of parameter default * list in UIP. XC UIPPDFLT,UIPPDFLT Zeroes out parameter default list. * Initialize the parameter selection list. LA R2,UIPPSEL Loads address of parameter * selection list. ST R2,UIPMSELP Stores address of parameter * selection list in UIP. * Initialize the similar device list. LA R2,UIPSIMIL Loads address of similar device * list. ST R2,UIPMSIMP Stores address of similar device * list in UIP. XC UIPSIMIL,UIPSIMIL Zeroes out similar device list. * Initialize the MLT name list. LA R2,UIPMLTNM Initialize pointer to MLT name list ST R2,UIPMMLTP Puts this value in the UIP XC UIPMLTNL,UIPMLTNL Zeros out the MLT name list *--------------------------------------------------------------------- * Fills in the values for device unit 93UU. *--------------------------------------------------------------------- ********************************************************************** * General section ********************************************************************** MVC UIPGUNIT,UNIT93UU Place device type in UIP XC UIPGMODL,UIPGMODL Clear out model field MVI UIPGDESI,1 Set index to the unit description * for the device concerned in the UDT MVI UIPGGRP,UIPGDASD Indicate to what group the device * belongs MVC UIPGDDRF,=H'1' Set default replication factor MVC UIPGDLRF,=H'1' Set minimum replication factor ********************************************************************** * MVS section ********************************************************************** MVC UIPMGNNM,GEN93GG Place name of generic device in UIP OI IODVFLG2-IODVPRMS+UIPMRPRM,IODVFUNI UNIT parameter * OI IODVFLG1-IODVPRMS+UIPMRPRM,IODVFADD ADDRESS parameter OI IODVFLG1-IODVPRMS+UIPMOPRM,IODVFOFF OFFLINE parameter OI IODVFLG2-IODVPRMS+UIPMOPRM,IODVFDYN DYNAMIC parameter * OI IODVFLG1-IODVPRMS+UIPMOPRM,IODVFFEA FEATURE parameter OI UIPMSFEA,FEATACTL ALTCTRL feature * OI UIPMFLG2,UIPMFDYC Device supports dynamic * configuration OI UIPMFLG2,UIPMFDVN Device supports 4-digit device * * numbers * MVC UIPMLTNM,NAMEMLT Initialize MLT name. MVC UIPMMLTC,ONE Initialize MLT count. MVC UIPMDDTN,NAMEDDT Initialize DDT name. ********************************************************************** * Call UIT Build Service Routine ********************************************************************** ST UCAPTR,PARMAREA Store address of UCA in first word * of parmarea. LA R0,UIP Get address of UIP ST R0,PARMAREA+4 Store address of UIP in second word * of parmarea. LA R1,PARMAREA Store address of parameter list * in register 1 L R15,UCAUITP Pick up entry point address of * UIT Build Routine BALR R14,R15 Call routine to build UITs SPACE 1 L R14,SAVWORD1 Restore mainline's return address BR R14 and return to mainline * EJECT * ********************************************************************** * * Procedure: BUILDDCT * * Descriptive Name: Build Device Characteristics Parameters * * Function: Fills in the Device Characteristics Parameters * for the devices defined by this UIM * * Operation: Fills in the Device Characteristics Parameters * for the devices defined by this UIM and calls the * DCT Build Routine to create a DCT entry * ********************************************************************** * * DCT Build Routine * * This routine initializes the DCT build parameter list and * then calls the DCT Build Service Routine * ********************************************************************** * BUILDDCT DS 0H ST R14,SAVWORD1 Place return address in savearea. ********************************************************************** * * Builds the device characteristics table entry for a * 33GG device. * ********************************************************************** XC DCP,DCP Zero out DCT build parameter list. MVC DCPID,DCPIDNM Insert control block ID MVI DCPTYPE,DCP3390 Sets index into DCT MVC DCPLNGTH,=AL1(DCPEND-DCPENTRY) Sets length of DCP entry. MVC DCPCYL,=H'1113' Sets physical number of cylinders * per volume. MVC DCPTRK,=H'15' Sets number of tracks per cylinder. MVC DCPOVR0,=H'1428' Sets record 0 overhead. MVC DCPSECT,=AL1(224) Sets total number of records MVC DCPBPSEC,=H'272' Sets bytes per sector. MVC DCPTRKLN,=AL2(58786) Sets number of bytes per track. OI DCPFLAGS,DCPMODU Indicates track requires modulo * arithmetic. MVC DCPMOD1,=H'34' Sets modulo factor. MVC DCPALT,=H'15' Sets number of alternate tracks. SPACE 1 ST UCAPTR,PARMAREA Store address of UCA in first word * of parmarea. LA R0,DCP Get address of DCP ST R0,PARMAREA+4 Store address of DCP in second word * of parmarea. LA R1,PARMAREA Store address of parameter list * in register 1 L R15,UCADCTP Pick up entry point address of * DCT Build Routine BALR R14,R15 Call routine to build DCTs SPACE 1 ********************************************************************** * * Builds the device characteristics table entry for a * 93GG device. * ********************************************************************** XC DCP,DCP Zero out DCT build parameter list. MVC DCPID,DCPIDNM Insert control block ID MVI DCPTYPE,4 DCPTYPE of 9345 used MVC DCPLNGTH,=AL1(DCPEND-DCPENTRY) Sets length of DCP entry. MVC DCPCYL,=H'1440' Sets physical number of cylinders * per volume. MVC DCPTRK,=H'15' Sets number of tracks per cylinder. MVC DCPOVR0,=H'1184' Sets record 0 overhead. MVC DCPSECT,=AL1(213) Sets total number of records MVC DCPBPSEC,=H'238' Sets bytes per sector. MVC DCPTRKLN,=AL2(48280) Sets number of bytes per track. OI DCPFLAGS,DCPMODU Indicates track requires modulo * arithmetic. MVC DCPMOD1,=H'35' Sets modulo factor. MVC DCPALT,=H'15' Sets number of alternate tracks. SPACE 1 ST UCAPTR,PARMAREA Store address of UCA in first word * of parmarea. LA R0,DCP Get address of DCP ST R0,PARMAREA+4 Store address of DCP in second word * of parmarea. LA R1,PARMAREA Store address of parameter list * in register 1 L R15,UCADCTP Pick up entry point address of * DCT Build Routine BALR R14,R15 Call routine to build DCTs SPACE 1 L R14,SAVWORD1 Restore mainline's return address BR R14 and return to mainline * EJECT * ********************************************************************** * * Procedure: BUILDCIT * * Descriptive Name: Build Control Unit Information Parameter * * Function: Fills in the Control Unit Information Parameters * * Operation: Fills in the Control Unit Information Parameters * and calls the CIT Build Routine to create the CIT. * ********************************************************************** * * The Control Unit Information Table CIT is required by HCD * for the validation of a control unit definition. * For each CU type, a separate CIT is required. * Only control unit types defined by any CIT can be configured * with HCD. * * The CIT contains parameters such as: * type, model, attachment information, minimum/maximum values, * default values * * You can view many of the CIT values in the HCD "Supported * Control Units" panel, and in dialog panels used to define * control units. * * The UIM must set the Control Unit Information Parameters CIP * and call the HCD routine to build the CIT. * The CIP information is stored in the CIT. * * The CIP layout is defined in the macro CBDZCIP. * ********************************************************************** * Following CIP fields are not set by this sample UIM * * Name Description Remarks * ----------|-------------------------------|------------------------ * CIPFLAG |Flag byte | * CIPFCUD |If 1, device and CU are | * |physically the same | * CIPFDMOD |If 1, this model is the default|If the user does not * |model for this CU |specify a CU model, * | |HCD uses the model * | |defined in this CIP * | |as default model * | | * CIPPRFLG |Processing flags |HCD internal use only, * | |the UIM must not set * | | * CIPRUAN |recommended number of | * |unit addresses | * |(contains hex zero, if no value| * |is defined) | * | | * CIPMINDV |minimum number of devices | * |connected to the control unit | * |(contains hex zero, if no value| * |is defined) | @H4A * | | * CIPCUTYP |CU type | * CIPCUCTC |CU type = CTC |Set for CTC virtual CU * | |only * CIPCUSWI |CU type = Switch |Set for ESCON director * | |virtual CU only * CIPCUOSA |CU type = OSA |Set for open systems * | |adapter only @H4A * | | * CIPLMXNO |Maximum number of logical | * |control units supported | * |(contains hex zero, if no value| * |is defined) | * | | * CIPUADEF |Unit address rules for control | * |unit | * CIPMINUA |Min. number of unit addresses |The user must define at * | |least this # of unit * | |addresses. * | |The user should specify * | |at least this number of * | |devices. Otherwise, at * | |build production IODF * | |time, a warning message * | |is issued. * | | * CIPMAXUA |Max. number of unit addresses |The user must not define * | |more than this # of unit * | |addresses. * CIPMXUAR |Maximum number of unit address | * |ranges supported by CU | * | | * CIPVALUA |Valid unit addresses; unit |Can only be set if * |addresses are mapped to bit |CIPEXTPT is set; must be * |array. |set if CIPEXTPT is set. * | | @H4A * | | * CIPREQUA |Unit addresses required to be |Can only be set if * |defined for the control unit; |CIPEXTPT is set; must be * |unit addresses are mapped to |set if CIPEXTPT is set. * |bit array. | @H4A * | | * CIPPROUA |Unit addresses recommended to | Can only be set if * |be defined for the control unit| CIPEXTPT is set; must be * | | set if CIPEXTPT is set. * | | @H4A * CIPRUARN |Number of address ranges in the| A maximum of 8 unit * |array of recommended unit | address ranges may be * |addresses | specified. @H4A * CIPRUARS |Structure of recommended unit | Array of 8 @H4A * |address ranges | @H4A * CIPRUA |Starting unit address | @H4A * CIPRUARF|Replication factor | Specify the range value * | | reduced by 1. @H4A * | | * CIPLPATH |Logical path information | * CIPMXPTH |max. number of logical paths | * |supported by the control unit. | * |(contains hex zero if no max. | * |is defined) | * CIPMNGRP |Minimum group attachment value | If CIPMXPTH is set to * |The counted number of logical | a value greater than * |paths per channel path type | zero, CIPMNGRP must * |is rounded to the next multiple| also be set to a value * |of this value before the check | greater than zero. * |against CIPMXPTH is performed. | * | | * CIPEXTPT |Pointer to CIP extension area | If CIPEXTPT is set the * |(contains hex zero, if no value| following fields must * |is defined) | be set, too: * | | CIPVALUA, CIPREQUA, * | | CIPPROUA @H4A ********************************************************************** ********************************************************************** * * CIT Build Routine * * This routine initializes the CIT build parameter list and * then calls the CIT Build Service Routine. * ********************************************************************** BUILDCIT DS 0H ST R14,SAVWORD1 Place return address in savearea. SPACE 1 ********************************************************************** * * Builds CIP for control unit 93CC. * Note: The CBDZCIP macro already initializes the * CIP data structure. * ********************************************************************** * Following registers the control unit type '93CC' w/o model * number to HCD. * In HCD, this control unit type must be defined to identify the CU. *--------------------------------------------------------------------- * MVC CIPUNIT,CNTL93CC Place control unit name in CIP XC CIPMODL,CIPMODL Indicate that the control unit does* not have a model number * *--------------------------------------------------------------------- * In the HCD "List Supported Control Units" panel and in the * control unit prompt panels, the CUs are grouped * in order to facilitate the navigation among many CU types. * * HCD uses the CIPGROUP parameter to associate a CU type to * a certain CU group such as DASD or tape control units. * Refer to macro CBDZCIP for available group values. * * The following associates the control unit to the group of DASD CUs. *--------------------------------------------------------------------- * MVC CIPGROUP,=A(CIPGDASD) Get control unit group for this CU* and store into CIP * *--------------------------------------------------------------------- * The UIM can define which channel protocols are supported * by the CU and which protocol is default. * Every protocol is represented by a bit, multiple protocols can * be defined as being supported, but only one default protocol. * For available protocols and defaults refer to CBDZCIP. * * Here, '3.0 MB data streaming' and '4.5 MB data streaming' is set, * as default '3.0 MB data streaming' is defined. *--------------------------------------------------------------------- * MVI CIPSPROT,CIPSPSTR+CIPSP4MB Set supported protocols* for this CU MVI CIPDPROT,CIPDPDS Set default protocol = * data streaming protocol * *--------------------------------------------------------------------- * CIPATTT defines to which channel path types a CU is attachable. * Every channel path type is represented by a bit, multiple channel * path types can be defined, for all possible channel path types * refer to field CIPATTT in macro CBDZCIP. * * Following, the channel path types for BL, CNC and CVC are set. *--------------------------------------------------------------------- * MVC CIPATTT,=AL2(CIPATBL+CIPATSER+CIPATFX) * Sets attachment information for * this CU. * *--------------------------------------------------------------------- * CIPUADEF defines the unit address rules for the control unit. * - CIPMINUA specifies the minimum number of unit addresses that * must be assigned to a control unit when defining it. * - CIPMAXUA specifies the maximum number of unit addresses that * can be assigned to a control unit when defining it. * - CIPMXUAR specifies the maximum number of unit addresses ranges * that can be assigned to a control unit when defining it. * * HCD validates these rules and rejects any definitions not * adhering to them. * * The following statements specify that for a 93CC control unit: * - at least 32 unit addresses must be specified * - at most 64 unit addresses can be specified * - at most 1 unit address range can be specified *--------------------------------------------------------------------- * MVC CIPMINUA,MINUA32 Specifies that at least 32 unit * addresses must be specified. MVC CIPMAXUA,MAXUA64 Specifies that at most 64 unit * addresses can be specified. MVC CIPMXUAR,MAXUAR1 Specifies that at most 1 unit * address range can be specified. * *--------------------------------------------------------------------- * The following defines the rules and limits for the CUADD parameter. * CUADD parameters apply to ESCON control units which support * logical addressing. IBM processors allow a maximum range * of logical addresses of 0..15. * * The next instructions define the following for control unit 93CC: * - Setting CIPLFCUS indicates, that this CU supports logical * addresses * - Setting CIPLFRS indicates, that a CUADD range is defined. * - The minimum value for CUADD is set to 0 * - The maximum value for CUADD is set to 8 (the highest value * which can be set into CIPLMAX is 15). *--------------------------------------------------------------------- * MVI CIPLFLGS,CIPLFRS+CIPLFCUS Sets Logical CU addressing * flags MVI CIPLMIN,0 Sets minimum value of allowed CUADD MVI CIPLMAX,8 Sets maximum value of allowed CUADD * *--------------------------------------------------------------------- * The default I/O concurrency level is correlated to the "SHARED" * parameter of an IOCP CNTLUNIT macro instruction. * For all available defaults refer to CBDZCIP. * * Next, a default value of type 2 is specified, which means SHARED=NO, * multiple I/O requests are allowed. *--------------------------------------------------------------------- * MVI CIPDIOCL,CIPDIOT2 Set default I/O concurrency level * *--------------------------------------------------------------------- * The following defines that HCD checks for unit address range * starting with X'00', if the CU is attached to an ESCON channel *--------------------------------------------------------------------- * OI CIPVALF,CIPUAES0 Indicates that unit address range * should start with X'00', if * connected to an ESCON channel path * *--------------------------------------------------------------------- * HCD checks, that not more devices are attached to this CU, * than defined in CIPMXDEV (if the value is not zero). *--------------------------------------------------------------------- * MVC CIPMXDEV,MAX64 A maximum number of 64 devices * can be attached to the CU. * *--------------------------------------------------------------------- * Initialize the attachable device list showing all devices which * can be attached to the control unit concerned. * The type-models in the list must be registered by a UIT. * * With the model parameter CIPADEVM you can determine how a * device type is recognized in HCD. * A) When you specify an explicit model number, this number must * be defined in HCD. * B) When you specify a blank character string X'40', then * the device must be specified without model (only device type). * C) When you specify X'00' this will work like a "wild card" * character, which means any model can be specified, provided * it is defined by a UIT. * * Following, a device list containing 1 entry is specified, * with the device type parameter CIPADEVT set to 93UU, and * the model parameter CIPADEVM set to X'40', see case B). *--------------------------------------------------------------------- * L R1,CIPDVLP Pick up device address of dev list USING CIPADEVS,R1 Establish addressability MVC CIPADEVT,UNIT93UU Sets device unit. MVC CIPADEVM,BLANKS Device has no model. DROP R1 MVC CIPDVLC,=F'1' Sets count of devices in attachable * device list. SPACE 1 * *--------------------------------------------------------------------- * Call CIT Build Service Routine *--------------------------------------------------------------------- * SPACE 1 ST UCAPTR,PARMAREA Store address of UCA in first word * of parmarea. LA R0,CIP Get address of CIP ST R0,PARMAREA+4 Store address of CIP in second word * of parmarea. LA R1,PARMAREA Store address of parameter list * in register 1 L R15,UCACITP Pick up entry point address of * CIT Build Routine BALR R14,R15 Call routine to build CITs SPACE 1 ********************************************************************** * * BUILDS CIP FOR Control unit 39CC-6. * ********************************************************************** * * Since the CIP is used for another control unit, it has to * be initialized again. *--------------------------------------------------------------------- XC CIP(CIPADEV-CIP),CIP Zeroes out CIP list. MVC CIPID,=CL4'CIP ' Sets storage descriptor in header. MVI UIPGVER,X'01' Sets CIP version code. LA R2,CIPADEV Address of attachable device list ST R2,CIPDVLP Store it into pointer *--------------------------------------------------------------------- * Fills in the values for control unit 39CC-6. *--------------------------------------------------------------------- MVC CIPUNIT,CNTL39CC Place control unit name in CIP. MVC CIPMODL,MODL6 Place control unit model in CIP. MVC CIPGROUP,=A(CIPGDASD) Get control unit group for this CU* and store into CIP MVI CIPSPROT,CIPSPSTR+CIPSP4MB Set supported protocols * for this CU MVI CIPDPROT,CIPDPDS Set default protocol = * data streaming protocol MVC CIPATTT,=AL2(CIPATBL+CIPATSER+CIPATFX) * Set attachment information for * this CU * MVC CIPMINUA,MINUA2 Specifies that at least 2 unit * addresses must be specified. MVC CIPMAXUA,MAXUA64 Specifies that at most 64 unit * addresses can be specified. MVC CIPMXUAR,MAXUAR1 Specifies that at most 1 unit * address range can be specified. * * MVI CIPLFLGS,CIPLFRS+CIPLFCUS Sets Logical CU addressing * flags. MVI CIPLMIN,0 Sets minimum value of allowed CUADD MVI CIPLMAX,15 Sets maximum value of allowed CUADD * MVI CIPDIOCL,CIPDIOT2 Set default I/O concurrency level. OI CIPVALF,CIPUAES0 Indicates that unit address * should start with 00 if connected * to an ESCON channel path. * *--------------------------------------------------------------------- * Initialize attachable device list showing all devices which * can be attached to the control unit concerned * * In following a device list containing 3 entries is specified. * * Entry Device Type Device Model * 1 '33UU' '1' * 2 '33UU' '2' * 3 '33VV' X'40', no model *--------------------------------------------------------------------- * *--------------------------------------------------------------------- * L R1,CIPDVLP Pick up address of device list. USING CIPADEVS,R1 Establish addressability. MVC CIPADEVT,UNIT33UU Set device unit. MVC CIPADEVM,MODL1 Set device model. LA R1,CIPADEVL(R1) Proceed to next entry. MVC CIPADEVT,UNIT33UU Set device unit. MVC CIPADEVM,MODL2 Set device model. LA R1,CIPADEVL(R1) Proceed to next entry. MVC CIPADEVT,UNIT33VV Set device unit. MVC CIPADEVM,BLANKS Device has no model. DROP R1 MVC CIPDVLC,=F'3' Set count of devices in attachable * device list. SPACE 1 *--------------------------------------------------------------------- * Call CIT Build Service Routine *--------------------------------------------------------------------- SPACE 1 ST UCAPTR,PARMAREA Store address of UCA in first word * of parmarea. LA R0,CIP Get address of CIP ST R0,PARMAREA+4 Store address of CIP in second word * of parmarea. LA R1,PARMAREA Store address of parameter list * in register 1. L R15,UCACITP Pick up entry point address of * CIT Build Routine. BALR R14,R15 Call routine to build CITs. SPACE 1 L R14,SAVWORD1 Restore mainline's return address BR R14 and return to mainline EJECT * ********************************************************************** * * Procedure: FEATCHEK * * Descriptive Name: Feature Check Routine * * Function: Validity checks the specified features, sets * return code, and issues message. * * Operation: Checks whether mutually exclusive features * are specified. * If an error occurred * - sets error return code in UCA * - sets a field in the UCA to indicate that * the error occurred during feature check * - sets a field in the UCA to indicate which * feature is in error * - Invokes macro CBDIMSG to issue an error * message * * Input: Information contained in the internal text record * CBDZIODV * * Output: - Fields set in UCA * - Message CBDB805I * ********************************************************************** FEATCHEK DS 0H ST R14,SAVWORD1 Place return address in savearea. SPACE 1 TM IODVFEA1,FEATSHR+FEATSHUP If mutually exclusive * features specified, writes message. BNO FEATLBL1 .. No, return MVC UCAPID,=H'4' Sets ID of feature * where error occurred. MVC UCAPPOS,=H'3' Sets ID of feature where * error occurred. LA R0,UCARCERR Sets error return code ST R0,UCARETC into UCA parameter list. * *--------------------------------------------------------------------- * The message issued below must be defined in the corresponding UDT *--------------------------------------------------------------------- * CBDIMSG MID=CBDB805I,VAR1=IODVUNIT,STMT=YES,REQ=UIM * Issues message CBDB805I SPACE 1 FEATLBL1 DS 0H L R14,SAVWORD1 Restore mainline's return address BR R14 and return to mainline * EJECT * ********************************************************************** * * Procedure: UADDCHEK * * Descriptive Name: Unit Address Check Routine * * Function: Validity checks the specified unit address, sets * return code, and issues message. * * Operation: Checks for a 93UU device, whether the first digit * of the starting unit address is even. * If an error occurred * - sets error return code in UCA * - sets a field in the UCA to indicate that * the error occurred during unit address check * - Invokes macro CBDIMSG to issue an error * message * * Input: Information contained in the internal text record * CBDZIODV * * Output: - UCA field: UCARETC * - Message CBDB814I * ********************************************************************** UADDCHEK DS 0H ST R14,SAVWORD1 Place return address in savearea. SPACE 1 CLC IODVUNIT,UNIT93UU Is it a 93UU device? BNE UADDLBL1 .. No, return TM IODVUNIA,X'10' Check if low order bit of * the first digit is B'1' * in unit address of IODV record. BZ UADDLBL1 .. No, return LA R0,UCARCERR Set error return code ST R0,UCARETC into UCA parameter list. CBDIMSG MID=CBDB814I,VAR1=(IODVUNIA,H),VAR2=IODVUNIT, * STMT=YES,REQ=UIM * Issue message CBDB814I. SPACE 1 UADDLBL1 DS 0H L R14,SAVWORD1 Restore mainline's return address BR R14 and return to mainline. * EJECT * ********************************************************************** * * Procedure: BUILDDFT * * Descriptive Name: Build Device Feature Parameter * * Function: Fills in the Device Feature Parameter * * Operation: Fills in the Device Feature Parameter * and calls the DFT Build Routine to create * the DFT * * Input: Information supplied in the UIM * IODV record * * Output: DFP - Device Feature Parameter * ********************************************************************** * * The Device Feature Parameters DFP are used for building * the UCBs. See the comments in macro CBDZDFP. * * For units configured with HCD, the values of major DFP * fields can be seen in the HCD "MVS Device Report". * ********************************************************************** * * DFT Build Routine * ********************************************************************** * * BUILDDFT DS 0H ST R14,SAVWORD1 Place return address in savearea. XC DFP,DFP Zero out the DFP. * *--------------------------------------------------------------------- * UCBs, beside the common parts, optionally may have following * sections: * Device Dependent Segment * Device Class Extension * Device Dependent Extension * * As required for the DFP parameters, pointers and lengths * for the optional fields must be set. * Note: * In this Sample UIM no Device Dependent Extension is defined *--------------------------------------------------------------------- * XC DEVDPSEG,DEVDPSEG Zero out the device dependent * segment. XC DEVCESEG,DEVCESEG Zero out the device class extension LA R1,DEVCESEG LA R0,L'DEVCESEG Get the length of the device * class extension. ST R0,DFPDCEL Set length of device class * extension in DFP. LA R0,DEVCESEG Get address of device class * extension ST R0,DFPDCEP Set pointer to device class * extension in DFP. LA R0,L'DEVDPSEG Get the length of the device * dependent segment. ST R0,DFPDDSL Set length of device dependent * segment in DFP. LA R0,DEVDPSEG Get address of device dependent * segment. ST R0,DFPDDSP Set pointer to device dependent * segment in DFP. OI DFPFL5,DFPDCC Disconnect command chain device. OI DFPFL5,DFPENVRD Device returns environmental data. OI DFPFL6,DFPIOT Device supports I/O timing. MVC DFPID,DFPCBID Place control block ID in DFP. MVC DFPVER,DFPVERN Place the version number in DFP. * *--------------------------------------------------------------------- * Following, the UCB TYPE value is set depending on the unit type * passed in the IODV record. * The UCB TYPE used here must match the value defined in the * GIT of the Generic Device to which the unit is associated. *--------------------------------------------------------------------- * CLC IODVUNIT,UNIT33UU Is it a 33UU device? BE DFTLBL0 .. Yes, device type found CLC IODVUNIT,UNIT33VV Is it a 33VV device? BNZ DFTLBL1 .. No, continue check DFTLBL0 DS 0H Start initializing DFT. MVC DFPNAME,GEN33GG Place generic name of device in DFP MVC DFPUCBTY,GNRCTYP1 Initialize DFT UCB type. B DFTLBL2 Continue to setting further * information. DFTLBL1 DS 0H CLC IODVUNIT,UNIT93UU Is it a 93UU device? BNZ DFTLBL3 .. No, do not set values MVC DFPNAME,GEN93GG Place generic name of device in DFP MVC DFPUCBTY,GNRCTYP2 Initialize DFT UCB type. DFTLBL2 DS 0H OI DFPFLP1,DFPDYNPH Indicate that dynamic pathing * feature is supported by the device. OI DFPFLAG1,DFPPRES Indicates that device is * permanently resident. MVI DFPATI,ATTNINDX Sets attention table index. MVI DFPSNSCT,SENSBYT# Initialize number of sense bytes. MVI DFPDSTCT,STATETY# Initialize count of statistics * table entries. DFTLBL3 DS 0H MVI DFPETI,ERPINDEX Sets ERP index. TM IODVFLG1,IODVFOFF Offline parameter specified * at all ? BZ DFTLBL4 .. No, skip ahead TM IODVPFLG,IODVPOFF Offline set on ? BZ DFTLBL4 .. No, skip ahead OI DFPFLAG1,DFPOFFLN Offline, if specified DFTLBL4 DS 0H TM IODVFEAT,FEATACTL Is ALTCTRL feature set? BZ DFTLBL5 .. No, skip ahead OI DFPFL5,DFPALTCU Include feature in DFP. DFTLBL5 DS 0H TM IODVFEAT,FEATSHUP Is SHAREDUP feature specified? BZ DFTLBL6 .. No, skip ahead OI DFPFLP1,DFPSHRUP Set shareable in UP mode. DFTLBL6 DS 0H TM IODVFEAT,FEATSHR Is SHARED feature specified? BZ DFTLBL7 .. No, skip ahead OI DFPTBYT2,DFPRR Indicate device is shareable * between processors. DFTLBL7 DS 0H SPACE 1 ********************************************************************** * This loop manages successive calls to the DFT build routine ********************************************************************** * * On a single build DFT request, the UIM can be requested * to build DFTs for multiple devices of the same type. * In IODVDNBR the starting device number is set. * In IODVNBRD the number of devices is set. * * The value of IODVNBRD is used in the loop variable R9 * of below DFTLOOP. *--------------------------------------------------------------------- * LOOPINIT DS 0H LH R9,IODVNBRD Obtain number of requested devices XR R10,R10 Clear register for subsequent ICM. ICM R10,3,IODVDNBR Obtain device number. * DFTLOOP DS 0H ST R10,DFPDNBR Establish device number to be sent * to DFT build routine. ST UCAPTR,PARMAREA Initialize parameter area. LA R0,DFP Get address of DFP ST R0,PARMAREA+4 and store address in second word * of parmarea. LA R1,PARMAREA Store address of parameter list * in register 1. L R15,UCADFTP Obtain the entry point address from * the UCA BALR R14,R15 Call routine to build DFT. LTR R15,R15 Bad return code from DFT build ? BNZ DONEDFTB ..Yes, do not make any more calls * to build DFTs. A R10,ONE Increment device number. BCT R9,DFTLOOP Cycle until every device defined. SPACE 1 DONEDFTB DS 0H L R14,SAVWORD1 Restore return address from * savearea. BR R14 Return to main procedure. * EJECT ********************************************************************* * * The following word serves as savearea for register 14 when * internal procedures are called. * ********************************************************************* * SAVWORD1 DS F * ********************************************************************* * * The first 2 of the following words serve as this module's * parameter area for external calls. * The next 18 words serve as the module savearea. * ********************************************************************* * PARMAREA DS 2F SAVAREA DS 18F * ********************************************************************* * * Device dependent constants * ********************************************************************* * ONE DC F'1' Constant one MAX64 DC F'64' Constant 64 MINUA2 DC H'2' Constant 2 MINUA32 DC H'32' Constant 32 MAXUA64 DC H'64' Constant 64 MAXUAR1 DC H'1' Constant 1 *-------------------------------------------------------------------- * Definition of message ids used for validation checks. *-------------------------------------------------------------------- CBDB805I DC CL8'CBDB805I' Message id. CBDB814I DC CL8'CBDB814I' Message id. *-------------------------------------------------------------------- * Definition of generic names. *-------------------------------------------------------------------- GEN33GG DC CL8'33GG ' Generic name 33GG. GEN93GG DC CL8'93GG ' Generic name 93GG. *-------------------------------------------------------------------- * Definition of device units and models *-------------------------------------------------------------------- UNIT33UU DC CL8'33UU ' Device type 33UU. UNIT33VV DC CL8'33VV ' Device type 33VV. UNIT93UU DC CL8'93UU ' Device type 93UU. MODL1 DC CL4'1 ' Model 1. MODL2 DC CL4'2 ' Model 2. BLANKS DC CL4' ' No Model. *-------------------------------------------------------------------- * Definition of control unit types and models *-------------------------------------------------------------------- CNTL39CC DC CL8'39CC ' Control unit type 39CC. MODL6 DC CL4'6 ' Model 6. CNTL93CC DC CL8'93CC ' Control unit type 93CC. ******************************************************************** * Definitions for private parameter DASDPOOL *------------------------------------------------------------------- DASDPPRM EQU X'80' Bit mask for DASDPOOL parameter *------------------------------------------------------------------- DASD_PID DC AL2(33) Parameter ID for DASDPOOL * parameter (must correspond * to specification in UDT). *------------------------------------------------------------------- DASD_DEF DC CL8'DSP1 ' Default value for DASDPOOL * parameter. *------------------------------------------------------------------- DASD_SEL DS 0CL24 Parameter selection list values * for DASDPOOL parameter. * The values must be contiguous * using the same length. DASD_SP1 DC CL8'DSP1 ' Selection value for DASDPOOL * parameter. DC CL8'DSP2 ' Selection value for DASDPOOL * parameter. DC CL8'* ' Selection value for DASDPOOL * parameter. ********************************************************************** * * * DDT, MLT, UCB type values are required for building the * UCBs. * For units configured with HCD, the values of DDT, MLT and * UCB types can be seen in the HCD "MVS Device Report". *------------------------------------------------------------------- * NAMEDDT DC CL8'IECVDDT5' DDT name NAMEMLT DC CL8'IEAMLT33' MLT name GNRCTYP1 DC XL4'3010200C' UCB type GNRCTYP2 DC XL4'3010200E' UCB type * *------------------------------------------------------------------- * The generic preference value for a generic device must * be UNIQUE, which means no other generic device in the * same MVS must have the same value. * For preference values used by IBM units, refer to the * appendix of "z/OS MVS Device Validation Support" *------------------------------------------------------------------- * GNRCPRT1 DC F'99981' Generic preference value GNRCPRT2 DC F'99984' Generic preference value * STATETY# EQU 1 Number of statistics table entries SENSBYT# EQU 2 Number of sense bytes ERPINDEX EQU 0 ERP index. ATTNINDX EQU 64 Attention table index. * *------------------------------------------------------------------- * Features set in the UIT are those features which HCD * recognizes for the device. * The UIP field for supported features UIPMSFEA is defined * for each UIM exclusively. * All Feature definitions like FEATACTL, FEATSHR must be * defined also with CBDZUDT statements in the corresponding UDT * The features in the UIM and in the UDT must be defined * in the same sequence. * * The following bit masks are used to set the UIP field UIPMSFEA. *------------------------------------------------------------------- * FEATACTL EQU X'80' ALTCTRL feature value. FEATSHR EQU X'40' SHARED feature value. FEATSHUP EQU X'20' SHAREDUP feature value. * DEVCESEG DS CL40 Device class extension DEVDPSEG DS CL16 Device dependent segment LTORG * Define literals here EJECT , ********************************************************************* * * Register equates * ********************************************************************* * R0 EQU 0 R1 EQU 1 R2 EQU 2 R3 EQU 3 R4 EQU 4 IODVPTR EQU 5 IODV pointer. UCAPTR EQU 6 UCA pointer. R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 R11 EQU 11 Base register R12 EQU 12 R13 EQU 13 Save area address R14 EQU 14 R15 EQU 15 * ********************************************************************* * * This macro invocation generates a diagnostic stack entry * ********************************************************************* * DIAGDATA CBDZDIAG MODNAME=CBDUC255,CSECT=CBDUC255,COMP=SC1XL, X MODCAT=UIM,DESC='UIM FOR DASD 33UU, 93UU' @H1C EJECT ********************************************************************* * Storage declaration for control unit information parameters (CIP). ********************************************************************* * The CBDZCIP macro maps the control unit information parameters * (CIP). * * It generates an initialized structure of the CIP. * * DEV specifies the number of entries to be generated in * the attachable device list for the control unit. * * * Note: * If the CIP is re-used for another control unit definition, it * has to be re-initialized as shown in this sample UIM. * *-------------------------------------------------------------------- * CBDZCIP DEV=3 EJECT CBDZDCP EJECT CBDZDFP EJECT CBDZGIP EJECT ********************************************************************* * Storage declaration for unit information parameters (UIP). ********************************************************************* * The CBDZUIP macro maps the unit information parameters (UIP). * * TYPE=GEN generates an initialized structure of the UIP. * * MLTS specifies the number of entries to be generated in * the module lists table (MLT). The specified number * must be between 1 and 5; the default is 1. * * DFLT specifies the number of entries that are generated * in the parameter default list. This list contains * information about default values of parameters. * The default value is initially shown for the parameter * in the HCD dialog when defining the corresponding device * for the operating system. * * SEL specifies the number of entries that are generated * in the parameter selection list. If a parameter * selection list is specified, HCD provides a prompt * for the corresponding parameter showing the values of * the parameter selection list. The parameter selection * list is also used by HCD to check for the possible * values of a parameter. * * SIM specifies the number of entries that are generated * in the similar device list. This list identifies, * by device types and models, those devices which have * the same characteristics as the device named in the UIP. * * Note: * If like in this UIM, the UIP is cleared before it is re-used * for the next UIT to be build, then the fields initialized by this * macro, must be refreshed by program. * *-------------------------------------------------------------------- * CBDZUIP TYPE=GEN,MLTS=1,DFLT=1,SEL=1,SIM=2 EJECT ********************************************************************* * Storage declaration for message service routine parameter list * (MSGR). ********************************************************************* CBDZMSG , EJECT ********************************************************************* * Mapping of the Control unit Information Parameter list (CIP). ********************************************************************* * The CBDZCIP macro maps the control unit information parameters * (CIP). * * TYPE=DSECT provides mappings for attachable device list. *-------------------------------------------------------------------- * CBDZCIP TYPE=DSECT EJECT CBDZITRH , EJECT CBDZUCA , EJECT ********************************************************************* * Mapping of the Unit Information Parameters (UIP). ********************************************************************* * The CBDZUIP macro maps the unit information parameters (UIP). * * TYPE=DSECT provides mappings for * the parameter default list, * the parameter selection list. *-------------------------------------------------------------------- * CBDZUIP TYPE=DSECT END //******************************************************************** //JJJJJJ JOB ,NOTIFY=UUUUUU,MSGLEVEL=(1,1),MSGCLASS=H //ASMH EXEC PGM=IEV90,REGION=1024K,PARM='LINECNT=55,DECK' //SYSPRINT DD SYSOUT=* //SYSIN DD DSN=XXXXXXXXXXXXXXX(CBDUC255),DISP=SHR //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(NEW,DELETE) //SYSPUNCH DD DSN=&OBJ(CBDUC255),DISP=(,PASS,DELETE),UNIT=SYSDA,; // SPACE=(TRK,(1,5,5)) //SYSGO DD DUMMY //SYSLIB DD DSN=SYS1.AMODGEN, // DISP=SHR //SYSLIN DD UNIT=SYSDA,SPACE=(TRK,(30,10)),DISP=(NEW,PASS), // DSN=&POBJ; //LKED EXEC PGM=IEWL,PARM='AMOD=31,LET,LIST,NCAL,RMOD=ANY,XREF', // COND=(0,NE) //SYSPRINT DD SYSOUT=*,DCB=(RECFM=FB,LRECL=121,BLKSIZE=1210) //SYSLIN DD DDNAME=SYSIN //SYSLMOD DD DSN=YYYYYYYYYYYYYYY(CBDUC255),DISP=SHR //SYSUT1 DD DISP=(NEW,DELETE),SPACE=(CYL,(5,2)),UNIT=SYSDA //OBJ DD DSN=&OBJ,DISP=(OLD,DELETE); //SYSIN DD * INCLUDE OBJ(CBDUC255) NAME CBDUC255(R) /* |
Copyright IBM Corporation 1990, 2014
|