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