ibm:vm370-lib:dumpscan:dmmprg.assemble_src
Table of Contents
DMMPRG Source
References
- Fixes Applied : 0
- This Source Date : Friday, December 8, 1978
- Last Fix ID : [Unmodified]
Source Listing
- DMMPRG.ASSEMBLE.txt
- PRG TITLE 'DMMPRG (IPCS) VM/370 - RELEASE 6' 00001000
- * 00002000
- * MODULE NAME: DMMPRG 00003000
- * 00004000
- * 00005000
- * FUNCTION: HANDLE CP PROGRAM CHECK PROCESSING. 00006000
- * 00007000
- * 00008000
- * ATTRIBUTES: NON-REENTRANT 00009000
- * NON-REUSABLE 00010000
- * 00011000
- * 00012000
- * ENTRY POINTS: DMMPRG 00013000
- * 00014000
- * 00015000
- * ENTRY CONDITIONS: SHARED CONSTANT AREA CONTAINS INFORMATION 00016000
- * ABOUT THE FAILURE. 00017000
- * 00018000
- * 00019000
- * EXIT CONDITIONS: TO DMMPRM (PROMPTING SUBROUTINE) WITH THE 00020000
- * TEXT AREA CONTAINING THE FAILING CODE. 00021000
- * 00022000
- * 00023000
- * CALLS TO OTHER ROUTINES: DMMRMV TO PUT REGISTERS IN OUTPUT 00024000
- * DMMGRC TO GET DUMP REC.CONTAINING CODE 00025000
- * DMMTRN TO TRANSLATE FAILING CODE 00026000
- * DMMPRM WHEN DONE PROCESSING 00027000
- * 00028000
- * 00029000
- * EXTERNAL REFERENCES: SHARECON (SHARED CONSTANT AREA) 00030000
- * EXTINREC (DUMP INFORMATION RECORD) 00031000
- * EXTPSA (PREFIX STORAGE AREA IN DUMP) 00032000
- * 00033000
- * 00034000
- * TABLES/WORKAREAS: 00035000
- * 00036000
- * 00037000
- * REGISTER USAGE: R13 SAVEAREA 00038000
- * R12 BASE REGISTER 00039000
- * R11 PSA IN DUMP 00040000
- * R10 EXTINREC DUMP INFORMATION RECORD 00041000
- * R7 SHARECON (SHARED CONSTANT AREA) 00042000
- * R2-R6 WORK 00043000
- * 00044000
- * 00045000
- * NOTES: A 200 BYTE PATCH AREA EXISTS AT LABEL 'PATCH' 00046000
- * 00047000
- * 00048000
- * OPERATION: 00049000
- * I. DETERMINE THE LENGTH OF THE FAILING INSTR. AND SET UP 00050000
- * THE TEXT AREA BUFFERS AND VMFAILURE KEYWORD 00051000
- * II. CALL DMMIDM TO DETERMINE THE FAILING MODULE AND THE 00052000
- * DISPLACEMENT WITHIN THAT MODULE. 00053000
- * III. GET THE ADDRESS OF THE FAILING INSTR. AND BACK UP 20 00054000
- * BYTES OR TO THE BEGINNING OF THE MODULE WHICHEVER IS LESS. 00055000
- * IV. CALL DMMRMV TO PUT THE PRINTABLE REGS.IN THE OUTPUT 00056000
- * V. CALL DMMGRC TO READ IN THE DUMP REC. CONTAINING THE 00057000
- * FAILING CODE. 00058000
- * VI. CALL DMMTRN TO TRANS.THE FAILING CODE TO PRINTABLE. 00059000
- * VII. MOVE THE FAILING CODE TO THE OUTPUT TEXT AREA IN THE 00060000
- * FOLLOWING FORMAT: 00061000
- * 00062000
- * PRECEDING CODE XXXX XXXX XXXX XXXX XXXX VMINSTR=XXXXXXXX 00063000
- * 00064000
- * VIII. EXIT BY CALLING DMMPRM WHO WILL RETURN TO DMMEDM 00065000
- * 00066000
- * 00067000
- * ERROR MESSAGES: NONE 00068000
- * 00069000
- *************************************************************** 00070000
- EJECT 00071000
- DMMPRG CSECT @VA04250 00072000
- USING *,R15 TEMPORARY ADDRESSABILITY @VA04250 00073000
- B START BRANCH AROUND EYECATCHER @VA04250 00074000
- DS 0D @VA04250 00075000
- MODNAME DC C'DMMPRG ' MODULE NAME @VA04250 00076000
- RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00077000
- START STM R14,R12,12(R13) SAVE CALLERS REGISTERS @VA04250 00078000
- LR R12,R15 LOAD OUR BASE @VA04250 00079000
- DROP R15 @VA04250 00080000
- USING DMMPRG,R12 ESTABLISH ADDRESSABILITY @VA04250 00081000
- ST R13,SAVEAREA+8 SAVE POINTER TO CALLER'S SAVEAREA@VA04250 00082000
- LA R13,SAVEAREA ESTABLISH SAVE AREA @VA04250 00083000
- L R11,VPSA POINT TO PSA @VA04250 00084000
- USING PSA,R11 @VA04250 00085000
- L R10,VDMPIN POINT TO DUMP INFO REC @VA04250 00086000
- USING DMPINREC,R10 @VA04250 00087000
- L R7,VSHARE SHARED CONSTANT AREA @VA04250 00088000
- USING SHARECON,R7 @VA04250 00089000
- *************************************************************** 00090000
- * FIRST PROCESS THE FAILURE CODE 00091000
- *************************************************************** 00092000
- LH R5,INTPRL GET INSTRUCTION LENGTH CODE @VA04250 00093000
- SLL R5,29 STRIP HI ORDER BITS @VA04250 00094000
- SRL R5,29 ADJUST BACK TO NORMAL @VA04250 00095000
- STH R5,ILENGTH AND SAVE LENGTH IN BYTES @VA04250 00096000
- MVC VMFAIL1(L'CPA),CPA GET SYMPTOM CODE @VA04250 00097000
- MVC VMFAIL1+L'CPA(PREFLEN),DMPABEND ABEND PREFIX @V4075A1 00098000
- MVC ABCODE(CODELEN),DMPABEND ABEND CODE TO WRK AREA @V4075A1 00099000
- NC ABCODE,ABMASK KNOCK OFF 'PRG'LEAVE 'XX' @VA04250 00100000
- L R5,ABCODE CONVERT ABEND CODE SUFFIX @VA04250 00101000
- CVD R5,ABCODE TO DECIMAL @VA04250 00102000
- UNPK FAILCODE(UNPKLN),DECODE(DECLEN) MOVE TO TEXT @VA04250 00103000
- OI VMFAIL+DISP20,NUMERIC FIX UP SO IT PRINTS OK @VA04250 00104000
- MVC TEXT1(L'EHEADER3),EHEADER3 GET GEN REG HEADER @VA04250 00105000
- MVC TEXT5(L'EHEADER4),EHEADER4 GET HEADER @VA04250 00106000
- *************************************************************** 00107000
- * CALL DMMIDM TO GET THE MODULE NAME AND DISPLACEMENT 00108000
- *************************************************************** 00109000
- LA R3,PROPSW+DISP4 GET PROG CHK ADDRESS @VA04250 00110000
- ST R3,TRNPARM1 DATA ADDRESS FOR DMMTRN @VA04250 00111000
- L R3,FOUR BYTE COUNT TO FOUR @VA04250 00112000
- ST R3,TRNPARM BYTE COUNT FOR TRANSLATE @VA04250 00113000
- CALL DMMTRN CALL TRANSLATE RTN. @VA04250 00114000
- MVC TEXTA+RUNUSE(L'PCHK),PCHK PROG CHK HEADING @VA04250 00115000
- MVC TEXTA+RUNUSE+L'PCHK(EIGHT),0(R1) PRG CHK ADDR. @VA04250 00116000
- LA R1,PROPSW+DISP4 GET PROG. OLD PSW ADDR. @VA04250 00117000
- CALL DMMIDM CALL MODULE SEARCH RTN. @VA04250 00118000
- *************************************************************** 00119000
- * CALL DMMRMV TO GET THE GPRS TRANSLATED AND MOVED TO OUTPUT 00120000
- *************************************************************** 00121000
- LA R1,DMPGPRS GET ADDR. OF GENERAL REGISTERS @VA04250 00122000
- CALL DMMRMV CALL REGISTER MOVE ROUTINE @VA04250 00123000
- ************************************************ 00124000
- * CALL DMMGRC TO GET THE CODE WHERE THE FAILURE OCCURRED 00125000
- ************************************************ 00126000
- PRGINSTR L R2,PROPSW+DISP4 PICK UP PROG.CHK ADDRESS @VA04250 00127000
- LA R2,0(R2) CLEAR HIGH ORDER BYTE @VA04250 00128000
- ST R2,GRCPARM RECORD ADDRESS FOR GRC @VA04250 00129000
- CALL DMMGRC CALL THE RECORD READ RTN. @VA04250 00130000
- *************************************************************** 00131000
- * WE NOW HAVE THE CODE WHERE THE FAILURE OCCURRED 00132000
- * TRANSLATE IT TO PRINTABLE FORMAT BEFORE MOVING IT TO THE 00133000
- * OUTPUT TEXT AREA. DO SOME PRELIMINARY CALCULATIONS TO INSURE 00134000
- * WE STAY WITHIN THE MODULE WHERE THE FAILURE OCCURRED 00135000
- *************************************************************** 00136000
- LR R2,R1 RECORD ADDRESS FROM GRC @VA04250 00137000
- LA R4,DISP20 MAXIMUM NUMBER OF BYTES @VA04250 00138000
- L R5,MODDISP GET DISPLACEMENT @VA04250 00139000
- LA R5,0(R5) CLEAR HIGH ORDER BYTE IN CASE @VA04250 00140000
- LTR R5,R5 IF MODDISP IS ZERO @VA05442 00140100
- BNZ DISPNZ FORCE IT @VA05442 00140200
- LA R5,1(R5) TO BE ONE @VA05442 00140300
- ST R5,MODDISP @VA05442 00140400
- DISPNZ EQU * @VA05442 00140500
- CR R5,R4 IS DISP LESS THAN 20 @VA04250 00141000
- BL PRGLESS YES @VA04250 00142000
- MVC EXCOUNT,TWENTY GET COUNT FOR TRANS @VA04250 00143000
- B PRGMVCDE BYPASS DISPLACEMENT LESS THAN 20 @VA04250 00144000
- PRGLESS MVC EXCOUNT,MODDISP GET COUNT FOR TRANS @VA04250 00145000
- PRGMVCDE L R4,EXCOUNT SET LENGTH FOR EXECUTE @VA04250 00146000
- BCTR R4,R0 AND MAKE IT RIGHT @VA04250 00147000
- LR R5,R2 GET FAILING ADDRESS @VA04250 00148000
- S R5,EXCOUNT BACK UP BY DISPLACEMENT @VA04250 00149000
- EX R4,PRGMVEX MOVE THE CODE @VA04250 00150000
- B PRGTRAN CONTINUE @VA04250 00151000
- PRGMVEX MVC ESTART(0),0(R5) SUBJECT MOVE @VA04250 00152000
- PRGTRAN L R3,EXCOUNT GET COUNT OF DATA @VA04250 00153000
- ST R3,TRNPARM SAVE IT FOR TRANSLATE ROUTINE @VA04250 00154000
- SLL R3,1 MULTIPLY COUNT BY 2 @VA04250 00155000
- ST R3,HBCOUNT SAVE IT FOR LATER HERE TOO @VA04250 00156000
- LA R4,ESTART POINT TO DATA @VA04250 00157000
- ST R4,TRNPARM1 SAVE DATA POINTER FOR TRANSLATE @VA04250 00158000
- *************************************************************** 00159000
- * TRANSLATE THE FAILING CODE TO PRINTABLE (USING DMMTRN) 00160000
- *************************************************************** 00161000
- CALL DMMTRN GO TRNASLATE THE DATA TO READABLE@VA04250 00162000
- *************************************************************** 00163000
- * MOVE FAILING CODE TO THE OUTPUT AREA IN THE FOLLOWING FORMAT: 00164000
- * 00165000
- * PRECEDING CODE XXXX XXXX XXXX XXXX XXXX VMINSTR=XXXX XXXX 00166000
- * 00167000
- *************************************************************** 00168000
- LR R5,R1 GET ADDRESS OF TRANSLATED DATA @VA04250 00169000
- MVI TARG,BLANK CLEAR TARGET @VA04250 00170000
- MVC TARG+1(L'TARG-1),TARG @VA04250 00171000
- LH R2,ILENGTH GET INSTRUCTION LENGTH @VA04250 00172000
- SLL R2,1 MULTIPLY X 2 TO GET PRINTABLE AMT@VA04250 00173000
- LA R3,0(,R5) POINT TO OUTPUT @VA04250 00174000
- A R3,HBCOUNT GO TO END OF O/P @VA04250 00175000
- SR R3,R2 BACK UP TO BAD INSTR. @VA04250 00176000
- LA R6,TARG START OF PADDED CELL @VA04250 00177000
- AH R6,FIFTY END OF SAME @VA04250 00178000
- SR R6,R2 START OF BAD INSTR @VA04250 00179000
- BCTR R2,R0 CORRECT IT @VA04250 00180000
- LA R4,SHIFT9 SET UP TO SHIFT OUTPUT BY NINE @VA04250 00181000
- AR R6,R4 BUMP R6 BY 9 @VA04250 00182000
- EX R2,PRGMVINS MOVE THE INSTR @VA04250 00183000
- SR R6,R4 PUT IT BACK IN SYNC @VA04250 00184000
- MVC SPACE1(EIGHT,R6),VMINSTR INSERT KEYWORD @VA04250 00185000
- LA R2,0(,R5) GET LIMIT FOR MOVES @VA04250 00186000
- PRGMORCD S R3,FOUR DECREMENT INPUT PTR @VA04250 00187000
- SH R6,FIVE DITTO OUTPUT @VA04250 00188000
- MVC 0(DISP4,R6),0(R3) MOVE STUFF @VA04250 00189000
- CR R2,R3 DONE YET ? @VA04250 00190000
- BL PRGMORCD NOT YET - MOVE MORE @VA04250 00191000
- MVC PRECODE(L'TARG),TARG MOVE FAIL PADDED CODE @VA04250 00192000
- *************************************************************** 00193000
- * WE ARE DONE HERE. CALL DMMPRM (HE WILL EXIT TO DMMEDM) 00194000
- * 00195000
- *************************************************************** 00196000
- CALL DMMPRM CALL PROMPTING ROUTINE @VA04250 00197000
- PRGMVINS MVC 0(0,R6),0(R3) SUBJECT FOR MOVE @VA04250 00198000
- EJECT 00199000
- *************************************************************** 00200000
- * CONSTANTS SAVEAREAS AND EQUATES 00201000
- *************************************************************** 00202000
- SAVEAREA DS 18F OUR SAVEAREA @VA04250 00203000
- ESTART DC 16F'0' WORK AREA FOR FAILING CODE @VA04250 00204000
- VSHARE DC V(SHARECON) POINTER TO SHARED CONSTANT AREA @VA04250 00205000
- VDMPIN DC V(EXTINREC) POINTER TO DUMP INFO. RECORD @VA04250 00206000
- VPSA DC V(EXTPSA) POINTER TO PSA IN DUMP @VA04250 00207000
- ABMASK DC X'000000FF' USED TO ISOLATE ABEND CODE @VA04250 00208000
- FOUR DC X'00000004' @VA04250 00209000
- CPA DC C'ABEND' CP CODED ABEND @VA04250 00210000
- VMINSTR DC C'VMINSTR=' KEYWORD I.D. FOR FAILING INSTR. @VA04250 00211000
- DS 0F @VA04250 00212000
- HBCOUNT DS CL4 LENGTH OF TRANSLATED DATA @VA04250 00213000
- EHEADER3 DC C'GR 0-15' GENERAL REGISTER HEADER FOR TEXT @VA04250 00214000
- EHEADER4 DC C'PRECEDING CODE' I.D. FOR CODE PREC.PROG. CHK. @VA04250 00215000
- ABCODE DS D WORK AREA TO PROCESS ABEND CODE @VA04250 00216000
- EXCOUNT DC F'0' NUMBER OF BYTES OF PRECEDING CODE@VA04250 00217000
- TWENTY DC X'00000014' @VA04250 00218000
- TARG DS CL60 TEMP AREA FOR PROCESSED CODE @VA04250 00219000
- FIVE DC H'5' @VA04250 00220000
- FIFTY DC H'50' @VA04250 00221000
- ILENGTH DS H INSTRUCTION LENGTH OF FAIL INSTR @VA04250 00222000
- PCHK DC C'PROGRAM CHECK AT ' PRG. CHK. TEXT HEADING @VA04250 00223000
- PATCH DC 50F'0' PATCH AREA @VA04250 00224000
- COPY EXCONST @VA04250 00225000
- NUMERIC EQU X'F0' MAKE UNPACKED PRINTABLE @VA04250 00226000
- RUNUSE EQU 48 @VA04250 00227000
- BLANK EQU X'40' USED TO CLEAR AREAS TO BLANKS @VA04250 00228000
- PREFLEN EQU 3 LENGTH OF ABEND PREFIX @VA04250 00229000
- FAILCODE EQU VMFAIL+18 LOCATION OF FAILURE IN KEY @VA04250 00230000
- UNPKLN EQU 3 BYTE LENGTH OF UNPACK WORK AREA @VA04250 00231000
- DECODE EQU ABCODE+6 ABEND CODE IN DECIMAL FIELD @VA04250 00232000
- PRECODE EQU TEXT5+17 TEXT FOR CODE PRECEDING FAILURE @VA04250 00233000
- DECLEN EQU 2 LENGTH OF DECIMAL FIELD @VA04250 00234000
- SHIFT9 EQU 9 INCREMENT OUTPUT AMOUNT @VA04250 00235000
- SPACE1 EQU 1 OUTPUT SPACE AMOUNT @VA04250 00236000
- CODELEN EQU 4 LENGTH OF ABEND CODE @VA04250 00237000
- EIGHTEEN EQU 18 18 FOR LOAD ADDRESS ETC. @VA04250 00238000
- DISP20 EQU 20 20 FOR LOAD ADDRESS ETC. @VA04250 00239000
- SIX EQU 6 6 FOR LOAD ADDRESS ETC. @VA04250 00240000
- DISP4 EQU 4 4 FOR LOAD ADDRESS ETC. @VA04250 00241000
- EIGHT EQU 8 8 FOR LOAD ADDRESS ETC. @VA04250 00242000
- R0 EQU 0 R0 EQUALS REGISTER 0 @VA04250 00243000
- R1 EQU 1 R1 EQUALS REGISTER 1 @VA04250 00244000
- R2 EQU 2 R2 EQUALS REGISTER 2 @VA04250 00245000
- R3 EQU 3 R3 EQUALS REGISTER 3 @VA04250 00246000
- R4 EQU 4 R4 EQUALS REGISTER 4 @VA04250 00247000
- R5 EQU 5 R5 EQUALS REGISTER 5 @VA04250 00248000
- R6 EQU 6 R6 EQUALS REGISTER 6 @VA04250 00249000
- R7 EQU 7 R7 EQUALS REGISTER 7 @VA04250 00250000
- R8 EQU 8 R8 EQUALS REGISTER 8 @VA04250 00251000
- R9 EQU 9 R9 EQUALS REGISTER 9 @VA04250 00252000
- R10 EQU 10 R10 EQUALS REGISTER 10 @VA04250 00253000
- R11 EQU 11 R11 EQUALS REGISTER 11 @VA04250 00254000
- R12 EQU 12 R12 EQUALS REGISTER 12 @VA04250 00255000
- R13 EQU 13 R13 EQUALS REGISTER 13 @VA04250 00256000
- R14 EQU 14 R14 EQUALS REGISTER 14 @VA04250 00257000
- R15 EQU 15 R15 EQUALS REGISTER 15 @VA04250 00258000
- PSA @VA04250 00259000
- COPY DMPBLOKS @VA04250 00260000
- END 00261000
ibm/vm370-lib/dumpscan/dmmprg.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator