GET TITLE 'DMMGET (IPCS) VM/370 - RELEASE 6' 00001000 * 00002000 * MODULE NAME: 00003000 * DMMGET SUBROUTINE OF DUMPSCAN 00004000 * 00005000 * FUNCTION: 00006000 * FETCHES PORTIONS OF THE DUMP INTO CORE 00007000 * 00008000 * ATTRIBUTES: 00009000 * REUSABLE 00010000 * NON-REENTRANT 00011000 * 00012000 * ENTRY POINTS: 00013000 * DMMGET 00014000 * 00015000 * ENTRY CONDITIONS: 00016000 * R2 CONTAINS THE REQUIRED DUMP ADDRESS 00017000 * 00018000 * EXIT CONDITIONS: 00019000 * R2 CONTAINS THE INCORE ADDRESS OF THE REQUESTED AREA 00020000 * R15 CONTAINS A RETURN CODE 0 - GOOD 00021000 * 4 - WARNING 00022000 * R2 X'00' - PAGE WITHIN DUMP 00023000 * BUT NOT DUMPED 00024000 * R2 X'FF' - PAGE OUTSIDE 00025000 * RANGE OF DUMP 00026000 * 8 - FATAL 00027000 * CALLS TO OTHER ROUTINES: 00028000 * DMMINT TRANSLATE 00029000 * 00030000 * EXTERNAL REFERENCES: 00031000 * SCRNAREA DISPLAY AREA 00032000 * 00033000 * TABLES/WORKAREAS: 00034000 * BUFF1 WORK BUFFER 00035000 * BUFF2 ITEM TABLE BUFFER 00036000 * 00037000 * REGISTER USAGE: 00038000 * R15 ADDRESSES OF EXTERNAL ROUTINES 00039000 * R14 RETURNS FROM EXTERNAL ROUTINES 00040000 * R13 SAVE AREA ADDRESS 00041000 * R12 BASE 00042000 * R11 DUMP FSCB ADDRESS 00043000 * R10 INTERNAL LINKS 00044000 * R9-R2 WORK REGISTERS 00045000 * R2 INPUT AND OUTPUT PARAMETERS 00046000 * 00047000 * NOTES: 00048000 * 00049000 * 00050000 * OPERATION: 00051000 * THE REQUIRED ADDRESS IS PASSED IN R2. 00052000 * GET READS IN THE ITEM TABLE RECORD 00053000 * AND SCANS THE ITEM TABLE LOOKING FOR THE 00054000 * PHYSICAL RECORD CONTAINING THE REQUIRED PAGE 00055000 * IT READS IN THE PAGE TO BUFF1 AND LOADS 00056000 * R2 WITH THE INCORE ADDRESS CORRESPONDING TO 00057000 * THE REQUESTED ADDRESS. THIS IS PASSED BACK 00058000 * TO THE CALLER 00059000 * 00060000 * ERROR MESSAGES: 00061000 * DMMGET100S ERROR ' ' READING ' ' DUMP 00062000 * DMMGET708I THIS PAGE NOT FOUND IN THE DUMP 00063000 * 00064000 * * * * * * * *-----------------------------------------* 00065000 SPACE 2 00066000 DMMGET CSECT @VA04250 00067000 ENTRY BUFF1 DUMP DATA @VA04250 00068000 ENTRY BUFF2 ITEM TABLE @VA04250 00069000 ENTRY ISW ITEM TABL READ? @VA04250 00070000 ENTRY RECORDNO LAST RECORD READ @VA04250 00071000 EXTRN SCRNAREA DISPLAY AREA @VA04250 00072000 EXTRN DUMPFSCB FSCB FOR DUMP @VA04250 00073000 EXTRN DMMINT TRANSLATE @VA04250 00074000 EXTRN CONSOLE VIRT CONS ADDR. @VA04250 00075000 STM R14,R12,SAVEDISP(R13) CALLER REGS @VA04250 00076000 LR R12,R15 ADDRESS @VA04250 00077000 USING DMMGET,R12 USE IT @VA04250 00078000 ST R13,SAVEBACK CALLER SAVE PTR @VA04250 00079000 B EYECATCH BYPASS EYECATCHER @VA04250 00080000 DS 0D ALIGN @VA04250 00081000 DC CL8'DMMGET' EYECATCHER @VA04250 00082000 RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00083000 EYECATCH LA R13,SAVEAREA OUR SAVE PTR @VA04250 00084000 XC RETCODE,RETCODE CLEAR RETURN CODE @VA04250 00085000 L R11,DFSCBADD CATCH THE APPROPRIATE DUMP @VA04250 00086000 CLI ISW,ON HAVE WE READ THE ITEM TABLE ? @VA04250 00087000 L R7,BUFF2ADD SET UP BUFFER ADDRESSABILITY @VA04250 00088000 BE GOTITEM YES - SKIP THE READ @VA04250 00089000 FSREAD FSCB=(R11),ERROR=RDERR,BUFFER=BUFF2,RECNO=2 @VA04250 00090000 MVI ISW,ON SET 'ITEM TABLE READ' SW. @VA04250 00091000 GOTITEM LA R7,BITMAP(R7) INCREMENT TO BIT MAP @VA04250 00092000 LA R2,NULL(R2) CLEAR HI-ORDER BYTE @VA04250 00093000 LR R4,R2 LOAD WORK REG @VA04250 00094000 SRL R4,12 GET PAGE NO. IN R4 @VA04250 00095000 LA R5,RECSTART START REC - 5 @VA04250 00096000 LA R6,REC2END SET 'TOO FAR'. 1792 END OF REC2 @VA04250 00097000 GETENTRY CH R4,0(R7) PAGE# = ITEM TBL ENTRY? @VA04250 00098000 BE GOTPAGE YES - GOT IT @VA04250 00099000 BL NOTINDMP PAGE NOT DUMPED?? @VA04250 00100000 LA R7,TWO(R7) BUMP ITEM TBL PTR @VA04250 00101000 LA R5,ONE(R5) BUMP REC @VA04250 00102000 CLC 0(L'FOXES,R7),FOXES END OF ITEM TABLE? @VA04250 00103000 BE OFFEND OFF END - SET FLAG IN R2 @VA04250 00104000 BCT R6,GETENTRY TRY AGAIN IF NOT TOO FAR @VA04250 00105000 OFFEND LA R2,OFFENDER SET R2 TO SHOW '0FF' @VA04250 00106000 B MSGITEND GO WRITE MESSAGE @VA04250 00107000 NOTINDMP SR R2,R2 CLEAR R2 TO PASS BACK @VA04250 00108000 B MSGITEND GO WRITE MSG @VA04250 00109000 GOTPAGE C R5,RECORDNO WAS THIS RECORD ALREADY READ? @VA04250 00110000 BE NOREAD YES - BYPASS THE READ @VA04250 00111000 FSREAD FSCB=(R11),ERROR=RDERR,BUFFER=BUFF1,RECNO=(R5) @VA04250 00112000 ST R5,RECORDNO SAVE THE RECORD NUMBER. @VA04250 00113000 NOREAD LR R9,R2 LOAD WORKREG9 @VA04250 00114000 SRL R9,12 ROUNDS R9 DOWN TO @VA04250 00115000 SLL R9,12 NEXT LOWER PAGE @VA04250 00116000 SR R2,R9 NOW R2 HAS OFFSET INTO BUFF2 @VA04250 00117000 L R5,BUFF1ADD ADDRESSABILITY FOR BUFF1 @VA04250 00118000 LA R2,0(R2,R5) NOW R2 HAS IN CORE ADDRESS @VA04250 00119000 * * * * * * * * ------- -------- -------- ------- * 00120000 * * * * * * * *RETURN 00121000 * * * * * * * * ------- -------- -------- ------- * 00122000 RETURN L R13,SAVEBACK GET SAVE REG @VA04250 00123000 MVC SAVREG15(L'RETCODE,R13),RETCODE AND RETURN CODE @VA04250 00124000 ST R2,SAVEREG2(R13) PLUG 'IN CORE' ADDRESS @VA04250 00125000 LM R14,R12,SAVEDISP(R13) RESTORE REGS @VA04250 00126000 BR R14 GO BACK TO CALLER @VA04250 00127000 * * * * * * * *------- -------- -------- -------- ------* 00128000 MSGITEND SLL R4,12 CONVERT PAGE # BACK TO ADDRESS @VA04250 00129000 ST R4,NFPAGE PLUG IT TO TRANSLATE IT @VA04250 00130000 LA R3,XADDL COUNT OF BYTES - 3 @VA04250 00131000 LA R4,NFPAGE+ONE ADDRESS OF DATA @VA04250 00132000 L R15,INTADD ADDRESS OF TRANSLATE ROUTINE @VA04250 00133000 BALR R14,R15 LINK @VA04250 00134000 MVC PNFMSGPA(LPAGE),0(R5) PLUG TRANSLATED PAGE @VA04250 00135000 LA R8,ERMSG708 ADDRESS @VA04250 00136000 LA R9,E708L AND LENGTH @VA04250 00137000 BAL R10,WRTERM GO WRITE IT @VA04250 00138000 MVC RETCODE,CODE4 SET POOR RET CODE @VA04250 00139000 B RETURN LINK @VA04250 00140000 * * * * * * * *------- -------- -------- -------- ------* 00141000 * * * * * * * * THIS CLEARS THE SCREEN AND ALLOWS THE 00142000 * * * * * * * * NEXT OPERATION TO BE POSITIONED 00143000 * * * * * * * * AT THE TOP OF THE SCREEN 00144000 * * * * * * * *------- -------- -------- -------- ------* 00145000 CLEAR STM R8,R9,SAVCLR SAVE REGS @VA04250 00146000 L R8,SCRNADD GET THE ADDRESS OF THE SCREEN @VA04250 00147000 ST R8,CCWC PLUG ADDRESS IN CCW @VA04250 00148000 LA R8,CCWC CCW ADD @VA04250 00149000 L R9,CONSADD VIRT CONS ADDRESS LOCATION @VA04250 00150000 L R9,0(R9) VIRT CONS CUU @VA04250 00151000 MVI CCWC,FSWRITE RESTORE CMD CODE @VA04250 00152000 MVI CCWCTL,ON SET ERASE BYTE ON @VA04250 00153000 WAITT WAIT FOR TERMINAL TO QUIESCE @VA04250 00154000 DC X'83890058' DIAGNOSE @VA04250 00155000 LM R8,R9,SAVCLR RESTORE REGS @VA04250 00156000 BR R10 RETURN @VA04250 00157000 * * * * * * * *------- -------- -------- -------- ------* 00158000 * * * * * * * * THIS FORMATS THE RETURN CODE INTO THE MESSAGE 00159000 * * * * * * * *------- -------- -------- -------- ------* 00160000 RDERR XC DEPACK(L'DEPACK+L'DECODE),DEPACK CLEAR WORKAREA @VA04250 00161000 CVD R15,DECODE GET RET CODE IN DECIMAL @VA04250 00162000 UNPK DEPACK+FIV(L'DEPACK-FIV),DECODE+SIX(L'DECODE-SIX) 00163000 OI DEPACK+SEV,NUMZONE FIX UP SIGN TO PRINT @VA04250 00164000 MVC ERRMSGCD,DEPACK+FIV PLUG ERROR CODEINTO MSG @VA04250 00165000 MVC ERRMSGFN,FN(R11) PLUG FILE NAME @VA04250 00166000 MVC ERRMSGFT,FT(R11) AND TYPE @VA04250 00167000 MVC ERRMSGM(L'ERRMSGM-ONE),FM(R11) AND MODE @VA04250 00168000 BAL R10,CLEAR LINK @VA04250 00169000 LA R8,ERMSG100 ADDRESS @VA04250 00170000 LA R9,E100L @VA04250 00171000 BAL R10,WRTERM WRITE IT @VA04250 00172000 MVC RETCODE,CODE8 SET BAD RET CODE @VA04250 00173000 B RETURN GET OUT @VA04250 00174000 * * * * * * * * ------- -------- -------- ------- * 00175000 * * * * * * * * WRTERM ROUTINE 00176000 * * * * * * * * ------- -------- -------- ------- * 00177000 WRTERM ST R8,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 00178100 ST R9,PARMLIS2 AND TEXT LENGTH @V4075A2 00178200 LA R1,PARMLIS1 POINTER TO PASS @V4075A2 00178300 L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER@V4075A2 00178400 BALR R14,R15 GO WRITE THE LINE @V4075A2 00178500 BR R10 AND RETURN @V4075A2 00178600 PARMLIS1 DS F PARM1 @V4075A2 00178700 PARMLIS2 DS F PARM2 @V4075A2 00178800 FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 00178900 * * * * * * * * ------- -------- -------- ------- * 00180000 * * * * * * * * CONSTANTS 00181000 * * * * * * * * ------- -------- -------- ------- * 00182000 * * * * * * * * SAVEAREA 00183000 * * * * * * * * ------- -------- -------- ------- * 00184000 SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 00185000 SAVEUSR DS F USER WORD @VA04250 00186000 SAVEFWD DS F FORWARD POINTER @VA04250 00187000 SAVEBACK DS F BACKWARD POINTER @VA04250 00188000 SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 00189000 SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 00190000 SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 00191000 SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 00192000 SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 00193000 SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 00194000 SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 00195000 SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 00196000 SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 00197000 SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 00198000 SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 00199000 SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 00200000 SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 00201000 SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 00202000 SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 00203000 * * * * * * * * ------- -------- -------- ------- * 00204000 OFFENDER EQU X'FF' OFF END OF DUMP FLAG @VA04250 00205000 ON EQU X'FF' ON SWITCH STATUS @VA04250 00206000 FSWRITE EQU X'19' WRITE CCW CMD CODE @VA04250 00207000 NUMZONE EQU X'F0' NUMERIC ZONE @VA04250 00208000 NULL EQU X'00' CLEAR REGS @VA04250 00209000 ONE EQU 1 BUMP CTR @VA04250 00210000 TWO EQU 2 BUMP CTR @VA04250 00211000 XADDL EQU 3 LENGTH OF HEX ADDRESS @VA04250 00212000 RECSTART EQU 5 BYPASS FIRST 4 RECORDS @VA04250 00213000 FIV EQU 5 UNPACK CONSTS @VA04250 00214000 SIX EQU 6 UNPACK CONSTS @VA04250 00215000 LPAGE EQU 6 LENGTH OF TRANSLATED PAGE ADDR @VA04250 00216000 SEV EQU 7 UNPACK CONSTS @VA04250 00217000 FN EQU 8 FILE NAME IN FSCB @VA04250 00218000 SAVEDISP EQU 12 SAVE REGS @VA04250 00219000 SAVREG15 EQU 16 DISP TO REG 15 @VA04250 00220000 FT EQU 16 FILE TYPE IN FSCB @VA04250 00221000 FM EQU 24 FILE MODE IN FSCB @VA04250 00222000 SAVEREG2 EQU 28 DISP TO REG 2 IN SAVEAREA @VA04250 00223000 BITMAP EQU 512 DISP OF BIT MAP INTO RECORD 2 @VA04250 00224000 REC2END EQU 1792 SEARCH LIMIT @VA04250 00225000 RECORDNO DC F'0' LAST RECORD READ @VA04250 00226000 FOXES DC X'FFFF' END OF ITEM TABLE @VA04250 00227000 ISW DC X'00' ITEM TABLE READ? @VA04250 00228000 RETCODE DS F RETURN CODE @VA04250 00229000 NFPAGE DS F WORK AREA FOR PAGE NOT FOUND @VA04250 00230000 BUFF1ADD DC AL4(BUFF1) DUMP DATA BUFFER @VA04250 00231000 BUFF2ADD DC AL4(BUFF2) DUMP INFORMATION RECORD @VA04250 00232000 DFSCBADD DC AL4(DUMPFSCB) FSCB @VA04250 00233000 INTADD DC AL4(DMMINT) TRANSLATE @VA04250 00234000 CONSADD DC AL4(CONSOLE) VIRT CONS ADDRESS @VA04250 00235000 * * * * * * * * ------- -------- -------- ------- * 00236000 * * * * * * * * RDERR CONSTANTS 00237000 * * * * * * * * ------- -------- -------- ------- * 00238000 CODE4 DC F'4' NON FATAL RETURN @VA04250 00239000 CODE8 DC F'8' FATAL RET @VA04250 00240000 DEPACK DS D UNPACKED RET CODE @VA04250 00241000 DECODE DS D DEC RET CODE @VA04250 00242000 ERMSG100 DC C'DMMGET100S ERROR ''' TEXT OF ERROR MSG @VA04423 00243000 ERRMSGCD DC CL3' ' * @VA04250 00244000 ERRMSGT2 DC C''' READING FILE ''' * @VA04250 00245000 ERRMSGFN DC CL8' ' * @VA04250 00246000 DC CL2' ' FILLER @VA04250 00247000 ERRMSGFT DC CL6' ' * @VA04250 00248000 ERRMSGM DC CL3' ''' * @VA04250 00249000 E100L EQU *-ERMSG100 * @VA04250 00250000 * * * * * * * * ------- -------- -------- ------- * 00251000 ERMSG708 DC C'DMMGET708I PAGE ''' ERROR @VA04250 00252000 PNFMSGPA DC CL6' ' MESSSAGE @VA04250 00253000 PNFMSGMS DC CL62''' NOT FOUND IN THE DUMP' @VA04250 00254000 E708L EQU *-ERMSG708 LENGTH @VA04250 00255000 * * * * * * * * ------- -------- -------- ------- * 00256000 * * * * * * * * CLEAR CONSTANTS 00257000 * * * * * * * * ------- -------- -------- ------- * 00258000 CCWC CCW X'19',X'0',X'20',1760 ERASE CCW @VA04250 00259000 CCWCTL EQU CCWC+5 CONTROL BYTE @VA04250 00260000 SAVCLR DS 2F SAVE FOR CLEAR SUBR. @VA04250 00261000 SCRNADD DC AL4(SCRNAREA) ADDRESS OF AREA TO BE DISPLAYED @VA04250 00262000 * * * * * * * * ------- -------- -------- ------- * 00263000 PATCH DC 50F'0' PATCH @VA04250 00264000 LTORG @VA04250 00265000 BUFF1 DS 512D @VA04250 00266000 BUFF2 DS 512D @VA04250 00267000 REGEQU @VA04250 00268000 END 00269000