TRC TITLE 'DMMTRC (IPCS) VM/370 - RELEASE 6' 00001000 * 00002000 * MODULE NAME: 00003000 * DMMTRC SUBROUTINE OF DUMPSCAN 00004000 * 00005000 * FUNCTION: 00006000 * DISPLAYS 'NNN' TRACE ENTRIES. 00007000 * 00008000 * ATTRIBUTES: 00009000 * REUSABLE 00010000 * NON-REENTRANT 00011000 * 00012000 * ENTRY POINTS: 00013000 * DMMTRC 00014000 * 00015000 * ENTRY CONDITIONS: 00016000 * R2 POINTS TO PLIST 00017000 * 00018000 * EXIT CONDITIONS: 00019000 * R2 CONTAINS THE LAST DISPLAYED ADDRESS FOR SCROLL 00020000 * R15 CONTAINS A RETURN CODE 0 - GOOD 00021000 * 4 - WARNING 00022000 * 8 - FAIR 00023000 * 00024000 * CALLS TO OTHER ROUTINES: 00025000 * DMMGET FETCH DUMP PAGES INTO CORE 00026000 * DMMFED DISPLAY SPECIFIED AREAS 00027000 * 00028000 * EXTERNAL REFERENCES: 00029000 * 00030000 * TABLES/WORKAREAS: 00031000 * PLIST 00032000 * 00033000 * REGISTER USAGE: 00034000 * R15 ADDRESSES OF EXTERNAL ROUTINES 00035000 * R14 RETURNS FROM EXTERNAL ROUTINES 00036000 * R13 SAVE AREA ADDRESS 00037000 * R12 BASE 00038000 * R11,R10 INTERNAL LINKS 00039000 * R9-R2 WORK REGISTERS 00040000 * R2 PASSES ADDRESSES TO SUBROUTINES 00041000 * 00042000 * NOTES: 00043000 * 00044000 * 00045000 * OPERATION: 00046000 * THIS LISTS THE REQUESTED NUMBER OF TRACE 00047000 * TABLE ENTRIES. R2 POINTS TO THE PLIST. 00048000 * CMD IS 'TRACE NNN'. 'NNN' IS THE NUMBER OF 00049000 * ENTRIES IN HEX AND IS CONVERTED TO A START 00050000 * ADDRESS AND BYTE COUNT WHICH IS PASSED 00051000 * TO 'FED' WHO TREATS IT AS A 'DISPLAY' REQUEST. 00052000 * IF NO COUNT IS ENTERED, IT DEFAULTS TO 20. 00053000 * MAXIMUM COUNT IS 100 HEX OR THE TOP OF 00054000 * THE PAGE, WHICHEVER COMES FIRST. 00055000 * 00056000 * ERROR MESSAGES: 00057000 * DMMTRC710I NON-NUMERIC COUNT CHARACTER - RETRY 00058000 * 00059000 * 00060000 * * * * * * * *------- -------- -------- -------- ------* 00061000 EJECT 00062000 DMMTRC CSECT @VA04250 00063000 EXTRN DMMFED 'DISPLAY' @VA04250 00064000 EXTRN DMMGET DUMP DATA FETCH @VA04250 00065000 EXTRN DMMINT TRANSLATE @VA04250 00066000 STM R14,R12,SAVEDISP(R13) CALLERS SAVE @VA04250 00067000 LR R12,R15 ADDRESSABILITY @VA04250 00068000 USING DMMTRC,R12 USE IT @VA04250 00069000 ST R13,SAVEBACK CALLERS SAVE PTR @VA04250 00070000 B EYECATCH BYPASS @VA04250 00071000 DS 0D ALIGN @VA04250 00072000 DC CL8'DMMTRC' EYCATCH @VA04250 00073000 RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00074000 EYECATCH LA R13,SAVEAREA OUR SAVE PTR @VA04250 00075000 XC RETCODE(WORKL),RETCODE CLEAR RC AND WORK AREAS @VA04250 00076000 MVI TPLIST,BLANK CLEAR TPLIST @VA04250 00077000 MVC TPLIST+ONE(L'TPLIST-ONE),TPLIST TO BLANKS @VA04250 00078000 * * * * * * * *------- -------- -------- -------- ------* 00079000 * * * * * * * * PASS THE ADDRESS OF THE NEXT TT ENTRY 00080000 * * * * * * * * TO GETREC AND HAVE HIM FETCH IT 00081000 * * * * * * * *------- -------- -------- -------- ------* 00082000 ST R2,PLISTADD SAVE THE INCOMING PLIST POINTER @VA04250 00083000 LA R2,TRACCURR-IPLPSW DISP IN PSA, NEXT TT ENTRY @VA04250 00084000 L R15,GETADD GETREC @VA04250 00085000 BALR R14,R15 LINK @VA04250 00086000 LTR R15,R15 TEST IT @VA04250 00087000 BNZ BADRET BAD @VA04250 00088000 MVC NEXTADD,0(R2) SAVE THE ADDRESS OF THE TT NEXT @VA04250 00089000 * * * * * * * *------- -------- -------- -------- ------* 00090000 * * * * * * * * GET THE PLIST ADDRESS IN R2. THIS FIRST 00091000 * * * * * * * * RIGHT JUSTIFIES THE COUNT, CHECKING FOR 00092000 * * * * * * * * VALIDITY, THEN CONVERTS THE COUNT TO HEX. 00093000 * * * * * * * *------- -------- -------- -------- ------* 00094000 L R2,PLISTADD GET PLIST PTR @VA04250 00095000 CLC FENCE,PLL(R2) IS THERE A COUNT IN PLIST? @VA04250 00096000 BNE CMOVEZ YES - CONTINUE @VA04250 00097000 LA R3,DEFAULT NO - SET DEFAULT COUNT TO 19 @VA04250 00098000 ST R3,HEXCOUNT STORE IT @VA04250 00099000 B GOTCOUNT BYPASS ALL THIS STUFF @VA04250 00100000 CMOVEZ MVC COUNT,CZEROS SET COUNT TO ZEROS @VA04250 00101000 LA R4,L'COUNT COUNT 6 BYTES OF INPUT @VA04250 00102000 LA R2,PL2L(R2) 13 - DISP TO LAST BYTE OF INPUT @VA04250 00103000 LA R3,COUNT+L'COUNT-ONE LAST BYTE OF OUTPUT @VA04250 00104000 CCOMPR CLI 0(R2),BLANK IS IT BLANK @VA04250 00105000 BE CBUMP @VA04250 00106000 * * * * * * * *------- -------- -------- -------- ------* 00107000 * * * * * * * * FIRST CHECK INPUT VALIDITY 00108000 * * * * * * * *------- -------- -------- -------- ------* 00109000 CLI 0(R2),ZERO BELOW '0' @VA04250 00110000 BL CBADIN NON NUMERIC @VA04250 00111000 CLI 0(R2),X9 ABOVE '9' @VA04250 00112000 BH CBADIN NON NUMERIC @VA04250 00113000 CVALID MVC 0(ONE,R3),0(R2) MOVE THE CHAR @VA04250 00114000 BCTR R3,R0 BACK UP OUTPUT PTR @VA04250 00115000 CBUMP BCTR R2,R0 BACK UP INPUT PTR @VA04250 00116000 BCT R4,CCOMPR TRY AGAIN @VA04250 00117000 B CTRAN NOW GO TRANSLATE IT @VA04250 00118000 CBADIN LA R8,ERMSG710 ADDRESS AND @VA04250 00119000 LA R9,L'ERMSG710 AND LENGTH OF ERROR MSG @VA04250 00120000 BAL R10,WRTERM GO WRITE IT @VA04250 00121000 B RETURN GO BACK @VA04250 00122000 * * * * * * * *------- -------- -------- -------- ------* 00123000 * * * * * * * * NOW THE COUNT IS RIGHT JUSTIFIED IN THE 00124000 * * * * * * * * 'COUNT' FIELD, AND WILL BE TRANSLATED 00125000 * * * * * * * * TO HEX FOR THE COUNT ROUTINE. 00126000 * * * * * * * *------- -------- -------- -------- ------* 00127000 CTRAN PACK HEXCOUNT+FOR(L'HEXCOUNT-FOR),COUNT STRIP ZONES @VA04250 00128000 CVB R3,HEXCOUNT CONVERT TO BINARY @VA04250 00129000 LTR R3,R3 IS IT ZERO? @VA04250 00130000 BNZ GOTCOUNT NO @VA04250 00131000 LA R3,DEFAULT YES - SET DEFAULT TO 20 @VA04250 00132000 ST R3,HEXCOUNT PLUG VALIDATED COUNT @VA04250 00133000 * * * * * * * *------- -------- -------- -------- ------* 00134000 * * * * * * * * VALIDATED HEX COUNT IS IN 'HEXCOUNT' 00135000 * * * * * * * * AND R3. CHECK THE COUNT IS NOT OVER 100. 00136000 * * * * * * * * CALCULATE THE STARTING ADDRESS TO 00137000 * * * * * * * * PASS TO 'FED'. 00138000 * * * * * * * *------- -------- -------- -------- ------* 00139000 GOTCOUNT C R3,X100 COUNT OVER 100? @VA04250 00140000 BNH GOODCNT NO - CONTINUE @VA04250 00141000 LA R3,MAX YES - SET TO 100 HEX @VA04250 00142000 ST R3,HEXCOUNT UPDATE THE SAVED COUNT @VA04250 00143000 GOODCNT SLL R3,4 CONVERT ENTRIES TO BYTES @VA04250 00144000 ST R3,HEXCOUNT PLUG BYTE COUNT @VA04250 00145000 L R4,NEXTADD 'NEXT' TT ENTRY @VA04250 00146000 LA R3,0(R3) CLEAR HI HO @VA04250 00147000 LA R4,0(R4) DITTO @VA04250 00148000 SR R4,R3 FIND START ADDRESS FOR DISPLAY @VA04250 00149000 L R5,NEXTADD 'NEXT' TT ENTRY @VA04250 00150000 LA R5,0(R5) CLEAR HI @VA04250 00151000 SRL R5,12 ROUND TO PAGE BOUNDARY @VA04250 00152000 SLL R5,12 AND RESTORE @VA04250 00153000 CR R5,R4 IS START ADDRESS OFF PAGE BOTTO @VA04250 00154000 BNH ADDTRAN NO - GO SET UP ADDRESS FOR FED @VA04250 00155000 LR R4,R5 YES - USE PAGE BOUNDARY @VA04250 00156000 L R3,NEXTADD ALSO MUST CHANGE THE COUNT @VA04250 00157000 LA R3,0(R3) CLEAR HI @VA04250 00158000 SR R3,R4 COUNT BYTES FROM PAGE BOUND TO @VA04250 00159000 ST R3,HEXCOUNT 'NEXT' ADDRESS AND PLUG IT. @VA04250 00160000 * * * * * * * *------- -------- -------- -------- ------* 00161000 * * * * * * * * THE START ADDRESS FOR FED IS IN R4. 00162000 * * * * * * * * CONVERT IT TO EBCDIC AND PLUG IT IN THE 00163000 * * * * * * * * FED PLIST. 00164000 * * * * * * * *------- -------- -------- -------- ------* 00165000 ADDTRAN ST R4,HEXSTART PUT DOWN THE START ADDRESS @VA04250 00166000 LA R4,HEXSTART GET ITS ADDRESS FOR INTERP @VA04250 00167000 LA R3,TRINLEN 4 BYTES TO TRANSLATE @VA04250 00168000 L R15,INTADD DO IT @VA04250 00169000 BALR R14,R15 LINK @VA04250 00170000 MVC TPLIST2(TRADL),ADISP(R5) XLATED ADD. TO PLIST @VA04250 00171000 LA R4,HEXCOUNT ADDRESS OF COUNT TO TRANSLATE @VA04250 00172000 LA R3,TRINLEN LENGTH @VA04250 00173000 L R15,INTADD TRANSLATE THAT @VA04250 00174000 BALR R14,R15 LINK @VA04250 00175000 MVC TPLIST3(TRADL),ADISP(R5) AND PLUG IN FED PLIST @VA04250 00176000 LA R2,TPLIST PLIST FOR FED @VA04250 00177000 L R15,FEDADD LINK @VA04250 00178000 BALR R14,R15 GO DISPLAY IT @VA04250 00179000 B RETURN GO BACK @VA04250 00180000 * * * * * * * * ------- -------- -------- ------- * 00181000 * * * * * * * * WRTERM 00182000 * * * * * * * * ------- -------- -------- ------- * 00183000 WRTERM ST R8,PARMLIS1 SAVE MSG TEXT PTR IN PARM LIST @V4075A2 00184100 ST R9,PARMLIS2 AND TEXT LENGTH @V4075A2 00184200 LA R1,PARMLIS1 POINTER TO PASS @V4075A2 00184300 L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER@V4075A2 00184400 BALR R14,R15 GO WRITE THE LINE @V4075A2 00184500 BR R10 AND RETURN @V4075A2 00184600 PARMLIS1 DS F PARM1 @V4075A2 00184700 PARMLIS2 DS F PARM2 @V4075A2 00184800 FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 00184900 * * * * * * * * ------- -------- -------- ------- * 00186000 BADRET ST R15,RETCODE PLUG RETURN CODE @VA04250 00187000 B RETURN GET OUT @VA04250 00188000 * * * * * * * * ------- -------- -------- ------- * 00189000 * * * * * * * * RETURN 00190000 * * * * * * * * ------- -------- -------- ------- * 00191000 RETURN L R13,SAVEBACK CALLER SAVE PTR @VA04250 00192000 ST R2,SAVEREG2(R13) PASS BACK 'HEXAD' FOR SCROLL @VA04250 00193000 MVC SAVREG15(L'RETCODE,R13),RETCODE PLUG RETCODE @VA04250 00194000 LM R14,R12,SAVEDISP(R13) RESTORE CALLER REGS @VA04250 00195000 BR R14 RETURN @VA04250 00196000 * * * * * * * *------- -------- -------- -------- ------* 00197000 * * * * * * * * CONSTANTS 'N SUCH 00198000 * * * * * * * *------- -------- -------- -------- ------* 00199000 BLANK EQU X'40' BLANK @VA04250 00200000 ZERO EQU X'F0' ZERO AND @VA04250 00201000 X9 EQU X'F9' NINE FOR VALID HEX CHECKING @VA04250 00202000 ONE EQU 1 LENGTH FOR A ONE CHAR MOVE @VA04250 00203000 COUNT DS CL6 EBCDIC COUNT FROM PLIST @VA04250 00204000 NINE DC H'9' TRANSLATE ALPHA CHAR @VA04250 00205000 CZEROS DC 6C'0' PAD CHAR @VA04250 00206000 DUMP DC CL8'D' PLUG 'DISPLAY' INTO PLIST @VA04250 00207000 CODE4 DC F'4' RETCODE @VA04250 00208000 X100 DC X'00000100' MAX TRACE ENTRIES ALLOWED @VA04250 00209000 CREGLOAD DS F WORK AREA FOR COUNT @VA04250 00210000 HEXSTART DS F START ADDRESS TO PASS TO FED @VA04250 00211000 PLISTADD DS F SAVE AREA FOR PLIST ADDRESS @VA04250 00212000 NEXTADD DS F NEXT AVAIL TT ENTRY ADDRESS @VA04250 00213000 GETADD DC AL4(DMMGET) DATA FETCH @VA04250 00214000 FEDADD DC AL4(DMMFED) DISPLAY ROUTINE @VA04250 00215000 INTADD DC AL4(DMMINT) TRANSLATE @VA04250 00216000 RETCODE DS F RETURN CODE AREA @VA04250 00217000 HEXCOUNT DS D PACKED (HEX) COUNT FIELD @VA04250 00218000 TPLIST DS CL24 PLIST FOR FED @VA04250 00219000 ORG TPLIST+8 @VA04250 00220000 TPLIST2 DS CL8 SECOND PARM @VA04250 00221000 TPLIST3 DS CL8 THIRD PARM @VA04250 00222000 WORKL EQU *-RETCODE LENGTH OF WORK AREA TO CLEAR @VA04250 00223000 * * * * * * * * ------- -------- -------- ------- * 00224000 * * * * * * * * SAVEAREA 00225000 * * * * * * * * ------- -------- -------- ------- * 00226000 SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 00227000 SAVEUSR DS F USER WORD @VA04250 00228000 SAVEFWD DS F FORWARD POINTER @VA04250 00229000 SAVEBACK DS F BACKWARD POINTER @VA04250 00230000 SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 00231000 SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 00232000 SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 00233000 SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 00234000 SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 00235000 SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 00236000 SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 00237000 SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 00238000 SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 00239000 SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 00240000 SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 00241000 SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 00242000 SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 00243000 SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 00244000 SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 00245000 * * * * * * * * ------- -------- -------- ------- * 00246000 ADISP EQU 2 DISP INTO MSG OF ADDRESS @VA04250 00247000 FOR EQU 4 PACK CONSTS @VA04250 00248000 TRINLEN EQU 4 LENGTH OF ADDRESS TO TRANSLATE @VA04250 00249000 TRADL EQU 6 LENGTH OF TRANSLATED ADDRESS @VA04250 00250000 PLL EQU 8 PLIST ENTRY LENGTH @VA04250 00251000 SAVEDISP EQU 12 REGS IN SAVEAREA @VA04250 00252000 PL2L EQU 13 END OF SECOND PARM @VA04250 00253000 SAVREG15 EQU 16 REG 15 IN SAVE AREA @VA04250 00254000 TTENTLEN EQU 20 LENGTH OF A TRACE TABLE ENTRY @VA04250 00255000 DEFAULT EQU 19 DEFAULT NUMBER OF TT ENTRIES @VA04250 00256000 SAVEREG2 EQU 28 DISP TO REG 2 IN SAVE AREA @VA04250 00257000 MAX EQU 255 MAX COUNT @VA04250 00258000 FENCE DC XL8'FFFFFFFFFFFFFFFF' END OF PLIST @VA04250 00259000 ERMSG710 DC C'DMMTRC710I NON-NUMERIC COUNT CHARACTER - RETRY' @VA04427 00260000 DS 0D ALIGN @VA04250 00261000 PATCH DC 50F'0' PATCH AREA @VA04250 00262000 LTORG @VA04250 00263000 PSA PSA DSECT @VA04250 00264000 R0 EQU 0 R0 EQUALS REGISTER 0 @VA04250 00265000 R1 EQU 1 R1 EQUALS REGISTER 1 @VA04250 00266000 R2 EQU 2 R2 EQUALS REGISTER 2 @VA04250 00267000 R3 EQU 3 R3 EQUALS REGISTER 3 @VA04250 00268000 R4 EQU 4 R4 EQUALS REGISTER 4 @VA04250 00269000 R5 EQU 5 R5 EQUALS REGISTER 5 @VA04250 00270000 R6 EQU 6 R6 EQUALS REGISTER 6 @VA04250 00271000 R7 EQU 7 R7 EQUALS REGISTER 7 @VA04250 00272000 R8 EQU 8 R8 EQUALS REGISTER 8 @VA04250 00273000 R9 EQU 9 R9 EQUALS REGISTER 9 @VA04250 00274000 R10 EQU 10 R10 EQUALS REGISTER 10 @VA04250 00275000 R11 EQU 11 R11 EQUALS REGISTER 11 @VA04250 00276000 R12 EQU 12 R12 EQUALS REGISTER 12 @VA04250 00277000 R13 EQU 13 R13 EQUALS REGISTER 13 @VA04250 00278000 R14 EQU 14 R14 EQUALS REGISTER 14 @VA04250 00279000 R15 EQU 15 R15 EQUALS REGISTER 15 @VA04250 00280000 END 00281000