ibm:vm370-lib:cp:dmkcqp.assemble_src
Table of Contents
DMKCQP Source
References
- Fixes Applied : 6
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC065DK]
Source Listing
- DMKCQP.ASSEMBLE.txt
- 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
ibm/vm370-lib/cp/dmkcqp.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator