Table of Contents

DMMMAP Source

References

Source Listing

DMMMAP.ASSEMBLE.txt
  1. MAP TITLE 'DMMMAP (IPCS) VM/370 - RELEASE 6' 00001000
  2. * 00002000
  3. * 00003000
  4. * MODULE NAME: DMMMAP 00004000
  5. * 00005000
  6. * 00006000
  7. * FUNCTION: APPEND COMPRESSED AND SORTED LOAD MAP AT END OF 00007000
  8. * DUMP FILE 00008000
  9. * 00009000
  10. * ATTRIBUTES: NON-REENTRANT 00010000
  11. * NON-REUSABLE 00011000
  12. * 00012000
  13. * 00013000
  14. * ENTRY POINTS: DMMMAP 00014000
  15. * 00015000
  16. * 00016000
  17. * ENTRY CONDITIONS: PARM POINTER IN R1 00017000
  18. * WD1 POINTER TO 12K OUTPUT BUFFER 00018000
  19. * 00019000
  20. * 00020000
  21. * EXIT CONDITIONS: RETURN CODE IN R15 00021000
  22. * 0 NORMAL COMPLETION (LOAD MAP INFO APPENDED TO DUMP) 00022000
  23. * 8 FUNCTION NOT PERFORMED (ERROR ENCOUNTERED) 00023000
  24. * 00024000
  25. * 00025000
  26. * CALLS TO OTHER ROUTINES: NONE 00026000
  27. * 00027000
  28. * 00028000
  29. * EXTERNAL REF: SHARECON (SHARED CONSTANT AREA FOR DMKINI) 00029000
  30. * 00030000
  31. * 00031000
  32. * TABLES/WORKAREAS: NONE 00032000
  33. * 00033000
  34. * 00034000
  35. * REGISTER USAGE: R12 BASE 00035000
  36. * R11 SHARECON DSECT 00036000
  37. * R10 NUCMAP DSECT 00037000
  38. * R9 OUTPUT BUFFER POINTER 00038000
  39. * R8 DYNAMIC POINTER INTO OUTPUT BUFFER 00039000
  40. * R2-R7 WORK 00040000
  41. * 00041000
  42. * 00042000
  43. * NOTES: A 200 BYTE PATCH AREA EXISTS AT LABEL 'PATCH' 00043000
  44. * 00044000
  45. * 00045000
  46. * OPERATION: 00046000
  47. * 00047000
  48. * I. READING THE LOAD MAP 'CPNUC MAP' HRC001DM 00048490
  49. * II. SORTING THE ENTRY POINT ADDRESSES 00049000
  50. * III. APPENDING THE SORTED LOAD MAP TO THE DUMP 00050000
  51. * IV. ERROR PROCESSING 00051000
  52. * 00052000
  53. * I. READING THE LOAD MAP 'CPNUC MAP' HRC001DM 00053490
  54. * 00054000
  55. * A. A RECORD IS READ FROM THE FILE 'CPNUC MAP * ' HRC001DM 00055490
  56. * B. THE RECORD IS EXAMINED FOR 'DMKAAAEE AT XXXXXX' OR HRC001DM 00055980
  57. * 'HDKAAAEE AT XXXXXX' WHICH HRC001DM 00056470
  58. * INDICATES THE RECORD CONTAINS A VALID MOD NAME AND ADDR 00057000
  59. * (DMKAAAEE IS ANY VALID MODULE NAME OR ENTRY POINT) 00058000
  60. * IF THE RECORD DOES NOT CONTAIN A VALID MODULE AND ENTRY THE 00059000
  61. * NEXT RECORD IS READ. 00060000
  62. * C. THE VALID RECORD MOD NAME IS MOVED TO THE OUTPUT BUFF. 00061000
  63. * D. THE EBCDIC HEX ENTRY POINT ADDRESS IS NOW CONVERTED 00062000
  64. * TO INTERNAL HEX AND STORED IN THE OUTPUT BUFFER. 00063000
  65. * E. THE MOD NAME IS EXAMINED FOR 'DMKCPEND' AND IF NOT 00064000
  66. * THE NEXT RECORD IS READ. (GO BACK TO A.) 00065000
  67. * IF IT IS DMKCPEND THE ADDRESS IS COMPARED WITH THE DMKCPEND 00066000
  68. * ADDRESS IN THE DUMP. IF THEY ARE DIFFERENT THE USER IS PROMPTED 00067000
  69. * TO ENTER THE FILE NAME - FILE TYPE - FILEMODE OF THE NUCLEUS LOAD 00068000
  70. * MAP OR ENTER A NULL IF THE NAME IS NOT KNOWN. 00069000
  71. * 00070000
  72. * II. SORTING THE ENTRY POINT ADDRESSES. 00071000
  73. * 00072000
  74. * A. SINCE THE ADDR. PRODUCED ARE SEQUENTIAL BY 00073000
  75. * MODULE BUT NOT NECESSARILY BY ENTRY POINT WITHIN MODULE A 00074000
  76. * SORT IS PERFORMED ON THE DATA IN THE BUFFER. 00075000
  77. * B. BECAUSE THE ADDR ARE CLOSE TO BEING IN ORDER ALREADY 00076000
  78. * THE BUFFER IS MERELY SCANNED SEQUENTIALLY SWAPPING 00077000
  79. * ADJACENT OUT OF SEQUENCE RECORDS. WHEN A SCAN OF THE 00078000
  80. * BUFFER REVEALS NO OUT OF SEQUENCE RECORDS THE SORT IS DONE. 00079000
  81. * 00080000
  82. * III. APPENDING THE COMPRESSED LOAD MAP TO THE DUMP FILE. 00081000
  83. * 00082000
  84. * THE 20K BUFFER IS WRITTEN TO THE END OF THE DUMP FILE 00083000
  85. * (PRBNNNNN DUMP A) IN 5 4096 BYTE WRITES. 00084000
  86. * 00085000
  87. * IV. ERROR PROCESSING 00086000
  88. * 00087000
  89. * ERRORS IN THIS ROUTINE MAY INHIBIT PROCESSING IN OTHER 00088000
  90. * ROUTINES WITHIN THE DMMEDM STRUCTURE NO ERROR 00089000
  91. * WILL TERMINATE PROCESSING. 00090000
  92. * 00091000
  93. * COMP. THE ADDR.OF DMKCPEND BETWEEN THE DUMP AND THE 00092000
  94. * LOAD MAP IS NOT A CERTAIN METHOD OF DETERMINING THE 00093000
  95. * VALIDITY OF A LOAD MAP BUT WILL BE EFFECTIVE IN MOST CASES. 00094000
  96. * 00095000
  97. * ERROR MESSAGES: 00096000
  98. * 00097000
  99. * DMKMAP810S ERROR 'NNN' READING FILE 'FILENAME FILETYPE FM' 00098000
  100. * DMMMAP200S ERROR 'NNN' WRITING FILE 'PRBNNNNN DUMP A1' 00099000
  101. * DMMMAP801I FILE 'CPNUC MAP' IS NOT VALID HRC001DM 00100490
  102. * DMMMAP802I PROCEEDING.... 00101000
  103. * DMMMAP806R ENTER FN FT FM OF THE NUCLEUS LOAD MAP 00102000
  104. * DMMMAP807I UNABLE TO LOCATE 'FN FT FM' 00103000
  105. * DMMMAP808I NUCLEUS MAP INVALID ' FN FT FM ' 00104000
  106. * 00105000
  107. EJECT 00106000
  108. DMMMAP CSECT @VA04250 00107000
  109. USING DMMMAP,R15 TEMPORARY ADDRESSABILITY @VA04250 00108000
  110. B START BRANCH AROUND EYECATCHER @VA04250 00109000
  111. DS 0D @VA04250 00110000
  112. MODNAME DC C'DMMMAP ' MODULE NAME @VA04250 00111000
  113. RELLEV DC C'REL4LEV0' RELEASE AND LEVEL @V4075A1 00112000
  114. START STM R14,R12,12(R13) SAVE CALLERS REGS @VA04250 00113000
  115. LR R12,R15 SET UP OUR BASE @VA04250 00114000
  116. DROP R15 @VA04250 00115000
  117. USING DMMMAP,R12 ESTABLISH OUR BASE @VA04250 00116000
  118. ST R13,SAVEAREA+8 SAVE CALLER'S SAVEAREA PTR @VA04250 00117000
  119. LA R13,SAVEAREA POINT TO OUR SAVEAREA @VA04250 00118000
  120. LA R10,INLINE SET R10 FOR USING @VA04250 00119000
  121. USING NUCMAP,R10 DSECT OF NUC MAP VALID DATA @VA04250 00120000
  122. L R11,VSHARE POINT TO SHARED CON AREA @VA04250 00121000
  123. USING SHARECON,R11 ADDRESSABILITY FOR SHARECON @VA04250 00122000
  124. MVC DUMPNAME,DUMPNUM SAVE DUMP NAME PASSED IN R1 @VA04250 00123000
  125. MVC WRFN,DUMPNUM SAVE FILENAME IN ERROR MSG @VA04250 00124000
  126. L R9,0(R1) ADDRESS OF MAP BUFFERS @VA04250 00125000
  127. ST R1,PARMSAVE SAVE PARM LIST ADDRESS @VA04250 00126000
  128. *************************************************************** 00127000
  129. * THIS ROUTINE READS AN EXISTING LOAD MAP WHICH MUST BE NAMED 00128000
  130. * 'NUC MAP A'. IT TRANSLATES THE ADDR FROM EBCDIC TO HEX, SORTS 00129000
  131. * THE ENTRY POINTS INTO ASCENDING ADDRESS ORDER, AND WRITES THE 00130000
  132. * SORTED LOAD MAP AT THE END OF THE DUMP FILE. 00131000
  133. *************************************************************** 00132000
  134. SPACE 1 00133000
  135. LR R8,R9 GET PASSED BUFFER POINTER @VA04250 00134000
  136. READ LA R2,NUCMAPFN POINT TO 'CPNUC MAP * ' HRC001DM 00135490
  137. FSREAD (R2),BUFFER=INLINE,ERROR=INERR,BSIZE=160 @VA04832 00136000
  138. CLC NCDMK,=C'HDK' IS THIS AN HRC MODULE ? HRC001DM 00136300
  139. BE CHKAT HRC001DM 00136600
  140. CLC NCDMK,=C'DMK' IS THIS A VALID MODULE NAME? @VA04250 00137000
  141. BNE READ NOT 'DMK' GO GET NEXT RECORD @VA04250 00138000
  142. CHKAT DS 0H HRC001DM 00138500
  143. CLC NCAT,=C'AT' IF NOT 'AT' THEN JUST TRASH @VA04250 00139000
  144. BNE READ NOT 'AT', GO GET NEXT RECORD @VA04250 00140000
  145. *************************************************************** 00141000
  146. * WE NOW HAVE A VALID ENTRY FROM THE NUC MAP OF THE FORM: 00142000
  147. * DMKAAABB AT XXXXXX OR HDKAAABB AT XXXXXX HRC001DM 00143490
  148. * WE WILL NOW TRANSLATE THE XXXXXX BACK TO HEXADECIMAL 00144000
  149. *************************************************************** 00145000
  150. MVC 0(L'NCMODULE,R8),NCMODULE MOD NAME TO BUFFER @VA04250 00146000
  151. LA R8,OUTADDR(R8) OUTPUT ADDRESS FIELD @VA04250 00147000
  152. LA R2,LASTBYTE POINT TO LAST BYTE OF ADDR. @VA04250 00148000
  153. LA R3,L'NCADDR EBCDIC ADDR IS 6 BYTES LONG @VA04250 00149000
  154. XLOOP IC R4,0(R2) GET A BYTE OF ADDRESS @VA04250 00150000
  155. TM 0(R2),NUMERIC IS THIS BYTE 0 TO 9? @VA04250 00151000
  156. BO XNOADD YES @VA04250 00152000
  157. LA R4,ADDNINE(R4) X'C1' BECOMES X'CA' (E.G.) @VA04250 00153000
  158. XNOADD SRDL R4,4 SAVE RESULT HEX DIGIT IN R5 @VA04250 00154000
  159. BCTR R2,0 POINT BACK TO NEXT BYTE @VA04250 00155000
  160. BCT R3,XLOOP DO THIS FOR 6 BYTES @VA04250 00156000
  161. SR R4,R4 CLEAR R4 @VA04250 00157000
  162. SRDL R4,8 HIGH ORDER X'00' TO R5 @VA04250 00158000
  163. ST R5,0(R8) SAVE RESULT HEX ADDR IN OUT @VA04250 00159000
  164. CLC NCMODULE,=C'DMKCPEND' CP END ADDRESS? @VA04250 00160000
  165. BE XCK YES, GO CHECK FOR VALID MAP @VA04250 00161000
  166. LA R8,BUFFNXT(R8) UPDATE BUFFER POINTER @VA04250 00162000
  167. B READ CONTINUE @VA04250 00163000
  168. XCK MVI ENDFOUND,SWITCHON DMKCPEND FOUND @VA04250 00164000
  169. C R5,REALEND NUC MAP CPEND SAME AS MAP @VA04250 00165000
  170. BNE MAPERROR NO, WE CAN'T USE IT @VA04250 00166000
  171. MVC TEXT5(RECLEN),TEXT7 CLEAR ANY MSGS OUT OF TEXT5 @VA04250 00167000
  172. LA R8,OUTNEXT(R8) POINT TO NEXT OUTPUT FIELD @VA04250 00168000
  173. B READ GET NEXT ENTRY @VA04250 00169000
  174. INERR CH R15,EOF END OF FILE? @VA04250 00170000
  175. BNE READERR NO, WE REALLY HAD AN ERROR @VA04250 00171000
  176. CLI ENDFOUND,SWITCHON DID WE FIND DMKCPEND? @VA04250 00172000
  177. BNE MAPERROR GO WRITE INVALID MESSAGE @VA04250 00173000
  178. FSCLOSE (R2) @VA04250 00174000
  179. *************************************************************** 00175000
  180. * WE NOW HAVE ALL ADDR. TRANSLATED AND ALL MOD NAMES AND THEIR 00176000
  181. * ADDR PUT IN OUTPUT BUFFER. WE WILL NOW SORT THE ENTRY POINT 00177000
  182. * ADDRESSES IN ASCENDING ORDER. 00178000
  183. * 00179000
  184. * THE LOAD MAP IS ALREADY IN SEQUENCE BY MOD NAME AND ONLY 00180000
  185. * THE ENTRY POINTS WITHIN MODS MAY BE OUT OF SEQUENCE THIS SORT 00181000
  186. * WILL GO THROUGH THE BUFFER SWAPPING OUT OF SEQUENCE RECORDS. 00182000
  187. * WHEN A PASS THROUGH THE BUFFER IS MADE WITHOUT ENCOUNTERING 00183000
  188. * AN OUT OF SEQUENCE CONDITION THE SORT IS DONE. 00184000
  189. *************************************************************** 00185000
  190. MAPSORT LA R4,SWITCH R4 WILL BE USED AS A SWITCH @VA04250 00186000
  191. * IF IT IS ZERO AT LEAST ONE OUT 00187000
  192. * OF SEQUENCE RECORD WAS FOUND. 00188000
  193. LR R2,R9 POINT TO START OF BUFFER @VA04250 00189000
  194. LA R3,NEXTREC(R2) POINT TO NEXT RECORD @VA04250 00190000
  195. MAPLOOP CLC PASTNAME(MAPADDR,R2),PASTNAME(R3) COMP. ADDR. @VA04250 00191000
  196. * OF THE TWO ADDRESSES 00192000
  197. BH MAPSWAP OUT OF SEQUENCE, BRANCH @VA04250 00193000
  198. LR R2,R3 NEXT RECORD @VA04250 00194000
  199. LA R3,NEXTREC(R3) NEXT RECORD @VA04250 00195000
  200. CR R3,R8 AT END? @VA04250 00196000
  201. BL MAPLOOP NO CONTINUE @VA04250 00197000
  202. LTR R4,R4 ANY OUT OF SEQUENCE FOUND? @VA04250 00198000
  203. BZ MAPSORT YES, GO MAKE ANOTHER PASS @VA04250 00199000
  204. B WRTOUT ALL DONE SORTING, CONTINUE @VA04250 00200000
  205. MAPSWAP LM R5,R7,0(R2) SAVE OLD MODNAME AND ADDRESS @VA04250 00201000
  206. MVC 0(NEXTREC,R2),0(R3) SWAP THE TWO ENTRIES @VA04250 00202000
  207. STM R5,R7,0(R3) DONE SWAPPING NOW @VA04250 00203000
  208. LR R2,R3 NEXT ENTRY @VA04250 00204000
  209. LA R3,NEXTREC(R2) NEXT ENTRY @VA04250 00205000
  210. SR R4,R4 SET OUT OF SEQUENCE SWITCH @VA04250 00206000
  211. CR R3,R8 AT END? @VA04250 00207000
  212. BL MAPLOOP NO @VA04250 00208000
  213. B MAPSORT START FROM BEGINNING AGAIN @VA04250 00209000
  214. *************************************************************** 00210000
  215. * NOW APPEND THE SORTED LOAD MAP TO THE END OF THE DUMP. 00211000
  216. * THREE 4096 CHARACTER RECORDS WILL BE WRITTEN. 00212000
  217. *************************************************************** 00213000
  218. WRTOUT LR R3,R9 POINT TO OUTPUT BUFFER @VA04250 00214000
  219. LA R4,WRITCNT COUNT WRITES TO DUMP @VA04250 00215000
  220. WRITE LA R2,DUMPNAME POINT TO 'PRBNNNNN DUMP A1' @VA04250 00216000
  221. FSWRITE (R2),BUFFER=(R3),ERROR=WRTERR,BSIZE=4096 @VA04250 00217000
  222. A R3,FOURK GET NEXT OUTPUT AREA @VA04250 00218000
  223. BCT R4,WRITE AND GO WRITE IT @VA04250 00219000
  224. FSCLOSE (R2) @VA04250 00220000
  225. B ALLDONE WE ARE FINISHED @VA04250 00221000
  226. *************************************************************** 00222000
  227. * TERMINAL WRITE 00223000
  228. *************************************************************** 00224000
  229. WRTERM WRTERM (R2),(R3) @VA04250 00225000
  230. BR R4 RETURN @VA04250 00226000
  231. *************************************************************** 00227000
  232. * THE CPEND ADDRESS IN THE DUMP IS NOT THE SAME AS THAT IN THE 00228000
  233. * 'CPNUC MAP ' FILE. HRC001DM 00229490
  234. * DMMMAP801I FILE 'NUC MAP IS NOT VALID FOR THIS DUMP' 00230000
  235. *************************************************************** 00231000
  236. MAPERROR MVC MSGMAP2,NUCMAPFN MOVE FILE NAME TO MSG @VA04250 00232000
  237. MVC MSGMAP3,NUCMAPFT MOVE FILE TYPE TO MSG @VA04250 00233000
  238. MVC MSGMAP4(L'NUCMAPFM),NUCMAPFM FILE MODE TO MSG @VA04250 00234000
  239. LA R2,MSGMAP DMMMAP801I MSG @VA04250 00235000
  240. LA R3,MSGMAPL LENGTH OF MESSAGE @VA04250 00236000
  241. BAL R4,WRTERM GO PUT MESSAGE ON TERMINAL @VA04250 00237000
  242. B CONTMSG GO ISSUE PROCEEDING MSG @VA04250 00238000
  243. *************************************************************** 00239000
  244. * READ ERROR ON FILE 'CPNUC MAP A' HRC001DM 00240490
  245. *************************************************************** 00241000
  246. READERR CVD R15,WKDWD CONVERT FSREAD RETURN TO DEC @VA04250 00242000
  247. UNPK RDCODE,DECNUM(DECLN) UNPK DECIMAL RC TO MSG @VA04250 00243000
  248. OI RDCODE2,NUMERIC MAKE IT READABLE @VA04250 00244000
  249. CLI RETRYSW,SWITCHON ARE WE IN SUBSEQUENT READ @VA04250 00245000
  250. BE RETRYMSG YES, BUILD DIFFERENT MSG @VA04250 00246000
  251. LA R2,MSGREAD DMMMAP810S ERROR MESSAGE @VA04250 00247000
  252. LA R3,MSGREADL LENGTH OF ERROR MESSAGE @VA04250 00248000
  253. MVC TEXT5(MSGREADL),MSGREAD ERR MSG TO REPT TEXT @VA04250 00249000
  254. BAL R4,WRTERM OUTPUT MESSAGE TO TERMINAL @VA04250 00250000
  255. LA R2,NUCMAPFN POINT TO NUC MAP FILENAME @VA04250 00251000
  256. FSCLOSE (R2) @VA04250 00252000
  257. B CONTMSG ISSUE DMMMAP802I MESSAGE @VA04250 00253000
  258. RETRYMSG MVC RETRYCD(L'RDCODE),RDCODE RETURN CODE TO MSG @VA04250 00254000
  259. MVC RETRYRD1(L'NUCMAPFN),NUCMAPFN FILE NAME TO MSG @VA04250 00255000
  260. MVC RETRYRD2(L'NUCMAPFT),NUCMAPFT FILE TYPE TO MSG @VA04250 00256000
  261. MVC RETRYRD3(L'NUCMAPFM),NUCMAPFM FILE MODE TO MSG @VA04250 00257000
  262. LA R2,RETRYRDM ADDRESS OF READ ERR MSG @VA04250 00258000
  263. LA R3,RETRYRDL LENGTH OF MESSAGE @VA04250 00259000
  264. BAL R4,WRTERM GO TO COMMON WRITE @VA04250 00260000
  265. B CONTMSG GO WRITE PROCEEDING MSG @VA04250 00261000
  266. WRTERR CVD R15,WKDWD CONVERT RET CODE TO DECIMAL @VA04250 00262000
  267. UNPK WRCODE,DECNUM(DECLN) UNPK DECIMAL RC TO MSG @VA04250 00263000
  268. OI WRCODE2,NUMERIC MAKE IT READABLE @VA04250 00264000
  269. LA R2,MSGWRT DMMMAP200S ERROR MESSAGE @VA04250 00265000
  270. LA R3,MSGWRTL MESSAGE LENGTH @VA04250 00266000
  271. MVC TEXT5(MSGWRTL),MSGWRT ERR MSG TO REPT TEXT @VA04250 00267000
  272. BAL R4,WRTERM PUT ERR MESSAGE ON TERMINAL @VA04250 00268000
  273. LA R2,DUMPNAME POINT TO FILE NAME @VA04250 00269000
  274. FSCLOSE (R2) @VA04250 00270000
  275. B RETCOD8A RETURN TO CALLER @VM04420 00271000
  276. CONTMSG LA R2,MSGCONT DMMMAP802I PROCEEDING... @VA04250 00272000
  277. LA R3,MSGCONTL MESSAGE LENGTH @VA04250 00273000
  278. BAL R4,WRTERM PUT MESSAGE ON TERMINAL @VA04250 00274000
  279. ************************************************************* 00275000
  280. * * PROMPT THE USER TO ENTER THE NAME OF THE NUCLEUS LOAD MAP 00276000
  281. ************************************************************* 00277000
  282. MAPNAME LA R2,MSGENT ADDRESS OF MESSAGE @VA04250 00278000
  283. LA R3,MSGENTLN LENGTH OF MESSAGE @VA04250 00279000
  284. BAL R4,WRTERM GO WRITE MESSAGE @VA04250 00280000
  285. MVI ENDFOUND,SWTCHOFF RESET CPEND FOUND SWITCH @VA04250 00281000
  286. RDTERM PROMPT READ USER REPLY @VA04250 00282000
  287. LTR R0,R0 CHECK FOR NO REPLY @VA04250 00283000
  288. BZ RETCOD8 IF NULL REPLY QUIT @VA04250 00284000
  289. B CHECKIN LETS BUILD A FN FT FM @VA04250 00285000
  290. ************************************************************* 00286000
  291. ** HERE TO CHECK USER INPUT. ALLOW UP TO 5 BLANKS PRECEDING 00287000
  292. ** FILE NAME AND FIVE BLANKS BETWEEN FILE TYPE AND FILE MODE. 00288000
  293. ** IF FILE MODE IS LEFT BLANK, DEFAULT TO MODE 'A1'. 00289000
  294. ************************************************************* 00290000
  295. CHECKIN LA R5,BLANKCNT SET BLANK COUNT TO FIVE @VA04250 00291000
  296. LA R6,PROMPT GET ADDRESS OF USER INPUT @VA04250 00292000
  297. FNCHK CLI 0(R6),BLANK IS FIRST CHARACTER BLANK? @VA04250 00293000
  298. BNE FNMOVE IF NOT MOVE 1ST CHAR FN @VA04250 00294000
  299. LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00295000
  300. BCT R5,FNCHK IF BLANK CHECK NEXT CHAR. @VA04250 00296000
  301. B MAPNAME @VA04250 00297000
  302. FNMOVE MVC NUCMAPFN,FNCLEAR CLEAR FILE NAME AREA @VA04250 00298000
  303. LA R4,NUCMAPFN R4 HAS FN ADDRESS @VA04250 00299000
  304. FNMOVE1 MVC 0(ONEBYTE,R4),0(R6) MOVE ONE BYTE TO FN @VA04250 00300000
  305. LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00301000
  306. LA R4,ONEBYTE(R4) INCREMENT OUTPUT AREA @VA04250 00302000
  307. LA R3,FNEND START OF FT ADDRESS @VA04250 00303000
  308. CR R4,R3 END OF FN? @VA04250 00304000
  309. BE FNINCR YES, GO MOVE FILE TYPE @VA04250 00305000
  310. CLI 0(R6),BLANK IS IT BLANK? @VA04250 00306000
  311. BNE FNMOVE1 NO, GO MOVE IT @VA04250 00307000
  312. FNINCR LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00308000
  313. FTCHECK LA R5,BLANKCNT RESET BLANK COUNT AMOUNT @VA04250 00309000
  314. FTBLANK CLI 0(R6),BLANK IS IT BLANK? @VA04250 00310000
  315. BNE FTMOVE NO, GO MOVE IT @VA04250 00311000
  316. LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00312000
  317. BCT R5,FTBLANK GO CHECK AGAIN FOR BLANK @VA04250 00313000
  318. B MAPNAME GO BACK AND LET HIM TRY AGAIN @VA04250 00314000
  319. FTMOVE MVC NUCMAPFT,FTCLEAR CLEAR FILE TYPE AREA @VA04250 00315000
  320. LA R4,NUCMAPFT R4 HAS FT ADDRESS @VA04250 00316000
  321. FTMOVE1 MVC 0(ONEBYTE,R4),0(R6) MOVE ONE BYTE TO FT @VA04250 00317000
  322. LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00318000
  323. LA R4,ONEBYTE(R4) INCREMENT OUTPUT AREA @VA04250 00319000
  324. LA R3,FTEND END OF FILE NAME @VA04250 00320000
  325. BE FTINCR YES GO MOVE FILE MODE @VA04250 00321000
  326. CLI 0(R6),BLANK IS IT BLANK? @VA04250 00322000
  327. BNE FTMOVE1 NO, GO MOVE IT @VA04250 00323000
  328. FTINCR LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00324000
  329. B FMCHECK GO GET FILE MODE @VA04250 00325000
  330. FMCHECK LA R5,BLANKCNT RESET BLANK COUNT @VA04250 00326000
  331. FMBLANK CLI 0(R6),BLANK IS IT BLANK? @VA04250 00327000
  332. BNE FMMOVE NO, GO MOVE IT @VA04250 00328000
  333. LA R6,ONEBYTE(R6) INCREMENT INPUT AREA @VA04250 00329000
  334. BCT R5,FMBLANK GO LOOK AT NEXT CHAR @VA04250 00330000
  335. MVC NUCMAPFM,FMDEF NO ENTRY, DEFAULT TO A1 @VA04250 00331000
  336. B MAPSTATE GO DO FSSTATE FOR MAP @VA04250 00332000
  337. FMMOVE MVC NUCMAPFM(ONEBYTE),0(R6) MOVE FILE MODE @VA04250 00333000
  338. MAPSTATE LA R2,NUCMAPFN GET FN-FT-FM FOR STATE @VA04250 00334000
  339. MVI RETRYSW,SWITCHON TURN ON READ RETRY SWITCH @VA04250 00335000
  340. FSSTATE (R2),ERROR=STATERR IS MAP NAME VALID? @VA04250 00336000
  341. MVI ENDFOUND,SWTCHOFF RESET CPEND FOUND SWITCH @VA04250 00337000
  342. L R9,PARMSAVE GET ADDRESS OF PARM SAVE @VA04250 00338000
  343. L R9,0(,R9) BUFF ADDRESS FROM PARM @VA04250 00339000
  344. LR R8,R9 PUT BUFF ADDRESS IN R8 @VA04250 00340000
  345. B READ IF YES GO READ IT @VA04250 00341000
  346. STATERR MVC MAPERR1(L'NUCMAPFN),NUCMAPFN FILE NAME TO MSG @VA04250 00342000
  347. MVC MAPERR2(L'NUCMAPFT),NUCMAPFT FILE NAME TO MSG @VA04250 00343000
  348. MVC MAPERR3(L'NUCMAPFM),NUCMAPFM FILE MODE TO MSG @VA04250 00344000
  349. MVC STATERRM(L'MAP807),MAP807 MOVE 807I TO MSG @VA04250 00345000
  350. LA R2,STATERRM MESSAGE TEXT @VA04250 00346000
  351. LA R3,STATERRL MESSAGE TEXT LENGTH @VA04250 00347000
  352. BAL R4,WRTERM GO WRITE STATE ERR MSG @VA04250 00348000
  353. B CONTMSG GO SET UP PROCEEDING MSG @VA04250 00349000
  354. RETCOD8 L R13,SAVEAREA+8 REST CALLER'S SAVEAREA PTR @VA04250 00350000
  355. MVC MSGMAP2,NUCMAPFN SET UP MSG FOR REPORT TEXT @VA04250 00351000
  356. MVC MSGMAP3,NUCMAPFT FILE TYPE TO MSG @VA04250 00352000
  357. MVC MSGMAP4,NUCMAPFM FILE MODE TO MSG @VA04250 00353000
  358. MVC TEXT5(MSGMAPL),MSGMAP ERROR MSG TO REPORT TEXT @VA04250 00354000
  359. RETCOD8A L R13,SAVEAREA+8 RESTORE SAVEAREA POINTER @VM04420 00355000
  360. LM R14,R12,12(R13) RESTORE CALLER'S REGISTERS @VM04420 00356000
  361. LA R15,RETCODE8 LOAD RETURN CODE 8 @VA04250 00357000
  362. BR R14 RETURN @VA04250 00358000
  363. ALLDONE L R13,SAVEAREA+8 REST CALLER'S SAVEAREA PTR @VA04250 00359000
  364. LM R14,R12,12(R13) CALLER'S REGISTERS @VA04250 00360000
  365. SR R15,R15 RETURN CODE ZERO @VA04250 00361000
  366. BR R14 RETURN @VA04250 00362000
  367. EJECT 00363000
  368. *************************************************************** 00364000
  369. * CONSTANTS SAVEAREAS AND EQUATES 00365000
  370. *************************************************************** 00366000
  371. SAVEAREA DS 18F OUR SAVEAREA @VA04250 00367000
  372. WKDWD DS D DOUBLE WORD FOR WORK AREA @VA04250 00368000
  373. ********* 00369000
  374. DUMPNAME DS CL8 PRBNNNNN DUMP NAME @VA04250 00370000
  375. DC C'DUMP A1' FILETYPE AND FILEMODE @VA04250 00371000
  376. ********* 00372000
  377. NUCMAPFN DC CL8'CPNUC ' NUC MAP FILE NAME HRC001DM 00373490
  378. NUCMAPFT DC CL8'MAP ' NUC MAP FILE TYPE @VA04250 00374000
  379. NUCMAPFM DC CL2'* ' NUC MAP FILE MODE HRC001DM 00375490
  380. PROMPT DC CL132' ' USER INPUT AREA @VA04250 00376000
  381. FNCLEAR DC CL8' ' 8 BLANKS TO CLEAR FILE NAME @VA04250 00377000
  382. FTCLEAR DC CL8' ' 8 BLANKS TO CLEAR FILE TYPE @VA04250 00378000
  383. FMDEF DC CL2'A1' DEFAULT FILE MODE A1 @VA04250 00379000
  384. DS F @VA04250 00380000
  385. PARMSAVE DC CL4' ' PARM ADDRESS SAVE AREA @VA04250 00381000
  386. RETRYSW DC CL1' ' READ RETRY SWITCH @VA04250 00382000
  387. ENDFOUND DC CL1' ' CPEND FOUND SWITCH @VA04250 00383000
  388. STATERRM DC C' ''' @VA04250 00384000
  389. MAPERR1 DC CL9' ' FILE NAME MESSAGE ENTRY @VA04250 00385000
  390. MAPERR2 DC CL9' ' FILE TYPE MESSAGE ENTRY @VA04250 00386000
  391. MAPERR3 DC CL2' ' FILE MODE ENTRY @VA04250 00387000
  392. DC X'7D' APOSTROPHE @VA04250 00388000
  393. STATERRL EQU *-STATERRM LENGTH OF MESSAGE @VA04250 00389000
  394. RETRYRDM DC C'DMMMAP810S Error ''' HRC001DM 00390490
  395. RETRYCD DS CL3 RETURN CODE @VA04250 00391000
  396. DC C''' reading file ''' HRC001DM 00392490
  397. RETRYRD1 DC CL9' ' FILE NAME LOCATION @VA04250 00393000
  398. RETRYRD2 DC CL9' ' FILE TYPE MSG LOCATION @VA04250 00394000
  399. RETRYRD3 DC CL2' ' FILE MODE MSG LOCATION @VA04250 00395000
  400. DC X'7D' APOSTROPHE @VA04250 00396000
  401. RETRYRDL EQU *-RETRYRDM LENGTH OF MESSAGE @VA04250 00397000
  402. MSGENT DC C'DMMMAP806R Enter FN FT FM of NUCLEUS LOAD MAP or enterX00398590
  403. null' HRC001DM 00399180
  404. MSGENTLN EQU *-MSGENT LENGTH OF MESSAGE @VA04250 00400000
  405. MAP807 DC C'DMMMAP807I Unable to locate ' HRC001DM 00401490
  406. VSHARE DC V(SHARECON) COMMON SHARED CONSTANTS @VA04250 00402000
  407. NUMERIC EQU X'F0' USED TO CHK FOR NUMER. DATA @VA04250 00403000
  408. ONE EQU 1 1 FOR LOAD ADDRESS ETC. @VA04250 00404000
  409. FOUR EQU 4 4 FOR LOAD ADDRESS ETC. @VA04250 00405000
  410. EIGHT EQU 8 8 FOR LOAD ADDRESS ETC. @VA04250 00406000
  411. NINE EQU 9 9 FOR LOAD ADDRESS ETC. @VA04250 00407000
  412. TWELVE EQU 12 12 FOR LOAD ADDRESS ETC. @VA04250 00408000
  413. FNEND EQU NUCMAPFT START OF FT IS END OF FN @VA04250 00409000
  414. FTEND EQU NUCMAPFM END OF FILE TYPE @VA04250 00410000
  415. INLINE DS CL160 NUC MAP INPUT RECORD @VA04832 00411000
  416. EOF DC H'12' END OF FILE @VA04250 00412000
  417. OUTADDR EQU 8 INCREMENT OUTPUT ADDRESS @VA04250 00413000
  418. ADDNINE EQU 9 TRANSLATE VALUE @VA04250 00414000
  419. BUFFNXT EQU 4 INCREMENT BUFFER ADDRESS @VA04250 00415000
  420. OUTNEXT EQU 4 DISPLACEMENT OF NEXT OUTPUT AREA @VA04250 00416000
  421. NEXTREC EQU 12 DISPL.FOR LOAD MAP ENTRIES @VA04250 00417000
  422. SWTCHOFF EQU X'00' SWITCH OFF INDICATOR @VA04250 00418000
  423. SWITCHON EQU X'FF' SWITCH ON INDICATOR @VA04250 00419000
  424. BLANKCNT EQU 5 BLANK COUNT = 5 @VA04250 00420000
  425. BLANK EQU C' ' EQUATE BLANK TO '40' @VA04250 00421000
  426. ONEBYTE EQU 1 COUNT FOR MOVING ONE BYTE @VA04250 00422000
  427. FOURK DC F'4096' CONSTANT OF 4K @VA04250 00423000
  428. *************************************************************** 00424000
  429. * ERROR MESSAGES 00425000
  430. *************************************************************** 00426000
  431. MSGMAP DC C'DMMMAP801I NUC MAP ' INVALID MSG NUMBER @VA04250 00427000
  432. MSGMAP1 DC X'7D' @VA04250 00428000
  433. MSGMAP2 DC CL8' ' FILE NAME FOR 801 MSG @VA04250 00429000
  434. DC CL1' ' @VA04250 00430000
  435. MSGMAP3 DC CL8' ' FILE TYPE FOR 801 MSG @VA04250 00431000
  436. DC CL1' ' @VA04250 00432000
  437. MSGMAP4 DC CL2' ' FILE MODE FOR 801 MSG @VA04250 00433000
  438. DC X'7D' APOSTROPHE FOR FN FT FM @VA04250 00434000
  439. MSGMAP5 DC C' not valid for this DUMP' HRC001DM 00435490
  440. MSGMAPL EQU *-MSGMAP LENGTH OF MESSAGE @VA04250 00436000
  441. MSGREAD DC C'DMMMAP810S Error ''' HRC001DM 00437490
  442. RDCODE DS CL3 FSREAD RETURN CODE @VA04250 00438000
  443. DC C''' reading file ''CPNUC MAP * ''' HRC001DM 00439490
  444. MSGREADL EQU *-MSGREAD LENGTH OF MESSAGE @VA04250 00440000
  445. MSGWRT DC C'DMMMAP200S Error ''' HRC001DM 00441490
  446. WRCODE DS CL3 FSWRITE RETURN CODE @VA04250 00442000
  447. DC C''' writing file ''' HRC001DM 00443490
  448. WRFN DS CL8 PRBNNNNN (DUMP FILENAME) @VA04250 00444000
  449. DC C' DUMP A1''' @VM04420 00445000
  450. MSGWRTL EQU *-MSGWRT LENGTH OF MESSAGE @VA04250 00446000
  451. MSGCONT DC C'DMMMAP802I Proceeding.....' HRC001DM 00447490
  452. MSGCONTL EQU L'MSGCONT LENGTH OF MESSAGE @VA04250 00448000
  453. PATCH DC 50F'0' PATCH AREA @VA04250 00449000
  454. LTORG @VA04250 00450000
  455. *************************************************************** 00451000
  456. * DSECT OF NUC MAP RECORD WHICH HAS VALID MOD NAME AND ADDR: 00452000
  457. * DMKAAAEE AT XXXXXX 00453000
  458. *************************************************************** 00454000
  459. NUCMAP DSECT @VA04250 00455000
  460. NUCMAP1 DS 0CL132 LENGTH OF PRINT RECORD @VA04250 00456000
  461. NC1 DS CL7 BLANKS @VA04250 00457000
  462. NCMODULE DS 0CL8 DMKAAAEE @VA04250 00458000
  463. NCDMK DS CL3 'DMK' INDICATOR @VA04250 00459000
  464. NCAAAEE DS CL5 REST OF MODULE NAME @VA04250 00460000
  465. NC2 DS CL1 BLANK @VA04250 00461000
  466. NCAT DS CL2 'AT' @VA04250 00462000
  467. NC3 DS CL1 BLANK @VA04250 00463000
  468. NCADDR DS CL6 EBCDIC HEX ADDRESS @VA04250 00464000
  469. LASTBYTE EQU NCADDR+L'NCADDR-1 LAST BYTE OF HEX ADDR. FIELD @VA04250 00465000
  470. SWITCH EQU 1 SWITCH SET @VA04250 00466000
  471. PASTNAME EQU 9 ADDRESS PORTION OF MAP RECORD @VA04250 00467000
  472. MAPADDR EQU 3 LENGTH OF MAP ADDRESS FIELD @VA04250 00468000
  473. WRITCNT EQU 5 NUMBER OF DISK WRITES @VA08369 00469000
  474. NC4 DS CL107 BLANKS @VA04250 00470000
  475. DECNUM EQU WKDWD+6 RET CODE DECIMAL FIELD @VA04250 00471000
  476. DECLN EQU 2 LENGTH OF DECIMAL FIELD @VA04250 00472000
  477. RDCODE2 EQU RDCODE+2 LOW ORDER OF RET CODE @VA04250 00473000
  478. WRCODE2 EQU WRCODE+2 LOW ORDER OF RET CODE @VA04250 00474000
  479. RETCODE8 EQU 8 RETURN CODE 8 @VA04250 00475000
  480. RECLEN EQU 80 LENGTH OF OUTPUT RECORD @VA04250 00476000
  481. SPACE 1 00477000
  482. COPY EXCONST @VA04250 00478000
  483. REGEQU @VA04250 00479000
  484. END 00480000