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