MAP TITLE 'DMMMAP (IPCS) VM/370 - RELEASE 6' 00001000 * 00002000 * 00003000 * MODULE NAME: DMMMAP 00004000 * 00005000 * 00006000 * FUNCTION: APPEND COMPRESSED AND SORTED LOAD MAP AT END OF 00007000 * DUMP FILE 00008000 * 00009000 * ATTRIBUTES: NON-REENTRANT 00010000 * NON-REUSABLE 00011000 * 00012000 * 00013000 * ENTRY POINTS: DMMMAP 00014000 * 00015000 * 00016000 * ENTRY CONDITIONS: PARM POINTER IN R1 00017000 * WD1 POINTER TO 12K OUTPUT BUFFER 00018000 * 00019000 * 00020000 * EXIT CONDITIONS: RETURN CODE IN R15 00021000 * 0 NORMAL COMPLETION (LOAD MAP INFO APPENDED TO DUMP) 00022000 * 8 FUNCTION NOT PERFORMED (ERROR ENCOUNTERED) 00023000 * 00024000 * 00025000 * CALLS TO OTHER ROUTINES: NONE 00026000 * 00027000 * 00028000 * EXTERNAL REF: SHARECON (SHARED CONSTANT AREA FOR DMKINI) 00029000 * 00030000 * 00031000 * TABLES/WORKAREAS: NONE 00032000 * 00033000 * 00034000 * REGISTER USAGE: R12 BASE 00035000 * R11 SHARECON DSECT 00036000 * R10 NUCMAP DSECT 00037000 * R9 OUTPUT BUFFER POINTER 00038000 * R8 DYNAMIC POINTER INTO OUTPUT BUFFER 00039000 * R2-R7 WORK 00040000 * 00041000 * 00042000 * NOTES: A 200 BYTE PATCH AREA EXISTS AT LABEL 'PATCH' 00043000 * 00044000 * 00045000 * OPERATION: 00046000 * 00047000 * I. READING THE LOAD MAP 'CPNUC MAP' HRC001DM 00048490 * II. SORTING THE ENTRY POINT ADDRESSES 00049000 * III. APPENDING THE SORTED LOAD MAP TO THE DUMP 00050000 * IV. ERROR PROCESSING 00051000 * 00052000 * I. READING THE LOAD MAP 'CPNUC MAP' HRC001DM 00053490 * 00054000 * A. A RECORD IS READ FROM THE FILE 'CPNUC MAP * ' HRC001DM 00055490 * B. THE RECORD IS EXAMINED FOR 'DMKAAAEE AT XXXXXX' OR HRC001DM 00055980 * 'HDKAAAEE AT XXXXXX' WHICH HRC001DM 00056470 * INDICATES THE RECORD CONTAINS A VALID MOD NAME AND ADDR 00057000 * (DMKAAAEE IS ANY VALID MODULE NAME OR ENTRY POINT) 00058000 * IF THE RECORD DOES NOT CONTAIN A VALID MODULE AND ENTRY THE 00059000 * NEXT RECORD IS READ. 00060000 * C. THE VALID RECORD MOD NAME IS MOVED TO THE OUTPUT BUFF. 00061000 * D. THE EBCDIC HEX ENTRY POINT ADDRESS IS NOW CONVERTED 00062000 * TO INTERNAL HEX AND STORED IN THE OUTPUT BUFFER. 00063000 * E. THE MOD NAME IS EXAMINED FOR 'DMKCPEND' AND IF NOT 00064000 * THE NEXT RECORD IS READ. (GO BACK TO A.) 00065000 * IF IT IS DMKCPEND THE ADDRESS IS COMPARED WITH THE DMKCPEND 00066000 * ADDRESS IN THE DUMP. IF THEY ARE DIFFERENT THE USER IS PROMPTED 00067000 * TO ENTER THE FILE NAME - FILE TYPE - FILEMODE OF THE NUCLEUS LOAD 00068000 * MAP OR ENTER A NULL IF THE NAME IS NOT KNOWN. 00069000 * 00070000 * II. SORTING THE ENTRY POINT ADDRESSES. 00071000 * 00072000 * A. SINCE THE ADDR. PRODUCED ARE SEQUENTIAL BY 00073000 * MODULE BUT NOT NECESSARILY BY ENTRY POINT WITHIN MODULE A 00074000 * SORT IS PERFORMED ON THE DATA IN THE BUFFER. 00075000 * B. BECAUSE THE ADDR ARE CLOSE TO BEING IN ORDER ALREADY 00076000 * THE BUFFER IS MERELY SCANNED SEQUENTIALLY SWAPPING 00077000 * ADJACENT OUT OF SEQUENCE RECORDS. WHEN A SCAN OF THE 00078000 * BUFFER REVEALS NO OUT OF SEQUENCE RECORDS THE SORT IS DONE. 00079000 * 00080000 * III. APPENDING THE COMPRESSED LOAD MAP TO THE DUMP FILE. 00081000 * 00082000 * THE 20K BUFFER IS WRITTEN TO THE END OF THE DUMP FILE 00083000 * (PRBNNNNN DUMP A) IN 5 4096 BYTE WRITES. 00084000 * 00085000 * IV. ERROR PROCESSING 00086000 * 00087000 * ERRORS IN THIS ROUTINE MAY INHIBIT PROCESSING IN OTHER 00088000 * ROUTINES WITHIN THE DMMEDM STRUCTURE NO ERROR 00089000 * WILL TERMINATE PROCESSING. 00090000 * 00091000 * COMP. THE ADDR.OF DMKCPEND BETWEEN THE DUMP AND THE 00092000 * LOAD MAP IS NOT A CERTAIN METHOD OF DETERMINING THE 00093000 * VALIDITY OF A LOAD MAP BUT WILL BE EFFECTIVE IN MOST CASES. 00094000 * 00095000 * ERROR MESSAGES: 00096000 * 00097000 * DMKMAP810S ERROR 'NNN' READING FILE 'FILENAME FILETYPE FM' 00098000 * DMMMAP200S ERROR 'NNN' WRITING FILE 'PRBNNNNN DUMP A1' 00099000 * DMMMAP801I FILE 'CPNUC MAP' IS NOT VALID HRC001DM 00100490 * DMMMAP802I PROCEEDING.... 00101000 * DMMMAP806R ENTER FN FT FM OF THE NUCLEUS LOAD MAP 00102000 * DMMMAP807I UNABLE TO LOCATE 'FN FT FM' 00103000 * DMMMAP808I NUCLEUS MAP INVALID ' FN FT FM ' 00104000 * 00105000 EJECT 00106000 DMMMAP CSECT @VA04250 00107000 USING DMMMAP,R15 TEMPORARY ADDRESSABILITY @VA04250 00108000 B START BRANCH AROUND EYECATCHER @VA04250 00109000 DS 0D @VA04250 00110000 MODNAME DC C'DMMMAP ' MODULE NAME @VA04250 00111000 RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00112000 START STM R14,R12,12(R13) SAVE CALLERS REGS @VA04250 00113000 LR R12,R15 SET UP OUR BASE @VA04250 00114000 DROP R15 @VA04250 00115000 USING DMMMAP,R12 ESTABLISH OUR BASE @VA04250 00116000 ST R13,SAVEAREA+8 SAVE CALLER'S SAVEAREA PTR @VA04250 00117000 LA R13,SAVEAREA POINT TO OUR SAVEAREA @VA04250 00118000 LA R10,INLINE SET R10 FOR USING @VA04250 00119000 USING NUCMAP,R10 DSECT OF NUC MAP VALID DATA @VA04250 00120000 L R11,VSHARE POINT TO SHARED CON AREA @VA04250 00121000 USING SHARECON,R11 ADDRESSABILITY FOR SHARECON @VA04250 00122000 MVC DUMPNAME,DUMPNUM SAVE DUMP NAME PASSED IN R1 @VA04250 00123000 MVC WRFN,DUMPNUM SAVE FILENAME IN ERROR MSG @VA04250 00124000 L R9,0(R1) ADDRESS OF MAP BUFFERS @VA04250 00125000 ST R1,PARMSAVE SAVE PARM LIST ADDRESS @VA04250 00126000 *************************************************************** 00127000 * THIS ROUTINE READS AN EXISTING LOAD MAP WHICH MUST BE NAMED 00128000 * 'NUC MAP A'. IT TRANSLATES THE ADDR FROM EBCDIC TO HEX, SORTS 00129000 * THE ENTRY POINTS INTO ASCENDING ADDRESS ORDER, AND WRITES THE 00130000 * SORTED LOAD MAP AT THE END OF THE DUMP FILE. 00131000 *************************************************************** 00132000 SPACE 1 00133000 LR R8,R9 GET PASSED BUFFER POINTER @VA04250 00134000 READ LA R2,NUCMAPFN POINT TO 'CPNUC MAP * ' HRC001DM 00135490 FSREAD (R2),BUFFER=INLINE,ERROR=INERR,BSIZE=160 @VA04832 00136000 CLC NCDMK,=C'HDK' IS THIS AN HRC MODULE ? HRC001DM 00136300 BE CHKAT HRC001DM 00136600 CLC NCDMK,=C'DMK' IS THIS A VALID MODULE NAME? @VA04250 00137000 BNE READ NOT 'DMK' GO GET NEXT RECORD @VA04250 00138000 CHKAT DS 0H HRC001DM 00138500 CLC NCAT,=C'AT' IF NOT 'AT' THEN JUST TRASH @VA04250 00139000 BNE READ NOT 'AT', GO GET NEXT RECORD @VA04250 00140000 *************************************************************** 00141000 * WE NOW HAVE A VALID ENTRY FROM THE NUC MAP OF THE FORM: 00142000 * DMKAAABB AT XXXXXX OR HDKAAABB AT XXXXXX HRC001DM 00143490 * WE WILL NOW TRANSLATE THE XXXXXX BACK TO HEXADECIMAL 00144000 *************************************************************** 00145000 MVC 0(L'NCMODULE,R8),NCMODULE MOD NAME TO BUFFER @VA04250 00146000 LA R8,OUTADDR(R8) OUTPUT ADDRESS FIELD @VA04250 00147000 LA R2,LASTBYTE POINT TO LAST BYTE OF ADDR. @VA04250 00148000 LA R3,L'NCADDR EBCDIC ADDR IS 6 BYTES LONG @VA04250 00149000 XLOOP IC R4,0(R2) GET A BYTE OF ADDRESS @VA04250 00150000 TM 0(R2),NUMERIC IS THIS BYTE 0 TO 9? @VA04250 00151000 BO XNOADD YES @VA04250 00152000 LA R4,ADDNINE(R4) X'C1' BECOMES X'CA' (E.G.) @VA04250 00153000 XNOADD SRDL R4,4 SAVE RESULT HEX DIGIT IN R5 @VA04250 00154000 BCTR R2,0 POINT BACK TO NEXT BYTE @VA04250 00155000 BCT R3,XLOOP DO THIS FOR 6 BYTES @VA04250 00156000 SR R4,R4 CLEAR R4 @VA04250 00157000 SRDL R4,8 HIGH ORDER X'00' TO R5 @VA04250 00158000 ST R5,0(R8) SAVE RESULT HEX ADDR IN OUT @VA04250 00159000 CLC NCMODULE,=C'DMKCPEND' CP END ADDRESS? @VA04250 00160000 BE XCK YES, GO CHECK FOR VALID MAP @VA04250 00161000 LA R8,BUFFNXT(R8) UPDATE BUFFER POINTER @VA04250 00162000 B READ CONTINUE @VA04250 00163000 XCK MVI ENDFOUND,SWITCHON DMKCPEND FOUND @VA04250 00164000 C R5,REALEND NUC MAP CPEND SAME AS MAP @VA04250 00165000 BNE MAPERROR NO, WE CAN'T USE IT @VA04250 00166000 MVC TEXT5(RECLEN),TEXT7 CLEAR ANY MSGS OUT OF TEXT5 @VA04250 00167000 LA R8,OUTNEXT(R8) POINT TO NEXT OUTPUT FIELD @VA04250 00168000 B READ GET NEXT ENTRY @VA04250 00169000 INERR CH R15,EOF END OF FILE? @VA04250 00170000 BNE READERR NO, WE REALLY HAD AN ERROR @VA04250 00171000 CLI ENDFOUND,SWITCHON DID WE FIND DMKCPEND? @VA04250 00172000 BNE MAPERROR GO WRITE INVALID MESSAGE @VA04250 00173000 FSCLOSE (R2) @VA04250 00174000 *************************************************************** 00175000 * WE NOW HAVE ALL ADDR. TRANSLATED AND ALL MOD NAMES AND THEIR 00176000 * ADDR PUT IN OUTPUT BUFFER. WE WILL NOW SORT THE ENTRY POINT 00177000 * ADDRESSES IN ASCENDING ORDER. 00178000 * 00179000 * THE LOAD MAP IS ALREADY IN SEQUENCE BY MOD NAME AND ONLY 00180000 * THE ENTRY POINTS WITHIN MODS MAY BE OUT OF SEQUENCE THIS SORT 00181000 * WILL GO THROUGH THE BUFFER SWAPPING OUT OF SEQUENCE RECORDS. 00182000 * WHEN A PASS THROUGH THE BUFFER IS MADE WITHOUT ENCOUNTERING 00183000 * AN OUT OF SEQUENCE CONDITION THE SORT IS DONE. 00184000 *************************************************************** 00185000 MAPSORT LA R4,SWITCH R4 WILL BE USED AS A SWITCH @VA04250 00186000 * IF IT IS ZERO AT LEAST ONE OUT 00187000 * OF SEQUENCE RECORD WAS FOUND. 00188000 LR R2,R9 POINT TO START OF BUFFER @VA04250 00189000 LA R3,NEXTREC(R2) POINT TO NEXT RECORD @VA04250 00190000 MAPLOOP CLC PASTNAME(MAPADDR,R2),PASTNAME(R3) COMP. ADDR. @VA04250 00191000 * OF THE TWO ADDRESSES 00192000 BH MAPSWAP OUT OF SEQUENCE, BRANCH @VA04250 00193000 LR R2,R3 NEXT RECORD @VA04250 00194000 LA R3,NEXTREC(R3) NEXT RECORD @VA04250 00195000 CR R3,R8 AT END? @VA04250 00196000 BL MAPLOOP NO CONTINUE @VA04250 00197000 LTR R4,R4 ANY OUT OF SEQUENCE FOUND? @VA04250 00198000 BZ MAPSORT YES, GO MAKE ANOTHER PASS @VA04250 00199000 B WRTOUT ALL DONE SORTING, CONTINUE @VA04250 00200000 MAPSWAP LM R5,R7,0(R2) SAVE OLD MODNAME AND ADDRESS @VA04250 00201000 MVC 0(NEXTREC,R2),0(R3) SWAP THE TWO ENTRIES @VA04250 00202000 STM R5,R7,0(R3) DONE SWAPPING NOW @VA04250 00203000 LR R2,R3 NEXT ENTRY @VA04250 00204000 LA R3,NEXTREC(R2) NEXT ENTRY @VA04250 00205000 SR R4,R4 SET OUT OF SEQUENCE SWITCH @VA04250 00206000 CR R3,R8 AT END? @VA04250 00207000 BL MAPLOOP NO @VA04250 00208000 B MAPSORT START FROM BEGINNING AGAIN @VA04250 00209000 *************************************************************** 00210000 * NOW APPEND THE SORTED LOAD MAP TO THE END OF THE DUMP. 00211000 * THREE 4096 CHARACTER RECORDS WILL BE WRITTEN. 00212000 *************************************************************** 00213000 WRTOUT LR R3,R9 POINT TO OUTPUT BUFFER @VA04250 00214000 LA R4,WRITCNT COUNT WRITES TO DUMP @VA04250 00215000 WRITE LA R2,DUMPNAME POINT TO 'PRBNNNNN DUMP A1' @VA04250 00216000 FSWRITE (R2),BUFFER=(R3),ERROR=WRTERR,BSIZE=4096 @VA04250 00217000 A R3,FOURK GET NEXT OUTPUT AREA @VA04250 00218000 BCT R4,WRITE AND GO WRITE IT @VA04250 00219000 FSCLOSE (R2) @VA04250 00220000 B ALLDONE WE ARE FINISHED @VA04250 00221000 *************************************************************** 00222000 * TERMINAL WRITE 00223000 *************************************************************** 00224000 WRTERM WRTERM (R2),(R3) @VA04250 00225000 BR R4 RETURN @VA04250 00226000 *************************************************************** 00227000 * THE CPEND ADDRESS IN THE DUMP IS NOT THE SAME AS THAT IN THE 00228000 * 'CPNUC MAP ' FILE. HRC001DM 00229490 * DMMMAP801I FILE 'NUC MAP IS NOT VALID FOR THIS DUMP' 00230000 *************************************************************** 00231000 MAPERROR MVC MSGMAP2,NUCMAPFN MOVE FILE NAME TO MSG @VA04250 00232000 MVC MSGMAP3,NUCMAPFT MOVE FILE TYPE TO MSG @VA04250 00233000 MVC MSGMAP4(L'NUCMAPFM),NUCMAPFM FILE MODE TO MSG @VA04250 00234000 LA R2,MSGMAP DMMMAP801I MSG @VA04250 00235000 LA R3,MSGMAPL LENGTH OF MESSAGE @VA04250 00236000 BAL R4,WRTERM GO PUT MESSAGE ON TERMINAL @VA04250 00237000 B CONTMSG GO ISSUE PROCEEDING MSG @VA04250 00238000 *************************************************************** 00239000 * READ ERROR ON FILE 'CPNUC MAP A' HRC001DM 00240490 *************************************************************** 00241000 READERR CVD R15,WKDWD CONVERT FSREAD RETURN TO DEC @VA04250 00242000 UNPK RDCODE,DECNUM(DECLN) UNPK DECIMAL RC TO MSG @VA04250 00243000 OI RDCODE2,NUMERIC MAKE IT READABLE @VA04250 00244000 CLI RETRYSW,SWITCHON ARE WE IN SUBSEQUENT READ @VA04250 00245000 BE RETRYMSG YES, BUILD DIFFERENT MSG @VA04250 00246000 LA R2,MSGREAD DMMMAP810S ERROR MESSAGE @VA04250 00247000 LA R3,MSGREADL LENGTH OF ERROR MESSAGE @VA04250 00248000 MVC TEXT5(MSGREADL),MSGREAD ERR MSG TO REPT TEXT @VA04250 00249000 BAL R4,WRTERM OUTPUT MESSAGE TO TERMINAL @VA04250 00250000 LA R2,NUCMAPFN POINT TO NUC MAP FILENAME @VA04250 00251000 FSCLOSE (R2) @VA04250 00252000 B CONTMSG ISSUE DMMMAP802I MESSAGE @VA04250 00253000 RETRYMSG MVC RETRYCD(L'RDCODE),RDCODE RETURN CODE TO MSG @VA04250 00254000 MVC RETRYRD1(L'NUCMAPFN),NUCMAPFN FILE NAME TO MSG @VA04250 00255000 MVC RETRYRD2(L'NUCMAPFT),NUCMAPFT FILE TYPE TO MSG @VA04250 00256000 MVC RETRYRD3(L'NUCMAPFM),NUCMAPFM FILE MODE TO MSG @VA04250 00257000 LA R2,RETRYRDM ADDRESS OF READ ERR MSG @VA04250 00258000 LA R3,RETRYRDL LENGTH OF MESSAGE @VA04250 00259000 BAL R4,WRTERM GO TO COMMON WRITE @VA04250 00260000 B CONTMSG GO WRITE PROCEEDING MSG @VA04250 00261000 WRTERR CVD R15,WKDWD CONVERT RET CODE TO DECIMAL @VA04250 00262000 UNPK WRCODE,DECNUM(DECLN) UNPK DECIMAL RC TO MSG @VA04250 00263000 OI WRCODE2,NUMERIC MAKE IT READABLE @VA04250 00264000 LA R2,MSGWRT DMMMAP200S ERROR MESSAGE @VA04250 00265000 LA R3,MSGWRTL MESSAGE LENGTH @VA04250 00266000 MVC TEXT5(MSGWRTL),MSGWRT ERR MSG TO REPT TEXT @VA04250 00267000 BAL R4,WRTERM PUT ERR MESSAGE ON TERMINAL @VA04250 00268000 LA R2,DUMPNAME POINT TO FILE NAME @VA04250 00269000 FSCLOSE (R2) @VA04250 00270000 B RETCOD8A RETURN TO CALLER @VM04420 00271000 CONTMSG LA R2,MSGCONT DMMMAP802I PROCEEDING... @VA04250 00272000 LA R3,MSGCONTL MESSAGE LENGTH @VA04250 00273000 BAL R4,WRTERM PUT MESSAGE ON TERMINAL @VA04250 00274000 ************************************************************* 00275000 * * PROMPT THE USER TO ENTER THE NAME OF THE NUCLEUS LOAD MAP 00276000 ************************************************************* 00277000 MAPNAME LA R2,MSGENT ADDRESS OF MESSAGE @VA04250 00278000 LA R3,MSGENTLN LENGTH OF MESSAGE @VA04250 00279000 BAL R4,WRTERM GO WRITE MESSAGE @VA04250 00280000 MVI ENDFOUND,SWTCHOFF RESET CPEND FOUND SWITCH @VA04250 00281000 RDTERM PROMPT READ USER REPLY @VA04250 00282000 LTR R0,R0 CHECK FOR NO REPLY @VA04250 00283000 BZ RETCOD8 IF NULL REPLY QUIT @VA04250 00284000 B CHECKIN LETS BUILD A FN FT FM @VA04250 00285000 ************************************************************* 00286000 ** HERE TO CHECK USER INPUT. ALLOW UP TO 5 BLANKS PRECEDING 00287000 ** FILE NAME AND FIVE BLANKS BETWEEN FILE TYPE AND FILE MODE. 00288000 ** IF FILE MODE IS LEFT BLANK, DEFAULT TO MODE 'A1'. 00289000 ************************************************************* 00290000 CHECKIN LA R5,BLANKCNT SET BLANK COUNT TO FIVE @VA04250 00291000 LA R6,PROMPT GET ADDRESS OF USER INPUT @VA04250 00292000 FNCHK CLI 0(R6),BLANK IS FIRST CHARACTER BLANK? @VA04250 00293000 BNE FNMOVE IF NOT MOVE 1ST CHAR FN @VA04250 00294000 LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00295000 BCT R5,FNCHK IF BLANK CHECK NEXT CHAR. @VA04250 00296000 B MAPNAME @VA04250 00297000 FNMOVE MVC NUCMAPFN,FNCLEAR CLEAR FILE NAME AREA @VA04250 00298000 LA R4,NUCMAPFN R4 HAS FN ADDRESS @VA04250 00299000 FNMOVE1 MVC 0(ONEBYTE,R4),0(R6) MOVE ONE BYTE TO FN @VA04250 00300000 LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00301000 LA R4,ONEBYTE(R4) INCREMENT OUTPUT AREA @VA04250 00302000 LA R3,FNEND START OF FT ADDRESS @VA04250 00303000 CR R4,R3 END OF FN? @VA04250 00304000 BE FNINCR YES, GO MOVE FILE TYPE @VA04250 00305000 CLI 0(R6),BLANK IS IT BLANK? @VA04250 00306000 BNE FNMOVE1 NO, GO MOVE IT @VA04250 00307000 FNINCR LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00308000 FTCHECK LA R5,BLANKCNT RESET BLANK COUNT AMOUNT @VA04250 00309000 FTBLANK CLI 0(R6),BLANK IS IT BLANK? @VA04250 00310000 BNE FTMOVE NO, GO MOVE IT @VA04250 00311000 LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00312000 BCT R5,FTBLANK GO CHECK AGAIN FOR BLANK @VA04250 00313000 B MAPNAME GO BACK AND LET HIM TRY AGAIN @VA04250 00314000 FTMOVE MVC NUCMAPFT,FTCLEAR CLEAR FILE TYPE AREA @VA04250 00315000 LA R4,NUCMAPFT R4 HAS FT ADDRESS @VA04250 00316000 FTMOVE1 MVC 0(ONEBYTE,R4),0(R6) MOVE ONE BYTE TO FT @VA04250 00317000 LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00318000 LA R4,ONEBYTE(R4) INCREMENT OUTPUT AREA @VA04250 00319000 LA R3,FTEND END OF FILE NAME @VA04250 00320000 BE FTINCR YES GO MOVE FILE MODE @VA04250 00321000 CLI 0(R6),BLANK IS IT BLANK? @VA04250 00322000 BNE FTMOVE1 NO, GO MOVE IT @VA04250 00323000 FTINCR LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00324000 B FMCHECK GO GET FILE MODE @VA04250 00325000 FMCHECK LA R5,BLANKCNT RESET BLANK COUNT @VA04250 00326000 FMBLANK CLI 0(R6),BLANK IS IT BLANK? @VA04250 00327000 BNE FMMOVE NO, GO MOVE IT @VA04250 00328000 LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00329000 BCT R5,FMBLANK GO LOOK AT NEXT CHAR @VA04250 00330000 MVC NUCMAPFM,FMDEF NO ENTRY, DEFAULT TO A1 @VA04250 00331000 B MAPSTATE GO DO FSSTATE FOR MAP @VA04250 00332000 FMMOVE MVC NUCMAPFM(ONEBYTE),0(R6) MOVE FILE MODE @VA04250 00333000 MAPSTATE LA R2,NUCMAPFN GET FN-FT-FM FOR STATE @VA04250 00334000 MVI RETRYSW,SWITCHON TURN ON READ RETRY SWITCH @VA04250 00335000 FSSTATE (R2),ERROR=STATERR IS MAP NAME VALID? @VA04250 00336000 MVI ENDFOUND,SWTCHOFF RESET CPEND FOUND SWITCH @VA04250 00337000 L R9,PARMSAVE GET ADDRESS OF PARM SAVE @VA04250 00338000 L R9,0(,R9) BUFF ADDRESS FROM PARM @VA04250 00339000 LR R8,R9 PUT BUFF ADDRESS IN R8 @VA04250 00340000 B READ IF YES GO READ IT @VA04250 00341000 STATERR MVC MAPERR1(L'NUCMAPFN),NUCMAPFN FILE NAME TO MSG @VA04250 00342000 MVC MAPERR2(L'NUCMAPFT),NUCMAPFT FILE NAME TO MSG @VA04250 00343000 MVC MAPERR3(L'NUCMAPFM),NUCMAPFM FILE MODE TO MSG @VA04250 00344000 MVC STATERRM(L'MAP807),MAP807 MOVE 807I TO MSG @VA04250 00345000 LA R2,STATERRM MESSAGE TEXT @VA04250 00346000 LA R3,STATERRL MESSAGE TEXT LENGTH @VA04250 00347000 BAL R4,WRTERM GO WRITE STATE ERR MSG @VA04250 00348000 B CONTMSG GO SET UP PROCEEDING MSG @VA04250 00349000 RETCOD8 L R13,SAVEAREA+8 REST CALLER'S SAVEAREA PTR @VA04250 00350000 MVC MSGMAP2,NUCMAPFN SET UP MSG FOR REPORT TEXT @VA04250 00351000 MVC MSGMAP3,NUCMAPFT FILE TYPE TO MSG @VA04250 00352000 MVC MSGMAP4,NUCMAPFM FILE MODE TO MSG @VA04250 00353000 MVC TEXT5(MSGMAPL),MSGMAP ERROR MSG TO REPORT TEXT @VA04250 00354000 RETCOD8A L R13,SAVEAREA+8 RESTORE SAVEAREA POINTER @VM04420 00355000 LM R14,R12,12(R13) RESTORE CALLER'S REGISTERS @VM04420 00356000 LA R15,RETCODE8 LOAD RETURN CODE 8 @VA04250 00357000 BR R14 RETURN @VA04250 00358000 ALLDONE L R13,SAVEAREA+8 REST CALLER'S SAVEAREA PTR @VA04250 00359000 LM R14,R12,12(R13) CALLER'S REGISTERS @VA04250 00360000 SR R15,R15 RETURN CODE ZERO @VA04250 00361000 BR R14 RETURN @VA04250 00362000 EJECT 00363000 *************************************************************** 00364000 * CONSTANTS SAVEAREAS AND EQUATES 00365000 *************************************************************** 00366000 SAVEAREA DS 18F OUR SAVEAREA @VA04250 00367000 WKDWD DS D DOUBLE WORD FOR WORK AREA @VA04250 00368000 ********* 00369000 DUMPNAME DS CL8 PRBNNNNN DUMP NAME @VA04250 00370000 DC C'DUMP A1' FILETYPE AND FILEMODE @VA04250 00371000 ********* 00372000 NUCMAPFN DC CL8'CPNUC ' NUC MAP FILE NAME HRC001DM 00373490 NUCMAPFT DC CL8'MAP ' NUC MAP FILE TYPE @VA04250 00374000 NUCMAPFM DC CL2'* ' NUC MAP FILE MODE HRC001DM 00375490 PROMPT DC CL132' ' USER INPUT AREA @VA04250 00376000 FNCLEAR DC CL8' ' 8 BLANKS TO CLEAR FILE NAME @VA04250 00377000 FTCLEAR DC CL8' ' 8 BLANKS TO CLEAR FILE TYPE @VA04250 00378000 FMDEF DC CL2'A1' DEFAULT FILE MODE A1 @VA04250 00379000 DS F @VA04250 00380000 PARMSAVE DC CL4' ' PARM ADDRESS SAVE AREA @VA04250 00381000 RETRYSW DC CL1' ' READ RETRY SWITCH @VA04250 00382000 ENDFOUND DC CL1' ' CPEND FOUND SWITCH @VA04250 00383000 STATERRM DC C' ''' @VA04250 00384000 MAPERR1 DC CL9' ' FILE NAME MESSAGE ENTRY @VA04250 00385000 MAPERR2 DC CL9' ' FILE TYPE MESSAGE ENTRY @VA04250 00386000 MAPERR3 DC CL2' ' FILE MODE ENTRY @VA04250 00387000 DC X'7D' APOSTROPHE @VA04250 00388000 STATERRL EQU *-STATERRM LENGTH OF MESSAGE @VA04250 00389000 RETRYRDM DC C'DMMMAP810S Error ''' HRC001DM 00390490 RETRYCD DS CL3 RETURN CODE @VA04250 00391000 DC C''' reading file ''' HRC001DM 00392490 RETRYRD1 DC CL9' ' FILE NAME LOCATION @VA04250 00393000 RETRYRD2 DC CL9' ' FILE TYPE MSG LOCATION @VA04250 00394000 RETRYRD3 DC CL2' ' FILE MODE MSG LOCATION @VA04250 00395000 DC X'7D' APOSTROPHE @VA04250 00396000 RETRYRDL EQU *-RETRYRDM LENGTH OF MESSAGE @VA04250 00397000 MSGENT DC C'DMMMAP806R Enter FN FT FM of NUCLEUS LOAD MAP or enterX00398590 null' HRC001DM 00399180 MSGENTLN EQU *-MSGENT LENGTH OF MESSAGE @VA04250 00400000 MAP807 DC C'DMMMAP807I Unable to locate ' HRC001DM 00401490 VSHARE DC V(SHARECON) COMMON SHARED CONSTANTS @VA04250 00402000 NUMERIC EQU X'F0' USED TO CHK FOR NUMER. DATA @VA04250 00403000 ONE EQU 1 1 FOR LOAD ADDRESS ETC. @VA04250 00404000 FOUR EQU 4 4 FOR LOAD ADDRESS ETC. @VA04250 00405000 EIGHT EQU 8 8 FOR LOAD ADDRESS ETC. @VA04250 00406000 NINE EQU 9 9 FOR LOAD ADDRESS ETC. @VA04250 00407000 TWELVE EQU 12 12 FOR LOAD ADDRESS ETC. @VA04250 00408000 FNEND EQU NUCMAPFT START OF FT IS END OF FN @VA04250 00409000 FTEND EQU NUCMAPFM END OF FILE TYPE @VA04250 00410000 INLINE DS CL160 NUC MAP INPUT RECORD @VA04832 00411000 EOF DC H'12' END OF FILE @VA04250 00412000 OUTADDR EQU 8 INCREMENT OUTPUT ADDRESS @VA04250 00413000 ADDNINE EQU 9 TRANSLATE VALUE @VA04250 00414000 BUFFNXT EQU 4 INCREMENT BUFFER ADDRESS @VA04250 00415000 OUTNEXT EQU 4 DISPLACEMENT OF NEXT OUTPUT AREA @VA04250 00416000 NEXTREC EQU 12 DISPL.FOR LOAD MAP ENTRIES @VA04250 00417000 SWTCHOFF EQU X'00' SWITCH OFF INDICATOR @VA04250 00418000 SWITCHON EQU X'FF' SWITCH ON INDICATOR @VA04250 00419000 BLANKCNT EQU 5 BLANK COUNT = 5 @VA04250 00420000 BLANK EQU C' ' EQUATE BLANK TO '40' @VA04250 00421000 ONEBYTE EQU 1 COUNT FOR MOVING ONE BYTE @VA04250 00422000 FOURK DC F'4096' CONSTANT OF 4K @VA04250 00423000 *************************************************************** 00424000 * ERROR MESSAGES 00425000 *************************************************************** 00426000 MSGMAP DC C'DMMMAP801I NUC MAP ' INVALID MSG NUMBER @VA04250 00427000 MSGMAP1 DC X'7D' @VA04250 00428000 MSGMAP2 DC CL8' ' FILE NAME FOR 801 MSG @VA04250 00429000 DC CL1' ' @VA04250 00430000 MSGMAP3 DC CL8' ' FILE TYPE FOR 801 MSG @VA04250 00431000 DC CL1' ' @VA04250 00432000 MSGMAP4 DC CL2' ' FILE MODE FOR 801 MSG @VA04250 00433000 DC X'7D' APOSTROPHE FOR FN FT FM @VA04250 00434000 MSGMAP5 DC C' not valid for this DUMP' HRC001DM 00435490 MSGMAPL EQU *-MSGMAP LENGTH OF MESSAGE @VA04250 00436000 MSGREAD DC C'DMMMAP810S Error ''' HRC001DM 00437490 RDCODE DS CL3 FSREAD RETURN CODE @VA04250 00438000 DC C''' reading file ''CPNUC MAP * ''' HRC001DM 00439490 MSGREADL EQU *-MSGREAD LENGTH OF MESSAGE @VA04250 00440000 MSGWRT DC C'DMMMAP200S Error ''' HRC001DM 00441490 WRCODE DS CL3 FSWRITE RETURN CODE @VA04250 00442000 DC C''' writing file ''' HRC001DM 00443490 WRFN DS CL8 PRBNNNNN (DUMP FILENAME) @VA04250 00444000 DC C' DUMP A1''' @VM04420 00445000 MSGWRTL EQU *-MSGWRT LENGTH OF MESSAGE @VA04250 00446000 MSGCONT DC C'DMMMAP802I Proceeding.....' HRC001DM 00447490 MSGCONTL EQU L'MSGCONT LENGTH OF MESSAGE @VA04250 00448000 PATCH DC 50F'0' PATCH AREA @VA04250 00449000 LTORG @VA04250 00450000 *************************************************************** 00451000 * DSECT OF NUC MAP RECORD WHICH HAS VALID MOD NAME AND ADDR: 00452000 * DMKAAAEE AT XXXXXX 00453000 *************************************************************** 00454000 NUCMAP DSECT @VA04250 00455000 NUCMAP1 DS 0CL132 LENGTH OF PRINT RECORD @VA04250 00456000 NC1 DS CL7 BLANKS @VA04250 00457000 NCMODULE DS 0CL8 DMKAAAEE @VA04250 00458000 NCDMK DS CL3 'DMK' INDICATOR @VA04250 00459000 NCAAAEE DS CL5 REST OF MODULE NAME @VA04250 00460000 NC2 DS CL1 BLANK @VA04250 00461000 NCAT DS CL2 'AT' @VA04250 00462000 NC3 DS CL1 BLANK @VA04250 00463000 NCADDR DS CL6 EBCDIC HEX ADDRESS @VA04250 00464000 LASTBYTE EQU NCADDR+L'NCADDR-1 LAST BYTE OF HEX ADDR. FIELD @VA04250 00465000 SWITCH EQU 1 SWITCH SET @VA04250 00466000 PASTNAME EQU 9 ADDRESS PORTION OF MAP RECORD @VA04250 00467000 MAPADDR EQU 3 LENGTH OF MAP ADDRESS FIELD @VA04250 00468000 WRITCNT EQU 5 NUMBER OF DISK WRITES @VA08369 00469000 NC4 DS CL107 BLANKS @VA04250 00470000 DECNUM EQU WKDWD+6 RET CODE DECIMAL FIELD @VA04250 00471000 DECLN EQU 2 LENGTH OF DECIMAL FIELD @VA04250 00472000 RDCODE2 EQU RDCODE+2 LOW ORDER OF RET CODE @VA04250 00473000 WRCODE2 EQU WRCODE+2 LOW ORDER OF RET CODE @VA04250 00474000 RETCODE8 EQU 8 RETURN CODE 8 @VA04250 00475000 RECLEN EQU 80 LENGTH OF OUTPUT RECORD @VA04250 00476000 SPACE 1 00477000 COPY EXCONST @VA04250 00478000 REGEQU @VA04250 00479000 END 00480000