VMB TITLE 'DMMVMB (IPCS) VM/370 - RELEASE 6' 00001000
* 00002000
* MODULE NAME: 00003000
* DMMVMB SUBROUTINE OF DUMPSCAN 00004000
* 00005000
* FUNCTION: 00006000
* DISPLAY ALL VMBLOCK ADDRESSES, USERIDS AND STATUS 00007000
* 00008000
* ATTRIBUTES: 00009000
* REUSABLE 00010000
* NON-REENTRANT 00011000
* 00012000
* ENTRY POINTS: 00013000
* DMMVMB 00014000
* 00015000
* ENTRY CONDITIONS: 00016000
* NONE 00017000
* 00018000
* EXIT CONDITIONS: 00019000
* RETURN CODE IN R15 0 - GOOD 00020000
* 4 - WARNING 00021000
* 00022000
* CALLS TO OTHER ROUTINES: 00023000
* DMMGET FETCH DUMP INTO CORE 00024000
* DMMINT TRANSLATE HEX TO EBCDIC 00025000
* 00026000
* EXTERNAL REFERENCES: 00027000
* 00028000
* 00029000
* TABLES/WORKAREAS: 00030000
* 00031000
* REGISTER USAGE: 00032000
* R15 ADDRESSES OF EXTERNAL ROUTINES 00033000
* R14 RETURNS FROM EXTERNAL ROUTINES 00034000
* R13 SAVE AREA ADDRESS 00035000
* R12 BASE 00036000
* R11-R7 NOT USED 00037000
* R6-R2 WORK REGISTERS 00038000
* R4 PASSES ADDRESS TO INT 00039000
* R3 PASSES LENGTH TO INT 00040000
* R2 PASSES ADDRESS TO GET 00041000
* 00042000
* NOTES: 00043000
* 00044000
* OPERATION: 00045000
* * * * * * * * THIS ROUTINE PROCESSES 'VMB' REQUESTS. 00046000
* * * * * * * * IT SEARCHES THE VMBLOCK CHAIN, LISTING 00047000
* * * * * * * * THE USERID, BLOCK ADDRESS, AND THE 00048000
* * * * * * * * 'VMR', 'VMD', 'VMO', AND 'VMQ' STATUS BYTES. 00049000
* 00050000
* ERROR MESSAGES: 00051000
* DMMVMB711I LOOP IN VMBLOK CHAIN 00052000
* 00053000
* * * * * * * *------- -------- -------- -------- ------* 00054000
* * * * * * * *------- -------- -------- -------- ------* 00055000
DMMVMB CSECT @VA04250 00056000
EXTRN DMMGET FETCH DUMP INTO CORE @VA04250 00057000
EXTRN DMMINT TRANSLATE @VA04250 00058000
EXTRN TRTABLE TRANSLATE TABLE @VA04830 00059000
STM R14,R12,SAVEDISP(R13) SAVE CALLER REGS @VA04250 00060000
LR R12,R15 ADDRESSABILITY @VA04250 00061000
USING DMMVMB,R12 ADD @VA04250 00062000
ST R13,SAVEBACK CALLERS SAVE AREA PTR @VA04250 00063000
B EYECATCH BYPASS EYE CATCHER @VA04250 00064000
DS 0D ALIGN @VA04250 00065000
DC CL8'DMMVMB' EYECATCHER @VA04250 00066000
RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00067000
EYECATCH LA R13,SAVEAREA OUR SAVE PTR @VA04250 00068000
XC RETCODE,RETCODE CLEAR RETURN @VA04250 00069000
* * * * * * * *------- -------- -------- -------- ------* 00070000
* * * * * * * * GO TO DMMGET TO GET THE SYSTEM 00071000
* * * * * * * * VMBLOCK ADDRESS 00072000
* * * * * * * *------- -------- -------- -------- ------* 00073000
LA R2,ASYSVM-PSA ADD DISP TO SYSVMB POINTER @VA04250 00074000
BAL R10,GOGET ADDRESS @VA04250 00075000
L R2,0(R2) GET TRUE VMBLOCK ADDRESS @VA04250 00076000
ST R2,BLOCKADD VMB ADDRESS FOR TRANS @VA04250 00077000
MVC USERID(L'OUTLEFT),BLANKOUT CLEAR WORK AREAS @VA04830 00078000
LA R2,VMRSTAT-VMBLOK(R2) ADD DISP TO STATUS @VA04250 00079000
BAL R10,GOGET BRING STATUS INTO CORE @VA04250 00080000
MVC VMBSTAT,0(R2) PLUG STATUS TO TRANSLATE @VA04250 00081000
L R2,BLOCKADD ADDRESS OF VMBLOK @VA04250 00082000
LA R2,VMUSER-VMBLOK(R2) ADD DISP TO USERID @VA04250 00083000
BAL R10,GOGET GET USERID INTO CORE @VA04250 00084000
MVC USERID,0(R2) PLUG USER TO TRANSLATE @VA04250 00085000
LA R3,TRANIN 7 - TRANS LENGTH @VA04250 00086000
LA R4,BLOCKADD+ONE TRANS ADDRESS @VA04250 00087000
L R15,INTADD TRANSLATE @VA04250 00088000
BALR R14,R15 GO @VA04250 00089000
MVC ADDRESS,0(R5) PLUG TRANSLATED ADDRESS IN MSG @VA04250 00090000
MVC VMRSTATE,STAT(R5) PLUG TRANSLATED STATUS @VA04250 00091000
MVC OUTLEFT,USERID FILL LEFT HALF @VA04250 00092000
MVI LRSW,R SET SWITCH RIGHT @VA04250 00093000
L R2,BLOCKADD SYSTEM VMBLOK @VA04250 00094000
LA R2,VMPNT-VMBLOK(R2) ADD DISP TO NEXT USER @VA04250 00095000
BAL R10,GOGET ADDRESS INTO CORE @VA04250 00096000
L R2,0(R2) ADDRESS OF NEXT VMBLOK @VA04250 00097000
LTR R2,R2 IS IT ZEROS @VA04250 00098000
BNZ SAVEOC NO - KEEP ON @VA04250 00099000
LA R8,HEADER1 HEADER ADDRESS @VA04250 00100000
LA R9,L'HEADER1 30 - LENGTH OF SHORT HEADER @VA04250 00101000
BAL R10,WRTERM WRITE HEADER @VA04250 00102000
LA R8,USERID ADDRESS @VA04250 00103000
LA R9,L'OUTLEFT 28 - ENTRY LENGTH @VA04250 00104000
BAL R10,WRTERM WRITE ONE ENTRY @VA04250 00105000
B RETURN CHECK FOR RIGHT HALF @VA04250 00106000
SAVEOC LA R8,HEADER1 HEADER ADDRESS @VA04250 00107000
LA R9,L'HEADER1+L'HEADER2 60 - LENGTH @VA04250 00108000
BAL R10,WRTERM WRITE HEADER @VA04250 00109000
ST R2,OPVMADD SAVE 'END-OF-CHAIN' ADDRESS @VA04250 00110000
ST R2,BLOCKADD VMB ADDRESS FOR TRANS @VA04250 00111000
* * * * * * * *------- -------- -------- -------- ------* 00112000
* * * * * * * * NOW PROCESS THE REMAINING VMBLOCKS 00113000
* * * * * * * *------- -------- -------- -------- ------* 00114000
LA R6,MAXUSER MAX USERS - 256 @VA04250 00115000
BALGET MVC USERID(L'OUTLEFT),BLANKOUT CLEAR WORK AREAS @VA04830 00116000
L R2,BLOCKADD ADDRESS OF NEXT VMBLOK @VA04250 00117000
LA R2,VMRSTAT-VMBLOK(R2) ADD DISP TO STATUS @VA04250 00118000
BAL R10,GOGET BRING STATUS INTO CORE @VA04250 00119000
MVC VMBSTAT,0(R2) PLUG STATUS TO TRANSLATE @VA04250 00120000
L R2,BLOCKADD ADDRESS OF VMBLOK @VA04250 00121000
LA R2,VMUSER-VMBLOK(R2) ADD DISP TO USERID @VA04250 00122000
BAL R10,GOGET GET USERID INTO CORE @VA04250 00123000
MVC USERID,0(R2) PLUG USER TO TRANSLATE @VA04250 00124000
LA R3,TRANIN 7 - TRANS LENGTH @VA04250 00125000
LA R4,BLOCKADD+ONE TRANS ADDRESS @VA04250 00126000
L R15,INTADD TRANSLATE @VA04250 00127000
BALR R14,R15 LINK @VA04250 00128000
MVC ADDRESS,0(R5) PLUG TRANSLATED ADDRESS IN MSG @VA04250 00129000
MVC VMRSTATE,STAT(R5) PLUG TRANSLATED STATUS @VA04250 00130000
CLI LRSW,L IS IT 'LEFT' @VA04250 00131000
BE MOVEL YES - MOVE IN LEFT HALF @VA04250 00132000
MVC OUTRIGHT,USERID NO - MOVE IT TO RIGHT @VA04250 00133000
MVI LRSW,L SET SWITCH LEFT @VA04250 00134000
LA R8,OUTLEFT ADDRESS @VA04250 00135000
LA R9,L'HEADER1+L'HEADER2 LENGTH - 60 @VA04250 00136000
BAL R10,WRTERM WRITE A LINE @VA04250 00137000
B NBA GET ADDRESS OF NEXT BLOCK @VA04250 00138000
MOVEL MVC OUTLEFT,USERID FILL LEFT OF LINE @VA04250 00139000
MVI LRSW,R SET SWITCH RIGHT @VA04250 00140000
NBA L R2,BLOCKADD SYSTEM VMBLOK @VA04250 00141000
LA R2,VMPNT-VMBLOK(R2) ADD DISP TO NEXT USER @VA04250 00142000
BAL R10,GOGET ADDRESS INTO CORE @VA04250 00143000
L R2,0(R2) ADDRESS OF NEXT VMBLOK @VA04250 00144000
ST R2,BLOCKADD VMB ADDRESS FOR TRANS @VA04250 00145000
C R2,OPVMADD POINT TO END OF CHAIN? @VA04250 00146000
BE LASTCHEK YES - CHECK FOR A HALF LINE @VA04250 00147000
BCT R6,BALGET GET NEXT VMBLOCK @VA04250 00148000
LA R8,ERMSG711 ADDRESS @VA04250 00149000
LA R9,L'ERMSG711 LENGTH @VA04250 00150000
BAL R10,WRTERM 'LOOP IN VMBLOCK CHAIN' @VA04250 00151000
MVC RETCODE,CODE4 BAD RET @VA04250 00152000
B RETURN GIVE UP @VA04250 00153000
* * * * * * * * ------- -------- -------- ------- * 00154000
* * * * * * * * CHECK FOR LEFT OR RIGHT 00155000
* * * * * * * * ------- -------- -------- ------- * 00156000
LASTCHEK CLI LRSW,R IS THERE STILL A HALF LINE? @VA04250 00157000
BNE RETURN NO - RETURN @VA04250 00158000
LA R8,OUTLEFT ADDRESS @VA04250 00159000
LA R9,L'OUTLEFT AND LENGTH - 28 @VA04250 00160000
BAL R10,WRTERM YES - WRITE IT @VA04250 00161000
B RETURN CLOSE OUT @VA04250 00162000
* * * * * * * * ------- -------- -------- ------- * 00163000
* * * * * * * * COMMON WRTERM 00164000
* * * * * * * * ------- -------- -------- ------- * 00165000
WRTERM L R7,TRTABADD GET TR TABLE ADDRESS @VA04830 00166000
MVI 0(R7),BLANK SET '00' TO TRANSLATE AS '40' @VA04830 00167000
BCTR R9,R0 CORRECT COUNT FOR TR @VA04830 00168000
EX R9,TRANSLAT GET OUT ALL BAD STUFF @VA04830 00169000
MVI 0(R7),XZERO RESTORE TRANSLATE TABLE @VA04830 00170000
LA R9,1(R9) CORRECT COUNT FOR WRITE @VA04830 00171000
ST R8,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 00172000
ST R9,PARMLIS2 AND TEXT LENGTH @V4075A2 00173000
LA R1,PARMLIS1 POINTER TO PASS @V4075A2 00174000
L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER@V4075A2 00175000
BALR R14,R15 GO WRITE THE LINE @V4075A2 00176000
BR R10 AND RETURN @V4075A2 00177000
PARMLIS1 DS F PARM1 @V4075A2 00178000
PARMLIS2 DS F PARM2 @V4075A2 00179000
FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 00180000
TRANSLAT TR 0(0,R8),0(R7) OBJCT TRANSLATE @VA04830 00181000
* * * * * * * * ------- -------- -------- ------- * 00182000
* * * * * * * * COMMON ROUTINE TO LINK TO GETREC 00183000
* * * * * * * * AND CHECK RETURN CODES 00184000
* * * * * * * * ------- -------- -------- ------- * 00185000
GOGET L R15,GETADD GETREC ADDRESS @VA04250 00186000
BALR R14,R15 LINK @VA04250 00187000
LTR R15,R15 CHECK RETURN CODE @VA04250 00188000
BNZ CODECHEK GO FIND OUT JUST HOW BAD @VA04250 00189000
BR R10 RETURN TO CALLER @VA04250 00190000
CODECHEK C R15,CODE4 WARNING? @VA04250 00191000
BNE FATAL NO - BAD STUFF @VA04250 00192000
MVC RETCODE,CODE4 SET WARNING @VA04250 00193000
B RETURN RETURN @VA04250 00194000
FATAL MVC RETCODE,CODE8 FATAL @VA04250 00195000
B RETURN GO BACK @VA04250 00196000
* * * * * * * * ------- -------- -------- ------- * 00197000
* * * * * * * * RETURN 00198000
* * * * * * * * ------- -------- -------- ------- * 00199000
RETURN L R13,SAVEBACK CALLERS SAVE PTR @VA04250 00200000
MVC SAVREG15(L'RETCODE,R13),RETCODE RET CODE IN R15 @VA04250 00201000
LM R14,R12,SAVEDISP(R13) RESTORE REGS @VA04250 00202000
BR R14 RETURN @VA04250 00203000
* * * * * * * * ------- -------- -------- ------- * 00204000
* * * * * * * * CONSTANTS 00205000
* * * * * * * * ------- -------- -------- ------- * 00206000
BLOCKADD DS F VMBLOCK ADDRESS @VA04250 00207000
VMBSTAT DS F STATUS BYTES @VA04250 00208000
OPVMADD DS F ADDRESS OPERATOR VMBLOK @VA04250 00209000
RETCODE DS F RETURN CODE @VA04250 00210000
GETADD DC AL4(DMMGET) DUMP PAGE FETCHER @VA04250 00211000
INTADD DC AL4(DMMINT) TRANSLATOR @VA04250 00212000
TRTABADD DC AL4(TRTABLE) TRANSLATE TABLE @VA04830 00213000
CODE4 DC F'4' WARNING RETURN CODE @VA04250 00214000
CODE8 DC F'8' FATAL RETURN CODE @VA04250 00215000
* * * * * * * * ------- -------- -------- ------- * 00216000
* * * * * * * * SAVEAREA 00217000
* * * * * * * * ------- -------- -------- ------- * 00218000
SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 00219000
SAVEUSR DS F USER WORD @VA04250 00220000
SAVEFWD DS F FORWARD POINTER @VA04250 00221000
SAVEBACK DS F BACKWARD POINTER @VA04250 00222000
SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 00223000
SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 00224000
SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 00225000
SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 00226000
SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 00227000
SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 00228000
SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 00229000
SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 00230000
SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 00231000
SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 00232000
SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 00233000
SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 00234000
SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 00235000
SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 00236000
SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 00237000
* * * * * * * * ------- -------- -------- ------- * 00238000
XZERO EQU X'00' HEX ZERO FOR TRANS TABLE @VA04830 00239000
ONE EQU 1 COUNTER INCREMENT @VA04250 00240000
STAT EQU 6 STAUS DISP @VA04250 00241000
SAVEDISP EQU 12 REGS IN SAVE AREA @VA04250 00242000
SAVREG15 EQU 16 REG 15 IN SAVE AREA @VA04250 00243000
BLANK EQU X'40' BLANK FOR TRANSLATE TABLE @VA04830 00244000
R EQU X'D9' RIGHT SWITCH STATUS @VA04250 00245000
L EQU X'D3' LEFT SWITCH STATUS @VA04250 00246000
MAXUSER EQU 256 MAX OF 256 USERS @VA04250 00247000
TRANIN EQU 7 INPUT LENGTH TO TRANSLATE @VA04250 00248000
LRSW DS C LEFT/RIGHT SWITCH @VA04250 00249000
OUTLINE DS CL60 OUTPUT LINE @VA04250 00250000
ORG OUTLINE LINE DESCRIPTION @VA04250 00251000
OUTLEFT DS CL28 LEFT HALF @VA04250 00252000
OUTSPACE DC CL4' ' SPACE @VA04250 00253000
OUTRIGHT DS CL28 RIGHT HALF @VA04250 00254000
USERID DS 1D USER ID @VA04250 00255000
UIDSPACE DS CL2 PADDING @VA04250 00256000
ADDRESS DS CL6 VMBLOCK ADDRESS @VA04250 00257000
ADDSPACE DS CL4 PADDING @VA04250 00258000
VMRSTATE DS CL8 STATUS @VA04250 00259000
HEADER1 DC CL30'USERID ADDRESS VMRSTAT' @VA04250 00260000
HEADER2 DC CL30' USERID ADDRESS VMRSTAT' @VA04250 00261000
ERMSG711 DC C'DMMVMB711I LOOP IN VMBLOK CHAIN' @VA04428 00262000
BLANKOUT DC CL30' ' FILL CHAR @VA04830 00263000
PATCH DC 50F'0' PATCH @VA04250 00264000
LTORG @VA04250 00265000
PSA LOW CORE DSECT @VA04250 00266000
COPY VMBLOK VBLOKS DSECT @VA04250 00267000
R0 EQU 0 R0 EQUALS REGISTER 0 @VA04250 00268000
R1 EQU 1 R1 EQUALS REGISTER 1 @VA04250 00269000
R2 EQU 2 R2 EQUALS REGISTER 2 @VA04250 00270000
R3 EQU 3 R3 EQUALS REGISTER 3 @VA04250 00271000
R4 EQU 4 R4 EQUALS REGISTER 4 @VA04250 00272000
R5 EQU 5 R5 EQUALS REGISTER 5 @VA04250 00273000
R6 EQU 6 R6 EQUALS REGISTER 6 @VA04250 00274000
R7 EQU 7 R7 EQUALS REGISTER 7 @VA04250 00275000
R8 EQU 8 R8 EQUALS REGISTER 8 @VA04250 00276000
R9 EQU 9 R9 EQUALS REGISTER 9 @VA04250 00277000
R10 EQU 10 R10 EQUALS REGISTER 10 @VA04250 00278000
R11 EQU 11 R11 EQUALS REGISTER 11 @VA04250 00279000
R12 EQU 12 R12 EQUALS REGISTER 12 @VA04250 00280000
R13 EQU 13 R13 EQUALS REGISTER 13 @VA04250 00281000
R14 EQU 14 R14 EQUALS REGISTER 14 @VA04250 00282000
R15 EQU 15 R15 EQUALS REGISTER 15 @VA04250 00283000
END 00284000