VDA TITLE 'DMKVDA (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE SEQUENCING OF SYSIN @V407466 00002000 COPY OPTIONS @V407466 00003000 COPY LOCAL @V407466 00004000 *. 00005000 * MODULE NAME - 00006000 * 00007000 * DMKVDA 00008000 * 00009000 * FUNCTION - 00010000 * TO 'ATTACH' A REAL DEVICE TO A USER AS A VIRTUAL DEVICE, 00011000 * OR TO DEDICATE ALL DEVICES ON A PARTICULAR CHANNEL TO A 00012000 * SPECIFIED USER. 00013000 *. 00014000 SPACE 2 00015000 DMKVDA START 00016000 SPACE 00017000 DC CL8'DMKVDA' MODULE IDENTIFICATION @V407466 00018000 SPACE 00019000 USING PSA,R0 @V407466 00020000 USING VMBLOK,R11 @V407466 00021000 USING SAVEAREA,R13 @V407466 00022000 SPACE 00023000 EXTRN DMKCVTBH @VA13651 00024000 EXTRN DMKSCNRU,DMKSCNVU @VA13651 00025000 EXTRN DMKSCNVS,DMKSCNRN,DMKSCNAU @V407466 00026000 EXTRN DMKLOCKQ,DMKLOCKD,DMKVDSAT @V407466 00027000 EXTRN DMKVCHDC @VA13651 00028000 EXTRN DMKSSSVA,DMKSSSAS,DMKSTKCP @V60B6B8 00030000 EXTRN DMKVDCPS,DMKVDCAL,DMKVDCSC @V407466 00031000 EXTRN DMKSYSOW,DMKSYSOC @V407466 00032000 EXTRN DMKVDEDC READ LABEL/ALLOC RECORD @V407466 00033000 EXTRN DMKVDERR ERROR MESSAGE ROUTINE @VA13651 00033500 *. 00034000 * 00035000 * COMMAND LINE FORMAT - 00036000 * 00037000 * +--------+-----------------------------------------------+ 00038000 * | | | 00039000 * | ATTACH | RADDR USERID | 00040000 * | | <3330V> | 00040500 * | | RADDR SYSTEM VOLID | 00041000 * | | RADDR1-RADDR2 USERID | 00042000 * | | RADDR1 RADDR2 ... USERID | 00043000 * | | | 00044000 * | | CHANNEL X USERID | 00045000 * | | | 00046000 * +--------+-----------------------------------------------+ 00047000 * 00048000 * ATTRIBUTES - 00049000 * 00050000 * REENTRANT, PAGEABLE, CALLED VIA SVC 00051000 * 00052000 * ENTRY CONDITIONS - 00053000 * 00054000 * GPR 2 = 0 00055000 * GPR 9 = ADDRESS OF COMMAND BUFFER 00056000 * GPR 11 = ADDRESS OF CALLER'S VMBLOK 00057000 * GPR 12 = ADDRESS OF DMKVDAAT 00058000 * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00059000 * 00060000 * EXIT CONDITIONS - 00061000 * 00062000 * GPR 2 = 0 IF DEVICE HAS BEEN ATTACHED, OR 00063000 * ERROR-CODE (SEE ERROR MESSAGES) IF UNSUCCESSFUL. 00064000 * 00065000 * CALLS TO OTHER ROUTINES - 00066000 * 00067000 * DMKSSSVA 00068000 * DMKSSSAS 00069000 * DMKSTKCP 00070000 * DMKSCNRN 00072000 * DMKSCNRU 00074000 * DMKSCNAU 00075000 * DMKSCNVU 00076000 * DMKSCNVS 00077000 * DMKVDSAT 00078000 * DMKCVTBH 00079000 * DMKQCNWT 00080000 * DMKFREE 00081000 * DMKLOCKQ - LOCK USERID 00082000 * DMKLOCKD - UNLOCK USERID 00083000 * DMKVCHDC 00084000 * DMKVDCPS - PRESCAN 00085000 * DMKVDCAL - ALLOCATION ROUTINE 00086000 * DMKVDCSC - SCAN COMMAND LINE 00087000 * DMKSYSOW 00088000 * DMKSYSOC 00089000 * DMKVDERR - PUT OUR 'ATTACH' ERROR MESSAGES 00089500 * DMKVDEDC - READ LABEL/ALLOCATION RECORD 00090000 * 00091000 * EXTERNAL REFERENCES - 00092000 * 00093000 * DMKSYSOW - OWNED LIST START 00094000 * DMKSYSOC - COUNT OF OWNED LIST VOLUMES 00094500 * 00095000 * TABLES / WORK AREAS - 00096000 * 00097000 * VMBLOK 00098000 * UDEVBLOK (DUMMY FOR USE BY DMKVDSAT SUBROUTINE) 00099000 * ATTMSG - WORK AREA FOR RANGE MESSAGES 00100000 * MDSECT - WORK AREA FOR MULTIPLE DEVICE ADDRESSES 00101000 * 00102000 * REGISTER USAGE - 00103000 * 00104000 * GPR 8 = ADDRESS OF RDEVBLOK 00105000 * GPR 9 = ADDRESS OF COMMAND BUFFER 00106000 * GPR 10 = ADDRESS OF VMBLOK FOR ATTACHED-TO USER 00107000 * GPR 11 = ADDRESS OF CALLER'S OR USER'S VMBLOK 00108000 * GPR 12 = BASE REGISTER 00109000 * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00110000 * 00111000 * GPRS 0-7 AND 14-15 ARE WORK REGISTERS. 00112000 * 00113000 * 00114000 * OPERATION - 00115000 * 00116000 * 1. THE INPUT LINE IS SCANNED VIA A CALL TO DMKVDCSC. 00117000 * DMKVDCSC WILL SCAN THE COMMAND LINE VIA DMKSCNFD AND DMKCVTHB 00118000 * TO OBTAIN AND CONVERT FROM HEX TO BINARY (WHERE APPROPRIATE) 00119000 * THE REAL DEVICE, USERID, AND VIRTUAL DEVICE. IF ANY FIELDS 00120000 * ARE OMITTED OR INVALID, AN ERROR CODE IS RETURNED TO THE 00121000 * CALLER AND DMKVDA WILL ISSUE AN APPROPRIATE ERROR MESSAGE 00122000 * BASED ON THE RETURN CODE RECEIVED. DMKCFCSC IS CALLED BY 00123000 * DMKVDCSC TO SCAN THE FIRST COMMAND OPERAND TO DETERMINE IF 00124000 * A RANGE OF REAL DEVICE ADDRESSES WAS SPECIFIED. IF MULTIPLE 00125000 * ADDRESSES ARE SPECIFIED ON THE COMMAND LINE, A WORK AREA 00126000 * IS OBTAINED AND ALL MULTIPLE REAL ADDRESSES ARE STORED IN 00127000 * BINARY FORM IN THIS WORK AREA FOR LATER PROCESSING. 00128000 * 00129000 * 2. DMKVDCPS WILL BE CALLED TO PERFORM A PRESCAN WHEN A RANGE 00130000 * OF REAL ADDRESSES OR MULTIPLE REAL ADDRESSES WERE SPECIFIED 00131000 * ON THE COMMAND LINE. THE PURPOSE OF THE PRESCAN IS TO 00132000 * DETERMINE THE NUMBER OF REAL DEVICES WHICH ARE LIKELY TO BE 00133000 * ATTACHED ON THIS COMMAND EXECUTION AND TO ACQUIRE STORAGE 00134000 * FOR VIRTUAL BLOCKS IN ADVANCE TO MINIMIZE REPEATED CALLS 00135000 * TO DMKFRE LATER BY DMKVDS. DMKVDCPS WILL BE CALLED ONLY 00136000 * WHEN MULTIPLE REAL ADDRESSES OR A RANGE OF REAL ADDRESSES 00137000 * WERE SPECIFIED ON THE COMMAND LINE. 00138000 * 00139000 * 3. DMKSCNRU IS CALLED TO FIND RDEVBLOK FOR THE REAL DEVICE 00140000 * (ERROR RETURNED IF NOT FOUND). DMKSCNAU IS CALLED TO FIND 00141000 * THE ACTIVE USER FOR WHOM THE ATTACH IS SPECIFIED (ERROR 00142000 * RETURNED IF HE IS NOT LOGGED ON). DMKSCNVU IS CALLED TO 00143000 * ENSURE THAT THE VIRTUAL DEVICE DOES NOT ALREADY EXIST 00144000 * (ERROR RETURNED IF IT DOES). 00145000 * 00146000 * 4. A CALL IS MADE TO DMKVDEDC TO VERIFY DEVICE 00147000 * EXISTENCE. SETS UP AN I/O TASK (TIO) TO SEE IF 00148000 * THE DEVICE EXISTS. IF THE DEVICE DOES NOT EXIST, 00149000 * IT IS MARKED OFFLINE AND A 'DOES NOT EXIST' MESSAGE 00150000 * IS ISSUED FROM DMKVDA. 00151000 * 00152000 * FOR DASD, DMKVDEDC WILL SET UP AND EXECUTE AN 00153000 * I/O TASK TO READ THE DASD VOLUME LABEL OF THE DEVICE 00154000 * BEING ATTACHED. IF SUCCESSFUL, THE VOLUME SERIAL 00155000 * IS INSERTED INTO THE 'RDEVSER' FIELD OF THE REAL 00156000 * DEVICE BLOCK. AN ERROR RETURN CODE IS PASSED BACK TO 00157000 * DMKVDA IF FAILURE ENCOUNTERED ON THE READ. A FLAG 00158000 * IS SET IF IT IS A CP/370 OWNED VOLUME. 00159000 * IF DMKVDEDC WAS CALLED WITH PARM = 1, INDICATING 00160000 * ALLOCATION DATA IS PRESENT, THE ALLOCATION 00161000 * RECORD IS READ INTO FREE STORAGE. 00162000 * 00163000 * 5. IF THESE TESTS ARE SATISFACTORY, THEN DMKVDSAT IS CALLED 00164000 * TO ATTACH THE GIVEN REAL DEVICE AS A VIRTUAL DEVICE. IF AN 00165000 * ERROR RETURN OCCURS FROM DMKVDSAT, THEN THE ERROR CODE IS 00166000 * RETURNED TO THE CALLER OF DMKVDAAT AND AN ERROR MESSAGE IS 00167000 * SENT. 00168000 * 00169000 * 6. IF DMKVDSAT WAS SUCCESSFUL, A MESSAGE IS 00170000 * SENT TO THE USER INDICATING THE DEVICE HAS BEEN ATTACHED; 00171000 * AN ADDITIONAL MESSAGE IS SENT TO THE CALLER INDICATING THAT 00172000 * THE DEVICE HAS BEEN ATTACHED. IF THE CALLER IS NOT THE 00173000 * SYSTEM OPERATOR, A MESSAGE IS SENT TO THE SYSTEM OPERATOR 00174000 * INDICATING WHAT DEVICE WAS ATTACHED BY WHAT CALLER TO WHAT 00175000 * USER. 00176000 * 00177000 * 7. PROCESSING WILL CONTINUE IF AN ERROR IS ENCOUNTERED WHILE 00178000 * PROCESSING MULTIPLE REAL ADDRESSES OR A RANGE. AN ERROR 00179000 * MESSAGE WILL BE ISSUED FOR THE DEVICE ADDRESSES IN ERROR. 00180000 * A RESPONSE TYPE MESSAGE WILL ALSO BE ISSUED FOR THOSE REAL 00181000 * ADDRESSES IN THE RANGE WHICH COULD BE ATTACHED OR THOSE 00182000 * MULTIPLE ADDRESS IN THE COMMAND LINE WHICH COULD BE 00183000 * ATTACHED. 00184000 * 00185000 * 8. FOR THE ATTACH CHANNEL COMMAND, A CHECK IS MADE TO ENSURE 00186000 * THAT THE COMMAND LINE IS CORRECT VIA A CALL TO DMKVDCSC. 00187000 * DMKVCHDC IS THEN CALLED TO ATTACH THE CHANNEL AND MARK ALL 00188000 * CONTROL UNITS AND DEVICES ON THE CHANNEL AS DEDICATED. 00189000 * 00190000 * RESPONSES - 00191000 * 00192000 * 'TYPE VADDR ATTACHED' 00193000 * OR 00194000 * 'DASD VADDR ATTACHED R/O' (IF READONLY OPTION WAS SPECIFIED) 00195000 * 00196000 * 'TYPE RADDR ATTACH TO $USERID$ VADDR' 00197000 * 00198000 * 'TYPE RADDR ATTACH TO $USERID$ VADDR BY $USERID$' 00199000 * 00200000 * 'DASD RADDR ATTACH TO SYSTEM $VOLID$' 00201000 * 00202000 * 'DASD RADDR ATTACH TO SYSTEM $VOLID$ BY $USERID$' 00203000 * 00204000 * 'RADDR ... ATTACHED' 00205000 * 'RADDR ... ATTACHED TO $USERID$' 00206000 * 'RADDR ... ATTACHED TO $USERID$ BY $USERID$' 00207000 * 00208000 * 'RADDR-RADDR ATTACHED' 00209000 * 'RADDR-RADDR ATTACHED TO $USERID$' 00210000 * 'RADDR-RADDR ATTACHED TO $USERID$ BY $USERID$' 00211000 * 00212000 * 00213000 * ERROR MESSAGES - 00214000 * 00215000 * SEE DMKVDERR FOR ERROR MESSAGE TEXT. 00216000 EJECT 00246000 DMKVDAAT RELOC ATTACH A REAL DEV/CHANNEL TO USER'S VM @V407490 00247000 XC VDABITS(4),VDABITS CLEAR FLAG-BIT WORD @V407466 00248000 * (SAVEWRK1) 00249000 SLR R10,R10 CLEAR R10 FOR LATER @V407466 00250000 SLR R4,R4 CLEAR R4 @V407466 00251000 ST R4,SAVER2 CLEAR R2 FOR ZERO RETURN CODE @V407466 00252000 LA R0,MULTSIZE+MSGSIZE+VOLSIZE LARGE PIECE OF @V60B6B8 00253000 * STORAGE 00254000 CALL DMKFREE GO GET IT @V407466 00255000 LR R4,R1 R4 CONTAINS ADDR OF AREA @V407466 00256000 USING ATTMSG,R4 ESTABLISH ADDRESSABILITY @V407466 00257000 MVI ATTMSG,BLANK PROPAGATE BLANKS THROUGH AREA @V407466 00258000 MVC ATTMSG+1((MULTSIZE*8+MSGSIZE*8)-1),ATTMSG @V407466 00259000 ST R4,SAVEWRK5 SAVE ADDR OF WORKAREA @V407466 00260000 EJECT 00261000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00262000 * DMKVDCSC WILL SCAN THE COMMAND LINE AND PERFORM SYNTAX CHECKING. * 00263000 * R9 POINTS TO THE COMMAND LINE AT ENTRY TO DMKVDCSC. DMKVDCSC WILL * 00264000 * USE THE DMKVDA SAVEAREA TO STORE COMMAND LINE OPERANDS AND FLAGS. * 00265000 * UPON RETURN FROM DMKVDCSC R2 = 0 IF A SUCCESSFUL SYNTAX CHECK WAS * 00266000 * PERFORMED. OTHERWISE R2 WILL CONTAIN THE APPROPRIATE ERROR CODE. * 00267000 * UPON RETURN R4 STILL POINTS TO LARGE WORK AREA. * 00268000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00269000 SPACE 2 00270000 CALL DMKVDCSC SCAN COMMAND LINE @V407466 00271000 LTR R2,R2 ANY SYNTAX ERRORS @V407466 00272000 BNZ ERROR JUMP TO ERROR MESSAGE CODE @V407466 00273000 TM VDABITS,CHANNEL ATTACHING A CHANNEL? @V407466 00274000 BO DEDCHAN YES, TRANSFER TO DMKVCHDC @V407466 00275000 LA R0,MULTSIZE+MSGSIZE CONSTRUCT VOLID OFFSET @V60B6B8 00276000 SLL R0,3 ...NO OF BYTES INTO MSG BUFFER @V60B6B8 00277000 LR R3,R4 BUFFER ADDR @V60B6B8 00278000 AR R3,R0 ACTUAL ADDR OF OFFSET @V60B6B8 00279000 MVC 0(VOLIDSIZ,R3),SAVEWRK6 VOLID SET BY DMKVDCSC @V60B6B8 00280000 LR R3,R4 WORK AREA ADDR TO R3 @V407466 00281000 TM VDABITS,MULTR MULTIPLE ADDRESSES ON COMMAND @V407466 00282000 BO GOODCMD2 YES, PREPARE FOR PRESCAN @V407466 00283000 TM VDABITS,RANGE MULTIPLE ADDRESSES ON COMMAND @V407466 00285000 BO GOODCMD YES, RANGE PROCESSING @V407466 00286000 LH R1,VIRTADD VIRTUAL ADDR TO R1 IF SINGLE @V407466 00287000 MVC SAVEWRK5(FLAGLEN),SAVEWRK9 SAVE FLAG SET IN DMKVDC 00287100 TM VMOSTAT,VMSYSOP THE SYSTEM OPERATOR @V407466 00288000 BO PROCESS YES @V407466 00289000 OI VDABITS,NSYSOP ATTACH BY OTHER THAN PRIMARY OP. @V407466 00290000 B PROCESS KEEP PROCESSING SINGLE ADDR @V407466 00291000 SPACE 2 00292000 GOODCMD EQU * SCAN DID NOT FAIL @V407466 00293000 SLR R3,R3 ZERO R3 TO INDICATE RANGE @V407466 00294000 GOODCMD2 EQU * ENSURE PARAMETER VALIDITY @V60B6B8 00295000 TM SAVEWRK9,VOLPRES WAS 'VOLID' PRESENT WITH @V60B6B8 00296000 * RANGE OR MULT 00297000 BO MSG076 YES, INVALID, SET UP ERROR MSG @VMI2020 00298000 BAL R5,SWPUSER SWITCH TO ATTACHEE'S VMBLOK @V60B6B8 00299000 BAL R5,LOKUSER LOCK USER'S DEVICE BLOCKS @V407466 00300000 BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00301000 EJECT 00302000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00303000 * R3 POINTS TO FREE STORAGE CONTAINING MULTIPLE ADDRESSES. * 00304000 * IF R3 = 0, THEN DMKVDCPS IS PROCESSING A RANGE OF ADDRESSES. * 00305000 * R2 UPON RETURN CONTAINS AN ERROR CODE IF APPROPRIATE. * 00306000 * R4 REMAINS UNCHANGED ACROSS THE CALL TO DMKVDCPS. * 00307000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00308000 SPACE 2 00309000 CALL DMKVDCPS DO PRESCAN FOR RANGE/MULTIPLES @V407466 00310000 CH R2,=H'124' EXCEEDED MAX DEVICES? @VA13217 00310300 BE ERR153 YES - ISSUE ERROR MSG @VA13217 00310600 LTR R2,R2 INSUFFICIENT STORAGE FOR REQUEST @V407466 00311000 BNZ ERROR JUMP TO ERROR MSG CODE IF SO @V407466 00312000 LA R0,MULTSIZE+MSGSIZE LENGTH OF MSG BUFFER @V60B6B8 00313000 L R15,SAVEWRK5 BUFFER ADDR @VMI2002 00314000 SLL R0,3 MSG BUFFER LENGTH IN BYTES @V60B6B8 00315000 AR R15,R0 BUMP OVER MSG BUFFER @VMI2002 00316000 MVC 0(VOLIDSIZ,R15),SAVEWRK3 VOLID IF PASSED FROM @VMI2002 00317000 * DMKVDC 00318000 TM VMOSTAT,VMSYSOP THE SYSTEM OPERATOR ???? @V407490 00319000 BO ATTSYSOP YES, GO CONTINUE PROCESSING @V407490 00320000 OI VDABITS,NSYSOP ATTACH BY OTHER THAN PRIMARY OP @V407490 00321000 ATTSYSOP EQU * @V407490 00322000 MVC SAVEWRK5(FLAGLEN),SAVEWRK9 SAVE FLAG SET IN @VA10488 00322100 * DMKVDC 00322200 TM VDABITS,RANGE PROCESSING RANGE @V407466 00323000 BNO CHKMULT NO, SEE IF MULTIPLE ADDRESSES @V407466 00324000 L R1,DEVADDR RADDR1 IN RANGE @V407466 00325000 PROCESS DS 0H @V4M0193 00326000 LR R9,R1 SAVE R1 @V4M0193 00327000 BAL R5,SWPCALL SWITCH BACK TO CALLER'S VMBLOK @V4M0193 00328000 LR R1,R9 RESTORE R1 @V4M0193 00329000 LA R9,SAVEWRK6 SAVEWRK6,7,8 = UDEVBLOK @V407466 00330000 USING UDEVBLOK,R9 @V407466 00331000 MVC UDEVBLOK(12),ZEROES CLEAR TO ZERO @V407466 00332000 STH R1,UDEVADD ... INTO UDEVBLOK @V407466 00333000 BAL R5,GETRDEV GET RDEVBLOK @V407466 00336000 USING RDEVBLOK,R8 @V407466 00337000 CLI RDEVTYPC,CLASDASD IS THIS DASD DEVICE @V60B6B8 00338000 BNE TSTDISA NO, CONTINUE @V60B6B8 00339000 CLI RDEVTYPE,TYP3330 IS IT A 3330 DASD @V60B6B8 00340000 BNE TSTDISA NO, CONTINUE @V60B6B8 00341000 TM RDEVFTR,VIRTUAL+SYSVIRT IS IT AN MSS VUA @V60B6B8 00342000 BZ TSTDISA NO, CONTINUE @V60B6B8 00343000 TM VDABITS,ATTSYST ATT TO THE SYSTEM @VMI2002 00346000 BO TSTSYSV YES, TEST DEVICE FEATURE @VMI2002 00347000 TM RDEVFTR,VIRTUAL ATT TO USER, IS RDEV A VIRT @VMI2002 00348000 BZ INVTYPE NO, INVALID DEV TYPE @VMI2002 00349000 B TSTVOLPR DEV TYPE OK, SEE IF SPECIFIC @VMI2002 00350000 * VOL NEEDED 00351000 TSTSYSV EQU * @VMI2002 00352000 TM RDEVFTR,SYSVIRT ATT TO SYS, IS RDEV A SYSV @VMI2002 00353000 BZ INVTYPE NO, INVALID DEV TYPE @VMI2002 00354000 TSTVOLPR EQU * @VMI2002 00355000 TM SAVEWRK5,VOLPRES WAS 'VOLID' PRESENT FOR VUA @VMI2002 00356000 BZ TSTDISA NO, CONTINUE @V60B6B8 00357000 TM PSAMSS,MSSPRES MSS PRESENT IN THIS SYSTEM? @VA09319 00357010 * VMI2040 00357020 BZ TSTDISA NO,DON'T TRY TO CALL DMKSSS @VA09319 00357030 * VMI2040 00357040 L R7,SAVEWRK5 ADDR OF THE NEEDED VOLID @V60B6B8 00358000 LA R7,0(,R7) CLEAR HIGH ORDER BYTE @VA13651 00358500 LA R0,MULTSIZE+MSGSIZE LENG OF MSG AREA IN D-WORDS @V60B6B8 00359000 SLL R0,3 INTO BYTES @V60B6B8 00360000 AR R7,R0 ADDR OF VOLID IF ONE EXISTS @V60B6B8 00361000 CALL DMKSSSVA FIND 'VOLID' FOR VUA @V60B6B8 00362000 LTR R0,R0 WAS THERE AN ERROR @V60B6B8 00363000 BNZ CHKRETC POSSIBLY, TEST RETURN CODE @V60B6B8 00364000 TSTDISA EQU * TEST FOR OFFLINE DEVICE @V60B6B8 00365000 TM RDEVSTAT,RDEVDISA IS DEVICE OFFLINE? @V407466 00366000 BO ERR12 YES - ERROR MESSAGE @V407466 00367000 TM VDABITS,ATTSYST ATTACH TO SYSTEM ? @V407466 00368000 BO ATTVOLD YES @V407466 00369000 TM RDEVSTAT,RDEVDED IS DEVICE ALREADY DED.? @V407466 00370000 BO ERR24 YES, GO INFORM @V407466 00371000 TM RDEVFTR,VIRTUAL THIS AN MSS VIRTUAL VUA? @VA11344 00371100 BNO TSTDISA1 NO - THEN DON'T WORRY @VA11344 00371200 TM SAVEWRK5,VOLPRES VOL PRESENT IN COMMAND? @VA11344 00371300 BO TSTDISA1 YES - THEN DON'T RESET FLAG @VA11344 00371400 NI RDEVFLAG,X'FF'-RDEVVMNT ELSE RESET 'MTD-BY-CP' @VA11344 00371500 TSTDISA1 DS 0H @VA11344 00371600 LA R1,CLASSPEC*256+TYPCTCA CHECK FOR REAL CTCA @V407466 00372000 CH R1,RDEVTYPC TRYING TO ATTACH A CTCA ? @V407466 00373000 BNE NOTCTCA NO -- NORMAL HANDLING @V407466 00374000 OI VDABITS,ATTCTCA NEEDS SOME SPECIAL HANDLING @V407466 00375000 NOTCTCA EQU * TEST FOR DASD READ-ONLY OPTION @V407466 00376000 TM VDABITS,ATTREAD "R/O" SPECIFIED ? @V407466 00377000 BZ NOTREAD NO @V407466 00378000 CLI RDEVTYPC,CLASDASD VALID ONLY FOR DASD DEVICES @V407466 00379000 BE CHKDRUM O.K. AS IT SITS @V407466 00380000 TM VDABITS,RANGE+MULTR RANGE OR MULTIPLE ADDRESSES @V407490 00381000 BM NOTREAD YES, CONTINUE PROCESSING @V407490 00382000 MSG 'R/O' SET REGS FOR ERROR MSG ROUTINE @V407466 00383000 B INVOPTS2 INVALID OPTION @V407466 00384000 CHKRETC EQU * TEST RETURN CODE FROM DMKSSS @V60B6B8 00385000 LA R15,RC4 EXPECTED RC @V60B6B8 00386000 CR R15,R0 COMPARE TO ACTUAL @V60B6B8 00387000 BE SAVEINFO IF RC=4, SAVE PERTINENT INFO @V60B6B8 00388000 B INVTYPE PUT OUT ERROR MESSAGE @V60B6B8 00391000 SAVEINFO EQU * SAVE PERTINENT INFO (FLAGS @V60B6B8 00392000 * ETC.) 00393000 TM MSSFLAG2-OSVSCOM(R1),MSGPROC PCI YET @VA09302 00394000 BZ PCINOW YES, PROCESS @VMI2018 00395000 NI MSSFLAG2-OSVSCOM(R1),X'FF'-MSGPROC @VA09302 00396000 L R3,MSSTASK1-OSVSCOM(R1) SAVE POINTER TO @V60B6B8 00397000 * MSSTASK1 00398000 LA R0,SAVESIZE GET A DUPLICATE SAVE AREA @V60B6B8 00399000 CALL DMKFREE @V60B6B8 00400000 MVC SAVEWRK1-SAVEAREA(4,R1),SAVEWRK1 SAVE FLAGS @V60B6B8 00401000 MVC SAVEWRK2-SAVEAREA(WORKAREA,R1),SAVEWRK2 HOLLY @V60B6B8 00402000 * SAVE REMAINING INFO 00403000 ST R1,CPEXR1-CPEXBLOK(R3) PUT PTR TO INFO IN @V60B6B8 00404000 * MSSTASK1 CPEXBLOK 00405000 B VDAATEXT EXIT FOR NOW, WAIT FOR MSS MOUNT @V60B6B8 00406000 * 00407000 * THE FOLLOWING ROUTINE IS ENTERED AFTER AN MSS VOLUME 00408000 * MOUNT. 00409000 * 00410000 DMKVDAS1 RELOC @V60B6B8 00411000 USING OSVSCOM,R3 GPR 3 WAS SET BY DMKSSS @V60B6B8 00412000 MVC SAVEWRK1,SAVEWRK1-SAVEAREA(R1) RESTORE FLAGS @V60B6B8 00413000 * TO CURRENT SAVEAREA 00414000 MVC SAVEWRK2(WORKAREA),SAVEWRK2-SAVEAREA(R1) @V60B6B8 00415000 * RESTORE OTHER WORKING INFO 00416000 LA R0,SAVESIZE SIZE OF SAVE AREA @V60B6B8 00417000 CALL DMKFRET GIVE IT BACK @V60B6B8 00418000 L R1,MSSTASK3 IS THERE A PENDING I/O @V60B6B8 00419000 LTR R1,R1 REPRESENTED BY A CPEXBLOK @V60B6B8 00420000 BZ FRECOM2 NO @V60B6B8 00421000 CALL DMKSTKCP STACK THE CPEXBLOK FOR THE I/O @V60B6B8 00422000 FRECOM2 EQU * @V60B6B8 00423000 LA R0,MSSSIZE NO OF D-WORDS IN AN MSSCOM @V60B6B8 00424000 LR R1,R3 MSSCOM ADDR @V60B6B8 00425000 CALL DMKFRET RETURN CORE TO THE SYSTEM @V60B6B8 00426000 B TSTDISA AND COMPLETE THE ATTACH @V60B6B8 00427000 PCINOW EQU * MSS VOLUME IS NOW MOUNTED @VMI2018 00428000 L R14,=V(DMKSSSMQ) ADDR OF MSSCOM Q PTR @VMI2018 00429000 L R15,0(R14) FIRST MSSCOM IN Q @VMI2018 00430000 CHKNEXT EQU * SEE IF OUR MSSCOM IS IN Q @VMI2018 00431000 CR R15,R1 IS Q ENTRY OURS? @VMI2018 00432000 BE DEQIT YES, REMOVE IT @VMI2018 00433000 LA R14,MSSNEXT-OSVSCOM(R15) NEXT CHAIN PTR @VMI2018 00434000 L R15,MSSNEXT-OSVSCOM(R15) NEXT MSSCOM @VMI2018 00435000 B CHKNEXT AND CHECK IT @VMI2018 00436000 DEQIT EQU * @VMI2018 00437000 MVC 0(4,R14),MSSNEXT-OSVSCOM(R15) RECHAIN @VMI2018 00438000 LA R0,MSSSIZE SIZE OF THE MSSCOM @VMI2018 00439000 CALL DMKFRET RELEASE IT @VMI2018 00440000 B TSTDISA AND COMPLETE THE ATTACH @VMI2018 00441000 EJECT 00442000 USING MDSECT,R4 @V407466 00443000 CHKMULT L R2,MULTADD FIRST MULTIPLE ADDRESS @V407466 00444000 USING ATTMSG,R4 @V407466 00445000 GOODCMD3 LR R1,R2 DEVICE ADDRESS TO R1 @V407466 00446000 NI VDABITS,X'FF'-DED2305 RESET DRUM FLAG @V407490 00447000 B PROCESS PROCESS MULTIPLE ADDRESSES @V407466 00448000 SPACE 00449000 NOTREAD EQU * @V407466 00450000 CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL DEVICE @V407466 00451000 BNE NOTLINE NO @V407466 00452000 TM RDEVFLAG,RDEVENAB+RDEVPREP IS LINE ACTIVE @V407466 00453000 BNZ ERR16 SEND MSG = VDA143E @V407466 00454000 TM RDEVSTAT,RDEVBUSY IS IT BUSY @V407466 00455000 BO ERR16 YES, SEND MSG VDA143E @V407466 00456000 B GOODOPT CHECK DEVICE STATUS @V407466 00457000 SPACE 00458000 NOTLINE EQU * ... @V407466 00459000 CLI RDEVTYPC,CLASGRAF IS IT A GRAF DEVICE ? @VA08560 00459100 BNE NOTGRAF NO,CHECK NEXT TYPE @VA08560 00459130 CLC RDEVNAME,TST3138 IS IT A 3138 CONSOLE ? @VA08560 00459160 BE GRAFCONS YES IT IS @VA08560 00459190 CLC RDEVNAME,TST3148 IS IT A 3148 CONSOLE ? @VA08560 00459220 BE GRAFCONS YES IT IS @VA08560 00459250 CLC RDEVNAME,TST3158 IS IT A 3158 CONSOLE ? @VA08560 00459280 BE GRAFCONS YES IT IS @VA08560 00459310 CLC RDEVNAME,TST3036 IS IT A 3036 CONSOLE ? @VA08560 00459340 BE GRAFCONS YES IT IS @VA08560 00459370 CLC RDEVNAME,TST3066 IS IT A 3066 CONSOLE ? @VA08560 00459400 BE GRAFCONS YES IT IS @VA08560 00459430 B GOODOPT CHECK DEVICE STATUS @VA08560 00459460 DS 0D @VA08560 00459490 TST3036 DC X'3036' @VA08560 00459520 TST3066 DC X'3066' @VA08560 00459550 TST3138 DC X'3138' @VA08560 00459580 TST3148 DC X'3148' @VA08560 00459610 TST3158 DC X'3158' @VA08560 00459640 SPACE 00459670 GRAFCONS EQU * @VA08560 00459700 OI UDEVSTAT,UDEV3158 INDICATE CONSOLE DEVICE @VA08560 00459730 B GOODOPT CHECK DEVICE STATUS @VA08560 00459760 SPACE 00459790 NOTGRAF EQU * @VA08560 00459820 TM RDEVTYPC,CLASURI+CLASURO UNIT RECORD DEVICE @V407466 00460000 BZ NOTUR NO, CHECK NEXT TYPE @V407466 00461000 TM RDEVFLAG,RDEVDRAN IS THE DEVICE DRAINED @V407466 00462000 BZ ERR08 NO, CANNOT ATTACH @V407466 00463000 ICM R15,15,RDEVSPL CHECK FOR ACTIVE SFBLOK @V407466 00464000 BNZ ERR08 YES, CANNOT ATTACH @V407466 00465000 B GOODOPT ATTACH THE DEVICE @V407466 00466000 SPACE 00467000 NOTUR EQU * ... @V407466 00468000 CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE @V407466 00469000 BNE GOODOPT NO, CHECK DEVICE EXISTENCE @V407466 00470000 OI UDEVMODE,UDEVW YES- SET ACCESS MODE TO R/W @V407466 00471000 CHKDRUM EQU * SPECIAL TEST FOR 2305 ATTACH @V407466 00472000 CLI RDEVTYPE,TYP2305 MULTIPLE-EXPOSURE DEVICE ? @V407466 00473000 BNE GOODOPT NO -- ALL SET @V407466 00474000 TM RDEVADD+1,X'07' ATTACHING BASE EXPOSURE? @V407466 00475000 BNZ VDA021A NOPE, BAD NEWS... @V407490 00476000 TM UDEVADD+1,X'07' ATTACHING AS BASE EXPOSURE? @V407466 00477000 BNZ VDA022B NOPE, ALSO BAD NEWS. @V407466 00478000 OI VDABITS,DED2305 IND. MESSING WITH DEDICATED 2305@V407466 00479000 SPACE 00480000 GOODOPT EQU * FIND THE VOLUME LABEL @V407466 00481000 BAL R7,DEVCHECK FIND THE VOLUME LABEL @V407466 00482000 DROP R8 @V407466 00483000 SPACE 00484000 CHEKLOK EQU * CHK USERID FOR LOCKED OR IN LOGON@V407466 00485000 LA R1,CMDUSER ATTACHEE'S USERID @V407466 00486000 BAL R5,CHKUSER ENSURE STILL THERE @V407466 00487000 LR R10,R1 ENSURE USE OF CURRENT VMBLOK @VA08223 00488000 BAL R5,SWPUSER SWITCH TO ATTACHEE'S VMBLOK @V407466 00489000 TM VDABITS,RANGE+MULTR MORE THAN 1 ADDRESS @V407466 00490000 BM SKIPLOCK YES, ALREADY LOCKED @V407466 00491000 BAL R5,LOKUSER LOCK THE USER'S DEVICE BLOCKS @V407466 00492000 SPACE 00493000 SKIPLOCK LH R1,UDEVADD VIRTUAL DEVICE ADDRESS @V407466 00494000 CALL DMKSCNVU SEE IF ALREADY DEFINED @V407466 00495000 BZ ERR56 ALREADY DEFINED @V407466 00496000 BC 4,NOTDEDCH CHANNEL NOT FOUND @V407466 00497000 BC 2,CHKDEDCH CONTROL UNIT NOT FOUND @V407466 00498000 TM VDABITS,ATTCTCA ATTACHING A CTCA ? @V407466 00499000 BO ERR56 YES - CANNOT DO IT IF C.U. EXISTS@V407466 00500000 TM VDABITS,DED2305 DEDICATED 2305 TYPE ATTACH? @V407466 00501000 BZ CHKDEDCH NOPE, SKIP @V407466 00502000 USING VCUBLOK,R7 ADDRESS THE VCUBLOK @V407466 00503000 N R1,F8 OBTAIN BASE ADDR INDEX @V407466 00504000 SLL R1,1 CONVERT TO VCUDVTBL 2 BYTE INDEX @V407466 00505000 LR R5,R3 SAVE R3 TEMPORARILY @V407466 00506000 LA R3,VCUDVTBL+2*7(R1) TABLE ADDR OF LAST EXPOSURE @V407466 00507000 LA R1,VCUDVTBL(R1) TABLE ADDR OF FIRST EXPOSURE @V407466 00508000 LA R2,COUNT2 TABLE ENTRY LENGTH FOR BXLE @V407490 00509000 PRESCAN CLI 0(R1),X'FF' IS THIS DEVICE DEFINED? @V407466 00510000 BE EXPOS LOOK AT ALL 8 EXPOSURES @V407466 00511000 LA R2,RC60 ERROR 56 @V407466 00512000 LR R3,R5 RESTORE VIRTUAL ADDRESS @VA11421 00512500 B ERROR COMMON ERROR PROCESSING @V407466 00513000 SPACE 2 00514000 EXPOS BXLE R1,R2,PRESCAN NO, LOOK AT ALL 8 EXPOSURES @V407466 00515000 LR R3,R5 RESTORE R3 @V407466 00516000 CHKDEDCH EQU * CANNOT ATTACH TO DED CHANNEL @V407466 00517000 AIF (NOT &DEDCH).NOTDED1 **AIF** @V407466 00518000 USING VCHBLOK,R6 @V407466 00519000 TM VCHSTAT,VCHDED IS CHANNEL DEDICATED @V407466 00520000 BNO NOTDEDCH NO, KEEP GOING @V407466 00521000 LA R2,RC64 CHANNEL DEDICATED ERROR @V407466 00522000 B ERROR GO TO COMMON ERROR PROCESSING @V407466 00523000 SPACE 2 00524000 DROP R6,R7 NO MORE VCHBLOK OR VCUBLOK @V407466 00525000 .NOTDED1 ANOP 00526000 NOTDEDCH EQU * ALL CLEAR - FIRE AT WILL @V407466 00527000 L R1,SAVEWRK9 RDEVBLOK ADDRESS @V407466 00528000 LR R2,R9 ...UDEVBLOK @V407466 00529000 CALL DMKVDSAT PERFORM REAL ATTACH @V407466 00530000 TM VDABITS,RANGE+MULTR MORE THAN ONE ADDRESS @V407466 00531000 BM SKIPFRE YES, SKIP 'FREUSER' @V407466 00532000 BAL R5,FREUSER UNLOCK AND SWAP R11 @V407466 00533000 SKIPFRE BAL R5,SWPCALL SWITCH TO CALLER'S VMBLOK @V407466 00534000 CH R2,=H'124' MAX DEVICES EXCEEDED? @VA13217 00534300 BE ERR153 YES - ISSUE ERROR MSG @VA13217 00534600 LTR R2,R2 DID VDSAT GIVE AN ERROR ? @V407466 00535000 BNZ ERROR JUMP TO ERROR MESSAGE CODE @V407466 00536000 OI VDEVSTAT-VDEVBLOK(R8),VDEVCATT ATTACH VIA CMD @V407466 00537000 TM SAVEWRK5,VIRTPRES WAS 3330V REQUESTED @V60B6B8 00538000 BZ TSTMLT NO, CONTINUE @V60B6B8 00539000 OI VDEVFLG2-VDEVBLOK(R8),VDEVVIRT SET FLAG @VA09758 00540010 L R1,SAVEWRK9 RDEVBLOK ADDR @V60B6B8 00541000 OI RDEVFLAG-RDEVBLOK(R1),RDEV333V @V60B6B8 00542000 TSTMLT EQU * TEST FOR MULT @V60B6B8 00543000 TM VDABITS,MULTR PROCESSING MULTIPLE ADDRESSES @V407466 00544000 BO MULTMSG SPECIAL FORMAT FOR MULTMSG @V407466 00545000 TM VDABITS,RANGE PROCESSING A RANGE @V407466 00546000 BNO RESPATT NO, FORMAT MESSAGE @V407466 00547000 LH R1,UDEVADD SEE IF ANY MORE ADDRESSES IN @V407466 00548000 LR R2,R1 POSSIBLE MORE ADDRS TO PROCESS @V407490 00549000 CALL DMKCVTBH RADDR1 TO PRINT HEX @V407466 00550000 USING ATTMSG,R4 MSG BUFFER ADDRESSABILITY @V407466 00551000 CLC ATTRADD1(3),=CL3' ' RADDR1 IN MESSAGE @V407466 00552000 BE STORADD1 NO, STORE IN RADDR1 FIELD @V407466 00553000 STCM R1,B'0111',ATTRADD2 STORE IN MSG BUFFER @V407466 00554000 CHKEND EQU * @V407490 00555000 TM VDABITS,DED2305 WORKING WITH DRUM ?? @V407490 00556000 BZ CHKEND1 NO , TEST WITH WHAT WE HAVE @V407490 00557000 LA R2,7(,R2) BUMP FOR EIGHT EXPOSURES @V407490 00558000 CHKEND1 CH R2,VDABITS+2 AT THE END OF THE RANGE @V407490 00559000 BNL RESPOND2 YES, ALL DONE, PROCESS MSG @V407490 00560000 LA R2,1(,R2) BUMP FOR NEXT ADDR TO PROCESS @V407490 00561000 B GOODCMD3 GO PROCESS NEXT ADDR @V407490 00562000 SPACE 2 00563000 RESPOND2 CLC ATTRADD1,=CL3' ' RADDR1 = BLANK @V407466 00564000 BCR 8,R6 DO NOT ISSUE ANY MESSAGE @V407466 00565000 CLC ATTRADD2,=CL3' ' RADDR2 BLANK IN MSG @V407466 00566000 BE SINGMSG YES, ISSUE MSG FOR SINGLE ADDR @V407466 00567000 CLC ATTRADD1,ATTRADD2 RADDR1=RADDR2 IN MSG BUF @V407466 00568000 BE SINGMSG YES, ISSUE SINGLE MESSAGE @V407466 00569000 MVC ATTDASH,DASH PLACE '-' IN MSG @V407466 00570000 MVC ATTFLD1(L'ATTACHED),ATTACHED 'ATTACHED' TO MSG @V407466 00571000 TM VDABITS,ATTSYST ATTACH TO 'SYSTEM' @V407466 00572000 BO OPERMSG SKIP SHORT MESSAGE @V407466 00573000 LA R0,ATTFLD1+8-ATTMSG CURRENT LENGTH @V407466 00574000 B SNDUSR1 SWITCH TO TARGET USER'S VMBLOK @V407466 00575000 SPACE 2 00576000 STORADD1 STCM R1,B'0111',ATTRADD1 STORE ADDR1 IN MSG @V407466 00577000 B CHKEND SEE IF END OF RANGE @V407466 00578000 SPACE 00579000 SINGMSG MVC ATTADD1(3),ATTRADD1 PREPARE FOR SINGLE MESSAGE @V407466 00580000 MVI ATTADD1-1,BLANK BLANK CHAR BEFORE ADDR @V407466 00581000 RESPATT EQU * CONTRUCT MSGS FOR 'ATTACH REAL' @V407466 00582000 BAL R5,GETRTYP GET EBCDIC TYPE-NAME OF DEVICE @V407466 00583000 TM VDABITS,RANGE RANGE BEING PROCESSED @V407466 00584000 BO STORTYPE YES, STORE DEVICE TYPE @V407466 00585000 EJECT 00586000 * 00587000 * CONSTRUCT AND TYPE VARIOUS CONSOLE MESSAGES 00588000 * 00589000 MVI ATTMSG,X'40' CLEAR TO BLANKS @V407466 00590000 MVC ATTMSG+1((ATTSIZE*8)-1),ATTMSG @V407466 00591000 STORTYPE MVC ATTFLD1(8),ATTACHED USER/OPERATOR CUE @V407466 00592000 ST R3,ATTDTYP TYPE-NAME OF AFFECTED DEVICE @V407466 00593000 TM VDABITS,ATTSYST ATTACH TO SYSTEM ? @V407466 00594000 BO OPERMSG YES - SKIP USER MESSAGE @V407466 00595000 TM VDABITS,RANGE RANGE BEING PROCESSED @V407466 00596000 BO LENGTH SKIP FOLLOWING CONVERT @V407466 00597000 LH R1,VIRTADD VIRTUAL ADDRESS @V407466 00599000 CALL DMKCVTBH ...INTO PRINTABLE FORM @V407466 00600000 STCM R1,B'0111',ATTADD1 INTO TWO PLACES @V407466 00601000 LENGTH LA R0,ATTFLD1+8-ATTMSG CURRENT LENGTH @V407466 00602000 TM VDABITS,ATTREAD ATTACHED R/O ? @V407466 00603000 BZ SNDUSR1 NO @V407466 00604000 LA R0,ATTUSER+3-ATTMSG EXTRA LENGTH @V407466 00605000 MVC ATTUSER(3),=C'R/O' ADD THIS TO MESSAGE @V407466 00606000 SNDUSR1 EQU * SWITCH TO TARGET USER'S VMBLOK @V407466 00607000 CLR R10,R11 ATTACH TO/FROM HIMSELF ? @V407466 00608000 BE OPERMSG YES - SKIP SHORT MESSAGE @V407466 00609000 SNDUSR2 EQU * SEND INFORMATION MESSAGE TO USER @V407466 00610000 LR R4,R0 SAVE R0 @V4M0193 00611000 BAL R5,SWPUSER SW TO USER'S VMBLOK @VA07393 00612000 LR R0,R4 RESTORE R0 @V4M0193 00613000 L R4,SAVEWRK5 RESTORE R4 @V4M0193 00614000 LA R4,0(,R4) CLEAR HIGH ORDER BYTE @VA13651 00614500 LR R1,R4 MESSAGE START @V407466 00615000 L R2,=A(NOTRESP) INDICATE NON-COMMAND MSG @V60C2B8 00616000 CALL DMKQCNWT,PARM=NORET(,R2) @V60C2B8 00617000 BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00618000 OPERMSG EQU * BUILD MSG FOR ATTACHER/DETACHER @V407466 00619000 MVC ATTFLD1+6(8),BLANKS CLEAN UP AFTER USER MSG @V407466 00620000 MVC ATTFLD2(2),=C'TO' @V407466 00621000 TM VDABITS,RANGE RANGE MESSAGE FORMAT? @V407466 00622000 BNO OPRMSG1 NO, CONTINUE TO FORMAT @V407466 00623000 LA R0,ATTADD2-ATTMSG CURRENT LENGTH @V407466 00624000 B OPRMSG2 CONTINUE TO FORMAT @V407466 00625000 SPACE 2 00626000 OPRMSG1 EQU * @V407466 00627000 MVC ATTADD2(4),ATTADD1 MOVE VADDR FURTHER OUT @V407466 00628000 MVI ATTADD2-1,X'40' FIX UP BLANKS FOR SPACING @V407466 00629000 MVI ATTFLD2+2,X'40' ... @V407466 00630000 BAL R5,CVTRADD CONVERT REAL ADDRESS TO HEX @V407466 00631000 STCM R1,B'0111',ATTADD1 ...INTO OPERATOR MESSAGES @V407466 00632000 LA R0,ATTFLD3-ATTMSG CURRENT LENGTH @V407466 00633000 OPRMSG2 MVC ATTUSER(8),CMDUSER USERID OF ATTACHEE @V407466 00634000 TM VDABITS,ATTSYST ATTACH TO SYSTEM ? @V407466 00635000 BZ SNDOPER NO @V407466 00636000 MVC ATTUSER(8),=CL8'SYSTEM' @V407466 00637000 MVC ATTADD2-2(6),CMDUSER THIS IS THE VOLID @V407466 00638000 B SNDOPMG @V407466 00639000 SPACE 2 00640000 SNDOPER EQU * @V407466 00641000 TM VDABITS,RANGE RANGE MESSAGE? @V407466 00642000 BO SNDOPMG SKIP R/O IN MESSAGE @V407466 00643000 TM VDABITS,ATTREAD ATTACH READ/ONLY ? @V407466 00644000 BZ SNDOPMG NO @V407466 00645000 MVC ATTFLD3(3),=C'R/O' @V407466 00646000 LA R0,ATTOPER-ATTMSG @V407466 00647000 SNDOPMG EQU * TYPE MESSAGE TO ATTACHER @V407466 00648000 LR R1,R4 MESSAGE START @V407466 00649000 CALL DMKQCNWT,PARM=NORET @V407466 00650000 TM VDABITS,NSYSOP ATTACH BY SYSTEM OPERATOR ? @V407466 00651000 BZ VERERR NECESSARY TO ISSUE ERROR MSG @V407466 00652000 TM VDABITS,RANGE RANGE MESSAGE @V407466 00653000 BZ SNDOPMG2 NO, SLIGHTLY DIFFERENT FORMAT @V407466 00654000 MVC ATTADD2(3),=C'BY ' SUBSTITUTE 'BY ' @V407466 00655000 MVI ATTADD2-1,BLANK DELIMITER @V407466 00656000 MVC ATTFLD3(8),VMUSER ATTACHER @V407466 00657000 LA R0,ATTFLD3-ATTMSG+L'ATTOPER MSG LENGTH @V407466 00658000 B SNDOPMG3 CONTINUE BELOW ... @V407466 00659000 SPACE 2 00660000 SNDOPMG2 MVC ATTFLD3(3),=C'BY ' @V407466 00661000 MVC ATTOPER(8),VMUSER ATTACHER @V407466 00662000 LA R0,ATTOPER-ATTMSG+L'ATTOPER MSG LENGTH @V407466 00663000 SNDOPMG3 LR R1,R4 MESSAGE START @V407466 00664000 CALL DMKQCNWT,PARM=NORET+OPERATOR @V407466 00665000 TM VDABITS+1,ATTERR ISSUE ERROR AFTER RESPONSE ? @V407466 00666000 BZ CLEANXT NO, FRET THE BUFFER @V407466 00667000 BLDBUFF MVI ATTMSG,BLANK PROPAGATE BLANKS THROUGH @V407466 00668000 MVC ATTMSG+1((ATTSIZE*8)-1),ATTMSG MESSAGE AREA @V407466 00669000 LH R1,UDEVADD ERROR ADDRESS @V407466 00670000 BR R6 RETURN TO ISSUE ERROR MESSAGE @V407466 00671000 EJECT 00672000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00673000 * WHEN MULTIPLE ADDRESSES ARE BEING PROCESSED, THE MESSAGE * 00674000 * IDENTIFYING THOSE DEVICES SUCCESSFULLY ATTACHED WILL ASSUME TWO * 00675000 * FORMATS. * 00676000 * THE USER WILL RECEIVE THE MESSAGE - R1 R2 ... ATTACHED * 00677000 * THE OPERATOR WILL RECEIVE THE MESSAGE - * 00678000 * R1 R2 ... ATTACHED TO USERID * 00679000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00680000 SPACE 2 00681000 MULTMSG EQU * @V407490 00682000 USING MDSECT,R6 CHANGE ADDRESSABILITY @V407466 00683000 SLR R7,R7 ZERO R7 @V407466 00684000 IC R7,MULTCUU NUMBER OF MULTIPLES IN MSG @V407466 00685000 LA R1,1(,R7) INCREMENT BY 1 @V407466 00686000 STCM R1,B'0001',MULTCUU COUNT OF MULTIPLES IN MSG @V407466 00687000 LA R8,L'MULTADD L'CUU + L'DELIMITER @V407490 00688000 MR R6,R8 R7*R8 INTO R6-R7 @V407466 00689000 AR R7,R3 PLUS ADDR OF WORK AREA @V407466 00690000 LR R6,R7 NEXT SLOT FOR ADDR @V407466 00691000 LH R1,UDEVADD MULT. ADDR FOR MESSAGE @V407466 00692000 CALL DMKCVTBH CONVERT TO HEX FOR MSG @V407466 00693000 STCM R1,B'0111',MULTADD STORE IN MESSAGE @V407466 00694000 MVI DELIM1,BLANK SEPARATE HDR FROM CCU @V407466 00695000 DROP R6 @V407466 00696000 USING MDSECT,R4 WORK AREA ADDRESSABILITY @V407466 00697000 MULTCONT LA R4,4(,R4) TO SEE IF MORE MULT. ADDRS @V407466 00698000 L R2,MULTADD TO BE PROCESSED @V407466 00699000 C R2,FFS END OF MULTIPLES? @V407466 00700000 BNE GOODCMD3 THERE ARE MORE, KEEP GOING @V407466 00701000 DROP R4 @V407466 00702000 USING MDSECT,R6 @V407466 00703000 SLR R7,R7 CLEAR R7 @V407466 00704000 IC R7,MULTCUU NO. MULTIPLES @V407466 00705000 LTR R7,R7 ANY MULTIPLES? @V407466 00706000 BZ CLEANXT NO MULTS, RELEASE STG AND EXIT @V407466 00707000 LA R8,L'MULTADD LENGTH OF MULTIPLE @V407490 00708000 MR R6,R8 R7*R8 INTO R6-R7 @V407466 00709000 AR R7,R3 ADD BEG. MSG BUFFER ADDR @V407466 00710000 LR R6,R7 AND PUT INTO R6 @V407466 00711000 MVC MULTADD(L'MULTADD*2),=C'ATTACHED' SUBST. CONST @V407466 00712000 MVI DELIM2,BLANK SEPARATE CCU FROM 'ATTACHED' @V407466 00713000 MVC CONTO,=C'TO ' CONSTANT 'TO' @V407466 00714000 MVC USERID,CMDUSER USERID @V407466 00715000 TM VDABITS,ATTSYST ATTACH TO 'SYSTEM' @V407466 00716000 BZ NOTSYS NO, USERID OK @V407466 00717000 MVC USERID,=CL8'SYSTEM' SUBSTITUTE 'SYSTEM' @V407466 00718000 NOTSYS MVI DELIM3,BLANK DELIMITER @V407466 00719000 MVC CONBY,=CL3'BY ' CONSTANT 'BY' @V407466 00720000 MVC ATTACHER,VMUSER ATTACHER USERID @V407466 00721000 SLR R7,R7 CLEAR R7 AGAIN @V407466 00722000 IC R7,MULTCUU NO. OF MULTIPLES @V407466 00723000 CLR R10,R11 ATTACH TO HIMSELF? @V407466 00724000 BE SKIPMSG YES @V407466 00725000 BAL R5,SWPUSER SEND INFORMATION MSG TO USER @V407466 00726000 CH R7,=H'10' IF EXCEEDS 10 - MULTIPLE LINES @V407466 00727000 BH MANY1 YES, ISSUE MULTIPLE LINES @V407466 00728000 MR R6,R8 R7 * R8 INTO R6-R7 @V407466 00729000 LA R0,USERSIZE(,R7) + L'ATTACHED @V407466 00730000 L R1,SAVEWRK5 ADDR OF MSG BUFFER @V407466 00731000 LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00731500 CALL DMKQCNWT,PARM=NORET @V407466 00732000 BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00733000 L R1,SAVEWRK5 POINT TO BEGINNING OF MSG AREA @V4M0193 00734000 LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00734500 LA R0,OPERSIZE(,R7) + L'TO + L'USERID @V407466 00735000 MULTMSG5 CALL DMKQCNWT,PARM=NORET @V407466 00736000 TM VDABITS,NSYSOP ATTACH BY SYSTEM OPERATOR @V407466 00737000 BZ CLEANXT YES, RELEASE MULTIPLE WORK AREA @V407466 00738000 LA R2,OPERATOR NO, SEND MSG TO SYSTEM OPERATOR @V407466 00739000 LA R0,ASIZE(,R7) + L'BY + L'USERID @V407466 00740000 LASTLINE CALL DMKQCNWT,PARM=NORET+0(,R2) @V407466 00741000 B CLEANXT FREE USER'S BLOCKS AND SWITCH R11@V407466 00742000 SPACE 2 00743000 MANY1 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CUU @V407466 00744000 LA R0,USERSIZE(,R7) ... @V407466 00745000 CALL DMKQCNWT,PARM=NORET LAST LINE @V407466 00746000 BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00747000 L R1,SAVEWRK5 POINT TO BEGIN OF MSG AREA @V407466 00748000 LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00748500 IC R7,MULTCUU NUMBER OF CUU IN MSG @V407466 00749000 MANY2 BAL R5,MULTLINE REPEATED LINES FOR NEXT MSG @V407466 00750000 LA R0,OPERSIZE(,R7) +L'TO + L'USERID @V407466 00751000 CALL DMKQCNWT,PARM=NORET LAST LINE @V407466 00752000 TM VDABITS,NSYSOP ATTACH BY SYSTEM OPERATOR? @V407466 00753000 BZ CLEANXT YES, RELEASE STORAGE @V407466 00754000 LA R2,OPERATOR SEND MSG TO SYSTEM OPERATOR @V407466 00755000 L R1,SAVEWRK5 POINT TO BEG OF MSG AREA @V407466 00756000 LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00756500 IC R7,MULTCUU NUMBER OF CUU'S IN MSG @V407466 00757000 BAL R5,MULTLINE ISSUE REPEATED LINES @V407466 00758000 LA R0,ASIZE(,R7) + L'TO + L'USERID @V407466 00759000 B LASTLINE VERY, VERY LAST LINE @V407466 00760000 SPACE 2 00761000 SKIPMSG CH R7,=H'10' EXCEEDS 10 - MULTIPLE LINES @V407466 00762000 BH MANY2 YES @V407466 00763000 MR R6,R8 R7*R8 INTO R6-R7 @V407466 00764000 LA R0,OPERSIZE(,R7) PLUS FIXED LENGTH @V407466 00765000 L R1,SAVEWRK5 BEGINNING OF MSG AREA @V407466 00766000 LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00766500 B MULTMSG5 ISSUE SINGLE LINE MSG @V407466 00767000 SPACE 2 00768000 MULTLINE LA R0,MAXCUU MAX 10 CUU PER LINE @V407490 00769000 L R1,SAVEWRK5 BEGINNING OF MSG AREA @V407466 00770000 LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00770500 NEXTLINE CALL DMKQCNWT,PARM=NORET @V407466 00771000 LA R1,MAXCUU(,R1) NEXT LINE POINTER @V407490 00772000 SH R7,=H'10' SUBTRACT 10 @V407466 00773000 CH R7,=H'10' STILL MORE THAN 10 LEFT @V407466 00774000 BH NEXTLINE YES, ISSUE ANOTHER LINE @V407466 00775000 MR R6,R8 R7*R8 INTO R6-R7 @V407466 00776000 BR R5 PUT OUT LAST LINE @V407466 00777000 SPACE 2 00778000 VERERR TM VDABITS+1,ATTERR WAS ERROR MESSAGE ISSUED? @V407466 00779000 BO BLDBUFF YES, CLEAR MSG BUFFER @V407466 00780000 SPACE 2 00781000 CLEANXT EQU * @V407466 00782000 L R1,SAVEWRK5 MESSAGE BUFFER TO FRET @V407466 00783000 LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00783500 LA R0,MULTSIZE+MSGSIZE+VOLSIZE WORKAREA SIZE @V60B6B8 00784000 CALL DMKFRET @V407466 00785000 DROP R6 @V407466 00786000 BAL R5,SWPUSER SWITCH TO ATTACHEE'S VMBLOK @V407466 00787000 UNLOCK BAL R5,FREUSER UNLOCK USER'S BLOCKS @V407466 00788000 SPACE 3 00789000 VDAATEXT EQU * @V407466 00790000 EXIT RETURN TO CALLER @V407466 00791000 EJECT 00792000 ATTMSG DSECT NORMAL RESPONSES FOR 'ATTACH/DETACH' @V407466 00793000 ATTDTYP DC C'DEVX ' EBCDIC DEVICE TYPE-NAME @V407466 00794000 ATTADD1 DC C'CCU ' ADDRESS 1 @V407466 00795000 ATTFLD1 DC C'ATTACH ' FIRST VARIABLE FIELD @V407466 00796000 ATTFLD2 DC C'TO ' ... @V407466 00797000 ATTUSER DC C'$USERID$ ' ATTACHEE USERID @V407466 00798000 ATTADD2 DC C'CCU ' ADDRESS 2 @V407466 00799000 ATTFLD3 DC C'BY ' @V407466 00800000 ATTOPER DC C'$USERID$' USERID OF ATTACHER (NOT SYSOP) @V407466 00801000 SPACE 00802000 ATTSIZE EQU (*-ATTMSG+7)/8 BUFFER SIZE IN DBL-WDS @V407466 00803000 SPACE 00804000 * RANGE MESSAGE FORMAT FOLLOWS 00805000 ORG ATTDTYP @V407466 00806000 ATTRADD1 DC C'CUU' RADDR1 @V407466 00807000 ATTDASH DC C'-' - @V407466 00808000 ATTRADD2 DC C'CUU' RADDR2 @V407466 00809000 SPACE 2 00810000 SPACE 00811000 DMKVDA CSECT , RE-ENTER PREVIOUS CSECT @V407466 00812000 ATTACHED DC CL8'ATTACHED' CONSTANT FOR MESSAGE @V407466 00813000 SPACE 2 00814000 *---------------------------------------------------------------------* 00815000 * CVTRADD - CONVERT DEVICE ADDRESS TO HEXADECIMAL * 00816000 * ZAPVOLD - REMOVE VOLUME SERIAL FROM REAL DEVICE BLOCK * 00817000 *---------------------------------------------------------------------* 00818000 SPACE 2 00819000 CVTRADD EQU * CONVERT REAL DEVICE ADDRESS @V407466 00820000 L R1,DEVADDR @V407466 00821000 TM VDABITS,RANGE+MULTR RANGE/MULTIPLES BEING PROC @V407466 00822000 BZ CONVERT NO, USE ADDR IN DEVADDR FIELD @V407466 00823000 LH R1,UDEVADD DEVICE ADDRESS @V407466 00824000 CONVERT CALL DMKCVTBH @V407466 00825000 BR R5 @V407466 00826000 EJECT 00835000 ATTVOLD EQU * ATTACH TO SYSTEM AS VOLID @V407466 00836000 USING RDEVBLOK,R8 @V407466 00837000 LA R7,MSGAREA(R4) USED IN CASE ERROR MSG @V407466 00838000 CLI RDEVTYPC,CLASDASD IS IT A DASD DEVICE ? @V407466 00839000 BNE INVTYPE NO - CANNOT ATTACH TO SYSTEM @V407466 00840000 TM PSAMSS,MSSPRES MSS PRESENT IN THIS SYSTEM? @VA09319 00840010 * VMI2040 00840020 BZ ATTVOLD2 NO,DON'T TRY TO CAL DMKSSS @VA09319 00840030 * VMI2040 00840040 TM RDEVFTR,VIRTUAL+SYSVIRT IS THIS A 3330V @V60B6B8 00841000 BNZ SYS3330V YES, CALL DMKSSS @V60B6B8 00842000 SPACE 2 00843000 * CANNOT ATTACH 3330V DEVICE ADDRESSES TO 'SYSTEM' 00844000 SPACE 00845000 * RDEVSYS RDEVOWN RDEVMOUT MEANING 00846000 * FLAG 0 0 1 DEV FREE; VOLUME MOUNTED, 00847000 * NOT ATTACHED 00848000 * 0 0 0 DEVICE ATTACHED TO SYSTEM 00849000 * EXCEPT IF THE VOLID IS 00850000 * BLANK 00851000 * 1 0 0 DEVICE ATTACHED TO SYSTEM 00852000 * WITH OR WITHOUT LINKS HRC039DK 00853100 * 1 1 0 DEV ATTACHED TO SYSTEM & 00854000 * IS A SYSTEM OWNED VOLUME 00855000 SPACE 00856000 .SYSTEM ANOP 00857000 ATTVOLD2 TM RDEVSTAT,RDEVDISA IS THE DEVICE OFFLINE ? @V407466 00858000 BO ERR12 YES -- SEND OFFLINE MESSAGE @VA13651 00859000 TM RDEVSTAT,RDEVDED DEDICATED TO A USER ? @V407466 00860000 BO ERR24 YES -- SEND DEDICATED MESSAGE @VA13651 00861000 TM RDEVFLAG,RDEVOWN CP-OWNED VOLUME ? @V407466 00862000 BO DEVOWND YES -- @V407466 00863000 CLC RDEVLNKS,=H'0' Does dasd have existing links? HRC039DK 00864100 BNE DEVSHRD Minidisks in use on dasd HRC039DK 00864200 TM RDEVFLAG,RDEVSYS Dasd already attached to sys.? HRC039DK 00864300 BZ ALLOK No. Can be attached now. HRC039DK 00864400 TM RDEVFLAG,RDEVMOUT VOL ALREADY ATTACHED TO SYS? @V407466 00866000 BO ALLOK NO- DEV NOT MOUNTED AFTER IPL @V407466 00867000 CLC RDEVSER(6),BLANKS VOLID BLANK (NOT RDY AT IPL) @V407466 00868000 BE ALLOK @V407466 00869000 MVC CMDUSER(6),RDEVSER SEND MSG WITH RDEVSER @V407466 00870000 B MSG125E SEND THE MESSAGE @V407466 00871000 SPACE 2 00872000 SYS3330V EQU * ATTACH A VUA TO THE SYSTEM @V60B6B8 00873000 LA R0,CMDUSER ADDR OF VOLID @V60B6B8 00874000 CALL DMKSSSAS VERIFY PARMS, MOUNT VOID IF @V60B6B8 00875000 * NECESSARY 00876000 LTR R0,R0 WAS THERE AN ERROR @V60B6B8 00877000 BZ ALLOK NO, VOLUME NOW AVAILABLE @V60B6B8 00878000 LA R15,RC4 EXPECTED RETURN CODE @V60B6B8 00879000 CR R0,R15 AGAINST ACTUAL @V60B6B8 00880000 BE SAVEINFO OK, WAIT FOR MSS MOUNT @V60B6B8 00881000 B WRNGVOL @V60B6B8 00882000 * 00883000 * THE FOLLOWING ENTRY POINT IS REACHED AFTER AN 00884000 * MSS VOLUME MOUNT TO SATISFY AN ATTACH 00885000 * REQUEST. SCHEDULE A PENDING I/O REQUEST 00886000 * IF THERE IS ONE, THEN FREE UP THE MSSCOM 00887000 * BLOCK WHICH REPRESENTED THE MOUNT. 00888000 * 00889000 DMKVDAS2 RELOC @V60B6B8 00890000 USING OSVSCOM,R3 R3 SET BY DMKSSS @V60B6B8 00891000 MVC SAVEWRK1,SAVEWRK1-SAVEAREA(R1) RESTORE FLAGS @V60B6B8 00892000 * TO CURRENT SAVEAREA 00893000 MVC SAVEWRK2(WORKAREA),SAVEWRK2-SAVEAREA(R1) @V60B6B8 00894000 * RESTORE OTHER WORKING INFO 00895000 LA R0,SAVESIZE SIZE OF SAVE AREA @V60B6B8 00896000 CALL DMKFRET GIVE IT BACK @V60B6B8 00897000 L R1,MSSTASK3 ADDR OF CPEXBLOK, IF IT EXISTS @V60B6B8 00898000 LTR R1,R1 IS THERE PENDING I/O @V60B6B8 00899000 BZ FRECOM1 NO @V60B6B8 00900000 CALL DMKSTKCP STACK THE CPEXBLOK FOR I/O @V60B6B8 00901000 FRECOM1 EQU * @V60B6B8 00902000 LA R0,MSSSIZE NO OF D-WORDS IN MSSCOM @V60B6B8 00903000 LR R1,R3 ADDR OF MSSCOM @V60B6B8 00904000 CALL DMKFRET RETURN STORAGE TO SYSTEM @V60B6B8 00905000 ALLOK EQU * @V407466 00906000 LA R1,CMDUSER THIS IS THE VOLID @V407466 00907000 LA R0,VOLIDSIZ ... LENGTH @V407490 00908000 TM RDEVFTR,VIRTUAL+SYSVIRT IS IT A 3330V ? @VA09301 00908100 BZ SKPON NO, DON'T TURN THE FLAG ON @VA09301 00908200 OI RDEVFLAG,RDEVMOUT TELL SCNVS THIS VOL OK @V60B6B8 00909000 SKPON CALL DMKSCNVS SEARCH FOR DUPLICATE VOLID @VA09301 00910000 BZ DUPVOL DUPLICATE VOLID - MSG DMKVDA125E @V407466 00911000 TM RDEVFTR,VIRTUAL+SYSVIRT IS IT A 3330V ? @VA09301 00911100 BZ SKPOFF NO,DON'T TURN THE FLAG OFF @VA09301 00911200 NI RDEVFLAG,X'FF'-RDEVMOUT @V60B6B8 00912000 SKPOFF BAL R7,DEVCHECK VERIFY DEVICE EXISTENCE @VA09301 00913100 LTR R2,R2 ERROR ENCOUNTERED ON LABEL READ? @V407466 00914000 BNZ ERROR YES, ISSUE MESSAGE @V407466 00915000 LA R7,MSGAREA(R4) RESTORE R7 FOR MSG BUFFER @V407466 00916000 CLC CMDUSER(6),RDEVSER DO THE LABELS MATCH ? @V407466 00917000 BNE WRNGVOL NO @V407466 00918000 SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 00919000 TM VDABITS+1,CPOWND ALLOCATION DATA PRESENT ? @V407466 00920000 BZ RESMOUT NO - ALL FINISHED EXCEPT MSGS @V407466 00921000 SPACE 1 00922000 * SEARCH OWNED-VOLUME LIST TO SEE IF THE ALLOCATION DATA 00923000 * IS PERTINENT TO THE RUNNING SYSTEM 00924000 SPACE 00925000 L R4,=A(DMKSYSOW) OWNED LIST START @V407466 00926000 USING OWNDLIST,R4 @V407466 00927000 L R3,=A(DMKSYSOC) COUNT OF VOLUMES @V407466 00928000 L R3,0(,R3) ... @V407466 00929000 VOLSRCH EQU * SEE IF ACTUALLY OWNED @V407466 00930000 CLC OWNDVSER(6),RDEVSER @V407466 00931000 BE VOLCHAN FOUND IT @V407466 00932000 LA R4,8(,R4) NEXT ENTRY IN LIST @V407466 00933000 BCT R3,VOLSRCH LOOP THRU OWNED LIST @V407466 00934000 RESMOUT NI RDEVFLAG,X'FF'-RDEVMOUT INDICATE ATTACHED TO SYS@V407466 00935000 OI RDEVFLAG,RDEVSYS Device now attached to system HRC039DK 00935100 L R4,SAVEWRK5 MSGAREA ADDRESS @V407466 00936000 LA R4,0(,R4) CLEAR HIGH ORDER BYTE @VA13651 00936500 B RESPATT NOT PERTINENT - GIVE RESPONSES @V407466 00937000 SPACE 00938000 VOLCHAN EQU * VOLUME IS CP-OWNED @V407466 00939000 OI VDABITS+1,ALLOCN READ ALLOCATION RECORD @V407466 00940000 BAL R7,DEVCHECK VERIFY DEVICE EXISTENCE @V407466 00941000 LTR R2,R2 ERROR READING ALLOC. DATA @V407466 00942000 BNZ ERROR YES, ISSUE ERROR MESSAGE @V407466 00943000 SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 00944000 OI RDEVFLAG,RDEVOWN+RDEVSYS @V407466 00945000 NI RDEVFLAG,X'FF'-RDEVMOUT INDICATE VOLUME ATTACHED@V407466 00946000 LH R15,OWNDPREF SEE IF PAGING VOLUME @V407466 00947000 LTR R15,R15 THIS BETTER BE MINUS... @V407466 00948000 BM VDA2A OR ELSE SOMETHING IS REALLY WRONG@V407466 00949000 SPACE 00950000 ABEND 2 ...LIKE I SAID.. @V407466 00951000 SPACE 00952000 VDA2A EQU * @V407466 00953000 LPR R15,R15 MAKE -1, -2 INTO +1, +2 @V407466 00954000 SLL R15,2 ...INTO +4, +8 @V407466 00955000 B *(R15) SKIP FLAG SET IF NOT PREFERRED @V407466 00956000 SPACE 2 00957000 OI RDEVFLAG,RDEVPREF @V407466 00958000 SPACE 00959000 * SET UP TO CHAIN IN ALLOCATION TABLES 00960000 * R10 - ADDRESS OF IOBLOK 00961000 * R4 OWNDLIST POINTER 00962000 * R8 - RDEVBLOK POINTER 00963000 * R3 - INDEX 00964000 SPACE 00965000 LR R3,R15 MOVE INDEX TO R3 @V407466 00966000 CALL DMKVDCAL @V407466 00967000 L R4,SAVEWRK5 RESTORE MSGAREA ADDRESS @V407466 00968000 LA R4,0(,R4) CLEAR HIGH ORDER BYTE @VA13651 00968500 B RESPATT ISSUE RESPONSE MESSAGES @V407466 00969000 EJECT 00970000 EJECT 00971000 *********************************************************************** 00972000 * CALL TO DMKVDEDC 00973000 * SUBROUTINE TO VERIFY DEVICE EXISTENCE. 00974000 * 00975000 * A CALL IS MADE TO DMKVDEDC TO VERIFY DEVICE 00976000 * EXISTENCE. SETS UP AN I/O TASK (TIO) TO SEE IF 00977000 * THE DEVICE EXISTS. IF THE DEVICE DOES NOT EXIST, 00978000 * IT IS MARKED OFFLINE AND A 'DOES NOT EXIST' MESSAGE 00979000 SPACE 2 00980000 * IS ISSUED FROM DMKVDA. 00981000 * 00982000 * FOR DASD, DMKVDEDC WILL SET UP AND EXECUTE AN 00983000 * I/O TASK TO READ THE DASD VOLUME LABEL OF THE DEVICE 00984000 * BEING ATTACHED. IF SUCCESSFUL, THE VOLUME SERIAL 00985000 * IS INSERTED INTO THE 'RDEVSER' FIELD OF THE REAL 00986000 * DEVICE BLOCK. AN ERROR RETURN CODE IS PASSED BACK TO 00987000 * DMKVDA IF FAILURE ENCOUNTERED ON THE READ. A FLAG 00988000 * IS SET IF IT IS A CP/370 OWNED VOLUME. 00989000 * IF DMKVDEDC WAS CALLED WITH PARM = 1, INDICATING 00990000 * ALLOCATION DATA IS PRESENT, THE ALLOCATION 00991000 * RECORD IS READ INTO FREE STORAGE. 00992000 *********************************************************************** 00993000 SPACE 00994000 DEVCHECK EQU * CHECK DEVICE EXISTENCE ROUT. @V407466 00995000 L R6,DEVADDR GET VADDR IN CUU FORM @V407466 00997000 TM VDABITS,RANGE+MULTR RANGE OR MULTIPLES? @V407466 00998000 BZ TSTALLOC SEE IF READING ALLOC. DATA @V407466 00999000 LH R6,UDEVADD MUST GET VADDR FROM UDEVBLOK @V407466 01000000 TSTALLOC TM VDABITS+1,ALLOCN READING ALLOC. REC. THIS TIME? 01001000 BZ VDE NO, REGL LABEL READ @V407466 01002000 SPACE 01003000 * R8 POINTS TO RDEVBLOK @V407466 01004000 * R6 CONTAINS RADDR OF DEVICE BEING ATTACHED @V407466 01005000 * R10 AND R11 CONTAIN VMBLOK ADDRESSES @V407466 01006000 SPACE 01007000 CALL DMKVDEDC,PARM=1 IND. ALLOC READ @V407466 01008000 B CHKRC NOW CHECK FOR ERRORS @V407466 01009000 SPACE 01010000 VDE CALL DMKVDEDC GO VERIFY DEVICE EXISTENCE @V407466 01011000 SPACE 01012000 * UPON RETURN FROM DMKVDEDC, R2 CONTAINS ERROR CODE OR @V407466 01013000 * ZERO INDICATING SUCCESSFUL COMPLETION. @V407466 01014000 SPACE 01015000 CHKRC CH R2,=H'68' DEVICE NOT READY? @V407466 01016000 BE ERROR ... @VA07393 01017000 CH R2,=H'80' DEVICE UNKNOWN @V407466 01018000 BE ERROR YES, ISSUE ERROR MSG @V407466 01019000 CH R2,=H'120' BUSY CONDITION @VA11952 01019100 BE ERROR @VA11952 01019150 * THERE MAY HAVE BEEN A BAD LABEL READ BUT THIS @V407466 01020000 * ERROR MESSAGE IS ISSUED ONLY WHEN ATTACHING TO THE SYSTEM @V407466 01021000 BR R7 CONTINUE TO PROCESS @V407466 01022000 SPACE 2 01023000 * BITS DEFINED IN VDABITS+1 : 01024000 * 01025000 CPOWND EQU X'20' ALLOCATION DATA PRESENT ON VOLUME@V407466 01026000 ALLOCN EQU X'10' READING ALLOCATION DATA @V407466 01027000 NOTREDY EQU X'08' 'NOTREADY' @V407466 01028000 ATTERR EQU X'02' ERROR MSG TO FOLLOW RESPONSE @V407466 01029000 SPACE 01030000 BLANK EQU X'40' BLANK @V407466 01031000 SPACE 01032000 DASH DC C'-' RANGE DELIMITER @V407466 01033000 SPACE 01034000 SPACE 01035000 EJECT 01036000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01037000 * DEDCHAN - ATTACH DEDICATED CHANNEL(S); CONTROL TRANSFERS * 01038000 * TO THE MODULE DMKVCHDC FOR TESTING THE AVAILABILITY * 01039000 * OF THE CHANNEL AND DEVICES, AND FOR THE ACTUAL ATTACH * 01040000 * FUNCTION. FLAGS AND COMMAND INE DATA ARE PASSED TO * 01041000 * DMKVCHDC IN REGISTERS 1-4. * 01042000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01043000 DS 0F 01044000 SPACE 2 01045000 DEDCHAN EQU * PROCESSING FOR DEDICATED CHANNELS@V407466 01046000 L R1,VDABITS FLAGS USED WITHIN DMKVDA @V407466 01047000 L R2,DEVADDR BYTE 3 HAS CHANNEL NUMBER @V407466 01048000 LM R3,R4,CMDUSER USERID WANTING THE CHANNEL @V407466 01049000 SPACE 01050000 CALL DMKVCHDC @V407466 01051000 BAL R5,SWPCALL SWITCH TO CALLER'S VMBLOK @V407466 01052000 ST R2,SAVER2 SAVE RETURN CODE @V407490 01053000 LA R0,MULTSIZE+MSGSIZE+VOLSIZE WORKAREA SIZE @V60B6B8 01054000 L R1,SAVEWRK5 ADDR OF WORK AREA @V407466 01055000 CALL DMKFRET RELEASE STORAGE @V407466 01056000 B VDAATEXT EXIT @V407466 01057000 EJECT 01058000 *---------------------------------------------------------------------* 01059000 * FREUSER AND SWPUSER - UNLOCK USERID AND SWAP VMBLOKS * 01060000 * LOKUSER AND SWPCALL - LOCK A USERID AND SWAP VMBLOKS * 01061000 *---------------------------------------------------------------------* 01062000 SPACE 2 01063000 FREUSER EQU * UNLOCK ATTACHEE'S USERID @V407466 01064000 LA R1,VMUSER @V407466 01065000 CALL DMKLOCKD DIRECTORY UNLOCK SUBROUTINE @V407466 01066000 SWPCALL EQU * GO BACK TO CALLER'S VMBLOK @V407466 01067000 L R1,SAVER11 GET CALLER'S VMBLOK ADDRESS @V407508 01068000 SWTCHVM SWITCH TO CALLER'S VMBLOK @V4M0193 01069000 BR R5 ...RETURN TO CALLER @V407466 01070000 SPACE 2 01071000 LOKUSER EQU * THROW A LOCK ON DEVICE BLOCKS @V407466 01072000 LA R1,VMUSER POINT TO THE USERID @V407466 01073000 CALL DMKLOCKQ ...AND LOCK IT @V407466 01074000 LA R0,L'VMUSER LENGTH OF USERID @VA08223 01075000 CALL DMKSCNAU USER STILL LOGGED ON? @V407466 01076000 BNZ NOTLOGD NO - ERROR @V407466 01077000 BR R5 @V407466 01078000 SPACE 2 01079000 SWPUSER EQU * SWAP TO TARGET USER'S VMBLOK @V407466 01080000 LR R1,R10 GET USER'S VMBLOK ADDRESS @V407508 01081000 SWTCHVM SWITCH TO SPECIFIED USER @V4M0193 01082000 BR R5 @V407466 01083000 EJECT 01084000 CHKUSER EQU * ... @V407466 01085000 LA R0,8 LENGTH OF USERID @V407466 01086000 CALL DMKSCNAU USER STILL LOGGED ON @V407466 01087000 BNZ NOTLOGD NOT LOGGED ON - ERROR @V407466 01088000 BR R5 RETURN TO MAINLINE CODE @V407466 01089000 SPACE 3 01090000 *---------------------------------------------------------------------* 01091000 * GETRDEV, GETRTYP - GET REAL DEVICE BLOCK + TYPE NAME * 01092000 *---------------------------------------------------------------------* 01093000 SPACE 2 01094000 GETRDEV EQU * LOCATE REAL DEVICE BLOCK @V407466 01095000 TM VDABITS,RANGE+MULTR RANGE OR MULTIPLES @V407466 01096000 BM GETRDEV2 YES, R1 ALREADY SET UP @V407466 01097000 L R1,DEVADDR REAL DEVICE ADDRESS @V407466 01098000 GETRDEV2 CALL DMKSCNRU ...FIND THE RDEVBLOK @V407466 01099000 BNZ UNKNOWN REAL DEVICE DOES NOT EXIST @V407466 01100000 ST R8,SAVEWRK9 SAVE THE RDEVBLOK POINTER @V407466 01101000 BR R5 @V407466 01102000 SPACE 01103000 GETRTYP EQU * GET EBCDIC TYPE-NAME OF REAL DEV @V407466 01104000 L R8,SAVEWRK9 RDEVBLOK ADDRESS @V407466 01105000 CALL DMKSCNRN ...GET IT'S TYPE-NAME @V407466 01106000 LR R3,R1 ...INTO R4 @V407466 01107000 BR R5 @V407466 01108000 EJECT 01109000 ERR08 LA R2,RC8 DEVICE NOT DRAINED @V407466 01110000 B ERROR ISSUE ERROR MSG @V407466 01111000 SPACE 01112000 ERR12 LA R2,RC12 DEVICE OFFLINE @V407466 01113000 CLI RDEVTYPC,CLASDASD DASD DEVICE ?? @V407490 01114000 BNE ERROR NO @V407490 01115000 CLI RDEVTYPE,TYP2305 HOW ABOUT A DRUM ?? @V407490 01116000 BNE ERROR NOPE @V407490 01117000 TM RDEVADD+1,X'07' IS THIS A BASE ADDRESS ?? @V407490 01118000 BNZ VDA021A INVALID BASE ADDRESS,GIVE VDA021 @V407490 01119000 B ERROR COMMON ERROR PROCESSING @V407490 01120000 SPACE 01121000 ERR16 LA R2,RC16 DEVICE SHARED @V407466 01122000 B ERROR ISSUE ERROR MSG @V407466 01123000 SPACE 01123200 DEVOWND EQU * DEVICE ALREADY CP OWNED @VA13651 01123400 LA R2,RC20 SET UP ERROR INDEX @VA13651 01123600 B ERROR ISSUE ERROR MESSAGE @VA13651 01123800 SPACE 2 01124000 ERR24 LA R2,RC24 DEVICE ALREADY DEDICATED @V407466 01125000 B ERROR COMMON ERROR PROCESSING @V407466 01126000 SPACE 01126200 NOTLOGD EQU * USERID NOT LOGGED ON @VA13651 01126400 LA R2,RC44 SET UP ERROR INDEX @VA13651 01126600 B ERROR ISSUE ERROR MESSAGE @VA13651 01126800 SPACE 2 01127000 ERR56 LA R2,RC56 DEVICE ALREADY DEFINED @V407466 01128000 B ERROR ISSUE ERROR MESSAGE @VA13651 01128020 SPACE 1 01128040 UNKNOWN EQU * DEV ADDR DOES NOT EXIST @VA13651 01128060 LA R2,RC80 SET UP ERROR INDEX @VA13651 01128080 B ERROR ISSUE ERROR MESSAGE @VA13651 01128100 SPACE 1 01128120 DEVSHRD EQU * DASD RADDR IN USE BY NNN USERS @VA13651 01128140 LA R2,RC84 SET UP ERROR INDEX @VA13651 01128160 B ERROR ISSUE ERROR MESSAGE @VA13651 01128180 SPACE 1 01128200 INVOPTS2 EQU * INVALID OPTION @VA13651 01128220 LA R2,RC88 SET UP ERROR INDEX @VA13651 01128240 B ERROR ISSUE ERROR MESSAGE @VA13651 01128260 SPACE 1 01128280 INVTYPE EQU * INVALID DEVICE TYPE @VA13651 01128300 LA R2,RC92 SET UP ERROR INDEX @VA13651 01128320 B ERROR ISSUE ERROR MESSAGE @VA13651 01128340 SPACE 1 01128360 VDA021A EQU * RADDR MISSING OR INVALID @VA13651 01128380 LA R2,RC96 SET UP ERROR INDEX @VA13651 01128400 B ERROR ISSUE ERROR MESSAGE @VA13651 01128420 SPACE 1 01128440 VDA022B EQU * VADDR MISSING OR INVALID @VA13651 01128460 LA R2,RC100 SET UP ERROR INDEX @VA13651 01128480 B ERROR ISSUE ERROR MESSAGE @VA13651 01128500 SPACE 1 01128520 DUPVOL EQU * VOLID ALREADY ATTACHED @VA13651 01128540 LR R8,R1 PICK UP ADDR OF DEV CONT VOLID @VA13651 01128560 MSG125E EQU * @VA13651 01128580 LA R2,RC104 SET UP ERROR INDEX @VA13651 01128600 B ERROR ISSUE ERROR MESSAGE @VA13651 01128620 SPACE 1 01128640 WRNGVOL EQU * @VA13651 01128660 LA R2,RC108 SET UP ERROR INDEX @VA13651 01128680 B ERROR ISSUE ERROR MESSAGE @VA13651 01128700 SPACE 1 01128720 MSG076 EQU * INVALID PARAMETERS @VA13651 01128740 LA R2,RC112 SET UP ERROR INDEX @VA13651 01128760 B ERROR ISSUE ERROR MESSAGE @VA13217 01128790 SPACE 1 01128820 ERR153 EQU * MAXIMUM DEVICES EXCEEDED @VA13217 01128850 LA R2,RC124 SET UP ERROR INDEX @VA13217 01128880 B ERROR ISSUE ERROR MESSAGE @VA13217 01128910 SPACE 1 01128940 ERROR EQU * COMMON ERROR MESSAGE ROUTINE @V407466 01129000 ST R2,SAVEWRK7 SAVE ERROR INDEX @VA13651 01130000 B ERRTABL-8(R2) BRANCH TO ERROR ROUTINE @V407466 01133000 SPACE 2 01134000 ERRTABL EQU * JUMP TABLE FOR R2 ERROR INDEX @VA13651 01135000 B CHKRANGE INDEX = 8 @VA13651 01138000 B CHKRANGE INDEX = 12 @VA13651 01141000 B CHKRANGE INDEX = 16 @VA13651 01144000 B CHKRANGE INDEX = 20 @VA13651 01147000 B CHKRANGE INDEX = 24 @VA13651 01150000 B SENDEMSG INDEX = 28 @VA13651 01153000 B SENDEMSG INDEX = 32 @VA13651 01156000 B SENDEMSG INDEX = 36 @VA13651 01159000 B SENDEMSG INDEX = 40 @VA13651 01162000 B SENDEMSG INDEX = 44 @VA13651 01165000 B SENDEMSG INDEX = 48 @VA13651 01168000 B SENDEMSG INDEX = 52 @VA13651 01171000 B CHKRANGE INDEX = 56 @VA13651 01174000 B BAD05 INDEX = 60 @VA13651 01177000 B CHANDED INDEX = 64 @VA13651 01180000 B CHKRANGE INDEX = 68 @VA13651 01183000 B SENDEMSG INDEX = 72 @VA13651 01186000 B SENDEMSG INDEX = 76 @VA13651 01189000 B CHKRANGE INDEX = 80 @VA13651 01192000 B CHKRANGE INDEX = 84 @VA13651 01195000 B CHKRANGE INDEX = 88 @VA13651 01198000 B SENDEMSG INDEX = 92 @VA13651 01201000 B CHKRANGE INDEX = 96 @VA13651 01204000 B CHKRANGE INDEX = 100 @VA13651 01207000 B SENDEMSG INDEX = 104 @VA13651 01210000 B SENDEMSG INDEX = 108 @VA13651 01213000 B SENDEMSG INDEX = 112 @VA13651 01216000 B SENDEMSG INDEX = 120 @VA11952 01217000 B CHKRANGE INDEX = 124 @VA13217 01218000 EJECT 01239000 BAD05 LA R6,VCUDVTBL-VCUBLOK(R7) POINT TO DEVICE TABLE @V407466 01240000 SLR R1,R6 CALC BAD DEVICE TABLE INDEX @V407466 01241000 SRL R1,1 CONVERT INDEX TO 'DEV' ADDR @V407466 01242000 LH R2,VIRTADD VIRTUAL ADDRESS TO R2 @V407466 01244000 OR R1,R2 ADD BAD DEV ADDR TO BASE FOR MSG @V407466 01245000 STH R1,VIRTADD AND RESAVE @V407466 01246000 B CHKRANGE GO TEST FOR RANGE @VA13651 01247000 SPACE 01287000 CHANDED EQU * ERROR FOR DEDICATED CHANNELS @V407490 01288000 AIF (NOT &DEDCH).NOTDED3 **AIF** @V407466 01289000 LR R8,R6 SAVE R6 FOR LATER @V407466 01290000 .NOTDED3 ANOP **ANOP** 01291000 SPACE 1 01298000 CHKRANGE EQU * @VA13651 01305000 BAL R5,TSTRANGE TEST FOR RANGE BEING PROCESSED @VA13651 01312000 SENDEMSG EQU * CALL VDE ROUTINE TO ISSUE MSG @VA13651 01319000 LR R2,R0 SAVE PARM COUNT FOR VDERR MSG @VA13651 01326000 LR R7,R1 SAVE PARM ADDRESS FOR VDERR MSG @VA13651 01333000 BAL R5,SWPCALL ENSURE VMBLOK SWITCH BEFORE CALL @VA13651 01340000 LR R0,R2 RESTORE PARM COUNT FOR VDERR MSG @VA13651 01347000 LR R1,R7 RESTORE PARM ADDR FOR VDERR MSG @VA13651 01354000 L R2,SAVEWRK7 RELOAD ERROR INDEX FOR VDERR @VA13651 01361000 L R7,SAVEWRK5 LOAD ADDRESS OF WORKAREA @VA13651 01368000 LA R7,MSGAREA(,R7) GET ADDRESS OF MESSAGE AREA @VA13651 01375000 CALL DMKVDERR CALL ERROR MESSAGE ROUTINE @VA13651 01382000 B BRTABLE(R2) CONTINUE AT APPROPRIATE PLACE @VA13651 01389000 SPACE 1 01396000 BRTABLE EQU * @VA13651 01403000 B CLEANXT EXIT @VA13651 01410000 B PROCESS CONTINUE PROCESSING RANGE @VA13651 01417000 B MULTCONT CONTINUE PROCESSING MULTIPLES @VA13651 01424000 B RESPATT ISSUE RESPONSES @VA13651 01431000 SPACE 2 01449000 TSTRANGE TM VDABITS,RANGE RANGE BEING PROCESSED @V407466 01450000 BCR 14,R5 NO, JUST ISSUE ERROR MESSAGE @V407466 01451000 OI VDABITS+1,ATTERR ISSUE SUCCESSFUL MSG FIRST @V407466 01452000 ST R5,SAVEWRK8 STORE R5 TEMPORARILY @V407466 01453000 BAL R6,RESPOND2 GO ISSUE RESPONSE MESSAGES @V407466 01454000 NI VDABITS+1,X'FF'-ATTERR TURN OFF SWITCH @V407466 01455000 L R5,SAVEWRK8 RESTORE R5 @V407466 01456000 BR R5 RETURN TO MAINLINE @V407466 01457000 SPACE 2 01458000 SPACE 01481000 * THE FOLLOWING ERROR CODE EQUATES ARE USED IN THIS MODULE 01482000 RC12 EQU 12 DEVICE IS OFFLINE @V407466 01483000 RC8 EQU 8 DEVICE NOT DRAINED @V407466 01484000 RC16 EQU 16 DEVICE SHARED @V407466 01485000 RC20 EQU 20 DEVICE ALREADY CP OWNED @VA13651 01485500 RC24 EQU 24 DEVICE ALREADY ATTACHED @V407466 01486000 RC44 EQU 44 USERID NOT LOGGED ON @VA13651 01486500 RC56 EQU 56 DEVICE ALREADY DEFINED @V407466 01487000 RC60 EQU 60 BAD LABEL READ @V407466 01488000 RC64 EQU 64 CHANNEL DEDICATED @V407466 01489000 RC80 EQU 80 DEVICE DOES NOT EXIST @VA13651 01490000 RC84 EQU 84 DEVICE ALREADY IN USE @VA13651 01490100 RC88 EQU 88 INVALID OPTION @VA13651 01490200 RC92 EQU 92 INVALID DEVICE TYPE @VA13651 01490300 RC96 EQU 96 RADDR MISSING OR INVALID @VA13651 01490400 RC100 EQU 100 VADDR MISSING OR INVALID @VA13651 01490500 RC104 EQU 104 DUPLICATE VOLUME @VA13651 01490600 RC108 EQU 108 VOLUMES DON'T MATCH @VA13651 01490700 RC112 EQU 112 INVALID PARAMETERS @VA13651 01490800 RC124 EQU 124 MAXIMUM DEVICES EXCEEDED @VA13217 01490900 * FLAGS SET IN SAVEWRK9 BY DMKVDC 01491000 VIRTPRES EQU X'40' 3330V PARM PRESENT @V60B6B8 01492000 VOLPRES EQU X'80' VOLID PARM PRESENT @V60B6B8 01493000 EJECT 01494000 RC4 EQU 4 @V60B6B8 01530000 VOLSIZE EQU 1 @V60B6B8 01532000 FLAGLEN EQU 1 LENGTH OF FLAGS IN SAVEWRK @V60B6B8 01533000 EJECT 01535000 LTORG @V407466 01536000 EJECT 01537000 COPY SAVE @V407466 01538000 WORKAREA EQU ((SAVEWRK9+L'SAVEWRK9)-SAVEWRK2) LNGTH OF WORKAR@V60B6B8 01539000 EJECT 01540000 *----------------------------* 01541000 * 01542000 WRK2 DSECT ERROR MESSAGE DSECT @V407466 01543000 ATTCUU DS CL3 CUU @V407466 01544000 ATTSIZE1 EQU *-ATTCUU DATA LENGTH @V407466 01545000 ATTDEL4 DS X DELIMITER @V407466 01546000 ATTNO DS CL3 NUMBER OF USERS @V407466 01547000 ATTSIZE5 EQU *-ATTCUU DATA LENGTH @V407466 01548000 DS X ... @V407466 01549000 ATTDEL1 DS X DELIMITER @V407466 01550000 ATTUSE DS CL3 USERID @V407466 01551000 ATTDEL5 DS X DELIMITER @V407466 01552000 ATTUSER2 DS CL4 USERID @V407466 01553000 ATTSIZE2 EQU *-ATTCUU DATA LENGTH @V407466 01554000 ATTDEL2 DS X DELIMITER @V407466 01555000 ATTVADDR DS CL3 VADDR @V407466 01556000 ATTSIZE3 EQU *-ATTCUU DATA LENGTH @V407466 01557000 MSGSIZE EQU (*-ATTCUU+7)/8 @V407466 01558000 ORG ATTDEL1 SAVEWRK4 @V407466 01559000 ATTDEL3 DS X DELIMITER @V407466 01560000 ATTCHAN DS CL2 CHANNEL @V407466 01561000 ATTSIZE4 EQU *-ATTCUU DATA LENGTH @V407466 01562000 ORG ATTCUU @V407466 01563000 DS CL4 @V407466 01564000 ATTCON DS CL8 CONSTANT 'ATTACHED' @V407466 01565000 *----------------------------* 01566000 * 01567000 VDABITS EQU SAVEWRK1 FLAGS USED WITHIN VDA @V407466 01568000 MULTCUU EQU SAVEWRK1+2 NO. MULT. ADDRS IN MSG @V407466 01569000 DEVADDR EQU SAVEWRK2 REAL/VIRTUAL DEVICE ADDRESS @V407466 01570000 CMDUSER EQU SAVEWRK3 AND SAVEWRK4 - USERID @V407466 01571000 VIRTADD EQU SAVEWRK1+2 VIRTUAL DEVICE ADDRESS @V407466 01572000 SPACE 01573000 * EQUATES 01574000 MAXCUU EQU 40 @V407490 01601000 VOLIDSIZ EQU 6 @V407490 01602000 COUNT2 EQU 2 @V407490 01603000 SPACE 01605000 * 01606000 * FLAGS DEFINED IN "VDABITS" : 01607000 * 01608000 CHANNEL EQU X'80' "CHANNEL" OPTION SPECIFIED @V407466 01609000 NSYSOP EQU X'40' CALLER IS NOT SYSTEM OPERATOR @V407466 01610000 MULTR EQU X'20' MULTIPLE RADDR ON COMMAND LINE @V407466 01611000 ATTSYST EQU X'10' ATTACH/DETACH TO/FROM "SYSTEM" @V407466 01612000 ATTREAD EQU X'08' ATTACH "R/O" @V407466 01613000 ATTCTCA EQU X'02' ATTACH REAL CHAN-TO-CHAN ADAPTER @V407466 01614000 DED2305 EQU X'01' ATTACH/DEDICATE MULTI EXP DEVICE @V407466 01615000 RANGE EQU X'04' RANGE ON COMMAND LINE @V407466 01616000 SPACE 01617000 MDSECT DSECT @V407466 01618000 MULTADD DS F @V407466 01619000 DS 47F UP TO 48 CCU ON ONE COMMAND EXEC.@V407466 01620000 DS 4D @V407466 01621000 MULTSIZE EQU (*-MULTADD+7)/8 @V407466 01622000 MSGAREA EQU *-MULTADD @V407466 01623000 SPACE 01624000 ORG MULTADD @V407466 01625000 DS CL3 ... @V407466 01626000 DELIM1 DS XL1 @V407466 01627000 DS CL4 CONSTANT - 'ATTACH' @V407466 01628000 DELIM2 DS XL1 @V407466 01629000 USERSIZE EQU *-MULTADD SIZE OF USER MSG IN BYTES @V407466 01630000 CONTO DS CL3 CONSTANT - 'TO ' @V407466 01631000 USERID DS CL8 USERID @V407466 01632000 OPERSIZE EQU *-MULTADD SIZE OF OPERATOR MSG IN BYTES @V407466 01633000 DELIM3 DS XL1 @V407466 01634000 CONBY DS CL3 CONSTANT - 'BY ' @V407466 01635000 ATTACHER DS CL8 ATTACHER @V407466 01636000 ASIZE EQU *-MULTADD SIZE OF ATTACHER MSG IN BYTES @V407466 01637000 EJECT 01638000 COPY EQU @V407466 01639000 OSVSCOM MSSCOM @V60B6B8 01640000 DMKVDA CSECT @V60B6B8 01641000 COPY DEVTYPES @V407466 01642000 PSA @V407466 01643000 COPY VMBLOK @V407466 01644000 COPY RBLOKS @V407466 01645000 COPY VBLOKS @V407466 01646000 COPY IOBLOKS @V407466 01647000 COPY IOER @V407466 01648000 EJECT 01649000 COPY ALLOC @V407466 01650000 COPY UDIRECT @V407466 01651000 END DMKVDA 01652000