MOD TITLE 'DMMMOD (IPCS) VM/370 - RELEASE 6' 00001000
* 00002000
* MODULE NAME: 00003000
* DMMMOD SUBROUTINE OF DUMPSCAN 00004000
* 00005000
* FUNCTION: 00006000
* LOCATE MODULES AND ENTRY POINTS IN THE LOAD MAP. 00007000
* IDENTIFY THE MODULE CONTAINING A GIVEN ADDRESS 00008000
* 00009000
* ATTRIBUTES: 00010000
* REUSABLE 00011000
* NON-REENTRANT 00012000
* 00013000
* ENTRY POINTS: 00014000
* DMMMOD 00015000
* 00016000
* ENTRY CONDITIONS: 00017000
* R2 POINTS TO PLIST WITH TOKENIZED INPUT 00018000
* 00019000
* EXIT CONDITIONS: 00020000
* RETURN CODE IN R15 0 - GOOD 00021000
* 4 - WARNING 00022000
* 8 - FATAL 00023000
* 00024000
* CALLS TO OTHER ROUTINES: 00025000
* DMMMOD GETS DUMP AREAS INTO CORE 00026000
* DMMDIR DISPLAYS GOTTEN AREAS 00027000
* 00028000
* EXTERNAL REFERENCES: 00029000
* DUMPFSCB 00030000
* BUFF2 ITEM TABLE 00031000
* ISW ITEM-TABLE-READ SWITCH 00032000
* CMDINFO HEADER LINE 00033000
* 00034000
* TABLES/WORKAREAS: 00035000
* BUFF LOAD MAP READ AREA 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,R10 INTERNAL LINKS 00043000
* R9-R2 WORK REGISTERS 00044000
* R2 PASSES ADDRESS OF PLIST TO SUBROUTINES 00045000
* 00046000
* NOTES: 00047000
* 00048000
* 00049000
* OPERATION: 00050000
* TYPE 1 - LOCATE A MODULE 00051000
* DUMPSCAN PASSES 'MOD' THE ADDRESS OF THE PLIST 00052000
* THIS POINTS TO A MODULE NAME. MOD READS IN A SHORT 00053000
* FORM OF THE LOAD MAP FROM THE END OF THE DUMP, 00054000
* SCANS FOR THE NAME, GETS THE ADDRESS OF THE MODULE AT 00055000
* IPL TIME, CHECKS THROUGH THE SEGMENT AND PAGE TABLES 00056000
* TO FIND WHERE IT WAS LOADED AT DUMP TIME. 00057000
* IT THEN CALLS GETREC TO FETCH THAT AREA INTO CORE, 00058000
* AND CALLS DIR TO DISPLAY IT. 00059000
* TYPE 2 - FIX AN ADDRESS 00060000
* DUMPSCAN PASSES MOD AN ADDRESS. THIS IS VALIDITY 00061000
* CHECKED THEN A SEARCH IS MADE TO FIND THE CODE WHICH 00062000
* CONTAINS THE ADDRESS. FIRST THE ADDRESS IS CHECKED 00063000
* TO SEE IF IT IS ABOVE DMKCPEND. IF NOT, THE NAME IS 00064000
* EXTRACTED FROM THE LOAD MAP. IF IT IS, THEN THE PAGE 00065000
* CONTAINING THE ADDRESS IS BROUGHT INTO CORE. THE PAGE 00066000
* IS SCANNED FROM THE ADDRESS BACK, UNTIL A MODULE NAME 00067000
* IS FOUND. THE MESSAGE IS CONSTRUCTED TO GIVE THE 00068000
* MODULE NAME AND DISPLACEMENT. 00069000
* 00070000
* ERROR MESSAGES: 00071000
* DMMMOD705E ERROR IN ITEM TABLE 00072000
* DMMMOD706I 'ENTRY' NOT FOUND IN LOAD MAP 00073000
* DMMMOD707I 'MODULE' PAGE NOT VALID 00074000
* 00075000
* * * * * * * *------- -------- -------- -------- ------* 00076000
DMMMOD CSECT @VA04250 00077000
EXTRN DMMDIR FORMAT/DISPLAY @VA04250 00078000
EXTRN DMMINT TRANSLATE @VA04250 00079000
EXTRN DMMGET DUMP FETCH @VA04250 00080000
EXTRN DMMHEX HEX TO EBC TRANS. @VA04250 00081000
EXTRN SCRNAREA DISPLAY AREA @VA04250 00082000
EXTRN DUMPFSCB FSCB OF DUMP @VA04250 00083000
EXTRN ISW ITEM-TAB-READ SWITCH @VA04250 00084000
EXTRN BUFF2 ITEM TABLE @VA04250 00085000
EXTRN CMDINFO HEADER LINE @VA04250 00086000
EXTRN TYPEFLAG DEVICE TYPE @VA04250 00087000
EXTRN CONSOLE VIRT CONS ADDR @VA04250 00088000
ENTRY BUFF BUFFER @VA04250 00089000
ENTRY MAPREDSW HAS THE MAP BEEN READ @VA04250 00090000
STM R14,R12,SAVEDISP(R13) CALLER REGS @VA04250 00091000
LR R12,R15 ADDRESSABILITY @VA04250 00092000
USING DMMMOD,R12 USE IT @VA04250 00093000
ST R13,SAVEBACK CALLER SAVE PTR @VA04250 00094000
B EYECATCH BYPASS EYECATCH @VA04250 00095000
DS 0D ALIGN @VA04250 00096000
DC CL8'DMMMOD' EYECATCHER @VA04250 00097000
RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00098000
EYECATCH LA R13,SAVEAREA OUR SAVE PTR @VA04250 00099000
* * * * * * * *------- -------- -------- -------- ------* 00100000
* * * * * * * * FIRST READ THE ITEM TABLE WHICH MAPS THE 00101000
* * * * * * * * PAGES IN THE DUMP AGAINST RECORDS IN THE 00102000
* * * * * * * * DUMP FILE. VMFDUMP READS THE LOAD MAP 00103000
* * * * * * * * AND PRODUCES A SHORT VERSION WITH NAMES 00104000
* * * * * * * * AND ADDRESSES ONLY. THIS IS TACKED ON 00105000
* * * * * * * * AS THE THREE RECORDS AT THE END OF THE 00106000
* * * * * * * * REGULAR DUMP. BY COUNTING THE ENTRIES 00107000
* * * * * * * * IN THE ITEM TABLE, AND ADDING 5, WE GET 00108000
* * * * * * * * THE RECORD NUMBER OF THE FIRST MAP PAGE. 00109000
* * * * * * * *------- -------- -------- -------- ------* 00110000
XC RETCODE,RETCODE CLEAR RETURN @VA04250 00111000
L R3,CIADD COMMAND INFO LINE @VA04250 00112000
MVC HDRNAME(PLISTENT,R3),0(R2) GET MOD FROM PLIST @VA04250 00113000
L R3,BUFF2ADD INFO. RECORD @VA04250 00114000
L R4,DFSCBADD DUMP FSCB @VA04250 00115000
L R5,ISWADD ITEM-TABLE-READ? SWITCH @VA04250 00116000
CLI 0(R5),ON IS ITEM TABLE IN BUFF2 ? @VA04250 00117000
BE TABSCAN YES - GO COUNT ENTRIES @VA04250 00118000
FSREAD FSCB=(R4),BUFFER=(R3),ERROR=RDERR,RECNO=2 @VA04250 00119000
MVI 0(R5),ON TURN ON 'ITEM TABLE READ' SWITC @VA04250 00120000
TABSCAN LA R3,ITEMINDX(R3) POINT TO ITEM TABLE @VA04250 00121000
LA R6,NULL SET TABLE ENTRY COUNTER @VA04250 00122000
L R7,MAXCOUNT MAX 1792 ENTRIES VALID @VA04250 00123000
EOTAB CLC 0(L'FOXES,R3),FOXES IS THIS THE END-OF-TABLE? @VA04250 00124000
BE READMAP YES - GO READ IN THE LOAD MAP @VA04250 00125000
LA R3,TWO(R3) BUMP TABLE POINTER @VA04250 00126000
LA R6,ONE(R6) BUMP ENTRY COUNTER @VA04250 00127000
BCT R7,EOTAB LOOK AT THE NEXT ONE @VA04250 00128000
LA R8,ERMSG705 ADDRESS AND @VA04250 00129000
LA R9,L'ERMSG705 LENGTH FOR WRTERM @VA04250 00130000
BAL R10,WRTERM GO WRITE IT @VA04250 00131000
MVC RETCODE,CODE4 SET ACCEPTABLE RETURN CODE @VA04250 00132000
B RETURN GO HANDLE IT @VA04250 00133000
READMAP CLI MAPREDSW,RED HAS THE MAP BEEN READ? @VA04250 00134000
BE MAPRED YES - DONT READ IT @VA04250 00135000
LA R3,LMRECS NO-COUNT THREE LOAD MAP RECORDS @VA04250 00136000
LA R6,DUMMYREC(R6) CORRECT FOR EXTRA RECORDS @VA04250 00137000
LA R5,BUFF ADDRESS OF WORK BUFFER @VA04250 00138000
READ FSREAD FSCB=(R4),BUFFER=(R5),RECNO=(R6),ERROR=LMERR @VA04250 00139000
A R5,FOURK NEXT AREA IN BUFFER @VA04250 00140000
LA R6,ONE(R6) NEXT RECORD @VA04250 00141000
BCT R3,READ READ THREE RECORDS @VA04250 00142000
MVI MAPREDSW,RED SET MAP READ SWITCH @VA04250 00143000
* * * * * * * *------- -------- -------- -------- ------* 00144000
* * * * * * * * NOW THE SORTED MAP IS IN CORE IN 00145000
* * * * * * * * BUFF. FIRST CHECK TO SEE IF THIS IS A 'DMK?' 00146000
* * * * * * * * TYPE, AND GO TO 'QREQUEST' IF IT IS. 00147000
* * * * * * * * IF NOT, IT IS A REQUEST TO LOCATE A MODULE. 00148000
* * * * * * * * SCAN ON THE FIRST 6 CHARS OF THE ENTERED NAME 00149000
* * * * * * * * UNTIL WE GET A HIT, THEN CHECK FOR 8. 00150000
* * * * * * * * GET A HIT, THEN CHECK FOR 8. 00151000
* * * * * * * * IF WE GET A 6 CHAR HIT, BUT NO 8, GO WITH 00152000
* * * * * * * * THE 6, WHICH REPRESENTS THE MODULE 00153000
* * * * * * * * CONTAINING THE ENTRY POINT WHOSE NAME 00154000
* * * * * * * * WAS ENTERED. 00155000
* * * * * * * *------- -------- -------- -------- ------* 00156000
MAPRED CLC DMKQ,0(R2) LOCATE AN ADDRESS? @VA04250 00157000
BE QREQUEST YES - GO CHANGE ADDRESS TO HEX @VA04250 00158000
LA R3,BUFF NO - LOCATE A NAME @VA04250 00159000
LA R4,MAXMAP 4095 MAX MAP ENTRIES @VA04250 00160000
XC MODADD,MODADD CLEAR ADDRESS @VA04250 00161000
NAME6 CLC 0(MODL,R2),0(R3) HIT ON MODULE NAME? @VA04250 00162000
BNE NEXTNAME NO - GET THE NEXT ONE @VA04250 00163000
NAME8 MVC SIXNAME(MAPENT),0(R3) SAVE 6 HIT IN CASE NO 8 @VA04250 00164000
ENTRNAME CLC 0(ENTRL,R2),0(R3) HIT ON ALL 8? @VA04250 00165000
BE EIGHTHIT YES - GO FETCH IT @VA04250 00166000
LA R3,MAPENT(R3) TRY NEXT @VA04250 00167000
BCT R4,ENTRNAME TRY ALL EIGHT @VA04250 00168000
B ANYHIT GO SEE IF WE EVER HAD A HIT @VA04250 00169000
NEXTNAME LA R3,MAPENT(R3) NO - TRY NEXTY @VA04250 00170000
BCT R4,NAME6 TRY AGAIN @VA04250 00171000
ANYHIT CLC MODADD,XZERO HAVE WE HAD A HIT ON 6? @VA04250 00172000
BE MODNF NO - EXIT WITH ERROR MSG @VA04250 00173000
L R6,CIADD YES- SET UP IN HEADER LINE TO @VA04250 00174000
MVC HDRNAME(ENTRL,R6),SIXNAME NAME SAVED FROM 6 HIT @VA04250 00175000
B MOD6 AND GO WITH A 6 CHAR HIT @VA04250 00176000
MODNF MVC MSGMODNM(ENTRL),0(R2) PLUG MODNAME INTO ERR MSG @VA04250 00177000
LA R8,ERMSG706 ADDRESS FOR WRTERM @VA04250 00178000
LA R9,E706L LENGTH @VA04250 00179000
BAL R10,WRTERM WRITE IT @VA04250 00180000
MVC RETCODE,CODE4 PLUG RETURN CODE @VA04250 00181000
B RETURN GO BACK @VA04250 00182000
* * * * * * * *------- -------- -------- -------- ------* 00183000
* * * * * * * * NOW WE HAVE A HIT ON THE INPUT MODULE 00184000
* * * * * * * * NAME. GET THE IPL ADDRESS FROM THE MAP, 00185000
* * * * * * * * AND FIND OUT WHERE IT WAS LOADED AT 00186000
* * * * * * * * DUMP TIME 00187000
* * * * * * * *------- -------- -------- -------- ------* 00188000
EIGHTHIT MVC MODADD,ADDR(R3) THIS IS IT - SAVE ADDRESS @VA04250 00189000
MOD6 LA R4,MODADD+ONE SET DATA UP FOR TRANSLATE @VA04250 00190000
LA R3,ADRL SET UP LENGTH @VA04250 00191000
L R15,INTADD TRANSLATE IT @VA04250 00192000
BALR R14,R15 LINK @VA04250 00193000
L R6,CIADD ADDRESS OF INFORMATION HEADER @VA04250 00194000
MVC HDRMAP(L'MAP,R6),MAP SET 'MAP' IN HEADER @VA04250 00195000
MVC HDRADD(TRANSADL,R6),0(R5) PLUG XLAT ADD IN MSG @VA04250 00196000
B GETREAL AND GO FIND IT IN THE DUMP @VA04250 00197000
* * * * * * * *------- -------- -------- -------- ------* 00198000
* * * * * * * * THIS ROUTINE TAKES THE MODULE ADDRESS 00199000
* * * * * * * * AS RECORDED IN THE LOAD MAP, AND FINDS 00200000
* * * * * * * * THE ADDRESS AT WHICH IT WAS LOADED AT DUMP 00201000
* * * * * * * * TIME. IT READS THAT PAGE IN AND FORMATS IT 00202000
* * * * * * * *------- -------- -------- -------- ------* 00203000
GETREAL LA R2,SYSVMBAD OFFSET OF SYSTEM VMBLOCK - 892 @VA04250 00204000
BAL R10,GOGET GO TO GETREC @VA04250 00205000
L R4,MODADD PICK UP ADDRESS FROM LOAD MAP @VA04250 00206000
MVC ALIGNER,0(R2) ALIGN ADDRESS @VA04250 00207000
L R2,ALIGNER GET SYS VMBLOK ADDRESS @VA04250 00208000
BAL R10,GOGET GETREC ADDRESS @VA04250 00209000
L R2,SEGTAB(R2) FIRST SEG TAB ADDRESS @VA04250 00210000
BAL R10,GOGET GET IT INTO CORE @VA04250 00211000
LR R5,R4 CONVERT THE SYM TAB ADDRESS @VA04250 00212000
SRL R5,16 TO A SEGMENT NO. @VA04250 00213000
SLL R5,2 CONVERT TO WORDS, ADD TO START @VA04250 00214000
AR R2,R5 NOW R2 HAS DESIRED SEG TAB ADD @VA04250 00215000
L R2,0(R2) DITTO PAGE TABLE @VA04250 00216000
BAL R10,GOGET GETREC ADDRESS @VA04250 00217000
LR R5,R4 GET ADDRESS AGAIN AND @VA04250 00218000
SLL R5,16 CONVERT TO A PAGE WITHIN @VA04250 00219000
SRL R5,28 THE SEGMENT. @VA04250 00220000
SLL R5,1 DOUBLE FOR HALF WD. ENTRIES @VA04250 00221000
AR R2,R5 POINT TO HALFWD WITH REAL @VA04250 00222000
TM VALBYT(R2),VALPAGE PAGE VALID? @VA04250 00223000
BZ GETIT YES- GO PICK IT UP @VA04250 00224000
L R3,CIADD INFO RECORD @VA04250 00225000
MVC INVMOD,HDRNAME(R3) MOVE MOD NAME @VA04250 00226000
MVC INVPAGE,INVP(R3) MOVE IN 'INVALID PAGE' MSG @VA04250 00227000
LA R8,ERMSG707 ADDRESS AND @VA04250 00228000
LA R9,E707L LENGTH @VA04250 00229000
BAL R10,WRTERM GO WRITE IT @VA04250 00230000
MVC RETCODE,CODE4 RETURN CODE @VA04250 00231000
L R2,CIADD INFO LINE @VA04250 00232000
MVC 0(LINELEN,R2),BLANKOUT CLEAR IT @VA04830 00233500
B RETURN LET HIM TRY AGAIN @VA04250 00234000
GETIT L R2,0(R2) PAGE NO. PICK IT UP, STRIP @VA04250 00235000
SRL R2,16 OFF SPARE HALF WORD, CONVERT @VA04250 00236000
SLL R2,8 IT TO A PAGE ADDRESS @VA04250 00237000
LR R5,R4 GET THE ADDRESS AND REDUCE @VA04250 00238000
SLL R5,20 IT TO A DISPLACEMENT @VA04250 00239000
SRL R5,20 AND LOAD R2 WITH THE DUMP ADDRE @VA04250 00240000
AR R2,R5 S OF THE REQUIRED MODULE @VA04250 00241000
ST R2,REALADD SAVE THE REAL ADDRESS @VA04250 00242000
SRL R2,4 ROUND TO A QUAD WORD BOUNDARY @VA04250 00243000
SLL R2,4 AND RESTORE @VA04250 00244000
LR R7,R2 SAVE REAL ADDRESS FOR SCREEN @VA04250 00245000
ST R2,HEXAD SAVE FOR SCROLL @VA04250 00246000
LA R4,REALADD+ONE SET UP TO TRANSLATE DATA @VA04250 00247000
LA R3,ADRL AND LENGTH @VA04250 00248000
L R15,INTADD TRANSLATE @VA04250 00249000
BALR R14,R15 LINK @VA04250 00250000
L R3,CIADD INFO HEADER @VA04250 00251000
MVC REALREAL(L'REAL,R3),REAL PLUG 'REAL' TAG @VA04250 00252000
MVC REELADD(TRANSADL,R3),0(R5) PLUG REAL ADD IN MSG @VA04250 00253000
L R4,TYPEADD ADDRESS OF DEVICE TYPE FLAG @VA04250 00254000
CLI 0(R4),TYPER TYPEWRITER? @VA04250 00255000
BE TYPE YES - GO TYPE HEADER ONLY @VA04250 00256000
BAL R10,GOGET GETREC ADDRESS @VA04250 00257000
L R15,DIRADD GO TO FORMAT AND SCREEN IT @VA04250 00258000
BALR R14,R15 LINK @VA04250 00259000
B RETURN BACK TO DX @VA04250 00260000
* * * * * * * * ------- -------- -------- ------- * 00261000
* * * * * * * * THIS ROUTINE ACCEPTS AN ADDRESS, AND SCANS 00262000
* * * * * * * * THE LOAD MAP FOR THE ENTRY ADDRESS CLOSEST 00263000
* * * * * * * * TO, AND BELOW THE GIVEN ADDRESS. THE 00264000
* * * * * * * * ADDRESS IS RETURNED WITH THE ENTRY NAME AND 00265000
* * * * * * * * THE DISPLACEMENT OF THE ADDRESS FROM IT. 00266000
* * * * * * * * FIRST FIND DMKCPEND. THIS IS USED LATER 00267000
* * * * * * * * AS PAGEABLE PAGES MAY NOT BE AT THEIR 00268000
* * * * * * * * LOAD MAP ADDRESSES. ADDRESSES WILL BE FOUND 00269000
* * * * * * * * BY SCANNING THE ACTUAL PAGE FOR 'DMKXXX ' 00270000
* * * * * * * * ------- -------- -------- ------- * 00271000
QREQUEST CLI FIRSTIME,ON FIRST TIME THIS CODE? @VA04250 00272000
BNE GETCPE NO - CONTINUE @VA04250 00273000
MVI FIRSTIME,OFF YES - TURN IT OFF AND @VA04250 00274000
XC CPENDADD,CPENDADD ZERO THE ADDRESS @VA04250 00275000
GETCPE L R3,CPENDADD GET IN CORE ADDR OF CPEND @VA04250 00276000
CLC DMKCPEND,0(R3) IS THIS REALLY IT? @VA04250 00277000
BE TRANSADD YES - BYPASS SEARCH @VA04250 00278000
LA R3,BUFF NO - SCAN LOADMAP FOR 'DMKCPEND' @VA04250 00279000
CPEND CLC DMKCPEND,0(R3) 'CPEND'? @VA04250 00280000
BE GOTEND GOT IT - GO SAVE IT @VA04250 00281000
LA R3,MAPENT(R3) BUMP BY 12 FOR NEXT ENTRY @VA04250 00282000
B CPEND TRY AGAIN @VA04250 00283000
* * * * * * * * ------- -------- -------- ------- * 00284000
* * * * * * * * GOT THE LOCATION - NOW SAVE THE 00285000
* * * * * * * * IN CORE ADDRESS OF CPEND AND THE 00286000
* * * * * * * * NEXT PAGE, WHICH IS THE FIRST 00287000
* * * * * * * * PAGEABLE PAGE. 00288000
* * * * * * * * ------- -------- -------- ------- * 00289000
GOTEND ST R3,CPENDADD IN CORE ADDRESS OF CPEND @VA04250 00290000
L R3,ENTRL(R3) REAL ADD OF CPEND @VA04250 00291000
SRL R3,12 PAGE @VA04250 00292000
LA R3,ONE(R3) NEXT PAGE @VA04250 00293000
SLL R3,12 NEXT PAGE ADDRESS @VA04250 00294000
ST R3,PAGEADD SAVE FIRST PAGEABLE PAGE @VA04250 00295000
* * * * * * * * ------- -------- -------- ------- * 00296000
* * * * * * * * NOW TRANSLATE THE GIVEN ADDRESS TO HEX 00297000
* * * * * * * * ------- -------- -------- ------- * 00298000
TRANSADD LA R4,PLISTENT(R2) GET ADDRESS TO TRANSLATE @VA04250 00299000
L R15,HEXADD ADDRESS OF TRANS ROUTINE @VA04250 00300000
BALR R14,R15 LINK @VA04250 00301000
LTR R15,R15 TEST RETURN @VA04250 00302000
BNZ CODECHEK FIND HOW BAD @VA04250 00303000
* * * * * * * * ------- -------- -------- ------- * 00304000
* * * * * * * * NOW R5 CONTAINS THE GIVEN ADDRESS 00305000
* * * * * * * * IN HEXADECIMAL. FIRST CHECK IT AGAINST 00306000
* * * * * * * * PAGEADD TO SEE IF IT IS PAGEABLE 00307000
* * * * * * * * ------- -------- -------- ------- * 00308000
C R5,PAGEADD REQUESTED ADD PAGEABLE? @VA04250 00309000
BNL PAGEMOD YES - GO GET PAGE TO SCAN @VA04250 00310000
LA R3,BUFF START OF MAP @VA04250 00311000
LA R5,0(R5) CLEAR HI ORDER BYTE @VA04250 00312000
LA R6,MAPENT LOAD WITH 12 TO BACK UP POINTER @VA04250 00313000
COMPDMK CLC DMK,0(R3) IS THIS A VALID ENTRY? @VA04250 00314000
BNE ENDOFMAP NO - WERE OFF THE END OF THE MAP @VA04250 00315000
C R5,ENTRL(R3) YES - COMPARE THE ADDRESSES @VA04250 00316000
BNH WRITELOC GO DISPLAY, IF NO LONGER HIGH @VA04250 00317000
LA R3,MAPENT(R3) BUMP BY 12 FOR NEXT ENTRY @VA04250 00318000
B COMPDMK AND TRY AGAIN @VA04250 00319000
* * * * * * * * ------- -------- -------- ------- * 00320000
* * * * * * * * THE SEARCH IS OVER. NOW SET UP THE RESULTS 00321000
* * * * * * * * ------- -------- -------- ------- * 00322000
WRITELOC BE BACKEMUP DONT BACK UP IF ADDRESSES EQUAL @VA04250 00323000
ENDOFMAP SR R3,R6 TO NEXT LOWER ENTRY @VA04250 00324000
* * * * * * * * ------- -------- -------- ------- * 00325000
* * * * * * * * R3 POINTS TO THE ENTRY/MODNAME AT OR 00326000
* * * * * * * * IMMEDIATELY BELOW THE GIVEN ADDRESS. 00327000
* * * * * * * * NOW SCAN BACK TO THE MODULE NAME 00328000
* * * * * * * * WHICH CORRESPONDS TO THIS ENTRY POINT 00329000
* * * * * * * * ------- -------- -------- ------- * 00330000
BACKEMUP SR R3,R6 PREVIOUS ENTRY IN MAP @VA04250 00331000
CLC 0(MODL,R3),MAPENT(R3) FIRST SIX LETTERS MATCH? @VA04250 00332000
BE BACKEMUP YES - BACK UP ONE MORE @VA04250 00333000
CLC DMKFEIBM,0(R3) OR IS IT FEIBM? @VA04250 00334000
BE BACKEMUP YES - IGNORE IT @VA04250 00335000
CLC DMKFEIBM,MAPENT(R3) OR WAS IT FEIBM? @VA04250 00336000
BE BACKEMUP IGNORE IT AGAIN @VA04250 00337000
AR R3,R6 NO - ADD 12 BACK ON TO POINTER @VA04250 00338000
* * * * * * * * ------- -------- -------- ------- * 00339000
* * * * * * * * NOW CALCULATE THE DISPLACEMENT OF THE 00340000
* * * * * * * * GIVEN ADDRESS FROM THE ENTRY POINT 00341000
* * * * * * * * ------- -------- -------- ------- * 00342000
NAMEHIT L R6,ENTRL(R3) MOVE ADDR FROM MAP TO WORKAREA @VA04250 00343000
LA R6,0(R6) CLEAR HI ORD @VA04250 00344000
SR R5,R6 GET DISPL. IN R5 @VA04250 00345000
ST R5,HEXDISP AND SAVE IT TO TRANSLATE @VA04250 00346000
MVC ADDOUT(MSGLEN),BLANKOUT CLEAR MESSAGE AREA @VA04830 00347500
MVC TEXT1(L'TEXT1TEX),TEXT1TEX PLUG IN TEXT OF MSG @VA04250 00348000
MVC MODOUT,0(R3) PLUG MOD/ENTRY NAME IN MSG @VA04250 00349000
LA R4,ENTRL+ONE(R3) ADDRESS OF HEX ADDR IN MAP @VA04250 00350000
LA R3,ADRL THREE BYTE HEX ADDRESS LENGTH @VA04250 00351000
L R15,INTADD ADDRESS OF TRANS ROUTINE @VA04250 00352000
BALR R14,R15 LINK @VA04250 00353000
MVC MAPADOUT,0(R5) PLUG TRANS MAP ADDRESS IN MSG @VA04250 00354000
LA R3,ADRL LENGTH TO TRANSLATE @VA04250 00355000
LA R4,HEXDISP+ONE ADDRESS OF DATA @VA04250 00356000
L R15,INTADD ADDRESS OF TRANS ROUTINE @VA04250 00357000
BALR R14,R15 LINK @VA04250 00358000
MVC DISPOUT,0(R5) PLUG THE CALCULATED DISP @VA04250 00359000
MVC ADDOUT,PLISTENT(R2) PLUG THE ADDRESS @VA04250 00360000
LA R8,ADDOUT ADDRESS OF MESSAGE @VA04250 00361000
LA R9,MSGLEN LENGTH @VA04250 00362000
BAL R10,WRTERM GO WRITE IT @VA04250 00363000
L R2,TYPEADD CHECK IF TYPER OR SCREEN @V4075A2 00363150
CLI 0(R2),TYPER TYPEWRITER @V4075A2 00363200
BE SHORTRDY YES GO WRITE *R @V4075A2 00363250
LA R8,LNGRDY NO - LONG *** READY *** @V4075A2 00363300
LA R9,L'LNGRDY AND LENGTH @V4075A2 00363350
B GOWRITE GO TO GO TO WRITE IT @V4075A2 00363400
SHORTRDY LA R8,SHRTRDY SHORT MSG @V4075A2 00363450
LA R9,L'SHRTRDY AND LENGTH @V4075A2 00363500
GOWRITE BAL R10,WRTERM AND WRITE THE CHOSEN WORDS @V4075A2 00363550
B RETURN BACK TO CALLER @VA04250 00364000
* * * * * * * * ------- -------- -------- ------- * 00365000
* * * * * * * * THIS TYPES THE HEADER TO A 2741 00366000
* * * * * * * * ------- -------- -------- ------- * 00367000
TYPE LR R8,R3 ADDRESS OF HEADER @VA04250 00368000
LA R9,LINELEN/2 40 - HALF A LINE LENGTH @VA04250 00369000
BAL R10,WRTERM WRITE THE HEADER @VA04250 00370000
LA R8,RDY SHORT READY @VA04250 00371000
LA R9,L'RDY LENGTH @VA04250 00372000
BAL R10,WRTERM GO WRITE SHORT READY @VA04250 00373000
B RETURN GO BACK @VA04250 00374000
* * * * * * * * ----------------------------------* 00375000
* * * * * * * * ADDRESS IS PAGEABLE, SCAN THE PAGE 00376000
* * * * * * * * ----------------------------------* 00377000
PAGEMOD ST R2,PLISTADD SAVE PLIST ADDRESS @VA04250 00378000
LR R2,R5 PASS TO GETREC @VA04250 00379000
BAL R10,GOGET GET IT INTO CORE @VA04250 00380000
ST R2,INCOREQ SAVE IN CORE REQ-ADDR ADDRESS @VA04250 00381000
SRL R2,3 ROUND TO A DOUBLE WORD BOUNDARY @VA04250 00382000
SLL R2,3 RESTORE @VA04250 00383000
LR R3,R5 GET THE ADDRESS @VA04250 00384000
SLL R3,20 AND CONVERT IT TO THE NUMBER OF @VA04250 00385000
SRL R3,23 DBLEWORDS DOWN TO THE PAGE BOUND @VA04250 00386000
LA R3,ONE(R3) PLUS 1 GIVES THE NUMBER OF TRIES @VA04250 00387000
* * * * * * * * ------- -------- -------- ------- * 00388000
* * * * * * * * NOW SEARCH THE INCORE PAGE FOR 'DMK' 00389000
* * * * * * * * IT WILL EITHER BE 'DMKXXXYY' - A MODULE 00390000
* * * * * * * * NAME, OR DMKXXXNNNX, - A MESSAGE NUMBER 00391000
* * * * * * * * THE THIRD POSSIBILITY IS THAT THE ADDRESS 00392000
* * * * * * * * DOES NOT FALL WITHIN A CP MODULE. 00393000
* * * * * * * * ------- -------- -------- ------- * 00394000
LA R4,ENTRL '8' TO DECREMENT PAGE POINTER. @VA04250 00395000
MODCOMP CLC DMK,0(R2) DMK? @VA04250 00396000
BE GOTDMK GO CHECK IF MOD OR MESSAGE @VA04250 00397000
BUMPDMK SR R2,R4 DECREMENT POINTER @VA04250 00398000
BCT R3,MODCOMP TRY NEXT @VA04250 00399000
L R2,PLISTADD RESTORE PLIST PTR @VA04250 00400000
MVC NOTMODAD(PLISTENT),PLISTENT(R2) GET INPUT ADDR @VA04250 00401000
LA R8,NOTMODAD 'ADDRESS NOT IN MODULE' MSG @VA04250 00402000
LA R9,NOTMODL LENGTH @VA04250 00403000
BAL R10,WRTERM WRITE IT @VA04250 00404000
B RETURN @VA04250 00405000
* * * * * * * * ------- -------- -------- ------- * 00406000
* * * * * * * * GOT A HIT ON 'DMK'. CHECK IF IT IS 00407000
* * * * * * * * A MESSAGE OR A MODULE NAME 00408000
* * * * * * * * ------- -------- -------- ------- * 00409000
GOTDMK TM ENTRL(R2),FOXZ IS THE NEXT BYTE NUMERIC? @VA04250 00410000
BO BUMPDMK YES - MESSAGE - KEEP LOOKING @VA04250 00411000
CLC DMKMAC,0(R2) NO - THEN IS IT DMKMAC @VA04250 00412000
BE BUMPDMK YES - THIS IS NOT A MODULE NAME @VA04250 00413000
L R3,INCOREQ NO - GOT A MODULE - CALCULATE @VA04250 00414000
SR R3,R2 DISPLACEMENT IN R3 @VA04250 00415000
ST R3,HEXDISP AND SAVE IT @VA04250 00416000
SR R5,R3 NOW R5 HAS THE REAL START ADDR @VA04250 00417000
ST R5,REALSTAR SAVE IT @VA04250 00418000
MVC ADDOUT(MSGLEN),BLANKOUT CLEAR MESSAGE AREA @VA04830 00419500
MVC TEXT1(L'TEXT1TEX),TEXT1TEX PLUG IN TEXT OF MSG @VA04250 00420000
MVC MODOUT,0(R2) PLUG MOD/ENTRY NAME IN MSG @VA04250 00421000
LA R4,REALSTAR+ONE ADDR OF REAL START ADDR @VA04250 00422000
LA R3,ADRL THREE BYTE HEX ADDRESS LENGTH @VA04250 00423000
L R15,INTADD ADDRESS OF TRANS ROUTINE @VA04250 00424000
BALR R14,R15 LINK @VA04250 00425000
MVC MAPADOUT,0(R5) PLUG TRANS REALSTART ADDR IN MSG @VA04250 00426000
LA R3,ADRL LENGTH TO TRANSLATE @VA04250 00427000
LA R4,HEXDISP+ONE ADDRESS OF DATA @VA04250 00428000
L R15,INTADD ADDRESS OF TRANS ROUTINE @VA04250 00429000
BALR R14,R15 LINK @VA04250 00430000
MVC DISPOUT,0(R5) PLUG THE CALCULATED DISP @VA04250 00431000
L R2,PLISTADD RESTORE PLIST ADDR @VA04250 00432000
MVC ADDOUT,PLISTENT(R2) PLUG THE ADD FROM THE PLIST @VA04250 00433000
LA R8,ADDOUT ADDRESS OF MESSAGE @VA04250 00434000
LA R9,MSGLEN LENGTH @VA04250 00435000
BAL R10,WRTERM GO WRITE IT @VA04250 00436000
B RETURN BACK TO CALLER @VA04250 00437000
* * * * * * * * ------- -------- -------- ------- * 00438000
* * * * * * * * COMMON ROUTINE TO LINK TO GETREC 00439000
* * * * * * * * AND CHECK RETURN CODES 00440000
* * * * * * * * ------- -------- -------- ------- * 00441000
GOGET L R15,GETADD GETREC ADDRESS @VA04250 00442000
BALR R14,R15 LINK @VA04250 00443000
LTR R15,R15 CHECK RETURN CODE @VA04250 00444000
BNZ CODECHEK GO FIND OUT JUST HOW BAD @VA04250 00445000
BR R10 RETURN TO CALLER @VA04250 00446000
CODECHEK C R15,CODE4 WARNING? @VA04250 00447000
BNE FATAL NO - BAD STUFF @VA04250 00448000
MVC RETCODE,CODE4 SET WARNING @VA04250 00449000
B RETURN RETURN @VA04250 00450000
FATAL MVC RETCODE,CODE8 FATAL @VA04250 00451000
B RETURN GO BACK @VA04250 00452000
* * * * * * * * ------- -------- -------- ------- * 00453000
* * * * * * * * RETURN 00454000
* * * * * * * *------- -------- -------- -------- ------* 00455000
RETURN L R13,SAVEBACK CALLER SAVE POINTER @VA04250 00456000
MVC SAVREG15(L'RETCODE,R13),RETCODE RETURN CODE @VA04250 00457000
LM R14,R12,SAVEDISP(R13) CALLERS REGS @VA04250 00458000
BR R14 RETURN @VA04250 00459000
* * * * * * * *------- -------- -------- -------- ------* 00460000
* * * * * * * * THIS ROUTINE TRANSLATES R15 RETURN CODES 00461000
* * * * * * * * AND PLUGS THEM IN A MESSAGE TO THE USER. 00462000
* * * * * * * * FIRST SEE IF THE ERROR IS DUE TO THE LACK 00463000
* * * * * * * * OF A LOAD MAP ON THE END OF THE DUMP. 00464000
* * * * * * * *------- -------- -------- -------- ------* 00465000
LMERR C R15,NOMAP WAS IT END OF FILE, IE NO MAP? @VA04250 00466000
BNE RDERR NO - PROCESS ERROR NORMALLY @VA04250 00467000
LA R8,NOMAPMSG GET ADDRESS OF 'NO LOAD MAP' MSG @VA04250 00469000
LA R9,L'NOMAPMSG AND LENGTH @VA04250 00470000
BAL R10,WRTERM WRITE MSG @VA04250 00471000
MVC RETCODE,CODE4 SET WARNING RETURN @V4075A2 00472300
B RETURN AND GO ROUND AGAIN @V4075A2 00472600
RDERR XC DEPACK(L'DEPACK+L'DECODE),DEPACK CLEAR WORKAREA @VA04250 00473000
CVD R15,DECODE GET RET CODE IN DECIMAL @VA04250 00474000
UNPK DEPACK+FIV(L'DEPACK-FIV),DECODE+SIX(L'DECODE-SIX) 00475000
OI DEPACK+SEV,NUMZONE FIX UP SIGN TO PRINT @VA04250 00476000
MVC ERRMSGCD,DEPACK+FIV PLUG ERROR CODEINTO MSG @VA04250 00477000
L R6,DFSCBADD TO GET AT FILE ID @VA04250 00478000
MVC ERRMSGFN,FN(R6) PLUG FILE NAME @VA04250 00479000
MVC ERRMSGFT,FT(R6) AND TYPE @VA04250 00480000
MVC ERRMSGM(L'ERRMSGM-ONE),FM(R6) AND MODE @VA04250 00481000
BAL R10,CLEAR CLEAR SCREEN @VA04250 00482000
LA R8,ERMSG100 ADDRESS @VA04250 00483000
LA R9,E100L LENGTH @VA04250 00484000
BAL R10,WRTERM GO WRITE IT @VA04250 00485000
MVC RETCODE,CODE8 SET BAD RET CODE @VA04250 00486000
B RETURN GIVE IN @VA04250 00487000
* * * * * * * * ------- -------- -------- ------- * 00488000
* * * * * * * * THIS CLEARS THE SCREEN AND ALLOWS THE 00489000
* * * * * * * * NEXT OPERATION TO BE POSITIONED 00490000
* * * * * * * * AT THE TOP OF THE SCREEN 00491000
* * * * * * * *------- -------- -------- -------- ------* 00492000
CLEAR STM R8,R9,SAVCLR SAVE REGS @VA04250 00493000
L R8,SCRNADD GET THE ADDRESS OF THE SCREEN @VA04250 00494000
ST R8,CCWC PLUG ADDRESS IN CCW @VA04250 00495000
LA R8,CCWC CCW ADD @VA04250 00496000
L R9,CONSADD VIRT CONS ADDRESS LOCATION @VA04250 00497000
L R9,0(R9) VIRT CON CUU @VA04250 00498000
MVI CCWC,FSWRITE RESTORE CMD CODE @VA04250 00499000
MVI CCWCTL,ON SET ERASE BYTE ON @VA04250 00500000
WAITT WAIT FOR TERMINAL TO QUIESCE @VA04250 00501000
DC X'83890058' DIAGNOSE @VA04250 00502000
LM R8,R9,SAVCLR RESTORE REGS @VA04250 00503000
BR R10 RETURN @VA04250 00504000
* * * * * * * * ------- -------- -------- ------- * 00505000
* * * * * * * * THIS ROUTINE REMOVES EXCESS BLANKS 00506000
* * * * * * * * AND HEX ZEROS FROM AN OUTPUT LINE 00507000
* * * * * * * * THEN WRITES IT. AT INPUT R8 POINTS 00508000
* * * * * * * * TO THE START OF THE TEXT TO BE 00509000
* * * * * * * * WRITTEN, AND R9 HAS THE BYTE COUNT. 00510000
* * * * * * * * RETURN IS ON R10. 00511000
* * * * * * * * ------- -------- -------- ------- * 00512000
WRTERM STM R8,R10,WR8SAVE SAVE PASSED PARMS @VA04250 00513000
MVC OUTLINE,BLANKOUT CLEAR THE OUTPUT AREA @VA04830 00514500
MVI ZBSWITCH,OFF SET SWITCH OFF @VA04250 00515000
LA R10,OUTLINE OUTPUT POINTER @VA04250 00516000
ZBTEST CLI 0(R8),BLANK IS IT A BLANK? @VA04250 00517000
BE ZBCHECK IF SO, IS IT THE FIRST? @VA04250 00518000
CLI 0(R8),HEXZERO OR A HEX '00'? @VA04250 00519000
BE ZBCHECK FIRST? @VA04250 00520000
MVI ZBSWITCH,OFF NEITHER - SET SWITCH OFF @VA04250 00521000
MOVEBYTE MVC 0(ONE,R10),0(R8) MOVE A BYTE TO OUTPUT @VA04250 00522000
LA R10,ONE(R10) BUMP OUTPUT PTR @VA04250 00523000
BUMPIN LA R8,ONE(R8) BUMP INPUT PTR @VA04250 00524000
BCT R9,ZBTEST TRY NEXT CHAR @VA04250 00525000
B WRITESET ALL DONE - SET UP WRITE @VA04250 00526000
ZBCHECK CLI ZBSWITCH,ON IS THIS NOT THE FIRST ZERO? @VA04250 00527000
BE BUMPIN YES - SKIP IT @VA04250 00528000
MVI ZBSWITCH,ON NO - SET IT ON @VA04250 00529000
B MOVEBYTE BUT MOVE IT ANYWAY @VA04250 00530000
* * * * * * * * ------- -------- -------- ------- * 00531000
* * * * * * * * NOW ALL BYTES ARE MOVED. R10 POINTS 00532000
* * * * * * * * TO THE LAST CHAR IN THE COMPRESSED LINE 00533000
* * * * * * * * FIND ITS LENGTH, AND THEN WRITE IT. 00534000
* * * * * * * * ------- -------- -------- ------- * 00535000
WRITESET LA R9,OUTLINE-ONE START OF LINE @VA04250 00536000
SR R10,R9 LENGTH OF LINE @VA04250 00537000
LR R9,R10 PUT IT IN R9 @VA04250 00538000
LA R8,OUTLINE START OF LINE @VA04250 00539000
L R10,WR10SAVE RESTORE RETURN REG @VA04250 00540000
ST R8,PARMLIS1 SAVE MSG PTR IN PARM LIST @V4075A2 00541100
ST R9,PARMLIS2 AND LENGTH @V4075A2 00541200
LA R1,PARMLIS1 POINTER TO PASS @V4075A2 00541300
L R15,FEDLNADD ADDRESS OF DMMFEDLN - LINE WRITER 00541400
BALR R14,R15 GO WRITE THE LINE @V4075A2 00541500
BR R10 AND RETURN @V4075A2 00541600
PARMLIS1 DS F PARM1 @V4075A2 00541700
PARMLIS2 DS F PARM2 @V4075A2 00541800
FEDLNADD DC V(DMMFEDLN) LINE WRITER ROUTINE @V4075A2 00541900
* * * * * * * *------- -------- -------- -------- ------* 00543000
* * * * * * * * CONSTANTS 00544000
* * * * * * * *------- -------- -------- -------- ------* 00545000
RETCODE DC F'0' RETURN CODE @VA04250 00546000
CIADD DC AL4(CMDINFO) HEADER LINE @VA04250 00547000
ISWADD DC AL4(ISW) ITEM - TABLE - READ @VA04250 00548000
BUFF2ADD DC AL4(BUFF2) DUMP DATA BUFFER @VA04250 00549000
DFSCBADD DC AL4(DUMPFSCB) FSCB FOR DUMP @VA04250 00550000
GETADD DC AL4(DMMGET) DUMP DATA FETCH @VA04250 00551000
INTADD DC AL4(DMMINT) TRANSLATOR @VA04250 00552000
DIRADD DC AL4(DMMDIR) DISPLAY AND FORMAT @VA04250 00553000
HEXADD DC AL4(DMMHEX) HEX TO EBC TRANS ROUTINE @VA04250 00554000
TYPEADD DC AL4(TYPEFLAG) DEVICE TYPE @VA04250 00555000
CONSADD DC AL4(CONSOLE) VIRT VCONS ADDRESS @VA04250 00556000
* * * * * * * * ------- -------- -------- ------- * 00557000
* * * * * * * * SAVEAREA 00558000
* * * * * * * * ------- -------- -------- ------- * 00559000
SAVEAREA DS 0F THIS PROGRAM'S SAVE AREA @VA04250 00560000
SAVEUSR DS F USER WORD @VA04250 00561000
SAVEFWD DS F FORWARD POINTER @VA04250 00562000
SAVEBACK DS F BACKWARD POINTER @VA04250 00563000
SAVER14 DS F SAVE AREA FOR CALLER'S R14 @VA04250 00564000
SAVER15 DS F SAVE AREA FOR CALLER'S R15 @VA04250 00565000
SAVER0 DS F SAVE AREA FOR CALLER'S R0 @VA04250 00566000
SAVER1 DS F SAVE AREA FOR CALLER'S R1 @VA04250 00567000
SAVER2 DS F SAVE AREA FOR CALLER'S R2 @VA04250 00568000
SAVER3 DS F SAVE AREA FOR CALLER'S R3 @VA04250 00569000
SAVER4 DS F SAVE AREA FOR CALLER'S R4 @VA04250 00570000
SAVER5 DS F SAVE AREA FOR CALLER'S R5 @VA04250 00571000
SAVER6 DS F SAVE AREA FOR CALLER'S R6 @VA04250 00572000
SAVER7 DS F SAVE AREA FOR CALLER'S R7 @VA04250 00573000
SAVER8 DS F SAVE AREA FOR CALLER'S R8 @VA04250 00574000
SAVER9 DS F SAVE AREA FOR CALLER'S R9 @VA04250 00575000
SAVER10 DS F SAVE AREA FOR CALLER'S R10 @VA04250 00576000
SAVER11 DS F SAVE AREA FOR CALLER'S R11 @VA04250 00577000
SAVER12 DS F SAVE AREA FOR CALLER'S R12 @VA04250 00578000
* * * * * * * * ------- -------- -------- ------- * 00579000
MAXCOUNT DC F'1792' MAX COUNT BEFORE LOOPING @VA04250 00580000
FOXES DC XL2'FFFF' END OF ITEM TABLE @VA04250 00581000
XZERO DC F'0' JUST ZERO @VA04250 00582000
RDY DC CL2'*R' SHORT READY FOR TYPER @VA04250 00583000
BLANKS DC 4C' ' JUST BLANKS @VA04250 00584000
FOURK DC F'4096' BUFFER INCREMENT @VA04250 00585000
HEXAD DC F'0' LAST ADDRESS DISPLAYED @VA04250 00586000
MAP DC CL4'MAP-' HEADER @VA04250 00587000
REAL DC CL5'REAL-' HEADER @VA04250 00588000
MAPREDSW DC X'00' MAP READ SWITCH @VA04250 00589000
NULL EQU X'00' CLEAR REGS @VA04250 00590000
TYPER EQU X'FF' TYPE WRITER @VA04250 00591000
RED EQU X'FF' MAP IS READ @VA04250 00592000
ON EQU X'FF' ON STATUS OF SWITCH @VA04250 00593000
VALPAGE EQU X'0F' PAGE MARKED VALID IN TABLE @VA04250 00594000
NUMZONE EQU X'F0' ZONE FOR NUMERICS @VA04250 00595000
FSWRITE EQU X'19' CMD CODE IN WRITE CCW @VA04250 00596000
PLISTENT EQU 8 LENGTH OF A PLIST ENTRY @VA04250 00597000
MODL EQU 6 LENGTH OF A MODULE NAME @VA04250 00598000
ENTRL EQU 8 LENGTH OF AN ENTRY POINT @VA04250 00599000
TRANSADL EQU 6 LENGTH OF A TRANSLATED ADDRESS @VA04250 00600000
LINELEN EQU 80 LENGTH OF HEADER LINE @VA04250 00601000
* * * * * * * * ------- -------- -------- ------- * 00602000
VALBYT EQU 1 PAGE VALID @VA04250 00603000
ONE EQU 1 BUMP POINTER @VA04250 00604000
HDRNAME EQU 2 DISP IN HDR TO MODNAME @VA04250 00605000
TWO EQU 2 BUMP POINTER @VA04250 00606000
ADRL EQU 3 LENGTH OF ADDRESS TO TRANSLATE @VA04250 00607000
LMRECS EQU 5 NUMBER OF LOAD MAP RECORDS @VA08369 00608100
DUMMYREC EQU 5 FUDGE TO FIRST DUMP DATA RECORD @VA04250 00609000
FIV EQU 5 UNPACK CONST @VA04250 00610000
SIX EQU 6 UNPACK CONST @VA04250 00611000
SEV EQU 7 UNPACK CONST @VA04250 00612000
ADDR EQU 8 DISP TO ADDRESS @VA04250 00613000
FN EQU 8 DISP TO FILE NAME @VA04250 00614000
HDRMAP EQU 11 MAP IN HDR @VA04250 00615000
SAVEDISP EQU 12 REGS IN SAVE AREA @VA04250 00616000
MAPENT EQU 12 LENGTH OF A LOAD MAP ENTRY @VA04250 00617000
HDRADD EQU 16 ADDRESS IN HDR @VA04250 00618000
SEGTAB EQU 16 DISP TO SEGTAB @VA04250 00619000
INVP EQU 16 INVALID PAGE IN HDR @VA04250 00620000
SAVREG15 EQU 16 REG 15 IN SAVE AREA @VA04250 00621000
FT EQU 16 FILE TYPE @VA04250 00622000
FM EQU 24 FILE MODE DISP @VA04250 00623000
REALREAL EQU 26 REAL TAG IN HEADER @VA04250 00624000
REELADD EQU 32 REAL ADD IN HDR @VA04250 00625000
ITEMINDX EQU 512 ITEM TABLE OFFSET IN INFO REC @VA04250 00626000
SYSVMBAD EQU 892 OFFSET TO SYSTEM VMBLOK ADDRESS @VA04250 00627000
MAXMAP EQU 4095 MAX MAP ENTRIES IN 3 PAGES @VA04250 00628000
* * * * * * * * ------- -------- -------- ------- * 00629000
SIXSAVE DS 3F SAVES THE NAME AND ADDRESS @VA04250 00630000
ORG SIXSAVE OF ANY SIX CHARACTER MATCH @VA04250 00631000
SIXNAME DS 2F SAVE NAME OF A HIT ON 6 CHARS @VA04250 00632000
MODADD DS F ADDRESS @VA04250 00633000
ALIGNER DS F ALIGN FOR LOAD @VA04250 00634000
REALADD DS F REAL ADDDRESS FROM DUMP @VA04250 00635000
DMK DC CL3'DMK' IDENTIFY AN ENTRY @VA04250 00636000
DMKQ DC CL4'DMK?' ADDRESS LOCATE REQUEST @VA04250 00637000
HEXDISP DS F CALCULATED DISP IN HEX @VA04250 00638000
* * * * * * * * ------- -------- -------- ------- * 00639000
* * * * * * * * TEXT OF REPLY TO ADDRESS LOCATE REQUEST 00640000
* * * * * * * * ------- -------- -------- ------- * 00641000
ADDOUT DS CL8 ADDRESS GIVEN @VA04250 00642000
SPACE1 DS CL2 SPACES @VA04250 00643000
TEXT1 DS CL4 TEXT @VA04250 00644000
DISPOUT DS CL6 DISPLACEMENT @VA04250 00645000
TEXT2 DS CL8 MORE TEXT @VA04250 00646000
MODOUT DS CL8 MOD/ENTRY NAME @VA04250 00647000
TEXT3 DS CL6 MORE TEXT @VA04250 00648000
MAPADOUT DS CL6 ADDRESS FROM MAP @VA04250 00649000
MSGLEN EQU *-ADDOUT LENGTH OF MESSAGE @VA04250 00650000
TEXT1TEX DC C'IS INTO AT ' @VA04250 00651000
* * * * * * * * ------- -------- -------- ------- * 00652000
* * * * * * * * CONSTANTS FOR RDERR 00653000
* * * * * * * * ------- -------- -------- ------- * 00654000
CODE4 DC F'4' NON FATAL RETURN @VA04250 00655000
CODE8 DC F'8' FATAL RET @VA04250 00656000
DEPACK DS D UNPACKED RET CODE @VA04250 00657000
DECODE DS D DECIMAL RET CODE @VA04250 00658000
ERMSG100 DC C'DMMMOD100S ERROR ''' TEXT OF ERR MSG @VA04423 00659000
ERRMSGCD DC CL3' ' * @VA04250 00660000
ERRMSGT2 DC C''' READING FILE ''' * @VA04250 00661000
ERRMSGFN DC CL8' ' * @VA04250 00662000
DC CL2' ' FILLER @VA04250 00663000
ERRMSGFT DC CL6' ' * @VA04250 00664000
ERRMSGM DC CL3' ''' * @VA04250 00665000
E100L EQU *-ERMSG100 LENGTH @VA04250 00666000
CPENDADD DS F IN CORE ADDRESS OF CPEND @VA04250 00667000
PAGEADD DS F FIRST PAGEABLE STORAGE ADDRESS @VA04250 00668000
INCOREQ DS F INCORE ADDR OF REQUESTED ADDR @VA04250 00669000
PLISTADD DS F SAVE ADDRESS OF PLIST @VA04250 00670000
REALSTAR DS F REAL ADDRESS START OF MOD @VA04250 00671000
DMKMAC DC CL6'DMKMAC' LOOKS LIKE A MOD NAME BIT ISNT @VA04250 00672000
DMKCPEND DC CL8'DMKCPEND' NAME OF LAST NON PAGEABLE MODULE @VA04250 00673000
DMKFEIBM DC CL8'DMKFEIBM' ENTRY IN DMKPSA TO BE BYPASSED @VA04250 00674000
TWOBLANK DC CL2' ' CHECK FOR MOD NAME @VA04250 00675000
* * * * * * * * MESSAGE IF ADDRESS NOT WITHIN MODULE 00676000
NOTMODAD DC CL8' ' ADDRESS IN 'NOT IN MOD' MSG @VA04250 00677000
NOTMODTX DC C'IS NOT WITHIN A CP MODULE' TEXT OF MSG @VA04250 00678000
NOTMODL EQU *-NOTMODAD LENGTH @VA04250 00679000
* * * * * * * * ------- -------- -------- ------- * 00680000
ERMSG705 DC C'DMMMOD705E ERROR IN ITEM TABLE' @VA04250 00681000
* * * * * * * * ------- -------- -------- ------- * 00682000
ERMSG706 DC C'DMMMOD706I ''' ERROR @VA04250 00683000
MSGMODNM DC CL9' ''' MESSAGE @VA04250 00684000
MSGMSG06 DC C' NOT FOUND IN LOAD MAP' TEXT @VA04250 00685000
E706L EQU *-ERMSG706 LENGTH @VA04250 00686000
* * * * * * * * ------- -------- -------- ------- * 00687000
ERMSG707 DC CL12'DMMMOD707I ''' ERROR 707 @VA04250 00688000
INVMOD DC CL8' ' MODULE @VA04250 00689000
INVHIK DC C''' ''' HICKEYS @VA04250 00690000
INVPAGE DC CL6' ' PAGE @VA04250 00691000
INVMSG DC CL19''' PAGE NOT VALID' TEXT @VA04250 00692000
E707L EQU *-ERMSG707 LENGTH @VA04250 00693000
* * * * * * * * ------- -------- -------- ------- * 00694000
NOMAPMSG DC C'DMMMOD718I THIS DUMP HAS NO LOAD MAP - SEE ''MAP'' SUBX00695300
COMMAND' NO MAP WARNING MSG. @V4075A2 00695600
NOMAP DC F'12' END OF FILE RETCODE @VA04250 00696000
LNGRDY DC C'*** READY ***' LONG READY MSG @V4075A2 00696300
SHRTRDY DC C'*R' SHORT READY @V4075A2 00696600
* * * * * * * * ------- -------- -------- ------- * 00697000
* * * * * * * * CONSTANTS FOR WRTERM 00698000
* * * * * * * * ------- -------- -------- ------- * 00699000
ZBSWITCH DC X'00' ZERO/BLANK SWITCH @VA04250 00700000
FIRSTIME DC X'FF' FIRST TIME IN THIS CODE @VA04250 00701000
OUTLINE DS CL80 OUTPUT LINE @VA04250 00702000
WR8SAVE DS F REG8 SAVE AREA @VA04250 00703000
WR9SAVE DS F REG9 @VA04250 00704000
WR10SAVE DS F REG10 @VA04250 00705000
OFF EQU X'00' SWITCH 'OFF' @VA04250 00706000
BLANK EQU X'40' BLANK @VA04250 00707000
HEXZERO EQU X'00' HEX ZERO @VA04250 00708000
FOXZ EQU X'F0' MASK FOR NUMERIC TEST @VA04250 00709000
* * * * * * * * ------- -------- -------- ------- * 00710000
* * * * * * * * CONSTANTS FOR CLEAR 00711000
* * * * * * * * ------- -------- -------- ------- * 00712000
CCWC CCW X'19',X'0',X'20',1760 ERASE CCW @VA04250 00713000
CCWCTL EQU CCWC+5 CONTROL BYTE @VA04250 00714000
SAVCLR DS 2F SAVE FOR CLEAR SUBR. @VA04250 00715000
SCRNADD DC AL4(SCRNAREA) ADDRESS OF AREA TO BE DISPLAYED @VA04250 00716000
BLANKOUT DC CL80' ' PAD CHARACTER @VA04830 00716500
PATCH DC 50F'0' PATCH @VA04250 00717000
LTORG KEEP LITERALS ADDRESSABLE @VA04250 00718000
BUFF DS 2560D FIVE PAGE BUFFER FOR LOAD MAP @VA08369 00719100
REGEQU @VA04250 00720000
END 00721000