ibm:vm370-lib:cp:dmkvdd.assemble_src
Table of Contents
DMKVDD Source
References
- Fixes Applied : 11
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC039DK]
Source Listing
- DMKVDD.ASSEMBLE.txt
- VDD TITLE 'DMKVDD (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF SYSIN @V407466 00002000
- COPY OPTIONS @V407466 00003000
- COPY LOCAL @V407466 00004000
- SPACE 2 00005000
- EJECT 00006000
- *. 00007000
- * MODULE NAME - 00008000
- * DMKVDD 00009000
- * 00010000
- * FUNCTION - 00011000
- * DMKVDDDE - 'DETACH' A VIRTUAL OR REAL DEVICE. 00012000
- * 00013000
- *. 00014000
- DMKVDD START 0 @V407490 00015000
- SPACE 00016000
- DC CL8'DMKVDD' TO IDENTIFY "VIRTUAL DEVICE @V407466 00017000
- * BUILD" MODULE 00018000
- SPACE 00019000
- USING PSA,R0 @V407466 00020000
- USING VMBLOK,R11 @V407466 00021000
- USING SAVEAREA,R13 @V407466 00022000
- SPACE 00023000
- EXTRN DMKCVTBH,DMKCVTHB,DMKCVTBD @V407466 00024000
- EXTRN DMKSCNFD,DMKSCNRD,DMKSCNRU,DMKSCNVU @V407466 00025000
- EXTRN DMKSCNVS,DMKSCNRN,DMKSCNVN,DMKSCNAU @V407466 00026000
- EXTRN DMKLOCKQ,DMKLOCKD,DMKVDSAT @V407466 00027000
- EXTRN DMKVCHDC,DMKERMSG @V407466 00028000
- EXTRN DMKVDREL,DMKIOSQR @V407466 00029000
- SPACE 00030000
- EXTRN DMKSYSOW,DMKSYSOC OWNED LIST @V407466 00031000
- EXTRN DMKPGT4P,DMKPGT4T @V407466 00032000
- EXTRN DMKPGT5P,DMKPGT5T 3350 ALLOCATION ANCHORS @V407466 00033000
- EXTRN DMKPGTTM,DMKPGT90 SYSTEM TEMPSPACE COUNTS @V407466 00034000
- EXTRN DMKPGTP5,DMKPGTP0,DMKPGTP4 PREFERRED ALLOCATION @V407466 00035000
- EXTRN DMKPGTT5,DMKPGTT0,DMKPGTT4 TEMPSPACE ALLOCATION @V407466 00036000
- EXTRN DMKVDCSC,DMKDSBRD,DMKSTKIO @VA08187 00037000
- EJECT 00038000
- *. 00039000
- * 00040000
- * COMMAND LINE FORMAT - 00041000
- * 00042000
- * +--------+--------------------------------+ 00043000
- * | | | 00044000
- * | DETACH | VADDR | 00045000
- * | | VADDR1-VADDR2 | 00046000
- * | | VADDR . . . | 00047000
- * | | | 00048000
- * | | RADDR <FROM> USERID | 00049000
- * | | RADDR1-RADDR2 <FROM> USERID | 00050000
- * | | RADDR . . . <FROM> USERID | 00051000
- * | | RADDR <FROM> SYSTEM | 00052000
- * | | RADDR . . . <FROM> SYSTEM | 00053000
- * | | RADDR1-RADDR2 <FROM> SYSTEM | 00054000
- * | | | 00055000
- * | | CHANNEL X | 00056000
- * | | CHANNEL X <FROM> USERID | 00057000
- * | | | 00058000
- * +--------+--------------------------------+ 00059000
- * 00060000
- * ATTRIBUTES - 00061000
- * 00062000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00063000
- * 00064000
- * ENTRY CONDITIONS - 00065000
- * 00066000
- * GPR 2 = 0 00067000
- * GPR 9 = ADDRESS OF COMMAND BUFFER 00068000
- * GPR 11 = ADDRESS OF USER'S VMBLOK 00069000
- * GPR 12 = ADDRESS OF DMKVDDDE 00070000
- * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00071000
- * 00072000
- * EXIT CONDITIONS - 00073000
- * 00074000
- * GPR 2 = 0 IF DEVICE HAS BEEN DETACHED, OR 00075000
- * ERROR-CODE (SEE ERROR MESSAGES) IF UNSUCCESSFUL. 00076000
- * 00077000
- * CALLS TO OTHER ROUTINES - 00078000
- * 00079000
- * DMKSCNFD 00080000
- * DMKCVTHB 00081000
- * DMKSCNRU 00082000
- * DMKSCNVU 00083000
- * DMKSCNRN 00084000
- * DMKSCNVN 00085000
- * DMKSCNAU 00086000
- * DMKERMSG 00087000
- * DMKVDREL 00088000
- * DMKCVTBH 00089000
- * DMKQCNWT 00090000
- * DMKVCHDC 00091000
- * DMKVDCSC 00092000
- * DMKLOCKD 00093000
- * DMKLOCKQ 00094000
- * DMKCVTBD 00095000
- * 00096000
- * EXTERNAL REFERENCES - 00097000
- * 00098000
- * NONE 00099000
- * 00100000
- * TABLES / WORK AREAS - 00101000
- * 00102000
- * VMBLOK 00103000
- * RDEVBLOK 00104000
- * VCHBLOK 00105000
- * VCUBLOK 00106000
- * VDEVBLOK 00107000
- * VCUDVTBL 00108000
- * VCHCUTBL 00109000
- * VMCHTBL 00110000
- * 00111000
- * REGISTER USAGE - 00112000
- * 00113000
- * GPR 6 = ADDRESS OF VCHBLOK 00114000
- * GPR 7 = ADDRESS OF VCUBLOK 00115000
- * GPR 8 = ADDRESS OF RDEVBLOK/VDEVBLOK 00116000
- * GPR 9 = ADDRESS OF COMMAND BUFFER 00117000
- * GPR 11 = ADDRESS OF USER'S VMBLOK 00118000
- * GPR 12 = BASE REGISTER 00119000
- * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00120000
- * 00121000
- * GPRS 0-5 AND 14-15 ARE WORK REGISTERS. 00122000
- * GPR 10 IS ALSO A WORK REGISTER 00123000
- * 00124000
- * NOTES - NONE 00125000
- * 00126000
- * OPERATION - 00127000
- * 00128000
- * 1. DMKVDCSC IS CALLED TO PERFORM SYNTAX CHECKING 00129000
- * ON THE COMMAND LINE; DMKVDCSC WILL CALL DMKCFCSC TO 00130000
- * DETERMINE IF THE FIRST OPERAND ON THE COMMAND IS A RANGE 00131000
- * OF DEVICE ADDRESSES. REGARDLESS OF WHETHER A RANGE OR A 00132000
- * SINGLE ADDRESS OR MULTIPLE ADDRESSES ARE SPECIFIED ON THE 00133000
- * COMMAND LINE, DMKSCNFD AND DMKCVTHB ARE USED TO OBTAIN AND 00134000
- * CONVERT FROM HEX TO BINARY THE DEVICE ADDRESSES. 00135000
- * IF THE DEVICE ADDRESS IS MISSING OR INVALID, OR THE COMMAND 00136000
- * FAILS TO PASS THE COMMAND SYNTAX CHECKING, AN ERROR CODE 00137000
- * IS RETURNED TO THE CALLER (DMKVDD) AND DMKVDD ISSUES 00138000
- * AN APPROPRIATE ERROR MESSAGE. 00139000
- * 00140000
- * 2. A CHECK IS MADE FOR THE ERROR CONDITIONS 00141000
- * OF THE DEVICE BEING OFFLINE, SHARED, CP OWNED, OR NOT 00142000
- * DEDICATED TO THE SPECIFIED USER (ERROR CODE AND MESSAGE 00143000
- * RETURNED IF NOT). IF THESE CHECKS ARE OK, THEN THE 00144000
- * APPROPRIATE VMBLOK AND VIRTUAL DEVICE ADDRESS ARE 00145000
- * REFERENCED IN THE NEXT STEP. 00146000
- * 00147000
- * 3. THE VIRTUAL DEVICE ADDRESS IS CHECKED FOR VALIDITY, AND 00148000
- * DMKSCNVU IS CALLED TO OBTAIN THE VCHBLOK, VCUBLOK, AND 00149000
- * VDEVBLOK (ERROR CODE AND MESSAGE IF NOT FOUND). IF OK, THEN 00150000
- * THE DMKVDREL SUBROUTINE IS CALLED TO PERFORM THE NECESSARY 00151000
- * INTERNAL FUNCTIONS TO RELEASE THE VIRTUAL DEVICE. 00152000
- * 00153000
- * 4. THEN THE VDEVADD ADDRESS IN VDEVBLOK IS SET TO X'FFFF' TO 00154000
- * INDICATE THE DEVICE NO LONGER EXISTS, AND THE CORRESPONDING 00155000
- * VCUDVTBL ENTRY IN THE VCUBLOK IS ALSO SET TO X'FFFF'. IF ALL 00156000
- * THE VIRTUAL DEVICES ON THIS CONTROL UNIT HAVE BEEN RELEASED, 00157000
- * THEN THE VCUADD IN THE VCUBLOK, AND THE CORRESPONDING VCHCUTBL 00158000
- * ENTRY IN THE VCHBLOK ARE ALSO SET TO X'FFFF'. SIMILARLY 00159000
- * (IF THIS WAS DONE), THEN IF ALL THE VIRTUAL CONTROL UNITS 00160000
- * ON THE CHANNEL HAVE BEEN RELEASED, THEN THE VCHADD IN THE 00161000
- * VCHBLOK AND THE CORRESPONDING VMCHTBL ENTRY IN THE VMBLOK 00162000
- * ARE ALSO SET TO X'FFFF'. 00163000
- * 00164000
- * 5. WHEN DETACHING A DEDICATED DASD DEVICE, DMKVDD WILL 00165000
- * CREATE AND STACK (DMKSTKIO) A DEVICE END INTERRUPT IOBLOK 00166000
- * FOR DMKDSBRD TO READ THE VOLUME LABEL. THIS WILL ENSURE 00167000
- * THAT THE VOLUME SERIAL OF THE PACK THAT WAS ACTUALLY ON 00168000
- * THE DRIVE WILL BE MOVED TO THE RDEVBLOK AND QUERY REQUESTS 00169000
- * WILL REFLECT THE TRUE VOLUME SERIAL ON THE DRIVE. 00170000
- * 00171000
- * 6. IF A REAL DEVICE WAS DETACHED, MESSAGES ARE SENT TO THE 00172000
- * CALLER, AND TO THE USER TO WHOM THE DEVICE BELONGED, 00173000
- * INDICATING THAT THE DEVICE HAS BEEN DETACHED, AND RETURN IS 00174000
- * MADE TO THE CALLER. 00175000
- * 00176000
- * 7. FOR A VIRTUAL DEVICE, THE CALLER (USER) IS SENT A MESSAGE 00177000
- * THAT THE DEVICE HAS BEEN DETACHED, AND RETURN IS MADE TO HIM. 00178000
- * 00179000
- * 8. FOR THE "DETACH CHANNEL" COMMAND, THE COMMAND LINE IS 00180000
- * SCANNED FOR PROPER FORMAT AND THAT THE USER HAS A HIGH 00181000
- * ENOUGH COMMAND LEVAL CLASS TO ISSUE THE COMMAND. IF THE 00182000
- * COMMAND LINE IS CORRECT A CALL IS MADE TO DMKVCHDC TO 00183000
- * DO THE ACTUAL DETACHING. 00184000
- * 00185000
- * 9. ERROR MESSAGES WILL BE ISSUED FOR THOSE DEVICE ADDRESSES 00186000
- * IN THE RANGE OR THOSE MULTIPLE ADDRESSES ON THE COMMAND LINE 00187000
- * WHICH CANNOT BE DETACHED. COMMAND PROCESSING WILL NOT 00188000
- * TERMINATE WHEN ONE OF THE DEVICES CANNOT BE DETACHED. 00189000
- * INSTEAD, SUCCESSFUL DETACH MESSAGES AND ERROR MESSAGES 00190000
- * WILL BE ISSUED UNTIL ALL DEVICE ADDRESSES ON THE COMMAND 00191000
- * LINE HAVE BEEN PROCESSED. 00192000
- * 00193000
- * RESPONSES - 00194000
- * 00195000
- * 'TYPE VADDR DETACHED' 00196000
- * 'VADDR . . . DETACHED' 00197000
- * 'VADDR1-VADDR2 DETACHED' 00198000
- * 00199000
- * 'TYPE RADDR DETACHED $USERID$ VADDR' 00200000
- * 'RADDR . . . DETACHED $USERID$' 00201000
- * 'RADDR1-RADDR2 DETACHED $USERID$' 00202000
- * 00203000
- * 'TYPE RADDR DETACHED $USERID$ VADDR BY $USERID$' 00204000
- * 'RADDR . . . DETACHED $USERID$ BY $USERID$' 00205000
- * 'RADDR1-RADDR2 DETACHED $USERID$ BY $USERID$' 00206000
- * 00207000
- * 'DASD RADDR DETACHED SYSTEM $VOLID$' 00208000
- * 'DASD RADDR DETACHED SYSTEM $VOLID$ BY $USERID$' 00209000
- * 'RADDR . . . DETACHED SYSTEM BY $USERID$' 00210000
- * 'RADDR1-RADDR2 DETACHED SYSTEM BY $USERID$' 00211000
- * 00212000
- * ERROR MESSAGES - 00213000
- * 00214000
- * DMKVDD006E INVALID DEVICE TYPE - RADDR 00215000
- * DMKVDD020E USERID MISSING OR INVALID 00216000
- * DMKVDD021E RADDR MISSING OR INVALID 00217000
- * DMKVDD022E VADDR MISSING OR INVALID 00218000
- * DMKVDD034E CHANNEL MISSING OR INVALID 00219000
- * DMKVDD040E DEV ADDR DOES NOT EXIST 00220000
- * DMKVDD045E $USERID$ NOT LOGGED ON 00221000
- * DMKVDD046E TYPE RADDR OFFLINE 00222000
- * DMKVDD121E TYPE RADDR NOT ATTACHED TO $USERID$ 00223000
- * DMKVDD123E DASD RADDR CP OWNED 00224000
- * DMKVDD124E DASD RADDR IN USE BY NNN USERS 00225000
- * DMKVDD135E TYPE RADDR NOT DETACHED; CHAN XX DEDICATED 00226000
- * DMKVDD140E TYPE RADDR ATTACHED TO $USERID$ 00227000
- * DMKVDD142E TYPE RADDR NOT DRAINED 00228000
- * DMKVDD143E TYPE RADDR IN USE BY SYSTEM 00229000
- * DMKVDD273E DETACH REJ VIRT MACH TRACING I/O 00229500
- *. 00230000
- SPACE 2 00231000
- DMKVDDDE RELOC DETACH A DEVICE FROM A USER'S VM @V407466 00232000
- XC VDDBITS(4),VDDBITS CLEAR FLAG-BIT WORD @V407466 00233000
- * (SAVEWRK1) 00234000
- OI VDDBITS+1,DETACH INDICATE "DETACH" COMMAND @V407466 00235000
- SLR R2,R2 CLEAR R2 FOR ZERO RETURN CODE @V407466 00236000
- ST R2,SAVER2 SAVE IN CASE NO ERRORS @V407466 00237000
- LA R0,MULTSIZE SIZE OF WORKAREA @V407466 00238000
- CALL DMKFREE ACQUIRE STORAGE @V407466 00239000
- LR R4,R1 TRANSFER ADDR TO R4 @V407466 00240000
- USING DETMSG,R4 ESTABLISH ADDRESSABILITY @V407466 00241000
- MVI DETMSG,BLANK PROPAGATE BLANKS THROUGH WORKAREA@V407466 00242000
- MVC DETMSG+1((MULTSIZE*8)-1),DETMSG ... @V407466 00243000
- SPACE 2 00244000
- * R9 POINTS TO COMMAND LINE 00245000
- * R4 POINTS TO ACQUIRED WORK AREA 00246000
- EJECT 00247000
- CALL DMKVDCSC SCAN COMMAND LINE @V407466 00248000
- LTR R2,R2 ANY ERRORS @V407466 00249000
- BNZ ERRTABL-8(R2) BRANCH TO ERROR ROUTINE @V407466 00250000
- TM VDDBITS,RANGE IS IT A RANGE? @VA11655 00250200
- BZ NOTRANGE YES, BRANCH. @VA11655 00250400
- OI RAFLG,FRSTHRU TURN ON FLAG. @VA11655 00250600
- NOTRANGE DS 0H @VA11655 00250800
- TM VDDBITS,VDETACH DETACH 'VIRTUAL'? @V407466 00251000
- BZ DETREAL NO, MUST BE DETACH REAL @V407466 00252000
- LR R10,R11 VMBLOK IN R10 ALSO FOR 'LOCKUSER'@V407466 00253000
- TM VDDBITS,CHANNEL IS IT DETACH CHANNEL? @V407466 00254000
- BO DEDCHAN YES, DO IT! @V407466 00255000
- LA R5,SCNVU BR ADDRESS FOR FIND VIRTUAL @V407466 00256000
- * BLOCKS 00257000
- TM VDDBITS,MULTR MULTIPLES SPECIFIED @V407466 00258000
- BZ INIT INITIALIZE FOR RANGE/SINGLE ADDR @V407466 00259000
- BAL R5,MULTIPLE ESTABLISH MULTIPLE REGISTERS @V407466 00260000
- SCNVU CALL DMKSCNVU FIND OUT WHAT KIND OF DEVICE @V407466 00261000
- BNZ UNKNOWN IT'S NOT EVEN THERE @V407466 00262000
- B CHKVTYPE CHECK WHAT KIND OF DEVICE @V407466 00263000
- SPACE 2 00264000
- DETREAL EQU * FIRST CHECK FOR CHANNEL @V407490 00265000
- TM VDDBITS,CHANNEL DETACH CHANNEL ??? @V407490 00266000
- BO DEDCHAN YES, BETTER GO DO IT @V407490 00267000
- TM VMOSTAT,VMSYSOP IS CALLER SYSTEM OPERATOR? @V407490 00268000
- BO DTSYSOP YES @V407466 00269000
- OI VDDBITS,NSYSOP THREE MESSAGES RESULTANT @V407466 00270000
- DTSYSOP EQU * @V407466 00271000
- LA R5,FINDRDEV BRANCH ADDRESS @V407466 00272000
- TM VDDBITS,MULTR MULTIPLES SPECIFIED? @V407466 00273000
- BZ INIT YES, ACQUIRE STORAGE FOR MESSAGE @V407466 00274000
- BAL R5,MULTIPLE GET DEVICE ADDRESS @V407466 00275000
- FINDRDEV BAL R5,GETRDEV FIND RDEVBLOK @V407466 00276000
- USING RDEVBLOK,R8 @V407466 00277000
- TM RDEVSTAT,RDEVDISA IS THE DEVICE OFFLINE ? @V407466 00278000
- BO DEVOFFL BRANCH IF YES @V407466 00279000
- TM RDEVTYPC,CLASDASD+CLASTAPE DISK OR TAPE ? @V407466 00280000
- BZ DETRLDV NO -- SKIP THESE TESTS @V407466 00281000
- TM RDEVFLAG,RDEVOWN IS IT A CP OWNED VOLUME ? @V407466 00282000
- BO DEVOWND BRANCH IF YES @V407466 00283000
- CLC RDEVLNKS,=H'0' Are there links to device? HRC039DK 00284100
- BNE ERR16 Can't detach if there are links HRC039DK 00284200
- DETRLDV EQU * TEST FOR DETACH FROM SYSTEM @V407466 00286000
- TM VDDBITS,ATTSYST "DETACH FROM SYSTEM" @V407466 00287000
- BO DETSYST YES - GO DO IT @V407466 00288000
- TM RDEVSTAT,RDEVDED IS IT A DEDICATED DEVICE ? @V407466 00289000
- BZ ERR68 NO @V407466 00290000
- CLM R10,B'0111',RDEVUSER+1 IS THIS THE RIGHT USER ? @V407466 00291000
- BNE ERR68 NO - ERROR @V407466 00292000
- CLC RDEVTYPC(2),=AL1(CLASDASD,TYP2305) 2305 ? @V407466 00293000
- BNE DETNDRM NO -- NORMAL DEVICE @V407466 00294000
- TM RDEVADD+1,X'07' TRY TO DETACH AN EXPOSURE ? @V407466 00295000
- BNZ VDD021 YUP, BAD NEWS. @V407466 00296000
- OI VDDBITS,DED2305 INDICATE 2305 TYPE DETACH @V407466 00297000
- SPACE 00298000
- DETNDRM EQU * @V407466 00299000
- BAL R5,SWPUSER GET THE DETACHEE'S VMBLOK @V407466 00300000
- TM VMRSTAT,VMLOGON+VMLOGOFF IS DETACHEE LOGGING OFF@V407466 00301000
- BNZ NOTLOGD YES, DON'T ALLOW THE DETACH @V407466 00302000
- TM VMOSTAT,VMKILL IS DETACHEE BEING FORCED @V407466 00303000
- BNZ NOTLOGD YES, DON'T ALLOW THE DETACH @V407466 00304000
- LH R1,RDEVATT LOAD ATTACHED VIRTUAL DEVICE @V407466 00305000
- * ADDRESS 00306000
- LR R2,R8 SAVE RDEVBLOK ADDR FOR LATER @V407466 00307000
- B DETRDEV REJOIN DEVICE DETACH CODE @V407466 00308000
- DROP R8 @V407466 00309000
- SPACE 00310000
- INIT L R1,DEVADDR SINGLE ADDR/1ST RANGE RADDR @V407466 00311000
- LR R9,R1 ... TO R9 @V407466 00312000
- XC SAVEWRK8(L'SAVEWRK8),SAVEWRK8 CLEAR @V407466 00313000
- BR R5 RETURN TO MAINLINE @V407466 00314000
- SPACE 00315000
- USING MDSECT,R4 ADDRESSABILITY @V407466 00316000
- MULTIPLE L R9,MULTADD FIRST MULTIPLE ADDRESS @V407466 00317000
- LR R1,R9 DEVICE ADDRESS @V407466 00318000
- ST R4,SAVEWRK8 SAVE PTR @V407466 00319000
- BR R5 RETURN TO MAINLINE @V407466 00320000
- SPACE 00321000
- USING VDEVBLOK,R8 @V407466 00322000
- CHKVTYPE CLC VDEVTYPC(2),=AL1(CLASDASD,TYP2305) DETACH ZEUS @V407466 00323000
- BNE DETRDEV NO -- NORMAL DEVICE @V407466 00324000
- TM VDEVSTAT,VDEVDED IS THIS A DEDICATED 2305? @V407466 00325000
- BZ DETRDEV NOPE, THEN 1 EXPOSURE IS OK @V407466 00326000
- TM DEVADDR+3,X'07' YUP, IS IT BASE ADDRESS? @V407466 00327000
- BNZ VDD022 NOPE, BAD NEWS. @V407490 00328000
- OI VDDBITS,DED2305 IND. MESSING WITH DEDICATED 2305@V407466 00329000
- DETRDEV EQU * DETACH OF REAL DEVICE @V407466 00330000
- ST R9,SAVEWRK7 SAVE R9 FOR LATER @V407466 00331000
- LA R9,8(0,0) LOOP COUNTER IF 2305 @V407466 00332000
- ST R1,VIRTADD SAVE THE VIRTUAL ADDRESS @V407466 00333000
- BAL R5,LOKUSER LOCK THE USER'S BLOCKS @V407466 00334000
- L R1,VIRTADD VIRTUAL DEVICE ADDRESS @V407466 00335000
- DETDRUM EQU * ENTER HERE FOR 2305 DETACH @V407466 00336000
- CALL DMKSCNVU GET THE VDEVBLOK ADDRESS @V407466 00337000
- BNZ INVADDF1 BRANCH IF NOT FOUND @V407466 00338000
- USING VCHBLOK,R6 @V407466 00339000
- USING VCUBLOK,R7 @V407466 00340000
- AIF (NOT &DEDCH).NOTDED2 @V407466 00341000
- TM VCHSTAT,VCHDED IS THIS CHANNEL DEDICATED @V407466 00342000
- BO CHANDED YES - CANNOT DETACH THIS DEVICE @V407466 00343000
- .NOTDED2 ANOP 00344000
- CLI VDEVTYPC,CLASDASD DASD TYPE DEVICE @V407466 00345000
- BNE VIRTDET SEE IF 'VDETACH' IS INDICATED @V407466 00346000
- TM VDEVSTAT,VDEVDED DED. REAL VOLUME (NOT MDISK) @V407466 00347000
- BZ VIRTDET NO, DON'T READ LABEL FOR MDISK @V407466 00348000
- TM VDDBITS,DED2305 2305 ? @VA07801 00349000
- BZ SKIP2305 GO AHEAD WITH UNSOL. DE @VA07801 00349100
- TM VDEVADD+1,X'07' BASE EXPOSURE ? @VA07801 00349200
- BNZ VIRTDET NO, SKIP UNSOL DE @VA07801 00349300
- SKIP2305 LR R3,R8 SAVE VDEVBLOK ADDR TEMP @VA07801 00349400
- L R8,VDEVREAL GET RDEVBLOK ADDRESS @V407466 00350000
- LA R0,IOBSIZE SIZE OF IOBLOK IN DBL. WDS. @V407466 00351000
- CALL DMKFREE GO GET IOBLOK @V407466 00352000
- LR R2,R1 IOBLOK ADDRESSED VIA R2 @V407466 00353000
- USING IOBLOK,R2 ADDRESSABILITY @V407466 00354000
- XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IOBLOK @V407466 00355000
- ST R2,IOBLINK IOBLOK POINTS TO ITSELF @V407466 00356000
- CALL DMKSCNRD GET DEVICE ADDR IN 'CUU' FORM @V407466 00357000
- STH R1,IOBRADD STORE IN IOBLOK @V407466 00358000
- LR R8,R3 RESTORE VDEVBLOK ADDR TO R8 @V407466 00359000
- L R1,ASYSVM SET USER TO SYSTEM @V407466 00360000
- ST R1,IOBUSER SAVE IN IOBLOK @V407466 00361000
- L R1,=A(DMKDSBRD) RETURN ADDRESS AFTER UNSTK @VA08187 00362000
- ST R1,IOBIRA ... @V407466 00363000
- MVI IOBCSW+4,DE INDICATE UNSOLICITED INTERRUPT @V407466 00364000
- OI IOBSPEC,IOBUNSL FLAG AS UNSOLICITED INTERR. @V407466 00365000
- LR R1,R10 SAVE VMBLOK PTR. TEMP. @V407466 00366000
- LR R10,R2 IOBLOK ADDRESS TO R10 @V407466 00367000
- CALL DMKSTKIO STACK IOBLOK @V407466 00368000
- LR R10,R1 RESTORE VMBLOK PTR. @V407466 00369000
- DROP R2 @V407466 00370000
- VIRTDET TM VDDBITS,VDETACH DETACH VIRTUAL?? @V407466 00371000
- BO DETRELSE YES - ALLOW MSG FROM DMKVDREL @V407466 00372000
- NI VDEVSTAT,X'FF'-VDEVCATT SUPPRESS VDDRL MESSAGE @V407466 00373000
- DETRELSE EQU * @V407466 00374000
- TM VDEVTYPC,CLASTAPE TAPE DEV ? HRC003DK 00374010
- BNO DETRELS2 HRC003DK 00374020
- TM VDDBITS+1,TPNORUN DETACH LEAVE ? HRC003DK 00374030
- BNO DETRELS2 HRC003DK 00374040
- OI VDEVFLG2,VDEVTNR HRC003DK 00374050
- DETRELS2 EQU * HRC003DK 00374060
- TM VDEVTYPC,CLASURI+CLASURO IS IT UNIT RECORD @VA07232 00374100
- BNO MAINLINE NO DONT BOTHER @VA07232 00374200
- TM VDEVSFLG,VDEVSVC ACTIVE SPOOLING ? @VA07232 00374300
- BO EMSG143E YES,NOT ALLOWED TO DETACH @VA07232 00374400
- MAINLINE EQU * @VA07232 00374500
- CALL DMKVDREL RELEASE THE DEVICE @V407466 00375000
- LOADFFS L R2,FFS LOAD FFFFFFFF @V407466 00376000
- SR R3,R3 ZERO INDEX REGISTER @V407466 00377000
- ST R4,SAVEWRK6 SAVE R4 TEMPORARILY @V407466 00378000
- LA R4,COUNT4 LOAD INCREMENT REGISTER @V407490 00379000
- LA R5,COUNT28 LOAD COMPARAND REGISTER @V407490 00380000
- LH R1,VDEVADD GET VIRTUAL DEVICE ADDRESS @V407466 00381000
- AR R1,R1 MULTIPLY IT BY 2 @V407466 00382000
- STH R2,VDEVADD INDICATE DEVICE NO LONGER EXISTS @V407466 00383000
- STH R2,VCUDVTBL(R1) REMOVE RDEVBLOK INDEX FROM TABLE@V407466 00384000
- DETCULP CL R2,VCUDVTBL(R3) ANY MORE DEVICES ON THIS CU ? @V407466 00385000
- BNE DETDONE BRANCH IF YES @V407466 00386000
- BXLE R3,R4,DETCULP BRANCH IF MORE TABLE ENTRIES @V407466 00387000
- LH R1,VCUADD LOAD VIRTUAL CONTROL UNIT ADDRESS@V407466 00388000
- SRL R1,3 MULTIPLY IT BY 2 @V407466 00389000
- STH R2,VCUADD INDICATE CONTROL UNIT NO LONGER @V407466 00390000
- * EXISTS 00391000
- STH R2,VCHCUTBL(R1) REMOVE VCUBLOK INDEX FROM TABLE @V407466 00392000
- SR R3,R3 ZERO INDEX REGISTER @V407466 00393000
- DETCHLP CL R2,VCHCUTBL(R3) ANY MORE CTL UNITS ON THIS @V407466 00394000
- * CHAN ? 00395000
- BNE DETDONE BRANCH IF YES @V407466 00396000
- BXLE R3,R4,DETCHLP BRANCH IF MORE TABLE ENTRIES @V407466 00397000
- LH R1,VCHADD LOAD VIRTUAL CHANNEL ADDRESS @V407466 00398000
- SRL R1,7 MULTIPLY IT BY 2 @V407466 00399000
- STH R2,VCHADD INDICATE CHANNEL NO LONGER EXISTS@V407466 00400000
- STH R2,VMCHTBL(R1) REMOVE VCHBLOK INDEX FROM TABLE @V407466 00401000
- DETDONE EQU * DETACH FINISHED @V407466 00402000
- L R4,SAVEWRK6 RESTORE R4 @V407466 00403000
- TM VDDBITS,DED2305 IS THIS A DEDICATED 2305? @V407466 00404000
- BZ DETRESP NOPE, BR. @V407466 00405000
- L R1,VIRTADD VIRTUAL DEVICE ADDRESS @V407466 00406000
- LA R1,1(0,R1) MOVE TO NEXT EXPOSURE @V407466 00407000
- ST R1,VIRTADD . . . @V407466 00408000
- BCT R9,DETDRUM DETACH ALL EIGHT AT ONCE @V407466 00409000
- S R1,F8 RESTORE ORIGINAL ADDRESS @V407466 00410000
- ST R1,VIRTADD . . . @V407466 00411000
- DETRESP EQU * @V407466 00412000
- BAL R5,FREUSER UNLOCK USER + SWAP VMBLOKS @V407466 00413000
- L R9,SAVEWRK7 RESTORE R9 @V407466 00414000
- TM VDDBITS,MULTR MULTIPLES BEING PROCESSED @V407466 00415000
- BO MULTMSG YES, FORMAT MULT MSG @V407466 00416000
- TM VDDBITS,RANGE RANGE BEING PROCESSED @V407466 00417000
- BO RAMSG NO, NORMAL MESSAGE PATH @V407466 00418000
- CALL DMKSCNVN GET EBCDIC TYPE-NAME @V407466 00419000
- LR R3,R1 ...INTO R3 @V407466 00420000
- DROP R6,R7,R8 @V407466 00421000
- RESPOND EQU * MAXIMUM OF THREE MESSAGES @V407466 00422000
- USING DETMSG,R4 @V407466 00423000
- ST R3,DETDTYP TYPE-NAME OF AFFECTED DEVICE @V407466 00424000
- MVI DETDEL1,BLANK DELIMITER @V407466 00425000
- L R1,VIRTADD VIRTUAL ADDRESS @V407466 00426000
- CALL DMKCVTBH ...INTO PRINTABLE FORM @V407466 00427000
- STCM R1,B'0111',DETADD1 INTO TWO PLACES @V407466 00428000
- MVI DETDEL2,BLANK DELIMITER @V407466 00429000
- RESPOND2 MVC RADET,=CL8'DETACHED' CONSTANT 'DETACHED' @V407466 00430000
- TM VDDBITS,ATTSYST DETACH FROM 'SYSTEM' @V407466 00431000
- BO OPERMSG YES, SKIP USER MSG @V407466 00432000
- LA R0,RASIZE1 MSG LENGTH @V407466 00433000
- TM VDDBITS,VDETACH IS THIS 'DETACH VIRTUAL' ? @V407466 00434000
- BZ SNDUSR1 NO @V407466 00435000
- SLR R2,R2 NO EXTRA PARMS FOR QCNWT @V407466 00436000
- TM VMMLVL2,VMMIMSG USER WANT INFO MSGS? @V407466 00437000
- BO SNDFRET YES - SEND MSG AND FRET BUFFER @V407466 00438000
- TM VDDBITS+1,DETERR ERROR MSG BEING PROCESSED @V407466 00439000
- BCR 1,R6 YES, RETURN TO PROCESS ERROR @V407466 00440000
- LA R0,MULTSIZE NO - GET MSG SIZE @V407466 00441000
- LR R1,R4 AND START ADDR @V407466 00442000
- CALL DMKFRET RELEASE THE BUFFER @V407466 00443000
- B VDDEXIT EXIT @V407466 00444000
- SPACE 2 00445000
- SNDUSR1 EQU * SWITCH TO TARGET USER'S VMBLOK @V407466 00446000
- CLR R10,R11 DETACH FROM HIMSELF ? @V407466 00447000
- BE OPERMSG YES - SKIP SHORT MESSAGE @V407466 00448000
- MVC DETBY,=CL3'BY ' ADD OPERATOR CUE @V407466 00449000
- MVC DETUSER(L'VMUSER),VMUSER ...FOR FORCED DETAC@V407466 00450000
- MVI DETDEL3,BLANK DELIMITER @V407466 00451000
- BAL R5,SWPUSER SWITCH TO USER'S VMBLOK @V4M0193 00452000
- LA R0,DETSIZE5 LENGTH @V407466 00453000
- LR R1,R4 MESSAGE START @V407466 00454000
- CALL DMKQCNWT,PARM=NORET @V407466 00455000
- BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00456000
- OPERMSG EQU * BUILD MESSAGE FOR @V407466 00457000
- * ATTACHER/DETACHER 00458000
- MVC DETUSER2,CMDUSER USERID OF DETACHEE @V407466 00459000
- LA R0,DETSIZE2 MSG LENGTH @V407466 00460000
- TM VDDBITS,RANGE RANGE BEING PROCESSED @V407466 00461000
- BO CHKSYS YES, SEE IF ATTACH TO SYSTEM @V407466 00462000
- MVC DETADD2(4),DETADD1 MOVE VIRTUAL ADDRESS @V407466 00463000
- * FURTHER OUT 00464000
- MVI DETDEL4,BLANK FIX UP BLANKS FOR SPACING @V407466 00465000
- BAL R5,CVTRADD CONVERT REAL ADDRESS TO HEX @V407466 00466000
- STCM R1,B'0111',DETADD1 ...INTO OPERATOR MESSAGES @V407466 00467000
- LA R0,DETSIZE3 CURRENT LENGTH @V407466 00468000
- CHKSYS TM VDDBITS,ATTSYST ATTACH TO SYSTEM ? @V407466 00469000
- BZ SNDOPMG NO @V407466 00470000
- MVC DETUSER2(8),=CL8'SYSTEM' @V407466 00471000
- TM VDDBITS,RANGE IS IT A RANGE? @VA11655 00471025
- BO SNDOPMG YES! SEND MESSAGE @VA11655 00471050
- MVC DETDEL4-1(6),CMDUSER THIS IS THE VOLID @VA08940 00472100
- SNDOPMG EQU * TYPE MESSAGE TO ATTACHER @V407466 00473000
- LR R1,R4 MESSAGE START @V407466 00474000
- CALL DMKQCNWT,PARM=NORET @V407466 00475000
- TM VDDBITS,NSYSOP ATTACH BY SYSTEM OPERATOR ? @V407466 00476000
- BZ CLEANXT YES - JUST EXIT @V407466 00477000
- TM VDDBITS,RANGE RANGE BEING PROCESSED @V407466 00478000
- BO RAFORM YES, FORMAT RANGE @V407466 00479000
- MVC DETBY2(3),=C'BY ' CONSTANT 'BY' @V407466 00480000
- MVC DETUSER3(L'VMUSER),VMUSER DETACHER @V407466 00481000
- LA R0,FULLEN FULL LENGTH @V407490 00482000
- SENDSYS LA R2,OPERATOR SEND MESSAGE TO SYSTEM OPERATOR @V407466 00483000
- SNDFRET EQU * SEND MESSAGE + RELEASE BUFFER @V407466 00484000
- LR R1,R4 MESSAGE START @V407466 00485000
- TM VDDBITS+1,DETERR ERROR MESSAGE TO PROCESS? @V407466 00486000
- BO QCNWT ISSUE MSG, DON'T RELEASE STORAGE @V407466 00487000
- LA R3,MULTSIZE SIZE OF STORAGE TO RELEASE @V407466 00488000
- CALL DMKQCNWT,PARM=NORET+DFRET(,R2) ISSUE MSG + REL @V407466 00489000
- * STOR. 00490000
- B VDDEXIT EXIT @V407466 00491000
- SPACE 2 00492000
- QCNWT CALL DMKQCNWT,PARM=NORET(,R2) ISSUE MESSAGE @V407466 00493000
- BR R6 RETURN TO PROCESS ERROR MSG @V407466 00494000
- SPACE 00495000
- RAMSG DS 0H @VA11236 00496010
- ******************************************************************* 00496020
- * AT THIS POINT R9 HAS THE ADDRESS OF THE DEVICE WE JUST * 00496030
- * DETACHED. FIRST TIME THRU RADDR1 AND RADDR2 (SAVEWRK8) ARE ZERO* 00496040
- * SUBSEQUENT ENTRYS RADDR1 WILL BE THE FIRST DEVICE WE DETACHED * 00496050
- * AND RADDR2 WILL BE THE SECOND LAST DEVICE WE DETACHED AND WILL * 00496060
- * BE UPDATED WITH R9 DEVICE SHORTLY. RADDR1 AND RADDR2 WILL * 00496070
- * THEN BE USED AS INPUT TO CONVERT FOR THE MESSAGE TEXT * 00496080
- ******************************************************************* 00496090
- TM RAFLG,FRSTHRU IS THIS THE FOIST TIME TROO @VA11236 00496100
- BZ NOTFIRST NO'SNOT UPDATE RADDR2 @VA11236 00496110
- STH R9,RADDR1 YES'TIS UPDATE RADDR1 @VA11236 00496120
- NI RAFLG,X'FF'-FRSTHRU REMOVE INDICATOR @VA11236 00496130
- B ENDRANGE GO CHECK FOR MORE DETACHS @VA11236 00496140
- NOTFIRST DS 0H @VA11236 00496150
- STH R9,RADDR2 SHOW THE LAST DETACHED DEVICE @VA11236 00496160
- ENDRANGE DS 0H @VA11236 00496170
- TM VDDBITS,DED2305 WORKING WITH 2305 ?? @V407490 00502000
- BZ ENDRNGE1 NOPE , BRANCH @V407490 00503000
- LA R9,7(,R9) ADD EIGHT EXPOSURES FOR DRUM @V407490 00504000
- ENDRNGE1 CH R9,ENDRADDR END OF RANGE ?? @V407490 00505000
- BNL RAMSG2 YES, ISSUE MESSAGE @V407490 00506000
- NI VDDBITS,X'FF'-DED2305 RESET DRUM FLAG @V407490 00507000
- LA R9,1(,R9) INCREM RANGE RADDR @V407490 00508000
- LR R1,R9 NEXT ADDR TO R1 @V407466 00509000
- USING DETMSG,R4 ADDRESSABILITY FOR MSG @V407466 00510000
- MVI DETMSG,BLANK PROPAGATE BLANKS THROUGH @V407466 00511000
- MVC DETMSG+1((MULTSIZE*8)-1),DETMSG MSG AREA @V407466 00512000
- TM VDDBITS,VDETACH DETACH 'VIRTUAL' @V407466 00513000
- BO SCNVU FIND VIRTUAL BLOCKS @V407466 00514000
- B FINDRDEV OTHERWISE, FIND REAL DEVICE @V407466 00515000
- SPACE 2 00519000
- USING DETMSG,R4 MSG AREA ADDRESSABILITY @V407466 00520000
- RAMSG2 SLR R1,R1 CLEAR R1 @V407466 00521000
- LH R1,RADDR2 2ND RANGE RADDR @V407466 00522000
- LTR R1,R1 FULL RANGE FOR MSG @V407466 00523000
- BNZ CONVERT YES, GO FORMAT MSG @V407466 00524000
- LH R1,RADDR1 FIRST ADDRESS IN RANGE @V407466 00525000
- LTR R1,R1 IS IT THERE? @V407466 00526000
- BZ CLEANXT ALL DONE, GET OUT @V407466 00527000
- B CONVERT2 OTHERWISE SINGLE MSG @V407466 00528000
- SPACE 2 00529000
- CONVERT CALL DMKCVTBH CONVERT ADDR @V407466 00530000
- STCM R1,B'0111',RACUU2 2ND RADDR IN RANGE @V407466 00531000
- MVI RADASH,DASH RANGE DELIMITER '-' @V407466 00532000
- MVC RADEL1,BLANKS DELIMITER @V407466 00533000
- SINGLE LH R1,RADDR1 1ST RADDR IN RANGE @V407466 00534000
- CONVERT2 CALL DMKCVTBH CONVERT ADDR @V407466 00535000
- STCM R1,B'0111',RACUU1 1ST ADDR IN RANGE @V407466 00536000
- B RESPOND2 CONTINUE TO FORMAT @V407466 00537000
- SPACE 2 00538000
- RAFORM MVI DETDEL4,BLANK DELIMITER @V407466 00539000
- MVC DETBY3,=CL3'BY ' CONSTANT 'BY ' @V407466 00540000
- MVC DETUSER4,VMUSER DETACHER @V407466 00541000
- LA R0,DETSIZE4 DATA LENGTH @V407466 00542000
- B SENDSYS SEND MESSAGE TO SYSTEM OPERATOR @V407466 00543000
- SPACE 2 00544000
- CLEANXT EQU * @V407466 00545000
- TM VDDBITS+1,DETERR ERROR MESSAGE IN PROCESS @V407466 00546000
- BCR 1,R6 YES, RETURN TO PROCESS ERROR @V407466 00547000
- * MESSAGE 00548000
- LR R1,R4 MESSAGE BUFFER @V407466 00549000
- LA R0,MULTSIZE @V407466 00550000
- CALL DMKFRET @V407466 00551000
- DROP R4 @V407466 00552000
- VDDEXIT EQU * RETURN TO DMKCFM @V407466 00553000
- BAL R5,SWPCALL MAKE SURE WE HAVE THE RIGHT TIMER@V407466 00554000
- EXIT @V407466 00555000
- EJECT 00556000
- MULTMSG EQU * @V407466 00557000
- USING MDSECT,R9 @V407466 00558000
- LR R1,R9 ... TO R9 @V407466 00559000
- SLR R7,R7 ZERO R7 @V407466 00560000
- IC R7,MULTCUU NO. CUU IN MSG @V407466 00561000
- LA R5,1(,R7) INCEMENT BY ONE @V407466 00562000
- STC R5,MULTCUU STORE FOR LATER @V407466 00563000
- L R9,SAVEWRK8 PTR TO BEGINNING OF AREA @V407466 00564000
- LA R8,L'MULTADD L'CUU + L'DELIMITER @V407490 00565000
- MR R6,R8 R7*R8 INTO R6-R7 @V407466 00566000
- AR R9,R7 POINTER TO SLOT FOR NEXT ADDR @V407466 00567000
- CALL DMKCVTBH CONVERT TO HEX FOR MSG @V407466 00568000
- STCM R1,B'0111',MULTADDR SAVE ADDR IN MSG @V407466 00569000
- MVI MULTDEL1,BLANK CUU DELIMITER @V407466 00570000
- DROP R9 @V407466 00571000
- USING MDSECT,R4 RE-EST. ADDRESSABILTIY @V407466 00572000
- MULTCONT LA R4,4(,R4) SEE IF MORE ADDRS TO PROCESS @V407466 00573000
- L R1,FFS X'FFFFFFFF' TO R1 @V407466 00574000
- C R1,MULTADDR ANY MORE ADDRS TO PROCESS @V407466 00575000
- BE FINFORM NO, FORMAT MESSAGE @V407466 00576000
- L R9,MULTADDR NEXT ADDR TO PROCESS @V407466 00577000
- LR R1,R9 ADDR TO R1 @V407466 00578000
- NI VDDBITS,X'FF'-DED2305 RESET DRUM FLAG @V407490 00579000
- TM VDDBITS,VDETACH DETACH 'VIRTUAL' @V407466 00580000
- BO SCNVU YES, FIND VIRTUAL BLOCKS @V407466 00581000
- B FINDRDEV OTHERWISE FIND REAL DEVICE @V407466 00582000
- SPACE 2 00583000
- FINFORM SLR R5,R5 ZERO R5 @V407466 00584000
- IC R5,MULTCUU NO. CUU'S IN MSG @V407466 00585000
- LR R7,R5 RESTORE TO R7 @V407466 00586000
- LTR R5,R5 ANY ADDRS IN BUFFER? @V407466 00587000
- BZ FRETBUF NO, RELEASE STORAGE AND GET OUT @V407466 00588000
- LA R8,L'MULTADD L'CUU + L'DELIMITER @V407490 00589000
- L R1,SAVEWRK8 MSG BUFFER ADDR @V407466 00590000
- MR R4,R8 R5*R8 INTO R4-R5 @V407466 00591000
- AR R5,R1 ADJUST MSG POINTER @V407466 00592000
- LR R4,R5 RESTORE TO R4 @V407466 00593000
- MVC MULTCON(L'MULTCON+L'MULTDEL2),=CL9'DETACHED ' @V407466 00594000
- TM VDDBITS,ATTSYST DETACH FROM SYSTEM ?? @V407490 00595000
- BO MULTMSG5 YES, ISSUE MESSAGE @V407490 00596000
- TM VDDBITS,VDETACH DETACH VIRTUAL? @V407466 00597000
- BZ MULTMSG3 NO, MUST BE DETACH REAL @V407466 00598000
- SLR R2,R2 NO EXTRA PARMS FOR QCNWT @V407466 00599000
- TM VMMLVL2,VMMIMSG USER WANT INFO MSGS @V407466 00600000
- BO MULTMSG4 SEND MSG & FRET BUFFER @V407466 00601000
- FRETBUF LA R0,MULTSIZE SIZE OF BUFFER @V407466 00602000
- L R1,SAVEWRK8 ADDR OF BUFFER TO R1 @V407466 00603000
- CALL DMKFRET RELEASE STORAGE @V407466 00604000
- B VDDEXIT EXIT @V407466 00605000
- SPACE 00606000
- MULTMSG4 CH R7,=H'10' IF > 10 CUU'S - MULTIPLE LINES @V407466 00607000
- BH MANY1 YES, MULTIPLE MSG LINES @V407466 00608000
- MR R6,R8 R7*R8 INTO R6-R7 @V407466 00609000
- LA R0,MULTSIZ1(,R7) + L'DETACHED @V407466 00610000
- LA R3,MULTSIZE SIZE OF MSG BUFFER TO FRET @V407466 00611000
- CALL DMKQCNWT,PARM=NORET+DFRET(,R2) @V407466 00612000
- B VDDEXIT EXIT @V407466 00613000
- SPACE 00614000
- MANY1 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CCU'S @V407466 00615000
- LA R0,MULTSIZ1(,R7) PLUS L'DETACHED @V407466 00616000
- CALL DMKQCNWT,PARM=NORET @V407466 00617000
- B FRETBUF RELEASE MSG BUFFER @V407466 00618000
- SPACE 00619000
- MULTMSG3 CLR R10,R11 DETACH FROM HIMSELF? @V407466 00620000
- BE MULTMSG5 YES, SKIP SHORT MESSAGE @V407466 00621000
- MVI MULTDEL2,BLANK DELIMITER @V407466 00622000
- MVC MULTBY2,=CL3'BY ' CONSTANT 'BY ' @V407466 00623000
- MVC MULTUSE3(L'VMUSER),VMUSER DETACHER @V407466 00624000
- LR R2,R1 SAVE R1 VALUE @V4M0193 00625000
- BAL R5,SWPUSER @V407466 00626000
- LR R1,R2 RESTORE R1 VALUE @V4M0193 00627000
- CH R7,=H'10' IF > 10 CUU'S - MANY MSG LINES @V407466 00628000
- BH MANY2 YES, MANY MSG LINES @V407466 00629000
- MR R6,R8 R7*R8 INTO R6-R7 @V407466 00630000
- LA R0,MULTSIZ4(,R7) MSG LENGTH @V407466 00631000
- CALL DMKQCNWT,PARM=NORET @V407466 00632000
- SWAP DS 0H @V4M0193 00633000
- LR R2,R1 SAVE R1 VALUE @V4M0193 00634000
- BAL R5,SWPCALL SWITCH BACK TO CALLER'S VMBLOK @V4M0193 00635000
- LR R1,R2 RESTORE R1 VALUE @V4M0193 00636000
- SPACE 00637000
- MULTMSG5 EQU * @V407466 00638000
- SLR R7,R7 CLEAR R7 FOR NO. MULTIPLES @V407466 00639000
- IC R7,MULTCUU NO. OF ADDRS IN MSG @V407466 00640000
- MVC MULTUSER(L'VMUSER),CMDUSER USERID @V407466 00641000
- TM VDDBITS,ATTSYST DETACH FROM SYSTEM @V407466 00642000
- BZ MULTMSG6 NO @V407466 00643000
- MVC MULTUSER(L'VMUSER),=CL8'SYSTEM' SYSTEM @V407466 00644000
- MULTMSG6 CH R7,=H'10' IF > 10 CUU'S - MANY MSG LINES @V407466 00645000
- BH MANY3 YES, MANY LINES @V407466 00646000
- MR R6,R8 R7*R8 INTO R6-R7 @V407466 00647000
- LA R0,MULTSIZ6(,R7) + L'DETACHED + L'USERID @V407466 00648000
- CALL DMKQCNWT,PARM=NORET @V407466 00649000
- SYSDET IC R7,MULTCUU NO. OF MULTIPLES IN MSG @V407466 00650000
- TM VDDBITS,NSYSOP DETACH BY SYSTEM OPERATOR @V407466 00651000
- BZ FRETBUF YES, RELEASE STORAGE @V407466 00652000
- MVI MULTDEL3,BLANK DELIMITER @V407466 00653000
- MVC MULTBY,=CL3'BY ' CONSTANT 'BY ' @V407466 00654000
- MVC MULTUSE2(L'VMUSER),VMUSER @V407466 00655000
- LA R2,OPERATOR SYSTEM OPERATOR @V407466 00656000
- CH R7,=H'10' IF > 10 CUU'S MANY MSG LINES @V407466 00657000
- BH MANY4 MULTIPLE LINES @V407466 00658000
- MR R6,R8 R7*R8 INTO R6-R7 @V407466 00659000
- LA R0,MULTSIZ2(,R7) LENGTH @V407466 00660000
- LA R3,MULTSIZE MSG BUFFER SIZE @V407466 00661000
- CALL DMKQCNWT,PARM=NORET+DFRET(,R2) @V407466 00662000
- B VDDEXIT EXIT @V407466 00663000
- SPACE 00664000
- MANY2 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CUU'S @V407466 00665000
- LA R0,MULTSIZ4(,R7) LENGTH @V407466 00666000
- CALL DMKQCNWT,PARM=NORET LAST LINE OF THIS MSG @V407466 00667000
- L R1,SAVEWRK8 MSG BUFFER ADDR @V407466 00668000
- B SWAP NEXT MSG @V407466 00669000
- SPACE 00670000
- MANY3 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CUU'S @V407466 00671000
- LA R0,MULTSIZ6(,R7) + L'DETACHED + L'USERID @V407466 00672000
- CALL DMKQCNWT,PARM=NORET @V407466 00673000
- L R1,SAVEWRK8 MSG BUFFER ADDR @V407466 00674000
- B SYSDET CHECK FOR DET BY SYSTEM OPERATOR @V407466 00675000
- SPACE 00676000
- MANY4 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CUU'S @V407466 00677000
- LA R0,MULTSIZ2(,R7) + L'BY + L'USERID @V407466 00678000
- CALL DMKQCNWT,PARM=NORET ISSUE MSG & RETURN @V407466 00679000
- B FRETBUF RELEASE BUFFER @V407466 00680000
- SPACE 00681000
- MULTLINE LA R0,MAXCUU MAX 10 CUU PER LINE @V407490 00682000
- NEXTLINE CALL DMKQCNWT,PARM=NORET @V407466 00683000
- LA R1,40(,R1) NEXT LINE POINTER @V407466 00684000
- SH R7,=H'10' SUBTRACE 10 @V407466 00685000
- CH R7,=H'10' STILL MORE THAN 10 LEFT @V407466 00686000
- BH NEXTLINE PUT OUT NEXT LINE @V407466 00687000
- MR R6,R8 R7*R8 INTO R6-R7 @V407466 00688000
- BR R5 RETURN TO MAINLINE @V407466 00689000
- DROP R4 @V407466 00690000
- EJECT 00691000
- USING DETMSG,R4 ADDRESSABILITY FOR MSGAREA @V407466 00692000
- TSTRANGE TM VDDBITS,RANGE RANGE BEING PROCESSED @V407466 00693000
- BCR 14,R5 NO, JUST ISSUE ERROR MESSAGE @V407466 00694000
- OI VDDBITS+1,DETERR ISSUE SUCCESSFUL MSG FIRST @V407466 00695000
- STM R5,R6,SAVEWRK5 SAVE R5,R6 TEMPORARILY @V407466 00696000
- LA R6,ONLYERR SET UP RETURN ADDRESS FOR SINGLE @V407490 00697000
- SLR R1,R1 CLEAR R1 @V407466 00698000
- CH R1,RADDR1 SUCCESSFUL MSG PENDING? @V407466 00699000
- BE ONLYERR NO, ISSUE ERROR ONLY @V407466 00700000
- CH R1,RADDR2 FULL RANGE MESSAGE? @V407466 00701000
- BE SINGLE NO, ONLY SINGLE ADDR PENDING @V407466 00702000
- LH R1,RADDR2 SECOND ADDR IN RANGE @V407466 00703000
- BAL R6,CONVERT CONVERT & BUILD MSG @V407466 00704000
- ONLYERR MVI DETMSG,BLANK PROPAGATE BLANKS @V407466 00705000
- MVC DETMSG+1((MULTSIZE*8)-1),DETMSG THROUGH MSGAREA @V407466 00706000
- SLR R5,R5 CLEAR R5 FOR STORE @V407466 00707000
- ST R5,SAVEWRK8 REINITIALIZE RANGE ADDRESSES @V407466 00708000
- OI RAFLG,FRSTHRU TURN ON FLAG @VA11655 00708100
- LM R5,R6,SAVEWRK5 RESTORE R5, R6 @V407466 00709000
- NI VDDBITS+1,X'FF'-DETERR TURN OFF SWITCH @V407466 00710000
- BR R5 RETURN TO MAINLINE @V407466 00711000
- SPACE 2 00712000
- DETMSG DSECT NORMAL RESPONSES FOR DETACH @V407466 00713000
- DETDTYP DS CL4 DEVICE TYPE-NAME @V407466 00714000
- DETDEL1 DS CL1 DELIMITER @V407466 00715000
- DETADD1 DS CL3 CUU @V407466 00716000
- DETDEL2 DS CL1 DELIMITER @V407466 00717000
- DETCON DS CL8 CONSTANT 'DETACHED' @V407466 00718000
- DETDEL3 DS CL1 DELIMITER @V407466 00719000
- DETBY DS CL3 BY + DELIMITER @V407466 00720000
- DETUSER DS CL8 VMUSER @V407466 00721000
- DETSIZE5 EQU *-DETDTYP MSG LENGTH @V407466 00722000
- SPACE 00723000
- ORG DETBY @V407466 00724000
- DETUSER2 DS CL8 USERID OF DETACHEE @V407466 00725000
- DETSIZE2 EQU *-DETDTYP LENGTH @V407466 00726000
- DETDEL4 DS CL1 DELIMITER @V407466 00727000
- DETADD2 DS CL4 VIRTUAL ADDRESS @V407466 00728000
- DETDEL5 DS CL1 DELIMITER @V407466 00729000
- DETSIZE3 EQU *-DETDTYP LENGTH @V407466 00730000
- DETBY2 DS CL3 CONSTANT 'BY ' @V407466 00731000
- DETUSER3 DS CL8 @V407466 00732000
- DETSIZE EQU (*-DETDTYP+7)/8 MSG LENGTH @V407466 00733000
- SPACE 00734000
- ORG DETADD2 @V407466 00735000
- DETBY3 DS CL3 CONSTANT 'BY ' @V407466 00736000
- DETUSER4 DS CL8 USERID @V407466 00737000
- DETSIZE4 EQU *-DETDTYP LENGTH @V407466 00738000
- SPACE 00739000
- ORG DETMSG @V407466 00740000
- RACUU1 DS CL3 1ST RADDR IN RANGE @V407466 00741000
- RADASH DS CL1 DASH @V407466 00742000
- RACUU2 DS CL3 2ND RADDR IN RANGE @V407466 00743000
- RADEL1 DS CL2 DELIMITER @V407466 00744000
- RADET DS CL8 'DETACHED' @V407466 00745000
- RASIZE1 EQU *-RACUU1 MSG LENGTH @V407466 00746000
- SPACE 2 00747000
- DMKVDD CSECT , RE-ENTER PREVIOUS CSECT @V407466 00748000
- SPACE 2 00749000
- *---------------------------------------------------------------------* 00750000
- * CVTRADD - CONVERT DEVICE ADDRESS TO HEXADECIMAL * 00751000
- * ZAPVOLD - REMOVE VOLUME SERIAL FROM REAL DEVICE BLOCK * 00752000
- *---------------------------------------------------------------------* 00753000
- CVTRADD EQU * CONVERT REAL DEVICE ADDRESS @V407466 00754000
- LR R1,R9 ADDR TO R1 @V407466 00755000
- TM VDDBITS,RANGE+MULTR RANGE OR MULTIPLES BEING @V407466 00756000
- BM CVTBH PROCESSED - CONVERT ADDR IN R1 @V407466 00757000
- L R1,DEVADDR OTHERWISE, SINGLE ADDR @V407466 00758000
- CVTBH CALL DMKCVTBH @V407466 00759000
- BR R5 @V407466 00760000
- SPACE 00761000
- ZAPVOLD EQU * REMOVE VOLID FROM RDEVBLOK @V407466 00762000
- L R1,SAVEWRK9 REAL DEVICE BLOCK POINTER - SAVED@V407466 00763000
- USING RDEVBLOK,R1 @V407466 00764000
- MVC RDEVUSER(4),ASYSVM IN USE BY SYSTEM @V407466 00765000
- BR R5 @V407466 00766000
- DROP R1 @V407466 00767000
- EJECT 00768000
- DETSYST EQU * DETACH VOLUME FROM SYSTEM @V407466 00769000
- USING RDEVBLOK,R8 @V407466 00770000
- TM RDEVSTAT,RDEVDED ATTACHED TO A USER ? @V407466 00771000
- BO DEVATTU YES - ERROR @V407466 00772000
- CLI RDEVTYPC,CLASDASD IF IT ISN'T A DASD DEVICE... @V407466 00773000
- BNE INVTYPE ...IT CAN'T BE ATTACHED TO SYSTEM@V407466 00774000
- TM RDEVFLAG,RDEVSYS Is device attached to system? HRC039DK 00774100
- BZ BADSYST Device is not attached to system HRC039DK 00774200
- SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 00775000
- MVC CMDUSER(6),RDEVSER SAVE SERIAL FOR MESSAGES @V407466 00776000
- BAL R5,ZAPVOLD CLEAR VOLID AND RDEVUSER FROM @V407466 00777000
- * RDEVBLOK 00778000
- BAL R5,GETRTYP GET TYPE-NAME IN TO R4 @V407466 00779000
- OI RDEVFLAG,RDEVMOUT INDICATE VOLUME NOT ATTACHED @V407466 00780000
- NI RDEVFLAG,255-RDEVSYS Device detached from sys. HRC039DK 00780100
- TM VDDBITS,MULTR MULTIPLES BEING PROCESSED ?? @V407490 00781000
- BO MULTMSG YES, FORMAT MULTIPLE MSG @V407490 00782000
- TM VDDBITS,RANGE PROCESSING RANGE PER CHANCE ?? @V407490 00783000
- BO RAMSG YES, GO BUILD RANGE MSG @V407490 00784000
- B RESPOND SETUP FOR DETACH RESPONSES @V407466 00785000
- SPACE 4 00786000
- *---------------------------------------------------------------------* 00787000
- * DEDCHAN - ATTACH OR DETACH DEDICATED CHANNEL(S) * 00788000
- * CONTROL TRANSFERS TO THE MODULE "DMKVCHDC" FOR TESTING * 00789000
- * THE AVAILABILITY OF THE CHANNEL AND DEVICES, AND FOR * 00790000
- * THE ACTUAL ATTACH OR DETACH FUNCTIONS. FLAGS AND COMMAND * 00791000
- * LINE DATA ARE PASSED TO DMKVCHDC IN REGISTERS 1-4. * 00792000
- *---------------------------------------------------------------------* 00793000
- SPACE 2 00794000
- DEDCHAN EQU * PROCESSING FOR DEDICATED CHANNELS@V407466 00795000
- LA R0,MULTSIZE SIZE OF WORK AREA @V407490 00796000
- LR R1,R4 LOAD THE ADDRESS OF WORKAREA @V407490 00797000
- CALL DMKFRET GO RELEASE THE WORKAREA @V407490 00798000
- L R1,VDDBITS FLAGS USED WITHIN "DMKVDD" @V407466 00799000
- L R2,DEVADDR BYTE 3 HAS CHANNEL NUMBER @V407466 00800000
- LM R3,R4,CMDUSER USERID WANTING THE CHANNEL @V407466 00801000
- CALL DMKVCHDC @V407466 00802000
- ST R2,SAVER2 SAVE RETURN CODE @V407490 00803000
- B VDDEXIT EXIT TO DMKCFM @V407466 00804000
- EJECT 00805000
- *---------------------------------------------------------------------* 00806000
- * FREUSER AND SWPUSER - UNLOCK USERID AND SWAP VMBLOKS * 00807000
- * LOKUSER AND SWPCALL - LOCK A USERID AND SWAP VMBLOKS * 00808000
- *---------------------------------------------------------------------* 00809000
- SPACE 2 00810000
- FREUSER EQU * UNLOCK ATTACHEE'S USERID @V407466 00811000
- LA R1,VMUSER @V407466 00812000
- CALL DMKLOCKD DIRECTORY UNLOCK SUBROUTINE @V407466 00813000
- SWPCALL EQU * GO BACK TO CALLER'S VMBLOK @V407466 00814000
- L R1,SAVER11 GET CALLER'S VMBLOK ADDRESS @V407508 00815000
- SWTCHVM SWITCH TO CALLER'S VMBLOK @V4M0193 00816000
- BR R5 ...RETURN TO CALLER @V407466 00817000
- SPACE 2 00818000
- LOKUSER EQU * THROW A LOCK ON DEVICE BLOCKS @V407466 00819000
- LA R1,VMUSER POINT TO THE USERID @V407466 00820000
- CALL DMKLOCKQ ...AND LOCK IT @V407466 00821000
- LA R0,L'VMUSER LENGTH OF USERID IN R1 @V407466 00822000
- CALL DMKSCNAU USER STILL LOGGED ON? @V407466 00823000
- BNZ NOTLOGD NO - ERROR @V407466 00824000
- BR R5 @V407466 00825000
- SPACE 2 00826000
- SWPUSER EQU * SWAP TO TARGET USER'S VMBLOK @V407466 00827000
- LR R1,R10 GET USER'S VMBLOK ADDRESS @V407508 00828000
- SWTCHVM SWITCH TO SPECIFIED USER @V4M0193 00829000
- BR R5 @V407466 00830000
- SPACE 3 00831000
- *---------------------------------------------------------------------* 00832000
- * GETRDEV, GETRTYP - GET REAL DEVICE BLOCK + TYPE NAME * 00833000
- *---------------------------------------------------------------------* 00834000
- SPACE 2 00835000
- GETRDEV EQU * LOCATE REAL DEVICE BLOCK @V407466 00836000
- TM VDDBITS,RANGE+MULTR RANGE OR MULTIPLES @V407466 00837000
- BM GETRDEV2 FIND THE RDEVBLOK @V407466 00838000
- L R1,DEVADDR REAL DEVICE ADDRESS @V407466 00839000
- GETRDEV2 CALL DMKSCNRU ...FIND THE RDEVBLOK @V407466 00840000
- BNZ UNKNOWN REAL DEVICE DOES NOT EXIST @V407466 00841000
- ST R8,SAVEWRK9 SAVE THE RDEVBLOK POINTER @V407466 00842000
- BR R5 @V407466 00843000
- SPACE 00844000
- GETRTYP EQU * GET EBCDIC TYPE-NAME OF REAL @V407466 00845000
- * DEVICE 00846000
- L R8,SAVEWRK9 RDEVBLOK ADDRESS @V407466 00847000
- CALL DMKSCNRN ...GET IT'S TYPE-NAME @V407466 00848000
- LR R3,R1 ...INTO R3 @V407466 00849000
- BR R5 @V407466 00850000
- EJECT 00851000
- * 00852000
- * THIS IS THE SAME BRANCH TABLE USED BY ATTACH; THE EMPTY BRANCH 00853000
- * ENTRIES ARE NOT USED BY DETACH. 00854000
- * 00855000
- SPACE 2 00856000
- ERRTABL DS 0F @V407466 00857000
- B NODRAIN 8 @V407466 00858000
- B DEVOFFL 12 @V407466 00859000
- B SHRCHEK 16 @V407466 00860000
- B DEVOWND 20 @V407466 00861000
- DC F'0' 24 @V407466 00862000
- B INVOPT 28 HRC003DK 00863490
- DC F'0' 32 @V407466 00864000
- B INVADD2 36 @V407466 00865000
- DC F'0' 40 @V407466 00866000
- B NOTLOGD 44 @V407466 00867000
- B INVUSID 48 @V407466 00868000
- B INVADD1 52 @V407466 00869000
- DC F'0' 56 @V407466 00870000
- DC F'0' 60 @V407466 00871000
- DC F'0' 64 @V407466 00872000
- B BADUSER 68 @V407466 00873000
- B BADTRACE 72 @VA09655 00873500
- SPACE 2 00874000
- ERR16 LA R2,RC16 SHARED DEVICE @V407466 00875000
- B ERROR FORMAT ERROR MESSAGE @V407466 00876000
- SPACE 2 00877000
- ERR68 LA R2,RC68 BADUSER @V407466 00878000
- ERROR LA R7,SAVEWRK2 ESTABLISH ADDRESSABILITY @V407466 00879000
- USING WRK2,R7 FOR ERROR MESSAGES @V407466 00880000
- B ERRTABL-8(R2) BRANCH TO APPROPRIATE ERROR @V407466 00881000
- * ROUTINE 00882000
- SPACE 2 00883000
- RC16 EQU 16 SHARED DEVICE @V407466 00884000
- RC68 EQU 68 BADUSER @V407466 00885000
- EJECT 00886000
- INVOPT EQU * HRC003DK 00886200
- * R0 & R1 contain LENGTH already HRC003DK 00886400
- LA R2,EMSG003 HRC003DK 00886600
- B MSGSEND3 HRC003DK 00886800
- NOTLOGD EQU * USERID NOT LOGGED ON @V407466 00887000
- BAL R5,SWPCALL MAKE SURE WE HAVE RIGHT TIMER @VA10357 00887500
- LA R1,CMDUSER USERID @V407466 00888000
- LA R0,L'VMUSER DATA LENGTH @V407466 00889000
- LA R2,EMSG045 MSG= DMKVDD045E @V407490 00890000
- B MSGSEND3 GO SEND MSG @V407490 00891000
- SPACE 2 00892000
- INVTYPE EQU * @V407466 00893000
- BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00894000
- BAL R5,CVTRADD GET REAL ADDRESS @V407466 00895000
- STCM R1,B'0111',SAVEWRK2 SAVE IN SAVEWRK2 @V407466 00896000
- LA R0,L'SAVEWRK2-1 DATA LENGTH @V407466 00897000
- LA R2,EMSG006 MSG= DMKVDD006E @V407490 00898000
- B MSGSEND ISSUE MESSAGE @V407466 00899000
- SPACE 2 00900000
- DEVATTU EQU * TYPE RADDR ATTACHED TO USERID @V407466 00901000
- BAL R5,TSTRANGE SEE IF RANGE PROCESSING @V407466 00902000
- LA R2,EMSG140 MSG= DMKVDD140E @V407490 00903000
- L R8,SAVEWRK9 RDEVBLOK ADDRESS @V407466 00904000
- L R8,RDEVUSER-RDEVBLOK(R8) USER'S VMBLOK @V407466 00905000
- MVC CMDUSER(L'VMUSER),VMUSER-VMBLOK(R8) USERID @V407466 00906000
- BAL R6,USERDEV SETUP DATA STRING FOR 'ERMSG' @V407466 00907000
- B MSGSEND ISSUE ERROR MESSAGE @V407466 00908000
- SPACE 2 00909000
- INVUSID EQU * USERID MISSING OR INVALID @V407466 00910000
- LA R2,EMSG020 MSG= DMKVDD020E @V407490 00911000
- B MSGONLY @V407466 00912000
- SPACE 2 00913000
- INVADD1 EQU * FIRST ADDR MISSING OR INVALID @V407466 00914000
- BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00915000
- TM VDDBITS,CHANNEL MESSAGE FOR CAHNNEL COMMAND @V407466 00916000
- BZ VDD022A BRANCH IF NOT @V407490 00917000
- LA R2,EMSG034 LOAD CHANNEL ERROR CODE @V407490 00918000
- B MSGONLY . . . . @V407466 00919000
- SPACE 00920000
- INVADD2 LA R2,EMSG022 MSG= DMKVDD022E @V407490 00921000
- B MSGONLY @V407466 00922000
- SPACE 00923000
- VDD021 BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00924000
- LA R2,EMSG021 RADDR MISSING OR INVALID @V407490 00925000
- VDDMSG BAL R5,CVTRADD GET REAL ADDRESS @V407490 00926000
- STCM R1,B'0111',SAVEWRK2 SAVE IN SAVEWRK2 @V407490 00927000
- LA R0,L'SAVEWRK2-1 GET DATA LENGTH @V407490 00928000
- TM VDDBITS,RANGE PROCESSING RANGE?? @VA14197 00929100
- BO MSGSEND YES, SEND MSG AND RETURN TO VDD @V407490 00930000
- B MSGSEND2 JUST SEND MESSAGE @V407490 00931000
- SPACE 2 00932000
- VDD022 EQU * @V407490 00933000
- LA R2,EMSG022 MSG NUMBER @V407490 00934000
- B VDDMSG SET UP FOR MSG @V407490 00935000
- BADTRACE EQU * TRACING I/O @VA09655 00935100
- MVC SAVEWRK2(32),TRACEMSG MOVE IN MESSAGE @VA14558 00935210
- LA R0,L'TRACEMSG LENGTH OF MSG @VA09655 00935300
- LA R2,EMSG273 MSG NUMBER @VA09655 00935400
- B MSGSEND SEND MSG @VA09655 00935500
- TRACEMSG DC C'DETACH REJ VIRT MACH TRACING I/O' @VA14558 00935610
- EJECT 00936000
- VDD022A EQU * @V407490 00937000
- LA R1,CMDUSER GET INVALID PARM @V407490 00938000
- LA R0,L'VMUSER GET DATA LENGTH @V407490 00939000
- LA R2,EMSG022 MSG NUMBER @V407490 00940000
- B MSGSEND3 GO SEND MSG @V407490 00941000
- SPACE 2 00942000
- SPACE 2 00943000
- INVADDF1 EQU * DEV ADDR DOES NOT EXIST @V407466 00944000
- L R9,SAVEWRK7 RESTORE R9 @V407466 00945000
- BAL R5,FREUSER UNLOCK USER'S CONTROL BLOCKS @V407466 00946000
- UNKNOWN EQU * DEV ADDR DOES NOT EXIST @V407466 00947000
- BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00948000
- BAL R5,CVTRADD CONVERT ADDRESS TO HEX @V407466 00949000
- STCM R1,B'0111',SAVEWRK2 @V407466 00950000
- LA R0,L'SAVEWRK2-1 DATA LENGTH @V407466 00951000
- LA R2,EMSG040 MSG= DMKVDD040E @V407490 00952000
- B MSGSEND GO BUILD + TYPE MESSAGE @V407466 00953000
- SPACE 2 00954000
- DEVOFFL EQU * TYPE RADDR OFFLINE @V407466 00955000
- CLI RDEVTYPC,CLASDASD DASD TYPE ?? @V407490 00956000
- BNE DEVOFFLI NO @V407490 00957000
- CLI RDEVTYPE,TYP2305 HOW ABOUT A DRUM ??? @V407490 00958000
- BNE DEVOFFLI NO @V407490 00959000
- TM RDEVADD+1,X'07' BASE ADDRESS ?? @V407490 00960000
- BNZ VDD021 NO, DETACHING EXPOSURE,BAD NEWS @V407490 00961000
- DEVOFFLI EQU * @V407490 00962000
- BAL R5,TSTRANGE SEE IF RANGE SPECIFIED @V407466 00963000
- LA R2,EMSG046 MSG= DMKVDD046E @V407490 00964000
- B TYPRADD GO BUILD VARIABLE STRING @V407466 00965000
- SPACE 00966000
- BADSYST EQU * 00966100
- MVC CMDUSER,=C'SYSTEM ' Specify userid as SYSTEM HRC039DK 00966200
- BADUSER EQU * TYPE RADDR NOT ATTACHED TO USERID@V407466 00967000
- BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00968000
- BAL R6,USERDEV SET UP 'TYPE RADDR USERID' STRING@V407466 00969000
- LA R2,121(,0) MSG= DMKVDD121E @V407466 00970000
- B MSGSEND @V407466 00971000
- SPACE 2 00972000
- DEVOWND EQU * DASD RADDR CP OWNED @V407466 00973000
- BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00974000
- BAL R5,CVTRADD CONVERT ADDRESS @V407466 00975000
- STCM R1,B'0111',SAVEWRK2 @V407466 00976000
- LA R0,L'SAVEWRK2-1 DATA LENGTH @V407466 00977000
- LA R2,EMSG123 MSG= DMKVDD123E @V407490 00978000
- B MSGSEND @V407466 00979000
- SPACE 2 00980000
- DEVSHRD EQU * DASD RADDR IN USE BY NNN USERS @V407466 00981000
- BAL R5,CVTRADD CONVERT ADDRESS @V407466 00982000
- STCM R1,B'0111',SAVEWRK2 SAVE IN MESSAGE @V407466 00983000
- MVI DELIM1,BIN0 DELIMITER @V407466 00984000
- LM R1,R2,SAVEWRK3 SAVE USERID SINCE DESTROYED @V407466 00985000
- STM R1,R2,SAVEWRK5 WHEN MSG IS BUILT @V407466 00986000
- SLR R1,R1 CLEAR FOR NEXT LOAD HALF @V407466 00987000
- LH R1,RDEVLNKS-RDEVBLOK(,R8) NO. OF USERS @V407466 00988000
- CALL DMKCVTBD CONVERT TO DECIMAL @V407466 00989000
- STCM R1,B'0111',SAVEWRK3 SAVE IN MSG BUFFER @V407466 00990000
- LA R0,DETSIZE1 DATA LENGTH @V407466 00991000
- LA R2,EMSG124 MSG= DMKVDD124E @V407490 00992000
- B MSGSEND ISSUE ERROR MESSAGE @V407466 00993000
- SPACE 00994000
- SHRCHEK EQU * CHECK DIFFERENT VARIETIES OF @V407466 00995000
- * 'SHARED' 00996000
- BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00997000
- L R8,SAVEWRK9 GET RDEVBLOK ADDRESS @V407466 00998000
- USING RDEVBLOK,R8 @V407466 00999000
- CLI RDEVTYPC,CLASDASD IS IT DASD DEVICE ? @V407466 01000000
- BE DEVSHRD YES - ACTUAL LINK USAGE @V407466 01001000
- EMSG143E LA R2,EMSG143 MSG = DMKVDD143E @VA07232 01002000
- B TYPRADD @V407466 01004000
- SPACE 01005000
- AIF (NOT &DEDCH).NOTDED3 **AIF** @V407466 01006000
- CHANDED EQU * ERROR FOR DEDICATED CHANNELS @V407466 01007000
- LA R7,SAVEWRK2 GET ADDRESSABILITY TO MSG AREA @VA07240 01007100
- L R9,SAVEWRK7 RESTORE R9 @V407466 01008000
- BAL R5,FREUSER UNLOCK USER'S CONTROL BLOCKS @V407466 01009000
- BAL R5,TSTRANGE DETERMINE IF RANGE PROCESSING @V407466 01010000
- USING VCHBLOK,R6 @V407466 01011000
- LH R1,VCHADD GET ADDRESS OF VIRTUAL CHANNEL @V407466 01012000
- SRL R1,8(0) ... @V407466 01013000
- CALL DMKCVTBD CONVERT TO DECIMAL @V407466 01014000
- DROP R6 @V407466 01015000
- MVI SAVEWRK4,BIN0 DELIMITER @V407466 01016000
- STCM R1,B'0011',DETCHAN STORE CHANNEL NUMBER @V407466 01017000
- TM DETCHAN,HEX0F CHANNEL NUMBER > 9 @V407466 01018000
- BNZ SKIPNEXT YES - LEAVE CHANNEL NUMBER ALONE @V407466 01019000
- MVI DETCHAN,BIN0 CLEAR HI ORDER BYTE @V407466 01020000
- SKIPNEXT BAL R5,GETRDEV GET REAL DEVICE BOLCKS @V407466 01021000
- BAL R5,GETRTYP GO GET THE TYPE OF DEVICE @V407466 01022000
- BAL R5,CVTRADD ... @V407466 01023000
- ST R3,SAVEWRK2 SAVE IT. @V407466 01024000
- ST R1,SAVEWRK3 STORE DEVICE ADDRESS @V407466 01025000
- MVI SAVEWRK3,BIN0 DELIMITER @V407466 01026000
- LA R0,DETSIZE7 MESSAGE LENGTH @V407466 01027000
- LA R2,EMSG135 YES, MSG= DMKVDD135E @V407490 01028000
- B MSGSEND @V407466 01029000
- .NOTDED3 ANOP 01030000
- SPACE 01031000
- NODRAIN EQU * TYPE RADDR NOT DRAINED @V407466 01032000
- LA R2,EMSG142 MSG= DMKVDD142E @V407490 01033000
- TYPRADD EQU * @V407466 01034000
- LM R0,R1,SAVEWRK3 SAVE USERID SINCE FIELD DESTROYED@V407466 01035000
- STM R0,R1,SAVEWRK5 WHEN MSG BUILT @V407466 01036000
- BAL R5,GETRTYP @V407466 01037000
- BAL R5,CVTRADD @V407466 01038000
- ST R3,SAVEWRK2 PLACE 'TYPE' IN MESSAGE @V407466 01039000
- ST R1,SAVEWRK3 @V407466 01040000
- MVI SAVEWRK3,BIN0 DELIMITER @V407466 01041000
- LA R0,L'SAVEWRK2+L'SAVEWRK3 DATA LENGTH @V407466 01042000
- B MSGSEND ISSUE MESSAGE @V407466 01043000
- SPACE 2 01044000
- MSGONLY EQU * NO EXTRA DATA FOR MESSAGE @V407466 01045000
- SLR R1,R1 ZERO R1 @V407466 01046000
- SLR R0,R0 ZERO R0 @V407466 01047000
- B MSGSEND2 ISSUE ERROR MESSAGE @V407466 01048000
- SPACE 2 01049000
- MSGSEND EQU * BUILD + TYPE ERROR MESSAGE @V407466 01050000
- ICM R2,B'1000',=X'80' RETURN TO DMKVDD AFTER MSG @V407466 01051000
- * RETURN 01052000
- MSGSEND2 LA R1,SAVEWRK2 START OF MOST DATA @V407466 01053000
- MSGSEND3 EQU * @V407490 01054000
- LTR R2,R2 ARE WE GOING TO RETURN ??? @V407490 01055000
- BM WILLRET YES, WE SHALL RETURN.. @V407490 01056000
- ICM R2,B'1000',=X'40' NOT RETURNING, SET UP FRET @V407490 01057000
- LA R3,MULTSIZE SIZE OF THE WORKAREA @V407490 01058000
- SLL R3,24 GET IT TO THE HI ORDER @V407490 01059000
- OR R3,R4 LOAD IN THE ADDRESS @V407490 01060000
- WILLRET EQU * @V407490 01061000
- ICM R0,B'1110',DMKVDD+3 MODULE IDENTIFIER @V407466 01062000
- CALL DMKERMSG GO DO IT @V407466 01063000
- ST R2,SAVER2 SAVE ERROR NUMBER @V407490 01064000
- CH R2,=H'140' ERROR MSG 140E? @V407466 01065000
- BE MVCUSER RESTORE USERID TO ORIG. LOC. @V407466 01066000
- CH R2,=H'121' ERROR MSG 121E? @V407466 01067000
- BE MVCUSER RESTORE USERID TO ORIG. LOC. @V407466 01068000
- CH R2,=H'124' ERROR MSG 124E? @V407466 01069000
- BE MVCUSER2 RESTORE USERID @V407466 01070000
- CH R2,=H'142' ERROR MSG 142E? @V407466 01071000
- BE MVCUSER2 RESTORE USERID @V407466 01072000
- CH R2,=H'143' ERROR MSG 143E? @V407466 01073000
- BE MVCUSER2 RESTORE USERID @V407466 01074000
- CH R2,=H'46' ERROR MSG 046E? @V407466 01075000
- BE MVCUSER2 RESTORE USERID @V407466 01076000
- CH R2,=H'273' ERROR MSG 273E ? @VA09655 01076300
- BE CLEANXT RETURN TO CALLER @VA09655 01076700
- CONTINUE TM VDDBITS,MULTR PROCESSING MULTIPLE ADDRS @V407466 01077000
- BO MULTCONT CONTINUE PROCESSING MULTIPLES @V407466 01078000
- TM VDDBITS,RANGE PROCESSING RANGE @V407466 01079000
- BNO CLEANXT NO, CLEANUP AND GET OUT @V407466 01080000
- B ENDRANGE SEE IF MORE RANGE TO PROCESS @V407466 01081000
- SPACE 01082000
- MVCUSER MVC SAVEWRK3(8),SAVEWRK4+1 RESTORE USERID TO ORIG. @V407466 01083000
- * LOC. 01084000
- B CONTINUE PROCEED WITH NEXT ADDR @V407466 01085000
- SPACE 01086000
- MVCUSER2 LM R1,R2,SAVEWRK5 RESTORE USERID @V407466 01087000
- STM R1,R2,SAVEWRK3 TO ORIGINAL LOCATION @V407466 01088000
- B CONTINUE AND CONTINUE TO PROCESS @V407466 01089000
- EJECT 01090000
- SPACE 2 01091000
- *---------------------------------------------------------------------* 01092000
- * USERDEV - BUILD STRING FOR DMKERMSG = "TYPE RADDR USERID" * 01093000
- *---------------------------------------------------------------------* 01094000
- SPACE 2 01095000
- USERDEV EQU * @V407466 01096000
- BAL R5,GETRTYP GET 'TYPE' IN GPR 4 @V407466 01097000
- BAL R5,CVTRADD GET 'RADD' IN GPR 1 @V407466 01098000
- MVC SAVEWRK5+1(L'VMUSER),CMDUSER SLIDE USER OVER @V407490 01099000
- MVI SAVEWRK5,BIN0 LAST DELIMITER @V407466 01100000
- ST R1,SAVEWRK4 'RADD' @V407466 01101000
- MVI SAVEWRK4,BIN0 FIRST DELIMITER @V407466 01102000
- ST R3,SAVEWRK3 'TYPE' @V407466 01103000
- MVC SAVEWRK2(20),SAVEWRK3 LEFT-JUSTIFY ENTIRE STRING@V407466 01104000
- LA R0,DETSIZE6 DATA LENGTH @V407466 01105000
- BR R6 RETURN @V407466 01106000
- SPACE 3 01106010
- RAFLG DC X'00' RANGE FLAG @VA11236 01106020
- FRSTHRU EQU X'80' FIRST TIME THRU THE RANGE @VA11236 01106030
- SPACE 2 01107000
- EJECT 01108000
- LTORG @V407466 01109000
- EJECT 01110000
- COPY SAVE @V407466 01111000
- EJECT 01112000
- *----------------------------* 01113000
- * 01114000
- VDDBITS EQU SAVEWRK1 FLAGS USED WITHIN VDD @V407466 01115000
- MULTCUU EQU SAVEWRK1+2 NO. MULTIPLE ADDRS IN MSG @V407466 01116000
- DEVADDR EQU SAVEWRK2 REAL/VIRTUAL DEVICE ADDRESS @V407466 01117000
- CMDUSER EQU SAVEWRK3 AND SAVEWRK4 - USERID @V407466 01118000
- VIRTADD EQU SAVEWRK5 VIRTUAL DEVICE ADDRESS @V407466 01119000
- ENDRADDR EQU SAVEWRK1+2 RANGE RADDR @V407466 01120000
- RADDR1 EQU SAVEWRK8 FIRST ADDR IN RANGE @V407466 01121000
- RADDR2 EQU SAVEWRK8+2 SECOND ADDR IN RANGE @V407466 01122000
- EMSG003 EQU 3 HRC003DK 01122500
- EMSG006 EQU 6 @V407490 01123000
- EMSG020 EQU 20 @V407490 01124000
- EMSG021 EQU 21 @V407490 01125000
- EMSG022 EQU 22 @V407490 01126000
- EMSG034 EQU 34 @V407490 01127000
- EMSG040 EQU 40 @V407490 01128000
- EMSG045 EQU 45 @V407490 01129000
- EMSG046 EQU 46 @V407490 01130000
- EMSG123 EQU 123 @V407490 01131000
- EMSG124 EQU 124 @V407490 01132000
- EMSG135 EQU 135 @V407490 01133000
- EMSG140 EQU 140 @V407490 01134000
- EMSG142 EQU 142 @V407490 01135000
- EMSG143 EQU 143 @V407490 01136000
- EMSG273 EQU 273 @VA09655 01136500
- FULLEN EQU 48 @V407490 01137000
- MAXCUU EQU 40 @V407490 01138000
- COUNT4 EQU 4 @V407490 01139000
- COUNT28 EQU 28 @V407490 01140000
- SPACE 01141000
- * 01142000
- * FLAGS DEFINED IN "VDDBITS" : 01143000
- * 01144000
- CHANNEL EQU X'80' "CHANNEL" OPTION SPECIFIED @V407466 01145000
- NSYSOP EQU X'40' CALLER IS NOT SYSTEM OPERATOR @V407466 01146000
- MULTR EQU X'20' DETACH VIRTUAL DEVICE @V407466 01147000
- ATTSYST EQU X'10' ATTACH/DETACH TO/FROM "SYSTEM" @V407466 01148000
- ATTREAD EQU X'08' ATTACH "R/O" @V407466 01149000
- RANGE EQU X'04' RANGE PROCESSING @V407466 01150000
- VDETACH EQU X'02' DETACH VIRTUAL @V407466 01151000
- DED2305 EQU X'01' ATTACH/DEDICATE MULTI EXP DEVICE @V407466 01152000
- * 01153000
- * FLAGS DEFINED IN "VDDBITS" : 01154000
- * 01155000
- DETACH EQU X'08' DETACH COMMAND @V407466 01156000
- DETERR EQU X'02' ERROR MESSAGE INDICATOR @V407466 01157000
- TPNORUN EQU X'01' LEAVE OPTION SPECIFIED HRC003DK 01157500
- SPACE 01158000
- BIN0 EQU X'00' MESSAGE DELIMITER @V407466 01159000
- BLANK EQU X'40' BLANK @V407466 01160000
- HEX0F EQU X'0F' @V407466 01161000
- DASH EQU C'-' RANGE DELIMITER @V407466 01162000
- SPACE 2 01163000
- MDSECT DSECT DSECT FOR MULTIPLE ADDRESSES @V407466 01164000
- MULTADD DS F MULTIPLE ADDRESS @V407466 01165000
- DS 47F UP TO 48 CUU ON ONE COMMAND @V407466 01166000
- DS 4D @V407466 01167000
- MULTSIZE EQU (*-MULTADD)/8 LENGTH OF BUFFER IN DOUBLEWORDS @V407466 01168000
- SPACE 2 01169000
- ORG MULTADD OVERLAY @V407466 01170000
- MULTCON DS CL8 CONSTANT 'DETACHED' @V407466 01171000
- MULTSIZ1 EQU *-MULTCON L'DETACHED @V407466 01172000
- MULTDEL2 DS CL1 DELIMITER @V407466 01173000
- MULTUSER DS CL8 USERID @V407466 01174000
- MULTSIZ8 EQU *-MULTDEL2 MSG LENGTH @V407466 01175000
- MULTSIZ6 EQU *-MULTCON L'DETACHED + L'DELIM +L'USERID @V407466 01176000
- MULTDEL3 DS CL1 DELIMITER @V407466 01177000
- MULTBY DS CL3 CONSTANT @V407466 01178000
- MULTUSE2 DS CL8 USERID @V407466 01179000
- MULTSIZ2 EQU *-MULTCON MESSAGE LENGTH @V407466 01180000
- MULTSIZ3 EQU *-MULTDEL2 MESSAGE LENGTH @V407466 01181000
- SPACE 2 01182000
- ORG MULTUSER @V407466 01183000
- MULTBY2 DS CL3 CONSTANT 'BY ' @V407466 01184000
- MULTUSE3 DS CL8 USERID @V407466 01185000
- MULTSIZ4 EQU *-MULTCON MSG LENGTH @V407466 01186000
- SPACE 01187000
- ORG MULTADD @V407466 01188000
- MULTADDR DS CL3 MULTIPLE ADDR @V407466 01189000
- MULTDEL1 DS CL1 DELIMITER @V407466 01190000
- SPACE 01191000
- WRK2 DSECT ERROR MESSAGE DSECT @V407466 01192000
- DETADD DS XL3 DASD RADDR IN USE BY NNN USERS @V407466 01193000
- DELIM1 DS X MSG DELIMITER @V407466 01194000
- DETNNN DS XL3 NNN USERS @V407466 01195000
- DETSIZE1 EQU *-DETADD MSG LENGTH @V407466 01196000
- DS XL6 RESERVED @V407466 01197000
- DETUSE DS CL4 USERID @V407466 01198000
- DETSIZE6 EQU *-DETADD MSG LENGTH @V407466 01199000
- ORG DETADD @V407466 01200000
- DS CL9 @V407466 01201000
- DETCHAN DS CL2 CHANNEL NUMBER @V407466 01202000
- DETSIZE7 EQU (*-DETADD) MSG LENGTH @V407466 01203000
- EJECT 01204000
- COPY EQU @V407466 01205000
- COPY DEVTYPES @V407466 01206000
- PSA @V407466 01207000
- COPY VMBLOK @V407466 01208000
- COPY RBLOKS @V407466 01209000
- COPY VBLOKS @V407466 01210000
- COPY IOBLOKS @V407466 01211000
- VDDLOK DSECT , DSECT FOR EXPANDED IOBLOK @V407466 01212000
- DS (IOBSIZE)D @V407466 01213000
- VDDLCCW DS 5D SEEK,SEARCH,TIC,READ,SENSE @V407466 01214000
- VDDLCNT DS 1D SEEK AND SEARCH ARGS @V407466 01215000
- VDDLBUF DS 10D 80-BYTE LABEL-RECORD BUFFER @V407466 01216000
- VDDLSNS DS 3D 24-BYTE SENSE AREA @V407466 01217000
- VDDLLEN EQU (*-VDDLOK)/8 BLOCK LENGTH IN DBL-WDS @V407466 01218000
- SPACE 01219000
- DMKVDD CSECT , RE-ENTER MAIN CSECT @V407466 01220000
- EJECT 01221000
- COPY ALLOC @V407466 01222000
- COPY UDIRECT @V407466 01223000
- END DMKVDD 01224000
ibm/vm370-lib/cp/dmkvdd.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator