; UPD ID= 3365 on 1/29/81 at 2:04 PM by NIXON TITLE COBOLK FOR COBOL V12B SUBTTL DUMPS FOR COBOL CRASH AL BLACKINGTON/CAM/SEB ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ;COPYRIGHT (C) 1974, 1981 BY DIGITAL EQUIPMENT CORPORATION SEARCH P %%P==:%%P DEBUG==:DEBUG ONESEG==:ONESEG ;EDITS ;V10***************** ;NAME DATE COMMENTS ;ACK 13-MAR-75 COMP-3/EBCDIC IN THE DUMPS, AND CHANGE THE POSITION ; OF THE USAGE FIELD. ;******************** ; EDIT 347 REMOVE HALTS. REPLACE WITH MESSAGES AND RETURNS. ; EDIT 272 REMOVE EXTRANEOUS LINPAG DEFINITION HERE. IT IS DEFINED IN PURE TWOSEG RELOC 400000 SALL ;ACCUMULATORS W1=11 ;FIRST OF 2 WORDS FROM GENFIL WD=10 ;WORD FROM "GETDSK" CT=7 ;COUNTER DT=6 LN=5 ;NUMBER OF LINES LEFT ON PRINTER PAGE CH=4 ;I-O CHARACTER MX=3 ;USED IN GETPAG SAVNAM=2 ;SAVE NAME OF DUMP FILE SAVELN=1 ;USED IN GETPAG SAVEOP=0 ;SAVE OP-CODE IN DMPGEN W2=WD CP=CT ;DEFINE A FEW WORKING REGISTERS: TEMP=1 WCTR=10 TCTR=15 LIMIT=6 TEMP2=0 ;I/O CHANNELS DSK==2 DMP==3 DEFINE GET(TEXT),< MOVE TE,[POINT 7,[ASCIZ "TEXT"]] > DEFINE PUT(TEXT),< GET PUSHJ PP,LSTMES > DEFINE JPUT(TEXT),< GET PJRST LSTMES > EXTERNAL VERZUN EXTERNAL KBUFI,KBHO,KBHI,KILLPL,KILLAC EXTERNAL PHASEN,TOPLOC,IMPURE,KDATA,PROGID EXTERNAL PROGID,PPSIZE,PPLIST EXTERNAL SETFAK,FAKERA EXTERNAL PUREC EXTERNAL IMPURE,RESTRT EXTERNAL SETDN ;GET A DIAGNOSTIC MESSAGE ENTRY COBOLK COBOLK: JRST 1,K1 ;CONCEALED MODE PATCH Z ; (TRYING TO KEEP ENTRANCES JRST 1,K2 ; LOOKING THE SAME) K1: JSP 1,SETIO ;ENTRANCE TO DUMP CORE AND FILES JRST CORE K2: JSP 1,SETIO ;ENTRANCE TO DUMP FILES ONLY JRST DMPFIL ;MISCELLANEOUS KILLPP: IOWD 20,KILLPL TYPFLG: EXP KILLPL ;1ST PDL LOC IS TYPEOUT FLAG LINES==^D55 ;LINES PER PAGE ;THE FOLLOWING ARE CONSTANT REFERENCED BY 'COMMON'. THEY ARE NEVER USED ; IN COBOLK, BUT ARE DEFINED HERE TO GET RID OF UNDEFINED GLOBALS AT ; RUN TIME. INTERNAL LINPAG, MLOAD1 MLOAD1="B" LINPAG=^D56 IFE ONESEG,< INTERN WARNW,FATALW WARNW: FATALW: POPJ 17,> ;SET UP I-O DEVICES SETIO: MOVE PP,KILLPP MOVEI TA,0 ;INIT FLAG FOR NO TYPEOUT PUSH PP,TA OUTSTR [ASCIZ "?CBLBUG Catastrophe in Phase "] OUTCHR PHASEN OUTSTR [ASCIZ ", dump being taken "] INIT DMP,0 ;OPEN UP DISK SIXBIT /DSK/ XWD KBHO,0 JRST NODMP1 ;[347] CAN'T INIT THE DISK, TELL HIM. OUTBUF DMP,2 CALLI TC,30 ;GET JOB NUMBER MOVEI TD,3 IDIVI TC,12 ADDI TB,"0"-40 LSHC TB,-6 SOJG TD,.-3 MOVE TE,.JBREL## MOVEM TA,(TE) HRRM 1,(TE) MOVE TD,SRCFIL## ;DMPFIL NAME =SRCFIL NAME JUMPN TD,.+3 ;[347] IF NO SOURCE FILE NAME GIVE IT ONE. MOVEI TD,'CBL' ;[347] PUT CBL INTO SECOND HALF OF NAME. HLLM TA,TD ;[347] USE JOB NUMBER FOR FIRST HALF MOVSI TC,'DMP' ;EXTENSION "DMP" SETZB TB,TA MOVEM TD,SAVNAM ;SAVE FILE NAME FOR LATER TYPE-OUT ENTER DMP,TD JRST NODMP2 ;[347] CAN'T ENTER FILE TELL HIM. PUSHJ PP,PUTHDR JRST (1) SUBTTL DUMP OUT CORE CORE: IFN DEBUG,< PUSHJ PP,LSTAC PUSHJ PP,LSTPP PUSHJ PP,LSTTBL PUT MOVE TE,TOPLOC PUSHJ PP,OCTMES MOVEI CH,15 PUSHJ PP,DMPOUT MOVEI CH,14 PUSHJ PP,DMPOUT MOVEI LN,LINES MOVEI TA,137 ;DUMP JOB DATA AREA MOVEM TA,TOPLOC MOVE TA,[POINT 3,17,35] PUSHJ PP,COREGO PUSHJ PP,CRLF PUSHJ PP,LFONLY NEVER==1 IFE NEVER,< HLRZ TA,.JBSA## ;DUMP FIXED PORTION OF IMPURE AREA SUBI TA,1 MOVEM TA,TOPLOC MOVE TA,[POINT 3,FSTCLR##-1,35] PUSHJ PP,COREGO > MOVEI CH,14 PUSHJ PP,DMPOUT MOVEI LN,LINES PUSHJ PP,DMPTAB > JRST DMPFIL IFN DEBUG,< COREGO: MOVEI TC,1(TA) ;LINE = ZEROES? HRLI TC,-6 SKIPE (TC) JRST LOOP1A AOBJN TC,.-2 JRST LZERO ;LINE IS NOT ALL ZEROES LOOP1A: MOVEI TB,6 MOVEI TD,1(TA) MOVE TC,[POINT 3,TD,17] ILDB CH,TC ADDI CH,60 PUSHJ PP,DMPOUT SOJG TB,.-3 PUSHJ PP,SPACE3 MOVEI TB,6 LOOP2: PUSHJ PP,OCTOUT HRRZ TD,TA CAMGE TD,TOPLOC SOJG TB,LOOP2 LOOP3: MOVEI CH,15 PUSHJ PP,DMPOUT MOVEI CH,12 PUSHJ PP,DMPOUT CAMGE TD,TOPLOC JRST COREGO POPJ PP, ;LINE IS ALL ZEROES LZERO: MOVE TE,[POINT 7,DUMPM1] PUSHJ PP,LSTMES MOVEI TD,1(TA) MOVE TB,[POINT 3,TD,17] ILDB CH,TB ADDI CH,60 PUSHJ PP,DMPOUT TLNE TB,770000 JRST .-4 MOVE TE,[POINT 7,DUMPM2] PUSHJ PP,LSTMES CAMLE TC,TOPLOC JRST .+3 SKIPN (TC) AOJA TC,.-3 SUBI TC,1 HRRM TC,TA MOVE TB,[POINT 3,TC,17] ILDB CH,TB ADDI CH,60 PUSHJ PP,DMPOUT TLNE TB,770000 JRST .-4 MOVE TE,[POINT 7,DUMPM3] PUSHJ PP,LSTMES HRRZ TD,TA JRST LOOP3 DUMPM1: ASCIZ " LOCATIONS " DUMPM2: ASCIZ " THRU " DUMPM3: ASCIZ " ARE ZEROES " SUBTTL DUMP ALL THE TABLES DMPTAB: MOVE TB,TBLXWD DMPTB1: SKIPN W1,(TB) JRST DMPTB5 MOVE W1,(W1) HRRZ TD,.JBREL ;GET HIGHEST CORE ADDRESS HLRE TE,W1 ;IF TABLE MOVMS TE ; IS ADDI TE,(W1) ; ABOVE CAIGE TD,-1(TE) ; CORE, JRST DMPTB5 ; FORGET IT PUSH PP,TB PUSH PP,1(TB) MOVE TE,[POINT 7,[ASCIZ "****** "]] HRRZ TA,2(TB) ;IF THERE IS NOT A SPECIAL ROUTINE FOR JUMPE TA,DMPTB2 ; THIS TABLE, DO STANDARD, SETZM LN PUSHJ PP,TABHDR PUSHJ PP,(TA) ; ELSE GO TO THAT ROUTINE JRST DMPTB4 DMPTB2: MOVEI DT,0 PUSHJ PP,TABHDR DMPTB3: PUSHJ PP,TABLIN JUMPL W1,DMPTB3 DMPTB4: POP PP,TE POP PP,TB DMPTB5: ADDI TB,TTESIZ-1 AOBJN TB,DMPTB1 MOVEI CH,14 PUSHJ PP,DMPOUT MOVEI LN,LINES POPJ PP, ;PUT OUT A LINE OF TABLE DATA TABLIN: PUSH PP,W1 ;SAVE XLOC PUSH PP,DT ;SAVE RELATIVE WORD NUMBER MOVEI TE,0 MOVE TB,-4(PP) MOVE TB,0(TB) TABLN1: SKIPE 0(W1) JRST TABLN2 ADDI DT,1 CAMN W1,1(TB) JRST TABLN2 AOBJP W1,TABLN2 AOJA TE,TABLN1 TABLN2: CAIG TE,6 JRST TABLN3 PUSHJ PP,CRLF PUT < words > PUSH PP,DT MOVE TE,-1(PP) PUSHJ PP,OCTMES PUT < thru > POP PP,TE MOVEM TE,(PP) SUBI TE,1 PUSHJ PP,OCTMES PUT < are zeroes> PUSHJ PP,CRLF PUSHJ PP,LFONLY MOVEM W1,-1(PP) JUMPGE W1,TABLN9 CAMN W1,1(TB) JRST TABL10 TABLN3: POP PP,DT POP PP,W1 MOVE TE,[POINT 3,DT,20] TABLN4: ILDB CH,TE ADDI CH,"0" PUSHJ PP,DMPOUT TLNE TE,770000 JRST TABLN4 MOVEI CH,11 PUSHJ PP,DMPOUT MOVEI TD,6 TABLN5: ADDI DT,1 MOVE TA,[POINT 3,(W1)] PUSHJ PP,OCTOUT CAMN W1,1(TB) JRST TABLN6 AOBJP W1,TABLN7 SOJG TD,TABLN5 JRST TABLN7 TABLN6: AOBJP W1,.+1 PUSHJ PP,CRLF PUSHJ PP,LFONLY MOVE TE,STARS PUSHJ PP,LSTMES PUSHJ PP,CRLF TABLN7: PUSHJ PP,CRLF TABLN8: JUMPG LN,CPOPJ GET <****** Continuation of > MOVEI TD,-1 JRST TABHDR TABLN9: POP PP,TE POP PP,W1 JRST TABLN8 TABL10: POP PP,TE POP PP,W1 JRST TABLN6 SUBTTL DUMP OUT NAME TABLE NAMTAB: SKIPN DT,NAMNXT ;IF NO NAME TABLE, POPJ PP, ; FORGET IT CAML DT,.JBREL## SETZM 1(DT) ;CLEAR LOC AFTER NAMTAB MOVEI W1,1(W1) ;GET FIRST ADDRESS NAMT1: MOVEM W1,CURNAM ;SAVE ADDRESS OF FIRST ENTRY MOVEI TA,^D56 NAMT2: CAILE W1,(DT) JRST NAMT3 SKIPL TE,(W1) TLNE TE,(3B1) AOJA W1,NAMT2 SOJLE TA,NAMT3 AOJA W1,NAMT2 NAMT3: MOVE W2,W1 EXCH W1,CURNAM NAMT4: MOVEI TA,(W1) PUSHJ PP,NAMT10 MOVEI W1,(TA) MOVEI TA,(W2) CAILE TA,(DT) JRST NAMT6 NAMT5: MOVEI CH,11 PUSHJ PP,DMPOUT ADDI CP,10 CAIGE CP,^D32 JRST NAMT5 PUSHJ PP,NAMT10 MOVEI W2,(TA) NAMT6: PUSHJ PP,CRLF CAMGE W1,CURNAM JRST NAMT4 MOVEI LN,0 MOVE W1,W2 ;IF CAIL W1,(DT) ; WE ARE DONE, POPJ PP, ; GO AWAY ;DUMP OUT NAME TABLE (CONT'D) MOVEI CH,14 PUSHJ PP,DMPOUT PUT <****** Continuation of NAMTAB ******> MOVEI LN,LINES PUSHJ PP,CRLF PUSHJ PP,CRLF JRST NAMT1 NAMT10: HRRZ TE,NAMLOC MOVNS TE ADDI TE,(TA) MOVE TD,[POINT 3,TE,20] PUSHJ PP,DMPHW1 PUSHJ PP,SPACE3 HLRZ TE,(TA) PUSHJ PP,DMPHW PUSHJ PP,SPACE1 HRRZ TE,(TA) PUSHJ PP,DMPHW PUSHJ PP,SPACE3 NAMT9: MOVEI TA,1(TA) MOVE CP,(TA) ;IF THAT IS AN CAMN CP,[-1] ; EMPTY ONE, AOJA TA,NAMT12 ; USE HRLI TA,(POINT 6,0) ;TURN 'TA' INTO A BYTE POINTER MOVEI CP,0 NAMT11: HRRZ CH,.JBREL ;AVOID ILL MEM REF IF NAMTAB CAIG CH,(TA) ; HAPPENS TO END AT LAST CHAR POPJ PP, ; IN CORE ILDB CH,TA TRNN CH,60 JRST NAMT13 ADDI CH,40 CAIN CH,":" MOVEI CH,"-" CAIN CH,";" MOVEI CH,"." PUSHJ PP,DMPOUT AOJA CP,NAMT11 NAMT12: PUT <> MOVEI CP,7 NAMT13: SKIPL TE,(TA) TLNE TE,(3B1) AOJA TA,NAMT13 POPJ PP, > SUBTTL DUMP OUT FILE TABLES IFN DEBUG,< FILTAB: SKIPE DT,FILNXT ;EXIT IF NO DATA TABLE CAMN DT,FILLOC ;ALSO EXIT IF TABLE IS EMPTY JRST FILTBX MOVEI W1,1(W1) ;GET ADDR OF 1ST ENTRY MOVEI WCTR,1 ;INIT WORD COUNTER FILTB1: HRRZI TCTR,1 ;INIT TEMP COUNTER HRRZI LIMIT,SZ.FIL+1 ;USUAL # OF ENTRIES PER TABLE ENTRY (+1) PUSHJ PP,CRLF FILTB2: PUSHJ PP,CRLF HRRZ TE,WCTR PUSHJ PP,DMPHW ;PRINT WPRD # PUSHJ PP,SPACE3 HLRZ TE,(W1) ;PRINT CONTENTS OF WORD PUSHJ PP,DMPHW PUSHJ PP,SPACE1 HRRZ TE,(W1) PUSHJ PP,DMPHW PUSHJ PP,SPACE4 MOVE TEMP,(W1) ;GET WORD FROM TABLE PUSH PP,TEMP IFN ANS68,< CAIE TCTR,5 ;FILE-LIMITS ARE SPECIAL IF THEY EXIST JRST FILTB3 ;NO LDB TE,[POINT 5,TEMP,4] ADDI LIMIT,(TE) ;ADD EXTRA WORDS IN FILTB3:> PUSH PP,LIMIT IFN ANS68,< CAIL TCTR,SZ.FIL+1 ;FILE-LIMITS VALUES? SKIPA TE,[EXP FILWZ] ;YES > MOVE TE,FILOUT-1(TCTR) ;GET ROUTINE FOR THIS WORD PUSHJ PP,(TE) ;GO TO IT POP PP,LIMIT POP PP,TEMP ADDI WCTR,1 ADDI TCTR,1 ADDI W1,1 ;...AND ENTRY POINTER CAME TCTR,LIMIT ;END OF TABLE ENTRY? JRST FILTB2 HRRZ TEMP,FILNXT ;GET ADDR OF LAST ENTRY ADDI TEMP,1 ;BUMP IT 1 CAMGE W1,TEMP ;END OF TABLE? JRST FILTB1 ;NO, START OVER AGAIN POPJ PP, ;YES, GO AWAY FILOUT: EXP WORD1 ;SAME AS DATAB EXP FILW2 EXP FILW3 EXP FILW4 EXP FILW5 EXP FILW6 EXP FILW7 EXP FILW8 EXP FILW9 EXP FILW10 EXP FILW11 EXP FILW12 EXP FILW13 EXP FILW14 EXP FILW15 EXP FILW16 EXP FILW17 EXP FILW18 EXP FILW19 EXP FILW20 EXP FILW21 EXP FILW22 EXP FILW23 EXP FILW24 EXP FILW25 EXP FILW26 EXP FILW27 FILW2: IFN ANS68,< JUMPGE TEMP,FILW2A ;NO MULTIPLE REEL/UNIT BIT PUT FILW2A:> TLZ TEMP,600000 TLNN TEMP,177777 JRST WORD2C ;NO RERUN COUNT PUT HLRZ TE,TEMP PUSHJ PP,DECMES PUT <, > JRST WORD2C ;LIST RUN-TIME LOCATION FILW3: TLNN TEMP,777770 ;ANY FILE BUFFER SIZE? JRST LSLNCP ;NO PUT LDB TE,[POINT 16,TEMP,15] PUSHJ PP,DECMES PUT <, > JRST LSLNCP ;LIST LN & CP FILW4: TLNN TEMP,777700 JRST FILW4A ;NO N-S LABELS PUT LDB TE,[POINT 12,TEMP,11] PUSHJ PP,DECMES TLZ TEMP,777700 JUMPE TEMP,CPOPJ PUT <, > FILW4A: TLNN TEMP,77 JRST FILW4B PUT HLRZ TE,TEMP PUSHJ PP,DECMES TLZ TEMP,-1 JUMPE TEMP,CPOPJ PUT <, > FILW4B: PUT HRRZ TE,TEMP PJRST LSTTAB FILW5: TLNN TEMP,760000 JRST FILW5A IFN ANS68,< PUT LDB TE,[POINT 5,TEMP,4] PUSHJ PP,DECMES > IFN ANS74,< PUT LDB TE,[POINT 2,TEMP,4] XCT FAM(TE) PUSHJ PP,LSTMES > PUT <, > FILW5A: PUT LDB TE,[POINT 3,TEMP,7] XCT RECMOD(TE) PUSHJ PP,LSTMES PUT <, Int. Mode=> LDB TE,[POINT 3,TEMP,10] XCT RECMOD(TE) PUSHJ PP,LSTMES TLZ TEMP,777700 JUMPE TEMP,CPOPJ TLNN TEMP,77 JRST FILW5B PUT <, Multi-file Pos.=> HLRZ TE,TEMP PUSHJ PP,DECMES FILW5B: TRNN TEMP,-1 POPJ PP, PUT <, Link to next=> HRRZ TE,TEMP PJRST LSTTAB FILW6: TLNN TEMP,140000 JRST FILW6A PUT LDB TE,[POINT 2,TEMP,3] XCT LABELS(TE) PUSHJ PP,LSTMES LSH TEMP,4 JUMPE TEMP,CPOPJ PUT <, > FILW6A: PUSH PP,TCTR MOVSI TCTR,-^D12 FILW6B: JUMPE TEMP,FILW6D JUMPG TEMP,FILW6C XCT FILFL6(TCTR) PUSHJ PP,LSTMES FILW6C: LSH TEMP,1 AOBJN TCTR,FILW6B FILW6D: POP PP,TCTR IFN ANS68,< PUT > IFN ANS74,< PUT > LDB TE,[POINT 2,TEMP,1] XCT ORGAN(TE) PUSHJ PP,LSTMES LSH TEMP,2 JUMPE TEMP,CPOPJ PUT <, Actual key=> HLRZ TE,TEMP PJRST LSTTAB FILW7: TLNN TEMP,770000 JRST FILW7A PUT LDB TE,[POINT 6,TEMP,5] PUSHJ PP,DECMES PUT <, > TLZ TEMP,770000 FILW7A: TLNN TEMP,7777 JRST FILW7B PUT HLRZ TE,TEMP PUSHJ PP,DECMES PUT <, > FILW7B: HRRZS TEMP JUMPE TEMP,FILW7C PUT HRRZ TE,TEMP PJRST LSTTAB FILW7C: JPUT FILW8: IFN ANS74,< TLNN TEMP,-1 JRST FILW8A PUT HLRZ TE,TEMP TRNN TEMP,-1 PJRST DMPHW PUSHJ PP,DMPHW PUT <, > FILW8A:> TRNN TEMP,-1 POPJ PP, PUT HRRZ TE,TEMP PJRST LSTTAB FILW9: TLNN TEMP,-1 JRST FILW9A PUT HLRZ TE,TEMP TRNN TE,-1 PJRST LSTTAB PUSHJ PP,LSTTAB PUT <, > FILW9A: TRNN TEMP,-1 POPJ PP, PUT HRRZ TE,TEMP PJRST LSTTAB FILW10: TLNN TEMP,-1 JRST FIL10A PUT HLRZ TE,TEMP TRNN TE,-1 PJRST LSTTAB PUSHJ PP,LSTTAB PUT <, > FIL10A: TRNN TEMP,-1 POPJ PP, PUT HRRZ TE,TEMP PJRST LSTTAB FILW11: IFN ANS68,< TLNN TEMP,-1 JRST FIL11A PUT HLRZ TE,TEMP TRNN TE,-1 PJRST LSTTAB PUSHJ PP,LSTTAB PUT <, > FIL11A: TRNN TEMP,-1 POPJ PP, PUT HRRZ TE,TEMP PJRST LSTTAB > IFN ANS74,< TRNN TEMP,-1 POPJ PP, PUT HRRZ TE,TEMP PJRST LSTTAB > FILW12: IFN ANS68,< TLNN TEMP,-1 JRST FIL12A PUT HLRZ TE,TEMP TRNN TE,-1 PJRST LSTTAB PUSHJ PP,LSTTAB PUT <, > FIL12A: TRNN TEMP,-1 POPJ PP, PUT HRRZ TE,TEMP PJRST LSTTAB > IFN ANS74,< TLNN TEMP,-1 JRST FIL12A PUT HLRZ TE,TEMP TRNN TE,-1 PJRST DECMES PUSHJ PP,DECMES PUT <, > FIL12A: TRNN TEMP,-1 POPJ PP, PUT HRRZ TE,TEMP PJRST DECMES > FILW13: IFN ANS68,< TLNN TEMP,-1 JRST FIL13A PUT HLRZ TE,TEMP TRNN TE,-1 PJRST LSTTAB PUSHJ PP,LSTTAB PUT <, > FIL13A: TRNN TEMP,-1 POPJ PP, PUT HRRZ TE,TEMP PJRST LSTTAB > IFN ANS74,< TLNN TEMP,-1 JRST FIL13A PUT HLRZ TE,TEMP TRNN TE,-1 PJRST DECMES PUSHJ PP,DECMES PUT <, > FIL13A: TRNN TEMP,-1 POPJ PP, PUT HRRZ TE,TEMP PJRST DECMES > FILW14: TLNN TEMP,-1 JRST FIL14A IFN ANS68,< PUT > IFN ANS74,< PUT > HLRZ TE,TEMP TRNN TE,-1 PJRST LSTTAB PUSHJ PP,LSTTAB PUT <, > FIL14A: TRNN TEMP,-1 POPJ PP, IFN ANS68,< PUT > IFN ANS74,< PUT > HRRZ TE,TEMP PJRST LSTTAB FILW15: TLNN TEMP,-1 JRST FIL15A PUT HLRZ TE,TEMP TRNN TE,-1 PJRST LSTTAB PUSHJ PP,LSTTAB PUT <, > FIL15A: TRNN TEMP,-1 POPJ PP, PUT