CQP TITLE 'DMKCQP (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
*. 00003000
* 00004000
* MODULE NAME - 00005000
* DMKCQP 00006000
* 00007000
* FUNCTION - 00008000
* TO RETURN TO THE REQUESTOR INFORMATION FOR 00009000
* THE QUERY PAGING, PRIORITY, SYSTEM, LINKS, DUMP, HOLD, REAL, 00010000
* FREE, PROCESSOR, ALL, OR TERMINAL COMMAND. 00011000
* 00012000
* ATTRIBUTES - 00013000
* REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
* 00015000
* ENTRY POINTS - 00016000
* DMKCQPRV - THIS IS THE ONLY ENTRY POINT IN THIS ROUTINE. 00017000
* 00018000
* 00019000
* ENTRY CONDITIONS - 00020000
* GPR6 - BRANCH TABLE INDEX VALUE 00021000
* GPR9 - ADDRESS OF THE COMMAND LINE BUFFER 00022000
* GPR11 - ADDRESS OF THE VMBLOK 00023000
* GPR12 - ADDRESS OF THE ENTRY POINT 00024000
* GPR13 - ADDRESS OF THE STANDARD SAVE AREA 00025000
* 00026000
* EXIT CONDITIONS - 00027000
* NORMAL - 00028000
* GPR2 = 0 00029000
* 00030000
* ERROR - 00031000
* GPR2 = ERROR MESSAGE CODE NUMBER 00032000
* 00033000
* CALLS TO OTHER ROUTINES - 00034000
* DMKSCNFD - TO LOCATE THE NEXT ARGUMENT IN THE COMMAND BUFFER 00035000
* DMKSCNAU - TO FIND THE VMBLOK FOR A SPECFIC USERID 00036000
* DMKSCNVU - TO FIND CONTROL BLOKS FOR A VIRTUAL DEVICE 00037000
* DMKSCNRU - TO FIND CONTROL BLOKS FOR A REAL DEVICE 00038000
* DMKSCNRD - GET ADDRESS OF REAL DEVICE. 00039000
* DMKSCNRA - TO GET CCU ADDRESS OF REAL DEVICE 00039100
* DMKSCNRN - TO GET THE NAME OF THE DEVICE. 00040000
* DMKSCNVD - GET THE VIRTUAL DEVICE ADDRESS. 00041000
* DMKCVTHB - TO CONVERT HEXADECIMAL ADDRESS TO BINARY 00042000
* DMKCVTDB - TO CONVERT A DECIMAL NUMBER TO BINARY. 00043000
* DMKCVTBD - TO CONVERT A BINARY NUMBER TO DECIMAL 00044000
* DMKCVTBH - TO CONVERT A BINARY NUMBER TO HEXADECIMAL 00045000
* DMKFREE - TO OBTAIN MEMORY FROM FREE STORAGE 00046000
* DMKFRET - TO RETURN MEMORY TO FREE STORAGE 00047000
* DMKQCNWT - TO OUTPUT MESSAGES TO THE TERMINAL 00048000
* DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL. 00049000
* DMKRSPUR - TO FORMAT ACTIVE FILE MESSAGE 00050000
* DMKCFCSC - SCAN OPERAND FOR RANGE OF ADDRESSES 00050100
* 00051000
*EXTERNAL REFERENCES - 00052000
* DMKSYSMA - MAXIMUM NUMBER USERS 00053000
* DMKSCHPG - PAGE WAIT THRESHOLD 00054000
* DMKSYSRM - REAL MEMORY SIZE 00055000
* DMKRIORN - TABLE OF 370X CONTROL UNITS 00056000
* 00057000
* TABLES/WORKAREAS - 00058000
* NONE 00059000
* 00060000
* REGISTER USAGE - 00061000
* GPR0 - LENGTH OF ARGUMENT IN LINE BUFFER(RETURNED BY DMKSCNFD 00062000
* GPR1 - ADDRESS OF NEXT ARGUMENT(RETURNED BY DMKSCNFD) 00063000
* GPR2 - PARAMETERS PASSED TO CALLED ROUTINES 00064000
* GPR3 - WORK REG AND INDEX FOR BXLE'S 00065000
* GPR4 - WORK REG AND INCREMENT REG FOR BXLE'S 00066000
* GPR5 - WORK REGISTER AND COMPARAND REGISTER FOR BXLE'S. 00067000
* GPR6 - ADDRESS OF RCHBLOK OR VCUBLOK 00068000
* GPR7 - ADDRESS OF RCUBLOK OR VCUBLOK 00069000
* GPR8 - ADDRESS OF RDEVBLOK OR VDEVBLOK 00070000
* GPR9 - ADDRESS OF COMMAND LINE BUFFER 00071000
* GPR10 - WORK REGISTER 00072000
* GPR11 - ADDRESS OF THE VMBLOK 00073000
* GPR12 - MODULE BASE REGISTER 00074000
* GPR13 - SAVEAREA BASE 00075000
* GPR14 - LINKAGE REGISTER 00076000
* GPR15 - LINKAGE REGISTER 00077000
* 00078000
* 00079000
EJECT 00082000
* COMMAND FORMAT - 00083000
* 00084000
* CLASS B 00085000
* +---------+---------------------+ 00086000
* | QUERY | SYSTEM RADDR | 00087000
* | Q | | 00088000
* | | LINKS VADDR | 00089000
* | | | 00090000
* | | DASD VOLID | 00091000
* | | TDSK | 00092000
* | | | 00093000
* | | DASD ACTIVE | 00094000
* | | TAPE OFFLINE | 00095000
* | | LINES FREE | 00096000
* | | UR ATTACH | 00097000
* | | ALL ALL | 00098000
* | | GRAF | 00099000
* | | STORAGE | 00100000
* | | PROCESSOR | 00100100
* | | RADDR | 00101000
* | | RADDR1-RADDR2 | 00101100
* +---------+---------------------+ 00102000
* 00103000
* 00104000
* OPERATION - 00105000
* 00106000
* 1. ISSUE SVC 16 TO RETURN THE SAVEAREA, THUS, WHEN EXIT 00107000
* WILL RETURN DIRECTLY TO DMKCFM COMMAND PROCESSING 00108000
* INSTEAD OF DMKCFMQU. 00109000
* 2. THE PROPER ROUTINE IS ENTERED VIA A BRANCH TABLE. 00110000
* REGISTER 6 IS SET UP BY DMKCFMQU TO INDEX TO THE 00111000
* PROPER BRANCH INSTRUCTION. 00112000
* 3. EACH ROUTINE SCANS THE APPROPRIATE CONTROL BLOKS TO 00113000
* PICK UP THE INFORMATION NEEDED FOR THE REQUEST AND FORMATS 00114000
* THE MESSAGE TO BE RETURNED TO THE USER. 00115000
* STEPS 4 AND 5 DELETED ... NO LONGER USED; PROCESSING 00116000
* MOVED TO MODULE DMKCQR. 00116100
* 6. SYSTEM - CALL DMKSCNFD TO LOCATE THE RADDR ARGUMENT. IF 00118000
* NONE IS FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE 00119000
* DMKCQP021E. IF ONE FOUND, CALL DMKCVTHB TO CONVERT THIS 00120000
* ADDRESS TO BINARY. IF THE CONVERT FAILS, CALL DMKERMSG 00121000
* TO SEND ERROR MESSAGE DMKCQP021E. IF THE CONVERT WAS 00122000
* GOOD, CALL DMKSCNRU TO LOCATE THE RDEVBLOK ADDRESS FOR 00123000
* THIS DEVICE. IF THE RDEVBLOK CAN'T BE FOUND, CALL DMKERMSG 00124000
* TO SEND ERROR MESSAGE DMKCQP040E. IF BLOCK IS FOUND AND IT 00125000
* IS A DASDI DEVICE WHICH IS A CP-VOLUME CALL DMKFREE FOR 00126000
* A MESSAGE BUFFER AREA. PROCEED TO GET THE NAMES OF ALL 00127000
* USERS WHO ARE LINKED TO THIS VOLUME. AS THE MESSAGE 00128000
* OUTPUT LINES FILL CALL DMKQCNWT TO WRITE THE LINE TO THE 00129000
* USER. IF THE DEVICE IS NOT CP-OWNED TREAT THE REQUEST AS 00130000
* IF IT WERE FOR A SINGLE DEVICE. 00131000
* STEPS 7 AND 8 DELETED. MOVED TO DMKCQR. 00132000
* 9. 'DEVICE CLASS' - SET A FLAG IN SAVEWRK1 TO INDICATE 00133000
* WHICH TYPE OF REQUEST WAS RECEIVED. IF IT IS A STORAGE 00134000
* REQUEST, OBTAIN THE REAL STORAGE SIZE AND CALL DMKCVTBD 00135000
* TO CONVERT TO DECIMAL. PUT THIS IN THE MESSAGE AND CALL 00136000
* DMKQCNWT TO OUTPUT IT. FOR DEVICE TYPE REQUEST, SCAN 00137000
* THE REAL DEVICE BLOCKS AND WHEN A MATCH OCCURS ON THE 00138000
* REQUESTED DEVICE CLASS BUILD THE MESSAGE ACCORDING TO THE 00139000
* TYPE OF DEVICE AND ITS STATUS. THEN CALL DMKQCNWT TO 00140000
* OUTPUT THE MESSAGE. CHECK RDEVNRDY FLAG. IF ON, CALL 00141000
* DMKQCNWT AND OUTPUT INT REQ MESSAGE. CONTINUE DOING THIS 00142000
* UNTIL ALL RDEVBLOKS HAVE BEEN SCANNED. 00143000
* STEP 10 DELETED; PROCESSING MOVED TO DMKCQR. 00144000
* 11. LINK - CALL DMKCVTHB TO CONVERT VADDR TO BINARY. IF 00145000
* ERROR DURING CONVERT CALL DMKERMSG TO ISSUE ERROR 00146000
* MESSAGE DMKCQP022E. IF VADDR IS VALID CALL DMKSCNVU TO 00147000
* LOCATE THE VIRTUAL DEVICE BLOCK. IF THE DEVICE IS NOT 00148000
* FOUND CALL DMKERMSG TO ISSUE ERROR MESSAGE DMKCQP040E. IF 00149000
* ADDRESS IS CORRECT CHECK THAT DEVICE IS DASDI. IF NOT 00150000
* DASDI ISSUE ERROR MESSAGE DMKCQP006E. IF ALL OF THE ABOVE 00151000
* REQUIREMENTS ARE MET, PROCEED TO FIND EACH USER ON THE 00152000
* SYSTEM THAT IS USING THE SAME DISK EXTENT, ON THE SAME 00153000
* CP-VOLUME THAT THIS USER HAS. CALL DMKQCNWT TO OUTPUT 00154000
* THE RESPONSE LINE. CONTINUE SCANNING ALL VDEVBLOKS IN THE 00155000
* SYSTEM UNTIL THE VDEVBLOKS ARE EXHAUSTED. 00156000
* 00157000
* 12. TDSK - USE THE SAME LOOP AS QUERY LINKS ONLY PICK UP 00158000
* THE VIRTUAL DISKS MARKED AS TDSK ALLOCATED. 00159000
* THE VIRTUAL TDSKS INDICATE THE NUMBER OF CYLINDERS 00160000
* THE STACK ROUTINE IS USED TO STACK THE OUTPUT LINE. 00161000
* 00161010
* 13. PROCESSOR - CALL DMKCVTBH TO CONVERT EACH ONLINE PROCESSOR 00161020
* ADDRESS TO PRINTABLE HEXADECIMAL THEN BUILD PROCESSOR 00161030
* ONLINE MESSAGE. IN AP MODE, THE MAIN PROCESSOR WILL BE 00161040
* GIVEN FIRST. 00161050
* RESPONSES - 00162000
* 00163000
* THE FOLLOWING ARE TYPICAL RESPONSES TO THE QUERY COMMAND. XXX 00164000
* DENOTES A VIRTUAL ADDRESS AND YYY A REAL ADDRESS. 00165000
* 00166000
* QUERY SYSTEM RADDR 00167000
* USERID XXX R/O, USERID XXX R/W, USERID XXX CCC, USERID.. 00168000
* 00169000
* QUERY LINKS VADDR 00170000
* USERID XXX R/O, USERID XXX R/O, USERID XXX R/W, USERID... 00171000
* 00172000
* QUERY TDSK 00173000
* USERID XXX CCC, USERID XXX CCC, USERID XXX CCC, USERID ... 00174000
* 00175000
* 00176000
* 00177000
* QUERY ALL 00178000
* STORAGE = NNNNNK 00179000
* PROCESSOR YY ONLINE, PROCESSOR ZZ ONLINE 00179100
* TYPE YYY STARTED SYSTEM CLASS= ABCD SEP 00180000
* TYPE YYY DRAINED SYSTEM CLASS= ABCD NOSEP 00181000
* FOR A 3800 PRINTER 00181100
* PRT YYY STARTED SYSTEM CLASS= ABCD SEP CHAR LPI 00181200
* PRT YYY FLASH OVLY IMAGE IMAGELIB <PURGE|HOLD> 00181300
* 00181400
* DASD YYY CP OWNED VOLID NNN 00182000
* DASD YYY CP SYSTEM VOLID NNN 00183000
* LINE YYY LOGIN AS USERID 00184000
* TYPE YYY ATTACH TO USERID XXX 00185000
* CTLR YYY DEV 1000 NCP= NCPNAMEX DUMP AUTO 00186000
* 00187000
* TYPE YYY OFFLINE, TYPE YYY OFFLINE, TYPE YYY OFFLINE, TYPE 00188000
* 00189000
* TYPE YYY FREE , TYPE YYY DISABLE, TYPE YYY ENABLED, TYPE 00190000
* TYPE YYY DRAINED, TYPE YYY VOLID , TYPE YYY FREE , TYPE 00191000
* 00192000
* 00193000
* TYPE YYY INT REQ 00194000
* 00195000
* DMKCQP466I CTLR YYY IN BUFFER SLOWDOWN MODE 00196000
* 00197000
* 00198000
* TYPE ACTIVE NOT FOUND 00199000
* OFFLINE 00200000
* FREE 00201000
* DEVICES 00202000
* 00203000
* QUERY PAGING 00204000
* 00205000
* ERROR MESSAGES - 00206000
* DMKCQP003E INVALID OPTION - (OPTION) 00207000
* DMKCQP006E INVALID DEVICE TYPE - (ADDR) 00208000
* DMKCQP021E RADDR MISSING OR INVALID 00210000
* DMKCQP022E VADDR MISSING OR INVALID 00211000
* DMKCQP023E VOLID MISSING OR INVALID 00212000
* DMKCQP040E DEV (ADDR) DOES NOT EXIST 00213000
* DMKCQP045E (USERID) NOT LOGGED ON 00214000
* 00215000
*. 00216000
EJECT 00217000
DMKCQP CSECT 00218000
MODID DC CL8'DMKCQP' MODULE ID AND EYE CATCHER @V200930 00219000
SPACE 3 00220000
USING PSA,R0 00221000
USING VMBLOK,R11 00222000
USING SAVEAREA,R13 00223000
SPACE 00224000
EXTRN DMKRSPHQ,DMKRSPUR @V200820 00225000
EXTRN DMKRIORN @V200820 00226000
EXTRN DMKSCNVD 00227000
EXTRN DMKSCNRN 00228000
EXTRN DMKSCNRD 00229000
EXTRN DMKSCNRA @V407438 00229100
EXTRN DMKSYSRM 00230000
EXTRN DMKSCNRU 00231000
EXTRN DMKSCNVU 00232000
EXTRN DMKCVTBD 00233000
EXTRN DMKCVTBH 00234000
EXTRN DMKSCNAU 00235000
EXTRN DMKCVTHB 00236000
EXTRN DMKSYSMA 00237000
EXTRN DMKSYSNM 00238000
EXTRN DMKSCNFD 00239000
EXTRN DMKERMSG 00240000
EXTRN DMKSYSRV 00241000
EXTRN DMKCFCSC SCAN OPERAND FOR RANGE @V3E7466 00241100
SPACE 3 00242000
ENTRY DMKCQPRV 00243000
EJECT 00244000
* SINCE THE SAVEAREA CREATED ON THE CALL FROM CFMQU IS NOT USED 00245000
* IT WILL BE RELEASED, THUS WHEN THIS ROUTINE RETURNS, IT 00246000
* WILL GO BACK TO CFM INSTEAD OF CFMQU. CFM'S 00247000
* REGISTERS ARE SAVED BY CFMQU 00248000
* UPON ENTRY GPR6 WILL HAVE BEEN SET UP BY DMKCFMQU TO INDEX 00249000
* TO THE PROPER BRANCH, THUS THE ORDER OF BRANCHES MUST 00250000
* BE THE SAME AS THE LIST OF ARGUMENTS IN DMKCFMQU. 00251000
* 00252000
SPACE 00253000
USING *,R12 00254000
DMKCQPRV SVC 16 RELEASE SAVEAREA, USE DMKCFMQU @V200930 00255000
SL R12,=A(DMKCQPRV-DMKCQP) ADJUST ADDRESSING @V200930 00256000
USING DMKCQP,R12 BASE @V200930 00257000
MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA 00258000
SLR R2,R2 INITIALIZE ZERO RETURN CODE @V3E7466 00258050
STM R0,R11,SAVEREGS SAVE REGISTERS R0 THRU R11 00259000
B PVVECTOR(R6) GPR6 USED TO INDEX INTO BRANCH TABLE 00260000
PVVECTOR EQU * 00261000
B QRYADDR Q RADDR/USERID @V200930 00262000
B QRYSYS Q SYSTEM XXX 00263000
B QRYDASD Q DASD 00264000
B QRYTAPE Q TAPES 00265000
B QRYLINE Q LINES 00266000
B QRYUR Q UR 00267000
B QRYSTG Q STORAGE 00268000
B QRYALL Q ALL 00269000
B QRYLINK Q LINKS XXX 00270000
B QRYGRAF Q GRAF @V200930 00271000
B QRYTDSK Q TDSK @V200930 00272000
B QRYPROC Q PROCESSOR @V5BC0AB 00272010
SPACE 3 00273000
QRYWRIT CALL DMKQCNWT,PARM=NORET 00274000
TM CQPBITS,RANGE RANGE BEING PROCESSED? @V3E7466 00274100
BO NEXTADDR GET NEXT ADDR IN RANGE @V3E7466 00274200
QRYEXIT EQU * 00275000
EXIT RETURN 00280000
NEXTADDR L R1,SAVEWRK4 RESTORE CURRENT RADDR @V3E7466 00280100
LA R1,1(,R1) UP BY ONE TO NEXT RADDR @V3E7466 00280200
ST R1,SAVEWRK4 STORE UPDATED ADDRESS @V3E7466 00280300
CH R1,RADDR2 END OF RANGE @V3E7466 00280400
BNH SCNRU GET REAL DEVICE BLOKS @V3E7466 00280500
LA R0,FRBUFSIZ LOAD BUFFER SIZE @V3E7466 00280600
LR R1,R9 POINT TO GOTTEN CORE @V3E7466 00280700
LTR R9,R9 BUFFER TO FRET ?? @V407490 00280725
BZ QRYEXIT NO, EXIT TO CFM @V407490 00280750
CALL DMKFRET GO RELEASE CORE @V3E7466 00280800
B QRYEXIT EXIT TO CFM @V3E7466 00280900
EJECT 00281000
* 00282000
* ROUTINE TO PROVIDE REAL MACHINE INFO TO SYSTEMS OPERATOR 00283000
* 00284000
SPACE 00285000
* 00286000
* EQUATES FOR QRYREAL---FLAGS IN SAVEWRK1+3 00287000
* 00288000
SPACE 00289000
DEVREQ EQU X'80' INDICATES OPERATOR REQUESTED SPECIFIC DEV 00290000
FREEDEV EQU X'40' SEARCH FOR AVAILABLE DEVICES @V200930 00291000
OFFDEV EQU X'20' SERACH ONLY FOR OFFLINE DEVICES @V200930 00292000
ATTDEV EQU X'10' SERACH FOR ATTACHED (DEDICATED) @V200930 00293000
* DEVS ONLY 00294000
ACTDEV EQU X'04' OPERATOR ONLY WANTS ACTIVE DEVICES 00295000
DASDVOL EQU X'02' SEARCH FOR DASD WITH VOLID ONLY @V200930 00296000
REALFND EQU X'01' BIT TO INDICATE AT LEAST ONE DEVICE 00297000
* WAS FOUND AND PRINTED 00298000
RANGE EQU X'08' RANGE BEING PROCESSED? @V3E7466 00298100
SPACE 00298200
* EQUATES FOR SAVEWRK1+1 00298300
PASS1 EQU X'80' FIRST PASS SWITCH @V3E7466 00298400
SPACE 00298500
* MISCELLANEOUS EQUATES 00298600
BLANK EQU X'40' DELIMITER @V3E7466 00298700
SPACE 3 00299000
* EQUATES FOR SAVEWRK1 00300000
QUERYALL EQU X'0F' FLAG IN TABLE OF QUERY ARGS TO = Q X ALL 00301000
QUERYCOR EQU X'F0' FLAG IN TABLE OF QUERY ARGS TO = Q X MEMORY 00302000
SPACE 2 00303000
QRYDASD OI SAVEWRK1,CLASDASD SET DASD CLASS @V200930 00304000
B QRYRSET GET NEXT ARG @V200930 00305000
QRYTAPE OI SAVEWRK1,CLASTAPE SET TAPE CLASS @V200930 00306000
B QRYRSET GET NEXT ARG @V200930 00307000
QRYLINE OI SAVEWRK1,CLASTERM SET TERM CLASS @V200930 00308000
B QRYRSET GET NEXT ARG @V200930 00309000
QRYUR OI SAVEWRK1,CLASURO+CLASURI SET UR CLASS @V200930 00310000
B QRYRSET GET NEXT ARG @V200930 00311000
QRYGRAF OI SAVEWRK1,CLASGRAF SET GRAF CLASS @V200930 00312000
B QRYRSET GET NEXT ARG @V200930 00313000
QRYALL OI SAVEWRK1,QUERYALL SET FOR ALL @V200930 00314000
B QRYRSET GET NEXT ARG @V200930 00315000
QRYSTG OI SAVEWRK1,QUERYCOR SET FOR STORAGE @V200930 00316000
B REALCORE QUERY STORAGE @V200930 00317000
QRYADDR SR R9,R9 CLEAR BUFFER REG @V407490 00317500
CL R0,F7 MORE THAN SEVEN CHARACTERS ?? @V407490 00318000
BH QRYUSRID YES, TRY USERID @V3E7466 00318010
LA R2,DASH PREPARE FOR RANGE SCAN @V3E7466 00318020
CALL DMKCFCSC SEE IF RANGE SPECIFIED @V3E7466 00318030
BZ NORANGE NO '-' FOUND IN OPERAND @V3E7466 00318040
CR R1,R2 INVALID IF '-' FIRST CHAR. @V3E7466 00318050
BNL QRYUSRID TREAT AS USERID @V3E7466 00318060
LR R3,R2 ... @V3E7466 00318070
SR R3,R1 LENGTH OF RADDR1 FIELD @V3E7466 00318080
LR R4,R0 ENTIRE OPERAND LENGTH @V3E7466 00318090
LR R0,R3 RADDR1 LENGTH @V3E7466 00318100
MVI 0(R2),BLANK REPLACE '-' WITH BLANK @V3E7466 00318110
CALL DMKCVTHB CONVERT TO BINARY @V3E7466 00318120
LR R0,R4 OPERAND LENGTH @V3E7466 00318130
MVI 0(R2),CHARDASH PUT DASH BACK IN OPERAND @V3E7466 00318140
BNZ QRYUSRID TREAT AS USERID @V3E7466 00318150
STH R1,RADDR1 SAVE FIRST ADDR IN RANGE @V3E7466 00318160
LA R1,1(,R2) PT TO SECOND RADDR IN RANGE @V3E7466 00318170
LR R6,R4 ENTIRE OPERAND LENGTH @V3E7466 00318180
SR R6,R3 RADDR2 LENGTH @V3E7466 00318190
BCTR R6,0 MINUS ONE FOR '-' @V3E7466 00318200
CL R6,F3 SECOND OPERAND GT THREE @VA10292 00318203
* CHARACTERS 00318206
BH QRYUSRID YES, NOT A VALID ADDRESS @VA10292 00318209
LR R0,R6 TO R0 @V3E7466 00318210
CALL DMKCVTHB CONVERT SEC. ADDR IN RANGE @V3E7466 00318220
LR R0,R4 ENTIRE OPERAND LENGTH @V3E7466 00318230
MVI 0(R2),CHARDASH PUT '-' BACK IN OPERAND @V3E7466 00318240
BNZ QRYUSRID TREAT AS USERID @V3E7466 00318250
LH R4,RADDR1 FIRST ADD IN RANGE @V3E7466 00318260
CR R1,R4 RADDR2 > RADDR1 @V3E7466 00318270
BNH CQP021A ISSUE MSG 021E @V407490 00318280
STH R1,RADDR2 STORE RADDR2 IN SAVEWRK7+2 @V3E7466 00318290
OI CQPBITS,RANGE INDICATE PROCESSING RANGE @V3E7466 00318300
LH R1,RADDR1 FIRST RADDR IN RANGE @V3E7466 00318310
ST R1,SAVEWRK4 SAVE FOR LATER @V3E7466 00318320
B SCNRU FIND REAL DEVICE BLOKS @V3E7466 00318330
NORANGE CL R0,F3 ARG. TOO BIG FOR ADDR? @V3E7466 00318340
BH QRYUSRID YES, TRY USERID. @VA01607 00319000
CALL DMKCVTHB ATTEMPT CONVERSION TO BINARY @VA01607 00320000
BNZ QRYUSRID ERROR IF ADDRESS INVALID 00321000
SCNRU CALL DMKSCNRU GET REAL DEVICE BLOKS @V3E7466 00322000
BNZ CHKRA DET. WHETHER TO ISSUE 040E MSG @V3E7466 00322100
LNKERR OI SAVEWRK1+3,DEVREQ FLAG DEVICE REQUEST @V200930 00324000
B TSTALL SET FLAGS, FIND DEVICE @V200930 00325000
CHKRA TM CQPBITS,RANGE RANGE BEING PROCESSED @V3E7466 00325100
BZ QRYUSRID TREAT AS USERID @V3E7466 00325200
B CQP040A DEV ADDR DOES NOT EXIST @V3E7466 00325300
SPACE 00325400
CHARDASH EQU C'-' RANGE DELIMITER @V3E7466 00325500
EJECT 00326000
QRYUSRID L R0,SAVER0 LOAD LENGTH OF ARG. 00327000
L R1,SAVER1 RESTORE ADDRESS OF ARG. 00328000
MVC SAVEWRK2(8),BLANKS CLEAR WORK AREA. 00329000
MVC SAVEWRK2+8(8),BLANKS " " " 00330000
CALL DMKSCNAU IS USER LOGGED ON ? 00331000
BNZ CQP045 IF NOT, PROVIDE AN ERROR MESSAGE. 00332000
DROP R11 00333000
LR R10,R1 LOAD ADDRESS OF VMBLOK INTO R-10. 00334000
USING VMBLOK,R10 ADDRESSABILITY 00335000
MVC SAVEWRK2(8),VMUSER MOVE IN USERID. 00336000
MVI SAVEWRK2+9,C'-' PUT IN THE DASH. 00337000
MVC SAVEWRK2+11(3),=C'DSC' PROBABLY NOT DISCONNECTED . 00338000
TM VMOSTAT,VMDISC IS USER DISCONNECTED ? 00339000
BO QRYDSC IF YES, BR. 00340000
L R8,VMTERM LOAD ADDRESS OF USER'S TERMINAL RDEVBLOK. 00341000
TM RDEVADD-RDEVBLOK(R8),RDEVLDEV Is this an LDEV? HRC065DK 00341100
BO QRYLDEV Yes HRC065DK 00341200
CLI RDEVTYPC-RDEVBLOK(R8),CLASTERM IS CLASS TERMINAL 00342000
BNE *+12 NO, BYPASS TEST FOR BISYNC LINE 00343000
CLI RDEVTYPE-RDEVBLOK(R8),TYPBSC IS THIS A LINE 00344000
BE *+12 YES, GET RESOURCE ID. 00345000
CLI RDEVTYPC-RDEVBLOK(R8),CLASSPEC 3705 TERM ? @V200820 00346000
BNE QRYUSRT NO -- DIFFERENT @V200820 00347000
LH R1,VMTRMID TERMINAL RESOURCE REFERENCE @V200820 00348000
CALL DMKCVTBH @V200820 00349000
STCM R1,15,SAVEWRK2+10 PUT FOUR-CHAR ID IN MSG @V200820 00350000
B QRYDSC @V200820 00351000
QRYLDEV EQU * HRC065DK 00351100
LH R1,RDEVADD-RDEVBLOK(,R8) Get the LDEV address HRC065DK 00351200
N R1,F4095 Keep only the dev num HRC065DK 00351300
CALL DMKCVTBH Make it displayable HRC065DK 00351400
STCM R1,7,SAVEWRK2+11 Put dev addr in message HRC065DK 00351500
MVI SAVEWRK2+10,C'L' Move in LDEV indicator HRC065DK 00351600
B QRYDSC Go display msg HRC065DK 00351700
QRYUSRT EQU * FORMAT OUTPUT FOR NORMAL TERMINAL@V200820 00352000
DROP R10 00353000
USING VMBLOK,R11 RE-ESTABLISH ADDRESSABILITY 00354000
CALL DMKSCNRD GET DEVICE ADDRESS INTO R1. 00355000
CALL DMKCVTBH CONVERT TO PRINTABLE CHAR'S. 00356000
STCM R1,7,SAVEWRK2+11 STORE DEVICE ADDRESS. 00357000
QRYDSC LA R0,14 SET LENGTH OF PRINT LINE. 00358000
LA R1,SAVEWRK2 AND ALSO ITS ADDRESS. 00359000
B QRYWRIT GO OUTPUT THIS LINE. 00360000
EJECT 00361000
QRYRSET CALL DMKSCNFD GET NEXT FIELD IF ANY @V200930 00362000
BNZ QRYSACT NO FIELD, DEFAULT TO ACTIVE @V200930 00363000
LR R2,R0 SIZE @V200930 00364000
BCTR R2,R0 LESS 1 @V200930 00365000
* 00365100
* TEST TO SEE IF THE 'VIRTUAL' OR 'SYSVIRT' 00365200
* PARAMETER WAS SPECIFIED. 00365300
* 00365400
EX R2,VIRTCLC WAS 'VIRTUAL' SPECIFIED @V60B6B8 00365500
BE SETVIRT YES @V60B6B8 00365600
EX R2,SYSVCLC WAS 'SYSVIRT' SPECIFIED @V60B6B8 00365700
BE SETSYSV YES @V60B6B8 00365800
CL R0,F3 IS IT LESS THAN 3 ?? @V200930 00366000
BL QRYTDAS YES, TEST FOR VOLID @V200930 00367000
EX R2,CLCFRE SET FOR FREE @V200930 00368000
BNE QRYTACT NO, TEST FOR ACTIVE @V200930 00369000
OI SAVEWRK1+3,FREEDEV SET FOR FREE ONLY @V200930 00370000
B QRYRSCAN GO FIND DEVICES @V200930 00371000
SETVIRT EQU * Q DASD VIRTUAL COMMAND @V60B6B8 00371100
OI SAVEWRK1+1,VIRTUAL SET FLAG @V60B6B8 00371200
B QRYRSET GET NEXT OPTION @V60B6B8 00371300
SETSYSV EQU * Q DASD SYSVIRT COMMAND @V60B6B8 00371400
OI SAVEWRK1+1,SYSVIRT SET FLAG @V60B6B8 00371500
B QRYRSET GET NEXT OPTION @V60B6B8 00371600
QRYTACT EX R2,CLCACT TEST FOR ACTIVE @V200930 00372000
BNE QRYTOFF TEST FOR OFFLINE @V200930 00373000
QRYSACT OI SAVEWRK1+3,ACTDEV SET FOR ACTIVE @V200930 00374000
B QRYRSCAN GO FIND DEVICES @V200930 00375000
QRYTOFF EX R2,CLCOFF TEST FOR OFFLINE @V200930 00376000
BNE QRYTALL TEST FOR ALL @V200930 00377000
OI SAVEWRK1+3,OFFDEV SET FOR OFFLINE @V200930 00378000
B QRYRSCAN GO FIND DEVICES @V200930 00379000
QRYTALL EX R2,CLCALL TEST FOR ALL @V200930 00380000
BE TSTALL YES, SET AND TEST @V200930 00381000
EX R2,CLCATT TEST FOR ATTACH @V200930 00382000
BNE QRYTDAS NO, TEST FOR VOLID @V200930 00383000
OI SAVEWRK1+3,ATTDEV+ACTDEV SET FOR ATTACH DEVS @V200930 00384000
* ONLY 00385000
B QRYRSCAN GO FIND DEVICE @V200930 00386000
QRYTDAS CLI SAVEWRK1,CLASDASD IS IT DASD SERACH ?? @V200930 00387000
BNE CQP003 NO, ERROR @V200930 00388000
CL R0,F6 BIGGER THAN 6 CHARACTERS ?? @V200930 00389000
BH CQP023 YES, ERROR @V200930 00390000
MVC SAVEWRK2(8),BLANKS PREP FIELD @V200930 00391000
EX R2,MVCVOL MOVE VOLID FOR COMPARE @V200930 00392000
OI SAVEWRK1+3,DASDVOL SET FOR VOLID SEARCH @V200930 00393000
TSTALL OI SAVEWRK1+3,ACTDEV+FREEDEV+OFFDEV DO ALL @V200930 00394000
TM SAVEWRK1,QUERYALL IS IT ALL REQUEST ?? @V200930 00395000
BO REALCORE YES, DO STORAGE FIRST @V200930 00396000
TM CQPBITS,RANGE RANGE BEING PROCESSED? @V3E7466 00397000
BZ QRYRSCAN NO, SCAN FOR DEVICES @V3E7466 00397100
TM SAVEWRK1+1,PASS1 IS THIS FIRST PASS? @V3E7466 00397200
BO QRYLOOP NO, SKIP ACQUIRING STORAGE @V3E7466 00397300
OI SAVEWRK1+1,PASS1 INDICATE FIRST PASS @V3E7466 00397400
B QRYRSCAN SCAN DEVICES @V3E7466 00397500
SPACE 00398000
MVCVOL MVC SAVEWRK2(*-*),0(R1) EX FOR VOLID @V200930 00399000
CLCFRE CLC 0(*-*,R1),=CL5'FREE ' EX FOR FREE @V200930 00400000
CLCACT CLC 0(*-*,R1),=CL7'ACTIVE ' EX FOR ACTIVE @V200930 00401000
CLCOFF CLC 0(*-*,R1),=CL8'OFFLINE ' EX FOR OFFLINE @V200930 00402000
CLCALL CLC 0(*-*,R1),=CL4'ALL ' EX FOR ALL @V200930 00403000
CLCATT CLC 0(*-*,R1),=CL7'ATTACH ' EX FOR ATTACH @V200930 00404000
VIRTCLC CLC 0(*-*,R1),=CL7'VIRTUAL' CLC FOR Q DASD VIRTUAL @V60B6B8 00404100
SYSVCLC CLC 0(*-*,R1),=CL7'SYSVIRT' CLC FOR Q DASD SYSVIRT @V60B6B8 00404200
EJECT 00405000
REALCORE L R1,=A(DMKSYSRM) LOAD REAL STORAGE SIZE ADDRESS 00406000
L R1,0(,R1) LOAD REAL STORAGE SIZE 00407000
L R2,=A(DMKSYSRV) NOW GET SIZE OF SYSGEN'D STORAGE 00408000
L R2,0(,R2) . . . . 00409000
CR R1,R2 WHICH ONE WILL WE USE ?? 00410000
BNH MAKEK IF REAL IS EQUAL OR LESS USE IT 00411000
LR R1,R2 ELSE USE THE SYSGEN'D VALUE 00412000
MAKEK EQU * 00413000
SRL R1,10 MAKE SIZE = K 00414000
CALL DMKCVTBD CONVERT SIZE TO PRINT. FORM 00415000
MVC SAVEWRK2(7),=C'STORAGE' SET "STORAGE" INTO MSG LINE 00416000
MVC SAVEWRK2+7(3),=C' = ' SET "=" ALSO IN LINE 00417000
STC R0,SAVEWRK2+10 00418000
STCM R1,15,SAVEWRK2+11 PUT IN STORAGE SIZE 00419000
MVI SAVEWRK2+15,C'K' THE "K" FINISH UP THE SIZE MSG. 00420000
LA R0,16 MESSAGE LENGTH 00421000
LA R1,SAVEWRK2 DATA ADDRESS @V200930 00422000
BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00423000
TM SAVEWRK1,QUERYALL QUERY ALL ?? @V200930 00424000
BZ QRYEXIT NO, EXIT @V200930 00425000
QRYPROC DS 0H @V5BC0AB 00426010
LA R0,PROCBSIZ GET BUFFER SIZE IN DOUBLE-WORDS @V5BC0AB 00426020
CALL DMKFREE GET BUFFER STORAGE @V5BC0AB 00426030
LR R9,R1 PUT BUFFER ADDRESS IN R9 @V5BC0AB 00426040
SPACE 00426050
USING PROCBUF,R9 @V5BC0AB 00426060
SPACE 00426070
MVC PROCBUF(10),=C'PROCESSOR ' PROCESSOR INTO MSG @V5BC0AB 00426080
SR R1,R1 CLEAR REGISTER 1 @V5BC0AB 00426090
ICM R1,B'0011',IPUADDR PUT PROCESSOR ADDRESS IN R1 @V5BC0AB 00426100
CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V5BC0AB 00426110
STCM R1,B'0011',PROCBUF+10 SET PROCESSOR ADDRESS @V5BC0AB 00426120
MVC PROCBUF+12(7),=C' ONLINE' MOVE IN ONLINE @V5BC0AB 00426130
LA R0,19 GET MESSAGE LENGTH @V5BC0AB 00426140
TM APSTAT1,APUOPER SYSTEM IN AP MODE? @V5BC0AB 00426150
BZ MSGSTACK NO, BRANCH @V5BC0AB 00426160
MVC PROCBUF+19(12),=C', PROCESSOR ' @V5BC0AB 00426170
SR R1,R1 CLEAR REGISTER 1 @V5BC0AB 00426180
ICM R1,B'0011',IPUADDRX GET ADDRESS OF OTHER PROC. @V5BC0AB 00426190
CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V5BC0AB 00426200
STCM R1,B'0011',PROCBUF+31 MOVE IN PROCESSOR ADDR. @V5BC0AB 00426210
MVC PROCBUF+33(7),=C' ONLINE' MOVE IN ONLINE @V5BC0AB 00426220
LA R0,40 GET MESSAGE LENGTH @V5BC0AB 00426230
TM APSTAT1,PROCIO ON MAIN PROCESSOR? @V5BC0AB 00426240
BO MSGSTACK YES, BRANCH @V5BC0AB 00426250
SR R14,R14 CLEAR REGISTER 14 @V5BC0AB 00426260
ICM R14,B'0011',PROCBUF+10 GET ATTACHED PROC. ADDR @V5BC0AB 00426270
STCM R1,B'0011',PROCBUF+10 MOVE IN MAIN'S ADDRESS @V5BC0AB 00426280
STCM R14,B'0011',PROCBUF+31 MOVE IN ATTACH. PROC ADR @V5BC0AB 00426290
MSGSTACK DS 0H @V5BC0AB 00426300
LA R1,PROCBUF GET DATA ADDRESS @V5BC0AB 00426310
BAL R3,STACK STACK LINE FOR OUTPUT @V5BC0AB 00426320
LR R1,R9 GET BUFFER ADDRESS IN R1 @V5BC0AB 00426330
LA R0,PROCBSIZ GET BUFFER SIZE IN DOUBLE-WORDS @V5BC0AB 00426340
CALL DMKFRET FREE THE BUFFER STORAGE @V5BC0AB 00426350
TM SAVEWRK1,QUERYALL QUERY ALL? @V5BC0AB 00426360
BZ QRYEXIT NO, EXIT @V5BC0AB 00426370
B QRYRSCAN YES, GO SCAN DEVICES @V5BC0AB 00426380
SPACE 00426390
DROP R9 @V5BC0AB 00426400
SPACE 00426410
EJECT 00427000
USING RCHBLOK,R6 00428000
USING RCUBLOK,R7 00429000
USING RDEVBLOK,R8 00430000
USING FREEBUF,R9 00431000
REALFMT MVC FREEMSG(8),BLANKS CLEAR MESSAGE AREA @V200930 00432000
MVC FREEMSG+8(9*8),FREEMSG .. @V200930 00433000
CALL DMKSCNRA GET 'CCU' FORM OF ADDRESS @V407438 00433400
BZ CQP1OK OK THIS TIME, CONTINUE @V407438 00433800
ABEND 1 BAD BLOCKS SENT TO DMKSCNRA @V407438 00434200
CQP1OK EQU * CONTINUE @V407438 00434600
LR R3,R1 SAVE THE ADDRESS FOR LATER USE @V200820 00435000
CALL DMKCVTBH GET IN PRINTABLE FORM 00436000
STCM R1,7,FREEMSG+5 SAVE ADDRESS @V200930 00437000
CALL DMKSCNRN GET DEVICE NAME @V200930 00438000
STCM R1,15,FREEMSG SET NAME @V200930 00439000
TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 00439050
BZ *+8 NOPE, SKIP @V407438 00439100
L R7,RCUPRIME YES, GET PRIMARY BLOCK FOR STATUS@V407438 00439150
STM R1,R3,TEMPR1 TEMPORARILY SAVE REGS @V407438 00439200
LA R1,RCUCHA ADDRESS OF THE FIRST CHANNEL @V407438 00439250
LA R2,4 INCREMENT @V407438 00439300
LA R3,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 00439350
NEXTCHA CL R6,0(R1) R6 REPRESENT THIS CU -> CH PATH? @V407438 00439400
BE *+8 YES, PATH FOUND, BR. @V407438 00439450
BXLE R1,R2,NEXTCHA NOPE, LOOK AT ALL CHANNEL PATHS @V407438 00439500
LA R2,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 00439550
SLR R1,R2 FIND HOW FAR DOWN WE FOUND IT @V407438 00439600
SRL R1,2 CONVERT TO INDEX FROM 0 TO 3 @V407438 00439650
IC R3,DISATBL(R1) GET CU->CH PTH BIT @V407438 00439700
EX R3,CUCHENAB (TM RCUSTAT,RCUCHXOF) TEST PATH @V407438 00439750
LM R1,R3,TEMPR1 RESTORE REGS @V407438 00439800
BO REALCONT CHANNEL PATH OFFLINE, SKIP IT @V407438 00439850
TM RCUSTAT,RCUDISA IS THE CONTROL UNIT OFFLINE? @V407438 00439900
BO REALCONT YES, SKIP IT @V407438 00439950
TM RDEVSTAT,RDEVDISA IS IT OFFLINE ?? @V200930 00440000
BO REALCONT YES, SKIP IT @V200930 00441000
TM RDEVSTAT,RDEVDED IS IT DEDICATED ?? @V200930 00442000
BO RDEVATCH YES @V200930 00443000
TM SAVEWRK1+3,ATTDEV SEARCH FOR ATTACHED ONLY ?? @V200930 00444000
BO REALCONT YES, SKIP THIS ONE @V200930 00445000
TM RDEVTYPC,CLASTERM+CLASGRAF IS IT A TERMINAL ?? @V200930 00446000
BNZ LINESET YES @V200930 00447000
TM RDEVTYPC,CLASURO+CLASURI IS IT UNIT RECORD ?? @V200930 00448000
BNZ URSET YES @V200930 00449000
CLI RDEVTYPC,CLASSPEC SPECIAL CLASS DEVICE ? @V200820 00450000
BE SPECSET YES -- @V200820 00451000
B NOTURIO TEST FOR OTHERS @V200930 00452000
SPACE 00452200
* RCU TO RCH BLOCK PATH AVAILABLE BITS IN RCUSTAT 00452400
DISATBL DC AL1(RCUCHAOF,RCUCHBOF,RCUCHCOF,RCUCHDOF) @V407438 00452600
CUCHENAB TM RCUSTAT,0 TEST PATH AVAILABILITY @V407438 00452800
EJECT 00453000
LINESET DS 0H @V200930 00454000
L R2,RDEVUSER LOAD VMBLOK FOR THIS LINE 00455000
C R2,ASYSVM SYSTEM STILL HAS IT ?? 00456000
BE REALCONT YES, SKIP IT @V200930 00457000
DROP R11 00458000
USING VMBLOK,R2 00459000
LA R0,27 SET UP LNG 00460000
MVC FREEMSG+19(8),VMUSER SET USERID @V200930 00461000
DROP R2 00462000
USING VMBLOK,R11 00463000
MVC FREEMSG+9(9),=CL9'LOGON AS' LINE LOGGED IN @V200930 00464000
B REALWRIT GO PRINT IT NOW 00465000
URSET MVC FREEMSG+9(7),=CL7'STARTED' SET MSG @V200930 00466000
TM RDEVFLAG,RDEVDRAN IS IT DRAINED ?? @V200930 00467000
BZ URSYS NO, DEV STARTED @V200930 00468000
MVC FREEMSG+9(7),=CL7'DRAINED' SET MSG @V200930 00469000
URSYS MVC FREEMSG+19(9),=CL9'SYSTEM' USER @V200930 00470000
MVC FREEMSG+28(8),=CL8'CLASS = ' SET MSG @V200930 00471000
MVC FREEMSG+36(4),RDEVCLAS SET CLASS @V200930 00472000
OC FREEMSG+36(4),BLANKS EDIT LINE @V200930 00473000
MVC FREEMSG+40(6),=CL6' NOSEP' SET NOSEP @V200930 00474000
TM RDEVFLAG,RDEVSEP IS IT SEP ?? @V200930 00475000
BZ *+10 NO, OK @V200930 00476000
MVC FREEMSG+40(3),BLANKS SET SEP @V200930 00477000
LA R0,46 SIZE @V200930 00478000
TM RDEVTYPC,CLASURI IS IT A READER ?? @V200930 00479000
BZ *+8 NO, SIZE IS 46 @V200930 00480000
LA R0,27 SHORTER MSG FOR READERS @V200930 00481000
CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 00481200
BNE URSYS2 XFER IF NOT @V60B9BA 00481300
MVC FREEMSG+47(4),RDEVXSEP CHAR FOR SEP PAGE @V60B9BA 00481400
SR R1,R1 SET UP TO GET LPI FOR 3800 @V60B9BA 00481500
IC R1,RDEVFSEP FCB LINES/INCH @V60B9BA 00481600
CALL DMKCVTBD CONVERT TO EBCDIC @V60B9BA 00481700
STCM R1,B'0011',FREEMSG+52 INSERT IN MSG @V60B9BA 00481800
LA R0,55 EVEN LONGER LENGTH FOR 3800 @V60B9BA 00481900
URSYS2 LA R1,FREEMSG DATA @V60B9BA 00482000
BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00483000
CLI RDEVTYPE,TYP3800 3800 PRINTER ? @V60B9BA 00483250
BNE URSYS3 XFER IF NOT @V60B9BA 00483300
MVI FREEMSG+9,C' ' CLEAR THE MESSAGE AREA @V60B9BA 00483350
MVC FREEMSG+10(45),FREEMSG+9 ... @V60B9BA 00483400
MVC FREEMSG+9(5),=C'FLASH' FLASH NAME @V60B9BA 00483450
MVC FREEMSG+15(4),RDEVOVLY ... @V60B9BA 00483500
MVC FREEMSG+21(5),=C'IMAGE' ACTIVE IMAGE LIBRARY @V60B9BA 00483550
MVC FREEMSG+27(8),RDEVIMAG ... @V60B9BA 00483600
MVC FREEMSG+37(4),=C'HOLD' ASSUME HOLD ON ERROR @V60B9BA 00483650
TM RDEVSTA2,RDEVPURG IS IT REALLY PURGE ? @V60B9BA 00483700
BZ *+10 XFER IF NOT @V60B9BA 00483750
MVC FREEMSG+37(5),=C'PURGE' MOVE IN THE PURGE @V60B9BA 00483800
LA R0,42 LENGTH OF LINE @V60B9BA 00483850
LA R1,FREEMSG ADDRESS OF DATA @V60B9BA 00483900
BAL R3,STACK STACK LINE FOR OUTPUT @V60B9BA 00483950
URSYS3 TM RDEVFLAG,RDEVACNT DOING ACCOUNTING CARDS ?? @V60B9BA 00484000
BO TESTINT YES, SKIP ACTIVE CHECK 00485000
L R2,RDEVSPL GET ACTIVE FILE CONTROL POINTER @V200930 00486000
LTR R2,R2 TEST FOR ACTIVE FILE @V200930 00487000
BZ TESTINT TEST FOR INT REQ @V200930 00488000
CLI 0(R2),X'FF' DOES REG 2 POINT TO SFBLOK ? @VA02207 00489000
BE URSYS1 YES -- GO SET UP DMKRSP CALL @VA02207 00490000
USING RSPLCTL,R2 @V200930 00491000
L R2,RSPSFBLK GET POINTER TO SFBLOK @V200930 00492000
DROP R2 @V200930 00493000
URSYS1 LR R7,R2 R7 POINTS TO SFBLOK FOR CALL @VA02207 00494000
CALL DMKRSPUR FORMAT MESSAGE FOR ACTIVE FILE @V200930 00495000
BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00496000
B TESTINT TEST FOR INT REQ @V200930 00497000
EJECT 00498000
NOTURIO EQU * 00499000
SPACE 00500000
* RDEVFLAG SYS OWN MOUT DASD TAPE MEANING 00501000
* 0 0 1 X DEVICE FREE; VOLUME MOUNTED 00502000
* AFTER IPL OR DEVICE DETACHED 00503000
* 0 0 0 X DEVICE ATTACHED TO SYSTEM; NO LINES 00504000
* EXCEPT WHEN RDEVSER = BLANKS; DEVICE IS FREE 00505000
* 0 0 0 X DEVICE FREE 00506000
* 1 0 0 X DEV ATTACHED TO SYSTEM; WITH LINKS 00507000
* 1 0 0 X DEVICE ATTACHED TO SYSTEM 00508000
* 1 1 0 X DEV ATTACHED TO SYSTEM AND CPOWNED 00509000
SPACE 00510000
TM RDEVFLAG,RDEVMOUT DEV MOUNTED ?? @V200930 00511000
BO REALCONT NO - DEVICE IS FREE @V200820 00512000
LA R0,19 SET LINE SIZE @V200930 00513000
TM RDEVTYPC,CLASDASD IS IT DASD ?? @V200930 00514000
BZ NOVOLSER NO, NO VOLID @V200930 00515000
MVC FREEMSG+19(6),RDEVSER SET VOLID @V200930 00516000
LH R1,RDEVLNKS GET NUMBER OF USERS ON THIS DEVICE 00517000
CALL DMKCVTBD AND GO CONVERT IT. 00518000
STCM R1,7,FREEMSG+28 SET LINK COUNT @V200930 00519000
LA R0,31 LINE SIZE @V200930 00520000
CLC RDEVSER,BLANKS IS IT FREE ?? @V200930 00521000
BE REALCONT YES - SKIP IT @V200820 00522000
NOVOLSER MVC FREEMSG+9(8),=CL8'CP OWNED' @V200930 00523000
TM RDEVFLAG,RDEVOWN IS IT A CP OWNED VOLUME ? 00524000
BO REALWRIT IF YES,, PRINT IT 00525000
MVC FREEMSG+9(9),=CL9'CP SYSTEM' @V200930 00526000
TM RDEVFLAG,RDEVSYS IS IT SYSTEM ?? @V200930 00527000
BZ REALCONT NO -- CONTINUE TO NEXT DEVIC@V200820 00528000
REALWRIT LA R1,FREEMSG SET DATA ADDRESS @V200930 00529000
BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00530000
TESTINT OI SAVEWRK1+3,REALFND FLAG DEVICE FOUND @V200930 00531000
TM RDEVSTAT,RDEVNRDY TEST FOR DEVICE READY @V200930 00532000
BZ REALCONT NO, GET NEXT DEVICE @V200930 00533000
MVC FREEMSG+9(7),=C'INT REQ' FLAG INT REQ @V200930 00534000
LA R0,16 SIZE @V200930 00535000
LA R1,FREEMSG DATA ADDRESS @V200930 00536000
CALL DMKQCNWT,PARM=NORET+ALARM INT REQ MSG @V200930 00537000
B REALCONT DO NEXT DEVICE @V200930 00538000
EJECT 00539000
RDEVATCH MVC FREEMSG+9(9),=CL9'ATTACH TO' @V200930 00540000
LH R1,RDEVATT LOAD VIRTUAL ADDRESS OF DEVICE 00541000
CALL DMKCVTBH CONVERT. 00542000
STCM R1,7,FREEMSG+28 VIRTUAL ADDRESS @V200930 00543000
DROP R11 00544000
L R2,RDEVUSER GET USERID FOR DEVICE 00545000
USING VMBLOK,R2 00546000
MVC FREEMSG+19(8),VMUSER ATTACHED USERID @V200930 00547000
DROP R2 00548000
USING VMBLOK,R11 00549000
LA R0,31 SET LNG OF LINE 00550000
LA R1,FREEMSG SET ADDRESS OF DATA @V200930 00551000
B REALWRIT GO PRINT IT 00552000
EJECT 00553000
SPECSET EQU * FORMAT OUTPUT FOR SPECIAL 3705 DEVICE @V200820 00554000
CLI RDEVTYPE,TYP3705 IS THIS A 3705 OR 3704 ? @V200820 00555000
BNE REALCONT NO -- SYSTEM WILL NOT USE IT@V200820 00556000
MVC FREEMSG+9(L'MSG3705),MSG3705 FORMAT THE OUTPUT @V200820 00557000
L R2,=A(DMKRIORN) ADDRESS OF CONTROLLER TABLE @V200820 00558000
L R14,0(0,R2) PICK UP COUNT OF ENTRIES @V200820 00559000
SPECSTL EQU * FIND THIS 370X IN THE TABLE @V200820 00560000
CH R3,6(0,R2) IS THIS THE ONE ? @V200820 00561000
BE SPECSTF YES -- @V200820 00562000
LA R2,4(0,R2) NEXT ENTRY @V200820 00563000
BCT R14,SPECSTL CONTINUE @V200820 00564000
B SPECSTN LEAVE FIELD BLANK IF NOT FOUND @V200820 00565000
SPECSTF EQU * FIGURE OUT 370X DEVICE CODE @V200820 00566000
SL R2,=A(DMKRIORN) COMPUTE DISPLACEMENT IN TABLE @V200820 00567000
SLL R2,10(0) SHIFT FOR '0000', '1000', ETC. @V200820 00568000
LR R1,R2 INTO GR1 FOR DMKCVT @V200820 00569000
CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V200820 00570000
STCM R1,15,FREEMSG+13 SET IN THE OUTPUT LINE @V200820 00571000
SPECSTN EQU * @V200820 00572000
MVC FREEMSG+24(8),RDEVNCP MOVE IN RDEVBLOK NCPNAME@V200820 00573000
TM RDEVFLAG,RDEVLNCP IS THIS AN NCP ? @V200820 00574000
BZ SPECNCP NO -- LEAVE IT AS EMULATOR @V200820 00575000
MVC FREEMSG+19(3),=C'NCP ' @V200820 00576000
SPECNCP EQU * @V200820 00577000
TM RDEVFLAG,RDEVLCEP EMULATOR PROGRAM ACTIVE ? @V200820 00578000
BZ SPECCEP NO -- @V200820 00579000
MVC FREEMSG+19(3),=C'EP ' @V200820 00580000
SPECCEP EQU * @V200820 00581000
TM RDEVFLAG,RDEVLNCP+RDEVLCEP PARTITIONED EMULATOR@V200820 00582000
BNO SPECPEP NO --- @VM08589 00583000
MVC FREEMSG+19(3),=C'PEP ' @V200820 00584000
SPECPEP EQU * @V200820 00585000
TM RDEVFLAG,RDEVAUTO AUTOMATIC DUMP / RESTART ? @V200820 00586000
BO SPECWRT YES - O.K. AS IS @V200820 00587000
MVC FREEMSG+39(4),=C'OFF ' DUMP OFF @V200820 00588000
SPECWRT EQU * WRITE RESPONSE TO CONSOLE @V200820 00589000
LA R0,43 MESSAGE LENGTH @V200820 00590000
TM RDEVFLAG,RDEVSLOW NCP IN BUFFER SLOWDOWN MODE @V200820 00591000
BZ REALWRIT NO -- STACK THE MSG AS IS @V200820 00592000
LA R1,FREEMSG POINT TO THE MESSAGE DATA @V200820 00593000
BAL R3,STACK STACK THE LINE FOR LATER OUTPUT @V200820 00594000
L R1,FREEMSG+4 PICK UP 'CCU' FROM FIRST MESSAGE @V200820 00595000
L R15,=A(MSGSLOW) -> message text HRC065DK 00595100
MVC FREEMSG(L'MSGSLOW),0(R15) MOVE IN SLOWDOWN MSGHRC065DK 00596000
STCM R1,7,FREEMSG+16 PUT 'CCU' ADDRESS IN NEW MSG@V200820 00597000
LA R1,FREEMSG @V200820 00598000
LA R0,L'MSGSLOW MESSAGE LENGTH @V200820 00599000
CALL DMKQCNWT,PARM=NORET+ERRMSG+ALARM SEND THIS ONE@V200820 00600000
MVC FREEMSG(9),FREEMSG+11 MOVE 'TYPE RADDR' BACK @V200820 00601000
B TESTINT ...IN CASE OF 'INT REQ'@V200820 00602000
EJECT 00603000
QRYRSCAN LA R0,FRBUFSIZ BUFFER SIZE IN DOUBLE WORDS 00604000
CALL DMKFREE GO GET CORE 00605000
LR R9,R1 POINT R9 TO GOTTEN CORE 00606000
QRYLOOP LA R3,FREEMSG START OF MESSAGE AREA @V200930 00607000
LA R4,18 INCREMENT FOR FREE MSG @V200930 00608000
LA R5,FRMSGEND LOAD ADDRESS OF LAST MSG IN BUFFER 00609000
STM R3,R5,FRREGSAV SAVE FOR POSSIBLE LATER USE 00610000
MVI CQPFLAG,BIN0 ZERO FLAG @V3E7466 00610100
MVC FREEMSG(8),BLANKS CLEAR MSG AREA @V200930 00611000
MVC FREEMSG+8(9*8),FREEMSG .. @V200930 00612000
TM SAVEWRK1+3,DEVREQ SINGLE DEV REQUEST ?? @V200930 00613000
BO REALSAVE YES, DONT SEARCH @V200930 00614000
MVC CUINDSAV(2),FFS MOVE ALL ONES TO INDEX SAVE @V3E7466 00615000
LA R4,2 LOAD INCREMENT COUNT 00616000
SR R1,R1 ZERO INDEX FOR CHANNEL SEARCH 00617000
QRYRNCH L R10,ARIOCT ADDRESS OF CHANNEL INDEX TABLE @V200930 00618000
LA R5,30 LOAD END OF CHAN INDEX TABLE 00619000
LH R6,0(R1,R10) LOAD INDEX TO NEXT CHANNEL @V200930 00620000
LTR R6,R6 DOES CHAN EXIST ? 00621000
BM QRYRCHI NO, TRY NEXT 00622000
A R6,ARIOCH POINT R6 TO RCHBLOK 00623000
USING RCHBLOK,R6 00624000
MVC CUINDSAV(4),FFS ZIP LAST CU INDEX PROCESSED @V407438 00624500
SR R2,R2 ZERO INDEX FOR CONTROL UNIT SEARCH 00625000
QRYRNCU LA R5,62 POINT TO END OF CU INDEX @V200930 00626000
LH R7,RCHCUTBL(R2) INDEX TO NEXT CONTROL UNIT @V200930 00627000
LTR R7,R7 DOES CONTROL UNIT EXIST ? 00628000
BM QRYRCUI NO, TRY NEXT 00629000
CH R7,CUINDSAV IS THIS INDEX SAME AS LAST ONE ? 00630000
BE QRYRCUI YES - BYPASS THIS ONE SINCE ALREADY DONE 00631000
STH R7,CUINDSAV NO - SAVE FOR NEXT GO AROUND 00632000
A R7,ARIOCU POINT R7 TO RCUBLOK 00633000
USING RCUBLOK,R7 00634000
SR R3,R3 ZERO INDEX FOR DEVICE TABLE INDEX 00635000
QRYRNDV LA R5,30 SET R5 TO END OF DEVICE INDEX TABLE 00636000
LH R8,RCUDVTBL(R3) LOAD NEXT DEVICE 00637000
LTR R8,R8 DOES DEVICE EXIST ? 00638000
BM QRYRDVI NO, TRY NEXT 00639000
SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00640000
A R8,ARIODV YES, POINT R8 TO RDEVBLOK 00641000
USING RDEVBLOK,R8 00642000
SPACE 00643000
* FOLLOWING CODE TO CHEK IF UNIT IS OF PROPER CLASS 00644000
SPACE 00645000
LA R0,CLASDASD*256+TYP2305 CHECK FOR FIXED-HEAD @VM08747 00646000
CH R0,RDEVTYPC . . .MULTIPLE-EXPOSURE DRUM @VM08747 00647000
BNE CHKQRYT NO -- CONTINUE NORMALLY @VM08747 00648000
TM RDEVADD+1,X'07' SUBSIDIARY EXPOSURE ? @VM08747 00649000
BNZ QRYRDVI YES - SKIP OVER IT @VM08747 00650000
CHKQRYT EQU * @VM08747 00651000
TM SAVEWRK1,QUERYALL IS IT ALL ?? @V200930 00652000
BO REALSAVE YES,, PROCESS IT 00653000
TM SAVEWRK1,CLASURI+CLASURO IS THIS A UR REQUEST? 00654000
BZ TYPCCHEK NO GO CHEK FOR OTHER MATCH 00655000
TM RDEVTYPC,CLASURI+CLASURO IS THIS DEVICE UR ? 00656000
BZ QRYRDVI NO - GO TRY NEXT DEVICE 00657000
B REALSAVE UNIT RECORD DEV. HAS BEEN FOUND. 00658000
TYPCCHEK CLC SAVEWRK1(1),RDEVTYPC PROPER CLAS OF DEVICE ? 00659000
BNE QRYRDVI NOT PROPER CLASS GO TRY AGAIN 00660000
TM SAVEWRK1+3,DASDVOL SEARCH BY VOLID ?? @V200930 00661000
BZ REALSAVE NO, CONT @V200930 00662000
CLC RDEVSER,SAVEWRK2 IS THIS IT ?? @V200930 00663000
BNE QRYRDVI NO, CONT @V200930 00664000
REALSAVE STM R1,R8,REGSAVE SAVE REGS FOR CALL @V200930 00665000
TM SAVEWRK1+1,VIRTUAL+SYSVIRT 3330V QUERY @V60B6B8 00665010
BZ REALSAV1 NO, CONTINUE @V60B6B8 00665020
CLI RDEVTYPE,TYP3330 IS RDEVICE A 3330 @V60B6B8 00665030
BNE QRYRDVI GET NEXT DEVICE @VMI2000 00665040
TM RDEVFTR,SYSVIRT IS RDEV A SYSVIRT @V60B6B8 00665050
BO TSTSYSV YES @V60B6B8 00665060
TM RDEVFTR,VIRTUAL IS RDEV A VIRTUAL @V60B6B8 00665070
BZ QRYRDVI NO, RDEV IS NOT A 3330V @V60B6B8 00665080
TM SAVEWRK1+1,VIRTUAL WAS REQUEST FOR VIRTUAL @V60B6B8 00665090
BZ QRYRDVI NO, GET NEXT DEVICE @V60B6B8 00665100
B REALSAV1 DEV TYPE MATCH, CONTINUE @V60B6B8 00665110
TSTSYSV EQU * @V60B6B8 00665120
TM SAVEWRK1+1,SYSVIRT WAS REQUEST FOR SYSVIRT @V60B6B8 00665130
BZ QRYRDVI NO, GET NEXT DEVICE @V60B6B8 00665140
REALSAV1 EQU * GO PUT OUT MSG @V60B6B8 00665150
TM SAVEWRK1+3,ACTDEV ACTIVE DEVICE ?? @V200930 00666000
BO REALFMT YES, DO IT @V200930 00667000
B FREEFMT DO OFFLINE AND FREE @V200930 00668000
SPACE 00669000
REALCONT LM R1,R8,REGSAVE RESTORE REGS FOR SEARCH @V200930 00670000
TM SAVEWRK1+3,DEVREQ DEVICE REQUEST ?? @V200930 00671000
BO TSTFROF YES, TEST FOR LOOP @V200930 00672000
QRYRDVI BXLE R3,R4,QRYRNDV INCREMENT THRU DEVICES 00673000
LA R5,62 POINT R5 TO END OF CU INDEX 00674000
QRYRCUI BXLE R2,R4,QRYRNCU INCREMENT THRU CONTROL UNITS 00675000
LA R5,30 POINT R5 TO END OF CH INDEX 00676000
QRYRCHI BXLE R1,R4,QRYRNCH INCREMENT THRU CHANNELS 00677000
SPACE 00678000
* 00679000
* WHEN FALL THRU HERE HAVE SCANNED ALL REAL DEVICES 00680000
* 00681000
* 00682000
SPACE 00683000
TSTFROF TM SAVEWRK1+3,FREEDEV+OFFDEV FREE OR OFF REQ ?? @V200930 00684000
BZ QRYNXT NO, TEST FOR MORE @V200930 00685000
LM R3,R5,FRREGSAV GET FREE MESSGAE REGISTERS 00686000
LA R2,FREEMSG LOAD START OF MESSAGE AREA 00687000
CR R2,R3 ANYTHING TO OUTPUT ? 00688000
BE QRYNXT NO, TEST FOR MORE @V200930 00689000
S R3,F2 BACK TO COMMA @V200930 00690000
MVI 0(R3),C' ' EDIT OUT COMMA @V200930 00691000
SR R3,R2 COMPUTE MESSAGE LENGTH 00692000
LR R0,R3 MESSAGE LENGTH TO R0 00693000
LA R1,FREEMSG ADDRESS OF MESSAGE 00694000
BAL R3,STACK STACK OUTPUT LINE @V200930 00695000
QRYNXT TM SAVEWRK1+3,ACTDEV DONE ACTIVE DEVS ?? @V200930 00696000
BZ QRYN1 NO, TEST MORE @V200930 00697000
TM SAVEWRK1+3,FREEDEV+OFFDEV MORE TO DO ?? @V200930 00698000
BZ QRYRFRET NO, DONE @V200930 00699000
NI SAVEWRK1+3,X'FF'-ACTDEV DONE THESE @V200930 00700000
B TSTDFND TEST FOR DEV REQ FOUND @V200930 00701000
QRYN1 TM SAVEWRK1+3,FREEDEV DONE FREE ?? @V200930 00702000
BZ QRYRFRET NO, DONE @V200930 00703000
TM SAVEWRK1+3,OFFDEV OFFLINE TO DO ?? @V200930 00704000
BZ QRYRFRET NO, DONE @V200930 00705000
NI SAVEWRK1+3,X'FF'-FREEDEV DONE THESE @V200930 00706000
TSTDFND TM SAVEWRK1+3,DEVREQ+REALFND FOUND DEV REQ ?? @V200930 00707000
BO QRYRFRET YES, LEAVE @V200930 00708000
B QRYLOOP GO DO OFFLINE @V200930 00709000
SPACE 00710000
QRYRFRET TM CQPBITS,DEVREQ+RANGE RANGE? @V3E7466 00711000
BZ FRETBUF NO, RELEASE STORAGE BUFFER @V3E7466 00711100
NI SAVEWRK1+3,X'FF'-REALFND TURN OFF 'FOUND' BIT @V3E7466 00711200
B NEXTADDR PROCESS NEXT ADDR IN RANGE @V3E7466 00711300
FRETBUF LA R0,FRBUFSIZ LOAD BUFFER SIZE @V3E7466 00711400
LR R1,R9 POINT TO GOTTEN CORE 00712000
CALL DMKFRET GO RELEASE CORE 00713000
TM SAVEWRK1+3,REALFND WAS ANY DEVICE FOUND ? 00714000
BO QRYEXIT ALL FINISHED - RETURN @V3E7466 00715000
LA R0,NFMSGL SIZE @V200930 00716000
LA R1,NFMSG MESSAGE @V200930 00717000
MVC NFSRCH,BLANKS CLEAR @V200930 00718000
MVC NFSRCH(5),=CL5'FREE ' FREE SEARCH @V200930 00719000
TM SAVEWRK1+3,FREEDEV FREE RQE ?? @V200930 00720000
BO MVTAPES YES, CONT @V200930 00721000
MVC NFSRCH(7),=CL7'ATTACH' ATTACH SEARCH @V200930 00722000
TM SAVEWRK1+3,ATTDEV ATT REQ ?? @V200930 00723000
BO MVTAPES YES @V200930 00724000
MVC NFSRCH(7),=CL7'ACTIVE ' ACTIVE SEARCH @V200930 00725000
TM SAVEWRK1+3,ACTDEV ACTIVE ?? @V200930 00726000
BO MVTAPES YES, CONT @V200930 00727000
MVC NFSRCH,=CL8'OFFLINE ' OFFLINE SEARCH @V200930 00728000
TM SAVEWRK1+3,OFFDEV OFFLINE ?? @V200930 00729000
BO MVTAPES YES, CONT @V200930 00730000
MVC NFSRCH,=CL8'DEVICES' ALL SERACH @V200930 00731000
MVTAPES MVC 0(5,R1),=C'TAPE ' ASSUME TAPES @V200930 00732000
CLI SAVEWRK1,CLASTAPE TAPE ?? @V200930 00733000
BE QRYWRIT @V200930 00734000
MVC 0(5,R1),=CL5'DASD ' @V200930 00735000
TM SAVEWRK1+3,DASDVOL IS IT VOLID SEARCH ?? @V200930 00736000
BZ *+10 NO, CONT @V200930 00737000
MVC NFSRCH,SAVEWRK2 GET VOLID @V200930 00738000
CLI SAVEWRK1,CLASDASD DASD ?? @V200930 00739000
BE QRYWRIT @V200930 00740000
MVC 0(5,R1),=CL5'LINE ' @V200930 00741000
CLI SAVEWRK1,CLASTERM LINE ?? @V200930 00742000
BE QRYWRIT @V200930 00743000
MVC 0(5,R1),=CL5'UR ' @V200930 00744000
CLI SAVEWRK1,CLASURO+CLASURI UR ?? @V200930 00745000
BE QRYWRIT @V200930 00746000
MVC 0(5,R1),=CL5'GRAF ' ASSUME GRAF CLASS @V200930 00747000
CLI SAVEWRK1,CLASGRAF IS IT GRAF ?? @V200930 00748000
BE QRYWRIT YES @V200930 00749000
MVC 0(5,R1),=CL5'ALL ' @V200930 00750000
B QRYWRIT SEND MESSAGE AND RETURN 00751000
SPACE 00752000
QRYCOMP CLC 0(0,R3),0(R1) 00753000
SPACE 00754000
NFMSG DC CL5' ' @V200930 00755000
NFSRCH DC CL8' ' @V200930 00756000
DC C'NOT FOUND' @V200930 00757000
NFMSGL EQU *-NFMSG @V200930 00758000
EJECT 00759000
FREEFMT TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 00759050
BZ *+8 NOPE, SKIP @V407438 00759100
L R7,RCUPRIME YES, GET PRIMARY BLOCK FOR STATUS@V407438 00759150
LA R3,RCUCHA ADDRESS OF THE FIRST CHANNEL @V407438 00759200
LA R4,4 INCREMENT @V407438 00759250
LA R5,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 00759300
NEXTCHB CL R6,0(R3) R6 REPRESENT THIS CU -> CH PATH? @V407438 00759350
BE *+8 YES, PATH FOUND, BR. @V407438 00759400
BXLE R3,R4,NEXTCHB NOPE, LOOK AT ALL CHANNEL PATHS @V407438 00759450
LA R4,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 00759500
SLR R3,R4 FIND HOW FAR DOWN WE FOUND IT @V407438 00759550
SRL R3,2 CONVERT TO INDEX FROM 0 TO 3 @V407438 00759600
IC R5,DISATBL(R3) GET CU->CH PTH BIT @V407438 00759650
EX R5,CUCHENAB (TM RCUSTAT,RCUCHXOF) CH PTH OFF?@V407438 00759700
LM R3,R5,FRREGSAV GET REGS SAVED @V407438 00759750
BO FROFF YES, BR. CHECK FOR CONTINUATION @V407438 00759800
TM RCUSTAT,RCUDISA IS THE CONTROL UNIT OFFLINE? @V407438 00759850
BO FROFF YES, BR. CHECK FOR CONTINUATION @V407438 00759900
TM RDEVSTAT,RDEVDISA IS THE DEVICE OFFLINE? @V407438 00759950
BO FROFF YES, BR. CHECK FOR CONTINUATION @V407438 00760000
TM RDEVSTAT,RDEVDED DEDICATED ?? @V200930 00761000
BO REALCONT YES, SKIP @V200930 00762000
TM SAVEWRK1+3,FREEDEV DOING FREE ?? @V200930 00765000
BZ REALCONT NO, SKIP THIS ONE @V200930 00766000
TM RDEVTYPC,CLASTERM+CLASGRAF IS IT A TERMINAL ?? @V200930 00767000
BNZ FRTERM YES, CHECK @V200930 00768000
TM RDEVTYPC,CLASURO+CLASURI IS IT UNIT RECORD ?? @V200930 00769000
BNZ FRUR YES, CHECK @V200930 00770000
TM RDEVFLAG,RDEVSYS+RDEVOWN SYSTEM OR OWNED ?? 00771000
BNZ REALCONT YES, SKIP @V200930 00772000
MVC 9(4,R3),=CL5'FREE ' FLAG FREE @V200930 00773000
TM RDEVTYPC,CLASDASD IS IT DASD ?? @V200930 00774000
BZ FRADD NO, CONT @V200930 00775000
CLC RDEVSER,BLANKS IS IT MOUNTED ?? @V200930 00776000
BE FRADD NO, CONT @V200930 00777000
MVC 9(6,R3),RDEVSER SET VOLID @V200930 00778000
B FRADD CONT @V200930 00779000
SPACE 00780000
FROFF TM SAVEWRK1+3,FREEDEV DOING FREE DEV ?? @V200930 00781000
BO REALCONT YES, SKIP THIS ONE @V200930 00782000
MVC 9(8,R3),=CL8'OFFLINE ' FLAG OFFLINE @V200930 00783000
B FRADD CONT @V200930 00784000
SPACE 00785000
FRTERM L R2,RDEVUSER GET USERID VMBLOK @V200930 00786000
C R2,ASYSVM IS IT SYSTEM OWNED ?? @V200930 00787000
BNE REALCONT NO, SKIP THIS ONE @V200930 00788000
MVC 9(8,R3),=CL8'ENABLED ' @V200930 00789000
TM RDEVFLAG,RDEVENAB IS IT ENABLED ?? @V200930 00790000
BNO FRDISB BRANCH TO DISABLE TEST @VA15324 00790100
TM RDEVFLAG,RDEVDISB DEVICE IS ENABLED, NOW @VA15324 00790200
* TEST FOR DISABLE PENDING 00790300
BNO FRADD DISABLE NOT PENDING, BRANCH @VA15324 00790400
MVC 9(8,R3),=CL8'DSBLPND ' DISABLE PENDING @VA15324 00790500
B FRADD BRANCH WITH DISABLE MESSAGE @VA15324 00790600
FRDISB EQU * DISABLE TEST @VA15324 00791100
MVC 9(8,R3),=CL8'DISABLED' @V200930 00792000
B FRADD CONT @V200930 00793000
SPACE 00794000
FRUR EQU * @VA03049 00795000
TM RDEVFLAG,RDEVDRAN IS IT DRAINED ?? @V200930 00796000
BZ REALCONT NO, NOT FREE @V200930 00797000
MVC 9(7,R3),=CL7'DRAINED' INDICATE DRAINED @VA03049 00798000
FRADD CALL DMKSCNRA GET CCU DEVICE ADDRESS @V407438 00799000
CALL DMKCVTBH CONVERT @V200930 00800000
STCM R1,7,5(R3) SET ADDRESS @V200930 00801000
CALL DMKSCNRN GET DEV NAME @V200930 00802000
STCM R1,15,0(R3) SET NAME @V200930 00803000
MVI 16(R3),C',' EDITING COMMA @V200930 00804000
LA R3,18(R3) BUMP POINTER @V200930 00805000
CLR R3,R5 AT END OF BUFFER ?? @V200930 00806000
BL FRST NO, CONT @V200930 00807000
S R3,F2 BACK TO COMMA @V200930 00808000
MVI 0(R3),C' ' EDIT OUT COMMA @V200930 00809000
LA R0,70 SIZE @V200930 00810000
LA R1,FREEMSG DATA ADDRESS @V200930 00811000
BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00812000
MVC FREEMSG(8),BLANKS CLEAR FIELD @V200930 00813000
MVC FREEMSG+8(9*8),FREEMSG .. @V200930 00814000
LA R3,FREEMSG RE-INITIALIZE @V200930 00815000
LA R4,18 .. @V200930 00816000
LA R5,FRMSGEND .. @V200930 00817000
FRST STM R3,R5,FRREGSAV SAVE NEW VALUES @V200930 00818000
OI SAVEWRK1+3,REALFND FREE DEV FOUND @V200930 00819000
B REALCONT CONT @V200930 00820000
DROP R6,R7,R8 @V3E7466 00821000
EJECT 00822000
* 00823000
* ROUTINE TO STACK OUTPUT LINES ON VMBLOK 00824000
* THE LINES WILL BW PRINTED BY DMKCFM ON RETURN 00825000
* 00826000
STACK LR R4,R0 GET LINE LENGTH @V200930 00827000
LR R5,R1 GET BUFFER ADDRESS @V200930 00828000
LA R0,7(R4) ROUND UP TO DBL WORD @V200930 00829000
SRL R0,3 GET SIZE IN DBL WORDS @V200930 00830000
A R0,F1 ONE MORE FOR CHAINING @V200930 00831000
CALL DMKFREE GET STACK BUFFER @V200930 00832000
MVI 0(R1),BIN0 ZERO ERROR INDICATOR @V3E7466 00832100
STH R4,4(R1) SAVE LINE SIZE @V200930 00833000
STH R0,6(R1) SAVE BUFFER SIZE @V200930 00834000
BCTR R4,R0 DECREMENT FOR EXECUTE @V200930 00835000
TM CQPBITS,RANGE RANGE PROCESSING @V3E7466 00836000
BZ EXECUTE NO, NO CHANCE FOR ERROR MSG @V3E7466 00836100
TM CQPFLAG,CQPERR IS THIS ERROR MSG @V3E7466 00836200
BZ EXECUTE NO, NORMAL STACK @V3E7466 00836300
MVI 0(R1),CQPERR IND. ERR. MSG IN STACK BUFFER @V3E7466 00836400
EXECUTE EX R4,MVCSTK MOVE DATA TO STACK BUFFER @V3E7466 00836500
SR R0,R0 CLEAR @V200930 00837000
STCM R0,B'0111',1(R1) PRESERVE CQPERR FLAG @V3E7466 00838000
LA R2,VMSTKO GET OUTPUT STACK POINTER @V200930 00839000
STKLOOP EQU * @VA09404 00840000
ICM R4,B'0111',1(R2) GET PTR TO STACK BUFFER @V3E7466 00840100
BZ CHAIN FOUND END, CHAIN THIS BUFFER @V200930 00842000
LR R2,R4 POINT TO NEXT BUFFER @V200930 00843000
B STKLOOP GO FIND END OF STACK @V200930 00844000
CHAIN STCM R1,B'0111',1(R2) CHAIN AT END @V3E7466 00845000
BR R3 RETURN @V200930 00846000
* 00847000
MVCSTK MVC 8(*-*,R1),0(R5) EXECUTED FOR STACK BUFFER MOVE @V200930 00848000
EJECT 00849000
LNKREQ EQU X'80' INDICATES QUERY LINK REQUEST 00850000
SYSREQ EQU X'40' INDICATES QUERY SYSTEM REQUEST 00851000
LNKDONE EQU X'20' INDICAYES COMPLETION OF VDEVLINK CHAIN 00852000
LNKFND EQU X'10' INCATES AT LEAST 1 LINK TO DEVICE 00853000
TDSK EQU X'08' SEARCH FOR TDSK ALLOCATED @V200930 00854000
SPACE 2 00855000
QRYLINK OI SAVEWRK1,LNKREQ INDICATE A QUERY LINK REQUEST 00856000
B LNKDEV 00857000
QRYTDSK OI SAVEWRK1,TDSK FLAG TO SEARCH FOR TDSK ALLOCATED@V200930 00858000
B LNKPROC PROCESS @V200930 00859000
SPACE 00860000
QRYSYS OI SAVEWRK1,SYSREQ INDICATE A QUERY SYSTEM REQUEST 00861000
SPACE 00862000
LNKDEV CALL DMKSCNFD GET ARGUMENT 00863000
BNZ CHK022 ERROR, IF ARGUMENT MISSING 00864000
STM R0,R1,SAVEWRK8 SAVE LENGTH AND ADDRESS FOR LATER 00865000
CL R0,F3 CAN'T HAVE MORE THAN THREE DIGITS 00866000
BH CHK022 AND STILL BE A VALID ADDRESS 00867000
CALL DMKCVTHB CONVERT DEVICE ADDRESS TO BINARY 00868000
BNZ CHK022 ERROR, IF NOT VALID HEX CHARACTORS 00869000
TM SAVEWRK1,SYSREQ IS REQUEST FOR "SYSTEM" ? 00870000
BO SCANSYS YES, TAKE THE BRANCH 00871000
CALL DMKSCNVU IS THIS A VALID VIRTUAL DEVICE ? 00872000
BNZ CQP040 ERROR, IF NOT 00873000
USING VDEVBLOK,R8 ADDRESSABILITY 00874000
CLI VDEVTYPC,CLASDASD DEVICE MUST BE DASDI 00875000
BNE CQP006 ERROR, IF NOT A DASD DEVICE 00876000
L R3,VDEVREAL LOAD ADDRESS OF RDEVBLOK 00877000
ST R3,SAVEWRK3 SAVE RDEVBLOK ADDRESS @V200930 00878000
L R5,VDEVRELN GET DISK RELOCATION AND SIZE @VA07972 00879100
ST R5,SAVEWRK5 SAVE RELOCATION @V200930 00880000
B LNKPROC CONTINUE 00881000
SPACE 00882000
CHK022 TM SAVEWRK1,SYSREQ SYSTEM REQUEST ???? 00883000
BO CQP021 SEND 021E MESSAGE IF IT IS 00884000
B CQP022 ELSE - SEND 022 MESSAGE 00885000
SPACE 00886000
DROP R8 00887000
SPACE 00888000
SCANSYS CALL DMKSCNRU IS DEVICE VALID 00889000
BNZ CQP040 ERROR, IF CONTROL BLOCKS NOT FOUND 00890000
USING RDEVBLOK,R8 ADDRESSABILITY 00891000
CLI RDEVTYPC,CLASDASD DEVICE MUST BE DASD 00892000
BNE LNKERR ERROR, IF NOT. 00893000
TM RDEVFLAG,RDEVOWN+RDEVSYS ERROR IF NOT CP VOLUME. 00894000
BZ LNKERR BRANCH IF ERROR. 00895000
ST R8,SAVEWRK3 SAVE RDEVBLOK ADDRESS @V200930 00896000
SPACE 00897000
LNKPROC LA R0,LINKBSIZ GET SIZE OF BUFFER NEEDED. 00898000
CALL DMKFREE CALL DMKFREE 00899000
LR R6,R1 SAVE ADDRESS OF BUFFER IN GPR 6 00900000
ST R6,SAVEWRK8 REMEMBER BUFFER START @V200930 00901000
USING LINKBUF,R6 ADDRESSABAILITY 00902000
MVI LINKBUF,C' ' CLEAR FIRST POSITION OF BUFFER. 00903000
MVC LINKBUF+1(79),LINKBUF CLEAR BUFFER @V200930 00904000
ST R6,SAVEWRK6 SAVE BUFFER ADDRESS @V200930 00905000
LA R7,VDEVSIZE*8 R7 = SIZE IN BYTES OF 1 VDEVBLOK 00906000
LR R10,R11 LOAD ADDR. OF 1'ST VMBLOK TO CHECK 00907000
DROP R11 00908000
USING VMBLOK,R10 ADDRESSABILITY 00909000
LINKLCNT LH R9,VMDVCNT LOAD COUNT OF VDEVBLOKS 00910000
LTR R9,R9 ANY BLOCKS FOR THIS USER. 00911000
BNP LINKNUSR IF NOT, GET NEXT USER. 00912000
L R8,VMDVSTRT LOAD ADDRESS OF 1'ST VDEVBLOK. 00913000
USING VDEVBLOK,R8 ADDRESSABILITY 00914000
LINKCKAD TM VDEVADD,X'80' VALID VDEVBLOK ? 00915000
BO LINKNVDV IF INVALID, SKIP IT AND GET NEXT ONE. 00916000
TM VDEVTYPC,CLASDASD IS IT DASD ?? @V200930 00917000
BZ LINKNVDV NO, NEXT DEVICE @V200930 00918000
TM SAVEWRK1,TDSK LOOKING FOR TDSK ?? @V200930 00919000
BO LINKFIND YES, CHECK FURTHER @V200930 00920000
L R3,VDEVREAL GET RDEVBLOK ADDRESS @V200930 00921000
CL R3,SAVEWRK3 IS IT THE ONE WE ARE LOOKING @V200930 00922000
* FOR ?? 00923000
BE LINKFIND YES, PROCESS IT. 00924000
LINKNVDV AR R8,R7 ADD SIZE OF ONE VDEVBLOK 00925000
BCT R9,LINKCKAD ITERATE THRU ALL VDEVBLOKS 00926000
LINKNUSR L R10,VMPNT GET NEXT USER IN CHAIN OF VMBLOKS. 00927000
CR R10,R11 ARE WE AT THE END OF THE CHAIN ? 00928000
BNE LINKLCNT IF NOT, PROCESS NEXT DEVBLOK. 00929000
OI SAVEWRK1,LNKDONE INDICATE ALL VDEVBLOK HAVE BEEN USE 00930000
B LINKPRT PRINT THIS LINE AND EXIT. 00931000
SPACE 1 00932000
LINKFIND TM SAVEWRK1,SYSREQ IS REQUEST FOR QUERY SYSTEM ? 00933000
BO LINKEQAL IF YES, A MATCH HAS BEEN FOUND. 00934000
TM SAVEWRK1,TDSK SEARCH FOR TDSK ?? @V200930 00935000
BZ LINKREL NO, GET RELOCATION @V200930 00936000
TM VDEVFLAG,VDEVTDSK IS THIS A TDSK ?? @V200930 00937000
BZ LINKNVDV NO, GET NEXT DEVICE @V200930 00938000
B LINKEQAL YES, PROCESS IT @V200930 00939000
LINKREL DS 0H @V200930 00940000
L R2,VDEVRELN LOAD RELO FACTOR AND SIZE FOR @VA07972 00941100
* COMP 00941200
C R2,SAVEWRK5 DO RELO AMD SIZE MATCH? @VA07972 00942100
BE LINKEQAL IF YES, PROCESS IT. 00943000
B LINKNVDV 00944000
SPACE 2 00945000
LINKEQAL OI SAVEWRK1,LNKFND INDICATE A MATCH HAS BEEN FOUND 00946000
L R6,SAVEWRK6 SET BUFFER ADDRESS @V200930 00947000
MVC LINKBUF(8),VMUSER MOVE IN USERID 00948000
LR R11,R10 LOAD ADDRESS OF VMBLOK OF THIS DEV. 00949000
CALL DMKSCNVD GET VIRTUAL DEV ADDRESS IN GPR 1 00950000
L R11,SAVER11 RESTORE TRUE VMBLOK ADDRESS 00951000
L R6,SAVEWRK6 RESTORE BUFFER ADDRESS @V200930 00952000
CALL DMKCVTBH CONVERT TO PRINTABLE CHARS. 00953000
STCM R1,7,LINKBUF+9 DEV IN MSG @V200930 00954000
MVC LINKBUF+13(3),=CL3'R/O' ASSUME READ ONLY @V200930 00955000
TM VDEVFLAG,VDEVRDO IS IT A R/O DASD UNIT 00956000
BO *+8 IF YES BRANCH 00957000
MVI LINKBUF+15,C'W' FLAG WRITE STATUS @V200930 00958000
MVI LINKBUF+16,C',' EDIT COMMA @V200930 00959000
TM VDEVFLAG,VDEVTDSK IS THIS A TDSK ?? @V200930 00960000
BZ INDEX NO, INDEX REG @V200930 00961000
LH R1,VDEVBND GET NUMBER OF CYLINDERS @V200930 00962000
CALL DMKCVTBD CONVERT @V200930 00963000
STCM R1,7,LINKBUF+13 PUT IN MESSAGE @V200930 00964000
INDEX LA R6,18(R6) NEXT BUFFER POSITION @V200930 00965000
ST R6,SAVEWRK6 SAVE BUFFER ADDRESS @V200930 00966000
L R7,SAVEWRK8 GET BUFFER START ADDRESS @V200930 00967000
LA R7,72(R7) BUFFER END ADDRESS @V200930 00968000
CR R6,R7 AT END YET ?? @V200930 00969000
BNL LINKPRT YES, PRINT IT @V200930 00970000
LA R7,VDEVSIZE*8 SET INDEX @V200930 00971000
B LINKNVDV GET NEXT VDEVBLOK IN THE LIST 00972000
* 00973000
* ON ENTRY HERE GPR 7 = LENGTH OF PRINT LINE + 1. 00974000
* 00975000
LINKPRT L R0,SAVEWRK6 GET BUFFER ADDRESS @V200930 00976000
S R0,SAVEWRK8 MINUS BUFFER START @V200930 00977000
BZ LINKEXIT EXIT, IF NO LINE TO OUTPUT. 00978000
BCTR R0,R0 DECREMENT LINE LENGTH BY - 1. 00979000
L R3,SAVEWRK6 LAST BUFFER POSITION @V200930 00980000
S R3,F2 DECREMENT BUFFER POSITION BY TWO BYTES. 00981000
MVI 0(R3),C' ' REMOVE THE LAST COMMA INSERTED 00982000
L R1,SAVEWRK8 GET BUFFER ADDRESS @V200930 00983000
BAL R3,STACK STACK FOR OUTPUT @V200930 00984000
L R6,SAVEWRK8 GET BUFFER START @V200930 00985000
MVI LINKBUF,C' ' CLEAR FIRST BYTE OF BUFFER. 00986000
MVC LINKBUF+1(79),LINKBUF CLEAR @V200930 00987000
TM SAVEWRK1,LNKDONE HAVE ALL VDEVBLOKS BEEN SCANNED ? 00988000
BO LINKEXIT IF YES, EXIT. 00989000
ST R6,SAVEWRK6 SET BUFFER START ADDRESS @V200930 00990000
LA R7,VDEVSIZE*8 SET INDEX @V200930 00991000
B LINKNVDV LOOK FOR MORE VDEVBLOKS. 00992000
SPACE 00993000
LINKEXIT TM SAVEWRK1,LNKFND WERE ANY LINKS FOUND ? 00994000
BO LINKFRET IF YES, EXIT 00995000
LA R0,NFMSGL SET SIZE @V200930 00996000
LA R1,NFMSG MESSAGE ADDRESS @V200930 00997000
MVC NFMSG,=CL5'DASD ' DSAD DEVICE ONLY @V200930 00998000
MVC NFSRCH,BLANKS CLEAR @V200930 00999000
MVC NFSRCH(6),=CL6'LINKS' ASSUME LINKS @V200930 01000000
TM SAVEWRK1,LNKREQ LINK REQUEST ?? @V200930 01001000
BO LNKCALL YES @V200930 01002000
MVC NFSRCH(6),=CL6'MDISKS' ASSUME SYSTEM @V200930 01003000
TM SAVEWRK1,SYSREQ SYSTEM SEARCH ?? @V200930 01004000
BO LNKCALL YES @V200930 01005000
MVC NFSRCH(6),=CL6'TDSKS' TDSK SEARCH @V200930 01006000
LNKCALL DS 0H @V200930 01007000
CALL DMKQCNWT,PARM=NORET 01008000
SPACE 01009000
LINKFRET L R1,SAVEWRK8 GET BUFFER ADDRESS @V200930 01010000
LA R0,LINKBSIZ AND ALSO ITS SIZE 01011000
CALL DMKFRET FRET STORAGE. 01012000
B QRYEXIT EXIT 01013000
SPACE 2 01014000
DROP R6 01015000
DROP R10 01016000
USING VMBLOK,R11 01017000
EJECT 01018000
CQP003 LA R2,RC3 ERROR RETURN CODE = 3 @V3E7466 01019000
B CALLERM .... 01020000
SPACE 01021000
CQP006 LA R2,RC6 ERROR RETURN CODE = 6 @V3E7466 01022000
LM R0,R1,SAVEWRK8 LOAD LENGTH AND ADDRESS OF BAD ARG. 01023000
B CALLERM .... 01024000
SPACE 01025000
CQP021 LA R2,RC21 ERROR RETURN CODE = 21 @V3E7466 01026000
B NOVAR .... 01027000
SPACE 01028000
CQP021A LR R0,R6 GET COUNT OF INVALID PARM @V407490 01028100
LA R1,1(,R2) POINT TO INVALID PARM @V407490 01028200
LA R2,21 LOAD ERROR CODE @V407490 01028300
B CALLERM @V407490 01028400
SPACE 01028500
CQP022 LA R2,RC22 ERROR RETURN CODE = 22 @V3E7466 01029000
B NOVAR .... 01030000
SPACE 01031000
CQP023 LA R2,RC23 ERROR RETURN CODE = 23 @V3E7466 01032000
B NOVAR @V200930 01033000
CQP040A EQU * @VA08691 01033010
TM SAVEWRK1+1,PASS1 IS THIS THE FIRST MESSAGE? @VA08691 01033020
BO CQP040B NO - WE HAVE A MSG AREA @VA08691 01033030
OI SAVEWRK1+1,PASS1 SET MSG AREA FLAG @VA08691 01033040
LA R0,FRBUFSIZ GET BUFFER SIZE IN DOUBLE WORDS @VA08691 01033050
CALL DMKFREE GET MSG AREA @VA08691 01033060
LR R9,R1 PUT IT WHERE WE NEED IT @VA08691 01033070
CQP040B EQU * @VA08691 01033080
MVC FREEMSG(L'MSG40),MSG40 SUBSTITUTE MSG TEXT @VA08691 01033090
L R1,SAVEWRK4 ADDR @V3E7466 01033100
CALL DMKCVTBH CONVERT ADDR TO HEX FOR MSG @V3E7466 01033150
STCM R1,B'0111',FREEMSG+15 SUBSTITUTE IN MSG @V3E7466 01033200
OI CQPFLAG,CQPERR IND. ERROR MSG FOR STACK @V3E7466 01033250
LA R0,MSGSIZE SIZE OF MESSAGE @V3E7466 01033300
LA R1,FREEMSG DATA AREA ADDRESS @V3E7466 01033350
BAL R3,STACK GO STACK MESSAGE @V3E7466 01033400
MVI CQPFLAG,X'00' RESET MSG FLAG @V3E7466 01033450
LA R2,RC40 ERROR RETURN CODE = 40 @V3E7466 01033500
ST R2,SAVER2 SAVE TO RETURN TO CALLER @V3E7466 01033550
B NEXTADDR @V3E7466 01033600
SPACE 01034000
CQP040 LA R2,RC40 ERROR RETURN CODE = 40 @V3E7466 01035000
LM R0,R1,SAVEWRK8 ADDRESS AND LENGTH OF ARGUMENT 01036000
B CALLERM .... 01037000
SPACE 01038000
CQP045 LA R2,RC45 ERROR RETURN CODE = 45 @V3E7466 01039000
LM R0,R1,SAVER0 LENGTH AND ADDRESS OF BAD ARGUMENT 01040000
B CALLERM .... 01041000
SPACE 01042000
NOVAR SR R1,R1 ZERO PARM REG 01043000
CALLERM ICM R0,14,MODID+3 INSERT MODULE ID 01044000
CALL DMKERMSG GO SEND MESSAGE 01045000
* DMKERMSG WILL RETURN DIRECTLY TO DMKCFM 01046000
SPACE 01046100
RC3 EQU 3 ERROR RETURN CODE = 3 @V3E7466 01046150
RC6 EQU 6 ERROR RETURN CODE = 6 @V3E7466 01046200
RC21 EQU 21 ERROR RETURN CODE = 21 @V3E7466 01046250
RC22 EQU 22 ERROR RETURN CODE = 22 @V3E7466 01046300
RC23 EQU 23 ERROR RETURN CODE = 23 @V3E7466 01046350
RC40 EQU 40 ERROR RETURN CODE = 40 @V3E7466 01046400
RC45 EQU 45 ERROR RETURN CODE = 45 @V3E7466 01046450
* MESSAGES FOR 3705 RESPONSES 01048000
MSG3705 DC C'DEV XXXX PGM= ........ DUMP AUTO' @V200820 01049000
DASH DC C'-' RANGE DELIMITER? @V3E7466 01050100
SPACE 01050200
MSG40 DC CL33'DMKCQP040E DEV DOES NOT EXIST' @V3E7466 01050300
MSGSIZE EQU *-MSG40 DATA LENGTH @V3E7466 01050400
MVCADDR MVC MSG40+15,0(R1) MVC FOR MSG SUBSTITUTION @V3E7466 01050500
SPACE 01051000
EJECT 01052000
LTORG 01053000
MSGSLOW DC C'DMKCQP466I CTLR XXX IN BUFFER SLOWDOWN MODE' HRC065DK 01053100
EJECT 01054000
FREEBUF DSECT 01055000
REGSAVE DS 8F REGSAVE R1-R8 @V200930 01056000
CUINDSAV DS H CU INDEX SAVE @V3E7466 01057000
CQPFLAG DS X ERR. MSG IND. FOR STACK @V3E7466 01057100
DS X UNUSED @V3E7466 01057200
FRREGSAV DS 3F BXLE REG SAVE @V200930 01058000
FREEMSG DS 20F MESSAGE BUILDING AREA @V200930 01059000
FRMSGEND EQU FREEMSG+72 SIZE @V200930 01060000
DS 0D 01061000
FRBUFSIZ EQU (*-FREEBUF)/8 SIZE OF BUFFER IN DOUBLE WORDS 01062000
CQPERR EQU X'80' IND. ERROR MSG. FOR STACK @V3E7466 01062100
BIN0 EQU X'00' RESET FLAG INDICATOR @V3E7466 01062200
SPACE 6 01063000
SPACE 2 01064000
LINKBUF DSECT 01065000
DS CL80 OUTPUT BUFFER , LINKS, SYSTEM, @V200930 01066000
* TDSK 01067000
LINKBSIZ EQU (*-LINKBUF)/8 SIZE IN DBL WORDS 01068000
PROCBUF DSECT @V5BC0AB 01068010
DS CL40 PROCESSOR ONLINE MESSAGE BUFFER @V5BC0AB 01068012
PROCBSIZ EQU (*-PROCBUF)/8 SIZE IN DOUBLE-WORDS @V5BC0AB 01068014
SPACE 2 01069000
EJECT 01070000
PSA , @V306638 01071000
COPY DEVTYPES @V306638 01072000
COPY EQU @V306638 01073000
COPY RBLOKS @V306638 01074000
COPY SAVE @V306638 01075000
RADDR1 EQU SAVEWRK7 FIRST RADDR IN RANGE @V3E7466 01075100
RADDR2 EQU SAVEWRK7+2 SECOND RADDR IN RANGE @V3E7466 01075200
CQPBITS EQU SAVEWRK1+3 @V3E7466 01075300
COPY SPOOL @V306638 01076000
COPY VBLOKS @V306638 01077000
COPY VMBLOK @V306638 01078000
END 01079000