Table of Contents

DMSDLK Source

References

Source Listing

DMSDLK.ASSEMBLE.txt
  1. DLK TITLE 'DMSDLK (CMS) VM/370 - RELEASE 6' 00001000
  2. * "FSSTATE/FSREAD/FSWRITE/FSCLOSE/FSERASE" MACROS WITH BALR CALLS: 00002000
  3. SPACE 00003000
  4. MACRO 00004000
  5. &LABEL FSSTATE &FILEID,&FSCB=,&ERROR= 00005000
  6. GBLC &DMSNAME,&DMSTYPE,&DMSMODE 00006000
  7. AIF (T'&FILEID EQ 'O' AND T'&FSCB EQ 'O').ERR1 00007000
  8. AIF (T'&FILEID EQ 'O').NOID 00008000
  9. AIF ('&FILEID'(1,1) NE '''' AND '&FILEID'(1,1) NE '(').ERR2 00009000
  10. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '1').ERR3 00010000
  11. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '0').ERR4 00011000
  12. &DMSNAME SETC ' ' 00012000
  13. &DMSTYPE SETC ' ' 00013000
  14. &DMSMODE SETC ' ' 00014000
  15. AIF ('&FILEID'(1,1) EQ '(').SKIP1 00015000
  16. &DMSMODE SETC 'A1' 00016000
  17. DMSPID &FILEID 00017000
  18. AIF ('&DMSNAME' EQ ' ' OR '&DMSTYPE' EQ ' ').ERR2 00018000
  19. .SKIP1 AIF (T'&FSCB EQ 'O').NOCB 00019000
  20. .NOID AIF (T'&LABEL EQ 'O').NLBL 00020000
  21. &LABEL DS 0H 00021000
  22. .NLBL ANOP 00022000
  23. AIF ('&FSCB'(1,1) EQ '(').REG1 00023000
  24. LA 1,&FSCB 00024000
  25. AGO .CONT1 00025000
  26. .REG1 AIF ('&FSCB(1)' EQ '1').CONT1 00026000
  27. LR 1,&FSCB(1) 00027000
  28. .CONT1 ANOP 00028000
  29. AIF (T'&FILEID EQ 'O').CONT2 00029000
  30. AIF ('&FILEID'(1,1) EQ '(').REG2 00030000
  31. MVC 8(8,1),=CL8'&DMSNAME' 00031000
  32. MVC 16(8,1),=CL8'&DMSTYPE' 00032000
  33. MVC 24(2,1),=CL2'&DMSMODE' 00033000
  34. AGO .CONT2 00034000
  35. .REG2 ANOP 00035000
  36. MVC 8(18,1),0(&FILEID(1)) 00036000
  37. .CONT2 ANOP 00037000
  38. MVC 40(4,1),28(1) 00038000
  39. ST 14,0(,1) PRESERVE R14 (IN P-LIST) 00039000
  40. L 15,ASTATE CALL 'STATE' VIA BALR 00040000
  41. BALR 14,15 ... 00041000
  42. L 14,0(,1) RECOVER R14 00042000
  43. AIF (T'&ERROR EQ 'O').NOER 00043000
  44. BNZ &ERROR 00044000
  45. AGO .CONT3 00045000
  46. .NOER ANOP 00046000
  47. BNZ DMS&SYSNDX.B 00047000
  48. .CONT3 ANOP 00048000
  49. L 15,28(,1) 00049000
  50. MVC 28(4,1),40(1) 00050000
  51. LR 1,15 00051000
  52. SR 15,15 00052000
  53. AIF (T'&ERROR NE 'O').EXIT 00053000
  54. DMS&SYSNDX.B EQU * 00054000
  55. .EXIT MEXIT 00055000
  56. .NOCB ANOP 00056000
  57. CNOP 0,4 00057000
  58. &LABEL BAL 1,DMS&SYSNDX.A 00058000
  59. DC CL8'STATE' 00059000
  60. DC CL8'&DMSNAME' 00060000
  61. DC CL8'&DMSTYPE' 00061000
  62. DC CL2'&DMSMODE' 00062000
  63. DC CL2' ' 00063000
  64. DC AL4(0) 00064000
  65. DMS&SYSNDX.A EQU * 00065000
  66. AIF ('&FILEID'(1,1) NE '(').SKIP2 00066000
  67. MVC 8(18,1),0(&FILEID(1)) 00067000
  68. .SKIP2 ANOP 00068000
  69. ST 14,0(,1) PRESERVE R14 (IN P-LIST) 00069000
  70. L 15,ASTATE CALL 'STATE' VIA BALR 00070000
  71. BALR 14,15 ... 00071000
  72. L 14,0(,1) RECOVER R14 00072000
  73. AIF (T'&ERROR EQ 'O').NERR 00073000
  74. BNZ &ERROR 00074000
  75. AGO .SKIP3 00075000
  76. .NERR ANOP 00076000
  77. BNZ *+8 00077000
  78. .SKIP3 ANOP 00078000
  79. L 1,28(,1) 00079000
  80. MEXIT 00080000
  81. .ERR1 MNOTE 8,'NEITHER FILEID OF FSCB SPECIFIED' 00081000
  82. MEXIT 00082000
  83. .ERR2 MNOTE 8,'INVALID FILEID SPECIFICATION' 00083000
  84. MEXIT 00084000
  85. .ERR3 MNOTE 8,'REGISTER 1 INVALID FOR FILEID' 00085000
  86. MEXIT 00086000
  87. .ERR4 MNOTE 8,'INVALID USE OF REGISTER 0' 00087000
  88. MEND 00088000
  89. SPACE 00089000
  90. MACRO 00090000
  91. &LABEL FSREAD &FILEID,&FSCB=,&RECFM=,&BUFFER=,&BSIZE=,&RECNO=,&NOREC=X00091000
  92. ,&ERROR= 00092000
  93. GBLC &DMSNAME,&DMSTYPE,&DMSMODE 00093000
  94. AIF (T'&FILEID EQ 'O' AND T'&FSCB EQ 'O').ERR1 00094000
  95. AIF (T'&FILEID EQ 'O').NOID 00095000
  96. AIF ('&FILEID'(1,1) NE '''' AND '&FILEID'(1,1) NE '(').ERR2 00096000
  97. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '0').ERR3 00097000
  98. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '1').ERR3 00098000
  99. &DMSNAME SETC ' ' 00099000
  100. &DMSTYPE SETC ' ' 00100000
  101. &DMSMODE SETC ' ' 00101000
  102. AIF ('&FILEID'(1,1) EQ '(').CONT1 00102000
  103. &DMSMODE SETC 'A1' 00103000
  104. DMSPID &FILEID 00104000
  105. AIF ('&DMSNAME' EQ ' ' OR '&DMSTYPE' EQ ' ').ERR2 00105000
  106. .CONT1 AIF (T'&FSCB EQ 'O').NOCB 00106000
  107. .NOID AIF (T'&LABEL EQ 'O').NLBL 00107000
  108. &LABEL DS 0H 00108000
  109. .NLBL ANOP 00109000
  110. AIF ('&FSCB'(1,1) EQ '(').REG1 00110000
  111. LA 1,&FSCB 00111000
  112. AGO .CONT2 00112000
  113. .REG1 AIF ('&FSCB(1)' EQ '1').CONT2 00113000
  114. LR 1,&FSCB(1) 00114000
  115. .CONT2 AIF (T'&FILEID EQ 'O').CONT3 00115000
  116. AIF ('&FILEID'(1,1) EQ '(').REG2 00116000
  117. MVC 8(8,1),=CL8'&DMSNAME' 00117000
  118. MVC 16(8,1),=CL8'&DMSTYPE' 00118000
  119. MVC 24(2,1),=CL2'&DMSMODE' 00119000
  120. AGO .CONT3 00120000
  121. .REG2 ANOP 00121000
  122. MVC 8(18,1),0(&FILEID(1)) 00122000
  123. .CONT3 AIF (T'&RECNO EQ 'O').SKIP1 00123000
  124. AIF ('&RECNO'(1,1) EQ '(').STOR1 00124000
  125. MVC 26(2,1),=H'&RECNO' 00125000
  126. AGO .SKIP1 00126000
  127. .STOR1 ANOP 00127000
  128. AIF ('&RECNO(1)' EQ '1').ERR4 00128000
  129. STH &RECNO(1),26(,1) 00129000
  130. .SKIP1 AIF (T'&BUFFER EQ 'O').SKIP2 00130000
  131. AIF ('&BUFFER'(1,1) EQ '(').STOR2 00131000
  132. MVC 28(4,1),=A(&BUFFER) 00132000
  133. AGO .SKIP2 00133000
  134. .STOR2 ANOP 00134000
  135. AIF ('&BUFFER(1)' EQ '1').ERR5 00135000
  136. ST &BUFFER(1),28(,1) 00136000
  137. .SKIP2 AIF (T'&BSIZE EQ 'O').SKIP3 00137000
  138. AIF ('&BSIZE'(1,1) EQ '(').STOR3 00138000
  139. MVC 32(4,1),=F'&BSIZE' 00139000
  140. AGO .SKIP3 00140000
  141. .STOR3 ANOP 00141000
  142. AIF ('&BSIZE(1)' EQ '1').ERR6 00142000
  143. ST &BSIZE(1),32(,1) 00143000
  144. .SKIP3 AIF (T'&RECFM EQ 'O').SKIP4 00144000
  145. AIF ('&RECFM'(1,1) EQ '(').STOR4 00145000
  146. AIF ('&RECFM' NE 'F' AND '&RECFM' NE 'V').ERR11 00146000
  147. MVC 36(2,1),=CL2'&RECFM' 00147000
  148. AGO .SKIP4 00148000
  149. .STOR4 ANOP 00149000
  150. AIF ('&RECFM(1)' EQ '1').ERR7 00150000
  151. STC &RECFM(1),36(,1) 00151000
  152. .SKIP4 AIF (T'&NOREC EQ 'O').SKIP5 00152000
  153. AIF ('&NOREC'(1,1) EQ '(').STOR5 00153000
  154. MVC 38(2,1),=H'&NOREC' 00154000
  155. AGO .SKIP5 00155000
  156. .STOR5 ANOP 00156000
  157. AIF ('&NOREC(1)' EQ '1').ERR8 00157000
  158. STH &NOREC(1),38(,1) 00158000
  159. .SKIP5 ANOP 00159000
  160. ST 14,0(,1) PRESERVE R14 (IN P-LIST) 00160000
  161. L 15,ARDBUF CALL 'RDBUF' VIA BALR 00161000
  162. BALR 14,15 ... 00162000
  163. L 14,0(,1) RECOVER R14 00163000
  164. AIF (T'&ERROR EQ 'O').NOER 00164000
  165. BNZ &ERROR BRANCH IF ERROR OCCURRED 00165000
  166. .NOER ANOP 00166000
  167. L 0,40(,1) 00167000
  168. MEXIT 00168000
  169. .NOCB ANOP 00169000
  170. AIF (T'&BUFFER EQ 'O').ERR9 00170000
  171. AIF (T'&BSIZE EQ 'O').ERR10 00171000
  172. CNOP 0,4 00172000
  173. &LABEL BAL 1,DMS&SYSNDX.A 00173000
  174. FSCB &FILEID 00174000
  175. DMS&SYSNDX.A EQU * 00175000
  176. AIF ('&FILEID'(1,1) EQ '(').REG2 00176000
  177. AGO .CONT3 00177000
  178. .ERR1 MNOTE 8,'NEITHER FILEID OR FSCB SPECIFIED' 00178000
  179. MEXIT 00179000
  180. .ERR2 MNOTE 8,'INVALID FILEID SPECIFICATION' 00180000
  181. MEXIT 00181000
  182. .ERR3 MNOTE 8,'REGISTERS 0 AND 1 INVALID FOR FILEID' 00182000
  183. MEXIT 00183000
  184. .ERR4 MNOTE 8,'REGISTER 1 INVALID FOR RECNO' 00184000
  185. MEXIT 00185000
  186. .ERR5 MNOTE 8,'REGISTER 1 INVALID FOR BUFFER' 00186000
  187. MEXIT 00187000
  188. .ERR6 MNOTE 8,'REGISTER 1 INVALID FOR BSIZE' 00188000
  189. MEXIT 00189000
  190. .ERR7 MNOTE 8,'REGISTER 1 INVALID FOR RECFM' 00190000
  191. MEXIT 00191000
  192. .ERR8 MNOTE 8,'REGISTER 1 INVALID FOR NOREC' 00192000
  193. MEXIT 00193000
  194. .ERR9 MNOTE 8,'BUFFER ADDRESS NOT SPECIFIED' 00194000
  195. MEXIT 00195000
  196. .ERR10 MNOTE 8,'BUFFER SIZE NOT SPECIFIED' 00196000
  197. MEXIT 00197000
  198. .ERR11 MNOTE 8,'INVALID RECFM SPECIFICATION' 00198000
  199. MEND 00199000
  200. SPACE 00200000
  201. MACRO 00201000
  202. &LABEL FSWRITE &FILEID,&FSCB=,&RECFM=,&BUFFER=,&BSIZE=,&RECNO=,&NORECX00202000
  203. =,&ERROR= 00203000
  204. GBLC &DMSNAME,&DMSTYPE,&DMSMODE 00204000
  205. AIF (T'&FILEID EQ 'O' AND T'&FSCB EQ 'O').ERR1 00205000
  206. AIF (T'&FILEID EQ 'O').NOID 00206000
  207. AIF ('&FILEID'(1,1) NE '''' AND '&FILEID'(1,1) NE '(').ERR2 00207000
  208. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '0').ERR3 00208000
  209. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '1').ERR3 00209000
  210. &DMSNAME SETC ' ' 00210000
  211. &DMSTYPE SETC ' ' 00211000
  212. &DMSMODE SETC ' ' 00212000
  213. AIF ('&FILEID'(1,1) EQ '(').CONT1 00213000
  214. &DMSMODE SETC 'A1' 00214000
  215. DMSPID &FILEID 00215000
  216. AIF ('&DMSNAME' EQ ' ' OR '&DMSTYPE' EQ ' ').ERR2 00216000
  217. .CONT1 AIF (T'&FSCB EQ 'O').NOCB 00217000
  218. .NOID AIF (T'&LABEL EQ 'O').NLBL 00218000
  219. &LABEL DS 0H 00219000
  220. .NLBL ANOP 00220000
  221. AIF ('&FSCB'(1,1) EQ '(').REG1 00221000
  222. LA 1,&FSCB 00222000
  223. AGO .CONT2 00223000
  224. .REG1 AIF ('&FSCB(1)' EQ '1').CONT2 00224000
  225. LR 1,&FSCB(1) 00225000
  226. .CONT2 AIF (T'&FILEID EQ 'O').CONT3 00226000
  227. AIF ('&FILEID'(1,1) EQ '(').REG2 00227000
  228. MVC 8(8,1),=CL8'&DMSNAME' 00228000
  229. MVC 16(8,1),=CL8'&DMSTYPE' 00229000
  230. MVC 24(2,1),=CL2'&DMSMODE' 00230000
  231. AGO .CONT3 00231000
  232. .REG2 ANOP 00232000
  233. MVC 8(18,1),0(&FILEID(1)) 00233000
  234. .CONT3 AIF (T'&RECNO EQ 'O').SKIP1 00234000
  235. AIF ('&RECNO'(1,1) EQ '(').STOR1 00235000
  236. MVC 26(2,1),=H'&RECNO' 00236000
  237. AGO .SKIP1 00237000
  238. .STOR1 ANOP 00238000
  239. AIF ('&RECNO(1)' EQ '1').ERR4 00239000
  240. STH &RECNO(1),26(,1) 00240000
  241. .SKIP1 AIF (T'&BUFFER EQ 'O').SKIP2 00241000
  242. AIF ('&BUFFER'(1,1) EQ '(').STOR2 00242000
  243. MVC 28(4,1),=A(&BUFFER) 00243000
  244. AGO .SKIP2 00244000
  245. .STOR2 ANOP 00245000
  246. AIF ('&BUFFER(1)' EQ '1').ERR5 00246000
  247. ST &BUFFER(1),28(,1) 00247000
  248. .SKIP2 AIF (T'&BSIZE EQ 'O').SKIP3 00248000
  249. AIF ('&BSIZE'(1,1) EQ '(').STOR3 00249000
  250. MVC 32(4,1),=F'&BSIZE' 00250000
  251. AGO .SKIP3 00251000
  252. .STOR3 ANOP 00252000
  253. AIF ('&BSIZE(1)' EQ '1').ERR6 00253000
  254. ST &BSIZE(1),32(,1) 00254000
  255. .SKIP3 AIF (T'&RECFM EQ 'O').SKIP4 00255000
  256. AIF ('&RECFM'(1,1) EQ '(').STOR4 00256000
  257. AIF ('&RECFM' NE 'F' AND '&RECFM' NE 'V').ERR11 00257000
  258. MVC 36(2,1),=CL2'&RECFM' 00258000
  259. AGO .SKIP4 00259000
  260. .STOR4 ANOP 00260000
  261. AIF ('&RECFM(1)' EQ '1').ERR7 00261000
  262. STC &RECFM(1),36(,1) 00262000
  263. .SKIP4 AIF (T'&NOREC EQ 'O').SKIP5 00263000
  264. AIF ('&NOREC'(1,1) EQ '(').STOR5 00264000
  265. MVC 38(2,1),=H'&NOREC' 00265000
  266. AGO .SKIP5 00266000
  267. .STOR5 ANOP 00267000
  268. AIF ('&NOREC(1)' EQ '1').ERR8 00268000
  269. STH &NOREC(1),38(,1) 00269000
  270. .SKIP5 ANOP 00270000
  271. ST 14,0(,1) PRESERVE R14 (IN P-LIST) 00271000
  272. L 15,AWRBUF CALL 'WRBUF' VIA BALR 00272000
  273. BALR 14,15 ... 00273000
  274. L 14,0(,1) RECOVER R14 00274000
  275. AIF (T'&ERROR EQ 'O').NOER 00275000
  276. BNZ &ERROR BRANCH IF ERROR OCCURRED 00276000
  277. .NOER ANOP 00277000
  278. MEXIT 00278000
  279. .NOCB ANOP 00279000
  280. AIF (T'&BUFFER EQ 'O').ERR9 00280000
  281. AIF (T'&BSIZE EQ 'O').ERR10 00281000
  282. CNOP 0,4 00282000
  283. &LABEL BAL 1,DMS&SYSNDX.A 00283000
  284. SPACE 00284000
  285. FSCB &FILEID 00285000
  286. DMS&SYSNDX.A EQU * 00286000
  287. AIF ('&FILEID'(1,1) EQ '(').REG2 00287000
  288. AGO .CONT3 00288000
  289. .ERR1 MNOTE 8,'NEITHER FILEID OR FSCB SPECIFIED' 00289000
  290. MEXIT 00290000
  291. .ERR2 MNOTE 8,'INVALID FILEID SPECIFICATION' 00291000
  292. MEXIT 00292000
  293. .ERR3 MNOTE 8,'REGISTERS 0 AND 1 INVALID FOR FILEID' 00293000
  294. MEXIT 00294000
  295. .ERR4 MNOTE 8,'REGISTER 1 INVALID FOR RECNO' 00295000
  296. MEXIT 00296000
  297. .ERR5 MNOTE 8,'REGISTER 1 INVALID FOR BUFFER' 00297000
  298. MEXIT 00298000
  299. .ERR6 MNOTE 8,'REGISTER 1 INVALID FOR BSIZE' 00299000
  300. MEXIT 00300000
  301. .ERR7 MNOTE 8,'REGISTER 1 INVALID FOR RECFM' 00301000
  302. MEXIT 00302000
  303. .ERR8 MNOTE 8,'REGISTER 1 INVALID FOR NOREC' 00303000
  304. MEXIT 00304000
  305. .ERR9 MNOTE 8,'BUFFER ADDRESS NOT SPECIFIED' 00305000
  306. MEXIT 00306000
  307. .ERR10 MNOTE 8,'BUFFER SIZE NOT SPECIFIED' 00307000
  308. MEXIT 00308000
  309. .ERR11 MNOTE 8,'INVALID RECFM SPECIFICATION' 00309000
  310. MEND 00310000
  311. SPACE 00311000
  312. MACRO 00312000
  313. &LABEL FSCLOSE &FILEID,&FSCB=,&ERROR= 00313000
  314. GBLC &DMSNAME,&DMSTYPE,&DMSMODE 00314000
  315. AIF (T'&FILEID EQ 'O' AND T'&FSCB EQ 'O').ERR1 00315000
  316. AIF (T'&FILEID EQ 'O').NOID 00316000
  317. AIF ('&FILEID'(1,1) NE '''' AND '&FILEID'(1,1) NE '(').ERR2 00317000
  318. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '0').ERR3 00318000
  319. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '1').ERR3 00319000
  320. &DMSNAME SETC ' ' 00320000
  321. &DMSTYPE SETC ' ' 00321000
  322. &DMSMODE SETC ' ' 00322000
  323. AIF ('&FILEID'(1,1) EQ '(').SKIP1 00323000
  324. &DMSMODE SETC 'A1' 00324000
  325. DMSPID &FILEID 00325000
  326. AIF ('&DMSNAME' EQ ' ' OR '&DMSTYPE' EQ ' ').ERR2 00326000
  327. .SKIP1 AIF (T'&FSCB EQ 'O').NOCB 00327000
  328. .NOID AIF (T'&LABEL EQ 'O').NLBL 00328000
  329. &LABEL DS 0H 00329000
  330. .NLBL ANOP 00330000
  331. AIF ('&FSCB'(1,1) EQ '(').REG1 00331000
  332. LA 1,&FSCB 00332000
  333. AGO .CONT1 00333000
  334. .REG1 AIF ('&FSCB(1)' EQ '1').CONT1 00334000
  335. LR 1,&FSCB(1) 00335000
  336. .CONT1 ANOP 00336000
  337. AIF (T'&FILEID EQ 'O').CONT2 00337000
  338. AIF ('&FILEID'(1,1) EQ '(').REG2 00338000
  339. MVC 8(8,1),=CL8'&DMSNAME' 00339000
  340. MVC 16(8,1),=CL8'&DMSTYPE' 00340000
  341. MVC 24(2,1),=CL2'&DMSMODE' 00341000
  342. AGO .CONT2 00342000
  343. .REG2 ANOP 00343000
  344. MVC 8(18,1),0(&FILEID(1)) 00344000
  345. .CONT2 ANOP 00345000
  346. ST 14,0(,1) PRESERVE R14 (IN P-LIST) 00346000
  347. L 15,AFINIS CALL 'FINIS' VIA BALR 00347000
  348. BALR 14,15 ... 00348000
  349. L 14,0(,1) RECOVER R14 00349000
  350. AIF (T'&ERROR EQ 'O').NOER1 00350000
  351. BNZ &ERROR BRANCH IF ERROR OCCURRED 00351000
  352. .NOER1 ANOP 00352000
  353. MEXIT 00353000
  354. .NOCB ANOP 00354000
  355. CNOP 0,4 00355000
  356. &LABEL BAL 1,DMS&SYSNDX.A 00356000
  357. DC CL8'FINIS' 00357000
  358. DC CL8'&DMSNAME' 00358000
  359. DC CL8'&DMSTYPE' 00359000
  360. DC CL2'&DMSMODE' 00360000
  361. DMS&SYSNDX.A EQU * 00361000
  362. AIF ('&FILEID'(1,1) NE '(').SKIP2 00362000
  363. MVC 8(18,1),0(&FILEID(1)) 00363000
  364. .SKIP2 ANOP 00364000
  365. ST 14,0(,1) PRESERVE R14 (IN P-LIST) 00365000
  366. L 15,AFINIS CALL 'FINIS' VIA BALR 00366000
  367. BALR 14,15 ... 00367000
  368. L 14,0(,1) RECOVER R14 00368000
  369. AIF (T'&ERROR EQ 'O').NOER2 00369000
  370. BNZ &ERROR BRANCH IF ERROR OCCURRED 00370000
  371. .NOER2 ANOP 00371000
  372. MEXIT 00372000
  373. .ERR1 MNOTE 8,'NEITHER FILEID OR FSCB SPECIFIED' 00373000
  374. MEXIT 00374000
  375. .ERR2 MNOTE 8,'INVALID FILEID SPECIFICATION' 00375000
  376. MEXIT 00376000
  377. .ERR3 MNOTE 8,'REGISTERS 0 AND 1 INVALID FOR FILEID' 00377000
  378. MEND 00378000
  379. SPACE 00379000
  380. MACRO 00380000
  381. &LABEL FSERASE &FILEID,&FSCB=,&ERROR= 00381000
  382. GBLC &DMSNAME,&DMSTYPE,&DMSMODE 00382000
  383. AIF (T'&FILEID EQ 'O' AND T'&FSCB EQ 'O').ERR1 00383000
  384. AIF (T'&FILEID EQ 'O').NOID 00384000
  385. AIF ('&FILEID'(1,1) NE '''' AND '&FILEID'(1,1) NE '(').ERR2 00385000
  386. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '0').ERR3 00386000
  387. AIF ('&FILEID'(1,1) EQ '(' AND '&FILEID(1)' EQ '1').ERR3 00387000
  388. &DMSNAME SETC ' ' 00388000
  389. &DMSTYPE SETC ' ' 00389000
  390. &DMSMODE SETC ' ' 00390000
  391. AIF ('&FILEID'(1,1) EQ '(').SKIP1 00391000
  392. &DMSMODE SETC 'A1' 00392000
  393. DMSPID &FILEID 00393000
  394. AIF ('&DMSNAME' EQ ' ' OR '&DMSTYPE' EQ ' ').ERR2 00394000
  395. .SKIP1 AIF (T'&FSCB EQ 'O').NOCB 00395000
  396. .NOID AIF (T'&LABEL EQ 'O').NLBL 00396000
  397. &LABEL DS 0H 00397000
  398. .NLBL ANOP 00398000
  399. AIF ('&FSCB'(1,1) EQ '(').REG1 00399000
  400. LA 1,&FSCB 00400000
  401. AGO .CONT1 00401000
  402. .REG1 AIF ('&FSCB(1)' EQ '1').CONT1 00402000
  403. LR 1,&FSCB(1) 00403000
  404. .CONT1 ANOP 00404000
  405. AIF (T'&FILEID EQ 'O').CONT2 00405000
  406. AIF ('&FILEID'(1,1) EQ '(').REG2 00406000
  407. MVC 8(8,1),=CL8'&DMSNAME' 00407000
  408. MVC 16(8,1),=CL8'&DMSTYPE' 00408000
  409. MVC 24(2,1),=CL2'&DMSMODE' 00409000
  410. AGO .CONT2 00410000
  411. .REG2 ANOP 00411000
  412. MVC 8(18,1),0(&FILEID(1)) 00412000
  413. .CONT2 ANOP 00413000
  414. ST 14,0(,1) PRESERVE R14 (IN P-LIST) 00414000
  415. L 15,AERASE CALL 'ERASE' VIA BALR 00415000
  416. BALR 14,15 ... 00416000
  417. L 14,0(,1) RECOVER R14 00417000
  418. AIF (T'&ERROR EQ 'O').NOER1 00418000
  419. BNZ &ERROR BRANCH IF ERROR OCCURRED 00419000
  420. .NOER1 ANOP 00420000
  421. MEXIT 00421000
  422. .NOCB ANOP 00422000
  423. CNOP 0,4 00423000
  424. &LABEL BAL 1,DMS&SYSNDX.A 00424000
  425. DC CL8'ERASE' 00425000
  426. DC CL8'&DMSNAME' 00426000
  427. DC CL8'&DMSTYPE' 00427000
  428. DC CL2'&DMSMODE' 00428000
  429. DC 8X'FF' 00429000
  430. DMS&SYSNDX.A EQU * 00430000
  431. AIF ('&FILEID'(1,1) NE '(').SKIP2 00431000
  432. MVC 8(18,1),0(&FILEID(1)) 00432000
  433. .SKIP2 ANOP 00433000
  434. ST 14,0(,1) PRESERVE R14 (IN P-LIST) 00434000
  435. L 15,AERASE CALL 'ERASE' VIA BALR 00435000
  436. BALR 14,15 ... 00436000
  437. L 14,0(,1) RECOVER R14 00437000
  438. AIF (T'&ERROR EQ 'O').NOER2 00438000
  439. BNZ &ERROR BRANCH IF ERROR OCCURRED 00439000
  440. .NOER2 ANOP 00440000
  441. MEXIT 00441000
  442. .ERR1 MNOTE 8,'NEITHER FILEID OF FSCB SPECIFIED' 00442000
  443. MEXIT 00443000
  444. .ERR2 MNOTE 8,'INVALID FILEID SPECIFICATION' 00444000
  445. MEXIT 00445000
  446. .ERR3 MNOTE 8,'REGISTERS 0 AND 1 INVALID FOR FILEID' 00446000
  447. MEND 00447000
  448. EJECT 00448000
  449. *. * 00449000
  450. * 00450000
  451. * 00451000
  452. *MODULE NAME: 00452000
  453. * 00453000
  454. * DMSDLK (DOSLKED) 00454000
  455. * 00455000
  456. *FUNCTION - EDITS THE RELOCATABLE OUTPUT OF THE LANGUAGE 00456000
  457. * TRANSLATORS INTO EXECUTABLE PROGRAMS. THE CORE IMAGE PHASES 00457000
  458. * ARE ADDED TO THE END OF THE SPECIFIED DOSLIB. 00458000
  459. * 00459000
  460. *ATTRIBUTES: 00460000
  461. * 00461000
  462. * NON-REUSABLE NON-RESIDENT 00462000
  463. * 00463000
  464. *ENTRY POINT: 00464000
  465. * 00465000
  466. * DLKINL - VIA THE COMMANDS DOSLKED OR DOSL 00466000
  467. * 00467000
  468. *ENTRY CONDITIONS: 00468000
  469. * 00469000
  470. * R1 - PLIST 00470000
  471. * 00471000
  472. * PLIST: 00472000
  473. * CL8'DOSLKED' OR 'DOSL' 00473000
  474. * CL8'FILENAME' 00474000
  475. * CL8'LIBNAME' OPTIONAL 00475000
  476. * CL8'(' IF OPTIONS DESIRED 00476000
  477. * CL8'TERM', 'DISK', OR 'PRINT' 00477000
  478. * XL8'FF' 00478000
  479. * 00479000
  480. * FILENAME - FILENAME OF A CMS FILE WITH A 00480000
  481. * FILETYPE OF DOSLNK CONTAINING LINKAGE EDITOR 00481000
  482. * CONTROL STATEMENTS OR, IF NO FILE FOUND, THE 00482000
  483. * FILENAME OF A CMS TEXT DECK OR A DOS OBJECT 00483000
  484. * MODULE ON A PRIVATE OR SYSTEM RELOCATABLE 00484000
  485. * LIBRARY. 00485000
  486. * 00486000
  487. * LIBNAME - THE FILENAME OF THE DOSLIB WHERE 00487000
  488. * THE PHASE WILL BE PLACED AFTER LINKEDITING. 00488000
  489. * FILETYPE WILL BE DOSLIB. THE DEFAULT FOR 00489000
  490. * LIBNAME WILL BE FILENAME. IF THE DOSLIB 00490000
  491. * ALREADY CONTAINS A SPECIFIED PHASE, THE 00491000
  492. * PHASE WILL BE REPLACED. 00492000
  493. * 00493000
  494. * DISK - THE MAP WILL BE WRITTEN ON A CMS 00494000
  495. * DISK WITH THE NAME OF FILENAME MAP A5 00495000
  496. * (THIS IS THE DEFAULT). 00496000
  497. * 00497000
  498. * TERM - THE MAP WILL BE DISPLAYED ON THE USERS 00498000
  499. * TERMINAL. 00499000
  500. * 00500000
  501. * PRINT - THE MAP WILL BE PRINTED ON THE SYSTEM 00501000
  502. * OUTPUT DEVICE. 00502000
  503. * 00503000
  504. *EXIT CONDITIONS: 00504000
  505. * 00505000
  506. * NORMAL - RETURN TO CMS VIA R14, R15 = ZERO 00506000
  507. * ERROR - RETURN TO CMS VIA R14, R15 = NON-ZERO 00507000
  508. * 00508000
  509. *CALLS TO OTHER ROUTINES: 00509000
  510. * 00510000
  511. * DMSERS, DMSFNS, DMSPRT, DMSBRD, DMSSTT, DMSERR, 00511000
  512. * DMSBWR 00512000
  513. * 00513000
  514. *EXTERNAL REFERENCES: 00514000
  515. * 00515000
  516. * NONE 00516000
  517. * 00517000
  518. *TABLES/WORKAREAS: 00518000
  519. * 00519000
  520. * CONTROL DICTIONARY (C/D) 00520000
  521. * CONTAINS ALL THE NECESSARY INFORMATION FOR 00521000
  522. * RELOCATION. FORMAT OF ENTRY - SEE DSECT CDENTRY. 00522000
  523. * STARTS IMMEDIATELY AFTER LINKAGE TABLE. ADDRESS 00523000
  524. * IN CDENT1. 00524000
  525. * 00525000
  526. * LINKAGE TABLE (L/T) 00526000
  527. * CONNECTS THE ESID NUMBERS IN THE OBJECT DECK TO 00527000
  528. * ENTRIES IN THE CONTROL DICTIONARY. FORMAT OF 00528000
  529. * ENTRY - 2 BYTES C/D NUMBER, 1 BYTE ESD TYPE. 00529000
  530. * THE ESID NUMBER DETERMINES THE POSITION IN THE 00530000
  531. * TABLE. BEGINS ON FIRST PAGE BOUNDARY AFTER THE 00531000
  532. * TEXT BUFFER. ADDRESS MINUS LENGTH OF ONE ENTRY 00532000
  533. * IN LTMINE. 00533000
  534. * 00534000
  535. * TEXT BUFFER 00535000
  536. * OUTPUT AREA FOR DOSLIB BLOCKS. OVERLAYS PART 00536000
  537. * OF CSECT DLKINL. STARTS ON FIRST 1K BOUNDARY AFTER 00537000
  538. * BEGIN OF CSECT DLKINL. ADDRESS IN AWKARE. 00538000
  539. * 00539000
  540. * INPBLK 00540000
  541. * INPUT AREA FOR RECORDS FROM DOSLNK, CMS TEXT, OR 00541000
  542. * THE DOS RELOCATABLE LIBRARIES. 00542000
  543. * 00543000
  544. *REGISTER USAGE: 00544000
  545. * 00545000
  546. * R1 - R8 -WORK 00546000
  547. * R9 - BASE OF DLKINL 00547000
  548. * RA - RB -PARAMETER PASSING 00548000
  549. * RC - RD - BASE REGISTERS 00549000
  550. * RE - RF - SUB-ROUTINE LINKAGES 00550000
  551. * 00551000
  552. *OPERATION: 00552000
  553. * 00553000
  554. * CONTROL ENTERS DMSDLK AT THE DLKINL 00554000
  555. * CSECT. THE COMMAND LINE IS SCANNED FOR ERRORS AND 00555000
  556. * ADCONS ARE RELOCATED. THEN SYSRES IS LOCATED AND, IF 00556000
  557. * THE DISK OPTION IS DESIRED, THE OLD MAP FILE IS 00557000
  558. * ERASED IF IT EXISTS AND A NEW ONE CREATED. 00558000
  559. * A CHECK IS MADE TO SEE IF OLD TEMPORARY FILES WITH 00559000
  560. * A FILENAME OF 'FN' ARE PRESENT AND, IF SO, TO ERASE 00560000
  561. * THEM. THE PRIVATE RELOCATABLE LIBRARY, IF 00561000
  562. * SPECIFIED, IS LOCATED AND ADDRESSES ARE CALCULATED. 00562000
  563. * DOSLIB IS THEN FILEDEFED AND OPENED. A CHECK IS 00563000
  564. * MADE FOR DOSLNK AND, IF NOT AVAILABLE, A DUMMY 00564000
  565. * INCLUDE CARD IS SET UP AND CONTROL PASSES TO 00565000
  566. * NORMAL PROCESSING. IF DOSLNK IS AVAILABLE, THE 00566000
  567. * FILE IS READ AND ACTION CARDS ARE PROCESSED. 00567000
  568. * WHEN THE FIRST NON-ACTION CARD IS LOCATED, THE 00568000
  569. * OPTIONS SPECIFIED ON THE ACTION CARDS (IF ANY) 00569000
  570. * ARE PROCESSED AND CONTROL PASSES TO NORMAL 00570000
  571. * PROCESSING. WHEN THE CSECT HAS COMPLETED ITS 00571000
  572. * PROCESSING, IT WILL BE OVERLAID WITH WORK TABLES 00572000
  573. * AND BUFFER AREAS BY SUBSEQUENT PROCESSING. 00573000
  574. * 00574000
  575. * PHASES FORMED FROM LANGUAGE TRANSLATOR RELOCATABLE MODULES 00575000
  576. * ARE ASSIGNED AREAS OF MAIN STORAGE. 00576000
  577. * WHEN ACTION REL IS SPECIFIED OR DEFAULT AND ACCEPTED FOR 00577000
  578. * A PHASE, A RELOCATABLE PHASE WILL RESULT. 00578000
  579. * WHEN ACTION NOREL IS SPECIFIED OR DEFAULT OR ACTION REL 00579000
  580. * NOT ACCEPTED FOR A PHASE THE RESULTING PHASE WILL BE 00580000
  581. * NOT RELOCATABLE. 00581000
  582. * 00582000
  583. * THE FOLLOWING CONTROL CARDS ARE PROCESSED DURING 00583000
  584. * NORMAL PROCESSING: 00584000
  585. * 00585000
  586. * PHASE - AS EACH PHASE IS BUILT, THE INFORMATION FOR 00586000
  587. * THE PHASE IS SET UP IN CPHENT. THE NAME IS 00587000
  588. * CHECKED FOR DUPLICATES AND THE ORIGIN IS 00588000
  589. * DETERMINED. IF THIS IS NOT THE FIRST PHASE 00589000
  590. * THE PREVIOUS PHASE IS INSERTED IN THE CONTROL 00590000
  591. * DICTIONARY TABLE AND THE NUMBER OF BLOCKS ON 00591000
  592. * SYSUT2 CONTAINING BOTH TEXT AND RLD INFORMATION ARE 00592000
  593. * DETERMINED. IF THE PHASE IS RELOCATABLE, A SWITCH 00593000
  594. * IS SET AND PASS 3 OF RLD RECORDS IS INDICATED. 00594000
  595. * 00595000
  596. * INCLUDE - IF AN UNNAMED SUB-MODULE, CARD IS IGNORED. 00596000
  597. * OTHERWISE, THE NAME IS COMPARED AGAINST THE 00597000
  598. * PRIVATE RELOCATABLE DIRECTORY, CMS TEXT FILES 00598000
  599. * AND SYSTEM RELOCATABLE DIRECTORY. IF NOT FOUND 00599000
  600. * AN ERROR MESSAGE IS ISSUED AND PROCESSING 00600000
  601. * CONTINUES. IF FOUND, THE PREVIOUS FILE'S 00601000
  602. * ADDRESSES ARE STORED AND THE NEW FILE IS READ AND 00602000
  603. * PROCESSED. WHEN AN END CARD IS READ THE 00603000
  604. * PREVIOUS FILE'S ADDRESSES ARE RESTORED AND ITS 00604000
  605. * PROCESSING CONTINUES. 00605000
  606. * 00606000
  607. * ENTRY - IF NOAUTO HAS NOT BEEN SET EXTERNAL REFERENCES, 00607000
  608. * IF ANY, ARE RESOLVED, IF POSSIBLE, BY AUTOLINKING 00608000
  609. * THE REQUIRED MODULES INTO THE PHASE. CONTROL 00609000
  610. * IS THEN PASSED TO END PROCESSING. THE TRANSFER 00610000
  611. * ADDRESS, IF SPECIFIED, IS OBTAINED AND THE 00611000
  612. * NUMBER OF TEXT BLOCKS AND RLD BLOCKS IS CALCULATED. 00612000
  613. * IF NOMAP WAS NO SPECIFIED, THE MAP IS PRINTED, 00613000
  614. * TYPED, OR WRITTEN ONTO DISK AS SPECIFIED BY THE 00614000
  615. * OPTION LIST OF THE COMMAND LINE. THE RLD 00615000
  616. * RECORDS ARE THEN PROCESSED AND WRITTEN ONTO 00616000
  617. * SYSUT2. THE STOW TABLE ENTRY IS THEN COMPUTED 00617000
  618. * AND WRITTEN ONTO DOSLIB AS THE FIRST RECORD. 00618000
  619. * THEN SYSUT2 IS READ AND WRITTEN ONTO DOSLIB IN 00619000
  620. * 1024 BYTE BLOCKS WITH THE EXCEPTION OF THE LAST 00620000
  621. * RECORD, WHICH CAN BE ANY LENGTH. A STOW IS 00621000
  622. * THEN ISSUED TO INSERT THE NAME OF THE PHASE IN 00622000
  623. * THE DIRECTORY. THE SYSUT1 AND SYSUT2 FILES ARE 00623000
  624. * THEN ERASED, DOSLNK AND DOSLIB FILES ARE 00624000
  625. * CLOSED, AND CONTROL RETURNS TO CMS. 00625000
  626. * 00626000
  627. * 00627000
  628. *. 00628000
  629. TITLE 'DMSDLK LINKAGE EDITOR CONSTANTS AND SUBROUTINES - $LNKEDT' 00629000
  630. *************************************************************** 00630000
  631. * * 00631000
  632. * CSECT DMSDLK - CONSTANTS AND SUBROUTINES 00632000
  633. * * 00633000
  634. * CONTAINS THESE SUBROUTINES 00634000
  635. * RDS000 - READ INPUT FROM RELOCATABLE LIBRARY 00635000
  636. * CMSREAD- READS INPUT FROM CMS TEXT DECKS 00636000
  637. * LTESID - FIND CTL DICTIONARY INFO AND RELOC FACTOR * 00637000
  638. * WRTUTX - WRITES OUTPUT ONTO EITHER SYSUT1 OR SYSUT2 00638000
  639. * SRCHCD - SEARCH CTL DICTIONARY FOR MATCHING LABEL * 00639000
  640. * CHVHEX - CONVERT HEX CHARACTERS TO BINARY * 00640000
  641. * PRINT - PRINT ONTO SYSLST 00641000
  642. * LOGMSG - PRINT ERROR MESSAGE ONTO TERMINAL 00642000
  643. * SPACE1 - SPACE ONE LINE ON SYSLST 00643000
  644. * PRTLST - PRINT DIAGNOSTICS OF INPUT ONTO SYSLST 00644000
  645. * DISK - WRITES MAP OUTPUT ONTO MAP DISK FILE 00645000
  646. * AD1DSK - UPDATE DISK ADDR * 00646000
  647. * XTPHNO - EXTRACT PHS NO. FROM CTL DICTIONARY ENTRY * 00647000
  648. * READCI - READS CORE IMAGE LIB BLOCKS 00648000
  649. * WRITE - WRITES CORE IMAGE LIB BLOCKS * 00649000
  650. * ABTERR - BRANCHES TO DLKRLD FOR ABORT ERROR 00650000
  651. * DISKIO - EXECUTE I/O * 00651000
  652. * CDSIZE - CHK FOR CTL DICTIONARY OVERFLOW 00652000
  653. * RDNEXT - READS INPUT STREAM * 00653000
  654. * ALNKPR - SETS UP SCAN OF RELOC DIR IF AUTOLNK -SORTS UNRESOLVD ER * 00654000
  655. * ERROR - SETS UP TO PRINT NON-ABORT ERROR MESSAGES * 00655000
  656. * DERDAD - SETS UP CORE IMAGE BLOCKS OF TEXT IN A WORK AREA * 00656000
  657. * * 00657000
  658. *INPUT - DOSLNK, SYSRES, CMS TEXT, PRIVATE RELOC. LIB. 00658000
  659. * * 00659000
  660. *OUTPUT - DOSLIB,MAP 00660000
  661. * * 00661000
  662. * 00662000
  663. * -ERRORS - ABTERR - ABORT ERRORS IN THIS PHASE ARE 2194 00663000
  664. * * 00664000
  665. ******************************************************************** 00665000
  666. EJECT 00666000
  667. DMSDLK START 0 CONSTANTS AND SUBROUT @V305096 00667000
  668. DLKNAME DC CL8'DMSDLK' @V305065 00668000
  669. DC X'2900' VERSION/MOD LEVEL ID @V305096 00669000
  670. * 00670000
  671. USING DMSDLK,RC BASE FOR RES CONSTANTS & S/R-S @V305096 00671000
  672. USING E1,RA DSECT TO DEFINE INPUT AREA @V305096 00672000
  673. USING CDENTRY,R9 DSECT FOR C/D ENTRIES @V305096 00673000
  674. USING D17,R6 DSECT TO DEF VAR ESD/RLD FIELDS @V305096 00674000
  675. USING NUCON,R0 @V305065 00675000
  676. * 00676000
  677. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** 00677000
  678. * 00678000
  679. * REGISTERS TO USE IN DOS 00679000
  680. * 00680000
  681. * R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 00681000
  682. * 00682000
  683. RF EQU 15 SUB-ROUTINE LINKAGES @V305096 00683000
  684. RE EQU 14 @V305096 00684000
  685. * 00685000
  686. RD EQU 13 BASE REGISTERS @V305096 00686000
  687. RC EQU 12 @V305096 00687000
  688. * 00688000
  689. RB EQU 11 PARAMETER PASSING @V305096 00689000
  690. RA EQU 10 @V305096 00690000
  691. * 00691000
  692. R9 EQU 9 PASSING INFORMATION @V305096 00692000
  693. R8 EQU 8 @V305096 00693000
  694. R7 EQU 7 @V305096 00694000
  695. * 00695000
  696. R6 EQU 6 ARITHMETIC USE @V305096 00696000
  697. R5 EQU 5 @V305096 00697000
  698. R4 EQU 4 @V305096 00698000
  699. R3 EQU 3 @V305096 00699000
  700. R2 EQU 2 @V305096 00700000
  701. * 00701000
  702. R1 EQU 1 USE W/CAUTION--DESTROYED BY SVC-S @V305096 00702000
  703. R0 EQU 0 @V305096 00703000
  704. EJECT 00704000
  705. *************************************************************** 00705000
  706. * DSECT FOR CONTROL DICTIONARY ( C/D ) 00706000
  707. *************************************************************** 00707000
  708. CDENTRY DSECT @V305096 00708000
  709. * 00709000
  710. * LAYOUT OF ENTRY OF TYPE OTHER THAN PHASE 00710000
  711. * 00711000
  712. NAMED DS CL8 NAME OF ESD ITEM @V305096 00712000
  713. ESDTYPD DS XL1 ESD TYPE @V305096 00713000
  714. ASSORGD DS 0XL3 ASSEMBLED ORIGIN @V305096 00714000
  715. LNGTHD DS XL3 OR LENGTH OF CM @V305096 00715000
  716. RELFACD DS 0F RELOCATION FACTOR @V305096 00716000
  717. DS H @V305096 00717000
  718. CSNUMD DS 0H OR C/D # OR ESID # OF @V305096 00718000
  719. * CSECT FOR LD/LR 00719000
  720. PHNUMED DS H OR PHASE # FOR ER/WX @V305096 00720000
  721. PHNUMD DS H PHASE NUMBER FOR SD/PC @V305096 00721000
  722. SWITCHD DS XL1 DIVERSE SWITCHES @V305096 00722000
  723. DS XL1 FOR FUTURE USE @V305096 00723000
  724. CDEND EQU * @V305096 00724000
  725. * 00725000
  726. * LAYOUT OF PHASE ENTRY 00726000
  727. * 00727000
  728. ORG CDENTRY @V305096 00728000
  729. PHNAMED DS CL8 PHASE NAME @V305096 00729000
  730. ESDTYPED DS XL1 ESD TYPE @V305096 00730000
  731. ORPHDAD DS XL5 DISK ADDR OF FIRST BLK @V305096 00731000
  732. NOBLOKD DS H NUM OF TEXT BLKS @V305096 00732000
  733. NOBYTED DS H NUM OF BYTES IN LAST BLK@V305096 00733000
  734. RLDITEMD DS H NUM OF RLD ITEMS @V305096 00734000
  735. ORPHRGD DS F PHASE ORIGIN @V305096 00735000
  736. NXPHRGD DS F NEXT PHASE ORIGIN @V305096 00736000
  737. TRFRADD DS F TRANSFER ADDR @V305096 00737000
  738. LINKSTRD DS F START OF PARTITION @V305096 00738000
  739. RLDBLCKD DS H NUM OF EXTRA RLD BLKS @V305096 00739000
  740. PHTYPED DS C PHASE TYPE @V305096 00740000
  741. DS C FOR FUTURE USE @V305096 00741000
  742. * 00742000
  743. ************************************************************** 00743000
  744. * 00744000
  745. * THE FIRST BYTE OF ORPHRGD AND THE FIRST BYTE OF 00745000
  746. * TRFRADD MUST BE X'00'. MOST ROUTINES SCANNING THE C/D 00746000
  747. * HANDLE IT AS IF IT CONSISTED OF FIXED LENGTH ( 20 BYTE ) 00747000
  748. * ENTRIES. THE TWO BYTES X'00' PREVENT THE SECOND HALF 00748000
  749. * OF A PHASE ENTRY TO BE SELECTED AS A C/D ENTRY. 00749000
  750. * 00750000
  751. ************************************************************** 00751000
  752. EJECT 00752000
  753. ************************************************************** 00753000
  754. * MASKS FOR ESDTYPD / ESDTYPED 00754000
  755. ************************************************************** 00755000
  756. SD EQU X'00' SECTION DEFINITION @V305096 00756000
  757. LD EQU X'01' LABEL DEFINITION @V305096 00757000
  758. ER EQU X'02' EXTERNAL REFERENCE @V305096 00758000
  759. LR EQU X'03' LABEL REFERENCE @V305096 00759000
  760. PC EQU X'04' PRIVATE CODE @V305096 00760000
  761. CM EQU X'05' COMMMON @V305096 00761000
  762. PH EQU X'07' PHASE ENTRY @V305096 00762000
  763. WX EQU X'0A' WEAK EXTERNAL @V305096 00763000
  764. * 00764000
  765. * IN THE C/D A WEAK EXTERNAL IS STORED AS ER WITH THE 00765000
  766. * WXTRN BIT IN SWITCHD ON 00766000
  767. * 00767000
  768. * 00768000
  769. **************************************************************** 00769000
  770. * MASKS FOR SWITCHD 00770000
  771. *************************************************************** 00771000
  772. UNASSG EQU X'01' @V305096 00772000
  773. WXTRN EQU X'02' INDICATION THAT AN ER @V305096 00773000
  774. * IS A WEAK EXTERNAL 00774000
  775. NOAUTOL EQU X'04' NO AUTOLINK NECESSARY @V305096 00775000
  776. * THIS BIT IS SET FOR A WEAK EXTERNAL , IF NOAUTO IS 00776000
  777. * SPECIFIED, OR IF AN AUTOLINK WAS UNSUCCESSFUL 00777000
  778. ASSG EQU X'FE' MASK TO ASSIGN LD/LR @V305096 00778000
  779. * 00779000
  780. * 00780000
  781. *************************************************************** 00781000
  782. * MASKS FOR PHTYPED 00782000
  783. *************************************************************** 00783000
  784. SELFRELO EQU X'80' SELF RELOCATING PHASE @V305096 00784000
  785. RELPHASE EQU X'40' RELOCATABLE PHASE @V305096 00785000
  786. * X'00' NOT RELOCATABLE 00786000
  787. *************************************************************** 00787000
  788. EJECT 00788000
  789. * 00789000
  790. DUMMY2 DSECT @V305096 00790000
  791. D17 DS C VAR FLDS ON ESD & RLD CRDS @V305096 00791000
  792. D18 DS C @V305096 00792000
  793. D19 DS C DEF'D BY BYTE IN THIS CSECT @V305096 00793000
  794. D20 DS C @V305096 00794000
  795. D21 DS C @V305096 00795000
  796. D22 DS C NUMERIC REFLCTS CORRESP CARD@V305096 00796000
  797. D23 DS C @V305096 00797000
  798. D24 DS C COLS OF 1ST VARIABLE FIELD @V305096 00798000
  799. D25 DS C @V305096 00799000
  800. D26 DS C @V305096 00800000
  801. D27 DS C @V305096 00801000
  802. D28 DS C @V305096 00802000
  803. D29 DS C @V305096 00803000
  804. D30 DS C @V305096 00804000
  805. D31 DS C @V305096 00805000
  806. D32 DS C @V305096 00806000
  807. * 00807000
  808. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00808000
  809. * 00809000
  810. DUMMY3 DSECT @V305096 00810000
  811. H1 DS C PHASE NAME @V305096 00811000
  812. H2 DS C @V305096 00812000
  813. H3 DS C FIELDS DEFINE OUTPUT RECORDS@V305096 00813000
  814. H4 DS C @V305096 00814000
  815. H5 DS C USED TO BLOCK PHASE HEADERS @V305096 00815000
  816. H6 DS C @V305096 00816000
  817. H7 DS C INTO LIBRARIAN AREA @V305096 00817000
  818. H8 DS C @V305096 00818000
  819. H9 DS C LOAD ADDRESS THIS PHASE @V305096 00819000
  820. H10 DS C @V305096 00820000
  821. H11 DS C @V305096 00821000
  822. H12 DS C # C.I. BLOCKS IN PHASE @V305096 00822000
  823. H13 DS C TRANSFER ADDRESS THIS PHASE @V305096 00823000
  824. H14 DS C @V305096 00824000
  825. H15 DS C @V305096 00825000
  826. H16 DS C START DSK ADDR OF PHASE IN @V305096 00826000
  827. H17 DS C H CORE IMAGE LIBRARY @V305096 00827000
  828. H18 DS C R @V305096 00828000
  829. H19 DS C LOGICAL LENGTH OF LAST BLOCK@V305096 00829000
  830. H20 DS C @V305096 00830000
  831. * 00831000
  832. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00832000
  833. * 00833000
  834. DUMMY4 DSECT @V305096 00834000
  835. E1 DS C IDENTIFICATION @V305096 00835000
  836. E2 DS C @V305096 00836000
  837. E3 DS C @V305096 00837000
  838. E4 DS C @V305096 00838000
  839. E5 DS C @V305096 00839000
  840. E6 DS C ASSEMBLED ORIGIN @V305096 00840000
  841. E7 DS C REP HEX LOAD ORIGIN @V305096 00841000
  842. E8 DS C @V305096 00842000
  843. E9 DS C @V305096 00843000
  844. E10 DS C @V305096 00844000
  845. E11 DS C NO OF VAR BYTES TO PROCESS @V305096 00845000
  846. E12 DS C @V305096 00846000
  847. E13 DS C @V305096 00847000
  848. E14 DS C REP HEX ESID # @V305096 00848000
  849. E15 DS C ESID # @V305096 00849000
  850. E16 DS C @V305096 00850000
  851. E17 DS C FIELDS OF VARIABLE INFO @V305096 00851000
  852. * 00852000
  853. DMSDLK CSECT RESUME CSECT @V305096 00853000
  854. EJECT 00854000
  855. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00855000
  856. * 00856000
  857. * CONSTANTS 00857000
  858. * 00858000
  859. *** SIZES EQUATED TO SYMBOLS 00859000
  860. * 00860000
  861. WKAREA EQU 0 DEF TO SUPPLY PSEUDO ADDR'BLTY @V305096 00861000
  862. * 00862000
  863. DEV2314 EQU X'62' DEVICE-TYPE FOR 2314 @V305096 00863000
  864. DEV3330 EQU X'63' DEVICE-TYPE FOR 3330 @V505098 00864000
  865. DEV333B EQU X'65' DEVICE-TYPE FOR 3330-11 @V505098 00865000
  866. DEV3350 EQU X'67' DEVICE-TYPE FOR 3350 @V505098 00866000
  867. DEV3343 EQU X'69' DEVICE-TYPE FOR 3340,36MB @V305096 00867000
  868. DEV3347 EQU X'6A' DEVICE-TYPE FOR 3340,70MB @V305096 00868000
  869. * 00869000
  870. HDFCT1ST EQU 15 NUM OF ENTRIES IN BLOCK @V305096 00870000
  871. * OF REL 00871000
  872. * 00872000
  873. NESTNG EQU 5 NO OF LEVELS OF NESTING ON @V305096 00873000
  874. * INCLUDE STATEMENTS 00874000
  875. RELSW EQU 4 USED AS MASK FOR REL OPTION@V305096 00875000
  876. * THE CONTROL DICTIONARY 00876000
  877. MAPOP EQU X'01' MASK USED FOR MAPSW @V305096 00877000
  878. * 00878000
  879. SYSRS EQU 6 SYSTEM SYMBOL LUB VALUES @V305096 00879000
  880. CDLNGTH EQU CDEND-CDENTRY LENGTH OF C/D ENTRY @V305096 00880000
  881. ******************************************************************** 00881000
  882. * EQUATES USED PRIMARILY DURING INITIALIZATION AND MEANINGFUL 00882000
  883. * EQUATES FOR NUMERICS. 00883000
  884. ******************************************************************** 00884000
  885. SPACE 00885000
  886. DEC0 EQU 0 @V305096 00886000
  887. DEC1 EQU 1 @V305096 00887000
  888. DEC2 EQU 2 @V305096 00888000
  889. DEC3 EQU 3 @V305096 00889000
  890. DEC4 EQU 4 @V305096 00890000
  891. DEC5 EQU 5 @V305096 00891000
  892. DEC6 EQU 6 @V305096 00892000
  893. DEC7 EQU 7 @V305096 00893000
  894. DEC8 EQU 8 @V305096 00894000
  895. DEC10 EQU 10 @V305096 00895000
  896. DEC13 EQU 13 @V305065 00896000
  897. DEC16 EQU 16 @V305096 00897000
  898. DEC18 EQU 18 @V305096 00898000
  899. DEC20 EQU 20 @V305096 00899000
  900. DEC32 EQU 32 @V305096 00900000
  901. DEC39 EQU 39 @V305096 00901000
  902. DEC88 EQU 88 @V305096 00902000
  903. DEC320 EQU 320 @V305065 00903000
  904. DEC2047 EQU 2047 @V305065 00904000
  905. ER024 EQU 24 ERROR ID'S @V305096 00905000
  906. ER028 EQU 28 @V305065 00906000
  907. ER032 EQU 32 @V305065 00907000
  908. ER036 EQU 36 @V305065 00908000
  909. ER040 EQU 40 @V305065 00909000
  910. ER100 EQU 100 @V305065 00910000
  911. HEX0 EQU X'00' @V305096 00911000
  912. HEX1 EQU X'01' @V305096 00912000
  913. HEX2 EQU X'02' @V305096 00913000
  914. HEX3 EQU X'03' @V305096 00914000
  915. HEX4 EQU X'04' @V305096 00915000
  916. HEX5 EQU X'05' @V305096 00916000
  917. HEX6 EQU X'06' @V305096 00917000
  918. HEX7 EQU X'07' @V305096 00918000
  919. HEX8 EQU X'08' @V305096 00919000
  920. HEXC EQU X'0C' @V305096 00920000
  921. HEXF EQU X'0F' @V305096 00921000
  922. HEX10 EQU X'10' @V305096 00922000
  923. HEX20 EQU X'20' @V305096 00923000
  924. HEX40 EQU X'40' @V305096 00924000
  925. HEX60 EQU X'60' @V305096 00925000
  926. HEX80 EQU X'80' @V305096 00926000
  927. HEX31 EQU X'31' @V305096 00927000
  928. HEXF0 EQU X'F0' @V305096 00928000
  929. HEXFF EQU X'FF' @V305096 00929000
  930. * 00930000
  931. ONEK EQU 1024 1K @V305096 00931000
  932. UNASSGN EQU X'FF' EQUAL TO UNASSIGNED LUB@V305096 00932000
  933. BLANK EQU C' ' END OF ACTION OPERANDS @V305096 00933000
  934. COMMA EQU C',' SEPARATOR OF ACTION OPERANDS@V305096 00934000
  935. E EQU C'E' TO SEE IF 'ENTRY' VERB @V305096 00935000
  936. * 00936000
  937. *** DOUBLE WORD-S & COUPLINGS 00937000
  938. * 00938000
  939. AWKARE DC A(WKAREA) ADDRESS OF WORK AREA @V305065 00939000
  940. DBLWRD DC D'0' DOUBLE WORD FOR SCRATCH USE @V305096 00940000
  941. * 00941000
  942. CTLDNO DC F'-1' C/D # OF LAST C/D ENTRY @V305096 00942000
  943. CTLDAD DC F'0' C/D ADDR OF LAST C/D ENTRY @V305096 00943000
  944. * 00944000
  945. * 00945000
  946. *************************************************************** 00946000
  947. * CURRENT PHASE ENTRY (C/D) 00947000
  948. *************************************************************** 00948000
  949. CPHENT EQU * @V305096 00949000
  950. PHNAMEC DC CL8' ' PHASE NAME @V305096 00950000
  951. ESDTYPC DC X'00' ESDTYPE @V305096 00951000
  952. ORPHDA DC X'0001000000' DISK ADDR OF FIRST BLK @V305096 00952000
  953. NOBLOK DC H'0' NO OF TXT BLKS @V305096 00953000
  954. NOBYTE DC H'0' NO OF BYTES IN LAST BLK @V305096 00954000
  955. RLDITEMS DC H'0' NO OF RLD ITEMS @V305096 00955000
  956. ORPHRG DC F'0' PHASE ORIGIN @V305096 00956000
  957. NXPHRG DC F'0' NEXT PHASE ORIGIN @V305096 00957000
  958. TRFRAD DC F'0' TRANSFER ADDR @V305096 00958000
  959. LNKSTRT DC F'0' START OF PARTITION @V305096 00959000
  960. RLDBLCKS DC H'0' NO OF EXTRA RLD BLKS @V305096 00960000
  961. PHTYPE DC X'00' PHASE TYPE @V305096 00961000
  962. DC X'00' FOR FUTURE USE @V305096 00962000
  963. * 00963000
  964. *************************************************************** 00964000
  965. * CURRENT C/D ENTRY OF TYPE OTHER THAN PHASE 00965000
  966. *************************************************************** 00966000
  967. CESDENT EQU * @V305096 00967000
  968. NAME DC CL8' ' NAME OF ESD ITEM @V305096 00968000
  969. ESDTYP DC X'00' ESD TYPE @V305096 00969000
  970. ASSORG DS 0XL3 ASSEMBLED ORIGIN @V305096 00970000
  971. LNGTH DC XL3'00' LENGTH OF COMMON @V305096 00971000
  972. RELFAC DS 0F RELOCATION FACTOR @V305096 00972000
  973. DC H'0' OR @V305096 00973000
  974. CSNUM DS 0H C/D # OR ESD # OF CSECT@V305096 00974000
  975. * FOR LD/LR 00975000
  976. PHNUME DC H'0' PHASE # FOR ER/WX @V305096 00976000
  977. PHNUM DC H'0' PHASE NUMBER FOR SD/PC @V305096 00977000
  978. CSWITCH DC X'00' DIVERSE SWITCHES @V305096 00978000
  979. DC X'00' FOR FUTURE USE @V305096 00979000
  980. *************************************************************** 00980000
  981. * FOR COMMENTS AND USE OF SWITCHES SEE DSECT CDENTRY 00981000
  982. ************************************************************** 00982000
  983. * 00983000
  984. * 00984000
  985. RLDCNT DC H'0' COUNTFIELD NO. OF RLD ITEMS @V305096 00985000
  986. RESADDR DC H'0' SYSRES ADDRESS @V305065 00986000
  987. PRVADDR DC H'0' PRIV RELO ADDRESS @V305065 00987000
  988. * 00988000
  989. LOCORE DC F'0' LOAD ADDR OF CURRENT BLOCK @V305096 00989000
  990. HICORE DC F'0' LOAD ADDRESS OF NEXT BLOCK @V305096 00990000
  991. THPHDA DC H'0' DISK ADDR OF CURRENT C.I. BLOCK @V305096 00991000
  992. * 00992000
  993. PERIDA DC XL5'0' DISK ADDR NEXT RCD THIS BOOK@V305096 00993000
  994. DC CL7' ' FOR CMS TEXT NAMES @V305065 00994000
  995. LNTPRDA EQU *-PERIDA LENGTH OF PERIDA @V305065 00995000
  996. PERISW DC X'01' SWITCH INFO FOR THIS BOOK @V305096 00996000
  997. CMSTXT EQU X'08' INPUT FROM TEXT FILE @V305065 00997000
  998. FSTFILE EQU X'10' FIRST INPUT FILE @V305065 00998000
  999. DC (NESTNG)XL13'00' RESERV AREA FOR NEXTED INCLUDES@V305096 00999000
  1000. ENDPER EQU *-1 END OF NESTING AREA @V305096 01000000
  1001. DC X'0' THIS ASSURES PROPER @V305096 01001000
  1002. * CLEARING OF PUSH DOWN INCLUDE LIST 01002000
  1003. TRFRSW DC X'0' '01' WHEN XFER OF END ACCEPTD@V305096 01003000
  1004. ZEROH DC H'0' CONSTANT 0 @V305096 01004000
  1005. K1 DC H'1' CONSTANT 1 @V305096 01005000
  1006. KMIN DC H'-1' @V305065 01006000
  1007. ITMCNT DC H'0' CMS TEXT FILE ITEM COUNT @V305065 01007000
  1008. * 01008000
  1009. BLANKS DC CL8' ' @V305096 01009000
  1010. NMELST DC CL40' ' LIST - SUB-MODULAR C/S NAMES@V305096 01010000
  1011. * 01011000
  1012. DS 0F @V305096 01012000
  1013. PHVERB DC CL8' ' FIELDS TAKEN FROM PHASE CARD@V305096 01013000
  1014. PHNAME DC CL8' ' @V305096 01014000
  1015. SYMBOL DC CL8' ' @V305096 01015000
  1016. QUALIF DC CL8' ' @V305096 01016000
  1017. DISPLC DC F'0' @V305096 01017000
  1018. * 01018000
  1019. * 01019000
  1020. *** FULL WORDS 01020000
  1021. * 01021000
  1022. BUCK4 DC F'0' GENL PURPOSE BUCKET, USED TO@V305096 01022000
  1023. ORG BUCK4+1 FORCE ALGNMT OF NON-ALIGNED DATA @V305096 01023000
  1024. BUCK3 DC XL3'0' @V305096 01024000
  1025. ORG BUCK3+1 @V305096 01025000
  1026. BUCK2 DC H'0' @V305096 01026000
  1027. ORG BUCK2+1 @V305096 01027000
  1028. BUCK1 DC X'0' @V305096 01028000
  1029. * 01029000
  1030. CDENT1 DC F'0' ADDRESS OF FIRST C/D ENTRY @V305096 01030000
  1031. LTMINE DC F'0' ADDR OF START OF L/T @V305096 01031000
  1032. * MIN LENGTH OF L/T ENTRY 01032000
  1033. LNKTAD DC F'0' ADDR OF NEXT AVAIL L/T @V305096 01033000
  1034. * ENTRY 01034000
  1035. LTENTLN EQU 3 L/T ENTRY LENGTH @V305096 01035000
  1036. LTABLTH DC Y(255*LTENTLN/4*4+4) L/T LENGTH @V305096 01036000
  1037. HLTLNGTH DC Y(LTENTLN) L/T ENTRY LENGTH HALFW @V305096 01037000
  1038. ESDTYPL EQU LTENTLN-1 DISPLACEMENT OF ESD TYPE@V305096 01038000
  1039. * IN L/T 01039000
  1040. CSLNTH DC F'0' LEN OF SD/PC TO BE NEXT ASSIGNED @V305096 01040000
  1041. AD1CYL DC X'0000FFF6' UPD DSK ADDR TO NEXT CYL @V305096 01041000
  1042. EOSPVR DC F'0' END OF SUPERVISOR ADDRESS @V305096 01042000
  1043. COMSAV DC F'-1' BASE FOR COMMON AREA @V305096 01043000
  1044. * TEMPORARY FIX 01044000
  1045. * 01045000
  1046. PARTSTRT DS F WILL CONTAIN BEGINNING ADDR @V305096 01046000
  1047. * RESIDENT PARTITION FOR 01047000
  1048. * ACTUAL LINKAGE 01048000
  1049. * 01049000
  1050. TENK DC F'0' PARTITION END ADDR MIN @V305096 01050000
  1051. * LENGTH OF C/D ENTRY 01051000
  1052. DUMYPH DC C'PHASE ' @V305096 01052000
  1053. EJECT 1 01053000
  1054. **************************************************************** CMS 01054000
  1055. * 01055000
  1056. * CMS CONSTANTS 01056000
  1057. * 01057000
  1058. **************************************************************** CMS 01058000
  1059. * 01059000
  1060. DOSLNK FSCB '* DOSLNK *',RECFM=F,BUFFER=INPBLK,BSIZE=80 @V305065 01060000
  1061. DOSTXT FSCB '* TEXT *',RECFM=F,BUFFER=INPBLK,BSIZE=80 @V305065 01061000
  1062. DOSMAP FSCB '* MAP A5',RECFM=F,BSIZE=121,BUFFER=W1 @V305065 01062000
  1063. SYSUT1 FSCB '* SYSUT1 ??',RECFM=F,BSIZE=248 @V305065 01063000
  1064. SYSUT2 FSCB '* SYSUT2 A1',RECFM=F,BSIZE=1024 @V305065 01064000
  1065. * 01065000
  1066. FDEFCLR DC CL8'FILEDEF' COMMAND NAME @VM03220 01066000
  1067. DC CL8'DSLIB' DDNAME @VM03220 01067000
  1068. DC CL8'CLEAR' ACTION @VM03220 01068000
  1069. DC 8X'FF' FENCE @VM03220 01069000
  1070. DOSFILDF DC CL8'FILEDEF' @V305065 01070000
  1071. DC CL8'DSLIB' @V305065 01071000
  1072. DOSFIAC DC CL8'STATE' @V305065 01072000
  1073. DOSFINM DC CL8' ' @V305065 01073000
  1074. DC CL8'DOSLIB' @V305065 01074000
  1075. DOSFIMD DC CL2'* ' ANY DISK @V305065 01075000
  1076. DC H'0' @V305065 01076000
  1077. DOSFST DC A(0) FST ADDRSS @V305065 01077000
  1078. DC 8X'FF' @V305065 01078000
  1079. REGSAVE DS 1F'0' @V305065 01079000
  1080. CLSPLST DC CL8'CP' CLOSE PRINTER PLIST @V305065 01080000
  1081. DC CL8'CLOSE' @V305065 01081000
  1082. DC CL8'PRINTER' @V305065 01082000
  1083. DC 8X'FF' @V305065 01083000
  1084. CMSSWT1 DC X'00' @V305065 01084000
  1085. NODOSLNK EQU X'80' NO DOSLNK FILE AVAILABLE @V305065 01085000
  1086. WRITERR EQU X'40' WRITE ERROR @V305065 01086000
  1087. MAPPRT EQU X'20' PRINT MAP OPTION @V305065 01087000
  1088. MAPTYP EQU X'10' TYPE MAP OPTION @V305065 01088000
  1089. DOSTXTSW EQU X'08' INPUT FROM TEXT FILE @V305065 01089000
  1090. NODOSLIB EQU X'04' NO DOSLIB AT ENTRY @V305065 01090000
  1091. FSTSW EQU X'02' FIRST FILE(NO DOSLNK) @V305065 01091000
  1092. PRT3211 EQU X'01' VIRTUAL 3211 PRINTER @V305065 01092000
  1093. ERCODE DC X'00' ERROR CODE @V305065 01093000
  1094. ERRLIST DMSERR MF=L,SUB=(HEX,0,CHAR,0) @V305065 01094000
  1095. * 01095000
  1096. DOSLIB DCB DDNAME=DSLIB,DSORG=PO,RECFM=U,BLKSIZE=1024, @V305065*01096000
  1097. MACRF=(W),SYNAD=WRTERR @V305065 01097000
  1098. EJECT 01098000
  1099. ******************************************************************** 01099000
  1100. * 01100000
  1101. * DEVICE CONSTANTS AND OVERFLOW FACTORS. 01101000
  1102. * THESE CONSTANTS ARE DEVICE DEPENDEND AND ARE CHANGED BY 01102000
  1103. * THE INITIALIZATION ROUTINE. 01103000
  1104. * AN OVERFLOW FACTOR IS COMPOSED AS FOLLOWS 01104000
  1105. * BYTE 0 NUMBER OF RECORDS PER TRACK 01105000
  1106. * BYTE 1 LOWER HEAD LIMIT 01106000
  1107. * BYTE 2 UPPER HEAD LIMIT 01107000
  1108. * BYTE 3 255 - UPPER HEAD LIMIT + LOWER HEAD LIMIT 01108000
  1109. * 01109000
  1110. ******************************************************************** 01110000
  1111. * 01111000
  1112. CYLFCT DC F'0' USED BY AD1DSK TO @V305096 01112000
  1113. * REPRESENT ABOVE 01113000
  1114. * 01114000
  1115. FCTREL DC F'0' RELOCATABLE DIRECTORY @V305096 01115000
  1116. FCTRLL DC F'0' RELOCATABLE LIBRARY @V305096 01116000
  1117. CILRSIZE DC Y(CIBLOK) BLOCKSIZE OF CIL @V305096 01117000
  1118. CIBLOK EQU 1024 @V305096 01118000
  1119. ******************************************************************** 01119000
  1120. * 01120000
  1121. DATE DS CL8 SAVE AREA FOR DATE @V305096 01121000
  1122. * 01122000
  1123. KS DC C'S ' @V305065 01123000
  1124. * 01124000
  1125. OVRXFR DC F'0' RETAINS OVERRIDING XFR ADDR @V305096 01125000
  1126. ENDWKARE DC F'0' ADDR OF WKAREA END @V305096 01126000
  1127. EJECT 01127000
  1128. ******************************************************************** 01128000
  1129. * 01129000
  1130. *** DISK ADDRESSES 01130000
  1131. * 01131000
  1132. DS 0F ALIGNMENT @V305096 01132000
  1133. * 01133000
  1134. COMNRF DC XL5'0' ADJUSTM FACT = LEN OF COMMON@V305096 01134000
  1135. * ALSO USED AS DISK ADDR SAVE AREA 01135000
  1136. CTLSVE DC XL5'0' SAVE ADDR OF CONTROL CARD @V305096 01136000
  1137. * FOR RETURN FROM AUTOLINK 01137000
  1138. RELDST DC FL5'-1' START ADDR OF REL DIRECTORY @V305096 01138000
  1139. * 01139000
  1140. RELPVT DC FL5'-1' START ADDR OF PRIV REL DIR @V305096 01140000
  1141. * 01141000
  1142. DS 0F ALIGNMENT @V305096 01142000
  1143. NEWDAD DC XL5'0' WORKAREA FOR UPD DISK ADDR @V305096 01143000
  1144. ONS000 DC FL5'1' NXT ADDR TO READ FROM DOSLNK@V305096 01144000
  1145. NDS000 DC H'0' NXT AVAIL CHAR AFTER DOSLNK @V305096 01145000
  1146. * 01146000
  1147. ESD000 DC XL5'0' LAST ADDRESS ON DOSLNK @V305096 01147000
  1148. ESDN00 DC XL5'0' LAST ADDRESS NOT ON DOSLNK @V305096 01148000
  1149. * 01149000
  1150. ERRLNT DC X'78' @V305065 01150000
  1151. SAVIT DC F'0' REG SAVE AREA @V305096 01151000
  1152. SAVEREG DC F'0' REG SAVE AREA @V305096 01152000
  1153. H20000 DC XL4'20000' @V305065 01153000
  1154. K1024 DC H'1024' @V305065 01154000
  1155. * 01155000
  1156. PHSNO DC H'-1' C/D NO AND @V305096 01156000
  1157. PHSADD DC F'0' ADDR OF CDENTRY OF @V305096 01157000
  1158. * CURRENT/LAST PHASE 01158000
  1159. PREPHS DC H'-1' C/D # OF @V305096 01159000
  1160. * LAST PHASE PROCESSED IN CI LIBRARY 01160000
  1161. K9 DC H'9' @V305096 01161000
  1162. * 01162000
  1163. K12 DC H'12' @V305065 01163000
  1164. * 01164000
  1165. K15 DC H'15' @V305096 01165000
  1166. * 01166000
  1167. K16 DC H'16' @V305096 01167000
  1168. * 01168000
  1169. K255 DC H'255' @V305065 01169000
  1170. * 01170000
  1171. ROOTNO DC H'0' 1 IF 1ST PHASE IS ROOT @V305096 01171000
  1172. * 01172000
  1173. HCDLNGTH DC Y(CDLNGTH) LENGTH OF C/D ENTRY @V305096 01173000
  1174. * 01174000
  1175. RECBLK DC H'1' NO RECDS IN INPUT BLOCK @V305065 01175000
  1176. RECLNG DC H'0' LENGTH OF LOGICAL RECORDS @V305065 01176000
  1177. * 01177000
  1178. LINES DC H'0' SYSLST LINE COUNT @V305096 01178000
  1179. LINECNT DC H'0' COUNT OF LINES @V305096 01179000
  1180. * REMAINING ON PAGE 01180000
  1181. ALNKSW DC H'256' '01' WHEN PHASE ¬ TO BE AUTOLINKD@V305096 01181000
  1182. * 'FF' WHEN NOAUTO SPECIFIED 01182000
  1183. NUMPART DC H'0' NO. OF PART'TNS(SUPVR OPTN) @V305096 01183000
  1184. * 01184000
  1185. *** BYTES 01185000
  1186. * 01186000
  1187. NMSBSW DC X'0' '02' WHEN NAMD SUB-MODLR INCLUDE @V305096 01187000
  1188. * '04' WHEN AUTOLINK INCLUDE 01188000
  1189. * 01189000
  1190. SBMDST DC X'0' '01' - IN SUB-MODULAR STATUS @V305096 01190000
  1191. * 01191000
  1192. MODSTS DC X'0' '01' WHEN OBJECT MODULE IN PROC @V305096 01192000
  1193. * '02' FOR UNNAMED SUB MODULAR 01193000
  1194. * 01194000
  1195. CILTYPE DC AL1(SYSRS) LOG UNIT FOR CIL RESIDENCE @V305096 01195000
  1196. * 01196000
  1197. DPNTSW DC X'0' '01' WHEN POSS. DUP LD EXOR @V305096 01197000
  1198. * '02' WHEN ZERO LENGTH CONTROL 01198000
  1199. * SECTIONS PROCESSED 01199000
  1200. * '08' WHEN RELOC. FACTOR IS NEG. 01200000
  1201. * '40' WHEN PHASE WITH $ PREFIX PROC 01201000
  1202. * '80' WHEN ENTRY LABEL INVALID 01202000
  1203. * 01203000
  1204. ESDTYPE DC C' ' ESD TYPE RETAINED @V305096 01204000
  1205. * 01205000
  1206. MAPSW DC X'04' '01' WHEN MAP REQUESTED @V305096 01206000
  1207. * '02' WHEN OPTION CANCEL IS ON 01207000
  1208. * '04' WHEN ACTION REL SPECIFIED 01208000
  1209. * '08' PHASE CARD ALLOWS RELOCATE 01209000
  1210. * '10' RELOCATABLE PHASE CREATED 01210000
  1211. * '04' NOMAP PREVIOUSLY SPECIFIED 01211000
  1212. * '20' 1ST PASS OVER INPUT IS OVER 01212000
  1213. CLEARSW EQU X'40' CLEAR REQUESTED @V305065 01213000
  1214. * '80' WHEN AN ERROR OCCURS 01214000
  1215. * 01215000
  1216. POPTSW DC X'00' SWITCH FOR PHASE CARD OPTNS @V305096 01216000
  1217. OPTNOAUT EQU X'10' TEMP INDICATES NOAUTO @V305096 01217000
  1218. OPTPBDY EQU X'40' IF PBDY OPTION PRESENT @V305096 01218000
  1219. KESD DC C'ESD' @V305096 01219000
  1220. KSYM DC C'SYM' @V305096 01220000
  1221. * 01221000
  1222. KLIST DC C'LIST' @V305096 01222000
  1223. * 01223000
  1224. READRD DS 0F CCW TO READ RELOCATABLE @V305065 01224000
  1225. DC X'06' DIRECTORY @V305065 01225000
  1226. DC AL3(INPBLK) INTO INPUT AREA @V305065 01226000
  1227. DC X'00' @V305065 01227000
  1228. DC AL3(320) @V305065 01228000
  1229. EJECT 01229000
  1230. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01230000
  1231. * 01231000
  1232. * RETENETION AREA FOR TRANSFER INFORMATION 01232000
  1233. * 01233000
  1234. DS 0F @V305065 01234000
  1235. X5 DC 1X'0' ASSEMBLED ORIGIN @V305096 01235000
  1236. X6 DC 3X'0' @V305096 01236000
  1237. DC 6C' ' @V305096 01237000
  1238. X15 DC 2X'0' ESID # @V305096 01238000
  1239. X17 DC 8C' ' TRANSFER LABEL @V305096 01239000
  1240. EJECT 01240000
  1241. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01241000
  1242. * 01242000
  1243. * INPUT MATRIX OF TRANSFER ADDRESSES ON MAJOR INPUT TYPE 01243000
  1244. * 01244000
  1245. IPTMTX DC A(DLKSCN) CONTROL CARD SCANNER @V305096 01245000
  1246. * 01246000
  1247. ESDMTX DC A(DLKESD) ESD CARD @V305096 01247000
  1248. * 01248000
  1249. OTHMTX DC A(DLKOTH) NON-CTL/ESD TYPE OF CARD @V305096 01249000
  1250. * 01250000
  1251. CTLMTX DC A(DLKCTL) CONTROL CARD PROCESSOR @V305096 01251000
  1252. * 01252000
  1253. CATMTX DC A(DLKCAT) BUILD STOWLISTS @V305096 01253000
  1254. * 01254000
  1255. RLDMTX DC A(DLKRLD) 2ND. 3D. PASS RLD PROC @V305096 01255000
  1256. * 01256000
  1257. MAPMTX DC A(DLKMAP) MAP PROCESSOR @V305096 01257000
  1258. EJECT 01258000
  1259. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01259000
  1260. * 01260000
  1261. * R15 S/R TO READ INPUT FROM DOSLNK OR THE RELOC LIBRARY 01261000
  1262. * 01262000
  1263. * INPUT RA - POINTER TO RECORD IN DOSLNK OR LIB BLOCK 01263000
  1264. * FUNCTION UPDATES POINTER TO NEXT RECORD IN BLOCK AND 01264000
  1265. * READS A NEW BLOCK FROM CMS TEXT OR THE RELOC LIB 01265000
  1266. * IF NECESSARY 01266000
  1267. * OUTPUT RA - UPDATED POINTER 01267000
  1268. * BLOCK FROM CMS TEXT OR THE RELOC LIB IN INPBLK 01268000
  1269. * R2 - DESTROYED 01269000
  1270. * 01270000
  1271. RDS000 NOPR RF SW SET IN CASE OF DUMMY PHASE CRD@V305096 01271000
  1272. RDS00A NOP CMSREAD BRANCH IF CMS TEXT FILE @V305065 01272000
  1273. AH RA,RECLNG INCREMENT TO NEXT RCD @V305065 01273000
  1274. LH R2,RECBLK DECREASE COUNT BY ONE @V305065 01274000
  1275. BCTR R2,0 JUST PROCESSED @V305065 01275000
  1276. STH R2,RECBLK RETAIN REMAINING COUNT @V305065 01276000
  1277. LTR R2,R2 ANY LEFT? @V305065 01277000
  1278. BCR 2,RF BRANCH IF SO @V305065 01278000
  1279. MVC DSKWHT(8),RDCW00 @V305096 01279000
  1280. MVC NEWDAD,ONS000 INITIALIZE DISK ADDRESS TO @V305096 01280000
  1281. ST RF,REGRF SAVE RETURN REGISTER @V305065 01281000
  1282. LA RF,1 INDICATE ONE READ @V305065 01282000
  1283. MVC CYLFCT(4),FCTRLL SET CYL FACTORS FOR REL LIBR@V305096 01283000
  1284. MVC ADRESS,NEWDAD SET UP SEARCH FIELD @V305096 01284000
  1285. * 01285000
  1286. BAL RE,DISKRDWR MULTI RETURN IF NRF CONDITION @V305096 01286000
  1287. LA R2,NEWDAD GET CURRENT ADDRESS @V305065 01287000
  1288. * 01288000
  1289. BAL RE,AD1DSK SET UP ADDR OF NEXT RECORD @V305096 01289000
  1290. MVC ONS000,NEWDAD TO READ @V305096 01290000
  1291. * 01291000
  1292. MVC RECBLK+1(1),PREFIX GET NO. OF RECORDS @V305065 01292000
  1293. MVC RECLNG+1(1),PREFIX+1 LENGTH OF EACH RECORD @V305065 01293000
  1294. LA RA,INPBLK INIT E1 TO 1ST REC ADDR @V305096 01294000
  1295. L RF,REGRF GET RETURN REGISTER @V305065 01295000
  1296. BR RF @V305096 01296000
  1297. * 01297000
  1298. DS 0F FORCE FORWARD ALIGNMENT @V305096 01298000
  1299. RDCB00 DC H'-1' CCB TO READ DOSLNK @V305096 01299000
  1300. * 01300000
  1301. RDCW00 DC X'06' CCW TO READ DOSLNK - DOES @V305096 01301000
  1302. DC AL3(PREFIX) NOT HAVE TO BE ALIGNED @V305096 01302000
  1303. DC X'00' AS IT IS MOVED INTO ALIGNED @V305096 01303000
  1304. DC AL3(322) CCW BEFORE BEING USED @V305096 01304000
  1305. REGRF DC F'0' @V305065 01305000
  1306. EJECT 1 01306000
  1307. ************************************************************ 01307000
  1308. * 01308000
  1309. * CMS S/R TO READ INPUT FROM CMS TEXT FILE 01309000
  1310. * 01310000
  1311. ************************************************************ 01311000
  1312. * 01312000
  1313. CMSREAD EQU * @V305065 01313000
  1314. MVC RDCB00,KMIN REMOVE UNIT ADDRESS @V305065 01314000
  1315. LR RB,RF SAVE RETURN REGISTER @V305065 01315000
  1316. ICM RF,DEC3,ONS000 GET RECORD NUMBER @V305065 01316000
  1317. FSREAD ,FSCB=DOSTXT,RECNO=(15),ERROR=CMSRDERR @V305065 01317000
  1318. LA RA,INPBLK POINT TO INPUT AREA @V305065 01318000
  1319. USING FSCBD,R1 @V305065 01319000
  1320. LH RF,FSCBITNO GET RECORD NUMBER @V305065 01320000
  1321. DROP R1 @V305065 01321000
  1322. STH RF,ADRESS AND SAVE IT @V305065 01322000
  1323. XC ADRESS+2(3),ADRESS+2 CLEAR LOW ORDER BYTES @VA05886 01323000
  1324. LA RF,1(,RF) POINT TO NEXT RECORD @V305065 01324000
  1325. STCM RF,DEC3,ONS000 @V305065 01325000
  1326. MVC NEWDAD,ONS000 COMPATIBILITY WITH DOS DISK @VA05886 01326000
  1327. BR RB RETURN @V305065 01327000
  1328. CMSRDERR EQU * @V305065 01328000
  1329. CH RF,K12 END OF FILE? @V305065 01329000
  1330. BNE RDDSKERR BRANCH IF NOT @V305065 01330000
  1331. TM CMSSWT1,NODOSLNK WAS DOSLNK SPECIFIED? @V305065 01331000
  1332. BZ CMSRDEND BRANCH IF YES @V305065 01332000
  1333. TM PERISW,FSTFILE THIS THE FIRST FILE? @V305065 01333000
  1334. BO CMSTXTND BRANCH IF YES @V305065 01334000
  1335. CMSRDEND EQU * @V305065 01335000
  1336. MVI RDS00A+1,X'00' REMOVE CMSREAD INDICATOR @V305065 01336000
  1337. BR RB AND RETURN @V305065 01337000
  1338. CMSTXTND EQU * @V305065 01338000
  1339. MVC INPBLK(7),KNTRY SET UP DUMMY ENTRY @V305065 01339000
  1340. MVC INPBLK+7(73),INPBLK+6 CLEAR REST OF BUFFER @V305065 01340000
  1341. LA RA,INPBLK POINT TO BUFFER @V305065 01341000
  1342. BR RB RETURN @V305065 01342000
  1343. EJECT 01343000
  1344. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01344000
  1345. * 01345000
  1346. * R15 S/R TO SET UP REQUIRED C.I. BLOCK IN WKAREA 01346000
  1347. * 01347000
  1348. * INPUT R7 - LOAD ADDRESS 01348000
  1349. * R8 - NO OF BYTES 01349000
  1350. * THPHDA - DISK ADDRESS OF CURRENT BLOCK 01350000
  1351. * 01351000
  1352. * FUNCTION PROVIDES C.I. BLOCK CORRESPONDING TO SPECIFIED 01352000
  1353. * LOAD ADDRESS AND WRITES LAST BLOCK BACK IF 01353000
  1354. * NECESSARY. 01354000
  1355. * 01355000
  1356. * OUTPUT C.I. BLOCK IN WKAREA 01356000
  1357. * R2, R3, RB, RE - DESTROYED 01357000
  1358. * ALSO R1 01358000
  1359. * 01359000
  1360. * 01360000
  1361. DERDAD STM R2,R3,SAVER2R3 SAVE WORK REGISTERS @V305096 01361000
  1362. LH R2,THPHDA GET RECORD NUMBER @V305065 01362000
  1363. L R3,AWKARE GET BUFFER ADDRESS @V305065 01363000
  1364. LA R1,SYSUT2 POINT TO SYSUT2 DSCB @V305065 01364000
  1365. CLC PREPHS,PHSNO IF PHASE NO. HAS NOT CHGED @V305096 01365000
  1366. * CONTINUE 01366000
  1367. BE DERDOK ADDR CALC W/CURRENT VALUES @V305096 01367000
  1368. * 01368000
  1369. OI DERSW1+1,X'F0' SET SW TO FORCE NEW PHASE VALUES @V305096 01369000
  1370. * 01370000
  1371. DERDOK CL R7,ORPHRG IF ADDR < PHASE ORIGIN IT IS@V305096 01371000
  1372. ERR050 L RB,AMSG50 LOAD ADDRESS @V305096 01372000
  1373. BL ERROR OUTSIDE PHASE @V305096 01373000
  1374. * 01374000
  1375. AR R7,R8 IF ADDR+LEN > NEXT PHASE @V305096 01375000
  1376. CL R7,NXPHRG ORIGIN IT IS AN ERROR @V305096 01376000
  1377. * 01377000
  1378. DERDSW BH ERROR SW--NOP WHEN LEN IN ESD-SD @V305096 01378000
  1379. * 01379000
  1380. SR R7,R8 RESTORE LOAD ADDRESS @V305096 01380000
  1381. * 01381000
  1382. DERSW1 NOP DERITE SW--FORCE INIT OF NEW PHASE @V305096 01382000
  1383. * 01383000
  1384. LA RE,DERCAL IF LOAD ADDR >= NEXT C.I. @V305096 01384000
  1385. CL R7,HICORE BLOCK GO TO WRITE THE @V305096 01385000
  1386. BL DERCUR CURRENT & BRANCH IF NOT @V305065 01386000
  1387. NI READCI+DEC1,HEXF SET READ ROUTINE ACTIVE @V305065 01387000
  1388. BNL WRTUTX RETURN TO FIND REQ'D BLOCK @V305096 01388000
  1389. * 01389000
  1390. DERCUR EQU * @V305065 01390000
  1391. CL R7,LOCORE IF LOAD ADDRESS IS GT/EQ ADDRESS @V305096 01391000
  1392. BNL RTURN VALUE OF CURRENT BLOCK, EXIT @V305096 01392000
  1393. B DERITE1 WRITE CURRENT BLOCK @V305096 01393000
  1394. * 01394000
  1395. DERITE TM MAPSW,HEX20 IST PASS OVER @V305096 01395000
  1396. BO DERITE1 INPUT, NO @V305096 01396000
  1397. CLC PHSNO,K1 YES, IF THIS IS @V305096 01397000
  1398. BH DERITE1 TO READ THE 1ST BLOCK OF THE@V305096 01398000
  1399. CLC PREPHS,PHSNO 1ST. PHASE, NO CURRENT @V305096 01399000
  1400. BNE DERITE2 BLOCK TO WRITE OUT @V305096 01400000
  1401. * NOTE 1ST. BLOCK MEANS 1ST. 01401000
  1402. * IN TIME, NOT NECESSARILY 01402000
  1403. * IN SPACE 01403000
  1404. DERITE1 BAL RE,WRTUTX OTHERWISE WRITE CURRENT BLOCK @V305096 01404000
  1405. NI READCI+DEC1,HEXF SET READ ROUTINE ACTIVE @V305065 01405000
  1406. DERITE2 NI DERSW1+DEC1,HEXF . @V305096 01406000
  1407. * RESET SWITCH FOR IN-PHASE VALUES 01407000
  1408. MVC LOCORE(DEC4),ORPHRG RE-INITIATE ADDR TO @V305096 01408000
  1409. MVC THPHDA(DEC2),ORPHDA START OF PHASE @V305096 01409000
  1410. DERCAL EQU * @V305096 01410000
  1411. LH RB,THPHDA GET RECORD NUMBER @V305065 01411000
  1412. L R3,LOCORE @V305096 01412000
  1413. * 01413000
  1414. DERLOP EQU * UPDATE CURRENT ADDRESS @V305096 01414000
  1415. LR R2,R3 ACCEPT HICORE AS NEW LOCORE @V305096 01415000
  1416. AH R3,CILRSIZE ADD C.I. BLOCKSIZE TO GET NEW @V305096 01416000
  1417. * HICORE 01417000
  1418. * SET UP TO CONTINUE LOOP, ADDING 01418000
  1419. CLR R7,R3 TO DISK ADDRESS UNTIL @V305096 01419000
  1420. LA RB,1(,RB) @V305065 01420000
  1421. BNL DERLOP LOAD ADDRESS LESS THAN HICORE @V305096 01421000
  1422. * 01422000
  1423. BCTR RB,0 BACK OFF ONE @V305065 01423000
  1424. STH RB,THPHDA SAVE RECORD NUMBER @V305065 01424000
  1425. STM R2,R3,LOCORE SET UP NEW LOCORE & HICORE @V305096 01425000
  1426. MVC PREPHS,PHSNO SAVE PHASE # THIS @V305096 01426000
  1427. * BLOCK BELONGS TO 01427000
  1428. LH R2,THPHDA GET RECORD NUMBER @V305065 01428000
  1429. L R3,AWKARE GET BUFFER ADDRESS @V305065 01429000
  1430. BAL RE,READCI READ CI BLOCK AND @V305096 01430000
  1431. RTURN LM R2,R3,SAVER2R3 RESTORE CALLERS REGS @V305096 01431000
  1432. * 01432000
  1433. BR RF BEFORE RETURNING @V305096 01433000
  1434. SAVER2R3 DC 2F'0' . @V305096 01434000
  1435. EJECT 01435000
  1436. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01436000
  1437. * 01437000
  1438. * R15 S/R TO FIND C/D #/ADDRESS/R/F FROM ESID # BY USE OF L/T 01438000
  1439. * 01439000
  1440. * INPUT R8 - ESID NO 01440000
  1441. * 01441000
  1442. * FUNCTION USES ESID NO TO FIND ENTRY IN C/D. INSPECTS C/D 01442000
  1443. * POINTER OF L/T AND CALCULATES ADDRESS OF C/D 01443000
  1444. * ENTRY IF POSSIBLE. 01444000
  1445. * 01445000
  1446. * EXIT 1 RF 01446000
  1447. * ESID NO NOT YET PROCESSED ( C/D NO IS ZERO ) 01447000
  1448. * OUTPUT R7 - ADDR OF L/T ENTRY FOR ESID NO SUPPLIED 01448000
  1449. * R8,R9 - C/D NO 01449000
  1450. * 01450000
  1451. * EXIT 2 RF + 4 01451000
  1452. * ESID NO TO BE BYPASSED ( C/D NO NEGATIV ) 01452000
  1453. * OUTPUT R7 - ADDR OF L/T ENTRY FOR ESID NO SUPPLIED 01453000
  1454. * R8, R9 - C/D NO 01454000
  1455. * 01455000
  1456. * EXIT 3 RF + 8 01456000
  1457. * C/D ENTRY FOUND FOR ESID NO SUPPLIED 01457000
  1458. * OUTPUT R7 - RELOCATION FACTOR 01458000
  1459. * R8 - C/D NO 01459000
  1460. * R9 - ADDR OF C/D ENTRY 01460000
  1461. * 01461000
  1462. LTESID LTR R7,R8 IS ESID POSITIVE @V305096 01462000
  1463. BNP ERR044 NO, ERROR @V305096 01463000
  1464. MH R7,HLTLNGTH YES, MULT ESID BY LENGTH@V305096 01464000
  1465. * OF L/T ENTRY 01465000
  1466. A R7,LTMINE CALC ADDR OF L/T ENTRY @V305096 01466000
  1467. LA R8,LTENTLN(R7) FOR THIS ESID @V305096 01467000
  1468. * IF L/T ADDRESS OF NEXT ESID NO IS GT 01468000
  1469. CL R8,LNKTAD CURRENTLY NEXT AVAIL ADDR @V305096 01469000
  1470. BNH LSETB STORE IT TO BE USED FOR C/D-L/T @V305096 01470000
  1471. C R8,CDENT1 IF ESID ADDR IS GT 1ST @V305096 01471000
  1472. BNL ERR044 C/D ENTRY-S ADDR IT IS AN ERROR @V305096 01472000
  1473. ST R8,LNKTAD @V305096 01473000
  1474. * 01474000
  1475. LSETB L R8,DEC0(R7) SET UP C/D NO @V305096 01475000
  1476. SRA R8,DEC8 @V305096 01476000
  1477. STC R8,ESDTYPE RETAIN ESD TYPE @V305096 01477000
  1478. SRA R8,DEC8 R8 - C/D NO @V305096 01478000
  1479. * 01479000
  1480. L RB,AMSG70 ESID NOT DEFINED @V305096 01480000
  1481. * 01481000
  1482. LTCDNO LTR R9,R8 SET UP C/D # FOR USE BELOW @V305096 01482000
  1483. ** EXIT 1 ***** 01483000
  1484. BCR DEC8,RF IF C/D NO ZERO @V305096 01484000
  1485. ** EXIT 2 ***** 01485000
  1486. BM DEC4(RF) IF C/D NO NEGATIVE @V305096 01486000
  1487. * 01487000
  1488. LTCDAD SH R9,ROOTNO ESTABLISH C/D # AS DISPLACEMENT @V305096 01488000
  1489. MH R9,HCDLNGTH MULT C/D # TO GET @V305096 01489000
  1490. * DISPLACEMENT IN C/D 01490000
  1491. A R9,CDENT1 ADD ADDRESS OF 1ST C/D ENTRY@V305096 01491000
  1492. ** EXIT 3 ***** 01492000
  1493. L R7,RELFACD @V305096 01493000
  1494. B DEC8(RF) RETURN @V305096 01494000
  1495. EJECT 01495000
  1496. ************************************************************ 01496000
  1497. * 01497000
  1498. * CMS ROUTINE TO WRITE SYSUTX FILE 01498000
  1499. * 01499000
  1500. ************************************************************ 01500000
  1501. WRTUTX EQU * @V305065 01501000
  1502. ST RF,SAVERF SAVE RETURN REGISTER @V305065 01502000
  1503. FSWRITE ,FSCB=(1),RECNO=(2),BUFFER=(3),ERROR=WRITER @V305065 01503000
  1504. USING FSCBD,R1 @V305065 01504000
  1505. CLI FSCBFV,C'V' IS THIS SYSUT2 FILE? @V305065 01505000
  1506. BNE NOTUT2 BRANCH IF NOT @V305065 01506000
  1507. DROP R1 @V305065 01507000
  1508. TM MAPSW,CLEARSW WAS CLEAR SPECIFIED? @V305065 01508000
  1509. BZ NOTUT2 BRANCH IF NOT @V305065 01509000
  1510. BAL RF,CLEARBUF GO CLEAR BUFFER @V305065 01510000
  1511. NOTUT2 EQU * @V305065 01511000
  1512. L RF,SAVERF RESTORE RETURN REGISTER @V305065 01512000
  1513. BR RE @V305065 01513000
  1514. SAVERF DC F'0' @V305065 01514000
  1515. EJECT 1 01515000
  1516. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01516000
  1517. * 01517000
  1518. * R15 S/R TO FIND LAST DUPLICATE LABEL OCCURRENCE IN C/D 01518000
  1519. * 01519000
  1520. * R6 - SUPPLIES ADDRESS OF LABEL 01520000
  1521. * R8 - RETURNS C/D # 01521000
  1522. * R9 - RETURNS C/D ADDRESS 01522000
  1523. * 01523000
  1524. * EXITS RF - NO DUPLICATE LABEL IN C/D 01524000
  1525. * RF+4 - DUPLICATE LABEL FOUND 01525000
  1526. * 01526000
  1527. SRCHCD LM R8,R9,CTLDNO LAST C/D #/ADDRESS @V305096 01527000
  1528. * 01528000
  1529. SRLABL CLC NAMED(DEC8),DEC0(R6) IF LABEL DUPLICATE @V305096 01529000
  1530. BE 4(RF) @V305096 01530000
  1531. * 01531000
  1532. SRPCOD CL R9,CDENT1 IF END OF C/D @V305096 01532000
  1533. BCR 8,RF @V305096 01533000
  1534. * 01534000
  1535. SH R9,HCDLNGTH GO TO NEXT C/D ENTRY @V305096 01535000
  1536. BCTR R8,R0 SUBTR 1 FROM C/D NO @V305096 01536000
  1537. B SRLABL @V305096 01537000
  1538. EJECT 01538000
  1539. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01539000
  1540. * 01540000
  1541. * R15 S/R TO CONVERT HEX CHARACTERS TO BINARY 01541000
  1542. * 01542000
  1543. * R2 - COUNT OF HEX CHARACTERS TO CONVERT 01543000
  1544. * R3 - ADDRESS OF 1ST BYTE TO BE CONVERTED 01544000
  1545. * R4 - WORK REGISTER 01545000
  1546. * R5 - RETURNS RESULT 01546000
  1547. * 01547000
  1548. CNVHEX SR R5,R5 RESET RECIPIENT REGISTER @V305096 01548000
  1549. L RB,AMSG02 @V305096 01549000
  1550. * 01550000
  1551. SR R4,R4 RESET WORK REGISTER @V305096 01551000
  1552. CLI 0(R3),C'9' IF GT 9 NON-HEX CHARACTE R @V305096 01552000
  1553. BH ERROR @V305096 01553000
  1554. * 01554000
  1555. IC R4,0(R3) SET UP HEX CHARACTER @V305096 01555000
  1556. SH R4,K240 ASSUME 0-9, IF NEG TRY A-F @V305096 01556000
  1557. BNL CNVSHF @V305096 01557000
  1558. * 01558000
  1559. LA R4,57(R4) SHOULD GET A-F @V305096 01559000
  1560. CH R4,K9 IF RESULT ¬ A-F ITS NON-HEX @V305096 01560000
  1561. BNH ERROR CHARACT @V305096 01561000
  1562. CH R4,K15 @V305096 01562000
  1563. BH ERROR @V305096 01563000
  1564. * 01564000
  1565. CNVSHF SLL R5,4 INCLUDE 1/2 BYTE VALUE IN RESULT @V305096 01565000
  1566. AR R5,R4 @V305096 01566000
  1567. * 01567000
  1568. CNVAHX LA R3,1(R3) IF LAST CHAR CONVERTED EXIT,@V305096 01568000
  1569. BCT R2,CNVHEX+2 ELSE PROCESS NEXT @V305096 01569000
  1570. BR RF @V305096 01570000
  1571. * 01571000
  1572. K240 DC H'240' @V305096 01572000
  1573. EJECT 01573000
  1574. ************************************************************** 01574000
  1575. * 01575000
  1576. * ROUTINE TO PRINT ONE LINE ON SYSLST 01576000
  1577. * 01577000
  1578. * THE ROUTINE PRINTS A HEADER FIRST IF THAT IS NECESSARY 01578000
  1579. * ( LINECNT = 0 ). THEN THE OUTPUT AREA W0 IS PRINTED ON 01579000
  1580. * SYSLST. 01580000
  1581. * 01581000
  1582. PRINT EQU * @V305065 01582000
  1583. TM CMSSWT1,MAPPRT WAS PRINT SPECIFIED? @V305065 01583000
  1584. BO PRTOK BRANCH IF YES @V305065 01584000
  1585. ST R6,SAVERERF SAVE RETURN REGISTER @V305065 01585000
  1586. BAL R6,TYPE GO CHECK TYPE @V305065 01586000
  1587. L R6,SAVERERF RESTORE RETURN REGISTER @V305065 01587000
  1588. B PRTCLEAR GO CLEAR LINE @V305065 01588000
  1589. PRTOK EQU * @V305065 01589000
  1590. SR R1,R1 CLEAR REGISTER @V305065 01590000
  1591. CH R1,LINECNT END OF PAGE REACHED @V305096 01591000
  1592. BL PRTLINE NO, PRINT LINE @V305096 01592000
  1593. * 01593000
  1594. PRINTL HEADER,ERROR=PRTERR PRINT HEADER @V305065 01594000
  1595. LH R1,LINES INITIALIZE LINECNT @V305096 01595000
  1596. BCTR R1,0 TO MAXIMUM - 2 AND @V305096 01596000
  1597. BCTR R1,0 INSURE SPACING OF @V305096 01597000
  1598. STH R1,LINECNT 2 LINES BEFORE NEXT @V305096 01598000
  1599. MVI W0,C0 PRINT @V305096 01599000
  1600. * 01600000
  1601. PRTLINE EQU * @V305065 01601000
  1602. PRINTL W0,ERROR=PRTERR PRINT LINE @V305065 01602000
  1603. PRTCLEAR EQU * @V305065 01603000
  1604. MVI W0,BLANK BLANK OUTPUT AREA @V305096 01604000
  1605. MVC W1(CHARS-DEC1),W0 @V305096 01605000
  1606. TM CMSSWT1,PRT3211 IS THIS PRINTER 3211? @V305065 01606000
  1607. BO PRTDONE BRANCH IF YES @V305065 01607000
  1608. LH R1,LINECNT DIMINISH LINECNT BY @V305096 01608000
  1609. BCTR R1,0 ONE @V305096 01609000
  1610. STH R1,LINECNT @V305096 01610000
  1611. PRTDONE EQU * @V305065 01611000
  1612. BR R6 RETURN @V305096 01612000
  1613. * 01613000
  1614. HEADER DC C'1CMS DOSLKED **/**/** ' @V305096 01614000
  1615. DC C' DOS LINKAGE EDITOR DIAGNOSTIC OF INPUT' @V305096 01615000
  1616. DC CL67' ' @V305096 01616000
  1617. * 01617000
  1618. C0 EQU C'0' CNTRL CHARACTER @V305096 01618000
  1619. EJECT 1 01619000
  1620. ************************************************************** 01620000
  1621. * 01621000
  1622. * ROUTINE TO SPACE ONE LINE ON SYSLST 01622000
  1623. * 01623000
  1624. SPACE1 MVI W0,C0 INSURE SPACING OF TWO @V305096 01624000
  1625. LH R1,LINECNT LINES BEFORE NEXT @V305096 01625000
  1626. BCTR R1,0 PRINT AND UPDATE @V305096 01626000
  1627. STH R1,LINECNT LINECNT ACCORDINGLY @V305096 01627000
  1628. BR R6 RETURN @V305096 01628000
  1629. EJECT 1 01629000
  1630. ************************************************************** 01630000
  1631. * 01631000
  1632. * ROUTINE TO PRINT DIAGNOSTICS OF INPUT ON SYSLST 01632000
  1633. * 01633000
  1634. * IF MAP IS REQUESTED THE ROUTINE FILLS THE OUTPUT AREA 01634000
  1635. * W0 AND BRANCH-AND-LINKS TO ROUTINE PRINT. 01635000
  1636. * 01636000
  1637. * 01637000
  1638. PRTLST TM MAPSW,MAPOP MAP REQUESTED @V305096 01638000
  1639. BZ EXITLST NO, EXIT @V305096 01639000
  1640. * 01640000
  1641. ST R6,SAVEREG YES, SAVE LINK REG @V305096 01641000
  1642. MVC W1(DEC4),KLIST FILL OUTPUT AREA @V305096 01642000
  1643. MVC W8(CARDLNG),E1 WITH 'LIST' AND CARD @VM03016 01643000
  1644. BAL R6,PRINT PRINT LINE @V305096 01644000
  1645. L R6,SAVEREG RESTORE LINK REG @V305096 01645000
  1646. EXITLST BR R6 RETURN @V305096 01646000
  1647. * 01647000
  1648. CARDLNG EQU 80 @V305096 01648000
  1649. EJECT 1 01649000
  1650. ************************************************************ 01650000
  1651. * CMS ROUTINE TO PRINT PRINTER ERROR MESSAGE 01651000
  1652. ************************************************************ 01652000
  1653. PRTERR EQU * @V305065 01653000
  1654. MVI W0,C'+' SUPPRESS SPACE @V305065 01654000
  1655. CH RF,=H'3' CHANNEL 9? @V305065 01655000
  1656. BE PRTLINE REPRINT LINE IF SO @V305065 01656000
  1657. MVC LINECNT(2),ZEROH INDICATE EJECT @V305065 01657000
  1658. CH RF,=H'2' CHANNEL 12 SENSED? @V305065 01658000
  1659. BE PRTLINE REPRINT LINE IF SO @V305065 01659000
  1660. DMSERR NUM=245,LET=S,SUB=(DEC,(RF)), @V305065*01660000
  1661. TEXT='ERROR ''...'' ON PRINTER' @V305065 01661000
  1662. MVI ERCODE,ER100 MOVE IN ERROR CODE @V305065 01662000
  1663. B CANCL @V305065 01663000
  1664. EJECT 1 01664000
  1665. ************************************************************ 01665000
  1666. * CMS TYPE ONE LINE ON TERMINAL 01666000
  1667. ************************************************************ 01667000
  1668. TYPE EQU * @V305065 01668000
  1669. TM CMSSWT1,MAPTYP WAS TYPE SPECIFIED? @V305065 01669000
  1670. BZ DISK BRANCH IF NOT @V305065 01670000
  1671. LOGMSG EQU * @V305065 01671000
  1672. WRTERM W1,120 TYPE THE LINE @V305065 01672000
  1673. BR R6 RETURN @V305065 01673000
  1674. EJECT 1 01674000
  1675. ************************************************************ 01675000
  1676. * CMS WRITE RECORD TO MAP FILE 01676000
  1677. ************************************************************ 01677000
  1678. DISK EQU * @V305065 01678000
  1679. FSWRITE ,FSCB=DOSMAP,ERROR=WRITER @V305065 01679000
  1680. BR R6 @V305065 01680000
  1681. EJECT 1 01681000
  1682. ************************************************************ 01682000
  1683. * 01683000
  1684. * CMS WRITE ERROR ROUTINE 01684000
  1685. * 01685000
  1686. ************************************************************ 01686000
  1687. WRITER EQU * @V305065 01687000
  1688. L RE,WRETEXT POINT TO ERROR MESSAGE @V305065 01688000
  1689. LA R4,105 SET ERROR NUMBER @V305065 01689000
  1690. WRERR EQU * @V305065 01690000
  1691. LR R3,RF GET ERROR CODE @V305065 01691000
  1692. LA R6,8(,R1) POINT TO FILENAME @V305065 01692000
  1693. DMSERR MF=(E,ERRLIST),NUM=(R4),TEXTA=(RE),LET=S, @V305096X01693000
  1694. SUB=(DEC,(3),CHAR8A,(6)) @V305065 01694000
  1695. MVI ERCODE,ER028 SET ERROR CODE @V305065 01695000
  1696. B CANCL @V305065 01696000
  1697. EJECT 1 01697000
  1698. W0 DC C' ' ASA CONTROL CHARACTER @V305096 01698000
  1699. DC CL132' ' LINE TO BE PRINTED @V305096 01699000
  1700. CHARS EQU *-W0 NO OF CHARACTERS IN @V305096 01700000
  1701. * PRINT LINE 01701000
  1702. * 01702000
  1703. *** PRINT LOCATIONS REQUIRED BY MAP 01703000
  1704. * 01704000
  1705. W1 EQU W0+1 ROOT @V305096 01705000
  1706. W9 EQU W0+9 PHASENAME @V305096 01706000
  1707. W19 EQU W0+19 TRANSFER ADDRESS @V305096 01707000
  1708. W27 EQU W0+27 LOAD ADDRESS @V305096 01708000
  1709. W35 EQU W0+35 LAST BYTE ADDRESS @V305096 01709000
  1710. W43 EQU W0+43 DISK ADDRESS - CC @V305096 01710000
  1711. W46 EQU W0+47 H @V305096 01711000
  1712. W48 EQU W0+49 R @V305096 01712000
  1713. W52 EQU W0+53 CSECT/EXTRN/COM IDENTIFIER @V305096 01713000
  1714. W55 EQU W0+56 ENTRY IDENTIFIER @V305096 01714000
  1715. W62 EQU W0+63 LABEL @V305096 01715000
  1716. W72 EQU W0+73 LOAD ADDRESS @V305096 01716000
  1717. W80 EQU W0+81 RELOCATION FACTOR @V305096 01717000
  1718. W88 EQU W0+89 REL IDENTIFIER @V305096 01718000
  1719. * 01719000
  1720. *** PRINT LOCATIONS REQUIRED BY ERROR LIST 01720000
  1721. * 01721000
  1722. W8 EQU W0+8 73-80 IDENTIFICATION @V305096 01722000
  1723. W17 EQU W0+17 2- 4 TYPE OF CARD @V305096 01723000
  1724. W21 EQU W0+21 6- 8 ASSEMBLED ORIGIN @V305096 01724000
  1725. W28 EQU W0+28 11-12 NO BYTES PER CARD @V305096 01725000
  1726. W32 EQU W0+32 @V305096 01726000
  1727. W33 EQU W0+33 15-16 ESID NO @V305096 01727000
  1728. W37 EQU W0+37 @V305096 01728000
  1729. W38 EQU W0+38 17- VARIABLE INFORMATION @V305096 01729000
  1730. EJECT 01730000
  1731. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01731000
  1732. * 01732000
  1733. * R14 S/R TO UPDATE DISK ADDRESS BY 1 01733000
  1734. * 01734000
  1735. * R2 - POINTS TO THE DISK ADDRESS TO BE UPDATED 01735000
  1736. * THE UPDATED DISK ADDRESS IS RETURNED IN 01736000
  1737. * LOCATION NEWDAD 01737000
  1738. * 01738000
  1739. * CYLFCT - 'RR' NO OF RECORDS/TRACK 01739000
  1740. * REQUIRED FOR - 'LL' LOW TRACK IN CYLINDER 01740000
  1741. * SPLIT CYLINDER - 'HH' HIGH TRACK IN CYLINDER 01741000
  1742. * - '**' TRACK/CYLINDER OVERFLOW FACTOR 01742000
  1743. * 01743000
  1744. * AD1CYL - '0000FF**' LOGICAL OVERFLOW FACTOR 01744000
  1745. * 01745000
  1746. * '**' CALCULATED AS 255 + LOW TRACK - HIGH TRACK 01746000
  1747. * 01747000
  1748. AD1DSK MVC NEWDAD,DEC0(R2) MOVE DISK ADDR TO WORK AREA @V305096 01748000
  1749. CLC NEWDAD+DEC4(DEC1),CYLFCT IF PREV RCD WAS NOT @V305096 01749000
  1750. IC R2,NEWDAD+DEC4 INSERT RECORD NUMBER @V305096 01750000
  1751. LA R2,DEC1(R2) ADD 1 @V305096 01751000
  1752. STC R2,NEWDAD+DEC4 AND STORE BACK @V305096 01752000
  1753. BCR DEC7,RE LIMIT, EXIT @V305096 01753000
  1754. MVI NEWDAD+DEC4,HEX1 INIT FOR REC 1 ON NXT TRCK @V305096 01754000
  1755. L R2,NEWDAD LOAD CCHH IN REGISTER @V305096 01755000
  1756. AH R2,K1 ADD 1 TO TRACK ADDRESS @V305096 01756000
  1757. CLC NEWDAD+DEC3(DEC1),CYLFCT+DEC2 IF PREV TRCK WAS @V305096 01757000
  1758. BNE STDAD NOT LIMIT, EXIT @V305096 01758000
  1759. MVC AD1CYL+DEC3(DEC1),CYLFCT+DEC3 SETUP OVFL FACTOR@V305096 01759000
  1760. AL R2,AD1CYL TO NEXT CYLINDER @V305096 01760000
  1761. STDAD ST R2,NEWDAD STORE UPDATED CCHH @V305096 01761000
  1762. BR RE EXIT @V305096 01762000
  1763. * 01763000
  1764. * * * * * * * * * * * * * * * * * * * 01764000
  1765. * 01765000
  1766. * TO PROCESS SPLIT CYLINDER, INITIALISATION MUST 01766000
  1767. * 01767000
  1768. * RECALCULATE GIVEN FACTORS OF 0/LOW 9/HIGH TO 01768000
  1769. * 01769000
  1770. * DERIVE THE NEW TRACK/CYLINDER OVERFLOW FACTOR 01770000
  1771. * 01771000
  1772. * * * * * * * * * * * * * * * * * * * * 01772000
  1773. EJECT 01773000
  1774. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01774000
  1775. * 01775000
  1776. * CMS S/R TO INITIATE READ OF SYSUT2 01776000
  1777. * 01777000
  1778. * WKAREA - RESERVED INPUT AREA 01778000
  1779. * 01779000
  1780. * WKAREA - RESERVED O UTPUT AREA 01780000
  1781. * 01781000
  1782. READCI EQU * ENTRY FROM DERDAD @V305096 01782000
  1783. B READEND NOP WHEN FILE EXISTS @V305065 01783000
  1784. STM RE,RF,SAVERERF SAVE RETURN REGISTERS @V305065 01784000
  1785. FSCLOSE ,FSCB=SYSUT2 CLOSE OUTPUT FILE @V305065 01785000
  1786. FSREAD ,FSCB=(1),RECNO=(2),BUFFER=(3),ERROR=READERR @V305065 01786000
  1787. READOK EQU * @V305065 01787000
  1788. FSCLOSE ,FSCB=SYSUT2 CLOSE INPUT FILE @V305065 01788000
  1789. LM RE,RF,SAVERERF RESTORE RETURN REGISTERS @V305065 01789000
  1790. READEND EQU * @V305065 01790000
  1791. BR RE AND RETURN @V305065 01791000
  1792. * 01792000
  1793. READERR EQU * @V305065 01793000
  1794. CH RF,K12 END OF FILE? @V305065 01794000
  1795. BNE RDDSKERR BRANCH IF NOT, ERROR @V305065 01795000
  1796. LA RF,READOK SET RETURN ADDRESS @V305065 01796000
  1797. CLEARBUF EQU * @V305065 01797000
  1798. SR R1,R1 CLEAR REGISTER @V305065 01798000
  1799. LR R2,R3 SET REGISTERS FOR @V305063 01799000
  1800. LA R3,ONEK CLEARING STORAGE @V305065 01800000
  1801. MVCL R2,R0 CLEAR STORAGE @V305065 01801000
  1802. BR RF @V305065 01802000
  1803. SAVERERF DC 2F'0' @V305065 01803000
  1804. EJECT 01804000
  1805. ************************************************************ 01805000
  1806. * 01806000
  1807. * CMS S/R TO WRITE DOSLIB 01807000
  1808. * 01808000
  1809. ************************************************************ 01809000
  1810. * 01810000
  1811. WRITE EQU * @V305065 01811000
  1812. ST RE,RESAVE SAVE RETURN REGISTER @V305065 01812000
  1813. NI DOSFLAGS,255-DOSSVC TURN OF DOS SVC INDIC. @V305065 01813000
  1814. WRITE WRITECB,SF,DOSLIB,(R2),(R3) @V305065 01814000
  1815. CHECK WRITECB WAIT FOR COMPLETION @V305065 01815000
  1816. OI DOSFLAGS,DOSSVC INDICATE DOS SVC @V305065 01816000
  1817. NI CMSSWT1,255-NODOSLIB INDICATE DOSLIB @V305065 01817000
  1818. L RE,RESAVE RESTORE RETURN REGISTER @V305065 01818000
  1819. BR RE RETURN @V305065 01819000
  1820. * 01820000
  1821. WRTERR EQU * @V305065 01821000
  1822. SYNADAF ACSMETH=BPAM @V305065 01822000
  1823. SYNADRLS @V305065 01823000
  1824. LA RB,50(,R1) POINT TO MESSAGE @V305065 01824000
  1825. ICM RB,DEC8,ERRLNT INSERT LENGTH @V305065 01825000
  1826. OI MAPSW,HEX2 INDICATE CANCEL @V305065 01826000
  1827. OI ERRSW,NOCARD NO CARD TO PRINT @V305065 01827000
  1828. OI DOSFLAGS,DOSSVC INDICATE DOS SVC @V305065 01828000
  1829. MVI ERCODE,ER028 SET ERROR CODE @V305065 01829000
  1830. B ERROR @V305065 01830000
  1831. RESAVE DS F @V305065 01831000
  1832. EJECT 1 01832000
  1833. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01833000
  1834. * 01834000
  1835. * R14 S/R TO EXECUTE I/O 01835000
  1836. * 01836000
  1837. * R1 SET BEFORE ENTRY TO ADDRESS WANTED CCB 01837000
  1838. * 01838000
  1839. * DISK I/O OPERATIONS LAID OUT BELOW 01839000
  1840. * 01840000
  1841. DISKRDWR EQU * @V305065 01841000
  1842. LA RB,DKSEEK LOAD CCW ADDRESS @V305065 01842000
  1843. DISKIO LR 2,RB SAVE FOR DIAGNOSE @V305096 01843000
  1844. DC X'83120018' DIAGNOSE CODE @V305065 01844000
  1845. BCR 8,RE RETURN IF NO ERRORS @V305065 01845000
  1846. BC 6,ERR094 @V305065 01846000
  1847. TM CSW+4,X'01' END OF FILE? @V305065 01847000
  1848. BO ERR097 BRANCH IF YES @V305065 01848000
  1849. ERR094 L RB,AMSG94 INVALID NRF @V305096 01849000
  1850. B ABTERR @V305096 01850000
  1851. ERR097 L RB,AMSG97 EOF RECORD FOUND @V305096 01851000
  1852. B ABTERR @V305096 01852000
  1853. DSKCCB DC H'0' @V305096 01853000
  1854. * 01854000
  1855. *** CCW-S NECESSARY TO ACCOMPLISH REQUEST 01855000
  1856. * 01856000
  1857. DKSEEK CCW X'07',SEEKIT,X'60',6 SEEK @V305096 01857000
  1858. DKSRCH CCW HEX31,ADRESS,HEX60,DEC5 SEARCH @V305096 01858000
  1859. DKSTIC CCW HEX8,DKSRCH,HEX20,DEC1 TIC @V305096 01859000
  1860. DSKWHT CCW 0,0,0,0 MODIFY AS REQUIRED @V305096 01860000
  1861. * 01861000
  1862. SEEKIT DC XL2'0' BB @V305096 01862000
  1863. ADRESS DC XL5'0' CCHHR--SUPPLIED BY REQUESTOR@V305096 01863000
  1864. EJECT 1 01864000
  1865. ************************************************************ 01865000
  1866. * 01866000
  1867. * CMS ROUTINE TO PRINT DISK READ ERROR 01867000
  1868. * 01868000
  1869. ************************************************************ 01869000
  1870. DS 0H @V305065 01870000
  1871. RDDSKERR EQU * @V305065 01871000
  1872. L RE,REETEXT POINT TO ERROR MESSAGE @V305065 01872000
  1873. LA R4,104 SET ERROR MESSAGE @V305065 01873000
  1874. B WRERR GO PRINT ERROR @V305065 01874000
  1875. EJECT 01875000
  1876. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01876000
  1877. * 01877000
  1878. * R14 S/R TO EXTRACT PHASE # FROM SD/PC/LD/LR ENTRIES 01878000
  1879. * 01879000
  1880. * R1 - USED TO RETAIN C/D ADDRESS & RESTORE ON EXIT 01880000
  1881. * R2 - RETURNS PHASE # 01881000
  1882. * R9 - ASSUMED TO CONTAIN C/D ADDRESS OF ENTRY 01882000
  1883. * RF - IMBEDDED S/R CALL GIVEN IF C/D ENTRY LD/LR 01883000
  1884. * 01884000
  1885. XTPHNO LR R1,R9 SAVE R9 @V305096 01885000
  1886. CLI ESDTYPD,SD IF SD/PC PHASE # CAN BE@V305096 01886000
  1887. BE XTPHGT EXTRACTED IMMEDIATELY @V305096 01887000
  1888. CLI ESDTYPD,PC @V305096 01888000
  1889. BE XTPHGT ... @V305096 01889000
  1890. * 01890000
  1891. LH R9,CSNUMD FIND SD FOR THIS LD/LR @V305096 01891000
  1892. LA RF,* BYPASS MULTI-RETURN @V305096 01892000
  1893. B LTCDAD @V305096 01893000
  1894. * 01894000
  1895. XTPHGT EQU * EXTRACT PHASE NO @V305096 01895000
  1896. LH R2,PHNUMD THIS SD BELONGS TO @V305096 01896000
  1897. LR R9,R1 RESTORE R9 @V305096 01897000
  1898. BR RE RETURN TO REQUESTEE @V305096 01898000
  1899. EJECT 01899000
  1900. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01900000
  1901. * 01901000
  1902. *** ROUTINE TO HANDLE ABORT ERROR CONDITIONS 01902000
  1903. * 01903000
  1904. * RB - BYTE 0 - LENGTH OF ERROR MESSAGE 01904000
  1905. * BYTES 1, 2, 3 - ADDRESS OF MESSAGE 01905000
  1906. * 01906000
  1907. ABTERR L RD,RLDMTX GO TO RLD PROC @V305096 01907000
  1908. BR RD TO PROC ABORT ERROR @V305096 01908000
  1909. EJECT 01909000
  1910. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01910000
  1911. * 01911000
  1912. * R14 S/R TO CHECK THAT C/D HAS NOT OVERFLOWED 01912000
  1913. * 01913000
  1914. CDSIZE TM CTLDNO+DEC2,HEX80 C/D NO MAY NOT @V305096 01914000
  1915. BO ERR044 EXCEED 32K @V305096 01915000
  1916. C R9,TENK CHECK IF C/D OVERFL @V305096 01916000
  1917. BNHR RE NO, RETURN @V305096 01917000
  1918. * YES, ERROR 01918000
  1919. * 01919000
  1920. ERR044 L RB,AMSG44 C/D OVERFLOW @V305096 01920000
  1921. B ERROR @V305096 01921000
  1922. EJECT 01922000
  1923. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01923000
  1924. * 01924000
  1925. * ROUTINE TO READ INPUT STREAM 01925000
  1926. * 01926000
  1927. ALNKOF OI ALNKSW,X'01' SET SWITCH FOR NOAUTO @V305096 01927000
  1928. MVC ONS000,CTLSVE RESTORE ADDR OF CONTROL CARD@V305096 01928000
  1929. TM PERISW,HEX4 SYSRLB INPUT @V305096 01929000
  1930. BZ RESINP NO @V305096 01930000
  1931. NI PVLBSW+1,X'00' SET SW FOR PRIV RELO. INPUT @V305096 01931000
  1932. B RDALSW @V305096 01932000
  1933. RESINP OI PVLBSW+1,X'F0' SET SW FOR SYSRES RELO INPUT@V305096 01933000
  1934. TM PERISW,HEX1 READING DOSLNK? @V305065 01934000
  1935. BZ RDALSW BRANCH IF NOT @V305065 01935000
  1936. ICM RF,DEC3,ONS000 GET RECORD NUMBER @V305065 01936000
  1937. BCTR RF,0 DECREMENT ONE @V305065 01937000
  1938. STH RF,DOSLNK+26 AND SAVE IT @V305065 01938000
  1939. * 01939000
  1940. RDALSW NOP ALNKPR SW SET WHEN AUTOLINK IN PROGRESS @V305096 01940000
  1941. RDNEXT LH R1,RESADDR SET UP CCB FOR SYSRES INPUT@V305096 01941000
  1942. * 01942000
  1943. PVLBSW B RELBSW BR IF NO PRIVATE LIBRARY@V305096 01943000
  1944. LH R1,PRVADDR @V305096 01944000
  1945. RELBSW NOP RDUNIT SW SET WHEN RELOC LIBRARY INPUT @V305096 01945000
  1946. * 01946000
  1947. CLI RDS00A+1,X'F0' READTXT SWITCH SET? @V305065 01947000
  1948. BE RDUNIT BRANCH IF YES @V305065 01948000
  1949. TM RDS000+1,X'F0' DUMMY PHASE SWITCH? @V305065 01949000
  1950. BNZ RDUNIT1 BRANCH IF YES @V305065 01950000
  1951. TM CMSSWT1,NODOSLNK WAS DOSLNK FOUND? @V305065 01951000
  1952. BO RDEND BRANCH IF NOT @V305065 01952000
  1953. USING FSCBD,R1 @V305065 01953000
  1954. LA R1,DOSLNK POINT TO PLIST @V305065 01954000
  1955. LH RF,FSCBITNO GET CURRENT RECORD NUMBER @V305065 01955000
  1956. LA RF,1(,RF) ADD ONE @V305065 01956000
  1957. FSREAD ,FSCB=(1),RECNO=(15),ERROR=RDLNKERR @V305065 01957000
  1958. LA RA,INPBLK POINT TO INPUT BUFFER @V305065 01958000
  1959. RDDONE EQU * @V305065 01959000
  1960. MVC ADRESS(2),FSCBITNO MOVE IN RECORD NUMBER @V305065 01960000
  1961. DROP R1 @V305065 01961000
  1962. MVC RDCB00,KMIN REMOVE UNIT ADDRESS @V305065 01962000
  1963. B RDEXEC @V305065 01963000
  1964. * 01964000
  1965. RDUNIT STH R1,RDCB00 STORE CCB LOGICAL UNIT ADDR @V305096 01965000
  1966. BAL RF,RDS000 GO TO READ INPUT @V305096 01966000
  1967. RDUNIT1 EQU * @V305065 01967000
  1968. NI RDS000+1,X'0F' CANCEL DUMMY PHASE SWITCH @V305096 01968000
  1969. * 01969000
  1970. *** DIAGNOSE TYPE OF CARD READ 01970000
  1971. * 01971000
  1972. RDEXEC LA R1,IPTMTX TABLE OF TRANSFER ADDRESS @V305096 01972000
  1973. * 01973000
  1974. DMPHSW MVC COMNRF,ADRESS SWITCH - ADDRESS OF ESD FOR @V305096 01974000
  1975. * INPUT CONTROL 01975000
  1976. CLI E1,X'02' CHECK FOR CONTROL CARD @V305096 01976000
  1977. BNE CTLSKP SEE IF CONTROL CARDS SKIPPED@V305096 01977000
  1978. * 01978000
  1979. * 01979000
  1980. LA R1,4(R1) TRY FOR ESD CARD @V305096 01980000
  1981. CLC E1(4),KESD @V305096 01981000
  1982. BE EXLOAD @V305096 01982000
  1983. CHKSYM CLC E1(4),KSYM PROC SYM CARD IN ESD PROC'SR@V305096 01983000
  1984. BE EXLOAD @V305096 01984000
  1985. * 01985000
  1986. LA R1,4(R1) MUST BE OTHER INPUT TYPES @V305096 01986000
  1987. * 01987000
  1988. EXLOAD EQU * @V305096 01988000
  1989. C RD,OTHMTX CHECK TO SEE IF @V305096 01989000
  1990. * RLD-S WERE PROCESSED 01990000
  1991. BNE LOADBASE @V305096 01991000
  1992. LH R0,RLDOPT-DLKOTH+10(RD) IF NO RLD-S IN PREV MOD@V305096 01992000
  1993. LTR R0,R0 DO NOT WRITE OUT THE BUFFER @V305096 01993000
  1994. BZ LOADBASE @V305096 01994000
  1995. ST R1,OVRXFR SAVE REGISTER ONE @V305096 01995000
  1996. BAL RF,WRS001-DLKOTH(RD) WRITE OUT RLD BUFFER @V305096 01996000
  1997. L R1,OVRXFR RESTORE REGISTER ONE @V305096 01997000
  1998. * 01998000
  1999. LOADBASE L RD,0(R1) @V305096 01999000
  2000. ALNKSW2 NOP INCGET-DLKSCN(RD) SW TURNED ON BY AUTOLINK@V305096 02000000
  2001. * PROCESSOR, TO ENTER INCLUDE 02001000
  2002. * ROUTINE DIRECTLY 02002000
  2003. BR RD @V305096 02003000
  2004. * 02004000
  2005. CTLSKP TM MODSTS,X'02' IF IN SUBMOD, SHOULD SKIP CONTROL@V305096 02005000
  2006. BZ EXLOAD CARDS @V305096 02006000
  2007. * 02007000
  2008. LR R1,RA SAVESAVE CONTENTS OF REG 10 @V305096 02008000
  2009. * 02009000
  2010. FNDENT LA RA,1(RA) UPDATE TO NEXT CHARACTER @V305096 02010000
  2011. CLI 0(RA),C' ' IF CHARACTER IS NON-BLANK, @V305096 02011000
  2012. BE FNDENT TEST FOR AN ENTRY CARD @V305096 02012000
  2013. * 02013000
  2014. CLC 0(6,RA),KNTRY+1 IS IT ENTRY @V305096 02014000
  2015. BNE INOBJDK NO, THEN SEE IF ALLRITE TO BYPASS@V305096 02015000
  2016. * 02016000
  2017. LR RA,R1 RESTORE SAVED REGISTER @V305096 02017000
  2018. NI MODSTS,255-X'02' END SUB-MOD WHEN ENTRY REACHED@V305096 02018000
  2019. B RDEXEC FETCH CONTROL CARD PROCESSER@V305096 02019000
  2020. SPACE 2 02020000
  2021. INOBJDK TM MODSTS,X'01' IF MODULE STATUS SW IS SET, @V305096 02021000
  2022. L RB,AMSG16 CTL CARD WITHIN @V305096 02022000
  2023. BO ERROR A MODULE. GO DIAGNOSE IT. @V305096 02023000
  2024. B RDNEXT IF NOT, CTL CD--SO SKIP IT @V305096 02024000
  2025. * 02025000
  2026. RDEND EQU * @V305065 02026000
  2027. LA RF,12 INDICATE END @V305065 02027000
  2028. RDLNKERR EQU * @V305065 02028000
  2029. CH RF,K12 END OF FILE? @V305065 02029000
  2030. BNE RDDSKERR BRANCH IF NOT @V305065 02030000
  2031. BAL RB,CMSTXTND SET UP RECORD @V305065 02031000
  2032. B RDDONE @V305065 02032000
  2033. EJECT 02033000
  2034. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02034000
  2035. * 02035000
  2036. *** AUTOLINK PROCESSOR 02036000
  2037. * 02037000
  2038. ALNKPR L R9,CDENT1 INITIALISE SCAN OF C/D @V305096 02038000
  2039. NI ENDERR+1,X'0' @V305096 02039000
  2040. MVI PHVERB,C'*' NAME OF CALLING VERB SET UP @V305096 02040000
  2041. NI RDALSW+1,X'0F' RESET SW IN PERM RDNEXT @V305096 02041000
  2042. SR R6,R6 RESET REG ADDR'NG EXTRN @V305096 02042000
  2043. * 02043000
  2044. ALNKSC CL R9,CTLDAD IF END OF C/D GO CHECK IF IS @V305096 02044000
  2045. BNL ALNKCD NECESSARY TO AUTOLINK @V305096 02045000
  2046. LA R9,CDLNGTH(R9) @V305096 02046000
  2047. CLI ESDTYPD,ER IF NOT ER CONT SCAN @V305096 02047000
  2048. BNE ALNKSC NO. @V305096 02048000
  2049. * 02049000
  2050. TM SWITCHD,NOAUTOL IF ER KNOWN NOT TO BE @V305096 02050000
  2051. BO ALNKSC IN LIBRARY,BYPASS IT @V305096 02051000
  2052. * 02052000
  2053. LTR R6,R6 ON 1ST ER, FORCE ITS ADDR INTO@V305096 02053000
  2054. BNE *+6 SEARCH REGISTER @V305096 02054000
  2055. ALNKVL LR R6,R9 @V305096 02055000
  2056. * 02056000
  2057. CLC NAMED,0(R6) IF THIS ER LOWER @V305096 02057000
  2058. * THAN THAT ACCEPTED 02058000
  2059. BL ALNKVL PREV'LY USE IT INSTEAD, ELSE @V305096 02059000
  2060. B ALNKSC CONTINUE SCAN FOR LOWER @V305096 02060000
  2061. * 02061000
  2062. ALNKCD LTR R9,R6 IF NO ER-S TO BE SEARCHED ON, @V305096 02062000
  2063. BZ ALNKOF AUTOLINK IS OVER @V305096 02063000
  2064. * 02064000
  2065. OI SWITCHD,NOAUTOL SET ER TO @V305096 02065000
  2066. * PROCESSED CONDITION 02066000
  2067. OI RDALSW+1,X'F0' SET REQD SWTCHS IN RDNEXT & @V305096 02067000
  2068. FRSTSW NOP ALNKGT1 @V305096 02068000
  2069. MVI FRSTSW+1,X'F0' SET SW TO BYPASS IF 2ND TIME THRU@V305096 02069000
  2070. CLC RDCB00,PRVADDR WAS READ FROM SYSRLB @V305096 02070000
  2071. BNE ALNKGT1 @V305096 02071000
  2072. OI PERISW,HEX4 FROM SYSRLB @V305096 02072000
  2073. ALNKGT1 OI NMSBSW,HEX40 SET FOR AUTOLINKED MODULE @V305096 02073000
  2074. LA R1,IPTMTX GET INTO DLKSCN @V305096 02074000
  2075. OI ALNKSW2+DEC1,HEXF0 AT ENTRYPOINT INCGET @V305096 02075000
  2076. B EXLOAD VIA EXLOAD SUBROUTINE @V305096 02076000
  2077. * 02077000
  2078. ALNKGT LA R1,CTLMTX GET INTO CTL CD PROCESSOR @V305096 02078000
  2079. B EXLOAD @V305096 02079000
  2080. EJECT 02080000
  2081. ************************************************************** 02081000
  2082. * CLEAR LINKAGE TABLE TO BINARY ZERO'S 02082000
  2083. ************************************************************** 02083000
  2084. MAINFLOW EQU * @V305096 02084000
  2085. L R2,LNKTAD GET PTR TO STRT OF L/T @V305096 02085000
  2086. LH R3,LTABLTH GET LNGTH OF L/T @V305096 02086000
  2087. LA R3,40(,R3) ALSO C/D START @V305065 02087000
  2088. XR R5,R5 CLEAR REG @V305096 02088000
  2089. MVCL R2,R4 SET L/T TO BINARY ZERO @V305096 02089000
  2090. TM MAPSW,CLEARSW WAS CLEAR REQUESTED? @V305065 02090000
  2091. BZ ACTERR BRANCH IF NOT @V305065 02091000
  2092. L R2,AWKARE POINT TO BUFFER @V305065 02092000
  2093. LH R3,K1024 LENGTH OF BUFFER @V305065 02093000
  2094. MVCL R2,R4 CLEAR TO ZERO @V305065 02094000
  2095. ******************************************************************** 02095000
  2096. * GO PROCESS FIRST NON-ACTION STATEMENT 02096000
  2097. * IF AN ERROR WAS FOUND ON AN ACTION CARD, THE BRANCH IN- 02097000
  2098. * STRUCTION IS CHANGED TO A NOP. THAT RESULTS IN THE ERR BEING 02098000
  2099. * PROCESSED BY FALLING THROUGH TO THE ERROR ROUTINE. 02099000
  2100. ******************************************************************** 02100000
  2101. ACTERR B RDEXEC ENTER NORMAL FLOW @V305096 02101000
  2102. B ERROR GO TO ERROR ROUTINE @V305096 02102000
  2103. SPACE 5 02103000
  2104. ************************************************************** 02104000
  2105. * 02105000
  2106. * CANCEL ROUTINE 02106000
  2107. * 02107000
  2108. CANCL EQU * @V305065 02108000
  2109. LA R1,FDEFCLR POINT TO FILEDEF PLIST @VM03220 02109000
  2110. SVC 202 AND CLEAR DSLIB CMSCB. @VM03220 02110000
  2111. DC AL4(*+4) ... @VM03220 02111000
  2112. TM CMSSWT1,NODOSLIB WAS DOSLIB SPECIFIED? @V305065 02112000
  2113. BO CANCLA BRANCH IF NOT @V305065 02113000
  2114. NI DOSFLAGS,255-DOSSVC TURN OFF DOS SVC INDIC. @V305065 02114000
  2115. CLOSE (DOSLIB) CLOSE LIBRARY @V305065 02115000
  2116. OI DOSFLAGS,DOSSVC INDICATE DOS SVC @V305065 02116000
  2117. CANCLA EQU * @V305065 02117000
  2118. FSCLOSE ,FSCB=DOSMAP CLOSE MAP FILE @V305065 02118000
  2119. FSERASE ,FSCB=SYSUT1 @V305065 02119000
  2120. FSERASE ,FSCB=SYSUT2 @V305065 02120000
  2121. CANCLB EQU * @V305065 02121000
  2122. COMRG @V305065 02122000
  2123. USING BGCOM,R1 @V305065 02123000
  2124. MVC COMNAME,=CL8'CMS/DOS' RESET NAME @V305065 02124000
  2125. DROP R1 @V305065 02125000
  2126. DMSKEY RESET RESET KEYS @V305065 02126000
  2127. TM CMSSWT1,MAPPRT WAS PRINT SPECIFIED? @V305065 02127000
  2128. BZ CANCLC BRANCH IF NOT @V305065 02128000
  2129. LA R1,CLSPLST POINT TO PLIST @V305065 02129000
  2130. SVC 202 ISSUE CP CLOSE COMMAND @V305065 02130000
  2131. DC AL4(CANCLC) @V305065 02131000
  2132. CANCLC EQU * @V305065 02132000
  2133. TM CMSSWT1,NODOSLIB WAS DOSLIB PRESENT? @V305065 02133000
  2134. BZ CANCL1 BRANCH IF NOT @V305065 02134000
  2135. MVC DOSFIAC,=CL8'ERASE' INDICATE ERASE @V305065 02135000
  2136. LA R1,DOSFIAC POINT TO PLIST @V305065 02136000
  2137. SVC 202 @V305065 02137000
  2138. CANCL1 EQU * @V305065 02138000
  2139. SR RF,RF CLEAR REGISTER @V305065 02139000
  2140. IC RF,ERCODE GET ERROR CODE @V305065 02140000
  2141. L RE,REGSAVE GET RETURN REGISTER @V305065 02141000
  2142. BR RE AND RETURN TO CMS @V305065 02142000
  2143. EJECT 02143000
  2144. ************************************************************** 02144000
  2145. * 02145000
  2146. * ERROR ROUTINE 02146000
  2147. * 02147000
  2148. * ROUTINE INDICATES IN MAPSW THAT AN ERROR HAS OCCURRED. 02148000
  2149. * IF MAP IS REQUESTED IT PRINTS MESSAGE AND (IF REQUIRED) 02149000
  2150. * STATEMENT IN ERROR ON SYSLST. 02150000
  2151. * FOR ACTION NOMAP IT PRINTS ERROR MESSAGE AND ( IF 02151000
  2152. * REQUIRED) STATEMENT IN ERROR ON SYSLOG. 02152000
  2153. * SUBROUTINES USED - PRINT, LOGMSG 02153000
  2154. * 02154000
  2155. * INPUT - RB - BYTE 0 - LENGTH OF MESSAGE MIN 1 02155000
  2156. * BYTES 1, 2, 3 - ADDR OF ERROR MESSAGE 02156000
  2157. * 02157000
  2158. * PRINT ERROR MESSAGE 02158000
  2159. * 02159000
  2160. ERROR OI MAPSW,ERR INDICATE ERROR @V305096 02160000
  2161. CLI ERCODE,X'00' IS THERE AN ERROR CODE? @V305065 02161000
  2162. BNE ERRSET BRANCH IF YES @V305065 02162000
  2163. MVI ERCODE,DEC4 SET ERROR CODE @V305065 02163000
  2164. ERRSET EQU * @V305065 02164000
  2165. LR R6,RB @V305096 02165000
  2166. LA R6,0(R6) R6 - ADDRESS OF MESSAGE @V305096 02166000
  2167. SRL RB,24 RB - LENGTH OF MESSAGE @V305096 02167000
  2168. * MIN ONE 02168000
  2169. EX RB,MOVE MOVE MESSAGE TO @V305096 02169000
  2170. * OUTPUT AREA W0 02170000
  2171. LA RB,1(,RB) RESTORE LENGTH @V305065 02171000
  2172. BAL R6,LOGMSG GO TYPE MESSAGE @V305065 02172000
  2173. TM MAPSW,MAPOP MAP REQUESTED @V305096 02173000
  2174. BZ ERROR10 NO, CHECK FOR STMT @V305096 02174000
  2175. TM CMSSWT1,MAPTYP WAS TERM SPECIFIED? @V305065 02175000
  2176. BO ERROR10 BRANCH IF YES, DONE @V305065 02176000
  2177. BAL R6,SPACE1 YES, SPACE1 AND @V305096 02177000
  2178. BAL R6,PRINT PRINT MESSAGE ON @V305096 02178000
  2179. B ERROR20 @V305065 02179000
  2180. * 02180000
  2181. ERROR10 EQU * @V305065 02181000
  2182. BAL R6,PRTCLEAR CLEAR INPUT LINE @V305065 02182000
  2183. ERROR20 TM ERRSW,NOCARD STATEMENT IN ERROR @V305096 02183000
  2184. * TO BE PRINTED 02184000
  2185. BO ERROR40 NO, BRANCH @V305096 02185000
  2186. * 02186000
  2187. * PRINT STATEMENT IN ERROR 02187000
  2188. * 02188000
  2189. CLI E1,HEX2 12-2-9 IN COLUMN 1 @V305096 02189000
  2190. BE NOTCTL YES, GO TO FORMAT @V305096 02190000
  2191. * CARD 02191000
  2192. MVC W8(CARDLNG),E1 NO, MOVE CARD TO OUTPUT @V305096 02192000
  2193. * AREA 02193000
  2194. * 02194000
  2195. PRERR EQU * @V305065 02195000
  2196. LA RB,CARDLNG+DEC7 SET LENGTH @V305065 02196000
  2197. BAL R6,LOGMSG TYPE STATEMENT @V305065 02197000
  2198. TM MAPSW,MAPOP PRINT ON SYSLST IF @V305096 02198000
  2199. BZ ERROR30 MAP IS REQUESTED @V305096 02199000
  2200. TM CMSSWT1,MAPTYP WAS TERM SPECIFIED? @V305065 02200000
  2201. BO ERROR30 BRANCH IF YES, DONE @V305065 02201000
  2202. BAL R6,PRINT REQUESTED @V305096 02202000
  2203. BAL R6,SPACE1 SPACE1 @V305096 02203000
  2204. B ERROR40 @V305065 02204000
  2205. * 02205000
  2206. ERROR30 EQU * @V305065 02206000
  2207. BAL R6,PRTCLEAR CLEAR INPUT LINE @V305065 02207000
  2208. ERROR40 EQU * @V305065 02208000
  2209. MVI ERRSW,HEX0 NO, RESET SWITCH @V305096 02209000
  2210. TM MAPSW,HEX2 IS THIS CANCEL? @V305065 02210000
  2211. BO CANCL BRANCH IF YES @V305065 02211000
  2212. ENDERR NOP ALNKPR @V305096 02212000
  2213. B RDNEXT AND GO TO ALNKPR @V305096 02213000
  2214. * OR RDNEXT 02214000
  2215. ERRSW DC X'00' CONTROL SWITCH @V305096 02215000
  2216. * X'00' BRANCH TO RDNEXT OR ALNKPR 02216000
  2217. * AND PRINT STATEMENT IN ERROR 02217000
  2218. NOCARD EQU X'02' NO STATEMENT IN ERROR TO BE PRINTED @V305096 02218000
  2219. * 02219000
  2220. MOVE MVC W1(0),0(R6) MOVE INSTR USED FOR @V305096 02220000
  2221. * EXECUTE INSTR 02221000
  2222. ERR EQU X'80' @V305096 02222000
  2223. EJECT 02223000
  2224. ************************************************************** 02224000
  2225. * 02225000
  2226. *** CONVERT 12-2-9 CARD TO READABLE FORMAT 02226000
  2227. * 02227000
  2228. NOTCTL MVC W8(8),E1+72 IDENTIFICATION @V305096 02228000
  2229. MVC W17(3),E2 @V305096 02229000
  2230. * 02230000
  2231. UNPK W21(7),E6(4) ASSEMBLED ORIGIN @V305096 02231000
  2232. TR W21(6),TRTABL-240 @V305096 02232000
  2233. MVI W27,C' ' @V305096 02233000
  2234. * 02234000
  2235. UNPK W28(5),E11(3) NO OF BYTES/CARD @V305096 02235000
  2236. TR W28(4),TRTABL-240 @V305096 02236000
  2237. MVI W32,C' ' @V305096 02237000
  2238. * 02238000
  2239. UNPK W33(5),E15(3) ESID # @V305096 02239000
  2240. TR W33(4),TRTABL-240 @V305096 02240000
  2241. MVI W37,C' ' @V305096 02241000
  2242. * 02242000
  2243. LA R2,E17 ADDR OF VARIABLE INFO @V305096 02243000
  2244. LA R1,W38 REST OF CARD STARTS PRINTING HERE@V305096 02244000
  2245. LA R0,3 COUNT OF ESD/LINE @V305096 02245000
  2246. * 02246000
  2247. CLC E1(4),KESD IF ESD CARD, PRINT IN DIFFERENT @V305096 02247000
  2248. BE TISESD FORMAT @V305096 02248000
  2249. * 02249000
  2250. *** CONVERT EACH WORD TO HEX 02250000
  2251. * 02251000
  2252. LA R0,9 CAN PRINT 36 BYTES @V305096 02252000
  2253. * 02253000
  2254. NTESLP UNPK 0(9,R1),0(5,R2) CONVERT FULL WORD @V305096 02254000
  2255. TR 0(8,R1),TRTABL-240 @V305096 02255000
  2256. MVI 8(R1),C' ' @V305096 02256000
  2257. LA R1,9(R1) ADDRESS TO PRINT NEXT WORD @V305096 02257000
  2258. LA R2,4(R2) MODIFY ADDRESS OF FULL WORD @V305096 02258000
  2259. BCT R0,NTESLP @V305096 02259000
  2260. LA RB,118 SET LENGTH FOR LOGMSG @V305096 02260000
  2261. * 02261000
  2262. NDESLP MVI 0(R1),C' ' BLANK LAST POSITION CONVERTED@V305096 02262000
  2263. B PRERR @V305096 02263000
  2264. * 02264000
  2265. *** FORMAT ESD 02265000
  2266. * 02266000
  2267. TISESD MVC 0(8,R1),0(R2) LABEL @V305096 02267000
  2268. MVC 9(1,R1),8(R2) TYPE @V305096 02268000
  2269. OI 9(R1),X'F0' @V305096 02269000
  2270. * 02270000
  2271. UNPK 11(7,R1),9(4,R2) CONVERT ASSEMBLED ORIGIN @V305096 02271000
  2272. TR 11(6,R1),TRTABL-240 @V305096 02272000
  2273. MVI 17(R1),C' ' @V305096 02273000
  2274. * 02274000
  2275. UNPK 18(7,R1),13(4,R2) CONVERT C/S LENGTH @V305096 02275000
  2276. TR 18(6,R1),TRTABL-240 @V305096 02276000
  2277. MVI 24(R1),C' ' @V305096 02277000
  2278. * 02278000
  2279. LA R1,25(R1) ADDRESS TO PRINT NEXT ITME @V305096 02279000
  2280. LA R2,16(R2) MODIFY ADDRESS OF NEXT ITEM @V305096 02280000
  2281. BCT R0,TISESD @V305096 02281000
  2282. LA RB,112 SET LENGTH FOR LOGMSG @V305096 02282000
  2283. B NDESLP ALL PRINTED @V305096 02283000
  2284. * 02284000
  2285. *** CONSTANTS REQUIRED 02285000
  2286. * 02286000
  2287. *** TRANSLATE TABLE FOR BINARY-HEX CONVERSION 02287000
  2288. * 02288000
  2289. TRTABL DC C'0123456789ABCDEF' @V305096 02289000
  2290. * 02290000
  2291. KNTRY DC C' ENTRY ' @V305096 02291000
  2292. DS 0H ALIGNMENT @V305096 02292000
  2293. LTORG , @V305096 02293000
  2294. EJECT 02294000
  2295. * 02295000
  2296. ** TABLE TO PROVIDE ADDRESSABILITY FOR MESSAGES 02296000
  2297. * 02297000
  2298. DS 0F @V305096 02298000
  2299. AMSGTAB EQU * @V305096 02299000
  2300. AMSG02 DC YL1(L'MSG02-DEC1) LENGTH OF MESSAGE MIN 1 @V305096 02300000
  2301. DC AL3(MSG02) ADDRESS OF ERROR MESSAGE@V305096 02301000
  2302. AMSG16 DC YL1(L'MSG16-DEC1) LENGTH OF MESSAGE MIN 1 @V305096 02302000
  2303. DC AL3(MSG16) ADDRESS OF ERROR MESSAGE@V305096 02303000
  2304. AMSG44 DC YL1(L'MSG44-DEC1) LENGTH OF MESSAGE MIN 1 @V305096 02304000
  2305. DC AL3(MSG44) ADDRESS OF ERROR MESSAGE@V305096 02305000
  2306. AMSG50 DC YL1(L'MSG50-DEC1) LENGTH OF MESSAGE MIN 1 @V305096 02306000
  2307. DC AL3(MSG50) ADDRESS OF ERROR MESSAGE@V305096 02307000
  2308. AMSG70 DC YL1(L'MSG70-DEC1) LENGTH OF MESSAGE MIN 1 @V305096 02308000
  2309. DC AL3(MSG70) ADDRESS OF ERROR MESSAGE@V305096 02309000
  2310. AMSG94 DC YL1(L'MSG94-DEC1) LENGTH OF MESSAGE MIN 1 @V305096 02310000
  2311. DC AL3(MSG94) ADDRESS OF ERROR MESSAGE@V305096 02311000
  2312. AMSG97 DC YL1(L'MSG97-DEC1) LENGTH OF MESSAGE MIN 1 @V305096 02312000
  2313. DC AL3(MSG97) ADDRESS OF ERROR MESSAGE@V305096 02313000
  2314. REETEXT DC AL4(MSGRDER) ADDRESS OF ERROR MESSAGE @V305065 02314000
  2315. WRETEXT DC AL4(MSGWRER) ADDRESS OF ERROR MESSAGE @V305065 02315000
  2316. AMSGCNT EQU (*-AMSGTAB)/4 NUMBER OF ENTRIES @V305096 02316000
  2317. EJECT 1 02317000
  2318. ************************************************************ 02318000
  2319. * 02319000
  2320. * INPUT I/O AREA 02320000
  2321. * 02321000
  2322. ************************************************************ 02322000
  2323. * 02323000
  2324. * WARNING WARNING WARNING WARNING WARNING WARNING WARNING 02324000
  2325. * 02325000
  2326. * IF THE LABEL 'PREFIX' COMPILES BEYOND X'FE6', ADDRESSABILITY 02326000
  2327. * ERRORS ARE PROBABLE 02327000
  2328. * 02328000
  2329. CNOP 2,4 @V305065 02329000
  2330. PREFIX DS 2C @V305065 02330000
  2331. INPBLK DS 80C ONE RECORD(80) FROM DOSLNK OR@V305065 02331000
  2332. DS 80C ONE RELOC DICT BLK(320) CMS @V305096 02332000
  2333. DS 80C @V305065 02333000
  2334. DS 80C @V305065 02334000
  2335. EJECT 1 02335000
  2336. ************************************************************** 02336000
  2337. * 02337000
  2338. * ERROR MESSAGES 02338000
  2339. * 02339000
  2340. MSG00 DC C'2100I INVALID INPUT CARD TYPE' @V305096 02340000
  2341. MSG01 DC C'2101I INVALID OPERATION IN CONTROL STATEMENT' @V305096 02341000
  2342. MSG02 DC C'2102I INVALID DECIMAL OR HEXADECIMAL FIELD' @V305096 02342000
  2343. MSG10 DC C'2110I INVALID OR MISSING DELIMITER' @V305096 02343000
  2344. MSG11 DC C'2111I LENGTH OF A OPERAND GREATER THAN EIGHT' @V305096 02344000
  2345. MSG12 DC C'2112I OPERAND FIELD MISSING' @V305096 02345000
  2346. MSG13 DC C'2113I STATEMENT EXTENDS BEYOND LIMIT' @V305096 02346000
  2347. MSG14 DC C'2114I SUBMODULAR NAMELIST TOO LONG' @V305096 02347000
  2348. MSG16 DC C'2116I CONTROL STATEMENT IN OBJECT MODULE' @V305096 02348000
  2349. MSG20 DC C'2120I DUPLICATE PHASE NAME' @V305096 02349000
  2350. MSG21 DC C'2121I PHASE NAME INVALID' @V305096 02350000
  2351. MSG22 DC C'2122I ORIGIN IN PHASE CARD NOT PREVIOUSLY DEFINED' *02351000
  2352. 02352000
  2353. MSG23 DC C'2123I PREVIOUS PHASE WITHOUT VALID STORAGE ASSIGNMENT'*02353000
  2354. 02354000
  2355. MSG24 DC C'2124I PHASE ORIGIN NEGATIVE' @V305096 02355000
  2356. MSG25 DC C'2125I PHASE STATEMENT IN AUTOLINKED MODULE' @V305096 02356000
  2357. MSG31 DC C'2131I MODULE NOT FOUND' @V305096 02357000
  2358. MSG32 DC C'2132I MORE THAN 5 LEVELS OF NESTED INCLUDES' @V305096 02358000
  2359. MSG33 DC C'2133I NESTED SUBMODULAR INCLUDE' @V305096 02359000
  2360. MSG35 DC C'2135I INVALID OPERAND IN ACTION STATEMENT' @V305096 02360000
  2361. MSG40 DC C'2140I INVALID ESD TYPE' @V305096 02361000
  2362. MSG41 DC C'2141I DUPLICATE ESID NUMBER' @V305096 02362000
  2363. MSG42 DC C'2142I ENTRY POINT NOT IN CSECT OR COMMON' @V305096 02363000
  2364. MSG43 DC C'2143I DUPLICATE ENTRY POINT LABEL' @V305096 02364000
  2365. MSG44 DC C'2144I INVALID ESID NUMBER OR CONTROL DICTIONARY OR LIN*02365000
  2366. KAGE TABLE OVERFLOW' @V305096 02366000
  2367. MSG45 DC C'2145I CSECT ORIGIN NOT ON DOUBLEWORD BOUNDARY' *02367000
  2368. 02368000
  2369. MSG46 DC C'2146I COMMON HAS SAME LABEL AS ENTRY POINT' @V305096 02369000
  2370. MSG47 DC C'2147I ENTRY POINT LABEL NOT IN DEFINED CSECT' @V305096 02370000
  2371. MSG50 DC C'2150I ASSEMBLED ORIGIN LOWER THAN START OF CSECT' *02371000
  2372. 02372000
  2373. MSG51 DC C'2151I INVALID DELIMITER' @V305096 02373000
  2374. MSG55 DC C'2155I ESID NUMBER DOES NOT POINT TO CSECT' @V305096 02374000
  2375. MSG56 DC C'2156I INVALID FORMAT OF RLD CARD' @V305096 02375000
  2376. MSG58 DC C'2158I NO CSECT LENGTH SUPPLIED' @V305096 02376000
  2377. MSG61 DC C'2161I INVALID OPTION OPERAND IN PHASE STATEMENT' *02377000
  2378. 02378000
  2379. MSG70 DC C'2170I ESID NUMBER NOT PREVIOUSLY PROCESSED' @V305096 02379000
  2380. MSG81 DC C'2181I NO VALID STORAGE ASSIGNMENT IN FINAL PHASE' *02380000
  2381. 02381000
  2382. MSG82 DC C'2182I NO END CARD BEFORE ENTRY STATEMENT' @V305096 02382000
  2383. MSG94 DC C'2194I INVALID NO RECORD FOUND CONDITION' @V305096 02383000
  2384. MSG97 DC C'2197I END OF FILE RECORD FOUND' @V305096 02384000
  2385. MSG99 DC C'2199I ERROR HAS OCCURRED DURING LINKAGE EDITING' *02385000
  2386. 02386000
  2387. * 02387000
  2388. MSGRDER DC AL1(L'MSGRD) @VA15210 02388000
  2389. MSGRD DC C'ERROR ''..'' READING FILE ''....................'' ON X02388500
  2390. DISK' @V305065 02389000
  2391. MSGWRER DC AL1(L'MSGWR) @VA15210 02390000
  2392. MSGWR DC C'ERROR ''..'' WRITING FILE ''....................'' ON X02390500
  2393. DISK' @V305065 02391000
  2394. TITLE 'DLKESD LINKAGE EDITOR PROCESS ESD''S - $LNKEDT - DOS' 02392000
  2395. *************************************************************** 02393000
  2396. * 02394000
  2397. * CSECT DLKESD - ESD PROCESSOR * 02395000
  2398. * * 02396000
  2399. *ENTRY POINTS - DLKESD - PROCESSES SD, LD, ER, PC, AND CM ITEMS * 02397000
  2400. * UPDATES CONTROL DICTIONARY * 02398000
  2401. * * 02399000
  2402. *INPUT - FROM RDNEXT IN DMSDLK 02400000
  2403. * * 02401000
  2404. *OUTPUT - N/A * 02402000
  2405. * * 02403000
  2406. *EXTERNAL ROUTINES - SEE LIST OF SUBROUTINES IN DMSDLK 02404000
  2407. * * 02405000
  2408. *EXITS-NORMAL -- TO RDNEXT IN DMSDLK TO READ NEXT CARD * 02406000
  2409. * -ERROR - ERROR MSG NOS. RESULTING FROM THIS CSECT ARE 2140 - * 02407000
  2410. * 2141-2142-2143-2145-2146 * 02408000
  2411. * * 02409000
  2412. *TABLES/WORK AREAS - EXPLAINED IN COMMENTS OF CSECT DMSDLK 02410000
  2413. * * 02411000
  2414. *ATTRIBUTES - N/A * 02412000
  2415. * * 02413000
  2416. *********************************************************************** 02414000
  2417. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02415000
  2418. * 02416000
  2419. * ESD PROCESSOR 02417000
  2420. * 02418000
  2421. DLKESD CSECT ESD PROCESSOR @V305096 02419000
  2422. USING *,RD @V305096 02420000
  2423. * 02421000
  2424. CLI PHSNO,X'FF' CREATE A DUMMY PHASE CARD, IF NO @V305096 02422000
  2425. BNE ESD1ST PHASE CARD PROCESSED UP TO NOW @V305096 02423000
  2426. * 02424000
  2427. MVC DMPHSW+2(2),DMPHSW+4 FORCE TRUE ESD ADDR RETAINE@V305096 02425000
  2428. * WHEN DUMMY PHASE CARD PROCESSED NO 02426000
  2429. * ACTUAL READING IS DONE OF THE ESD 02427000
  2430. * RECORD WHICH IS CURRENTLY IN CORE, 02428000
  2431. * SO IT IS NECESSARY TO CANCEL THE 02429000
  2432. * INSTRUCTION THAT SETS UP ESD ADRESS 02430000
  2433. * IN RDNEXT SO THAT CURRENT ESD ADRESS 02431000
  2434. * CAN BE RETAINED FOR CONTROL 02432000
  2435. OI RDS000+1,X'F0' SET TO IGNORE NEXT READ @V305096 02433000
  2436. MVC PHVERB(18),DUMYPH MOVE IN VERB,PHASE NAME,ORIGIN@V305096 02434000
  2437. MVC PHVERB+8(8),DOSLNK+8 MOVE IN DEFAULT NAME @V305065 02435000
  2438. MVC SYMBOL+2(13),SYMBOL+1 CLR SYMBL & QUALIF FIELDS @V305096 02436000
  2439. MVC SYMBOL(2),KS INDICATE S OPTION @V305065 02437000
  2440. XC DISPLC(4),DISPLC RESET DISPLACEMENT TO ZERO @V305096 02438000
  2441. NI POPTSW,X'0F' RESET OPTION SW @V305096 02439000
  2442. LA R1,IPTMTX NOW PROCESS AS ANY NORMAL @V305096 02440000
  2443. B EXLOAD PH ASE CARD @V305096 02441000
  2444. * 02442000
  2445. ESD1ST EQU * @V305096 02443000
  2446. TM MODSTS,HEX1 CHECK IF ALREADY @V305096 02444000
  2447. BO ESDNXT STARTED THE MODULE @V305096 02445000
  2448. * 02446000
  2449. OI MODSTS,X'01' SET MODULE STATUS SWITCH ON @V305096 02447000
  2450. MVC DMPHSW+2(2),*+10 RESET ESD INPUT ADDR SWITCH @V305096 02448000
  2451. MVC ESDN00,COMNRF SAVE ADDR OF 1ST ESD RECORD @V305096 02449000
  2452. TM PERISW,HEX1 IF ON DOSLNK SAVE ADDR OF 1ST@V305096 02450000
  2453. BZ ESDNXT @V305096 02451000
  2454. MVC ESD000,COMNRF ESD RECORD IN RESERVED BUCKET@V305096 02452000
  2455. * 02453000
  2456. CLC COMNRF(2),NDS000 IF ESD FOLLOWS AFTER END @V305096 02454000
  2457. BNE ESDNXT THEN THE NE_ ESD ADDR MUST BE@V305096 02455000
  2458. MVC PERIDA,COMNRF @V305096 02456000
  2459. * 02457000
  2460. ESDNXT EX 0,CHKSYM BYPASS ALL SYM CARDS @V305096 02458000
  2461. BE RDNEXT @V305096 02459000
  2462. * 02460000
  2463. LA R6,E1 INIT SCAN OF NEW CARD AT E17-16 @V305096 02461000
  2464. LH R5,E15 RETAIN ESID NO @V305096 02462000
  2465. * 02463000
  2466. ESDRET LH R2,E11 IF END OF CARD, GO READ ANOTHER @V305096 02464000
  2467. SH R2,K16 @V305096 02465000
  2468. BM RDNEXT @V305096 02466000
  2469. STH R2,E11 @V305096 02467000
  2470. LA R6,16(R6) SCAN TO NEXT ITEM @V305096 02468000
  2471. * 02469000
  2472. NI D25,X'0F' FORCE BINARY @V305096 02470000
  2473. * 02471000
  2474. **************************************************************** 02472000
  2475. ** BUILD CURRENT C/D ENTRY FROM INPUT ESD ITEM 02473000
  2476. ***************************************************************** 02474000
  2477. * 02475000
  2478. SR R8,R8 CLEAR PHNUM ,RELFAC @V305096 02476000
  2479. ST R8,RELFAC @V305096 02477000
  2480. ST R8,PHNUM AND CSWITCH @V305096 02478000
  2481. MVC NAME,D17 MOVE ESD INFORM @V305096 02479000
  2482. MVC ESDTYP,D25 @V305096 02480000
  2483. MVC ASSORG,D26 @V305096 02481000
  2484. CLI ESDTYP,CM IF COMMON MOVE LENGTH @V305096 02482000
  2485. BE COMMON TO C/D @V305096 02483000
  2486. CLI ESDTYP,WX IS THIS A WXTRN @V305096 02484000
  2487. BNE COMPVAL NO , BRANCH @V305096 02485000
  2488. MVI ESDTYP,ER SET ESD TYPE ER @V305096 02486000
  2489. OI CSWITCH,NOAUTOL+WXTRN @V305096 02487000
  2490. B CNWEXT CANCEL AUTOLINK @V305096 02488000
  2491. COMMON MVC LNGTH,D30 @V305096 02489000
  2492. B ESLBCD GO TO PROCESS ESD @V305096 02490000
  2493. COMPVAL CLI ESDTYP,HEX5 TEST FOR VALID @V305096 02491000
  2494. BH ERR040 INPUT TYPES @V305096 02492000
  2495. CLI ESDTYP,HEX3 @V305096 02493000
  2496. BE ERR040 @V305096 02494000
  2497. * 02495000
  2498. *** CONVERT ESID # ON LD-S, CONVERT ESD TYPE TO C/D FORMAT 02496000
  2499. * 02497000
  2500. CLI ESDTYP,LD @V305096 02498000
  2501. * IF NOT A LD CONTINUE PROCESSING 02499000
  2502. BNE ENLD OTHER TYPES @V305096 02500000
  2503. * 02501000
  2504. MVC CSNUM(DEC2),D31 SET CONTROL SECTION NUM @V305096 02502000
  2505. OI CSWITCH,UNASSG UNASSIGN THE LD @V305096 02503000
  2506. LH R8,CSNUM CONVERT ESID NO @V305096 02504000
  2507. BAL RF,LTESID TO C/D NO @V305096 02505000
  2508. * 02506000
  2509. B ESLBCD DONT ASSGN LD IF SD ¬ YET PROC-D @V305096 02507000
  2510. * 02508000
  2511. B ESDRET IGNORE LD IF ESID # TO BE BYPASSE@V305096 02509000
  2512. * 02510000
  2513. NI CSWITCH,ASSG ASSIGN THE LD @V305096 02511000
  2514. STH R8,CSNUM STORE C/D NO @V305096 02512000
  2515. * 02513000
  2516. CLI ESDTYPD,SD IF THE ESD ITEM @V305096 02514000
  2517. BE ESLBCD POINTED TO BY THE @V305096 02515000
  2518. CLI ESDTYPD,CM INPUT LD IS NOT @V305096 02516000
  2519. L RB,AMSG42 A CSECT OR A COMMON @V305096 02517000
  2520. BNE ERROR IT IS AN @V305096 02518000
  2521. B ESLBCD ERROR @V305096 02519000
  2522. * 02520000
  2523. *** PRE-PROCESS ER FOR AUTOLINK 02521000
  2524. * 02522000
  2525. ENLD CLI ESDTYP,ER IF NOT ER GO TRY @V305096 02523000
  2526. BNE PRSDPC SD/PC @V305096 02524000
  2527. TM ALNKSW,X'01' IF NOAUTO REQUESTED ON THIS PHASE@V305096 02525000
  2528. BZ *+8 CANCEL ER-S BEFORE REQUEST @V305096 02526000
  2529. CNCALK OI CSWITCH,NOAUTOL @V305096 02527000
  2530. CNWEXT MVC PHNUME,PHSNO MOVE PHASE NO TO C/D @V305096 02528000
  2531. B ESLBCD GO TO PROCESS ESD @V305096 02529000
  2532. * 02530000
  2533. *** PRE-PROCESS SD/PC 02531000
  2534. * 02532000
  2535. PRSDPC CLI ESDTYP,SD IF NOT SD/PC CONT @V305096 02533000
  2536. BE SDPC OTHER TYPES @V305096 02534000
  2537. CLI ESDTYP,PC @V305096 02535000
  2538. BNE ESLBCD ... @V305096 02536000
  2539. * 02537000
  2540. SDPC EQU * @V305096 02538000
  2541. TM ASSORG+2,HEX7 IF ASSEMBLED ORIGIN @V305096 02539000
  2542. L RB,AMSG45 NOT ALIGNED ON @V305096 02540000
  2543. BNE ERROR DBLWD BOUNDARY, IT IS AN ERROR @V305096 02541000
  2544. * 02542000
  2545. MVC PHNUM,PHSNO @V305096 02543000
  2546. * 02544000
  2547. CLI NMELST,C' ' IF NOT IN SUB-MOD STATUS BYPASS @V305096 02545000
  2548. BE EISDPC SUB-MODULAR TEST @V305096 02546000
  2549. * 02547000
  2550. LA R2,05 SET UP TO SCAN SUB-MODULAR TABLE @V305096 02548000
  2551. LA R3,NMELST @V305096 02549000
  2552. * 02550000
  2553. ESDSBM CLC NAME,DEC0(R3) IF SD LABEL IS IN @V305096 02551000
  2554. * NAME LIST TABLE 02552000
  2555. BE EISDPC CARRY ON TO PROCESS IT @V305096 02553000
  2556. LA R3,8(R3) @V305096 02554000
  2557. BCT R2,ESDSBM ELSE,BYPASS THIS SD BUT FLAG ITIN@V305096 02555000
  2558. NI EUPDSW+1,X'0F' SET SW TO FLAG AS BYPASS SD @V305096 02556000
  2559. MVI ESDTYP,ER MAKE ER & CANCEL @V305096 02557000
  2560. B CNCALK AUTOLINK ON THIS SD,NOW AN ER @V305096 02558000
  2561. * 02559000
  2562. EISDPC MVC CSLNTH+1(3),D30 SAVE C/S LGTH TO UPDT PHASE HIGH@V305096 02560000
  2563. MVC BUCK3(DEC3),ASSORG SET UP ASSEMBLED @V305096 02561000
  2564. * ORIGIN FOR CALC R/F 02562000
  2565. L R3,NXPHRG ALIGN NEXT POSS PHASE ORIGIN@V305096 02563000
  2566. * ALIGN 02564000
  2567. LA R3,DEC7(R3) ALIGN TO @V305096 02565000
  2568. SRL R3,DEC3 DOUBLEWORD @V305096 02566000
  2569. SLL R3,DEC3 BOUNDARY @V305096 02567000
  2570. * 02568000
  2571. ST R3,NXPHRG @V305096 02569000
  2572. * 02570000
  2573. S R3,BUCK4 R/F = NEXT POSS PHASE ORIGIN@V305096 02571000
  2574. * MINUS ASSEMBLED ORIGIN 02572000
  2575. ST R3,RELFAC @V305096 02573000
  2576. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02574000
  2577. * 02575000
  2578. * PROCESS ESD ITEMS AGAINST C/D 02576000
  2579. * 02577000
  2580. ESLBCD BAL RF,SRCHCD MULT RETN ON C/D DUP NAME SEARCH @V305096 02578000
  2581. * 02579000
  2582. B ELBNCD RETURN IF LABEL NOT YET IN C/D @V305096 02580000
  2583. * 02581000
  2584. TM ESDTYPD,PH IF MATCH WITH PHASE, IGN@V305096 02582000
  2585. BO SRPCOD AND CONTINUE SEARCH @V305096 02583000
  2586. * 02584000
  2587. *** PROCESS PC - PRIVATE CODE 02585000
  2588. * 02586000
  2589. CLI ESDTYP,PC IF PC TREAT AS @V305096 02587000
  2590. BNE ELBCM IF LABEL HAS NOT @V305096 02588000
  2591. * OCCURED IN C/D 02589000
  2592. CLI D17,C' ' ENSURE PC IS UNNAMED @V305096 02590000
  2593. BE ELBNCD @V305096 02591000
  2594. ERR040 L RB,AMSG40 INVALID ESD TYPE @V305096 02592000
  2595. B ERROR @V305096 02593000
  2596. * 02594000
  2597. *** PROCESS CM - COMMON 02595000
  2598. * 02596000
  2599. ELBCM CLI ESDTYP,CM IF ESD NOT CM, TRY ER @V305096 02597000
  2600. BNE ELBER @V305096 02598000
  2601. * 02599000
  2602. CLI ESDTYPD,PC IS IT PRIVATE CODE @V305096 02600000
  2603. BE SRPCOD YES, BYPASS ENTRY @V305096 02601000
  2604. * 02602000
  2605. CLI ESDTYPD,CM IS IT A COMMON @V305096 02603000
  2606. BNE ELBCER NO, TRY ER @V305096 02604000
  2607. * 02605000
  2608. CLC LNGTHD(DEC3),LNGTH CARRY LONGEST LENGTH @V305096 02606000
  2609. BH EUPDLT IN C/D, UPDATE L/T @V305096 02607000
  2610. MVC LNGTHD(DEC3),LNGTH @V305096 02608000
  2611. B EUPDLT @V305096 02609000
  2612. * 02610000
  2613. ELBCER CLI ESDTYPD,ER IF DUPLCTE ER, OVERRIDE @V305096 02611000
  2614. BE ELBINT IT WITH INPUT CM @V305096 02612000
  2615. CLI ESDTYPD,SD IF SD, UPDATE L/T @V305096 02613000
  2616. BE EUPTRY OTHERWISE LABEL IS SAME @V305096 02614000
  2617. ERR046 L RB,AMSG46 AS LD @V305096 02615000
  2618. B ERROR WHICH IS ILLEGAL @V305096 02616000
  2619. * 02617000
  2620. *** PROCESS ER - EXTERNAL REFERENCE 02618000
  2621. * 02619000
  2622. ELBER CLI ESDTYP,ER IF ESD NOT ER, TRY SD @V305096 02620000
  2623. BNE ELBSD @V305096 02621000
  2624. * 02622000
  2625. TM SWITCHD,UNASSG DO NOT ACCEPT @V305096 02623000
  2626. BO SRPCOD UNASSIGNED SYMBOLS @V305096 02624000
  2627. * 02625000
  2628. CLI ESDTYPD,ER IF ER, @V305096 02626000
  2629. BE ELBISITW CHECK FOR A WXTRN @V305096 02627000
  2630. CLI ESDTYPD,CM IF CM UPDATE L/T @V305096 02628000
  2631. BE EUPDLT @V305096 02629000
  2632. * 02630000
  2633. CLC KIJ,NAME IF NOT 'IJ' @V305096 02631000
  2634. BE PRIVILEG @V305096 02632000
  2635. CLC KIBM,NAME NOR 'IBM' PREFIX @V305096 02633000
  2636. BNE ELBELR FORCE LR ON LD @V305096 02634000
  2637. * 02635000
  2638. PRIVILEG EQU * @V305096 02636000
  2639. TM ALNKSW,X'01' IF NOAUTO REQUESTED ON THIS @V305096 02637000
  2640. BO ELBELR YES, ACCEPT CROSS REF @V305096 02638000
  2641. * 02639000
  2642. BAL RE,XTPHNO EXTRACT PHASE # OF CURRENT C/D @V305096 02640000
  2643. * 02641000
  2644. CH R2,PHSNO IF SAME PHASE # @V305096 02642000
  2645. BE ELBELR AS CURRENT ACCEPT @V305096 02643000
  2646. * CROSS-REFERENCE 02644000
  2647. CLC KIBM,NAME IF 'SUPER-PRIVILEGED' @V305096 02645000
  2648. BE ELBNCD ADD TO C/D EVEN IF @V305096 02646000
  2649. * ROOTPHASE COULD RESOLVE IT 02647000
  2650. CH R2,K1 IF NOT PRES IN ROOT PHASE ADD IT @V305096 02648000
  2651. BNE ELBNCD TO BE AUTOLINKED @V305096 02649000
  2652. * 02650000
  2653. * 02651000
  2654. ELBELR CLI ESDTYPD,LD IS DUPLICATE LD @V305096 02652000
  2655. BNE EUPDLT NO, UPDATE L/T @V305096 02653000
  2656. * 02654000
  2657. OI ESDTYPD,LR FORCE LR & UPD L/T @V305096 02655000
  2658. B EUPDLT @V305096 02656000
  2659. * 02657000
  2660. ELBISITW CLC PHNUMED,PHNUME @V305096 02658000
  2661. * IF NOT EQUAL, THIS PHASES 02659000
  2662. BNE ELBINT ER REPLACES PREVIOUS ONE IN @V305096 02660000
  2663. * CONTROL DICTIONARY (AUTOLINK) 02661000
  2664. TM CSWITCH,NOAUTOL IF NOT A WXTRN OR @V305096 02662000
  2665. BO EUPDLT NO AUTO, REPLACE ER IN C/D @V305096 02663000
  2666. B ELBINT @V305096 02664000
  2667. * 02665000
  2668. *** PROCESS SD - SECTION DEFINITION 02666000
  2669. * 02667000
  2670. ELBSD EQU * @V305096 02668000
  2671. * 02669000
  2672. CLI ESDTYP,SD IF ESD NOT SD, TRY LD @V305096 02670000
  2673. BNE ELBLD @V305096 02671000
  2674. * 02672000
  2675. CLI ESDTYPD,CM IF CM INSERT @V305096 02673000
  2676. BE ELBINT ... SD IMMEDIATELY @V305096 02674000
  2677. * 02675000
  2678. CLI ESDTYPD,ER IF DUPLICATE ER @V305096 02676000
  2679. BE ECHKIBM TEST FOR PRIVILEGED @V305096 02677000
  2680. * 02678000
  2681. CLI ESDTYPD,SD IF SD GO TO TEST @V305096 02679000
  2682. BE ELBDSD DUPLICATION @V305096 02680000
  2683. * 02681000
  2684. TM SWITCHD,UNASSG @V305096 02682000
  2685. * IF LD/LR HAS BEEN ASSIGNED IT MUST 02683000
  2686. BZ ERR043 BELONG TO A PREV'LY PROC'D SD @V305096 02684000
  2687. * 02685000
  2688. CH R5,CSNUMD @V305096 02686000
  2689. * IF ESID NO MATCHES THE SD-S ESID AND THE ASSEMBLED 02687000
  2690. BNE ERR043 ORIGIN IS THE SAME @V305096 02688000
  2691. * THEN THIS MUST BE A CSECT PREVIOUSLY 02689000
  2692. CLC ASSORG,ASSORGD @V305096 02690000
  2693. BNE ERR043 DEFINED AS ENTRY IN ASSEMBLY @V305096 02691000
  2694. B ELBINT @V305096 02692000
  2695. * 02693000
  2696. ELBDSD BAL RE,XTPHNO EXTRACT PHASE # OF THIS SD @V305096 02694000
  2697. * 02695000
  2698. CH R2,PHSNO IF PREVIOUSLY PROCESSED @V305096 02696000
  2699. BE ELBGSD IN THIS PH IGNORE IT @V305096 02697000
  2700. * 02698000
  2701. CLC KIBM,NAME IF 'SUPER-PRIVILEGED' @V305096 02699000
  2702. BE ELBNCD ADD IT TO CURRENT PHASE, @V305096 02700000
  2703. * EVEN IF ALREADY IN ROOTPHSE 02701000
  2704. CH R2,K1 IF NOT PRESENT IN ROOT PHASE ADD @V305096 02702000
  2705. BNE ELBNCD THIS SD TO CURRENT PHASE @V305096 02703000
  2706. * 02704000
  2707. * SET NEG C/D # AS A SWITCH IN L/T 02705000
  2708. ELBGSD LNR R8,R8 TO BYPASS ALL FUTURE ESID # @V305096 02706000
  2709. B EUPDLT @V305096 02707000
  2710. * 02708000
  2711. *** PROCESS LD - LABEL DEFINITION 02709000
  2712. * 02710000
  2713. ELBLD MVI ESDTYP,LR FORCE LD TO LR @V305096 02711000
  2714. * 02712000
  2715. CLI ESDTYPD,CM CM HAS SAME LABEL @V305096 02713000
  2716. BE ERR046 AS LD @V305096 02714000
  2717. CLI ESDTYPD,ER IF DUPLICATE ER @V305096 02715000
  2718. BE ECHKIBM TEST FOR PRIVILEGED @V305096 02716000
  2719. * 02717000
  2720. TM SWITCHD,UNASSG IF C/D ENTRY ASS @V305096 02718000
  2721. BNO ELBNLR PROCESS FURTHER @V305096 02719000
  2722. * 02720000
  2723. OI DPNTSW,X'01' SET POSS DUP ENTRY SWITCH @V305096 02721000
  2724. NC ESDTYP(DEC1),ESDTYPD RETAIN TYPE AND @V305096 02722000
  2725. B ELBINT INSERT ESD IN C/D @V305096 02723000
  2726. * 02724000
  2727. ELBNLR MVI ESDTYP,LD RESET LR TO LD @V305096 02725000
  2728. * 02726000
  2729. CLC ASSORG,ASSORGD IF NOT EQUAL IT @V305096 02727000
  2730. BNE ERR043 MUST BE AN ERROR @V305096 02728000
  2731. * 02729000
  2732. TM CSWITCH,UNASSG @V305096 02730000
  2733. * IF ESD LD NOT ASSIGNED YET, CANNOT 02731000
  2734. BO ELBNAS VALIDITY TEST ON ESID C/D # PTRS @V305096 02732000
  2735. * 02733000
  2736. CLI ESDTYPD,LD IF LD/LR CHECK IF @V305096 02734000
  2737. BE ELBLDR C/D NO'S AGREE AND @V305096 02735000
  2738. CLI ESDTYPD,LR IF THE NAMES OF THE @V305096 02736000
  2739. BE ELBLDR LABELS AGREE @V305096 02737000
  2740. * 02738000
  2741. CH R8,CSNUM IF C/D NO POINTER @V305096 02739000
  2742. * IN LD NOT SAME AS 02740000
  2743. BE ESDRET C/D # OF SD IT MUST BE AN ERROR @V305096 02741000
  2744. ERR043 EQU * @V305096 02742000
  2745. CLC KIBM,NAMED IF SUPER PRIVILEGED @V305096 02743000
  2746. BNE ERR043F THIS MIGHT BE NO ERROR @V305096 02744000
  2747. BAL RE,XTPHNO EXTRACT PHASE # OF C/D @V305096 02745000
  2748. CH R2,PHSNO IF MATCH NOT @V305096 02746000
  2749. * IN THIS PHASE 02747000
  2750. BNE ELBNCD ACCEPT FOR THIS PHASE @V305096 02748000
  2751. ERR043F L RB,AMSG43 LD DUPLICATED @V305096 02749000
  2752. B ERROR @V305096 02750000
  2753. * 02751000
  2754. ELBLDR LR R1,R9 SAVE ADDRESS OF C/D ENTRY @V305096 02752000
  2755. * 02753000
  2756. LH R9,CSNUMD GET SD FOR THE LD @V305096 02754000
  2757. * 02755000
  2758. CH R9,CSNUM BUT IF ESD-S C/D NO @V305096 02756000
  2759. * MATCHES C/D NO OF C/D 02757000
  2760. BE ESDRET # IT IS EXACT DUP SO IGNORE IT @V305096 02758000
  2761. * 02759000
  2762. LA RF,* @V305096 02760000
  2763. B LTCDAD @V305096 02761000
  2764. LR R2,R9 RETAIN IN WORK REGISTER @V305096 02762000
  2765. * 02763000
  2766. LH R9,CSNUM GET C/D SD THE ESD @V305096 02764000
  2767. LA RF,* LD BELONGS TO @V305096 02765000
  2768. B LTCDAD @V305096 02766000
  2769. * 02767000
  2770. CLC NAMED(DEC8),DEC0(R2) @V305096 02768000
  2771. * C/D LD ARE DIFFERENT IT IS AN ERROR 02769000
  2772. LR R9,R1 RESTORE ADDRESS OF C/D ENTRY@V305096 02770000
  2773. BNE ERR043 @V305096 02771000
  2774. * 02772000
  2775. ELBNAS BAL RE,XTPHNO EXTRACT PHASE # OF CURRENT C/D @V305096 02773000
  2776. * 02774000
  2777. CH R2,PHSNO IF MATCHING C/D ENTRY @V305096 02775000
  2778. * NOT IN CURRENT 02776000
  2779. BNE ELBNCD PHASE ACCEPT FOR THIS PHASE @V305096 02777000
  2780. * 02778000
  2781. OI DPNTSW,X'01' SET POSS DUP ENTRY SWITCH @V305096 02779000
  2782. B ESDRET IGNORE THIS LD @V305096 02780000
  2783. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02781000
  2784. * 02782000
  2785. * ESD-S HAVE BEEN PROCESSED AGAINST C/D 02783000
  2786. * 02784000
  2787. ELBNCD LM R8,R9,CTLDNO ADD AN ENTRY TO C/D BY UPDATING @V305096 02785000
  2788. TM ESDTYPD,PH LAST ENTRY PHASE @V305096 02786000
  2789. LA R8,1(R8) POSSIBLE ENTRY @V305096 02787000
  2790. LA R9,CDLNGTH(R9) ADD LNGTH OF ONE ENTRY @V305096 02788000
  2791. BNO CONT NO, CONTINUE @V305096 02789000
  2792. LA R8,DEC1(R8) @V305096 02790000
  2793. LA R9,CDLNGTH(R9) @V305096 02791000
  2794. CONT EQU * @V305096 02792000
  2795. * A PHASE ENTRY OCCUPIES TWO NORMAL ENTRIES 02793000
  2796. STM R8,R9,CTLDNO @V305096 02794000
  2797. BAL RE,CDSIZE TEST FOR C/D OVERFLOW @V305096 02795000
  2798. * 02796000
  2799. ** MOVE CURRENT ESD ENTRY TO C/D 02797000
  2800. * 02798000
  2801. ELBINT MVC CDENTRY(CDLNGTH),CESDENT @V305096 02799000
  2802. * 02800000
  2803. EUPDLT CLI ESDTYP,LD IF INPUT ESD ITEM @V305096 02801000
  2804. BE EUPDXT IS OF TYPE LD OR @V305096 02802000
  2805. CLI ESDTYP,LR LR DO NOT UPDATE @V305096 02803000
  2806. BE EUPDXT THE L/T @V305096 02804000
  2807. * 02805000
  2808. EUPTRY LR R2,R8 SAVE C/D # TO USE TO UPDATE L/T @V305096 02806000
  2809. LR R8,R5 SET UP ESID # TO MAKE ENTRY AT @V305096 02807000
  2810. BAL RF,LTESID MULTIPLE RETURN POINTS @V305096 02808000
  2811. * 02809000
  2812. B EUPDOK ESID NOT YET PROC'D SO MAKE ENTRY@V305096 02810000
  2813. * 02811000
  2814. NOP 0 IF ESID #-S SLOT IN L/T HAS BEEN @V305096 02812000
  2815. * PREVIOUSLY UPDATED, THIS SUGGEST 02813000
  2816. L RB,AMSG41 DUPLICATED ESID # @V305096 02814000
  2817. B ERROR LAST MODULE HAD NO END CARD @V305096 02815000
  2818. * 02816000
  2819. EUPDOK MVC ESDTYPL(DEC1,R7),ESDTYP PUT ESD TYPE IN L/T @V305096 02817000
  2820. * 02818000
  2821. EUPDSW B EUPDCN SWITCH SET WHEN SD TO BE BYPASSED@V305096 02819000
  2822. MVI ESDTYPL(R7),SD SET ER BACK TO SD @V305096 02820000
  2823. LNR R2,R2 FLAG C/D # AS NEGATIVE @V305096 02821000
  2824. OI EUPDSW+1,X'F0' RESET SW TO NORMAL STATUS @V305096 02822000
  2825. * 02823000
  2826. EUPDCN STH R2,DEC0(R7) STORE C/D # IN L/T @V305096 02824000
  2827. LA R5,1(R5) UPDATE ESID # COUNT ON THIS CARD @V305096 02825000
  2828. * 02826000
  2829. EUPDXT EQU * @V305096 02827000
  2830. LTR R2,R2 IF THIS SD TO BE IGNORED GO GET @V305096 02828000
  2831. BM ESCNCD SCAN ON C/D @V305096 02829000
  2832. * 02830000
  2833. CLI ESDTYP,SD IS INPUT SD @V305096 02831000
  2834. BE ADDLEN YES, CALC NXPHRG @V305096 02832000
  2835. CLI ESDTYP,PC IS INPUT PC @V305096 02833000
  2836. BNE ESDRET NO, GET NEXT ESD @V305096 02834000
  2837. * 02835000
  2838. *** ADD LENGTH OF THIS SD/PC IN PROCESS TO CURRENT PHASE 02836000
  2839. * 02837000
  2840. ADDLEN EQU * @V305096 02838000
  2841. TM DERDSW+1,X'20' C/S LGTH NOT YET REC'D FROM @V305096 02839000
  2842. BNE *+8 @V305096 02840000
  2843. OI DPNTSW,X'02' @V305096 02841000
  2844. * 02842000
  2845. NI DERDSW+1,255-X'20' SET SW ASSUMING ZERO LGTH @V305096 02843000
  2846. * 02844000
  2847. L R3,CSLNTH IF C/S LGTH = 0, LEAVE SW @V305096 02845000
  2848. LTR R3,R3 IN DERDAD TO IGNORE TEST OF ADDR @V305096 02846000
  2849. BZ ESCNCD GT CURRENT PHASE LENGTH, ELSE @V305096 02847000
  2850. * 02848000
  2851. OI DERDSW+1,X'20' RESET SW TO TEST UPPER PHASE@V305096 02849000
  2852. * LIMIT 02850000
  2853. A R3,NXPHRG STORE NEXT @V305096 02851000
  2854. ST R3,NXPHRG POSSIBLE PHASE ORIGIN @V305096 02852000
  2855. * 02853000
  2856. *** SCAN C/D ON EACH SD, LOOKING FOR UNASSIGNED LD/LR-S 02854000
  2857. * 02855000
  2858. DROP R9 @V305096 02856000
  2859. USING CDENTRY,R3 @V305096 02857000
  2860. ESCNCD LM R2,R3,CTLDNO INITIALIZE SCAN OF C/D @V305096 02858000
  2861. * 02859000
  2862. EPHLOP CLI ESDTYPD,LD SCAN C/D FOR @V305096 02860000
  2863. BE TSTASSG UNASSIGNED @V305096 02861000
  2864. CLI ESDTYPD,LR LD/LR S @V305096 02862000
  2865. BNE EPHSCN CONTINUE SCAN @V305096 02863000
  2866. TSTASSG TM SWITCHD,UNASSG @V305096 02864000
  2867. BO EPHULD @V305096 02865000
  2868. EPHSCN SH R3,HCDLNGTH CONTINUE SCANNING @V305096 02866000
  2869. CL R3,CDENT1 SCAN FINISHED @V305096 02867000
  2870. BH EPHLOP @V305096 02868000
  2871. B ESDRET RETURN TO GET NEXT ESD ITEM @V305096 02869000
  2872. * 02870000
  2873. EPHULD LH R8,CSNUMD SET UP ESID # @V305096 02871000
  2874. LTR R8,R8 IF ESID IS MINUS, THIS INDICATES @V305096 02872000
  2875. BM EPHSCN CURRENT L/T NOT APPLICABLE @V305096 02873000
  2876. BAL RF,LTESID MULT RETN DEPENDING ON L/T ENTRY @V305096 02874000
  2877. * 02875000
  2878. B EPHSCN UNASSIGNABLE STILL @V305096 02876000
  2879. * 02877000
  2880. B EPHSCD STORE NEGATIVE C/D @V305096 02878000
  2881. * 02879000
  2882. NI SWITCHD,ASSG ASSIGN LD/ LR @V305096 02880000
  2883. EPHSCD STH R8,CSNUMD STORE C/D # VALUE @V305096 02881000
  2884. B EPHSCN RETURN TO CONTINUE SCAN @V305096 02882000
  2885. DROP R3 @V305096 02883000
  2886. USING CDENTRY,R9 @V305096 02884000
  2887. SPACE 2 02885000
  2888. ECHKIBM CLC KIBM,NAMED LD OR SD @V305096 02886000
  2889. * WITH 'IBM' PREFIX 02887000
  2890. BNE ELBINT NO.. RESOLVE ER IN C/D @V305096 02888000
  2891. CLC PHSNO,PHNUMED IF MATCH IN CURR. PH @V305096 02889000
  2892. BE ELBINT ACCEPT SOLVING @V305096 02890000
  2893. B ELBNCD ELSE MAKE NEW ENTRY IN C/D @V305096 02891000
  2894. EJECT 02892000
  2895. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02893000
  2896. * 02894000
  2897. * CONSTANTS & S/R-S USED ONLY BY ESD PROCESSOR 02895000
  2898. * 02896000
  2899. KIJ DC C'IJ' PRIVILIGED PREFIX @V305096 02897000
  2900. KIBM DC C'IBM' SUPER PRIVILEGED PREFIX @V305096 02898000
  2901. * 02899000
  2902. * 02900000
  2903. ** TABLE TO PROVIDE ADDRESSABILITY TO ERROR MESSAGES 02901000
  2904. * 02902000
  2905. DS 0F @VA05886 02903000
  2906. AMSG40 DC YL1(L'MSG40-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 02904000
  2907. DC AL3(MSG40) ADDRESS OF ERROR MESSAGE @VA05886 02905000
  2908. AMSG41 DC YL1(L'MSG41-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 02906000
  2909. DC AL3(MSG41) ADDRESS OF ERROR MESSAGE @VA05886 02907000
  2910. AMSG42 DC YL1(L'MSG42-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 02908000
  2911. DC AL3(MSG42) ADDRESS OF ERROR MESSAGE @VA05886 02909000
  2912. AMSG43 DC YL1(L'MSG43-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 02910000
  2913. DC AL3(MSG43) ADDRESS OF ERROR MESSAGE @VA05886 02911000
  2914. AMSG45 DC YL1(L'MSG45-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 02912000
  2915. DC AL3(MSG45) ADDRESS OF ERROR MESSAGE @VA05886 02913000
  2916. AMSG46 DC YL1(L'MSG46-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 02914000
  2917. DC AL3(MSG46) ADDRESS OF ERROR MESSAGE @VA05886 02915000
  2918. LTORG , @V305096 02916000
  2919. TITLE 'DLKOTH LINK EDIT PROCESS TXT,REP,RLD,END - $LNKEDT - DOS' 02917000
  2920. *********************************************************************** 02918000
  2921. *********************************************************************** 02919000
  2922. * * 02920000
  2923. * CSECT DLK0TH - TXT, REP, RLD, AND END PROCESSING * 02921000
  2924. * * 02922000
  2925. *ENTRY POINTS - DLKOTH - DETERMINES TYPE OF PROCESSING REQUIRED. FOR * 02923000
  2926. * TXT AND REP BUILDS TXT BLOCKS. FOR RLD DOES PASS 1 PROCESSING. * 02924000
  2927. * CLEAR LINK TABLE AFTER END CARD PROCESS. * 02925000
  2928. * * 02926000
  2929. *INPUT - FROM RDNEXT IN CSECT DMSDLK 02927000
  2930. * * 02928000
  2931. *OUTPUT - PASS 1 RLD INFO TO SYS001 * 02929000
  2932. * * 02930000
  2933. *EXITS-NORMAL - TO RDNEXT EXCEPT AFTER END CARD PROCESSING WHEN EXIT * 02931000
  2934. * MAY BE TO ALNKPR FOR AUTOLINK * 02932000
  2935. * -ERROR - ERROR MSG NOS. RESULTING FROM THIS CSECT ARE 2100-2113-* 02933000
  2936. * 2147-2151-2155-2156-2158-2191 * 02934000
  2937. * * 02935000
  2938. *TABLES/WORK AREAS - EXPLAINED IN COMMENTS OF CSECT DMSDLK 02936000
  2939. * * 02937000
  2940. *ATTRIBUTES - N/A * 02938000
  2941. * * 02939000
  2942. *********************************************************************** 02940000
  2943. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02941000
  2944. * 02942000
  2945. * PROCESS TXT/REP/RLD/END CARDS 02943000
  2946. * 02944000
  2947. DLKOTH CSECT TXT,REP,RLD,END PROC @V305096 02945000
  2948. USING *,RD @V305096 02946000
  2949. * 02947000
  2950. TM MODSTS,X'01' IF FIRST NON-CONTROL CARD, @V305096 02948000
  2951. BO SETUPSCN SET BEG'NG OF MODULE STATUS @V305096 02949000
  2952. * 02950000
  2953. OI MODSTS,X'01' TURN ON STATUS INDICATOR @V305096 02951000
  2954. MVC ESDN00,COMNRF SAVE 1ST ADDRESS @V305096 02952000
  2955. TM PERISW,HEX1 IF ON DOSLNK SAVE IN ESD000 @V305096 02953000
  2956. BZ SETUPSCN @V305096 02954000
  2957. MVC ESD000,COMNRF @V305096 02955000
  2958. CLC E1(4),MODEND IS IT AN END CARD @V305096 02956000
  2959. BNE UPNDS IF YES, IGNORE IT @V305096 02957000
  2960. OI SBMDST,X'10' SET END CARD SWITCH @V305096 02958000
  2961. NI MODSTS,X'FE' RESET 1ST NON-CTL CARD SCH @V305096 02959000
  2962. B RDNEXT @V305096 02960000
  2963. * 02961000
  2964. UPNDS EQU * @V305065 02962000
  2965. USING FSCBD,R1 @V305065 02963000
  2966. LA R1,DOSLNK POINT TO PLIST @V305065 02964000
  2967. LH RF,FSCBITNO GET CURRENT RECORD NUMBER @V305065 02965000
  2968. DROP R1 @V305065 02966000
  2969. STH RF,NDS000 AND STORE IT, WHICH IS @V305065 02967000
  2970. * USED FOR COMPARE IN ESD 02968000
  2971. * PROCESSER 02969000
  2972. NI MODSTS,255-X'01' RESET MODULAR STATUS BYTE @V305096 02970000
  2973. * 02971000
  2974. SETUPSCN EQU * @V305096 02972000
  2975. LA R0,4 SET UP TO SCAN MATRIX @V305096 02973000
  2976. LA R1,MTXOTH @V305096 02974000
  2977. * 02975000
  2978. OTHTYP MVC OTHTFR+2(2),0(R1) BRANCH ADDRESS FOR THIS TYPE@V305096 02976000
  2979. CLC E1(4),2(R1) IF CARD TYPES NO MATCH, GOTO@V305096 02977000
  2980. BNE OTHINC CONT SCAN FOR OTHER TYPES @V305096 02978000
  2981. * 02979000
  2982. CLI PHSNO,X'FF' IF PHASE CARD PREV PROC'D @V305096 02980000
  2983. OTHTFR BNE 0 GO TO TYPE PROCESSER @V305096 02981000
  2984. * 02982000
  2985. LA R1,ESDMTX GO TO ESDPROCESSOR TO CREATE@V305096 02983000
  2986. B EXLOAD DUMMY PHASE @V305096 02984000
  2987. * 02985000
  2988. OTHINC LA R1,6(R1) CONTINUE SCAN FOR VALID TYPE@V305096 02986000
  2989. BCT R0,OTHTYP @V305096 02987000
  2990. * 02988000
  2991. L RB,AMSG00 INVALID INPUT @V305096 02989000
  2992. B ERROR CARD TYPE @V305096 02990000
  2993. EJECT 02991000
  2994. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 02992000
  2995. * 02993000
  2996. * PROCESS TXT CARDS 02994000
  2997. * 02995000
  2998. TXTPRC LH R8,E15 ESID NO @V305096 02996000
  2999. BAL RF,LTESID R7-R/F,R8-C/D #, R9-C/D ADDR@V305096 02997000
  3000. * 02998000
  3001. B ERROR ERR070 IF ESID # NOT YES PROC'D @V305096 02999000
  3002. * 03000000
  3003. B RDNEXT RETURN PT IF ESID TO BE BYPASSED @V305096 03001000
  3004. * 03002000
  3005. CLI ESDTYPD,SD CHECK FOR @V305096 03003000
  3006. BE CALCLOAD SD @V305096 03004000
  3007. CLI ESDTYPD,PC OR PC @V305096 03005000
  3008. BNE ERR055 ESID # DOES NOT PT TO CTL SECT @V305096 03006000
  3009. CALCLOAD EQU * @V305096 03007000
  3010. MVI E5,X'00' ADD ASSMB'D ORIGIN TO R/F TO GET @V305096 03008000
  3011. A R7,E5 LOAD ADDRESS @V305096 03009000
  3012. * 03010000
  3013. L RB,AMSG50 IF ASSEMBLED @V305096 03011000
  3014. * ADDRESS + LOAD 03012000
  3015. BL ERROR ADDRESS IS LESS THAN ZERO, ERROR @V305096 03013000
  3016. LH R8,E11 NO OF BYTES ON THIS CARD @V305096 03014000
  3017. LTR R8,R8 IF ZERO TXT, IGNORE @V305096 03015000
  3018. BZ RDNEXT @V305096 03016000
  3019. * 03017000
  3020. * INSERT TXT BYTES INTO CORRECT BLOCK(S) OF CORE IMAGE 03018000
  3021. * 03019000
  3022. * R5 - ADDRESS IN WKAREA R7 - AO + R/F 03020000
  3023. * R6 - ADDRESS IN CARD R8 - NO OF BYTES ON CARD 03021000
  3024. * R9 - AO + R/F + # 03022000
  3025. * 03023000
  3026. LA R6,E17 ADDRESS OF TXT IN CARD @V305096 03024000
  3027. * 03025000
  3028. TXTGET BAL RF,DERDAD GET RIGHT BLOCK OFF DISK @V305096 03026000
  3029. * 03027000
  3030. LA R9,0(R7,R8) MAXIMUM BYTE OF TXT @V305096 03028000
  3031. L R5,AWKARE CALC LOAD ADDRESS WITHIN WKAREA @V305096 03029000
  3032. AR R5,R7 @V305096 03030000
  3033. S R5,LOCORE @V305096 03031000
  3034. BCTR R8,0 USE LENGTH-1 IN EXEC MVC COMMAND @V305096 03032000
  3035. * 03033000
  3036. S R9,HICORE IF DIFFERENCE IS ZERO OR NEGATIVE@V305096 03034000
  3037. BNH TXTALL ALL TXT WILL FIT IN BLOCK @V305096 03035000
  3038. * 03036000
  3039. SR R8,R9 EXECUTE MOVE OF POSS NO. OF BYTES@V305096 03037000
  3040. EX R8,TXTMOV INTO WKAREA @V305096 03038000
  3041. * 03039000
  3042. LA R6,1(R8,R6) INCREMENT TO REQ'D BYPE IN CARD @V305096 03040000
  3043. LA R7,1(R8,R7) INCREMENT TO ADDR OF THAT BYTE @V305096 03041000
  3044. LR R8,R9 REMAINING NO OF BYTES ON CARD @V305096 03042000
  3045. B TXTGET LOAD THE REST @V305096 03043000
  3046. * 03044000
  3047. TXTALL EX R8,TXTMOV EXECUTE MOVE OF BYTES INTO WKAREA@V305096 03045000
  3048. B RDNEXT @V305096 03046000
  3049. * 03047000
  3050. * 03048000
  3051. TXTMOV MVC 0(0,R5),0(R6) SUBJECT INSTRUC OF EX COMMAND @V305096 03049000
  3052. EJECT 03050000
  3053. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03051000
  3054. * 03052000
  3055. * REP PROCESSOR 03053000
  3056. * 03054000
  3057. REPROC EQU * @V305096 03055000
  3058. * 03056000
  3059. BAL R6,PRTLST LIST REP CARD IN I/O AREA @V305096 03057000
  3060. * 03058000
  3061. LA R2,6 CONVERT ASSEMBLED ORIGIN & STORE @V305096 03059000
  3062. LA R3,E7 @V305096 03060000
  3063. BAL RF,CNVHEX @V305096 03061000
  3064. ST R5,E5 @V305096 03062000
  3065. * 03063000
  3066. LA R2,3 CONVERT ESID NO & STORE @V305096 03064000
  3067. LA R3,E14 @V305096 03065000
  3068. BAL RF,CNVHEX @V305096 03066000
  3069. STH R5,E15 @V305096 03067000
  3070. * 03068000
  3071. LA R3,E16 1ST BYTE OF TXT-1 @V305096 03069000
  3072. SR R6,R6 COUNT OF NO OF BYTES THIS CARD @V305096 03070000
  3073. * 03071000
  3074. REPTXT LA R2,5 4 HEX FOLLOWED BY , @V305096 03072000
  3075. BAL RF,CNVAHX THIS ENTRY POINT BYPASSES , @V305096 03073000
  3076. STH R5,E17(R6) @V305096 03074000
  3077. * 03075000
  3078. LA R6,2(R6) COUNT OF BYTES CONVERTED @V305096 03076000
  3079. CLI 0(R3),C',' IF MORE BYTES ON CARD, CONTINUE @V305096 03077000
  3080. BE REPTXT CONVERSION @V305096 03078000
  3081. * 03079000
  3082. CLI 0(R3),C' ' @V305096 03080000
  3083. L RB,AMSG51 INVALID DELIMITER @V305096 03081000
  3084. BNE ERROR @V305096 03082000
  3085. * 03083000
  3086. STH R6,E11 STORE BYTE COUNT & GOTO PROC AS @V305096 03084000
  3087. LA R0,22 A TXT CARD IF LEGIT NO OF BYTES @V305096 03085000
  3088. SR R6,R0 ON CARD @V305096 03086000
  3089. BNH TXTPRC @V305096 03087000
  3090. * 03088000
  3091. L RB,AMSG13 INFORM BEYOND COL 71 @V305096 03089000
  3092. B ERROR @V305096 03090000
  3093. EJECT 03091000
  3094. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03092000
  3095. * 03093000
  3096. * RLD - PASS 1 PROCESSING 03094000
  3097. * 03095000
  3098. RLDPRC EQU * @V305096 03096000
  3099. * 03097000
  3100. SR R2,R2 INITIALISE SCAN OF NEW CARD @V305096 03098000
  3101. NI RLSW1+1,X'0F' FORCE PROC'NG R & P ON 1ST ITEM @V305096 03099000
  3102. * 03100000
  3103. RLRET CH R2,E11 IF END OF CARD REACHED GOTO WRITE@V305096 03101000
  3104. BE RLWRIT IT OUT @V305096 03102000
  3105. LA R6,E17(R2) ADDRESS OF ITEM TO BE PROCESSED @V305096 03103000
  3106. LA R2,4(R2) COUNT OF BYTES PROCESSED @V305096 03104000
  3107. * 03105000
  3108. CNTSW B RLSW1 NOP IF VALID RLD ITEMS @V305096 03106000
  3109. LH R8,RLDCNT ADD ONE TO THE @V305096 03107000
  3110. LA R8,DEC1(R8) NUMBER OF VALID @V305096 03108000
  3111. STH R8,RLDCNT RLD ITEMS @V305096 03109000
  3112. * 03110000
  3113. RLSW1 NOP RLCONS SW IS B WHEN R&P SAME AS PREV @V305096 03111000
  3114. OI RLSW1+1,X'F0' MUST PROCESS CONSTANT AFTER R&P @V305096 03112000
  3115. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03113000
  3116. * 03114000
  3117. * PROCESS R & P POINTERS 03115000
  3118. * 03116000
  3119. *** - P POINTER 03117000
  3120. * 03118000
  3121. LH R8,D19 GET C/D # FROM L/T @V305096 03119000
  3122. BAL RF,LTESID MULTIPLE RETURN POINTS @V305096 03120000
  3123. * 03121000
  3124. B ERROR ERROR IF P PTR ESID NOT YET PROC @V305096 03122000
  3125. * 03123000
  3126. B RLSTP ACCEPT BYPASS OF THIS RLD ITEM @V305096 03124000
  3127. * 03125000
  3128. NI RLWRIT+1,X'0F' SET SW TO RETAIN THIS FOR PASS 2 @V305096 03126000
  3129. * 03127000
  3130. NI CNTSW+DEC1,HEXF INDICATE VALID RLD @V305096 03128000
  3131. CLI ESDTYPD,SD CHECK P @V305096 03129000
  3132. BE RLSTP POINTER @V305096 03130000
  3133. CLI ESDTYPD,PC @V305096 03131000
  3134. ERR055 L RB,AMSG55 INVALID P POINTER @V305096 03132000
  3135. BNE ERROR THERE IS SOMETHING WRONG @V305096 03133000
  3136. * 03134000
  3137. RLSTP STH R8,D19 SAVE P C/D # @V305096 03135000
  3138. * 03136000
  3139. *** - R POINTER 03137000
  3140. * 03138000
  3141. LH R8,D17 GET C/D # FROM L/T @V305096 03139000
  3142. BAL RF,LTESID MULTIPLE RETURN POINTS @V305096 03140000
  3143. * 03141000
  3144. B ERROR ERROR IF R PTR ESID NOT YET PROC @V305096 03142000
  3145. * 03143000
  3146. LPR R8,R8 SUPPLY ADDR'BLTY OF C/D ENTRY @V305096 03144000
  3147. NOPR 0 PADDING @V305096 03145000
  3148. * 03146000
  3149. STH R8,D17 SAVE R C/D # @V305096 03147000
  3150. CLI ESDTYPE,SD IF R DOES NOT @V305096 03148000
  3151. BE RLRET POINT TO ER OR CM @V305096 03149000
  3152. CLI ESDTYPE,PC RETURN TO SCAN @V305096 03150000
  3153. BE RLRET CONSTANTS @V305096 03151000
  3154. OI D17,X'80' R POINTS TO ER/CM - FLAG@V305096 03152000
  3155. * ... FOR PASS 2 TO 03153000
  3156. B RLRET USE R/F + AO AS RELOC ATTRIBUTE @V305096 03154000
  3157. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03155000
  3158. * 03156000
  3159. *** PROCESS CONSTANT PORTION 03157000
  3160. * 03158000
  3161. RLCONS TM D17,X'01' IF ¬ YET END OF ITEMS TO THIS R&P@V305096 03159000
  3162. BO RLRET RETURN TO SCAN @V305096 03160000
  3163. * 03161000
  3164. NI RLSW1+DEC1,HEXF RESET SWITCH TO PROCESS R&P @V305096 03162000
  3165. OI CNTSW+DEC1,HEXF0 AND COUNT SWITCH, RETURN @V305096 03163000
  3166. B RLRET TO SCAN @V305096 03164000
  3167. * 03165000
  3168. *** WRITE RLD RECORD ON SYS001 (IF NECESSARY) 03166000
  3169. * 03167000
  3170. RLWRIT B RDNEXT SW IS NOP IF ANY RLD ITEMS REQ'D @V305096 03168000
  3171. * 03169000
  3172. OI RLWRIT+1,X'F0' RESET SWITCH @V305096 03170000
  3173. * 03171000
  3174. TM RLSW1+1,X'F0' IF NOT YET INDICATED AS BEING@V305096 03172000
  3175. L RB,AMSG56 INVALID RLD CARD @V305096 03173000
  3176. BO ERROR FINISHED ON CARD,IT IS ERROR@V305096 03174000
  3177. * 03175000
  3178. LR R3,R2 SAVE COUNT OF BYTES THIS CARD@V305096 03176000
  3179. LH R4,RLDOPT+10 NO OF BYTES ALREADY IN AREA @V305096 03177000
  3180. AR R2,R4 IF THIS CARD + NO ALREADY @V305096 03178000
  3181. CH R2,BYTPCD ¬> LIMITS OF I/O AREA, SHIFT IT @V305096 03179000
  3182. BNH RLBYWR IN BESIDE PREVIOUS @V305096 03180000
  3183. * 03181000
  3184. BAL RF,WRS001 WRITE THIS RECORD OUT @V305096 03182000
  3185. SR R4,R4 RESET COUNT OF BYTES IN AREA@V305096 03183000
  3186. * 03184000
  3187. RLBYWR LA R5,RLDOPT+16(R4) ADDR TO PUT THIS CARDS CONTENTS@V305096 03185000
  3188. AR R4,R3 UPDT COUNT OF BYTES IN AREA @V305096 03186000
  3189. STH R4,RLDOPT+10 @V305096 03187000
  3190. * 03188000
  3191. BCTR R3,0 MOVE BYTES INVOLVED INTO I/O AREA@V305096 03189000
  3192. STC R3,*+5 @V305096 03190000
  3193. MVC 0(0,R5),E17 @V305096 03191000
  3194. * 03192000
  3195. B RDNEXT RETURN TO READ NEXT CARD @V305096 03193000
  3196. EJECT 03194000
  3197. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03195000
  3198. * 03196000
  3199. * PROCESS END CARD 03197000
  3200. * 03198000
  3201. ENDPRC EQU * @V305096 03199000
  3202. * 03200000
  3203. NI MODSTS,255-X'03' SET ENDED MODULE STATUS @V305096 03201000
  3204. NI ATRLSW,X'0F' ASSUME NORMAL EXIT TO RDNEXT@V305096 03202000
  3205. * 03203000
  3206. TM PERISW,HEX1 IF NOT DOSLNK, GO TO PROCESS@V305096 03204000
  3207. BZ ENOT00 RELOCATABLE LIBRARY INPUT @V305096 03205000
  3208. * 03206000
  3209. USING FSCBD,R1 @V305065 03207000
  3210. LA R1,DOSLNK POINT TO DOSLNK PLIST @V305065 03208000
  3211. LH RF,FSCBITNO GET CURRENT RECORD NUMBER @V305065 03209000
  3212. STH RF,NDS000 AND STORE IT, WHICH IS @V305065 03210000
  3213. * USED FOR COMPARE IN ESD 03211000
  3214. * PROCESSER 03212000
  3215. TM SBMDST,X'10' TEST FOR END CARD @V305096 03213000
  3216. BZ TSTESD BRANCH NO @V305096 03214000
  3217. NI SBMDST,X'EF' OTHERWISE, TURN OFF SWITCH @V305096 03215000
  3218. B ENDRTN @V305096 03216000
  3219. * 03217000
  3220. TSTESD CLC PERIDA,ESD000 IF THIS MODULE FINISHED @V305096 03218000
  3221. BNL ENDRTN CONTIMUE ON DOSLNK @V305096 03219000
  3222. * 03220000
  3223. MOVPERA EQU * @V305065 03221000
  3224. TM PERISW,CMSTXT IS THIS CMSTEXT? @V305065 03222000
  3225. BZ MOVPER BRANCH IF NOT @V305065 03223000
  3226. MVI RDS00A+1,X'F0' INDICATE CMSREAD @V305065 03224000
  3227. LA R1,DOSTXT POINT TO PLIST @V305065 03225000
  3228. MVC FSCBFN,PERIDA+2 MOVE IN FILENAME @V305065 03226000
  3229. MVC ITMCNT,PERIDA+10 MOVE IN ITEM COUNT @V305065 03227000
  3230. B MOVPER1 @V305065 03228000
  3231. MOVPER OI PVLBSW+1,X'F0' SET SWITCH FOR RELO LIB @V305096 03229000
  3232. TM PERISW,HEX4 FROM PRIV REL @V305096 03230000
  3233. BZ MOVPER1 @V305096 03231000
  3234. NI PVLBSW+1,X'00' SET NO. FOR FOR PRIV. RELO @V305096 03232000
  3235. MOVPER1 MVC ONS000,PERIDA SET RETURN FOR NEXT CTL CARD@V305096 03233000
  3236. B ENDRTN AND INPUT FROM SAME MODULE @V305096 03234000
  3237. * 03235000
  3238. ENOT00 TM PERISW,HEX2 IF NOT NAMED SUB-MODLR PROC @V305096 03236000
  3239. BZ *+8 NORMALLY @V305096 03237000
  3240. NI SBMDST,255-X'01' TURM OFF SUB-MODULAR STATUS @V305096 03238000
  3241. * 03239000
  3242. TM PERISW,CMSTXT IS THIS DOS TEXT? @V305065 03240000
  3243. BZ ENOT01 BRANCH IF YES @V305065 03241000
  3244. LA R1,DOSTXT POINT TO PLIST @V305065 03242000
  3245. CLC FSCBITNO,ITMCNT ANY MORE ITEMS ON CMSTXT @VA07692 03243000
  3246. BL ENDRTN BRANCH IF YES @VA07692 03244000
  3247. B ENOT02 @V305065 03245000
  3248. ENOT01 EQU * @V305065 03246000
  3249. CLC PERIDA,ESDN00 IF THIS MODULE NOT FINISHED @V305096 03247000
  3250. BL MOVPER CONT SUB-MOD ON REL LIBRARY @V305096 03248000
  3251. ENOT02 EQU * @V305065 03249000
  3252. TM PERISW,HEX40 SEE IF THIS REQUESTED VIA AUTOLNK@V305096 03250000
  3253. BZ *+8 NO @V305096 03251000
  3254. * 03252000
  3255. OI ATRLSW,X'F0' SET FOR REURN TO AUTOLINK @V305096 03253000
  3256. * 03254000
  3257. MVI ESDN00,X'0' RESET FOR NEXT TIME THROUGH @V305096 03255000
  3258. MVI ESDN00+DEC1,HEX0 @V305096 03256000
  3259. MVC PERIDA(DEC13*NESTNG+DEC1),PERIDA+DEC13 @V305096 03257000
  3260. MVI ENDPER,X'00' MAKE SURE NEST LEVEL IS RESET@V305096 03258000
  3261. TM PERISW,HEX1 IF STILL IN LIBRARY @V305096 03259000
  3262. BZ MOVPERA DO NOT SET REL LIBRARY INPUT SW @V305096 03260000
  3263. MVI RDS00A+1,X'00' RESET TEXT SW @V305065 03261000
  3264. OI PVLBSW+1,X'F0' RESET PRIV LIB SWITCH @V305096 03262000
  3265. NI RELBSW+1,X'0F' TURN OFF LIBRARY INPUT SW @V305096 03263000
  3266. CLI NDS000,HEXFF IF 1ST BYTE OF NDS000 IS FF @V305096 03264000
  3267. BE MOVPERA RETURN TO NXT CARD ON DOSLNK@V305096 03265000
  3268. EX 0,TSTESD CHECK IF MODULE FINISHED @V305096 03266000
  3269. BL MOVPERA NO, CONTIMUE PROCESSING @V305096 03267000
  3270. CLC PERIDA(2),NDS000 IF PERIDA GT NDS000, THEN @V305096 03268000
  3271. BH MOVPERA WE HAVE CTL CARD AFTER END @V305096 03269000
  3272. MVC ONS000,NDS000 SET TO BYPASS MODULE @V305096 03270000
  3273. MVI NDS000,HEXFF INDICATE IN NDS000 @V305096 03271000
  3274. * 03272000
  3275. ENDRTN MVC ENDERR+1(1),ATRLSW @V305096 03273000
  3276. TM SBMDST,X'01' IF IN NESTED SUB-MODULAR @V305096 03274000
  3277. BO ENDXFR DO NOT CLEAR NAMELIST @V305096 03275000
  3278. * 03276000
  3279. MVI NMELST,C' ' OTHERWISE, MAKE SURE @V305096 03277000
  3280. MVC NMELST+1(39),NMELST NAMELIST IS CLEAR @V305096 03278000
  3281. * 03279000
  3282. ENDXFR TM TRFRSW,X'01' IF XFER ALREADY ACCEPTED, BYPASS @V305096 03280000
  3283. BO ENOXFR THIS END TRANSFER @V305096 03281000
  3284. * 03282000
  3285. CLI E17,C' ' IF LABEL PRESENT ACCEPT AS XFER @V305096 03283000
  3286. BNE EISXFR POINT @V305096 03284000
  3287. * 03285000
  3288. CLI E15,C' ' IF ESID # NOT PRESENT, NO XFER @V305096 03286000
  3289. BE ENOXFR @V305096 03287000
  3290. * 03288000
  3291. LH R8,E15 @V305096 03289000
  3292. BAL RF,LTESID @V305096 03290000
  3293. * 03291000
  3294. B ERROR ERR070 IS ESID # NOT YET PROC'D @V305096 03292000
  3295. * 03293000
  3296. B ENOXFR BYPASS - DO NOT ACCEPT XFER ADDR @V305096 03294000
  3297. * 03295000
  3298. STH R8,E15 REPLACE ESID BY C/D # @V305096 03296000
  3299. EISXFR MVC X6(19),E6 RETAIN XFER INFO & SET @V305096 03297000
  3300. OI TRFRSW,X'01' XFER SW TO PROC AT PHASE END @V305096 03298000
  3301. * 03299000
  3302. CLI E17,C' ' TRANSFER LABEL PRESENT @V305096 03300000
  3303. BE ENOXFR NO @V305096 03301000
  3304. * 03302000
  3305. MVC E6(11),E6-1 CLEAR ALL COLMS EXCEPT LABEL@V305096 03303000
  3306. BAL R6,PRTLST AND PRINT CARD @V305096 03304000
  3307. * 03305000
  3308. ENOXFR L R9,CTLDAD SCAN TABLE FOR UNASSIGNED LD/LR-S@V305096 03306000
  3309. ENDSCD CLI ESDTYPD,LD SCAN C/D FOR @V305096 03307000
  3310. BE TSTUNAS UNASSIGNED @V305096 03308000
  3311. CLI ESDTYPD,LR LD OR LR -S @V305096 03309000
  3312. BNE ENUNAS CONTINUE SCAN @V305096 03310000
  3313. TSTUNAS EQU * @V305096 03311000
  3314. TM SWITCHD,UNASSG IF NOT AN UNASS @V305096 03312000
  3315. BNO ENUNAS LD/LR CONT SCAN @V305096 03313000
  3316. * 03314000
  3317. LH R2,CSNUMD @V305096 03315000
  3318. LTR R2,R2 TEST C/D NUMBER @V305096 03316000
  3319. BM ENUNAS C/D NUM NEGATIV @V305096 03317000
  3320. OI ERRSW,NOCARD NO CARD TO BE PRINTED @V305096 03318000
  3321. L RB,AMSG47 IF C/D NUM NOT NEGATIVE @V305096 03319000
  3322. B ERROR ON AN UNASSIGNED LD/LR @V305096 03320000
  3323. * IT IS AN ERROR 03321000
  3324. ENUNAS SH R9,HCDLNGTH SCAN TO NEXT ENTRY @V305096 03322000
  3325. C R9,CDENT1 @V305096 03323000
  3326. BH ENDSCD TEST @V305096 03324000
  3327. * 03325000
  3328. L R3,LNKTAD SET UP TO CLEAR @V305096 03326000
  3329. SR R9,R9 LINKAGE TABLE @V305096 03327000
  3330. LR R8,R9 @V305096 03328000
  3331. L R2,LTMINE @V305096 03329000
  3332. LA R2,LTENTLN(R2) @V305096 03330000
  3333. ST R2,LNKTAD FIRST ENTRY =NEXT @V305096 03331000
  3334. SR R3,R2 AVAILABLE ENTRY @V305096 03332000
  3335. MVCL R2,R8 CLEAR L/T @V305096 03333000
  3336. * 03334000
  3337. *** ACCEPT C/S LENGTH IF REQUIRED 03335000
  3338. * 03336000
  3339. TM DERDSW+1,X'20' IF SW SETTING DOES NOT REQUIRE @V305096 03337000
  3340. BO ENDSBM C/S LGTH GO TO CHECK SUB-MODULAR @V305096 03338000
  3341. * 03339000
  3342. CLI E17+12,X'00' IF 1ST BYTE IS NONZERO IT CANNOT @V305096 03340000
  3343. L RB,AMSG58 NO CS LENGTH @V305096 03341000
  3344. BNE ERROR BE A VALID C/S LENGTH @V305096 03342000
  3345. * 03343000
  3346. L R3,NXPHRG USE NEXT POSS PHASE ORIGIN @V305096 03344000
  3347. A R3,E17+12 ADD C/S LENGTH FROM END CARD@V305096 03345000
  3348. ST R3,NXPHRG RESTOR NXT POSS PHASE ORIGIN@V305096 03346000
  3349. * 03347000
  3350. OI DERDSW+1,X'20' SET SW FOR C/S LGTH PROC'D @V305096 03348000
  3351. * 03349000
  3352. ENDSBM NOP ALNKPR SOMETIMES NEC'SRY TO RETURN @V305096 03350000
  3353. * TO THE AUTOLINK PROCESSER AND AT 03351000
  3354. B RDNEXT OTHERS TO RETURN TO RDNEXT @V305096 03352000
  3355. * 03353000
  3356. ATRLSW EQU ENDSBM+1 AUTOLINK RETURN SWITCH @V305096 03354000
  3357. * 03355000
  3358. EJECT 03356000
  3359. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03357000
  3360. * 03358000
  3361. * CONSTANTS AND S/R-S USED ONLY BY ASSEMBLER PROCESSOR 03359000
  3362. * 03360000
  3363. * 03361000
  3364. *** RLD OUTPUT AREA 03362000
  3365. * 03363000
  3366. RLDOUT DC F'0' CCHH TO WRTE COUNT/KEY/DATA@V305096 03364000
  3367. DC H'0' RK OF OUTPUT RECORDS @V305096 03365000
  3368. DC Y(RLDCAP) DD LGTH OF RLD RECS @V305096 03366000
  3369. * 03367000
  3370. RLDOPT DC C'RLD' 1 - 4 STD 16 BYTES OF @V305096 03368000
  3371. DC 6C' ' RLD CARD @V305096 03369000
  3372. DC H'0' 11-12 @V305096 03370000
  3373. DC 4C' ' @V305096 03371000
  3374. DS 56C 1 PACKED CARD @V305096 03372000
  3375. DS 56C 2 PACKED CARDS @V305096 03373000
  3376. DS 56C 3 PACKED CARDS @V305096 03374000
  3377. DS 56C 4 PACKED CARDS @V305096 03375000
  3378. RLDCAP EQU *-RLDOPT @V305096 03376000
  3379. * 03377000
  3380. BYTPCD DC AL2(RLDCAP-16) NO OF BYTES OF INFO/REC @V305096 03378000
  3381. * 03379000
  3382. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03380000
  3383. * 03381000
  3384. * MATRIX OF BRANCH ADDRESSES ON CARD TYPE 03382000
  3385. * 03383000
  3386. MTXOTH DC S(TXTPRC) @V305096 03384000
  3387. DC C'TXT' @V305096 03385000
  3388. * 03386000
  3389. DC S(RLDPRC) @V305096 03387000
  3390. DC C'RLD' @V305096 03388000
  3391. * 03389000
  3392. DC S(REPROC) @V305096 03390000
  3393. DC C'REP' @V305096 03391000
  3394. * 03392000
  3395. DC S(ENDPRC) @V305096 03393000
  3396. MODEND DC C'END' @V305096 03394000
  3397. * 03395000
  3398. EJECT 1 03396000
  3399. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03397000
  3400. * 03398000
  3401. * R15 S/R TO WRITE OUTPUT ON SYSUT1 03399000
  3402. * 03400000
  3403. * R0 - DESTROYED 03401000
  3404. * R1 - DESTROYED 03402000
  3405. * R2 - DESTROYED 03403000
  3406. * R3 - DESTROYED 03404000
  3407. * RE - DESTROYED 03405000
  3408. * 03406000
  3409. WRS001 EQU * @V305065 03407000
  3410. USING FSCBD,R1 @V305065 03408000
  3411. LA R1,SYSUT1 POINT TO SYSUT1 DSCB @V305065 03409000
  3412. LH R2,FSCBITNO GET PREVIOUS REC NUMBER @V305065 03410000
  3413. LA R2,1(,R2) INCREMENT BY ONE @V305065 03411000
  3414. LA R3,RLDOPT POINT TO BUFFER @V305065 03412000
  3415. BAL RE,WRTUTX GO WRITE RECORD @V305065 03413000
  3416. SR R0,R0 CLEAR NUMBER OF BYTES @V305065 03414000
  3417. STH R0,RLDOPT+10 ON RLD RECORD @V305065 03415000
  3418. BR RF AND RETURN @V305065 03416000
  3419. DS 0D @V305096 03417000
  3420. * 03418000
  3421. ** TABLE TO PROVIDE ADDRESSABILITY TO ERROR MESSAGES 03419000
  3422. * 03420000
  3423. DS 0F @VA05886 03421000
  3424. AMSG00 DC YL1(L'MSG00-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 03422000
  3425. DC AL3(MSG00) ADDRESS OF ERROR MESSAGE @VA05886 03423000
  3426. AMSG13 DC YL1(L'MSG13-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 03424000
  3427. DC AL3(MSG13) ADDRESS OF ERROR MESSAGE @VA05886 03425000
  3428. AMSG47 DC YL1(L'MSG47-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 03426000
  3429. DC AL3(MSG47) ADDRESS OF ERROR MESSAGE @VA05886 03427000
  3430. AMSG51 DC YL1(L'MSG51-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 03428000
  3431. DC AL3(MSG51) ADDRESS OF ERROR MESSAGE @VA05886 03429000
  3432. AMSG55 DC YL1(L'MSG55-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 03430000
  3433. DC AL3(MSG55) ADDRESS OF ERROR MESSAGE @VA05886 03431000
  3434. AMSG56 DC YL1(L'MSG56-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 03432000
  3435. DC AL3(MSG56) ADDRESS OF ERROR MESSAGE @VA05886 03433000
  3436. AMSG58 DC YL1(L'MSG58-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 03434000
  3437. DC AL3(MSG58) ADDRESS OF ERROR MESSAGE @VA05886 03435000
  3438. TITLE 'DLKSCN SCAN CONTROL CARDS - $LNKEDT - DOS' 03436000
  3439. *********************************************************************** 03437000
  3440. *********************************************************************** 03438000
  3441. * * 03439000
  3442. * CSECT DLKSCN - CONTROL STATEMENT PROCESSING * 03440000
  3443. * * 03441000
  3444. *INPUT - FROM RDNEXT IN CSECT DMSDLK 03442000
  3445. * * 03443000
  3446. *OUTPUT - N/A * 03444000
  3447. * * 03445000
  3448. *EXTERNAL ROUTINES - SEE LIST OF SUBROUTINES IN CSECT DMSDLK 03446000
  3449. * * 03447000
  3450. *ENTRY POINTS - DLKSCN - PROCESSES INCLUDE, PHASE, ENTRY CARDS * 03448000
  3451. * * 03449000
  3452. * 03450000
  3453. *EXITS-NORMAL: TO EXLOAD TO FETCH DLKCTL 03451000
  3454. * FROM PHASE PROCESS IF NOAUTO. TO ALNKPR FROM PHASE OR ENTRY PROCES* 03452000
  3455. * IF AUTOLINK. TO DLKCTL FROM ENTRY PROCESS IF NOAUTO. * 03453000
  3456. * -ERROR - ERROR MSG NOS. RESULTING FROM THIS CSECT ARE 2101-2102 * 03454000
  3457. * 2110-2111-2112-2114-2115-2116-2125-2130-2131-2132-2133-2195 03455000
  3458. * * 03456000
  3459. *TABLES/WORK AREAS - EXPLAINED IN COMMENTS OF CSECT DMSDLK * 03457000
  3460. * * 03458000
  3461. *ATTRIBUTES - N/A * 03459000
  3462. * * 03460000
  3463. ******************************************************************** 03461000
  3464. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03462000
  3465. * 03463000
  3466. * CONTROL CARD PROCESSOR 03464000
  3467. * 03465000
  3468. DLKSCN CSECT SCAN CTL CARDS @V305096 03466000
  3469. USING *,RD @V305096 03467000
  3470. * 03468000
  3471. OI ERRNML+1,X'F0' ASSURE NMELST ¬ CLEARED ON ERROR @V305096 03469000
  3472. * CONTROL CARD 03470000
  3473. * 03471000
  3474. LR R6,RA PUT INPUT AREA ADDRESS IN R6@V305096 03472000
  3475. LR RB,RA ALSO IN RB @V305065 03473000
  3476. LA R0,1 PUT 1 IN R0 FOR UPDATING @V305096 03474000
  3477. BAL RF,SKIPB SKIP BLANKS BETWEEN FIELDS @V305096 03475000
  3478. CLC 0(6,R6),KENT IF VERB IS ENTRY, @V305096 03476000
  3479. BE GETVRB DO NOT SAVE ITS ADDRESS @V305096 03477000
  3480. MVC NEWDAD,ONS000 GET NEXT RECORD ADDR @V305065 03478000
  3481. MVC PERIDA,NEWDAD ON NXT TRK--THIS FORCES TRUE@V305096 03479000
  3482. GETVRB EQU * @V305096 03480000
  3483. TM RDS000+1,X'F0' IF DUMMY PHASE CARD CREATD BYPASS@V305096 03481000
  3484. BO ALNKGT SCANNER @V305096 03482000
  3485. * 03483000
  3486. MVI DBLWRD+1,C' ' MAKE SURE FIRST BYTE CLEAR @V305096 03484000
  3487. MVI PHCSW,X'00' RESET DELIMITER SWITCH @V305096 03485000
  3488. MVI PHVERB,C' ' CLEAR RECIPIENT FIELDS @V305096 03486000
  3489. MVC PHVERB+1(31),PHVERB @V305096 03487000
  3490. XC DISPLC(4),DISPLC CLEAR DISPLACEMENT FIELD @V305096 03488000
  3491. * 03489000
  3492. LA R7,PHVERB-1 SET BUCKET ADDR FOR EXTRACTING @V305096 03490000
  3493. BAL RE,EXTRCT FIELD AND EXTRACT IT @V305096 03491000
  3494. B SEEBLK HOPE IT IS BLANK @V305096 03492000
  3495. * 03493000
  3496. ERR010 L RB,AMSG10 INVALID DELIMITER @V305096 03494000
  3497. ERRNML B ERROR SET->NOP TO ALLOW CLRNG OF NMELST@V305096 03495000
  3498. MVI NMELST,C' ' CLEAR NAME LIST @V305096 03496000
  3499. MVC NMELST+1(39),NMELST @V305096 03497000
  3500. * 03498000
  3501. B ERROR @V305096 03499000
  3502. * 03500000
  3503. SEEBLK CLI 0(R6),C' ' HOPE DELIMITER BLANK @V305096 03501000
  3504. BNE ERR010 ILLEGAL DELIMITER @V305096 03502000
  3505. BAL RF,SKIPB SKIP TO NEXT FIELD @V305096 03503000
  3506. CLC PHVERB(6),KENT IS IT ENTRY @V305096 03504000
  3507. BE ENTCRD PROC ENTRY CARD @V305096 03505000
  3508. * 03506000
  3509. TM MODSTS,X'01' IF MODULE STATUS SW IS SET, THIS @V305096 03507000
  3510. L RB,AMSG16 CTL CARD IN MODULE @V305096 03508000
  3511. BO ERROR CTL CARD FALLS W/I THE MODULE @V305096 03509000
  3512. * 03510000
  3513. CLC PHVERB(6),KPHA IS IT PHASE @V305096 03511000
  3514. BE PHCRD PROCESS PHASE CARD @V305096 03512000
  3515. * 03513000
  3516. ST R6,SAVIT @V305096 03514000
  3517. BAL R6,PRTLST LIST CONTROL CARD IN I/O AREA @V305096 03515000
  3518. L R6,SAVIT @V305096 03516000
  3519. LA R0,1 @V305096 03517000
  3520. CLC PHVERB(7),KACT IS IT ACTION @V305096 03518000
  3521. BE CTLRET BYPASS ACTION CARD BY IGNORING IT@V305096 03519000
  3522. CLC PHVERB(7),KCAT IF VERB IS CATALR, @V305096 03520000
  3523. BE CTLRET IGNORE IT. @V305096 03521000
  3524. CLI INPBLK,C'*' IS IT A COMMENT CARD??? @V305096 03522000
  3525. BE CTLRET YES,PLEASE IGNORE IT @V305096 03523000
  3526. CLC PHVERB(8),KINC IS IT INCLUDE @V305096 03524000
  3527. L RB,AMSG01 INVALID CTL CARD @V305096 03525000
  3528. BNE ERROR IF NOT, ERROR @V305096 03526000
  3529. EJECT 1 03527000
  3530. * 03528000
  3531. *** INCLUDE CARD 03529000
  3532. * 03530000
  3533. LA R9,INCLPR GET ADDRESS OF INCLUDE PROCESSOR @V305096 03531000
  3534. MVI NMSBSW,X'00' RESET SWITCH @V305096 03532000
  3535. CLC RDCB00,PRVADDR WAS READ FROM SYSRLB @V305096 03533000
  3536. BNE INCCRD1 NO @V305096 03534000
  3537. OI PERISW,HEX4 FROM SYSRLB @V305096 03535000
  3538. INCCRD1 OI PHCSW,X'04' TURN 1ST FIELD IN INCLUDE SWT ON @V305096 03536000
  3539. LA R7,PHNAME-1 SET BUCKET ADDRESS FOR EXTRACTED @V305096 03537000
  3540. BAL RE,EXTRCT NAME AND EXTRACT IT @V305096 03538000
  3541. B FINDND FIND END @V305096 03539000
  3542. * 03540000
  3543. CLI 0(R6),C'(' IS NEXT POSSIBLE NAMELIST @V305096 03541000
  3544. BNE ERR010 INVALID PARAMETER @V305096 03542000
  3545. CLI NMELST,C' ' IF NAMELIST IS PRESENT, @V305096 03543000
  3546. L RB,AMSG33 NESTED SUBMODULAR @V305096 03544000
  3547. BNE ERROR INCLUDE IS INVALID @V305096 03545000
  3548. NI ERRNML+1,X'0F' ALLOW CLR'NG OF NMELST ON ERROR @V305096 03546000
  3549. AR R6,R0 UPDATE PAST LEFT PAREN @V305096 03547000
  3550. LA R5,5 SET COUNT FOR NAMELIST ENTRIES @V305096 03548000
  3551. LA R8,NMELST-9 PREPARE TO SET ADDR OF BUCKET @V305096 03549000
  3552. LABST LA R8,8(R8) UPDATE TO START OF NEXT ENTRY @V305096 03550000
  3553. * 03551000
  3554. LR R7,R8 SET ADDR OF BUCKET FOR EXTRACTED @V305096 03552000
  3555. BAL RE,EXTRCT FIELD, AND EXTRACT IT @V305096 03553000
  3556. B CHKRP CHECK FOR RIGHT PARENTHESIS @V305096 03554000
  3557. BCT R5,LABST KEEP MOVING LABELS IN @V305096 03555000
  3558. * 03556000
  3559. L RB,AMSG14 SUB-MODULAR NAMELIST @V305096 03557000
  3560. B ERRNML TOO LONG @V305096 03558000
  3561. CHKRP CLI 0(R6),C')' TEST FOR DELIMIT OF NMELST @V305096 03559000
  3562. BNE ERR010 ILLEGAL DELIMITER @V305096 03560000
  3563. BAL RF,UPDATE UPDATE TO NEXT CHARACTER @V305096 03561000
  3564. BAL RE,CMDEL FIND COMMA DELIMITER @V305096 03562000
  3565. B FINDND IF NOT SHOULD BE END @V305096 03563000
  3566. B ERR010 ILLEGAL DELIMITER @V305096 03564000
  3567. FINDND CLI 0(R6),C' ' CHECK FOR BLANK @V305096 03565000
  3568. BNE ERR010 ERROR IF NOT END @V305096 03566000
  3569. CLI PHNAME,C' ' TEST FOR UNNAMED SUB-MOD ONLY @V305096 03567000
  3570. BE SETMDS SET MODULE STATUS FOR SUBMOD@V305096 03568000
  3571. BCTR R6,0 BACK UP INPUT POINTER @V305096 03569000
  3572. CLI 0(R6),C')' IF CHARACTER IS ), THEN IT MUST @V305096 03570000
  3573. BCR 7,R9 BE NAMED SUBMODULAR @V305096 03571000
  3574. OI NMSBSW,X'02' TURN ON NEST LIST SWITCH @V305096 03572000
  3575. OI SBMDST,X'01' SUB-MODULAR INPUT FLAG @V305096 03573000
  3576. BR R9 EXIT TO ADDRESS IN R9 @V305096 03574000
  3577. * 03575000
  3578. SETMDS OI MODSTS,X'02' SET BIT ON FOR UNAMED SUBMOD@V305096 03576000
  3579. B RDNEXT GO TO BUPASS CONTROL CARDS @V305096 03577000
  3580. EJECT 1 03578000
  3581. * 03579000
  3582. *** ENTRY CARD 03580000
  3583. * 03581000
  3584. ENTCRD TM ALNKSW,X'01' IF AUTOLINK REQUESTED, @V305096 03582000
  3585. BO ENTPRT SAVE ADDR OF CARD & GO AUTOLINK @V305096 03583000
  3586. * 03584000
  3587. SAVCTL MVC CTLSVE,COMNRF @V305096 03585000
  3588. B ALNKPR AND GO AUTOLINK @V305096 03586000
  3589. * 03587000
  3590. ENTPRT ST R6,SAVIT @V305096 03588000
  3591. BAL R6,PRTLST PRINT CARD IN I/O AREA @V305096 03589000
  3592. L R6,SAVIT @V305096 03590000
  3593. LA R0,1 RESTORE CONSTANT @V305096 03591000
  3594. * 03592000
  3595. LA R9,ALNKGT R9 GETS ADDR OF ENTRY PROC'R @V305096 03593000
  3596. LA R7,PHNAME-1 SET BUCKET ADDRESS FOR EXTRACTED @V305096 03594000
  3597. BAL RE,EXTRCT NAME AND EXTRACT IT @V305096 03595000
  3598. B FINDND FIND END @V305096 03596000
  3599. B ERR010 ILLEGAL DELIMITER @V305096 03597000
  3600. EJECT 1 03598000
  3601. * 03599000
  3602. *** PHASE CARD 03600000
  3603. * 03601000
  3604. PHCRD NI FRSTSW+1,X'00' NOP FIRST TIME THROUGH SW. @V305096 03602000
  3605. NI POPTSW,HEXF RESET OPTION SWITCH @V305096 03603000
  3606. TM RDALSW+1,X'F0' IF PHASE CARD ENCOUNTERED DURING @V305096 03604000
  3607. L RB,AMSG25 @V305096 03605000
  3608. BO ERROR AUTOLINK IT IS AN ERROR @V305096 03606000
  3609. * 03607000
  3610. TM ALNKSW,X'01' IF AUTOLINK REQUESTED, SAVE ADDR @V305096 03608000
  3611. BZ SAVCTL OF CARD AND GO AUTOLINK @V305096 03609000
  3612. * 03610000
  3613. ST R6,SAVIT @V305096 03611000
  3614. BAL R6,PRTLST PRINT CARD IN I/O AREA @V305096 03612000
  3615. L R6,SAVIT @V305096 03613000
  3616. LA R0,1 RESTORE CONSTANT @V305096 03614000
  3617. * 03615000
  3618. LA R7,PHNAME-1 SET ADDR OF BUCKET FOR EXTRACTED @V305096 03616000
  3619. BAL RE,EXTRCT FIELD, AND EXTRACT IT @V305096 03617000
  3620. B ERR010 ILLEGAL DELIMITER @V305096 03618000
  3621. * 03619000
  3622. * VERIFY PHASE NAME - IT MAY ONLY CONTAIN THE FOLLOWING 03620000
  3623. * CHARACTERS A - Z, 0 - 9, /, #, $, @ 03621000
  3624. * AND MAY NOT BE 'ALL' 03622000
  3625. * 03623000
  3626. SR R7,RB CALC LENGTH OF NAME - 1 @V305096 03624000
  3627. EX R7,TRT VERIFY PHASENAME @V305096 03625000
  3628. BZ TSTALL ALL CHARACTERS VALID @V305096 03626000
  3629. * 03627000
  3630. ERR021 L RB,AMSG21 PHASE NAME @V305096 03628000
  3631. B ERROR INVALID @V305096 03629000
  3632. * 03630000
  3633. TSTALL CLC CHARALL,PHNAME IS PHASE NAME 'ALL' @V305096 03631000
  3634. BNE PHCRD1 NO, BRANCH @V305096 03632000
  3635. B ERR021 YES, INVALID PHASE NAME @V305096 03633000
  3636. * 03634000
  3637. PHCRD1 CLI 0(R6),C'+' WAS DELIMITER A PLUS SIGN @V305096 03635000
  3638. BNE NTABS NO, THIS IS NOT ABS ADDR @V305096 03636000
  3639. * 03637000
  3640. DSPRTN BAL RF,UPDATE UPDATE PAST +/- SIGN @V305096 03638000
  3641. CLI 0(R6),C'X' HEX DISPLAC @V305096 03639000
  3642. BNE DECDSP NO, DECIMAL DISPLACEMENT @V305096 03640000
  3643. * 03641000
  3644. CLI 1(R6),C'''' NEXT QUOTE @V305096 03642000
  3645. BNE ERR010 @V305096 03643000
  3646. * 03644000
  3647. LA R6,2(R6) UPDATE PAST QUOTE DELIMITER @V305096 03645000
  3648. LA R3,7 MAX LENGTH FOR HEX FIELD @V305096 03646000
  3649. LA R7,DBLWRD SET BUCKET ADDRESS FOR EXTRACTED @V305096 03647000
  3650. BAL RE,EXTRCT+4 FIELD, AND EXTRACT IT @V305096 03648000
  3651. B LKQUO LOOK FOR QUO DELIMITER @V305096 03649000
  3652. B ERR010 ERROR IF DELIMITED BY COMMA @V305096 03650000
  3653. * 03651000
  3654. LKQUO CLI 0(R6),C'''' WAS DELIMITER A QUOTE @V305096 03652000
  3655. BNE ERR010 ERROR IF NOT DELIMITED BY QUOTE @V305096 03653000
  3656. * 03654000
  3657. BAL RF,UPDATE UPDATE PAST QUOTE DELIMITER @V305096 03655000
  3658. BAL RE,CMDEL CHECK FOR COMMA DELIMITER @V305096 03656000
  3659. OI PHCSW,X'01' TURN NON-COMMA DELIMITER SW ON @V305096 03657000
  3660. LA R3,DBLWRD+1 SET PTR TO START OF HEX FIEL@V305096 03658000
  3661. AR R7,R0 R7 PTS TO LAST CHAR IN BUCKE@V305096 03659000
  3662. SR R7,R3 ADD 1 & SUB R3 TO GET LGTH @V305096 03660000
  3663. LR R2,R7 SET COUNT FOR CNVHEX ROUTINE@V305096 03661000
  3664. * 03662000
  3665. BAL RF,CNVHEX CONVERT HEX TO BINARY @V305096 03663000
  3666. TSTNEG TM PHCSW,X'02' WAS DISPLACEMENT NEGATIVE @V305096 03664000
  3667. BZ STORR5 NO, STORE R5 IN DISP FIELD @V305096 03665000
  3668. LNR R5,R5 MAKE THIS MINUS @V305096 03666000
  3669. * 03667000
  3670. STORR5 ST R5,DISPLC STORE REGISTER 5 @V305096 03668000
  3671. TM PHCSW,X'01' WAS DELIMITER NON-COMMA @V305096 03669000
  3672. BZ PHCOPTN FIND OPTIONS @V305096 03670000
  3673. * 03671000
  3674. CLI 0(R6),C' ' WAS DELIMITER BLANK @V305096 03672000
  3675. BE ALNKGT YES, GO TO PHASE PROCESSER @V305096 03673000
  3676. B ERR010 ILLEGAL DELIMITER @V305096 03674000
  3677. * 03675000
  3678. DECDSP MVI CNVBUC,C' ' CLEAR BUCKET @V305096 03676000
  3679. MVC CNVBUC+1(7),CNVBUC @V305096 03677000
  3680. LA R7,CNVBUC-1 SET BUCKET ADDRESS FOR EXTRACTED @V305096 03678000
  3681. BAL RE,EXTRCT FIELD AND EXTRACT IT @V305096 03679000
  3682. * 03680000
  3683. OI PHCSW,X'01' TURN ON NON-COMMA DELIMITER SW @V305096 03681000
  3684. LA R4,CNVBUC SET START ADDR OF DEC FIELD @V305096 03682000
  3685. L RB,AMSG02 INVALID DEC/HEX @V305096 03683000
  3686. CLI 0(R7),C'K' TEST FOR K = 1024 @V305096 03684000
  3687. BNE TSTLIM @V305096 03685000
  3688. BCTR R7,0 REDUCE LAST CHAR ADDR @V305096 03686000
  3689. * 03687000
  3690. TSTLIM CLI 0(R4),C'0' LESS THAN ZERO @V305096 03688000
  3691. BL ERROR INVALID CHARACTER @V305096 03689000
  3692. CLI 0(R4),C'9' GREATER THAN 9 IS AN ERROR @V305096 03690000
  3693. BH ERROR INVALID CHARACTER @V305096 03691000
  3694. * 03692000
  3695. AR R4,R0 INCREASE POINTER BY ONE @V305096 03693000
  3696. CR R4,R7 R7 CONTAINS END OF FLD ADDR @V305096 03694000
  3697. BNH TSTLIM CONTINUE TESTING LIMITS @V305096 03695000
  3698. * 03696000
  3699. LR R4,R7 @V305096 03697000
  3700. LA R3,CNVBUC GET BEG ADDR AND SUBT END @V305096 03698000
  3701. SR R4,R3 ADDRESS TO GET EXECUTE COUNT@V305096 03699000
  3702. * 03700000
  3703. EX R4,PACK PACK DECIMAL FIELD @V305096 03701000
  3704. CVB R5,DBLWRD CONVERT TO BINARY @V305096 03702000
  3705. * 03703000
  3706. CLI 1(R7),C'K' TEST FOR K = 1024 @V305096 03704000
  3707. BNE NOTK @V305096 03705000
  3708. MH R5,K1024 MULTIPLY BY 1024 @V305096 03706000
  3709. * 03707000
  3710. NOTK B TSTNEG TEST FOR NEG DISPL'MT @V305096 03708000
  3711. * 03709000
  3712. PACK PACK DBLWRD(8),CNVBUC(0) PACK VAR LGTH FIELD @V305096 03710000
  3713. * 03711000
  3714. NTABS LA R7,SYMBOL-1 SET ADDR OF BUCKET FOR EXTRACTED @V305096 03712000
  3715. BAL RE,EXTRCT FIELD, AND EXTRACT IT @V305096 03713000
  3716. B FNDDEL NO COMMA, FIND DELIMITER @V305096 03714000
  3717. B PHCOPTN COMMA DELIMITER, FIND OPTNS @V305096 03715000
  3718. * 03716000
  3719. FNDDEL CLI 0(R6),C'(' POSSIBLE QUALIFER @V305096 03717000
  3720. BE QUAPRO PROCESS QUALIFIER @V305096 03718000
  3721. * 03719000
  3722. CRDEND CLI 0(R6),C' ' END TEST @V305096 03720000
  3723. BE ALNKGT YES, EXIT @V305096 03721000
  3724. * 03722000
  3725. CLI 0(R6),C'+' WAS DELIMITER PLUS @V305096 03723000
  3726. BE DSPRTN PROCESS DISPLACEMENT @V305096 03724000
  3727. * 03725000
  3728. CLI 0(R6),C'-' WAS THIS NEG DELIMITER @V305096 03726000
  3729. BNE ERR010 ILLEGAL DELIMITER @V305096 03727000
  3730. OI PHCSW,X'02' TURN ON NEG DISP SWITCH @V305096 03728000
  3731. B DSPRTN BR TO DISPL'MT PROCESSOR @V305096 03729000
  3732. * 03730000
  3733. QUAPRO BAL RF,UPDATE UPDATE PAST LEFT PAREN @V305096 03731000
  3734. LA R7,QUALIF-1 SET BUCKET ADDRESS FOR EXTRACTED @V305096 03732000
  3735. BAL RE,EXTRCT FIELD AND EXTRACT IT @V305096 03733000
  3736. B CHKRPN CHECK FOR RIGHT PAREN DELIMITER @V305096 03734000
  3737. B ERR010 INVALID DELIMITER @V305096 03735000
  3738. CHKRPN CLI 0(R6),C')' IF THIS IS NOT RIGHT PAREN @V305096 03736000
  3739. BNE ERR010 THEN IT IS AN INVALID DELIMITER @V305096 03737000
  3740. BAL RF,UPDATE UPDATE PAST THE RIGHT PAREN @V305096 03738000
  3741. BAL RE,CMDEL CHECK FOR COMMA DELIMITER @V305096 03739000
  3742. B CRDEND TEST FOR END ON NON-COMMA @V305096 03740000
  3743. EJECT 1 03741000
  3744. * 03742000
  3745. ** SCAN FOR OPTIONS NOAUTO,SVA,PBDY IN PHASE CARD 03743000
  3746. * 03744000
  3747. PHCOPTN MVC DBLWRD,BLANKS CLEAR RECEIVING FIELD @V305096 03745000
  3748. LA R7,DBLWRD-DEC1 ADDRESS RECEIVING FIELD @V305096 03746000
  3749. BAL RE,EXTRCT GET OPTION @V305096 03747000
  3750. B ISITBLNK NON COMMA EXIT @V305096 03748000
  3751. BCTR R6,0 POINT R6 TO DELIMITER @V305096 03749000
  3752. SPACE 1 03750000
  3753. NOAUTCHK CLC DBLWRD,KNOAUTO OPTION NOAUTO ? @V305096 03751000
  3754. BNE PBDYCHK NO, CHECK FOR PBDY @V305096 03752000
  3755. OI POPTSW,OPTNOAUT SET NOAUTO BIT IN SW @V305096 03753000
  3756. B NEXTOPT CHECK LAST DELIMITER @V305096 03754000
  3757. SPACE 1 03755000
  3758. PBDYCHK CLC DBLWRD,KPBDY OPTION PBDY ? @V305096 03756000
  3759. BNE ERR061 NO, SYNTAX ERROR IN OPT @V305096 03757000
  3760. OI POPTSW,OPTPBDY SET PBDY BIT IN SWITCH @V305096 03758000
  3761. SPACE 1 03759000
  3762. NEXTOPT CLI 0(R6),BLANK WAS LAST DEL A BLANK @V305096 03760000
  3763. BE PHCEXIT YES, EXIT FROM THIS ROUT@V305096 03761000
  3764. AR R6,R0 UPDATE R6 PAST COMMA @V305096 03762000
  3765. B PHCOPTN GET NEXT FIELD @V305096 03763000
  3766. SPACE 1 03764000
  3767. ISITBLNK CLI 0(R6),BLANK WAS DELIMITER A BLANK @V305096 03765000
  3768. BNE ERR010 NO, INVALID DELIMITER @V305096 03766000
  3769. B NOAUTCHK COMPARE OPTION @V305096 03767000
  3770. SPACE 1 03768000
  3771. PHCEXIT TM POPTSW,OPTNOAUT WAS NOAUTO OPTION SPECI @V305096 03769000
  3772. BZ ALNKGT BRANCH TO PHASE PROCE @V305096 03770000
  3773. OI ALNKSW,HEX2 SET AUTOL SW TO NOAUTO @V305096 03771000
  3774. B ALNKGT BRANCH TO PHASE PROCE @V305096 03772000
  3775. SPACE 1 03773000
  3776. ERR061 L RB,AMSG61 LOAD ERROR CODE @V305096 03774000
  3777. B ERROR PRINT MESSAGE @V305096 03775000
  3778. EJECT 03776000
  3779. *** REQUEST AUTOLINK 03777000
  3780. * 03778000
  3781. ENTALK TM ALNKSW,HEX1 IF AUTOLINK @V305096 03779000
  3782. * SAVE ADDRESS 03780000
  3783. BZ SAVCTL1 OF CARD AND GO AUTOLINK @V305096 03781000
  3784. BAL R6,PRTLST PRINT CARD IN I/O AREA @V305096 03782000
  3785. B ALNKGT FETCH CONTROL POST PROCESSER@V305096 03783000
  3786. * 03784000
  3787. SAVCTL1 MVC CTLSVE,COMNRF SAVE ADDRESS OF THIS CARD @V305096 03785000
  3788. B ALNKPR AND GO AUTOLINK @V305096 03786000
  3789. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03787000
  3790. * 03788000
  3791. * R15 S/R TO SKIP BLANKS IN CONTROL CARDS 03789000
  3792. * 03790000
  3793. * EXITS RF - NORMAL RETURN 03791000
  3794. * CTLRET - ON INCLUDE WITH NO OPERAND 03792000
  3795. * WRTHDR - ON ENTRY WITH NO OPERAND 03793000
  3796. * R0 - SUPPLIES CONSTANT OF 1 03794000
  3797. * RA - SUPPLIES ADDRESS BLANK/RETURNS ADDRESS NON-BL 03795000
  3798. * R6- SUPPLIES ADDRESS OF COLUMN 72 03796000
  3799. * 03797000
  3800. SKIPB AR R6,R0 INCREASE R6 BY ONE @V305096 03798000
  3801. CLI 0(R6),C' ' IS IT BLANK @V305096 03799000
  3802. BCR 7,RF EXIT ON BLANK @V305096 03800000
  3803. * 03801000
  3804. LA R4,E1+71 SET R4 TO COLUMN 72 @V305096 03802000
  3805. CR R6,R4 CHECK FOR END @V305096 03803000
  3806. BL SKIPB CONTINUE SKIPPING BLANKS @V305096 03804000
  3807. * 03805000
  3808. CR RB,RA INITIAL SCAN FOR BLANKS? @V305065 03806000
  3809. L RB,AMSG01 SET ERROR MESSAGE IF SO @V305065 03807000
  3810. BE CTLRET IGNORE THIS BLANK CARD @V305096 03808000
  3811. * 03809000
  3812. CLC PHVERB(6),KENT WAS VERB ENTRY @V305096 03810000
  3813. BE ENTALK YES EXIT TO ENTRY ROUTINE @V305096 03811000
  3814. * 03812000
  3815. CLC PHVERB(8),KINC IF THIS WAS AN INCLUDE CARD @V305096 03813000
  3816. BE CTLRET IGNORE CARD IF NO OPERANDS @V305096 03814000
  3817. * 03815000
  3818. CLC PHVERB(6),KPHA IF THIS WAS A PHASE CARD @V305096 03816000
  3819. BE ERR012 AN OPERAND IS MISSING @V305096 03817000
  3820. BR RF EXIT ON INVALID CONTROL CARD@V305096 03818000
  3821. * 03819000
  3822. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03820000
  3823. * 03821000
  3824. * R15 S/R TO CHECK FOR CARD EXTENDING BEYOND COL 71 03822000
  3825. * 03823000
  3826. * RA - SUPPLIES COLUMN TO TEST/ RETURNS COLUMN+1 03824000
  3827. * R6- SUPPLIES ADDRESS OF COLUMN 72 03825000
  3828. * 03826000
  3829. UPDATE AR R6,R0 UPDATE TO NEXT CHARACTER @V305096 03827000
  3830. LA R4,E1+71 GET ADDRESS OF COLUMN 72 @V305096 03828000
  3831. CR R6,R4 COLUMN 72 @V305096 03829000
  3832. BCR 13,RF EXIT IF NOT HIGH @V305096 03830000
  3833. * 03831000
  3834. L RB,OTHMTX GET CSECT ADDRESS @VA05886 03832000
  3835. USING DLKOTH,RB SET ADDRESSABILITY @VA05886 03833000
  3836. L RB,AMSG13 INFORM BEYOND COL 71 @V305096 03834000
  3837. DROP RB FREE THE REGISTER @VA05886 03835000
  3838. B ERROR @V305096 03836000
  3839. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03837000
  3840. * 03838000
  3841. * R14 S/R TO EXTRACT A FIELD FROM THE CONTROL CARD 03839000
  3842. * 03840000
  3843. * EXITS RE - NON-COMMA DELIMITER 03841000
  3844. * RE+4 - COMMA DELIMITER 03842000
  3845. * 03843000
  3846. * R0 - SUPPLIES CONSTANT OF 1 03844000
  3847. * R1 - WORK REGISTER 03845000
  3848. * R3 - SUPPLIES MAXIMUM FIELD LENGTH SPECIFICATION 03846000
  3849. * R4 - WORK REGISTER 03847000
  3850. * R7 - SUPPLIES ADDRESS OF RECIPIENT BUCKET 03848000
  3851. * RETURNS ADDRESS OF LAST BYTE IN BUCKET 03849000
  3852. * R6 - ADDRESS TO START EXTRACTION 03850000
  3853. * RETURNS ADDRESS NON-COMMA DELIMITER OR 03851000
  3854. * RETURNS ADDRESS COMMA DELIMITER+1 03852000
  3855. * RF - DESTROYED 03853000
  3856. * 03854000
  3857. EXTRCT LA R3,9 MAXIMUM VALID CHARACTERS @V305096 03855000
  3858. LA RB,1(R7) SAVE ADDRESS OF BUCKET IN WHICH @V305096 03856000
  3859. * OPERAND IS STORED AS CHECK FOR ERROR 12. 03857000
  3860. RESET LA R4,DELIM ADDRESS OF DELIMIT TABLE @V305096 03858000
  3861. LA R1,L'DELIM NUMBER OF DELIMITERS @V305096 03859000
  3862. * 03860000
  3863. FINDEL CLC 0(1,R6),0(R4) TEST INPUT FOR DELIMITER @V305096 03861000
  3864. BE FONDEL FOUND DELIMITER @V305096 03862000
  3865. * 03863000
  3866. AR R4,R0 UPDATE TO NEXT DELIMITER @V305096 03864000
  3867. BCT R1,FINDEL FIND THE DELIMITER @V305096 03865000
  3868. * 03866000
  3869. MVC 1(1,R7),0(R6) MOVE NON DELIMITER TO BUCKET@V305096 03867000
  3870. AR R7,R0 UPDATE BUCKET ADDRESS @V305096 03868000
  3871. BAL RF,UPDATE UPDATE INPUT POINTER @V305096 03869000
  3872. BCT R3,RESET RESET TABLE AND KEEP GOING @V305096 03870000
  3873. * 03871000
  3874. L RB,AMSG11 OPERAND TOO LONG @V305096 03872000
  3875. B ERRNML @V305096 03873000
  3876. * 03874000
  3877. FONDEL CLI 0(RB),C' ' HAS ANY THING BEEN MOVED @V305096 03875000
  3878. BNE CMDEL TEST FOR COMMA DELIMITER @V305096 03876000
  3879. * 03877000
  3880. ERR012 L RB,AMSG12 OPERAND MISSING @V305096 03878000
  3881. TM PHCSW,X'04' TEST FOR VALID SKIPPED FIELD@V305096 03879000
  3882. BZ ERRNML ERROR IF NOT ON @V305096 03880000
  3883. NI PHCSW,X'FB' RESET SWITCH IF ON @V305096 03881000
  3884. * 03882000
  3885. CMDEL CLI 0(R6),C',' WAS DELIMITER A COMMA @V305096 03883000
  3886. BCR 7,RE EXIT ON NON COMMA @V305096 03884000
  3887. * 03885000
  3888. BAL RF,UPDATE UPDATE TO NEXT CHARACTER @V305096 03886000
  3889. B 4(RE) EXIT @V305096 03887000
  3890. EJECT 03888000
  3891. ************************************************************** 03889000
  3892. * CONSTANTS USED BY CONTROL CARD SCANNER 03890000
  3893. ************************************************************** 03891000
  3894. * 03892000
  3895. * TRANSLATE AND TEST INSTRUCTION USED TO VERIFY 03893000
  3896. * PHASE NAME 03894000
  3897. * 03895000
  3898. TRT TRT PHNAME(0),TRTTAB @V305096 03896000
  3899. * 03897000
  3900. * TABLE USED FOR TRT INSTRUCTION 03898000
  3901. * 03899000
  3902. TRTTAB DC 256X'FF' . @V305096 03900000
  3903. ORG TRTTAB+C'$' VALID CHARACTERS @V305096 03901000
  3904. DC 1X'00' $ @V305096 03902000
  3905. ORG TRTTAB+C'/' VALID CHARACTERS @V305096 03903000
  3906. DC X'00' / @V305096 03904000
  3907. ORG TRTTAB+C'#' VALID CHARACTERS @V305096 03905000
  3908. DC 2X'00' # @ @V305096 03906000
  3909. ORG TRTTAB+C'A' VALID CHARACTERS @V305096 03907000
  3910. DC 9X'00' A B C D E F G H I @V305096 03908000
  3911. ORG TRTTAB+C'J' VALID CHARACTERS @V305096 03909000
  3912. DC 9X'00' J K L M N O P Q R @V305096 03910000
  3913. ORG TRTTAB+C'S' VALID CHARACTERS @V305096 03911000
  3914. DC 8X'00' S T U V W X Y Z @V305096 03912000
  3915. ORG TRTTAB+C'0' VALID CHARACTERS @V305096 03913000
  3916. DC 10X'00' 0 1 2 3 4 5 6 7 8 9 @V305096 03914000
  3917. * 03915000
  3918. * 03916000
  3919. ORG , @V305096 03917000
  3920. KCAT DC C'CATALR ' @V305096 03918000
  3921. KPHA DC C'PHASE ' @V305096 03919000
  3922. KACT DC C'ACTION ' @V305096 03920000
  3923. KINC DC C'INCLUDE ' @V305096 03921000
  3924. KENT DC C'ENTRY ' @V305096 03922000
  3925. KNOAUTO DC C'NOAUTO ' CONSTANTS @V305096 03923000
  3926. KPBDY DC C'PBDY ' SCAN OF @V305096 03924000
  3927. CHARALL DC CL4'ALL' USED TO VALIDATE PH NAME@V305096 03925000
  3928. * 03926000
  3929. DELIM DC C',= +-()''' SET OF DELIMITERS @V305096 03927000
  3930. * 03928000
  3931. CNVBUC DC 8C' ' BUCKET FOR STORING DECIMAL CHARS @V305096 03929000
  3932. * 03930000
  3933. PHCSW DC X'0' PHASE CARD PROCESSER SWITCH @V305096 03931000
  3934. * X'01' IF DISP DELIM NON-COMMA 03932000
  3935. * X'02' IF DISP SIGN NEGATIVE 03933000
  3936. * X'04' IF FIRST FIELD IN INCLUDE OP 03934000
  3937. * 03935000
  3938. TITLE 'DLKSCN LINKAGE EDITOR PROCESS INCLUDE CARDS - $LNKEDT - DOS' 03936000
  3939. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 03937000
  3940. * 03938000
  3941. * INCLUDE PROCESSOR 03939000
  3942. * 03940000
  3943. INCLPR LA R6,PHNAME NAME OF MODULE TO SEARCH FOR@V305096 03941000
  3944. * 03942000
  3945. MVC INCSAV(80),E1 IN THE CASE OF ERRORS ON INCLUDE @V305096 03943000
  3946. * STATEMENTS, SPECIAL ARRANGEMENTS 03944000
  3947. * HAVE TO BE MADE AS THE I/O AREA IS 03945000
  3948. * USED TO READ IN DIRECTORY - BUT AS 03946000
  3949. * CONTROL CARDS CANNOT BE BLOCKED IT 03947000
  3950. * IT IS POSSIBLE TO RETAIN IT FOR 03948000
  3951. * LISTING PURPOSES IN CASE OF ERROR 03949000
  3952. * 03950000
  3953. INCGET NI ALNKSW2+DEC1,HEXF RESET EXLOAD SUBR TO USE @V305096 03951000
  3954. * NORMAL ENTRYPOINT 03952000
  3955. LA R2,INPBLK RELOCATE THE ADCON IN THE @V305096 03953000
  3956. ST R2,READRD CCW TO READ RELOCATABLE @V305096 03954000
  3957. MVI READRD,HEX6 DIRECTORY @V305096 03955000
  3958. TM RELPVT,X'FE' PRIVATE REL LIB ASSIGNED@V305096 03956000
  3959. BO INCGET1 NO, GO TEST FOR CMS TEXT@V305096 03957000
  3960. LA R2,RELPVT START ADDR OF PRIV REL LIB @V305096 03958000
  3961. MVC DSKCCB,PRVADDR SYSRLB LOGICAL UNIT TO CCB @V305096 03959000
  3962. OI PVTSW,X'0F' @VA09417 03959500
  3963. B INCGET2 @V305096 03960000
  3964. * 03961000
  3965. INCGET1 EQU * @V305065 03962000
  3966. USING FSCBD,R1 @V305065 03963000
  3967. LA R1,DOSTXT POINT TO DOSTXT PLIST @V305065 03964000
  3968. LM R2,R3,FSCBFN SAVE PREVIOUS FILENAME @V305065 03965000
  3969. MVC FSCBFN,0(R6) GET FILENAME @V305065 03966000
  3970. FSSTATE ,FSCB=(1),ERROR=SYSLIB1 CHECK IF FILE EXISTS @V305065 03967000
  3971. OI CMSSWT1,DOSTXTSW INDICATE DOS TEXT @V305065 03968000
  3972. LR RF,R1 POINT TO FSTB @V305065 03969000
  3973. B ALKFND1 @V305065 03970000
  3974. SYSLIB1 EQU * @V305065 03971000
  3975. STM R2,R3,FSCBFN RESTORE PREV. FILENAME @V305065 03972000
  3976. MVC DSKCCB,RESADDR FORCE SYSTEM RELO LIBRARY @V305096 03973000
  3977. CLI RELDST,UNASSGN IF RELO LIBRARY NOT ASSIGNED@V305096 03974000
  3978. BNE INCGET1A SETUP TO SEARCH SYSTEM RELO @V305096 03975000
  3979. MSGSW B ALKERR SWITCH USED FOR CORRECT MSG.@V305096 03976000
  3980. OI MSGSW+1,X'F0' RESET SWITCH @V305096 03977000
  3981. B INCLERR THERE MUST BE AN INVALID SEARCH @V305096 03978000
  3982. * 03979000
  3983. INCGET1A LA R2,RELDST START ADDRESS OF REL LIB @V305096 03980000
  3984. NI PVTSW,X'00' @VA09417 03980500
  3985. INCGET2 MVC CYLFCT(4),FCTREL FACTORS TO OVERFLOW ON @V305096 03981000
  3986. MVC DSKWHT(8),READRD CCW TO READ RELOC DIRECTORY @V305096 03982000
  3987. * 03983000
  3988. LA RA,INPBLK INITIALISE SCAN OF BLOCK @V305096 03984000
  3989. LA RA,80(,RA) @V305065 03985000
  3990. LA R3,HDFCT1ST 1ST DIR BLK HAS 15 ENTRIES @V305096 03986000
  3991. INCREE MVC ADRESS,DEC0(R2) INIT.READING DIR. BLOCK @V305096 03987000
  3992. LH R1,DSKCCB GET DEVICE ADDRESS @V305065 03988000
  3993. LA RF,1 INDICATE ONE READ @V305065 03989000
  3994. BAL RE,DISKRDWR CALL DISKIO S/R @V305096 03990000
  3995. * 03991000
  3996. CH R3,K15 FIRST DIR. BLOCK? @V305065 03992000
  3997. BNE INCLOP BRANCH IF NOT @V305065 03993000
  3998. CLC DSKCCB,PRVADDR IS THIS PRIVATE RELOC? @V305065 03994000
  3999. BNE INCLOP BRANCH IF NOT @V305065 03995000
  4000. CLC RELPVT,INPBLK+2 ARE DISK ADDRESSES THE SAME? @V305065 03996000
  4001. BE INCLOP @VA06193 03997000
  4002. CLC RELDST,INPBLK+2 CHECK FOR SYSTEM RLB @VA06193 03998000
  4003. BNE ERR094 @VA06193 03999000
  4004. * 04000000
  4005. INCLOP CLC E1(8),0(R6) IF NAMES = GOTO PROC INCLUDE@V305096 04001000
  4006. BE ALKFND2 @V305096 04002000
  4007. * 04003000
  4008. CLI E1,C'*' IF END OF DIR FOUND, BOOK @V305096 04004000
  4009. BE SYSLIB REQUESTED NOT IN LIBRARY @V305096 04005000
  4010. LA RA,16(RA) CONT LOOPNG IN BLK FOR EQUAL@V305096 04006000
  4011. BCT R3,INCLOP UNTIL ALL RECORDS TESTED @V305096 04007000
  4012. * 04008000
  4013. LA R2,ADRESS POINT TO DISK ADDRESS @V305065 04009000
  4014. BAL RE,AD1DSK INCREMENT TO NEXT BLOCK @V305096 04010000
  4015. LA R2,NEWDAD DISK ADDR OF NEXT DIR BLK @V305096 04011000
  4016. * 04012000
  4017. LA RA,INPBLK START OF DIRECTORY BLOCK @V305096 04013000
  4018. LA R3,20 REL DIR BLK HAS 20 ENTRIES @V305096 04014000
  4019. B INCREE GO TO READ NEXT BLOCK @V305096 04015000
  4020. * 04016000
  4021. ALKFND1 EQU * @V305065 04017000
  4022. TM PERISW,CMSTXT IS THIS DOS TEXT? @V305065 04018000
  4023. BZ ALKFND1A BRANCH IF NOT @V305065 04019000
  4024. STM R2,R3,PERIDA+2 SAVE DOSTXT NAME @V305065 04020000
  4025. LA R1,DOSTXT POINT TO PLIST @V305065 04021000
  4026. MVC PERIDA(2),ONS000 SAVE NEXT RECORD NUMBER @V305065 04022000
  4027. MVC PERIDA+10(2),ITMCNT SAVE ITEM COUNT @V305065 04023000
  4028. ALKFND1A EQU * @V305065 04024000
  4029. USING FSTSECT,RF @V305065 04025000
  4030. MVC ITMCNT,FSTIC MOVE IN CURRENT TEXT COUNT @V305065 04026000
  4031. DROP RF @V305065 04027000
  4032. B ALKFND @V305065 04028000
  4033. ALKFND2 EQU * @V305065 04029000
  4034. TM PERISW,CMSTXT IS THIS DOS TEXT? @V305065 04030000
  4035. BZ ALKFND BRANCH IF NOT @V305065 04031000
  4036. MVC PERIDA+10(2),ITMCNT SAVE TEXT ITEM COUNT @V305065 04032000
  4037. LA R1,DOSTXT POINT TO DOSTXT PLIST @V305065 04033000
  4038. MVC PERIDA+2(8),FSCBFN MOVE IN FILENAME @V305065 04034000
  4039. MVC PERIDA(2),ONS000 SAVE NEXT RECORD NUMBER @VM03218 04035000
  4040. DROP R1 @V305065 04036000
  4041. ALKFND CLI PHVERB,C'I' IF INCLUDE VERB IN FIELD @V305096 04037000
  4042. BE INCFND INCLUDE STATEMENT SERVICED @V305096 04038000
  4043. * 04039000
  4044. MVC W1(DEC4),KLIST @V305096 04040000
  4045. MVC W8(DEC8),KATLNK IDENTIFY AS AUTOLINK @V305096 04041000
  4046. MVC W19(DEC8),0(R6) MODULE NAME @V305096 04042000
  4047. BAL R6,PRINT PRINT ONTO SYSLST @V305096 04043000
  4048. * 04044000
  4049. INCFND TM ENDPER,X'FF' IF ON, THIS INDICATES THAT @V305096 04045000
  4050. L RB,AMSG32 @V305096 04046000
  4051. BNZ INCERR THERE'S NO ROOM TO PUSH DOWN@V305096 04047000
  4052. * 04048000
  4053. LA R2,(LNTPRDA+L'PERISW)*NESTNG @V305096 04049000
  4054. * LENGTH OF AREA TO BE SHIFTED 04050000
  4055. SHIFT6 IC R0,PERIDA-DEC1(R2) LOOP AROUND,LOWERING LEVEL OF@V305096 04051000
  4056. STC R0,PERIDA+LNTPRDA(R2) NESTING BY 1 THRU USE OF @V305096 04052000
  4057. BCT R2,SHIFT6 THE PUSH DOWN LIST @V305096 04053000
  4058. TM CMSSWT1,DOSTXTSW IS THIS CMS TEXT? @V305065 04054000
  4059. BZ INCNOTXT BRANCH IF NOT @V305065 04055000
  4060. MVC PERIDA(2),K1 MOVE IN RECORD COUNT @V305065 04056000
  4061. B INCPERSW @V305065 04057000
  4062. INCNOTXT EQU * @V305065 04058000
  4063. * 04059000
  4064. ** E11 CONTAINS DISK ADDRESS OF REL MODULE 04060000
  4065. *** IN C2,C1,H,R FORMAT. 04061000
  4066. ** IT IS MOVED TO PERIDA IN THE FORMAT CCHHR 04062000
  4067. * 04063000
  4068. MVC PERIDA(DEC1),E12 C1 @V305096 04064000
  4069. MVC PERIDA+DEC1(DEC1),E11 C2 @V305096 04065000
  4070. MVI PERIDA+DEC2,HEX0 H1 ALLWAYS ZERO @V305096 04066000
  4071. MVC PERIDA+DEC3(DEC2),E13 H2,R @V305096 04067000
  4072. INCPERSW EQU * @V305065 04068000
  4073. MVC PERISW,NMSBSW SAVE SWITCH SHOWING IF THIS @V305096 04069000
  4074. * IS A NAMED SUBMODULAR OR AN 04070000
  4075. * AUTOLINK INCLUDE 04071000
  4076. TM CMSSWT1,FSTSW THIS THE FIRST FILE? @V305065 04072000
  4077. BZ SETPER BRANCH IF NOT @V305065 04073000
  4078. NI CMSSWT1,255-FSTSW REMOVE FIRST SWITCH @V305065 04074000
  4079. OI PERISW,FSTFILE INDICATE IN PERISW @V305065 04075000
  4080. SETPER EQU * @V305065 04076000
  4081. MVC ONS000,PERIDA CURRENT INPUT IS REL MODULE @V305096 04077000
  4082. TM CMSSWT1,DOSTXTSW IS THIS CMS TEXT? @V305065 04078000
  4083. BZ NODOSTXT BRANCH IF NOT @V305065 04079000
  4084. NI CMSSWT1,255-DOSTXTSW TURN OFF SWITCH @V305065 04080000
  4085. MVI RDS00A+1,X'F0' INDICATE CMSREAD @V305065 04081000
  4086. OI PERISW,CMSTXT PERISW ALSO @V305065 04082000
  4087. B NOPRIV @V305065 04083000
  4088. NODOSTXT EQU * @V305065 04084000
  4089. MVI RDS00A+1,X'00' REMOVE CMSREAD SWITCH @V305065 04085000
  4090. * 04086000
  4091. OI RELBSW+1,X'F0' SET SW TO ACCEPT LIB INPUT @V305096 04087000
  4092. CLC DSKCCB,PRVADDR TEST FOR PRIV LIBRARY @V305065 04088000
  4093. BNE NOPRIV @V305096 04089000
  4094. NI PVLBSW+1,X'00' SET SW FOR PRIV LIB INPUT @V305096 04090000
  4095. OI PERISW,HEX4 SET SW FOR PRIV LIB INPUT @V305096 04091000
  4096. MVC DSKCCB,RESADDR SET UP ADDRESS FOR SYSRES @V305065 04092000
  4097. NOPRIV B CTLRET @V305096 04093000
  4098. * 04094000
  4099. *** ERROR CONDITION IN INCLUDE PROCESSOR 04095000
  4100. * 04096000
  4101. INCLERR TM PERISW,HEX4 SYSRLB INPUT @V305096 04097000
  4102. BZ ALKERR NO.... @V305096 04098000
  4103. NI PVLBSW+1,X'00' SET SW. FOR PRIV. RELO. INPUT@V305096 04099000
  4104. ALKERR EQU * @V305065 04100000
  4105. L RB,AMSG31 POINT TO MESSAGE @V305065 04101000
  4106. CLI PHVERB,C'I' FI AUTOLNK IN PROGRESS IGNORE@V305096 04102000
  4107. BNE ALNKPR FOUND CONDITIONS @V305096 04103000
  4108. * 04104000
  4109. INCERR LA RA,INCSAV GIVE ERROR RTNE ADDR OF @V305096 04105000
  4110. * THE RETAINED INCLUDE STATEMENT 04106000
  4111. CLC PERIDA,ESD000 IF WE HAVE RET'D TO MODULE @V305096 04107000
  4112. BNE INCERR1 ON DOSLNK, THEN WE MUST @V305096 04108000
  4113. MVC ONS000,NDS000 SKIP TO ITS END. @V305096 04109000
  4114. INCERR1 EQU * @V305096 04110000
  4115. TM NMSBSW,X'02' IF ERROR ON NAMED SUB-MOD, THEN @V305096 04111000
  4116. BZ ERROR THE NAME LIST MUST BE CLEARED. @V305096 04112000
  4117. MVI NMELST,C' ' CLEAR NAME LIST @V305096 04113000
  4118. MVC NMELST+1(DEC39),NMELST @V305096 04114000
  4119. NI SBMDST,X'FF'-HEX1 RESET SBMDST SWITCH @V305096 04115000
  4120. B ERROR @V305096 04116000
  4121. * 04117000
  4122. SYSLIB CLC DSKCCB,PRVADDR TEST FOR PRIVATE REL LIB@V305096 04118000
  4123. BNE INCLERR NO,GO PRINT ERROR 04118600
  4124. CLI PVTSW,X'0F' PRIVATE OR SYSTEM LIB @VA09417 04119200
  4125. BNE INCLERR PRINT ERROR @VA09417 04119800
  4126. NI MSGSW+1,X'00' SET SW FOR CORRECT MSG 04120400
  4127. OI PVLBSW+1,X'F0' SET SW FOR SYSRES LIB INPUT @V305096 04121000
  4128. B INCGET1 BRANCH @V305096 04122000
  4129. PVTSW DC X'00' SET TO 0F IF PRIVATE @VA09417 04122500
  4130. EJECT 04123000
  4131. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04124000
  4132. * 04125000
  4133. * CONSTANTS USED ONLY BY INCLUDE STATEMENT PROCESSOR 04126000
  4134. * 04127000
  4135. INCSAV DC CL80' ' SAVEAREA FOR INCLUDE RECS @V305096 04128000
  4136. * 04129000
  4137. KATLNK DC C'AUTOLINK' @V305096 04130000
  4138. * 04131000
  4139. * 04132000
  4140. ** TABLE TO PROVIDE ADDRESSABILITY TO ERROR MESSAGES 04133000
  4141. * 04134000
  4142. DS 0F @VA05886 04135000
  4143. AMSG01 DC YL1(L'MSG01-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04136000
  4144. DC AL3(MSG01) ADDRESS OF ERROR MESSAGE @VA05886 04137000
  4145. AMSG10 DC YL1(L'MSG10-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04138000
  4146. DC AL3(MSG10) ADDRESS OF ERROR MESSAGE @VA05886 04139000
  4147. AMSG11 DC YL1(L'MSG11-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04140000
  4148. DC AL3(MSG11) ADDRESS OF ERROR MESSAGE @VA05886 04141000
  4149. AMSG12 DC YL1(L'MSG12-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04142000
  4150. DC AL3(MSG12) ADDRESS OF ERROR MESSAGE @VA05886 04143000
  4151. AMSG14 DC YL1(L'MSG14-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04144000
  4152. DC AL3(MSG14) ADDRESS OF ERROR MESSAGE @VA05886 04145000
  4153. AMSG21 DC YL1(L'MSG21-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04146000
  4154. DC AL3(MSG21) ADDRESS OF ERROR MESSAGE @VA05886 04147000
  4155. AMSG25 DC YL1(L'MSG25-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04148000
  4156. DC AL3(MSG25) ADDRESS OF ERROR MESSAGE @VA05886 04149000
  4157. AMSG31 DC YL1(L'MSG31-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04150000
  4158. DC AL3(MSG31) ADDRESS OF ERROR MESSAGE @VA05886 04151000
  4159. AMSG32 DC YL1(L'MSG32-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04152000
  4160. DC AL3(MSG32) ADDRESS OF ERROR MESSAGE @VA05886 04153000
  4161. AMSG33 DC YL1(L'MSG33-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04154000
  4162. DC AL3(MSG33) ADDRESS OF ERROR MESSAGE @VA05886 04155000
  4163. AMSG61 DC YL1(L'MSG61-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04156000
  4164. DC AL3(MSG61) ADDRESS OF ERROR MESSAGE @VA05886 04157000
  4165. LTORG , @V305096 04158000
  4166. DS 0D @V305096 04159000
  4167. TITLE 'DLKCTL - PROCESS PHASE AND ENTRY - $LNKEDT - DOS' 04160000
  4168. ******************************************************************** 04161000
  4169. ******************************************************************** 04162000
  4170. * 04163000
  4171. * CSECT DLKCTL - END OF PHASE/ENTRY PROCESSING 04164000
  4172. * CALLED BY DLKSCN * 04165000
  4173. *ENTRY POINTS - DLKCTL- BUILDS CURRENT PHASE ENTRY. IF NOT 04166000
  4174. * FIRST PHASE IT MOVES THE CURRENT PHASE ENTRY OF PREVIOUS 04167000
  4175. * PHASE TO THE CONTROL DICTIONARY. 04168000
  4176. * * 04169000
  4177. * INPUT - N/A 04170000
  4178. * * 04171000
  4179. *OUTPUT - PHASE ENTRY IN C/D 04172000
  4180. * * 04173000
  4181. *EXITS-NORMAL - TO RDNEXT AFTER NEW PHASE 04174000
  4182. * TO DLKRLD AFTER ENTRY 04175000
  4183. * -ERROR -- ERROR MSG NOS. RESULTING FROM THIS PHASE ARE 2121-2122* 04176000
  4184. * 2123-2124-2181-2182-2192-2193 04177000
  4185. * * 04178000
  4186. *TABLES/WORK AREAS - EXPLAINED IN COMMENTS OF CSECT DMSDLK 04179000
  4187. * * 04180000
  4188. *ATTRIBUTES - N/A * 04181000
  4189. * * 04182000
  4190. *********************************************************************** 04183000
  4191. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04184000
  4192. * 04185000
  4193. DLKCTL CSECT PHASE ENTRY PROC @V305096 04186000
  4194. USING *,RD @V305096 04187000
  4195. * 04188000
  4196. CLI PHVERB,E TEST FOR ENTRY CARD @V305096 04189000
  4197. BNE FIRSTPH NO, SO IT IS PHASE @V305096 04190000
  4198. CLI CTLDNO,HEXFF ANYTHING PROCESSED ? @V305096 04191000
  4199. BE ERR081 NO TEXT IN PHASE @V305096 04192000
  4200. B MOVENTRY MOVE CURR ENTRY TO C/D @V305096 04193000
  4201. * 04194000
  4202. FIRSTPH CLI CTLDNO,HEXFF IS IT FIRST PHASE @V305096 04195000
  4203. BE PHSPRC YES, BYPASS MOVE @V305096 04196000
  4204. * 04197000
  4205. ** MOVE CURRENT PHASE ENTRY TO C/D 04198000
  4206. * 04199000
  4207. MOVENTRY L R9,PHSADD LOAD BASE FOR C/D @V305096 04200000
  4208. MVC CDENTRY(2*CDLNGTH),CPHENT @V305096 04201000
  4209. * 04202000
  4210. CLI PHVERB,E TEST FOR ENTRY CARD @V305096 04203000
  4211. BE FINPRO GO TO FINAL PROC @V305096 04204000
  4212. * 04205000
  4213. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04206000
  4214. * 04207000
  4215. *** PHASE PRE-PROCESSOR 04208000
  4216. * 04209000
  4217. PHSPRC CLI PHNAME,C'$' IF ANY PHASE IF $ TYPE SET SW @V305096 04210000
  4218. BNE *+8 AS INDICATOR FOR PASS 2 @V305096 04211000
  4219. OI DPNTSW,X'40' @V305096 04212000
  4220. * 04213000
  4221. SR R3,R3 ZERO ORIGIN @V305096 04214000
  4222. OI MAPSW,HEX8 ASSUME NEW PHASE TO BE RELOC@V305096 04215000
  4223. * 04216000
  4224. CLI CTLDNO,X'FF' TEST IF 1ST PHASE ENCOUNT'RD@V305096 04217000
  4225. BNE NOT1ST @V305096 04218000
  4226. * 04219000
  4227. CLC SYMBOL(5),KROOT TEST FOR ROOT (SPEC SIGNIF. @V305096 04220000
  4228. BNE NTROOT IN 1ST PHASE) @V305096 04221000
  4229. * 04222000
  4230. MVI ROOTNO+1,X'01' SETUP C/D # VALUES VALID FOR ROOT@V305096 04223000
  4231. ST R3,CTLDNO STRUCTURE @V305096 04224000
  4232. L R3,EOSPVR FORCE ROOT TO ORIGIN AT EOS @V305096 04225000
  4233. B ISROOT ACCEPT ROOT AT EOS ONLY @V305096 04226000
  4234. * 04227000
  4235. NOT1ST LA R6,PHNAME TEST FOR DUPLICATE PHASE NAMES IN@V305096 04228000
  4236. BAL RF,SRCHCD C/D @V305096 04229000
  4237. * 04230000
  4238. B NTROOT VALID PHASE NAME TO CHECK ORIGIN @V305096 04231000
  4239. * 04232000
  4240. TM ESDTYPD,PH IF NOT A PHASE @V305096 04233000
  4241. BNO SRPCOD CONTINUE SCAN @V305096 04234000
  4242. L RB,AMSG20 PHASENAME DUPLICATED @V305096 04235000
  4243. B ERROR @V305096 04236000
  4244. * 04237000
  4245. NTROOT CLI SYMBOL,BLANK CHECK IF ANY BASE ORIGIN @V305096 04238000
  4246. BNE SYMBORG YES @V305096 04239000
  4247. NI MAPSW,HEXFF-HEX8 NO, NEW PHASE NOT RELOCATABL@V305096 04240000
  4248. B ISDISP ABSOL. ADDRESS IN PHASE CARD@V305096 04241000
  4249. SYMBORG L R3,EOSPVR ACCEPT S AS MEANING END OF SPVR @V305096 04242000
  4250. CLC SYMBOL(2),KS @V305096 04243000
  4251. BE CHEKQU @V305096 04244000
  4252. * 04245000
  4253. L R3,NXPHRG ASSUME END OF PREVIOUS PHASE@V305096 04246000
  4254. CLC SYMBOL(2),KASTER IN CASE OF 1ST IT IS EOS @V305096 04247000
  4255. BNE SCSYM1 @V305096 04248000
  4256. CLI CTLDNO,HEXFF FIRST PHASE @V305096 04249000
  4257. BE CHEKQU YES, RELOCATABLE @V305096 04250000
  4258. L R9,PHSADD NO,SET BASE FOR CDENTRY @V305096 04251000
  4259. TM PHTYPED,RELPHASE OF PREV PHASE. IF NOT @V305096 04252000
  4260. BO CHEKQU RELOCATABLE, THE NEW @V305096 04253000
  4261. NI MAPSW,HEXFF-HEX8 PHASE WILL ALSO BE @V305096 04254000
  4262. * NOT RELOCATABLE 04255000
  4263. CHEKQU CLI QUALIF,C' ' DO NOT ACCEPT * OR S IF A @V305096 04256000
  4264. BE ISDISP QUALIFIER IS PRESENT @V305096 04257000
  4265. * 04258000
  4266. *** SYMBOLIC ORIGIN 04259000
  4267. * 04260000
  4268. SCSYM1 CLI CTLDNO,X'FF' IF SYMBOL PRESENT IN FIRST PHASE @V305096 04261000
  4269. BNE SCNSYM SRCHCD CANNOTT HANDLE @V305096 04262000
  4270. * 04263000
  4271. ERR022 L RB,AMSG22 ORIGIN NOT DEFINED @V305096 04264000
  4272. B ERROR @V305096 04265000
  4273. * 04266000
  4274. SCNSYM LA R6,SYMBOL SEARCH C/D FOR LABEL ORIGIN @V305096 04267000
  4275. BAL RF,SRCHCD @V305096 04268000
  4276. * 04269000
  4277. NODUPL EQU * IF NO DUPLICATE MUST BE ERROR @V305096 04270000
  4278. B ERR022 @V305096 04271000
  4279. * 04272000
  4280. CLI ESDTYPD,SD IF DUPLICATE IS ER @V305096 04273000
  4281. BE ACCEPT CM OR AN UN- @V305096 04274000
  4282. TM ESDTYPD,PH ASSIGNED LD OR LR @V305096 04275000
  4283. BO ACCEPT CONTINUE SCAN @V305096 04276000
  4284. CLI ESDTYPD,LD OF C/D AS LABEL @V305096 04277000
  4285. BE TSTAS MAY APPEAR AS A @V305096 04278000
  4286. CLI ESDTYPD,LR PRIOR ENTRY IN THE @V305096 04279000
  4287. BNE SRPCOD C/D ( E G AS A @V305096 04280000
  4288. TSTAS TM SWITCHD,UNASSG PHASE ENTRY ) @V305096 04281000
  4289. BO SRPCOD BRANCH TO CONT SCAN @V305096 04282000
  4290. ACCEPT EQU * @V305096 04283000
  4291. * 04284000
  4292. STM R8,R9,DBLWRD RETAIN POS. IN C/D, MAY NEED IT @V305096 04285000
  4293. L R3,ORPHRGD ASSUME SYMBOL IS PH @V305096 04286000
  4294. * AND SAVE ORIGIN 04287000
  4295. OI MAPSW,HEX8 ASSUME RELOCATABLE PHASE @V305096 04288000
  4296. TM ESDTYPD,PH IF PHASE ENTRY @V305096 04289000
  4297. BO CHQUAL CHECK QUALIFIER @V305096 04290000
  4298. * 04291000
  4299. SR R3,R3 @V305096 04292000
  4300. ICM R3,B'0111',ASSORGD SAVE ASSEMBLED ORIGIN @V305096 04293000
  4301. CLI ESDTYPD,SD IS IT A CSECT @V305096 04294000
  4302. BE EXTRF YES, BRANCH @V305096 04295000
  4303. LH R8,CSNUMD EXTRACT R/F @V305096 04296000
  4304. LA RF,*+4 IF NOT AN SD, BYPASS MULTI @V305096 04297000
  4305. B LTCDNO EXITS @V305096 04298000
  4306. EXTRF L R7,RELFACD GET R/F FOR SD @V305096 04299000
  4307. AR R3,R7 ADD R/F TO ASSEMBLED ORIGIN @V305096 04300000
  4308. * 04301000
  4309. BAL RE,XTPHNO EXTRCT PHASE NR C/D ENTRY BELONGS@V305096 04302000
  4310. LR R9,R2 TO @V305096 04303000
  4311. NI NOSCAGAN+DEC1,HEXF REMEMBER - NO PHASE ENTRY @V305096 04304000
  4312. LA RF,*+DEC4 BYPASS MULTI EXITS @V305096 04305000
  4313. B LTCDAD ON CALCULATING C/D ENTRY ADDRESS @V305096 04306000
  4314. CHQUAL OI NOSCAGAN+DEC1,HEXF0 THIS WAS PHASE ENTRY @V305096 04307000
  4315. TM PHTYPED,RELPHASE IS PHASE RELOC. @V305096 04308000
  4316. BO CHQUALIF YES @V305096 04309000
  4317. NI MAPSW,HEXFF-HEX8 NO,THEN THE NEW PHASE WILL NOT@V305096 04310000
  4318. * BE RELOCATABLE EITHER 04311000
  4319. CHQUALIF CLI QUALIF,BLANK IF NO QUALIFIER GO TO ACCEPT@V305096 04312000
  4320. BE ISDISP DISPLACEMENT @V305096 04313000
  4321. * OTHERWISE, AND IF IT WAS A PHASE- 04314000
  4322. NOSCAGAN NOP SCAGAN NAME, THERE MUST BE A DUPLICATE* @V305096 04315000
  4323. * SD/LR PRIOR TO THIS C/D ENTRY 04316000
  4324. CLC QUALIF(DEC8),PHNAMED IF NO PHASENAME, AND @V305096 04317000
  4325. BE ISDISP QUALIFIER AGREES, GO TO ACCEPT @V305096 04318000
  4326. * DISPLACEMENT 04319000
  4327. * 04320000
  4328. SCAGAN LM R8,R9,DBLWRD RESTORE SCAN REGISTERS @V305096 04321000
  4329. LA RF,NODUPL RESTORE RETURN REGISTER @V305096 04322000
  4330. B SRPCOD CONTINUE SCANNING @V305096 04323000
  4331. * 04324000
  4332. ISDISP A R3,DISPLC ADD DISPLACEMENT TO BASE @V305096 04325000
  4333. L RB,AMSG24 ORIGIN IS NEGATIVE @V305096 04326000
  4334. BM ERROR @V305096 04327000
  4335. SPACE 1 04328000
  4336. TM POPTSW,OPTPBDY PBDY IN PHASE CARD ? @V305096 04329000
  4337. BZ ALIGNDW ALIGN ON DW BOUND @V305096 04330000
  4338. LA R3,DEC2047(R3) ALIGN ADDRESS TO @V305065 04331000
  4339. SRL R3,11 PAGE @V305096 04332000
  4340. SLL R3,11 BOUNDARY @V305096 04333000
  4341. B ISROOT SET UP C/D ENTRY @V305096 04334000
  4342. SPACE 1 04335000
  4343. ALIGNDW LA R3,DEC7(R3) ALIGN ADDRESS TO @V305096 04336000
  4344. SRL R3,DEC3 DOUBLE-WORD @V305096 04337000
  4345. SLL R3,DEC3 BOUNDARY @V305096 04338000
  4346. SPACE 1 04339000
  4347. ISROOT EQU * @V305096 04340000
  4348. * 04341000
  4349. **************************************************************** 04342000
  4350. ** SET UP CURRENT C/D ENTRY FOR NEW PHASE 04343000
  4351. **************************************************************** 04344000
  4352. * 04345000
  4353. MVI ESDTYPC,PH @V305096 04346000
  4354. MVC PHNAMEC,PHNAME @V305096 04347000
  4355. SR R2,R2 CLEAR FIELDS FOR @V305096 04348000
  4356. STH R2,RLDITEMS RELOCATABLE PHASES @V305096 04349000
  4357. ST R2,LNKSTRT AND @V305096 04350000
  4358. ST R2,RLDBLCKS PHTYPE SWITCH @V305096 04351000
  4359. ST R3,ORPHRG @V305096 04352000
  4360. ST R3,NXPHRG @V305096 04353000
  4361. LTR R3,R3 PHASE ORIGIN ZERO @V305096 04354000
  4362. BP NOSELF NO, BRANCH @V305096 04355000
  4363. OI PHTYPE,SELFRELO YES, PH SELFRELOCATING @V305096 04356000
  4364. NOSELF EQU * @V305096 04357000
  4365. * 04358000
  4366. CL R3,COMSAV IF PHASE LOAD ADDR LOWER @V305096 04359000
  4367. BH DROVER THAN ANY PREVIOUS PHASE @V305096 04360000
  4368. ST R3,COMSAV LOAD ADDR, THAN SAVE @V305096 04361000
  4369. * IT FOR COMMON BASE CALCULATION 04362000
  4370. DROVER EQU * @V305096 04363000
  4371. * 04364000
  4372. FINPRO CLI PHSNO,HEXFF IF NOT FIRST PHASE @V305096 04365000
  4373. BNE SETPHS BYPASS TEST @V305096 04366000
  4374. * 04367000
  4375. CLI PHVERB,C'P' IF THIS IS PHASE CARD IT IS OK TO@V305096 04368000
  4376. BE NEWPHS CONTINUE @V305096 04369000
  4377. ERR081 L RB,AMSG81 @V305096 04370000
  4378. B ABTERR IF ENTRY NOTHING HAS BEEN PROCESSED @V305096 04371000
  4379. * 04372000
  4380. SETPHS L R9,PHSADD GET BASE FOR C/D ENTRY @V305096 04373000
  4381. * OF PREVIOUS PHASE 04374000
  4382. L R2,ORPHRGD IF NO TRANSFER @V305096 04375000
  4383. * INFORMATION, ACCEPT 04376000
  4384. TM TRFRSW,X'01' PHASE LOAD ADDRESS @V305096 04377000
  4385. BZ WRTRFR @V305096 04378000
  4386. * 04379000
  4387. NI TRFRSW,X'FE' RESET TRANSFER ACCEPTED SWITCH @V305096 04380000
  4388. L R2,X5 ASSUME ASSEMBLED TRANSFER ADDRESS@V305096 04381000
  4389. LH R8,X15 SET UP ESID TO CHECK AGAINST C/D @V305096 04382000
  4390. CLI X17,C' ' @V305096 04383000
  4391. BE PHXADD @V305096 04384000
  4392. * 04385000
  4393. *** TRANSFER ADDRESS IS A LABEL 04386000
  4394. * 04387000
  4395. LA R6,X17 SCAN C/D FOR TRANSFER LABEL @V305096 04388000
  4396. BAL RF,SRCHCD @V305096 04389000
  4397. * 04390000
  4398. B LABINV LABEL IS INVALID @V305096 04391000
  4399. * 04392000
  4400. CLI ESDTYPD,ER IF DUPLICATE AN ER, @V305096 04393000
  4401. BE SRPCOD CM, UNASSIG LD/LR OR @V305096 04394000
  4402. CLI ESDTYPD,CM PHASE CONT SCAN @V305096 04395000
  4403. BE SRPCOD C/D FOR PRIOR ENTRY @V305096 04396000
  4404. TM ESDTYPD,PH @V305096 04397000
  4405. BO SRPCOD . @V305096 04398000
  4406. TM ESDTYPD,LD @V305096 04399000
  4407. BNO GOON1 ... @V305096 04400000
  4408. TM SWITCHD,UNASSG @V305096 04401000
  4409. BO SRPCOD @V305096 04402000
  4410. * 04403000
  4411. GOON1 EQU * @V305096 04404000
  4412. ICM R2,B'0111',ASSORGD RETAIN ASSORG @V305096 04405000
  4413. CLI ESDTYPD,SD IS IT A CSECT @V305096 04406000
  4414. BE GETRF YES, BRANCH @V305096 04407000
  4415. LH R8,CSNUMD NO, GET C/D NO FOR LD/LR@V305096 04408000
  4416. PHXADD LA RF,GETRF-DEC4 BYPASS MULTI EXITS @V305096 04409000
  4417. B LTCDNO GET R/F FOR LD/LR @V305096 04410000
  4418. GETRF L R7,RELFACD GET R/F FOR SD @V305096 04411000
  4419. AR R2,R7 ADD R/F TO ASSEMBLED ORIGIN @V305096 04412000
  4420. * 04413000
  4421. WRTRFR L R9,PHSADD LOAD ADDR OF CURRENT @V305096 04414000
  4422. * C/D ENTRY IN BASE 04415000
  4423. ST R2,TRFRADD ACCEPT TRANSFER ADDR @V305096 04416000
  4424. * 04417000
  4425. *** OBTAIN C.I. BLOCKS INFORMATION 04418000
  4426. * 04419000
  4427. L R3,NXPHRGD CALC # OF BYTES IN @V305096 04420000
  4428. S R3,ORPHRGD PREV PHASE @V305096 04421000
  4429. L RB,AMSG23 LAST PHASE NO TEXT @V305096 04422000
  4430. BP CINOBL IF REMAINDER, THERE WAS TEXT IN PHAS @V305096 04423000
  4431. * 04424000
  4432. CLI PHVERB,C'E' IF ENTRY STATEMENT HAS BEEN READ IT @V305096 04425000
  4433. BE ERR081 IS IMPOSSIBLE TO CONTINUE READING@V305096 04426000
  4434. B ERROR ELSE STANDARD ERROR ROUTINE TO READ @V305096 04427000
  4435. * 04428000
  4436. CINOBL SR R2,R2 CLEAR HIGH ORDER OF DIVIDEND@V305096 04429000
  4437. LH R4,K1024 CALC NO. OF BYTES IN @V305096 04430000
  4438. DR R2,R4 LAST @V305096 04431000
  4439. * 04432000
  4440. LTR R2,R2 IF THERE IS A REMAINDER GO TO ADD AS @V305096 04433000
  4441. BNE *+8 AN ADDITIONAL BLOCK @V305096 04434000
  4442. * 04435000
  4443. LR R2,R4 SET UP LAST BLOCK TO LOOK LIKE @V305096 04436000
  4444. BCTR R3,0 MAXIMUM REMAINDER @V305096 04437000
  4445. * 04438000
  4446. LA R3,1(R3) ADD 1 TO INCLUDE REMAINDER AS A @V305096 04439000
  4447. STH R3,NOBLOKD BLOCK AND STORE @V305096 04440000
  4448. STH R2,NOBYTED PHASE INFORMATION @V305096 04441000
  4449. SR R3,R3 R3 MUST CONTAIN THE NUMBER @V305096 04442000
  4450. * OF ADDITIONAL RLD BLOCKS 04443000
  4451. SR R8,R8 @V305096 04444000
  4452. TM PHTYPED,RELPHASE IF NOT RELOC. @V305096 04445000
  4453. BNO HOWMANY NO NEED TO RESERVE SPACE@V305096 04446000
  4454. LA R2,3(,R2) ADD THREE BYTES @V305065 04447000
  4455. SRL R2,DEC2 ROUND # OF BYTES IN LAST BLOCK @V305096 04448000
  4456. SLL R2,DEC2 TO FULL-WORD BOUNDARY @V305096 04449000
  4457. LR R3,R2 @V305096 04450000
  4458. LH R2,K1024 GET CORE IMAGE BLOCKSIZE @V305096 04451000
  4459. LR R4,R2 AND SAVE IT @V305096 04452000
  4460. SR R2,R3 CALC. LAST BLOCKS SPACE FOR RLD @V305096 04453000
  4461. LH R3,RLDCNT CALC. TOTAL SPACE NECESSARY @V305096 04454000
  4462. SLL R3,DEC2 FOR THIS PHASES RLD INFO @V305096 04455000
  4463. CR R2,R3 DOES RLD INFO FIT IN LAST BLOCK @V305096 04456000
  4464. BL MOREBLK ALAS, NO @V305096 04457000
  4465. SR R3,R3 HURRAH, YES, NO EXTRA RLD BLOCKS @V305096 04458000
  4466. B STRLD GO TO FILL RLD CONTROL FIELD@V305096 04459000
  4467. * 04460000
  4468. *** RLD INFO DOES NOT FIT IN LAST BLOCK, SO CALCULATE 04461000
  4469. *** NUMBER OF ADDITIONAL CIL BLOCKS REQUIRED 04462000
  4470. * 04463000
  4471. MOREBLK SR R3,R2 NO. OF BYTES TO BE PUT INTO @V305096 04464000
  4472. * ADDITIONAL BLOCK(S) 04465000
  4473. SR R2,R2 CLEAR FOR DIVISION @V305096 04466000
  4474. DR R2,R4 DIVIDE NO. OF BYTES BY BLKSIZE @V305096 04467000
  4475. * TO GET NO. OF BLOCKS 04468000
  4476. LTR R2,R2 IF THERE IS A REMAINDER @V305096 04469000
  4477. BZ STRLD ADD 1 TO @V305096 04470000
  4478. LA R3,DEC1(R3) BLOCKCOUNT @V305096 04471000
  4479. STRLD EQU * @V305096 04472000
  4480. * TEMPORARY FIX 04473000
  4481. COMRG @V305096 04474000
  4482. USING BGCOM,R1 @V305096 04475000
  4483. L R4,PARTSTRT @V305096 04476000
  4484. SH R4,LABLEN @V305096 04477000
  4485. DROP R1 @V305096 04478000
  4486. ST R4,LINKSTRD COMPLETE C/D ENTRY @V305096 04479000
  4487. * OF PREVIOUS PHASE 04480000
  4488. MVC RLDITEMD,RLDCNT NO. OF RLD ITEMS @V305096 04481000
  4489. STH R3,RLDBLCKD STORE RLD BLOCKCOUNT @V305096 04482000
  4490. SPACE 1 04483000
  4491. * 04484000
  4492. HOWMANY LH R4,NOBLOKD CALC TOT NO OF BLOCKS @V305096 04485000
  4493. AR R4,R3 I.E. TEXT AND RLD @V305096 04486000
  4494. SR R2,R2 CLEAR REGISTER @V305065 04487000
  4495. ICM R2,DEC3,ORPHDAD GET FIRST RECORD NUMBER @V305065 04488000
  4496. AR R4,R2 CALC. NEXT PHS FIRST RECORS @V305065 04489000
  4497. STCM R4,DEC3,ORPHDA AND STORE IT @V305065 04490000
  4498. CLI PHVERB,E IF NOT AN ENTRY CARD GO TO PROCES@V305096 04491000
  4499. BNE NEWPHS NEW PHASE-S INFORMATION @V305096 04492000
  4500. * 04493000
  4501. *** ON ENTRY CARD EXIT FROM PHASE ROUTINE 04494000
  4502. * 04495000
  4503. TM MODSTS,X'01' IF STILL IN MODULE THEN ENTRY CARD @V305096 04496000
  4504. L RB,AMSG82 ENTRY CARD @V305096 04497000
  4505. BO ABTERR IS INVALIDLY POSITIONED @V305096 04498000
  4506. * 04499000
  4507. MVC X17(8),PHNAME RETAIN POSS OVERRIDING TRANSFER @V305096 04500000
  4508. L RD,MAPMTX POINTER TO MAP PROC @V305096 04501000
  4509. BR RD AND GO THERE @V305096 04502000
  4510. * 04503000
  4511. NEWPHS CLC K$$A(DEC3),PHNAME IS IT AN A - TRANSIENT @V305096 04504000
  4512. BNE NEWPHSS NO @V305096 04505000
  4513. NI MAPSW,HEXFF-HEX8 YES, MUST NOT BE RELOCATABLE@V305096 04506000
  4514. NEWPHSS TM MAPSW,HEX4+HEX8 IF ACTION REL IS ON AND IF THE @V305096 04507000
  4515. BNO RLDCLEAR FORMAT OF THE PHASE CARD ALLOWS @V305096*04508000
  4516. IT, INDICATE RELOC @V305096 04509000
  4517. OI PHTYPE,RELPHASE PHASE IN C/D @V305096 04510000
  4518. OI MAPSW,HEX10 INDICATE RLD PASS 3 NECESSARY @V305096 04511000
  4519. SPACE 1 04512000
  4520. RLDCLEAR XC RLDCNT,RLDCNT ZERO RLD ITEMS COUNTER @V305096 04513000
  4521. * 04514000
  4522. LH R0,ALNKSW SET ALNKSW TO SETTING FOR THIS PHASE@V305096 04515000
  4523. SRL R0,1 FROM NOAUTO SETTING & RESET NOAUTO @V305096 04516000
  4524. STH R0,ALNKSW SETTING @V305096 04517000
  4525. * 04518000
  4526. LM R8,R9,CTLDNO OBTAIN NEXT VALID ENTRY IN C/D @V305096 04519000
  4527. TM ESDTYPD,PH WAS IT PHASE @V305096 04520000
  4528. LA R8,1(R8) @V305096 04521000
  4529. LA R9,CDLNGTH(R9) GO TO NEXT AVAIL ENTRY @V305096 04522000
  4530. BNO CONT3 NO, CONTINUE @V305096 04523000
  4531. LA R8,DEC1(R8) @V305096 04524000
  4532. LA R9,CDLNGTH(R9) @V305096 04525000
  4533. CONT3 EQU * @V305096 04526000
  4534. STM R8,R9,CTLDNO @V305096 04527000
  4535. * 04528000
  4536. STH R8,PHSNO NEW PHASE-S C/D # @V305096 04529000
  4537. ST R9,PHSADD C/D ADDR OF NEW PHASE @V305096 04530000
  4538. MVI ESDTYPED,PH RESERVE SPACE FOR @V305096 04531000
  4539. * PH ENTRY IN C/D 04532000
  4540. CTLRET EQU RDNEXT @V305096 04533000
  4541. B RDNEXT @V305096 04534000
  4542. * 04535000
  4543. LABINV OI DPNTSW,X'80' SET SWITCH FOR INVALID LABEL ON END@V305096 04536000
  4544. B SETPHS AND PROCESS AS IF NO TRANSFER @V305096 04537000
  4545. EJECT 04538000
  4546. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04539000
  4547. * 04540000
  4548. * CONSTANTS USED ONLY BY CONTROL CARD 04541000
  4549. * PHASE 04542000
  4550. * ENTRY PROCESSORS 04543000
  4551. *********************************************************************** 04544000
  4552. KROOT DC C'ROOT ' @V305096 04545000
  4553. K$$A DC C'$$A' @V305096 04546000
  4554. KASTER DC C'* ' @V305096 04547000
  4555. * 04548000
  4556. * 04549000
  4557. ** TABLE TO PROVIDE ADDRESSABILITY TO ERROR MESSAGES 04550000
  4558. * 04551000
  4559. DS 0F @VA05886 04552000
  4560. AMSG20 DC YL1(L'MSG20-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04553000
  4561. DC AL3(MSG20) ADDRESS OF ERROR MESSAGE @VA05886 04554000
  4562. AMSG22 DC YL1(L'MSG22-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04555000
  4563. DC AL3(MSG22) ADDRESS OF ERROR MESSAGE @VA05886 04556000
  4564. AMSG23 DC YL1(L'MSG23-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04557000
  4565. DC AL3(MSG23) ADDRESS OF ERROR MESSAGE @VA05886 04558000
  4566. AMSG24 DC YL1(L'MSG24-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04559000
  4567. DC AL3(MSG24) ADDRESS OF ERROR MESSAGE @VA05886 04560000
  4568. AMSG81 DC YL1(L'MSG81-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04561000
  4569. DC AL3(MSG81) ADDRESS OF ERROR MESSAGE @VA05886 04562000
  4570. AMSG82 DC YL1(L'MSG82-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 04563000
  4571. DC AL3(MSG82) ADDRESS OF ERROR MESSAGE @VA05886 04564000
  4572. DS 0D @V305096 04565000
  4573. TITLE 'DLKMAP LINKAGE EDITOR PRINT MAP - $LNKEDT - DOS' 04566000
  4574. *********************************************************************** 04567000
  4575. *********************************************************************** 04568000
  4576. * * 04569000
  4577. * CSECT DLKMAP - PRINT MAP * 04570000
  4578. * * 04571000
  4579. *ENTRY POINTS - DLKMAP - CALLED BY DLKCTL * 04572000
  4580. * DISPLACES PHS LOAD ADDR BY LENGTH OF COMMON, CALC LOAD ADDR * 04573000
  4581. * PRINTS MAP IF REQUESTED * 04574000
  4582. * * 04575000
  4583. *INPUT - N/A * 04576000
  4584. * * 04577000
  4585. *OUTPUT - SYSLST, SYSLOG * 04578000
  4586. * * 04579000
  4587. *EXTERNAL ROUTINES - SEE LIST OF SUBROUTINES IN DMSDLK * 04580000
  4588. * * 04581000
  4589. *EXITS-NORMAL - DLKRLD 04582000
  4590. * -ERROR - TO CANCEL THRU SVC 6, OR TO EOJ THRU SVC 14 DEPENDING * 04583000
  4591. * ON OPERATOR RESPONSE TO ERROR MSG. - ERROR MSG NOS. PRODUCED BY * 04584000
  4592. * THIS CSECT ARE 2185 * 04585000
  4593. * * 04586000
  4594. *TABLES/WORK AREAS - EXPLAINED IN COMMENTS OF CSECT DMSDLK * 04587000
  4595. * * 04588000
  4596. *ATTRIBUTES - N/A * 04589000
  4597. * * 04590000
  4598. *NOTES - N/A * 04591000
  4599. * * 04592000
  4600. *********************************************************************** 04593000
  4601. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04594000
  4602. * 04595000
  4603. * ENTRY PROCESSOR 04596000
  4604. * 04597000
  4605. * 1. COLLECT/ASSIGN COMMON 04598000
  4606. * 04599000
  4607. * 2. OVERRIDE INITIAL TRANSFER POINT IF REQUIRED 04600000
  4608. * 04601000
  4609. * 3. MODIFY BY SIZE OF COMMON- PHASE LOAD ADDRESS 04602000
  4610. * TRANSFER ADRESS 04603000
  4611. * HICORE ADDRESS 04604000
  4612. * CSECT RELOCATION FCTR 04605000
  4613. * 04606000
  4614. * 4. PRINT MAP IF REQUIRED 04607000
  4615. * 04608000
  4616. DLKMAP CSECT MAP PROCESSOR @V305096 04609000
  4617. USING *,RD @V305096 04610000
  4618. * 04611000
  4619. L R9,CDENT1 INITIALISE SCAN @V305096 04612000
  4620. LH R8,ROOTNO @V305096 04613000
  4621. * 04614000
  4622. TM MAPSW,MAPOP WAS MAP SPECIFIED? @V305065 04615000
  4623. BZ SAVCOM BRANCH IF NOT @V305065 04616000
  4624. MVC HEADER(HEDLNG),HEDING MOVE HEADER FOR MAP @V305096 04617000
  4625. MVC HEADER+1(DEC8),DATE SET DATE IN HEADER @V305096 04618000
  4626. MVC LINECNT,ZEROH INIT LINECNT TO INSURE @V305096 04619000
  4627. * PRINTING OF HEADER 04620000
  4628. TM CMSSWT1,MAPPRT WAS PRINT SPECIFIED? @V305065 04621000
  4629. BO SAVCOM BRANCH IF YES @V305065 04622000
  4630. TM CMSSWT1,MAPTYP WAS TYPE SPECIFIED? @V305065 04623000
  4631. BZ DISKHEAD BRANCH IF NOT @V305065 04624000
  4632. WRTERM HEADER+1,HEDLNG-1 TYPE HEADER LINE @V305065 04625000
  4633. B SAVCOM @V305065 04626000
  4634. DISKHEAD EQU * @V305065 04627000
  4635. USING FSCBD,R1 @V305065 04628000
  4636. FSWRITE ,FSCB=DOSMAP,BUFFER=HEADER+1,ERROR=WRITER @V305065 04629000
  4637. MVC FSCBBUFF,=A(W1) RESTORE BUFFER ADDRESS @V305065 04630000
  4638. DROP R1 @V305065 04631000
  4639. SAVCOM EQU * @V305065 04632000
  4640. * 04633000
  4641. L R5,COMSAV BASE FOR COMMON CALCULATION @V305096 04634000
  4642. * 04635000
  4643. SCNCMN C R9,CTLDAD IF NOT END OF C/D CHECK FOR CM @V305096 04636000
  4644. BNE COMCHK @V305096 04637000
  4645. * 04638000
  4646. S R5,COMSAV ALIGN COMMON R/F ATTRIBUTE @V305096 04639000
  4647. ST R5,COMNRF AND SAVE IT @V305096 04640000
  4648. * 04641000
  4649. LH R8,ROOTNO INITIALISE REGISTERS TO SCAN FOR @V305096 04642000
  4650. L R9,CDENT1 PHASE @V305096 04643000
  4651. OI MPLDSW+1,X'F0' SET SW TO PROC ENTRY-S IN CSECT @V305096 04644000
  4652. B PHSTOR @V305096 04645000
  4653. * 04646000
  4654. COMCHK LA R9,CDLNGTH(R9) IF NOT CM SCAN AGAIN @V305096 04647000
  4655. LA R8,1(R8) @V305096 04648000
  4656. CLI ESDTYPD,CM @V305096 04649000
  4657. BNE SCNCMN @V305096 04650000
  4658. ST R5,RELFACD SUPPLY ADDRESS @V305096 04651000
  4659. * OF COMMON 04652000
  4660. MVC BUCK3(DEC3),LNGTHD GET LENGTH OF CM @V305096 04653000
  4661. A R5,BUCK4 ALIGN @V305096 04654000
  4662. * ALIGN 04655000
  4663. LA R5,DEC7(R5) ALIGN TO @V305096 04656000
  4664. SRL R5,DEC3 DOUBLEWORD @V305096 04657000
  4665. SLL R5,DEC3 BOUNDARY @V305096 04658000
  4666. * 04659000
  4667. *** PRINT COMMON 04660000
  4668. * 04661000
  4669. STM R8,R9,CSBUCK SAVE FOR RETURN FROM ENTRY @V305096 04662000
  4670. MVC W1(6),KCOMON IDENTIFY @V305096 04663000
  4671. MVC W52(3),KCOMON @V305096 04664000
  4672. MVC W62(DEC8),NAMED LABEL @V305096 04665000
  4673. * 04666000
  4674. L R3,RELFACD CONVERT LOAD ADDRESS @V305096 04667000
  4675. LA R1,W72 @V305096 04668000
  4676. BAL RF,CNVBIN @V305096 04669000
  4677. * 04670000
  4678. L R3,LNGTHD-DEC1 CONVERT LENGTH @V305096 04671000
  4679. LA R1,W80 @V305096 04672000
  4680. BAL RF,CNVBIN @V305096 04673000
  4681. * 04674000
  4682. TM MAPSW,MAPOP MAP REQUESTED @V305096 04675000
  4683. BZ CLRCMN NO, SKIP PRINTING @V305096 04676000
  4684. * 04677000
  4685. BAL R6,SPACE1 SPACE 1 LINE A PRINT @V305096 04678000
  4686. BAL R6,PRINT @V305096 04679000
  4687. * 04680000
  4688. CLRCMN XC LNGTHD(DEC3),LNGTHD ZERO LENGTH @V305096 04681000
  4689. B MAPLDR @V305096 04682000
  4690. * 04683000
  4691. *** PROCESS PHASE ENTRY 04684000
  4692. * 04685000
  4693. MAPHAS LM R8,R9,PHSBUK INITIALISE SCAN FOR NEXT PHASE @V305096 04686000
  4694. * 04687000
  4695. PHSCAN C R9,CTLDAD IF END OF C/D GO TO PRINT EXTERN-S @V305096 04688000
  4696. BE PREXTN @V305096 04689000
  4697. LA R9,CDLNGTH(R9) IF NOT PHASE, @V305096 04690000
  4698. LA R8,1(R8) @V305096 04691000
  4699. TM ESDTYPD,PH IF NOT PHASE @V305096 04692000
  4700. BNO PHSCAN SCAN AGAIN @V305096 04693000
  4701. * 04694000
  4702. PHSTOR STM R8,R9,PHSBUK RETAIN REGISTERS FOR SCAN RETURN @V305096 04695000
  4703. * 04696000
  4704. CLI X17,C' ' IF NO OVERRIDING TRANSFER, BYPASS@V305096 04697000
  4705. ADMDSW NOP PHADMD SWITCH SET AFTER FIRST TIME THROUGH @V305096 04698000
  4706. BE NOTRFR @V305096 04699000
  4707. * 04700000
  4708. *** CALCULATE OVERRIDING TRANSFER ADDRESS OFF ENTRY 04701000
  4709. * 04702000
  4710. LA R6,X17 SCAN C/D FOR DUPLICATE LABEL@V305096 04703000
  4711. BAL RF,SRCHCD @V305096 04704000
  4712. * 04705000
  4713. ESIXTA B ESIXTY LABEL ON ENTRY NOT DEFINED @V305096 04706000
  4714. * 04707000
  4715. * IF DUPLICATE IS ER, CM, PH OR AN UNASSIGNED LD/LR 04708000
  4716. * IT CANNOT BE USED AND SCAN FOR PRIOR ENTRY IS 04709000
  4717. * CONTINUED. 04710000
  4718. CLI ESDTYPD,SD @V305096 04711000
  4719. BE ACCEPTD ACCEPT DUPLICATE @V305096 04712000
  4720. CLI ESDTYPD,LD @V305096 04713000
  4721. BE TSTASGN TEST IF ASSIGNED @V305096 04714000
  4722. CLI ESDTYPD,LR @V305096 04715000
  4723. BNE SRPCOD CONTINUE SCAN @V305096 04716000
  4724. TSTASGN TM SWITCHD,UNASSG @V305096 04717000
  4725. BO SRPCOD @V305096 04718000
  4726. ACCEPTD EQU * @V305096 04719000
  4727. BAL RE,XTPHNO MAKE SURE LABEL IS IN THE FIRST @V305096 04720000
  4728. LA RF,ESIXTA PHASE @V305096 04721000
  4729. CH R2,ROOTNO @V305096 04722000
  4730. BNE SRPCOD @V305096 04723000
  4731. MVC X6(DEC3),ASSORGD SAVE ASSORG @V305096 04724000
  4732. * FIND RELOCATION FACTOR 04725000
  4733. CLI ESDTYPD,SD IS DUPLICATE SD @V305096 04726000
  4734. BE GETREL YES, GET R/F DIRECTLY @V305096 04727000
  4735. LH R8,CSNUMD NO, GET R/F FROM CONTROL@V305096 04728000
  4736. LA RF,GETREL-DEC4 SECTION TO WHICH @V305096 04729000
  4737. B LTCDNO LD / LR BELONGS @V305096 04730000
  4738. GETREL L R7,RELFACD @V305096 04731000
  4739. * 04732000
  4740. A R7,X5 ADD ASSENBLED ORIGIN @V305096 04733000
  4741. LM R8,R9,PHSBUK SET BASE FOR CDENTRY @V305096 04734000
  4742. ST R7,TRFRADD @V305096 04735000
  4743. * 04736000
  4744. NOTRFR EQU * @V305096 04737000
  4745. OI ADMDSW+1,X'F0' SET AVOID SWITCH @V305096 04738000
  4746. * 04739000
  4747. TM MAPSW,X'01' IF MAP NOT REQUIRED FETCH PASS 2 @V305096 04740000
  4748. BZ FCHRLD IMMEDIATELY @V305096 04741000
  4749. * 04742000
  4750. *** MODIFY ADDRESSES ACCORDING TO COMMON DISPLACEMENT 04743000
  4751. * 04744000
  4752. PHADMD EQU * @V305096 04745000
  4753. LM R6,R7,ORPHRGD MODIFY LOAD ADDRESS @V305096 04746000
  4754. AR R6,R5 LAST BYTE ADDRESS @V305096 04747000
  4755. AR R7,R5 BY SIZE OF COMMON AREAS RESERVED @V305096 04748000
  4756. * 04749000
  4757. CL R6,HIROOT CHECK IF THIS PHASE-S LIMITS OVERLAP @V305096 04750000
  4758. BNL TRYROT THOSE OF ROOT PHASE @V305096 04751000
  4759. CL R7,LOROOT @V305096 04752000
  4760. BL TRYROT @V305096 04753000
  4761. * 04754000
  4762. MVC W1(7),KOVRLY @V305096 04755000
  4763. NI OVRLSW+1,X'0F' SET SWITCH TO PRINT ROOT OVERLAID@V305096 04756000
  4764. * 04757000
  4765. TRYROT CLC K1(2),PHSBUK+2 IF NOT ROOT PHASE CONTINUE @V305096 04758000
  4766. BNE MAPHNM @V305096 04759000
  4767. * 04760000
  4768. MVC W1(4),KROOT1 IDENTIFY AS ROOT @V305096 04761000
  4769. STM R6,R7,LOROOT RETAIN ROOT ADDRESSES @V305096 04762000
  4770. * 04763000
  4771. MAPHNM MVC W9(DEC8),PHNAMED PHASE NAME @V305096 04764000
  4772. * 04765000
  4773. L R3,TRFRADD CONVERT XFER ADDRESS @V305096 04766000
  4774. AR R3,R5 MODIFY BY LENGTH OF COMMON @V305096 04767000
  4775. LA R1,W19 @V305096 04768000
  4776. BAL RF,CNVBIN @V305096 04769000
  4777. * 04770000
  4778. LR R3,R6 CONVERT PHASE ORIGIN @V305096 04771000
  4779. LA R1,W27 @V305096 04772000
  4780. BAL RF,CNVBIN @V305096 04773000
  4781. * 04774000
  4782. LR R3,R7 CONVERT LAST BYTE ADDRESS @V305096 04775000
  4783. BCTR R3,0 @V305096 04776000
  4784. LA R1,W35 @V305096 04777000
  4785. BAL RF,CNVBIN @V305096 04778000
  4786. * 04779000
  4787. ICM R3,B'0011',ORPHDAD @V305096 04780000
  4788. LA R1,W43 POS. IN OUTPUT AREA @V305096 04781000
  4789. LA R0,DEC3 CREATE THREE HEX CHARACTERS @V305096 04782000
  4790. SLDL R2,DEC20 PUT MEANINGFULL 12 BITS LEFT@V305096 04783000
  4791. * IN REGISTER 3 04784000
  4792. BAL RF,CNVLOP CONVERT TO PRINTABLE HEX @V305096 04785000
  4793. * 04786000
  4794. IC R3,ORPHDAD+DEC3 CONVERT TRACK ADDR @V305096 04787000
  4795. LA R1,W46 PLACE TO PUT CONVERTED CHAR @V305096 04788000
  4796. LA R0,2 MODIFY FACTORS TO CONVERT ONLY 1 @V305096 04789000
  4797. SLDL R2,24 LONG LEFT SHIFT @V305096 04790000
  4798. BAL RF,CNVLOP CONVERT TO PRINTABLE CHAR @V305096 04791000
  4799. * 04792000
  4800. IC R3,ORPHDAD+DEC4 CONVERT RECORD ADDR @V305096 04793000
  4801. LA R1,W48+DEC1 CONVERT RECORD NUMBER @V305096 04794000
  4802. LA R0,2 TO @V305096 04795000
  4803. SLDL R2,24 PRINTABLE @V305096 04796000
  4804. BAL RF,CNVLOP FORMAT @V305096 04797000
  4805. * 04798000
  4806. SELFRLC TM PHTYPED,SELFRELO IS PHASE SELFRELOCATING @V305096 04799000
  4807. BNO RELOC NO, TEST FOR REL @V305096 04800000
  4808. MVC W88(L'SELFREL),SELFREL INDICATE SELF RELOCATING@V305096 04801000
  4809. B MAPCST @V305096 04802000
  4810. SPACE 1 04803000
  4811. RELOC TM PHTYPED,RELPHASE IF NOT RELOC @V305096 04804000
  4812. BNO NOTREL GO @V305096 04805000
  4813. MVC W88(L'RELCAT),RELCAT YES, INDICATE REL @V305096 04806000
  4814. B MAPCST AND GO. @V305096 04807000
  4815. NOTREL MVC W88(L'NRELCAT),NRELCAT INDICATE NOT RELOCATABLE@V305096 04808000
  4816. EJECT 04809000
  4817. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04810000
  4818. * 04811000
  4819. * PROCESS C/S BELONGING TO ABOVE PHASE 04812000
  4820. * 04813000
  4821. MAPCST LH R8,ROOTNO INITIALISE SCAN OF C/D FOR SD/PC @V305096 04814000
  4822. L R9,CDENT1 @V305096 04815000
  4823. * 04816000
  4824. CSCAN C R9,CTLDAD IF END OF C/D, RETURN TO PROCESS @V305096 04817000
  4825. BE MAPHAS OTHER PHASES @V305096 04818000
  4826. TM ESDTYPD,PH WAS LAST ENTRY PH @V305096 04819000
  4827. LA R9,CDLNGTH(R9) IF NOT SD/PC, SCAN @V305096 04820000
  4828. LA R8,1(R8) @V305096 04821000
  4829. BNO TSTSP NO, BRANCH @V305096 04822000
  4830. LA R8,DEC1(R8) YES, ACCOUNT FOR @V305096 04823000
  4831. LA R9,CDLNGTH(R9) DOUBLE LENGTH OF @V305096 04824000
  4832. TSTSP EQU * PHASE ENTRY @V305096 04825000
  4833. CLI ESDTYPD,SD SCAN C/D FOR @V305096 04826000
  4834. BE XTRCT ENTRIES OF TYPE @V305096 04827000
  4835. CLI ESDTYPD,PC SD OR PC @V305096 04828000
  4836. BNE CSCAN @V305096 04829000
  4837. * 04830000
  4838. XTRCT EQU * @V305096 04831000
  4839. BAL RE,XTPHNO EXTRACT PHASE SD/PC BELONGS TO @V305096 04832000
  4840. * 04833000
  4841. CL R2,PHSBUK IF SD/PC BELONGS TO ANOTHER PHASE DO @V305096 04834000
  4842. BNE CSCAN NOT PROCESS IT @V305096 04835000
  4843. * 04836000
  4844. STM R8,R9,CSBUCK SAVE RETURN TO SCAN REGISTERS @V305096 04837000
  4845. * 04838000
  4846. L R3,RELFACD RELOCATION FACTOR @V305096 04839000
  4847. * ADD LENGTH OF COMMON TO RELOCATION FACTOR 04840000
  4848. AR R3,R5 @V305096 04841000
  4849. * 04842000
  4850. * PRINT CSECT ON MAP 04843000
  4851. * 04844000
  4852. MVC W52(5),KCSECT IDENTIFY @V305096 04845000
  4853. MVC W62(DEC8),NAMED LABEL @V305096 04846000
  4854. * 04847000
  4855. LTR R7,R3 SAVE R/F @V305096 04848000
  4856. BNM CONV CONVERT @V305096 04849000
  4857. MVI W80-1,C'-' INDICATE SO ON MAP @V305096 04850000
  4858. * 04851000
  4859. * 04852000
  4860. CONV LA R1,W80 CONVERT R/F @V305096 04853000
  4861. LPR R3,R3 MAKE R/F POSITIV @V305096 04854000
  4862. BAL RF,CNVBIN @V305096 04855000
  4863. * 04856000
  4864. * ADD R/F TO ASSEMBLED ORIGIN 04857000
  4865. ICM R3,HEX7,ASSORGD @V305096 04858000
  4866. AR R3,R7 CONVERT ASSEMBLED ADDRESS @V305096 04859000
  4867. LA R1,W72 @V305096 04860000
  4868. BAL RF,CNVBIN @V305096 04861000
  4869. * 04862000
  4870. BAL R6,SPACE1 SPACE & PRINT @V305096 04863000
  4871. BAL R6,PRINT @V305096 04864000
  4872. * 04865000
  4873. *** PROCESS LD/LR-S BELONGING TO ABOVE CSECT 04866000
  4874. * 04867000
  4875. MAPLDR L R9,CDENT1 SCAN ENTIRE C/D @V305096 04868000
  4876. * 04869000
  4877. LDRSCN C R9,CTLDAD IF NOT END OF C/D CONTINUE SCAN FOR @V305096 04870000
  4878. BNE LDRGO LD/LR-S @V305096 04871000
  4879. * 04872000
  4880. LM R8,R9,CSBUCK RESTORE C/S SCAN REGISTERS &@V305096 04873000
  4881. MPLDSW NOP CSCAN SWITCH SET ALLOWS CONTINUE WITHIN THIS PH @V305096 04874000
  4882. B SCNCMN ALLOW ENTRY PROCESSED WITHIN COMMON @V305096 04875000
  4883. * 04876000
  4884. LDRGO LA R9,CDLNGTH(R9) IF ENTRY NOT LD/LR @V305096 04877000
  4885. CLI ESDTYPD,LD @V305096 04878000
  4886. BE LDRTSD @V305096 04879000
  4887. CLI ESDTYPD,LR @V305096 04880000
  4888. BNE LDRSCN @V305096 04881000
  4889. * 04882000
  4890. LDRTSD CH R8,CSNUMD IF LD/LR BELONGS @V305096 04883000
  4891. * TO ANOTHER CSECT 04884000
  4892. BNE LDRSCN CONTINUE SCAN @V305096 04885000
  4893. * 04886000
  4894. *** PRINT ENTRY ON MAP 04887000
  4895. * 04888000
  4896. MVC W55(5),KENTRY IDENTIFY @V305096 04889000
  4897. MVC W62(DEC8),NAMED LABEL @V305096 04890000
  4898. * 04891000
  4899. ICM R3,HEX7,ASSORGD @V305096 04892000
  4900. AR R3,R7 CONVERT ASSEMBLED ADDRESS @V305096 04893000
  4901. LA R1,W72 @V305096 04894000
  4902. BAL RF,CNVBIN @V305096 04895000
  4903. * 04896000
  4904. CLI ESDTYPD,LD IF LD FLAG AS @V305096 04897000
  4905. BNE *+8 BEING UNMATCHED @V305096 04898000
  4906. MVI W52,C'*' @V305096 04899000
  4907. * 04900000
  4908. * 04901000
  4909. LR R2,R1 SAVE R1 CONTENTS @V305096 04902000
  4910. * 04903000
  4911. BAL R6,PRINT PRINT @V305096 04904000
  4912. * 04905000
  4913. B LDRSCN CONTINUE SCAN @V305096 04906000
  4914. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04907000
  4915. * 04908000
  4916. * PRINT EXTRN-S 04909000
  4917. * 04910000
  4918. PREXTN L R9,CDENT1 INITIALISE SCAN OF C/D @V305096 04911000
  4919. * 04912000
  4920. EXTSCN CL R9,CTLDAD IF NOT YET END OF C/D, CONTINUE @V305096 04913000
  4921. BNE EXTNLP SCANNING FOR EXTRNS @V305096 04914000
  4922. * 04915000
  4923. OVRLSW B DUPLAB SWITCH SET TO NOP WHEN ROOT OVERLAID @V305096 04916000
  4924. * 04917000
  4925. MVC W1(KVRTLG),KVROOT SET UP MESSAGE @V305096 04918000
  4926. BAL R6,SPACE1 @V305096 04919000
  4927. BAL R6,PRINT @V305096 04920000
  4928. * 04921000
  4929. DUPLAB TM DPNTSW,X'01' IF NO DUPLICATE LABELS CHECK@V305096 04922000
  4930. BZ TERSXY IF ENTRY LABEL OK @V305096 04923000
  4931. * 04924000
  4932. MVC W1(KDPLNG),KDPLBL SET UP MESSAGE @V305096 04925000
  4933. BAL R6,SPACE1 @V305096 04926000
  4934. BAL R6,PRINT @V305096 04927000
  4935. * 04928000
  4936. TERSXY TM DPNTSW,X'80' IF NO ERROR ON ENTRY LABEL CHECK @V305096 04929000
  4937. BZ UNRSPC THAT SPACE AVAILABLE FOR ADCONS @V305096 04930000
  4938. * 04931000
  4939. MVC W1(KNGLNG),KNGLBL SET UP MESSAGE @V305096 04932000
  4940. BAL R6,SPACE1 @V305096 04933000
  4941. BAL R6,PRINT @V305096 04934000
  4942. * 04935000
  4943. UNRSPC TM DPNTSW,X'02' IF NO ZERO LNG C/S-S GO TO FETCH @V305096 04936000
  4944. BZ FCHRLD RLD PROCESSOR @V305096 04937000
  4945. * 04938000
  4946. MVC W1(L'ZEROCS),ZEROCS SET UP MESG @V305096 04939000
  4947. BAL R6,SPACE1 @V305096 04940000
  4948. BAL R6,PRINT @V305096 04941000
  4949. * 04942000
  4950. FCHRLD EQU * @V305096 04943000
  4951. * 04944000
  4952. *** DECISION ROUTINE TO CONTINUE, BYPASS OR CANCEL 04945000
  4953. * 04946000
  4954. TM MAPSW,X'80' TEST IF ERRORS HAVE OCCURRED@V305096 04947000
  4955. BZ GORLD NO, GO TO RLD PROCESSOR @V305096 04948000
  4956. * 04949000
  4957. TM MAPSW,X'02' TEST FOR CANCEL OPTION (X'02') @V305096 04950000
  4958. BO CANC TO CANCEL IF MAPSW HAS X'02' @V305096 04951000
  4959. * 04952000
  4960. L RB,AMSG99 ERROR HAS OCCURRED @V305096 04953000
  4961. LR R6,RB DURING LINKAGE EDITING @V305096 04954000
  4962. LA R6,0(R6) R6 - ADDRESS OF MESSAGE @V305096 04955000
  4963. SRL RB,24 RB - LENGTH OF MESSAGE @V305096 04956000
  4964. EX RB,MOVE MOVE MESSAGE TO OUTPUT @V305096 04957000
  4965. * AREA W0 04958000
  4966. LA RB,1(RB) RESTORE LENGTH @V305096 04959000
  4967. BAL R6,LOGMSG PRINT MESSAGE ON SYSLOG @V305096 04960000
  4968. BAL R6,PRTCLEAR CLEAR OUTPUT BUFFER @V305065 04961000
  4969. * 04962000
  4970. GORLD EQU * @V305096 04963000
  4971. SR RB,RB CLEAR ABORT ERROR REGISTER @V305096 04964000
  4972. L RD,RLDMTX POINTER TO RLD PROC @V305096 04965000
  4973. BR RD AND GO THERE @V305096 04966000
  4974. * 04967000
  4975. * 04968000
  4976. CANC SR R0,R0 CLEAR REGISTER AND CALL CANCEL @V305096 04969000
  4977. B CANCL @V305065 04970000
  4978. EJECT 1 04971000
  4979. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 04972000
  4980. * 04973000
  4981. *** LOOP AROUND EXTRACTING EXTRN-S 04974000
  4982. * 04975000
  4983. EXTNLP LA R9,CDLNGTH(R9) @V305096 04976000
  4984. CLI ESDTYPD,ER @V305096 04977000
  4985. BNE EXTSCN @V305096 04978000
  4986. * 04979000
  4987. EXTNSW NOP EXTNPR SWITCH SET TO B TO BYPASS @V305096 04980000
  4988. BAL R6,SPACE1 ON 1ST EXTRN SPACE, SET UP INDICATOR @V305096 04981000
  4989. MVC W1(KNRFLG),KUNREF IDENTIFY AS UNREFERENCED @V305096 04982000
  4990. * 04983000
  4991. EXTNPR MVC W52(5),KEXTRN IDENTIFY @V305096 04984000
  4992. MVC W62(DEC8),NAMED LABEL @V305096 04985000
  4993. TM SWITCHD,WXTRN UNRESOLVED WEAK EX @V305096 04986000
  4994. BNO PRNOWK NO,DO NOT ALTER E IN W @V305096 04987000
  4995. MVI W52,C'W' YES,MAKE IT WXTRN @V305096 04988000
  4996. * 04989000
  4997. PRNOWK BAL R6,PRINT @V305096 04990000
  4998. * 04991000
  4999. OI EXTNSW+1,X'F0' @V305096 04992000
  5000. B EXTSCN @V305096 04993000
  5001. * 04994000
  5002. *** LABEL ON ENTRY STATEMENT UNDEFINED SO FLAG ON MAP 04995000
  5003. * 04996000
  5004. ESIXTY OI DPNTSW,X'80' SET LABEL ERROR SWITCH @V305096 04997000
  5005. B NOTRFR @V305096 04998000
  5006. EJECT 04999000
  5007. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05000000
  5008. * 05001000
  5009. * R15 S/R TO CONVERT BINARY TO HEX 05002000
  5010. * R0 - NO OF HEX CHARACTERS TO CREATE 05003000
  5011. * 05004000
  5012. * R1 - ADDRESS TO STORE HEX 05005000
  5013. * R2 - WORK REGISTER 05006000
  5014. * R3 - CONTAINS BYTES TO BE CONVERTED 05007000
  5015. * 05008000
  5016. CNVBIN LA R0,6 6 HEX OUTPUT CHARACTERS @V305096 05009000
  5017. SLDL R2,8 3 BYTES LEFT ORIENTED @V305096 05010000
  5018. * 05011000
  5019. CNVLOP SR R2,R2 SET UP 1/2 BYTE @V305096 05012000
  5020. SLDL R2,4 @V305096 05013000
  5021. SH R2,K9 CALC PRINTABLE HEX CHARACTER@V305096 05014000
  5022. BP *+8 @V305096 05015000
  5023. LA R2,57(R2) @V305096 05016000
  5024. LA R2,192(R2) @V305096 05017000
  5025. * 05018000
  5026. STC R2,0(R1) STORE HEX CHAR IN RECEIVING FIELD @V305096 05019000
  5027. LA R1,1(R1) @V305096 05020000
  5028. BCT R0,CNVLOP FILL FIELD UNTIL FULL @V305096 05021000
  5029. * 05022000
  5030. BR RF @V305096 05023000
  5031. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05024000
  5032. * 05025000
  5033. * CONSTANTS REQUIRED BY MAPPING ROUTINE 05026000
  5034. * 05027000
  5035. HEDING DC C'1**/**/** PHASE XFR-AD LOCORE HICORE DSK-AD ' 05028000
  5036. DC C' ESD TYPE LABEL LOADED REL-FR' .@V305096 05029000
  5037. HEDLNG EQU *-HEDING NO OF CHARS IN HEADING LINE @V305096 05030000
  5038. * 05031000
  5039. SELFREL DC C'SELF RELOCATING' @V305096 05032000
  5040. NRELCAT DS 0CL15 @V305096 05033000
  5041. DC C'NOT ' @V305096 05034000
  5042. RELCAT DC C'RELOCATABLE' @V305096 05035000
  5043. * 05036000
  5044. KCOMON DC C'COMMON' @V305096 05037000
  5045. KCSECT DC C'CSECT' @V305096 05038000
  5046. KENTRY DC C'ENTRY' @V305096 05039000
  5047. KEXTRN DC C'EXTRN' @V305096 05040000
  5048. KOVRLY DC C'OVEROOT' @V305096 05041000
  5049. KROOT1 DC C'ROOT' @V305096 05042000
  5050. * 05043000
  5051. KVROOT DC C'ROOT STRUCTURE OVERLAID BY SUCCEEDING PHASE' @V305096 05044000
  5052. KVRTLG EQU *-KVROOT @V305096 05045000
  5053. * 05046000
  5054. KDPLBL DC C'POSSIBLE INVALID ENTRY POINT DUPLICATION IN INPUT' 05047000
  5055. KDPLNG EQU *-KDPLBL @V305096 05048000
  5056. * 05049000
  5057. KUNREF DC C'* UNRESOLVED EXTERNAL REFERENCES' @V305096 05050000
  5058. KNRFLG EQU *-KUNREF @V305096 05051000
  5059. * 05052000
  5060. KNGLBL DC C'INVALID TRANSFER LABEL ON END OR ENTRY STATEMENT ' 05053000
  5061. DC C'IGNORED' @V305096 05054000
  5062. KNGLNG EQU *-KNGLBL @V305096 05055000
  5063. * 05056000
  5064. ZEROCS DC C'CONTROL SECTIONS OF ZERO LENGTH IN INPUT' @V305096 05057000
  5065. * 05058000
  5066. *** CCB AND CCW 05059000
  5067. * 05060000
  5068. PHSBUK DC 2F'0' PHASE C/D #/ADDRESS @V305096 05061000
  5069. CSBUCK DC 2F'0' CSECT C/D #/ADDRESS @V305096 05062000
  5070. * 05063000
  5071. LOROOT DC F'-1' VALUES IF NO ROOT PHASE WILL ALLOW @V305096 05064000
  5072. HIROOT DC F'0' USER TO ORIGIN ANYWHERE @V305096 05065000
  5073. * 05066000
  5074. * 05067000
  5075. ** TABLE TO PROVIDE ADDRESSABILITY TO ERROR MESSAGES 05068000
  5076. * 05069000
  5077. DS 0F @VA05886 05070000
  5078. AMSG99 DC YL1(L'MSG99-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 05071000
  5079. DC AL3(MSG99) ADDRESS OF ERROR MESSAGE @VA05886 05072000
  5080. LTORG @V305065 05073000
  5081. TITLE 'DLKRLD LINK EDITOR RESOLVE RLD''S - $LNKEDT - DOS' 05074000
  5082. *********************************************************************** 05075000
  5083. * * 05076000
  5084. * CSECT DLKRLD - PASS 2 AND 3 RLD PROCESSING 05077000
  5085. * * 05078000
  5086. *ENTRY POINTS - DLKRLD - PROCESSES R AND P POINTERS AND CONSTANTS. * 05079000
  5087. * CREATES THE RLD ITEMS FOR RELOCATABLE PHASES IN THE CIL OR PCIL 05080000
  5088. * PROCESSES ABORT ERRORS. 05081000
  5089. * * 05082000
  5090. *INPUT - SYS001 AND ABTERR IN DMSDLK * 05083000
  5091. * * 05084000
  5092. *OUTPUT - SYSLST,SYSLOG * 05085000
  5093. * * 05086000
  5094. *EXTERNAL ROUTINES: SEE LIST OF SUBROUTINES IN DMSDLK * 05087000
  5095. * * 05088000
  5096. *EXITS-NORMAL - EXIT TO DLKCAT 05089000
  5097. * CANCEL THRU SVC 6 IF DLKRLD IS CALLED TO HANDLE ABORT * 05090000
  5098. * -ERROR - NONE * 05091000
  5099. * * 05092000
  5100. *TABLES/WORK AREAS - EXPLAINED IN COMMENTS OF CSECT DMSDLK 05093000
  5101. * * 05094000
  5102. *ATTRIBUTES - N/A * 05095000
  5103. * * 05096000
  5104. *********************************************************************** 05097000
  5105. * 05098000
  5106. DLKRLD CSECT RLD PROCESSOR @V305096 05099000
  5107. USING *,RD @V305096 05100000
  5108. USING H1,R3 RESTORE DSECT ADDRESSABILITY @V305096 05101000
  5109. * 05102000
  5110. OI MAPSW,HEX20 SHOW DERDAD S/R THAT @V305096 05103000
  5111. * DLKRLD HAS CONTROL 05104000
  5112. LTR RB,RB IF ABORT REGISTER HAS A VALUE ACCEPT @V305096 05105000
  5113. BNE ABORT THIS AS THE ABORT ERROR NUMBER @V305096 05106000
  5114. MVI PHSNO,HEXFF FORCE REINITIALIZATION @V305096 05107000
  5115. * 05108000
  5116. LH R1,SROTSID MODIFY DERDAD S/R FOR USE BY RLD @V305096 05109000
  5117. STH R1,DERDSW+2 ROUTINE TO COUNT ADCONS OUTSIDE @V305096 05110000
  5118. STH R1,ERR050+6 PHASE LIMITS @V305096 05111000
  5119. * 05112000
  5120. RLDPS3 EQU * @V305065 05113000
  5121. BAL RF,REPUT1 REPOSITION SYSUT1 TO FILE START @V305096 05114000
  5122. * 05115000
  5123. RLDRAG BAL RF,RDSUT1 @V305096 05116000
  5124. * 05117000
  5125. LA R6,INPBLK+12 INIT'IZE SCAN OF NEW CARD AT E17-4 @V305096 05118000
  5126. NI RLDSW1+1,X'0F' FORCE PROC R & P ON FIRST ITEM @V305096 05119000
  5127. * 05120000
  5128. RLDRET LH R2,INPBLK+10 IF END OF CARD REACHED GO TO READ@V305096 05121000
  5129. SH R2,RADD4+2 ANOTHER @V305096 05122000
  5130. BM RLDRAG @V305096 05123000
  5131. STH R2,INPBLK+10 RESTORE DECREMENTED COUNT @V305096 05124000
  5132. RADD4 LA R6,4(R6) SCAN TO NEXT ITEM @V305096 05125000
  5133. * 05126000
  5134. RLDSW1 NOP RLDCON SWITCH IS B WHEN R&P SAME AS PREVIOUS@V305096 05127000
  5135. OI RLDSW1+1,X'F0' MUST PROCESS CONSTANT AFTER R&P @V305096 05128000
  5136. EJECT 1 05129000
  5137. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05130000
  5138. * 05131000
  5139. * PROCESS R & P POINTERS 05132000
  5140. * 05133000
  5141. *** - P POINTER 05134000
  5142. * 05135000
  5143. OI RLDSW3+1,X'F0' IF P PTR CARRIES NEGATIVE C/D @V305096 05136000
  5144. LH R9,D19 NO THIS ITEM IS NOT TO BE PROCESSED @V305096 05137000
  5145. LTR R9,R9 SO LEAVE SWITCH AT BYPASS SETTING@V305096 05138000
  5146. BM RLDRET @V305096 05139000
  5147. * 05140000
  5148. NI RLDSW3+1,X'0F' ACCEPT ADCON, @V305096 05141000
  5149. LA RF,* FIND C/D ENTRY # @V305096 05142000
  5150. B LTCDAD @V305096 05143000
  5151. ST R7,RFOFP RETAIN R/F OF P @V305096 05144000
  5152. * 05145000
  5153. * SET UP C/D NO OF PHASE THIS CSECT 05146000
  5154. LH R8,PHNUMD BELONGS TO @V305096 05147000
  5155. * 05148000
  5156. CH R8,PHSNO IF CURRENTLY @V305096 05149000
  5157. * PROCESSING IN THIS 05150000
  5158. PS3SW1 BE RLDOR PHASE, NO NEW INFO NEEDED @V305096 05151000
  5159. * BRANCH ADDRESS CHANGED FOR 05152000
  5160. * PASS 3 RLD PROCESSING 05153000
  5161. STH R8,PHSNO SAVE FOR CURRENT USE @V305096 05154000
  5162. LR R9,R8 FIND C/D ENTRY FOR THIS PHASE @V305096 05155000
  5163. LA RF,* @V305096 05156000
  5164. B LTCDAD @V305096 05157000
  5165. * 05158000
  5166. OI MAPSW,HEX8 SET MAPSW TO INDICATE @V305096 05159000
  5167. TM PHTYPED,RELPHASE PHASE RELOCATABLE @V305096 05160000
  5168. BO PS3SW2 OR @V305096 05161000
  5169. NI MAPSW,HEXFF-HEX8 NOT RELOCATABLE @V305096 05162000
  5170. * 05163000
  5171. PS3SW2 NOP TSTRLD B IF PASS 3 RLD PROCESSING @V305096 05164000
  5172. * 05165000
  5173. GETCENT MVC CPHENT(2*CDLNGTH),CDENTRY SAVE PHASE ENTRY @V305096 05166000
  5174. * IN CURRENT ENTRY 05167000
  5175. PS3SW4 NOP READLST IF PASS 3 RLD PROCESSING, GO TO @V305096 05168000
  5176. * READ FIRST BLOCK 05169000
  5177. EJECT 1 05170000
  5178. * 05171000
  5179. *** - R POINTER 05172000
  5180. * 05173000
  5181. RLDOR OI RLDSW2+1,X'F0' IF SWITCH NOT SET IT BYPASSES ER @V305096 05174000
  5182. TM D17,X'80' PROCESSING @V305096 05175000
  5183. BZ *+12 @V305096 05176000
  5184. NI RLDSW2+1,X'0F' ON ER-S ADD ASSMBLD ORIGIN TO R/F@V305096 05177000
  5185. NI D17,X'7F' AND CLEAR ER SWITCH IN R POINTER @V305096 05178000
  5186. * 05179000
  5187. LH R9,D17 GET C/D ENTRY FROM C/D NO @V305096 05180000
  5188. LA RF,* @V305096 05181000
  5189. B LTCDAD @V305096 05182000
  5190. * 05183000
  5191. MVC RORIGN+DEC1(DEC3),ASSORGD SAVE ASSORG @V305096 05184000
  5192. CLI ESDTYPD,SD IF R POINTS TO @V305096 05185000
  5193. BE RLDSW2 A CSECT OR TO PRIVATE @V305096 05186000
  5194. CLI ESDTYPD,PC CODE , R/F IS FOUND @V305096 05187000
  5195. BE RLDSW2 AND BRANCH IS TAKEN @V305096 05188000
  5196. * 05189000
  5197. * R DOES NOT POINT DIRECTLY TO SD/PC 05190000
  5198. CLI ESDTYPD,CM IF CM, REQ ONLY R/F @V305096 05191000
  5199. BE RLDCMN @V305096 05192000
  5200. * 05193000
  5201. CLI ESDTYPD,ER IF NOT ER,THEN LR @V305096 05194000
  5202. BNE RNXTRN @V305096 05195000
  5203. * 05196000
  5204. RLCTER OI RLDSW3+DEC1,HEXF0 SET SW TO BYPASS PRO'SING RLDS@V305096 05197000
  5205. PS3SW5 NOP RLDRET B IF PASS 3 PROCESSING @V305096 05198000
  5206. LH R2,UNRESD INCREMENT COUNT OF @V305096 05199000
  5207. LA R2,DEC1(R2) UNRESOLVED @V305096 05200000
  5208. STH R2,UNRESD EXTERNAL REFERENCES AND GO TO @V305096 05201000
  5209. B RLDRET PROCESS NEXT FOUR BYTES @V305096 05202000
  5210. * 05203000
  5211. RNXTRN TM SWITCHD,UNASSG IF LR UNASSIGNED @V305096 05204000
  5212. BO RLCTER WITHIN A C/S COUNT AS EXTRN @V305096 05205000
  5213. * 05206000
  5214. LH R9,CSNUMD LOCATE SD/PC THIS @V305096 05207000
  5215. LA RF,* @V305096 05208000
  5216. B LTCDAD LR BELONGS TO @V305096 05209000
  5217. * 05210000
  5218. * R/F OF R FOUND & RETAINED 05211000
  5219. RLDSW2 NOP *+8 SWITCH - ON ER-S ADD ASSEMBLED ORG TO R/F @V305096 05212000
  5220. A R7,RORIGN @V305096 05213000
  5221. A R7,COMNRF TAKE ACCOUNT OF COMMON R/F ATTRIBUTE @V305096 05214000
  5222. * 05215000
  5223. RLDCMN ST R7,RFOFR RETAIN R/F OF R & GO TO PROCESS @V305096 05216000
  5224. B RLDRET CONSTANT PORTION @V305096 05217000
  5225. EJECT 1 05218000
  5226. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05219000
  5227. * 05220000
  5228. * PROCESS RLD CONSTANT 05221000
  5229. * 05222000
  5230. RLDCON TM D17,X'01' IF DIFFERENT R & P FOLLOW SET SW1 TO @V305096 05223000
  5231. BO RLDSW3 ALLOW PROCESSING NEXT R & P @V305096 05224000
  5232. NI RLDSW1+1,X'0F' @V305096 05225000
  5233. * 05226000
  5234. RLDSW3 NOP RLDRET SWITCH IS B WHEN R&P BELONG WRONG PHASE@V305096 05227000
  5235. * 05228000
  5236. L R4,RFOFR R/F OF R SIGN CONTROLLED BY FLAG @V305096 05229000
  5237. TM D17,X'02' @V305096 05230000
  5238. BZ *+6 @V305096 05231000
  5239. LCR R4,R4 @V305096 05232000
  5240. * 05233000
  5241. MVC BUCK3(3),D18 ASSEMBLED ADDRESS OF ADCON @V305096 05234000
  5242. L R7,BUCK4 @V305096 05235000
  5243. A R7,RFOFP @V305096 05236000
  5244. * 05237000
  5245. IC R8,D17 LENGTH OF REQUIRED ADCON @V305096 05238000
  5246. SLL R8,28 @V305096 05239000
  5247. SRL R8,30 @V305096 05240000
  5248. PS3SW3 NOP RLDPRC3 B IF PASS 3 PROCESSING @V305096 05241000
  5249. * 05242000
  5250. LA R8,1(R8) @V305096 05243000
  5251. LR R9,R8 @V305096 05244000
  5252. * 05245000
  5253. * MODIFY LOAD CONSTANT IN CI BLOCK 05246000
  5254. * 05247000
  5255. * RA - WORK (ADCON CONTENTS) R7 - ADDRESS OF ADCON 05248000
  5256. * R4 - R/F OF R (ADCON) R8 - LENGTH OF ADCON 05249000
  5257. * R5 - ADDRESS IN WKAREA R9 - LENGTH OF ADCON 05250000
  5258. * 05251000
  5259. NI RLDSW4+1,X'0F' SET SWITCH TO ALLOW ADCON TO BE @V305096 05252000
  5260. SR RA,RA EXTRACTED INTO CLEAN REGISTER @V305096 05253000
  5261. * 05254000
  5262. RLADCN BAL RF,DERDAD @V305096 05255000
  5263. * 05256000
  5264. L R5,AWKARE CALC LOAD ADDRESS WITHIN WKAREA @V305096 05257000
  5265. AR R5,R7 @V305096 05258000
  5266. S R5,LOCORE @V305096 05259000
  5267. * 05260000
  5268. RLDSW4 NOP RESDCN SWITCH - NOP TO EXTRACT/ B TO REPLACE @V305096 05261000
  5269. * 05262000
  5270. SLL RA,8 SET UP ADCON ONE BYTE AT A TIME IN @V305096 05263000
  5271. IC RA,0(R5) WORK REGISTER AND UPDATE ASSEMBLED @V305096 05264000
  5272. LA R7,1(R7) ADDRESS, TO ENSURE WORKING IN @V305096 05265000
  5273. BCT R8,RLADCN CORRECT BLOCK OF CI @V305096 05266000
  5274. * 05267000
  5275. * APPLY R/F TO ADCON 05268000
  5276. AR RA,R4 ADD R/F TO ADCON, SET SWITCH TO @V305096 05269000
  5277. OI RLDSW4+1,X'F0' REPLACE ADCON & SET LOAD ADDRESS @V305096 05270000
  5278. BCTR R7,0 CORRECTLY TO LAST BYTE IN ADCON @V305096 05271000
  5279. * 05272000
  5280. * REPLACE ADCON IN CI BLOCK 05273000
  5281. RESDCN STC RA,0(R5) RESTORE ADCON ONE BYTE AT A TIME,@V305096 05274000
  5282. SRL RA,8 DECREMENTING ASSEMBLED ADDRESS UNTIL @V305096 05275000
  5283. BCTR R7,0 ENTIRELY REPLACED @V305096 05276000
  5284. BCT R9,RLADCN @V305096 05277000
  5285. * 05278000
  5286. B RLDRET @V305096 05279000
  5287. * 05280000
  5288. *** ROUTINE TO COUNT NO OF ADCONS OUTSIDE PHASE LIMITS 05281000
  5289. * 05282000
  5290. ROTSID LH R1,ROTCNT ADD 1 TO CURRENT COUNT @V305096 05283000
  5291. LA R1,1(R1) @V305096 05284000
  5292. STH R1,ROTCNT @V305096 05285000
  5293. B RLDRET @V305096 05286000
  5294. EJECT 1 05287000
  5295. * 05288000
  5296. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05289000
  5297. * 05290000
  5298. * PRINT OUT COUNT OF UNRESOLVED ADCONS ON MAP 05291000
  5299. * 05292000
  5300. TSTUNR NOP TSTRLDXX B IF PASS 3 PROCESSING @V305096 05293000
  5301. OI TSTUNR+DEC1,HEXF0 SET PASS 3 SWITCH @V305096 05294000
  5302. * 05295000
  5303. TM MAPSW,X'01' IF MAP NOT REQUESTED DO NOT @V305096 05296000
  5304. BZ RELROUT SUPPLY THIS INFORMATION @V305096 05297000
  5305. * 05298000
  5306. LA R2,TSTSID NEXT ROTINE TO GO TO @V305096 05299000
  5307. LH R1,UNRESD IF NO UNRESOLVED ADDRESS CONSTANTS @V305096 05300000
  5308. TSTCNT LTR R1,R1 CHECK IF OUTSIDE LIMIT ADCONS @V305096 05301000
  5309. BCR 8,R2 @V305096 05302000
  5310. * 05303000
  5311. CVD R1,DBLWRD CONVERT NO OF UNRESOLVED ADCONS @V305096 05304000
  5312. OI DBLWRD+7,X'0F' @V305096 05305000
  5313. UNPK W1(3),DBLWRD(8) @V305096 05306000
  5314. MVC W5(KUNRLG),KUNRSD @V305096 05307000
  5315. * 05308000
  5316. BAL R6,SPACE1 @V305096 05309000
  5317. BAL R6,PRINT @V305096 05310000
  5318. * 05311000
  5319. BR R2 GO TO NEXT ROUTINE @V305096 05312000
  5320. * 05313000
  5321. *** PRINT COUNT OF ADCONS OUTSIDE PHASE LIMITS ON MAP 05314000
  5322. * 05315000
  5323. TSTSID LA R2,RELROUT MODIFY ADDRESS OF NEXT ROUTINE @V305096 05316000
  5324. MVC KUNRSD(L'KUNROT),KUNROT NEW MESSAGE LINE SET UP@V305096 05317000
  5325. LH R1,ROTCNT COUNT OF ADCONS OUTSIDE LIMITS @V305096 05318000
  5326. B TSTCNT DROP THROUGH PRINT ROUTINE @V305096 05319000
  5327. * 05320000
  5328. W5 EQU W0+5 PRINT POSITION REQUIRED @V305096 05321000
  5329. EJECT 1 05322000
  5330. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05323000
  5331. * 05324000
  5332. * INITIALISATION FOR PASS 3 RLD PROCESSING 05325000
  5333. * 05326000
  5334. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05327000
  5335. * 05328000
  5336. RELROUT TM MAPSW,HEX10 IF NO RELOCATABLE PHASE PROCESSED,@V305096 05329000
  5337. BNO WRLST GO @V305096 05330000
  5338. * 05331000
  5339. MVI PHSNO,HEXFF FORCE RE-INITIALISATION @V305096 05332000
  5340. MVC PS3SW1+DEC2(DEC2),STSTREL2 @V305096 05333000
  5341. OI PS3SW2+DEC1,HEXF0 MODIFY FOR THIRD @V305096 05334000
  5342. OI PS3SW3+DEC1,HEXF0 PASS RLD @V305096 05335000
  5343. OI PS3SW4+DEC1,HEXF0 PROCESSING @V305096 05336000
  5344. OI PS3SW5+DEC1,HEXF0 @V305096 05337000
  5345. * 05338000
  5346. L RA,AWKARE GET ADDRESS @V305096 05339000
  5347. AH RA,CILRSIZE OF END @V305096 05340000
  5348. ST RA,ENDWKARE WORKAREA @V305096 05341000
  5349. SR RA,RA INDICATE NO RLD ITEMS IN @V305096 05342000
  5350. B RLDPS3 CURRENT PHASE AND GO @V305096 05343000
  5351. EJECT 1 05344000
  5352. * 05345000
  5353. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05346000
  5354. * 05347000
  5355. * S/R USED BY THIRD PASS RLD PROCESSOR TO SWITCH PHASES 05348000
  5356. * 05349000
  5357. TSTRLDXX EQU * @V305096 05350000
  5358. OI RLDSW5+DEC1,HEXF0 END OF RLD INPUT @V305096 05351000
  5359. TSTRLD LTR RA,RA IF # OF RLD ITEMS INCORRECT @V305096 05352000
  5360. BP PDRLD GO HERE @V305096 05353000
  5361. RLDSW5 NOP WRLST AT END OF RLD - @V305096 05354000
  5362. * INPUT WRITE OUT LAST BLOCK IN CIL 05355000
  5363. TM MAPSW,HEXC IF NEXT PHASE REL @V305096 05356000
  5364. BO GETCENT GO TO INITIALIZE @V305096 05357000
  5365. TSTREL2 TM MAPSW,HEXC IF THIS PHASE RELOCATABLE @V305096 05358000
  5366. BO RLDOR GO PROCESS R-POINTER @V305096 05359000
  5367. OI RLDSW3+DEC1,HEXF0 SET SWITCH FOR NOT RELOCATABLE@V305096 05360000
  5368. B RLDRET TO BYPASS RLD AND RETURN @V305096 05361000
  5369. * 05362000
  5370. PDRLD C R5,ENDWKARE IF NOT FULL @V305096 05363000
  5371. BL STOR00 GO @V305096 05364000
  5372. * 05365000
  5373. SR R8,R8 WRITE BACK LAST BLOCK @V305096 05366000
  5374. L R7,HICORE AND GO TO @V305096 05367000
  5375. BAL RF,DERDAD READ NEXT CIL RECORD @V305096 05368000
  5376. L R5,AWKARE RESET POINTER @V305096 05369000
  5377. * 05370000
  5378. STOR00 SR R8,R8 PADD THE RESERVED @V305096 05371000
  5379. * RLD SPACE IN 05372000
  5380. ST R8,DEC0(R5) THE CORE IMAGE LIBRARY @V305096 05373000
  5381. LA R5,DEC4(R5) WITH '00' UNTILL THE @V305096 05374000
  5382. BCT RA,PDRLD RLD COUNT IS ZERO, THEN @V305096 05375000
  5383. B TSTRLD RETURN @V305096 05376000
  5384. EJECT 1 05377000
  5385. * 05378000
  5386. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05379000
  5387. * 05380000
  5388. * S/R TO GET LAST CIL BLOCK FOR THIS PHASE 05381000
  5389. * 05382000
  5390. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05383000
  5391. READLST EQU * @V305096 05384000
  5392. L R5,AWKARE GET WORKAREA ADDRESS @V305096 05385000
  5393. LH RA,RLDITEMS GET NO OF RLD ITEMS @V305096 05386000
  5394. * FOR THIS PHASE 05387000
  5395. AH R5,NOBYTE GET ALIGNED ADDRESS @V305096 05388000
  5396. LA R5,DEC3(R5) FOR THE FIRST @V305096 05389000
  5397. SRL R5,DEC2 RLD ITEMS IN @V305096 05390000
  5398. SLL R5,DEC2 CIL BLOCK @V305096 05391000
  5399. C R5,ENDWKARE IF FIRST RLD ITEM IN A NEW @V305096 05392000
  5400. BL SAMEBLCK BLOCK, INITIALIZE FOR @V305096 05393000
  5401. L R5,AWKARE RLD IN NEW BLOCK @V305096 05394000
  5402. * 05395000
  5403. SAMEBLCK L R7,NXPHRG INITIALISE TO GET @V305096 05396000
  5404. LA R7,DEC3(R7) CORRECT CIL RECORD IN @V305096 05397000
  5405. SRL R7,DEC2 WORKAREA AND A NEW UPPER @V305096 05398000
  5406. SLL R7,DEC2 LIMIT, EQUAL TO THE OLD LIMIT@V305096 05399000
  5407. LR R8,RA @V305096 05400000
  5408. SLL R8,DEC2 PLUS 4 TIMES THE # OF @V305096 05401000
  5409. AR R8,R7 RLD ITEMS TO BE STORED @V305096 05402000
  5410. ST R8,NXPHRG @V305096 05403000
  5411. * 05404000
  5412. SR R8,R8 WRITE BACK LAST CIL RECORD AND @V305096 05405000
  5413. BAL RF,DERDAD READ NEXT @V305096 05406000
  5414. B RLDOR AND RETURN @V305096 05407000
  5415. EJECT 1 05408000
  5416. * 05409000
  5417. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05410000
  5418. * 05411000
  5419. * S/R TO GENERATE RELOCATION LIST DICTIONARY ITEMS 05412000
  5420. * 05413000
  5421. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05414000
  5422. * 05415000
  5423. RLDPRC3 C R7,ORPHRG NO RLD ITEMS WILL BE @V305096 05416000
  5424. BL RLDRET GENERATED FOR ADDRESS CONSTANTS @V305096 05417000
  5425. * OUTSIDE PHASE LIMITS 05418000
  5426. AR R7,R8 ADD LENGTH-1 TO ADDRESS OF ADCON @V305096 05419000
  5427. C R7,NXPHRG IF ADDRESS TOO LOW OR TOO HIGH @V305096 05420000
  5428. BNL RLDRET RETURN TO PROCESS NEXT ITEM @V305096 05421000
  5429. SR R7,R8 OTHERWISE, RE-ESTABLISH ADDRESS OF@V305096 05422000
  5430. A R7,COMNRF ADD LENGTH OF COMMONS @V305096 05423000
  5431. ST R7,DEC0(R5) ADCON AND STORE INTO THE RLD ITEM @V305096 05424000
  5432. SLL R8,DEC3 GET LENGTH CODE AND STORE @V305096 05425000
  5433. STC R8,DEC0(R5) IN FLAG BYTE @V305096 05426000
  5434. TM D17,HEX2 IF RELOCATION FACTOR POSITIVE@V305096 05427000
  5435. BNO CHKCNT GO @V305096 05428000
  5436. OI DEC0(R5),HEX1 INDICATE NEGATIVE RF @V305096 05429000
  5437. CHKCNT BCT RA,INCRMNT REDUCE RLD COUNT, IF COUNT @V305096 05430000
  5438. OI RLDSW3+DEC1,HEXF0 EQUAL TO ZERO, BYPASS @V305096 05431000
  5439. * FURTHER RLD FOR THIS PHASE 05432000
  5440. INCRMNT LA R5,DEC4(R5) INCREMENT ADDRESS FOR NEXT ITEM @V305096 05433000
  5441. L R7,HICORE INIT FOR NEXT BLOCK @V305096 05434000
  5442. C R5,ENDWKARE IF NO NEW BLOCK NEEDED @V305096 05435000
  5443. BL RLDRET GO @V305096 05436000
  5444. SR R8,R8 WRITE FULL BLOCK @V305096 05437000
  5445. BAL RF,DERDAD AND READ NEXT BLOCK @V305096 05438000
  5446. L R5,AWKARE RESET RLD ITEM BASE @V305096 05439000
  5447. B RLDRET RETURN @V305096 05440000
  5448. EJECT 1 05441000
  5449. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05442000
  5450. * 05443000
  5451. * WRITE LAST BLOCK IN SYSUT2 05444000
  5452. * 05445000
  5453. WRLST EQU * @V305065 05446000
  5454. LH R2,THPHDA GET RECORD NUMBER @V305065 05447000
  5455. L R3,AWKARE AND OUTPUT BUFFER @V305065 05448000
  5456. LA R1,SYSUT2 POINT TO FSCB @V305065 05449000
  5457. BAL RE,WRTUTX WRITE LAST BLOCK IN SYSUT2 @V305065 05450000
  5458. * 05451000
  5459. BAL R6,CLOSE CLOSE DOSLNK @V305096 05452000
  5460. L RA,CATMTX LOAD BASE OF DLKCAT @V305096 05453000
  5461. BR RA AND BRANCH TO IT @V305096 05454000
  5462. EJECT 1 05455000
  5463. * 05456000
  5464. *** ABORT ERROR PROCESSOR 05457000
  5465. * 05458000
  5466. * ROUTINE PRINTS ERROR MESSAGE AND CANCELS 05459000
  5467. * 05460000
  5468. * INPUT - RB - BYTE 0 - LENGTH OF ERROR MESSAGE MIN 1 05461000
  5469. * BYTES 1, 2, 3 - ADDR OF ERROR MESSAGE 05462000
  5470. * 05463000
  5471. ABORT LR R6,RB @V305096 05464000
  5472. LA R6,0(R6) R6 - ADDR OF MESSAGE @V305096 05465000
  5473. ST R6,SAVEREG SAVE FOR LATER USE @V305096 05466000
  5474. SRL RB,24 RB - LENGTH OF MESSAGE @V305096 05467000
  5475. * MIN ONE 05468000
  5476. EX RB,MOVE MOVE MESSAGE TO OUTPUT @V305096 05469000
  5477. * AREA W0 05470000
  5478. TM MAPSW,MAPOP MAP REQUESTED @V305096 05471000
  5479. BZ ABORT10 NO, PRINT ON SYSLOG @V305096 05472000
  5480. * 05473000
  5481. TM CMSSWT1,MAPPRT IS PRINT OPTION SPECIFIED? @V305065 05474000
  5482. BZ ABORT5 BRANCH IF NOT @V305065 05475000
  5483. BAL R6,SPACE1 YES, PRINT ERROR @V305096 05476000
  5484. BAL R6,PRINT ON SYSLST @V305096 05477000
  5485. BAL R6,SPACE1 SPACE 1 @V305096 05478000
  5486. L R6,SAVEREG REFILL OUTPUT AREA @V305096 05479000
  5487. EX RB,MOVE W0 FOR LOGMSG ROUTINE @V305096 05480000
  5488. B ABORT10 @V305065 05481000
  5489. ABORT5 EQU * @V305065 05482000
  5490. TM CMSSWT1,MAPTYP IS TYPE OPTION SPECIFIED? @V305065 05483000
  5491. BO ABORT10 BRANCH IF YES @V305065 05484000
  5492. BAL R6,DISK PUT MSG ON DISK @V305065 05485000
  5493. ABORT10 EQU * @V305065 05486000
  5494. BAL R6,LOGMSG TYPE ERROR MESSAGE @V305065 05487000
  5495. MVI ERCODE,ER024 INDICATE TERMINAL ERROR @V305065 05488000
  5496. B CANCL CANCEL JOB @V305096 05489000
  5497. EJECT 05490000
  5498. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05491000
  5499. * 05492000
  5500. * CONSTANTS AND S/R USED ONLY BY PASS 2 AND 3 RLD PROCESSING 05493000
  5501. * 05494000
  5502. UNRESD DC H'0' COUNT OF UNRESOLVED RLD ITEMS @V305096 05495000
  5503. ROTCNT DC H'0' COUNT OF ADCONS OUTSIDE PHASE LIMITS @V305096 05496000
  5504. * 05497000
  5505. SROTSID DC S(ROTSID) SWITCH INSTRCTN USED TO MODIFY DERDAD @V305096 05498000
  5506. * 05499000
  5507. STSTREL2 DC S(TSTREL2) @V305096 05500000
  5508. * 05501000
  5509. RFOFP DC F'0' R/F OF SD/PC POINTED TO BY P@V305096 05502000
  5510. * 05503000
  5511. RFOFR DC F'0' R/F OF SD/PC BELONGING TO R POINTER @V305096 05504000
  5512. * 05505000
  5513. RORIGN DC F'0' ORIGIN OF C/D ENTRY POINTED TO BY R @V305096 05506000
  5514. * 05507000
  5515. KUNRSD DC C'UNRESOLVED ADDRESS CONSTANTS ' @V305096 05508000
  5516. KUNRLG EQU *-KUNRSD @V305096 05509000
  5517. * 05510000
  5518. KUNROT DC C'ADDRESS CONSTANTS OUTSIDE LIMITS OF PHASE' @V305096 05511000
  5519. * 05512000
  5520. EJECT 1 05513000
  5521. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05514000
  5522. * 05515000
  5523. * CMS S/R TO READ SEQUENTIALLY OFF SYSUT1 05516000
  5524. * 05517000
  5525. USING FSCBD,R1 @V305065 05518000
  5526. RDSUT1 EQU * @V305065 05519000
  5527. ST RF,RFHOLD SAVE RETURN ADDRESS @V305065 05520000
  5528. FSREAD ,FSCB=SYSUT1,BUFFER=INPBLK,ERROR=RDSUT1E @V305065 05521000
  5529. L RF,RFHOLD RESTORE RETURN ADDRESS @V305065 05522000
  5530. BR RF AND RETURN @V305065 05523000
  5531. * 05524000
  5532. RDSUT1E EQU * @V305065 05525000
  5533. CH RF,K12 END OF FILE? @V305065 05526000
  5534. BNE RDDSKERR BRANCH IF NOT @V305065 05527000
  5535. MVC FSCBITNO,K1 INDICATE SYSUT1 USED @V305065 05528000
  5536. B TSTUNR LOOK FOR UNRESOLVED ADCONS @V305065 05529000
  5537. * 05530000
  5538. RFHOLD DC F'0' @V305065 05531000
  5539. EJECT 1 05532000
  5540. * 05533000
  5541. *** CMS S/R TO REPOSITION SYSUT1 TO START OF FILE 05534000
  5542. * 05535000
  5543. REPUT1 EQU * @V305065 05536000
  5544. LA R1,SYSUT1 POINT TO PLIST @V305065 05537000
  5545. CLC FSCBITNO,=H'0' WAS SYSUT1 USED? @V305065 05538000
  5546. BE TSTUNR BRANCH IF NOT @V305065 05539000
  5547. ST RF,RFHOLD SAVE RETURN REGISTER @V305065 05540000
  5548. FSCLOSE ,FSCB=(1) CLOSE SYSUT1 @V305065 05541000
  5549. SR RF,RF CLEAR REGISTER @V305065 05542000
  5550. STH RF,FSCBITNO INDICATE SEQUENTIAL READ @V305065 05543000
  5551. L RF,RFHOLD RESTORE RETURN REGISTER @V305065 05544000
  5552. BR RF AND RETURN @V305065 05545000
  5553. DROP R1 @V305065 05546000
  5554. EJECT 1 05547000
  5555. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05548000
  5556. * 05549000
  5557. *** CMS S/R TO CLOSE DOSLNK AND SYSUT1 05550000
  5558. * 05551000
  5559. CLOSE EQU * @V305065 05552000
  5560. FSCLOSE ,FSCB=DOSLNK CLOSE DOSLNK @V305065 05553000
  5561. FSCLOSE ,FSCB=SYSUT1 CLOSE SYSUT1 @V305065 05554000
  5562. FSCLOSE ,FSCB=SYSUT2 CLOSE SYSUT2 @V305065 05555000
  5563. BR R6 RETURN @V305065 05556000
  5564. LTORG , @V305065 05557000
  5565. TITLE 'DLKCAT - UPDATE CIL DIRECTORY - $LNKEDT - DOS' 05558000
  5566. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05559000
  5567. * 05560000
  5568. * CSECT DLKCAT - UPDATE CIL DIRECTORY 05561000
  5569. * 05562000
  5570. * ENTRY POINT - DLKCAT 05563000
  5571. * 05564000
  5572. * FUNCTION - BUILDS STOW TABLE AND CALLS $MAINDIR TO 05565000
  5573. * UPDATE THE CIL DIRECTORY. THE TYPE OF CALL ( C OR L - 05566000
  5574. * SEE DSECT STOWENT ) DETERMINES WETHER THE DIRECTORY 05567000
  5575. * ENTRIES ARE WRITTEN INTO THE DIRECTORY OF CATALOGED 05568000
  5576. * PHASES ( C ) OR INTO THE LINK AREA ( L ). 05569000
  5577. * 05570000
  5578. * BUILDS STATUS TABLE AND CALLS $LIBSTAT FOR STATUS 05571000
  5579. * REPORT OF CIL. 05572000
  5580. * 05573000
  5581. * INPUT - CONTROL DICTIONARY ( DSECT CDENTRY ) 05574000
  5582. * 05575000
  5583. * OUTPUT - STOW TABLE ( DSECT STOWENT ) 05576000
  5584. * PRESENTED TO $MAINDIR 05577000
  5585. * 05578000
  5586. * - STATUS TABLE ( DSECT STATTAB ) 05579000
  5587. * PRESENTED TO $LIBSTAT 05580000
  5588. * 05581000
  5589. * EXITS - NORMAL - SVC 14 TO JOB CONTROL 05582000
  5590. * 05583000
  5591. * - ERROR - CNCL (CANCEL) 05584000
  5592. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05585000
  5593. * 05586000
  5594. DLKCAT CSECT DIRECTORY UPD @V305096 05587000
  5595. USING *,RA @V305096 05588000
  5596. USING STOWTAB,R4 @V305096 05589000
  5597. USING STOWENT,R3 @V305096 05590000
  5598. USING BGCOM,R1 @V305096 05591000
  5599. * 05592000
  5600. USING FSCBD,R6 @V305065 05593000
  5601. LA R6,SYSUT2 POINT TO SYSUT2 PLIST @V305065 05594000
  5602. SR R4,R4 CLEAR REGISTER @V305065 05595000
  5603. STH R4,FSCBITNO INDICATE READ SEQUENTIAL @V305065 05596000
  5604. DROP R6 @V305065 05597000
  5605. L R4,CTLDAD STOW TABLE STARTS @V305096 05598000
  5606. LA R4,2*CDLNGTH(R4) AFTER CONTROL DIC @V305096 05599000
  5607. LA R3,HEADLNG(R4) @V305096 05600000
  5608. * 05601000
  5609. * BUILD STOW TABLE HEADER 05602000
  5610. * 05603000
  5611. SR R6,R6 @V305096 05604000
  5612. MVC LIBCU(DEC1),ZEROH LOGICAL UNIT OF @V305096 05605000
  5613. MVC LIBCU+1(DEC1),CILTYPE LIBRARY @V305096 05606000
  5614. STH R6,DIRADDR OF CATALOGED PHASES INTO@V305096 05607000
  5615. * HEADER 05608000
  5616. STH R6,ENTNUM INIT ENTNUM AS ZERO @V305096 05609000
  5617. LA R6,1(R6) AND @V305096 05610000
  5618. STH R6,REQNUM REQNUM AS ONE @V305096 05611000
  5619. * 05612000
  5620. ************************************************************** 05613000
  5621. * ROUTINE TO SCAN CONTROL DICTIONARY FOR PHASE ENTRIES 05614000
  5622. ************************************************************** 05615000
  5623. * 05616000
  5624. L R9,CDENT1 ADDR OF FIRST C/D ENTRY @V305096 05617000
  5625. LA R6,20(,R4) @V305065 05618000
  5626. SCANCD TM ESDTYPD,PH IS IT A PHASE ENTRY @V305096 05619000
  5627. BNO CONTSCN NO, CONTINUE SCAN @V305096 05620000
  5628. CR R3,R6 END OF ST/T REACHED @V305096 05621000
  5629. BNH BUILD NO, BRANCH @V305096 05622000
  5630. BAL RE,UPDDIR YES, BUILD LIBRARY @V305096 05623000
  5631. BUILD BAL RE,BLDENT ADD ENTRY TO ST/T @V305096 05624000
  5632. CONTSCN LA R9,CDLNGTH(R9) GO TO NEXT ENTRY @V305096 05625000
  5633. C R9,CTLDAD END OF C/D REACHED @V305096 05626000
  5634. BNH SCANCD NO, CONTINUE SCAN @V305096 05627000
  5635. BAL RE,UPDDIR BUILD LIBRARY @V305065 05628000
  5636. B CANCL AND RETURN TO CMS @V305065 05629000
  5637. EJECT 1 05630000
  5638. ************************************************************** 05631000
  5639. ** SUBROUTINE TO BUILD STOW TABLE ENTRY 05632000
  5640. ************************************************************** 05633000
  5641. * 05634000
  5642. BLDENT EQU * @V305096 05635000
  5643. * 05636000
  5644. * MODIFY LOAD AND TRANSFER ADDRESS AND LAST BYTE ADDRESS BY 05637000
  5645. * LENGTH OF COMMON 05638000
  5646. * 05639000
  5647. L R5,COMNRF GET LENGTH OF COMMON @V305096 05640000
  5648. LM R0,R1,ORPHRGD MODIFY @V305096 05641000
  5649. AR R0,R5 @V305096 05642000
  5650. AR R1,R5 @V305096 05643000
  5651. STM R0,R1,ORPHRGD LOAD ADDRESS @V305096 05644000
  5652. L R0,TRFRADD LAST BYTE ADDRESS @V305096 05645000
  5653. AR R0,R5 @V305096 05646000
  5654. ST R0,TRFRADD TRANSFER ADDRESS @V305096 05647000
  5655. * 05648000
  5656. LH R7,ENTNUM UPDATE NUMBER OF STOW @V305096 05649000
  5657. LA R7,DEC1(R7) TABLE ENTRIES @V305096 05650000
  5658. STH R7,ENTNUM @V305096 05651000
  5659. * 05652000
  5660. * BUILD ENTRY 05653000
  5661. * 05654000
  5662. LH R8,MINDAT @V305096 05655000
  5663. MVC PHSNAME,PHNAMED PHASE NAME @V305096 05656000
  5664. MVC PHSADDR,ORPHDAD SET FIRST RECORD NUMBER @V305065 05657000
  5665. MVC NOBLOCK,NOBLOKD NUM OF TEXT BLOCKS @V305096 05658000
  5666. MVC NOBYTES,NOBYTED NUM OF BYTES IN LST BLK @V305096 05659000
  5667. MVC PHSTYPE,PHTYPED PHASE TYPE @V305096 05660000
  5668. MVI REQTYPE,C'C' TYPE OF REQUEST @V305096 05661000
  5669. * 05662000
  5670. TM PHTYPED,SELFRELO IF LOADPNT ZERO ( PHASE @V305096 05663000
  5671. BNO NOSELFR SELFRELOCATING ) AND @V305096 05664000
  5672. OC TRFRADD,TRFRADD ALSO ENTRYPT ZERO BOTH @V305096 05665000
  5673. BNZ NOSELFR WILL NOT BE PRESENT @V305065 05666000
  5674. XC LOADPNT(SELFRL),LOADPNT CLEAR REST OF ENTRY @V305065 05667000
  5675. B ENDROUT @V305065 05668000
  5676. NOSELFR MVC LOADPNT,ORPHRGD+1 LOAD ADDRESS OF PHASE @V305096 05669000
  5677. MVC ENTRYPT,TRFRADD+1 TRANSFER ADDRESS @V305096 05670000
  5678. LA R8,DEC3(R8) UPDATE NUM OF HLFWORDS @V305096 05671000
  5679. * USER DATA 05672000
  5680. XC RLDITEM(NONREL),RLDITEM CLEAR RLD CONSTANTS @V305065 05673000
  5681. TM PHTYPED,RELPHASE RLDITEM, RLDBLCK, @V305096 05674000
  5682. BNO ENDROUT AND PRTSTRT WILL ONLY @V305096 05675000
  5683. * BE PRESENT IF THE PHASE 05676000
  5684. * IS RELOCATABLE 05677000
  5685. MVC RLDITEM,RLDITEMD NUM OF RLD ITEMS @V305096 05678000
  5686. MVC RLDBLCK,RLDBLCKD+1 NUM OF EXTRA RLD BLOCKS @V305096 05679000
  5687. MVC PRTSTRT,LINKSTRD+1 PARTITION START ADDRESS @V305096 05680000
  5688. LA R8,DEC3(R8) UPDATE NUM OF HLFWORDS @V305096 05681000
  5689. * USER DATA 05682000
  5690. ENDROUT STC R8,USERDAT AND STORE IT @V305096 05683000
  5691. LA R8,DEC6(R8) ADD 6 H TO USERDATA @V305096 05684000
  5692. SLL R8,1 MULTIPLY BY 2 TO GET @V305096 05685000
  5693. * TOTAL LENGTH OF ENTRY 05686000
  5694. AR R3,R8 GO TO NEXT ENTRY @V305096 05687000
  5695. BR RE RETURN @V305096 05688000
  5696. EJECT 1 05689000
  5697. ************************************************************ 05690000
  5698. * 05691000
  5699. * CMS SUBROUTINE TO WRITE DOSLIB AND ISSUE STOW 05692000
  5700. * 05693000
  5701. ************************************************************ 05694000
  5702. DROP R3 @V305065 05695000
  5703. USING STOWENT,R2 @V305065 05696000
  5704. UPDDIR EQU * @V305065 05697000
  5705. ST RE,RESAVE1 SAVE RETURN REGISTER @V305065 05698000
  5706. LA R2,HEADLNG(,R4) POINT TO STOW RECORD @V305065 05699000
  5707. LH R7,PHSADDR GET CURRENT PHS FIRST RECNUM @V305065 05700000
  5708. SR R8,R8 @V305065 05701000
  5709. IC R8,RLDBLCK GET RLD BLOCK COUNT @V305065 05702000
  5710. AH R8,NOBLOCK ADD TEXT RECORD COUNT @V305065 05703000
  5711. LA R3,STOWENTL GET LENGTH OF STOW @V305065 05704000
  5712. BAL RE,WRITE GO WRITE STOW RECORD @V305065 05705000
  5713. L R2,AWKARE POINT TO I/O AREA @V305065 05706000
  5714. UPDDIR1 EQU * @V305065 05707000
  5715. FSREAD ,FSCB=SYSUT2,BUFFER=(2),RECNO=(7),ERROR=UPDERR @V305065 05708000
  5716. LR R3,R0 GET RECORD LENGTH @V305065 05709000
  5717. DROP R2 @V305065 05710000
  5718. USING STOWENT,R1 @V305065 05711000
  5719. LA R1,HEADLNG(,R4) POINT TO STOW ENTRY @V305065 05712000
  5720. CH R8,K1 IS THIS LAST RECORD? @V305065 05713000
  5721. BNE UPDIR1A BRANCH IF NOT @V305065 05714000
  5722. LH RF,RLDITEM YES, GET NUM OF RLD ITEMS @V305065 05715000
  5723. MH RF,=H'4' TIMES SIZE OF ITEM @V305065 05716000
  5724. AH RF,NOBYTES ADD BYTES OF LAST TXT BLK @V305065 05717000
  5725. LA RF,3(,RF) ROUND UP TO NEXT FULLWORD @V305065 05718000
  5726. SRL RF,DEC2 @V305065 05719000
  5727. SLL RF,DEC2 @V305065 05720000
  5728. SR RE,RE CLEAR REGISTER @V305065 05721000
  5729. DR RE,R0 DIVIDE BY RECORD SIZE @V305065 05722000
  5730. LTR RE,RE IS THERE A REMAINDER? @V305065 05723000
  5731. BZ UPDIR1A BRANCH IF NOT @V305065 05724000
  5732. LR R3,RE YES, GET RESIDUAL @V305065 05725000
  5733. UPDIR1A EQU * @V305065 05726000
  5734. BAL RE,WRITE WRITE THE RECORD ON DOSLIB @V305065 05727000
  5735. LA R7,1(,R7) UPDATE RECORD NUMBER @V305065 05728000
  5736. BCT R8,UPDDIR1 GO READ NEXT RECORD @V305065 05729000
  5737. UPDDIR2 EQU * @V305065 05730000
  5738. FSCLOSE ,FSCB=SYSUT2 CLOSE THE FILE @V305065 05731000
  5739. LA R3,HEADLNG(,R4) POINT TO STOW RECORD @V305065 05732000
  5740. NI DOSFLAGS,255-DOSSVC TURN OFF DOS SVC INDIC. @V305065 05733000
  5741. STOW DOSLIB,(R3),R ISSUE STOW @V305065 05734000
  5742. OI DOSFLAGS,DOSSVC INDICATE DOS SVC @V305065 05735000
  5743. L RE,RESAVE1 GET RETURN REGISTER @V305065 05736000
  5744. BR RE AND RETURN @V305065 05737000
  5745. * 05738000
  5746. UPDERR EQU * @V305065 05739000
  5747. C R9,CTLDAD END OF C/D REACHED? @V305065 05740000
  5748. BNH RDDSKERR BRANCH IF NOT @V305065 05741000
  5749. CH RF,K12 END OF FILE @V305065 05742000
  5750. BNE RDDSKERR BRANCH IF NOT @V305065 05743000
  5751. B UPDDIR2 FINISH UP @V305065 05744000
  5752. * 05745000
  5753. RESAVE1 DC F'0' @V305065 05746000
  5754. DROP R1 @V305065 05747000
  5755. EJECT 05748000
  5756. * 05749000
  5757. **************************************************************** 05750000
  5758. * CONSTANTS, SWITCHES AND DSECTS 05751000
  5759. ************************************************************** 05752000
  5760. * 05753000
  5761. MINDAT DC H'3' MINIMAL NUM OF HLFWRDS @V305096 05754000
  5762. * OF USERDATA IN STOW/T 05755000
  5763. **************************************************************** 05756000
  5764. ** DSECT OF STOW TABLE ENTRY 05757000
  5765. **************************************************************** 05758000
  5766. STOWENT DSECT @V305096 05759000
  5767. PHSNAME DS CL8 PHASE NAME @V305096 05760000
  5768. PHSADDR DS XL3 TRK ADDR ( RELATIVE TO @V305096 05761000
  5769. * BEGIN OF DIRECTORY ) AND 05762000
  5770. * RECORD NUMBER (TTR) OF 05763000
  5771. * FRST BLK OF PHASE 05764000
  5772. USERDAT DS XL1 NUMBER OF HALFWORDS @V305096 05765000
  5773. * USER DATA 05766000
  5774. NOBLOCK DS H NUM OF TEXT BLOCKS @V305096 05767000
  5775. NOBYTES DS H NUM OF BYTES IN LAST @V305096 05768000
  5776. * TEXT BLOCK 05769000
  5777. PHSTYPE DS XL1 PHASE TYPE SWITCH @V305096 05770000
  5778. * X'80' SELFRELOCATING 05771000
  5779. * X'40' RELOCATABLE 05772000
  5780. * X'20' SVA ELIGIBLE 05773000
  5781. REQTYPE DS C TYPE OF REQUEST @V305096 05774000
  5782. * C'C' FOR OPTION CATAL 05775000
  5783. * C'L' FOR OPTION LINK 05776000
  5784. LOADPNT DS XL3 LOAD POINT OF PHASE @V305096 05777000
  5785. ENTRYPT DS XL3 ENTRY POINT OF PHASE @V305096 05778000
  5786. RLDITEM DS H NUM OF RLD ITEMS @V305096 05779000
  5787. RLDBLCK DS XL1 NUM OF RLD BLOCKS @V305096 05780000
  5788. PRTSTRT DS XL3 START OF PARTITION @V305096 05781000
  5789. STOWENTL EQU *-STOWENT LENGTH OF STOW TABLE @V305096 05782000
  5790. * ENTRY 05783000
  5791. SELFRL EQU *-LOADPNT @V305065 05784000
  5792. NONREL EQU *-RLDITEM @V305065 05785000
  5793. **************************************************************** 05786000
  5794. ** DSECT OF STOW TABLE HEADER 05787000
  5795. **************************************************************** 05788000
  5796. STOWTAB DSECT @V305096 05789000
  5797. LIBCU DS XL2 LOGICAL UNIT OF LIBRARY @V305096 05790000
  5798. DIRADDR DS XL6 START ADDR OF DIR @V305096 05791000
  5799. * FOR OPTION CATAL DIRADDR CONTAINS THE ADDRESS OF THE 05792000
  5800. * DIRECTORY OF CATALOGED PHASES, 05793000
  5801. * FOR OPTION LINK THE ADDRESS OF THE LINK AREA OF THE 05794000
  5802. * CIL. 05795000
  5803. * CIL IS THE SYSTEM CIL IF NO PCIL IS ASSIGNED OR THE 05796000
  5804. * UNIQUELY ASSIGNED PCIL OF THE PARTITION. 05797000
  5805. REQNUM DS H NUMBER OF REQUEST @V305096 05798000
  5806. ENTNUM DS H NUMBER OF FOLLOWING @V305096 05799000
  5807. * ENTRIES 05800000
  5808. HEADLNG EQU *-STOWTAB LENGTH OF HEADER @V305096 05801000
  5809. * 05802000
  5810. DLKCAT CSECT RESUME CSECT @V305096 05803000
  5811. LTORG , @V305096 05804000
  5812. DLKCATND EQU * END OF CSECT DLKCAT @V305096 05805000
  5813. TITLE 'DLKINL LINK EDITOR INITIALIZATION - $LNKEDT - DOS' 05806000
  5814. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 05807000
  5815. * 05808000
  5816. * CSECT DLKINL - INITIALIZATION AND ACTION CARD PROCESSOR 05809000
  5817. * 05810000
  5818. * ENTRY POINT - DLKINL - ENTRY FROM JOB CONTROL 05811000
  5819. * 05812000
  5820. * FUNCTION - INITIALIZES CONSTANTS AND ADDRESSES OF TABLES 05813000
  5821. * AND WORKAREAS. RELOCATES ADDRESS CONSTANTS OF CSECT'S 05814000
  5822. * DMSDLK AND DLKINL. 05815000
  5823. * CHECKS IF PCIL ( IF ASSIGNED ) IS USEABLE. OPENS DOSLNK 05816000
  5824. * AND SYS001. 05817000
  5825. * PROCESSES ACTION CARDS. 05818000
  5826. * 05819000
  5827. * INPUT - DOSLNK 05820000
  5828. * 05821000
  5829. * OUTPUT - N/A 05822000
  5830. * 05823000
  5831. * EXTERNAL ROUTINES - SEE LIST OF SUBROUTINES IN CSECT DLKINL 05824000
  5832. * 05825000
  5833. * EXITS - NORMAL TO MAINFLOW IN DMSDLK 05826000
  5834. * - ERROR - ERROR MESSAGES RESULTING FROM THIS CSECT 05827000
  5835. * ARE 2112, 2113, 2135, 2136, 2184, 2191. 05828000
  5836. * 05829000
  5837. *TABLES AND WORKAREAS - EXPLAINED IN COMMENTS OF CSECT DMSDLK 05830000
  5838. * 05831000
  5839. *ATTRIBUTES - N/A 05832000
  5840. * 05833000
  5841. *************************************************************** 05834000
  5842. * 05835000
  5843. DLKINL CSECT INITIALIZATION @V305096 05836000
  5844. BALR R9,0 INITIALISE BASE REG @V305065 05837000
  5845. USING *,R9 @V305065 05838000
  5846. USING E1,RA @V305096 05839000
  5847. * 05840000
  5848. INTPT2 EQU * @V305096 05841000
  5849. ******************************************************************** 05842000
  5850. * COMPUTE THE RELOCATION FACTOR,LOAD THE BASE REGISTER USED FOR 05843000
  5851. * THE CONSTANTS,AND SAVE THE RELOCATION FACTOR FOR USE IN DLKRLD. 05844000
  5852. * REGISTER 7 WILL HOLD THAT FACTOR FOR LATER USE IN THIS PHASE. 05845000
  5853. ******************************************************************** 05846000
  5854. LR R7,R9 LOAD ADDR IN THE BASE REG @V305096 05847000
  5855. LA R7,0(R7) CLEAR HIGH ORDER BYTE @V305096 05848000
  5856. S R7,RELOADCN SUBTRACT ABSOLUTE ADDR OF @V305096 05849000
  5857. * INSTRUCTION AFTER BALR 05850000
  5858. L RC,CNBASE LOAD ABSOLUTE ADDR OF CONSTNT@V305096 05851000
  5859. AR RC,R7 ADD RELOCATION FACTOR @V305096 05852000
  5860. ST RE,REGSAVE SAVE RETURN REGISTER @V305065 05853000
  5861. TM DOSFLAGS,DOSMODE IS DOS ON? @V305065 05854000
  5862. BZ NODOS BRANCH IF NOT @V305065 05855000
  5863. DMSKEY NUCLEUS SET PROTECTION KEYS @V305065 05856000
  5864. * 05857000
  5865. BAL RE,PLIST CHECK PLIST OPTIONS @V305065 05858000
  5866. EJECT 1 05859000
  5867. ******************************************************************** 05860000
  5868. * IF THE NUMBER OF PARTITIONS SPECIFIED AT SUPVR ASSEMBLY TIME * 05861000
  5869. * IS LESS THAN THE ALLOWED MAXIMUM, THIS ROUTINE MAKES THE * 05862000
  5870. * ASSOCIATED ENTRIES IN THE 'ACTION OPERAND TABLE' * 05863000
  5871. * FOR THE HIGHER PARTITIONS INVALID * 05864000
  5872. ******************************************************************** 05865000
  5873. SPACE 1 05866000
  5874. MVI NUMPART+1,DEC1 NUMBER OF PARTITIONS @V305096 05867000
  5875. LA R2,ENTLNGTH LENGTH OF ONE ENTRY @V305096 05868000
  5876. MH R2,NUMPART MULTIPLIED BY SPECIFIED@V305096X05869000
  5877. NUMBER OF PARTITIONS @V305096 05870000
  5878. LA R2,OPBG(R2) PLUS ADDR OF ENTRY @V305096X05871000
  5879. FOR 1ST PARTITION GIVE ADDR OF 1ST INVALID ENTRY@V305096 05872000
  5880. LA R3,(LASTPART+ENTLNGTH-1) GET LENGTH @V305096 05873000
  5881. SR R3,R2 FOR INVALIDATE @V305096 05874000
  5882. BNP ALLVALID IF LENGTH ZERO, ALL ENTRIES @V305096X05875000
  5883. VALID @V305096 05876000
  5884. EX R3,NVALID MAKE ENTRIES INVALID @V305096 05877000
  5885. ALLVALID EQU * @V305096 05878000
  5886. SPACE 05879000
  5887. SYSIR (R2,R5,R3,R4),LUB,FG @V305096 05880000
  5888. EJECT 1 05881000
  5889. ************************************************************** 05882000
  5890. * THIS ROUTINE CHECKS THE DEVICE TYPE OF THE RELOCATABLE 05883000
  5891. * LIBRARY ( = SYSRES DEVICE TYPE ) AND MOVES THE OVERFLOW 05884000
  5892. * FACTORS FOR THE RELOCATABLE LIBRARY TO DEVTAB. 05885000
  5893. ************************************************************** 05886000
  5894. USING BGCOM,R4 @V305096 05887000
  5895. USING PUBADR,R3 @V305096 05888000
  5896. MVC COMNAME(8),DLKNAME MOVE IN DOSLKED NAME @V305065 05889000
  5897. SR R3,R3 @V305096 05890000
  5898. LR R5,R2 SAVE LUB ADDRESS @V305065 05891000
  5899. IC R3,LUBRES GET PUB NO FOR SYSRES @V305096 05892000
  5900. CH R3,K255 IS THERE A SYSRES @V305065 05893000
  5901. BE DNTCPT BRANCH IF NOT @V305065 05894000
  5902. MH R3,=Y(PUBWIT) MULT WITH LENGTH OF PUB @V305096 05895000
  5903. AH R3,PUBPT ADD PUB TABLE ADDRESS @V305096 05896000
  5904. MVC RESTYP,PUBDEVT MOVE DEVICE TYPE @V305096 05897000
  5905. * OF SYSRES 05898000
  5906. MVC RESADDR,PUBCUU SAVE SYSRES ADDRESS @V305065 05899000
  5907. LA R7,(DEVEND-DEVSTART)/LDEVTAB @V305096 05900000
  5908. LA R3,DEVSTART @V305096 05901000
  5909. DEVLOOP CLC RESTYP,0(R3) DO DEVICE TYPES MATCH @V305096 05902000
  5910. BE MOVERES YES, BRANCH @V305096 05903000
  5911. LA R3,LDEVTAB(R3) NO, GO TO NEXT TABLE @V305096 05904000
  5912. BCT R7,DEVLOOP IN TABLE OF DEV CONST @V305096 05905000
  5913. MOVERES MVC FCTREL(DEC8),DEC1(R3) MOVE CONST FOR REL LIB @V305096 05906000
  5914. EJECT 05907000
  5915. ******************************************************************** 05908000
  5916. * SET UP INFORMATION FOR THE RELOCATABLE LIBRARY FROM THE SYSTEM 05909000
  5917. * DIRECTORY. 05910000
  5918. ******************************************************************** 05911000
  5919. SPACE 05912000
  5920. LH R1,RESADDR GET SYSRES ADDRESS @V305065 05913000
  5921. STH R1,DSKCCB SAVE SYSRES ADDRESS @V305065 05914000
  5922. LA RF,1 ONE READ @V305065 05915000
  5923. MVC ADRESS,RLDINFO SET CCHHR FOR SYSTEM DIRECTORY @V305096 05916000
  5924. MVC DSKWHT,READIR READ LIBRARY DESCRIPTION FOR @V305065 05917000
  5925. BAL RE,DISKRDWR REL LIBRARY INFORMATION @V305096 05918000
  5926. * 05919000
  5927. CLI INPBLK,BLANK IF NO RELOCATABLE LIBRARY LEAVE @V305096 05920000
  5928. BE DNTCPT SWITCH TO INDICATE SUCH, ELSE @V305096 05921000
  5929. LH R1,RESADDR GET SYSRES ADDRESS @V305065 05922000
  5930. LA RF,1 ONE READ @V305065 05923000
  5931. MVC ADRESS,INPBLK+DEC2 DISK ADDR OF REL LIB DIRCTRY @V305096 05924000
  5932. MVC DSKWHT,READRD MOVE IN DIRECTORY CCW @V305065 05925000
  5933. BAL RE,DISKRDWR READ REL.DIRECTORY INFO @V305096 05926000
  5934. CLC ADRESS,INPBLK+2 ADDRESSES THE SAME? @V305065 05927000
  5935. BNE ERR094 BRANCH IF NOT @V305065 05928000
  5936. MVC RELDST,INPBLK+DEC2 START ADDR OF REL DIRECTORY @V305096 05929000
  5937. DNTCPT EQU * @V305096 05930000
  5938. EJECT 05931000
  5939. ************************************************************* 05932000
  5940. * 05933000
  5941. * LOCATE DOSLNK IF AVAILABLE. MAKE SURE THAT THE 05934000
  5942. * A DISK IS READ / WRITE. 05935000
  5943. * 05936000
  5944. ************************************************************* 05937000
  5945. FSSTATE ,FSCB=DOSLNK,ERROR=NODOSLK @V305065 05938000
  5946. USING FSTSECT,R1 @V305065 05939000
  5947. MVC DOSLNK+24(2),FSTM MOVE IN FILEMODE @V305065 05940000
  5948. CLI FSTFV,C'F' IS IT FIXED LENGTH? @V305065 05941000
  5949. BNE NOF80 BRANCH IF NOT @V305065 05942000
  5950. CLC FSTIL,=F'80' RECORD LENGTH 80? @V305065 05943000
  5951. BNE NOF80 BRANCH IF NOT @V305065 05944000
  5952. B CHKADSK @V305065 05945000
  5953. NODOSLK EQU * @V305065 05946000
  5954. CH RF,=H'28' FILE NOT FOUND ERROR? @V305065 05947000
  5955. BNE BADDOSLK NO, INVALID PARM @VA08808 05948000
  5956. OI CMSSWT1,NODOSLNK+FSTSW NO DOSLNK AVAILABLE @V305065 05949000
  5957. DROP R1 @V305065 05950000
  5958. USING ADTSECT,R1 @V305065 05951000
  5959. CHKADSK EQU * @V305065 05952000
  5960. LA R1,DOSMAP POINT TO ANY PLIST @V305065 05953000
  5961. L RF,AADTLKP GET ADDRESS OF ADTLKP @V305065 05954000
  5962. BALR RE,RF GET ADT FOR A-DISK @V305065 05955000
  5963. BP NODISK BRANCH IF NO A-DISK @V305065 05956000
  5964. LA RF,DOSMAP SET FOR ERROR ROUTINE @V305065 05957000
  5965. TM ADTFLG1,ADTFRW IS IT R/W? @V305065 05958000
  5966. BZ NODISK BRANCH IF NOT @V305065 05959000
  5967. DROP R1 @V305065 05960000
  5968. EJECT 1 05961000
  5969. ************************************************************* 05962000
  5970. * 05963000
  5971. * DETERMINE WHICH R/W DISK HAS THE MOST SPACE AVAILABLE 05964000
  5972. * AND SEND THE UTILITY FILES THERE. 05965000
  5973. * 05966000
  5974. ************************************************************* 05967000
  5975. USING FSCBD,R1 @V305065 05968000
  5976. LA R1,SYSUT1 POINT TO SYSUT1 PLIST @V305065 05969000
  5977. L RF,AADTLKW GET ADTLKW ROUTINE ADDRESS @V305065 05970000
  5978. BALR RE,RF FIND DISK WITH MOST SPACE @V305065 05971000
  5979. BP NODISK BRANCH IF NO DISK AVAILABLE @V305065 05972000
  5980. DROP R1 @V305065 05973000
  5981. USING ADTSECT,R1 @V305065 05974000
  5982. MVC SYSUT1+24(1),ADTM MOVE IN MODE LETTER @V305065 05975000
  5983. DROP R1 @V305065 05976000
  5984. USING FSCBD,R1 @V305065 05977000
  5985. LA R1,SYSUT1 POINT TO PLIST @V305065 05978000
  5986. MVI FSCBFM+1,C'1' SET MODE NUMBER @V305065 05979000
  5987. LA RF,SYSUT2 POINT TO OTHER SYSUT PLIST @V305065 05980000
  5988. MVC 24(2,RF),FSCBFM SET ITS FILEMODE @V305065 05981000
  5989. MVC FSCBFN,DOSFINM MOVE IN FILENAME @V305065 05982000
  5990. FSERASE ,FSCB=(1) ERASE OLD FILE @V305065 05983000
  5991. CH RF,=H'24' PARAMETER ERROR? @V305065 05984000
  5992. BE INVPARM BRANCH IF YES @V305065 05985000
  5993. LA R1,SYSUT2 POINT TO SYSUT2 PLIST @V305065 05986000
  5994. MVC FSCBFN,DOSFINM MOVE IN FILENAME @V305065 05987000
  5995. FSERASE ,FSCB=(1) ERASE OLD FILE @V305065 05988000
  5996. EJECT 1 05989000
  5997. ************************************************************* 05990000
  5998. * 05991000
  5999. * SETUP OUTPUT FIELDS 05992000
  6000. * 05993000
  6001. ************************************************************* 05994000
  6002. TM CMSSWT1,MAPPRT+MAPTYP TYPE OR PRINT SPECIFIED? @V305065 05995000
  6003. BNZ INTS01 BRANCH IF YES @V305065 05996000
  6004. LA R1,DOSMAP POINT TO DOSMAP PLIST @V305065 05997000
  6005. MVC FSCBFN,DOSLNK+8 MOVE FILENAME TO PLIST @V305065 05998000
  6006. FSERASE ,FSCB=(1) ERASE OLD FILE @V305065 05999000
  6007. * 06000000
  6008. * SET CONSTANTS FOR LINE CONTROL 06001000
  6009. * 06002000
  6010. INTS01 EQU * @V305065 06003000
  6011. MVC LINES+1(DEC1),SYSLINE SAVE SYSLST LINE COUNT @V305065 06004000
  6012. OI MAPSW,HEX1 ASSUME MAP @V305065 06005000
  6013. EJECT 1 06006000
  6014. ******************************************************************** 06007000
  6015. * HANDLE PRIVATE RELOCATABLE LIBRARY. 06008000
  6016. ******************************************************************** 06009000
  6017. LR R2,R5 RESTORE LUB ADDRESS @V305065 06010000
  6018. MVC HEADER+DEC16(DEC8),JOBDATE SET UP DATE @V305096 06011000
  6019. MVC DATE,JOBDATE SAVE DATE @V305096 06012000
  6020. OI ACTSW,REL/DEC256 ASSUME ACTION REL IS DEFAULT @V305096 06013000
  6021. TM LUBRLB,X'FE' IS SYSRLB ASSIGNED? @V305065 06014000
  6022. BO NOSYSRLB BRANCH IF NOT @V305065 06015000
  6023. SR R3,R3 @V305065 06016000
  6024. ICM R3,DEC7,DOSFIRST+1 GET DOSCB CHAIN ADDRESS @V305065 06017000
  6025. USING DOSSECT,R3 @V305065 06018000
  6026. NXTSYSRL EQU * @V305065 06019000
  6027. BZ NOSYSRLB IF ZERO, NO MORE DOSCB @V305065 06020000
  6028. CLC DOSDD,=CL8'IJSYSRL' MATCHING DDNAME? @V305065 06021000
  6029. BE THSSYSRL BRANCH IF YES @V305065 06022000
  6030. ICM R3,DEC7,1(R3) GET NEXT DOSCB ADDRESS @V305065 06023000
  6031. B NXTSYSRL AND LOOP @V305065 06024000
  6032. THSSYSRL EQU * @V305065 06025000
  6033. CLI DOSDEV,DOSDSK IS DEVICE DISK? @V305065 06026000
  6034. BNE NOSYSRLB BRANCH IF NOT @V305065 06027000
  6035. FSSTATE ,FSCB=DOSOP,ERROR=NOSYSRLB @V305065 06028000
  6036. L R3,DOSOSFST GET OSFST FOR PRIV RELO @V305065 06029000
  6037. DROP R3 @V305065 06030000
  6038. LTR R3,R3 IS THERE AN OSFST? @V305065 06031000
  6039. BZ NOSYSRLB BRANCH IF NOT @V305065 06032000
  6040. USING OSFST,R3 @V305065 06033000
  6041. MVC RELPVT(DEC4),OSFSTXTN+2 SAVE PRIV RELO CCHH @V305065 06034000
  6042. MVI RELPVT+4,1 RECORD ONE @V305065 06035000
  6043. MVC PRVADDR,OSFSTDSK SAVE PRIV RELOC ADDRESS @V305065 06036000
  6044. DROP R3 @V305065 06037000
  6045. CLI FCTREL,X'00' IS THERE A DOSRES? @V305065 06038000
  6046. BNE NOSYSRLB BRANCH IF YES @V305065 06039000
  6047. USING PUBADR,R3 @V305065 06040000
  6048. SR R3,R3 @V305065 06041000
  6049. IC R3,LUBRLB GET PUB NO FOR SYSRLB @V305065 06042000
  6050. MH R3,=Y(PUBWIT) MULT WITH LENGTH OF PUB @V305065 06043000
  6051. AH R3,PUBPT ADD PUB TABLE ADDRESS @V305065 06044000
  6052. MVC RESTYP,PUBDEVT MOVE DEV TYPE OF SYSRLB @V305065 06045000
  6053. LA R7,(DEVEND-DEVSTART)/LDEVTAB @V305065 06046000
  6054. LA R3,DEVSTART @V305065 06047000
  6055. RLBLOOP EQU * @V305065 06048000
  6056. CLC RESTYP,0(R3) DO DEVICE TYPES MATCH? @V305065 06049000
  6057. BE MOVERLB BRANCH IF YES @V305065 06050000
  6058. LA R3,LDEVTAB(R3) NO, GO TO NEXT TABLE @V305065 06051000
  6059. BCT R7,RLBLOOP AND CHECK AGAIN @V305065 06052000
  6060. MOVERLB EQU * @V305065 06053000
  6061. MVC FCTREL(DEC8),DEC1(R3) MOVE CONST FOR REL LIB @V305065 06054000
  6062. DROP R4 @V305065 06055000
  6063. DROP R3 @V305065 06056000
  6064. NOSYSRLB EQU * @V305065 06057000
  6065. EJECT 06058000
  6066. ******************************************************************** 06059000
  6067. * THIS ROUTINE FIGURES THE FIRST USEABLE ADDR IN THE RESIDENT 06060000
  6068. * PARTITION. THIS ADDRESS IS USED AS THE DEFAULT ADDRESS IN 06061000
  6069. * ACTUAL LINKAGE. 06062000
  6070. ******************************************************************** 06063000
  6071. SPACE 06064000
  6072. L R3,H20000 START ADDRESS OF USER REG @V305096 06065000
  6073. ST R3,PARTSTRT SAVE PART STARTING ADDR @V305096 06066000
  6074. * FOR PROGRAM TO BE LINKED 06067000
  6075. * (ALWAYS VIRTUAL PART ) 06068000
  6076. L R4,FREELOWE END OF STORAGE ADDRESS @V305096 06069000
  6077. LA R4,DEC1(R4) FOR THIS PARTION @V305096 06070000
  6078. DROP R2 @V305096 06071000
  6079. SH R4,HCDLNGTH SUBTR LNTH OF C/D ENTRY @V305096 06072000
  6080. ST R4,TENK SAVE IT IN TENK @V305096 06073000
  6081. * LENGTH 06074000
  6082. EJECT 06075000
  6083. ******************************************************************** 06076000
  6084. * CALCULATE ADDRESSES FOR LINKAGE TABLE, 06077000
  6085. * CONTROL DICTIONARY AND WORK AREA 06078000
  6086. ******************************************************************** 06079000
  6087. * 06080000
  6088. * DLKINL WILL BE OVERLAID BY THE TEXT BUFFER, L/T AND C/D 06081000
  6089. * 06082000
  6090. L R2,VCATND ALIGN TEXT BUFFER @V305096 06083000
  6091. LA R2,1023(R2) ON 1K BOUNDARY @V305096 06084000
  6092. N R2,ONEKALGN @V305096 06085000
  6093. ST R2,AWKARE RETAIN ADDRESS OF WORKAREA @V305096 06086000
  6094. AH R2,CILRSIZE INCLUDE SIZE OF WORKAREA IN CALCS @V305096 06087000
  6095. LA R2,2047(R2) ALIGN BEGIN OF L/T @V305096 06088000
  6096. N R2,PAGEALGN ON PAGE BOUNDARY @V305096 06089000
  6097. ST R2,LNKTAD SET UP THE BEGIN @V305096 06090000
  6098. LR R5,R2 @V305096 06091000
  6099. AH R5,LTABLTH CALCULATE STRT OF C/D @V305096 06092000
  6100. ST R5,CDENT1 AND STORE @V305096 06093000
  6101. SH R5,HCDLNGTH INIT CURRENT C/D ADDR @V305096 06094000
  6102. ST R5,CTLDAD @V305096 06095000
  6103. SH R2,HLTLNGTH @V305096 06096000
  6104. ST R2,LTMINE @V305065 06097000
  6105. EJECT 1 06098000
  6106. ************************************************************ 06099000
  6107. * 06100000
  6108. * FILEDEF DOSLIB 06101000
  6109. * 06102000
  6110. ************************************************************ 06103000
  6111. LA R1,DOSFIAC POINT TO STATE PLIST @V305065 06104000
  6112. SVC 202 STATE DOSLIB @V305065 06105000
  6113. DC AL4(*+4) @V305065 06106000
  6114. LTR RF,RF ANY ERRORS? @V305065 06107000
  6115. BNZ NOLIB BRANCH IF SO @V305065 06108000
  6116. L RF,DOSFST POINT TO FST @V305065 06109000
  6117. USING FSTSECT,RF @V305065 06110000
  6118. TM FSTFB,FSTFRW IS THIS A R/W DISK? @V305065 06111000
  6119. BZ LIBNTRW BRANCH IF NOT @V305065 06112000
  6120. TM FSTFB,FSTFRWX R/O EXTENSION OF R/W? @V305065 06113000
  6121. BO LIBNTRW BRANCH IF YES @V305065 06114000
  6122. MVC DOSFIMD,FSTM MOVE IN FILEMODE @V305065 06115000
  6123. B LIBEXIS @V305065 06116000
  6124. DROP RF @V305065 06117000
  6125. NOLIB EQU * @V305065 06118000
  6126. OI CMSSWT1,NODOSLIB NO DOSLIB @V305065 06119000
  6127. MVC DOSFIMD,=C'A1' DEFAULT MODE TO A DISK @V305065 06120000
  6128. LIBEXIS EQU * @V305065 06121000
  6129. MVC DOSFIAC,=CL8'DISK' SET UP FILEDEF @V305065 06122000
  6130. LA R1,DOSFILDF POINT TO FILEDEF PLIST @V305065 06123000
  6131. SVC 202 FILEDEF DOSLIB @V305065 06124000
  6132. LTR RF,RF ANY ERRORS? @V305065 06125000
  6133. BNZ INVPARM BRANCH IF YES @V305065 06126000
  6134. NI DOSFLAGS,255-DOSSVC TURN OFF DOS SVC INDIC. @V305065 06127000
  6135. OPEN (DOSLIB,(OUTPUT)) OPEN DOSLIB @V305065 06128000
  6136. OI DOSFLAGS,DOSSVC INDICATE DOS SVC @V305065 06129000
  6137. LA R1,DOSFILDF POINT TO PLIST @V305065 06130000
  6138. TM DOSLIB+48,X'10' WAS OPEN SUCCESSFUL? @V305065 06131000
  6139. BZ INVPARM BRANCH IF NOT @V305065 06132000
  6140. TM CMSSWT1,NODOSLNK IS THERE A DOSLNK? @V305065 06133000
  6141. BO NODSLNK BRANCH IF NOT @V305065 06134000
  6142. SR R2,R2 CLEAR RECNO REG. @V305065 06135000
  6143. B NXTCARD BRANCH IF FOUND @V305065 06136000
  6144. NODSLNK EQU * @V305065 06137000
  6145. LA RA,INPBLK POINT TO INPUT AREA @V305065 06138000
  6146. MVC INPBLK(9),=CL9' INCLUDE ' SET UP DUMMY @V305065 06139000
  6147. MVC INPBLK+9(8),DOSLNK+8 INCLUDE CARD @V305065 06140000
  6148. MVI INPBLK+17,C' ' MOVE IN BLANK @V305065 06141000
  6149. MVC INPBLK+18(101),INPBLK+17 CLEAR REST OF FIELD @V305065 06142000
  6150. MVC RDCB00,KMIN CLEAR UNIT ADDRESS FIELD @V305065 06143000
  6151. B NOTACT @V305065 06144000
  6152. EJECT 06145000
  6153. ******************************************************************* 06146000
  6154. * 06147000
  6155. * ACTION CARD PROCESSOR 06148000
  6156. * 06149000
  6157. * THIS ROUTINE READS ACTION CARDS 06150000
  6158. * THE SYNTAX OF THE ACTION CARD IS CHECKED AND THE APPROPIATE 06151000
  6159. * ACTION TAKEN. 06152000
  6160. * ERROR MSG NOS. RESULTING FROM THIS ROUTINE ARE 06153000
  6161. * 2112-2113-2135-2136 06154000
  6162. * 06155000
  6163. ******************************************************************* 06156000
  6164. SPACE 2 06157000
  6165. * GET CARD IMAGE FROM DOSLNK AND ADDRESS OF COLUMN 72 06158000
  6166. SPACE 1 06159000
  6167. NXTCARD EQU * @V305065 06160000
  6168. LA R2,1(,R2) DETERMINE NEXT RECORD @V305065 06161000
  6169. FSREAD ,FSCB=DOSLNK,RECNO=(2),ERROR=ERR094 @V305065 06162000
  6170. LA RA,INPBLK POINT TO RECORD @V305065 06163000
  6171. LA R5,E1+71 SET ADDRESS OF COLUMN 72 @V305096 06164000
  6172. ST R5,COLUMN72 FOR CHECKING PURPOSE @V305096 06165000
  6173. SPACE 1 06166000
  6174. * SEARCH THE ACTION VERB, IF FOUND BYPASS IT, OTHERWISE 06167000
  6175. * STOP ACTION PROCESSING 06168000
  6176. SPACE 1 06169000
  6177. CLI E1,BLANK FIRST NOT BLANK, THIS CANNOT BE @V305096 06170000
  6178. BNE NOTACT AN ACTION CARD @V305096 06171000
  6179. LR R6,RA GET ADDRESS IN R6 @V305096 06172000
  6180. FNDVRB LA R6,1(R6) UPDATE TO NEXT CHARACTER @V305096 06173000
  6181. CLI 0(R6),BLANK LOOK FOR BLANK @V305096 06174000
  6182. BE FNDVRB SKIP BLANKS UNTIL VERB IS FOUND @V305096 06175000
  6183. * 06176000
  6184. CLC 0(L'KACTION,R6),KACTION IS VERB ACTION @V305096 06177000
  6185. BNE NOTACT NO @V305096 06178000
  6186. * 06179000
  6187. LA R6,DEC6(R6) BYPASS ACTION VERB ON CARD @V305096 06180000
  6188. * 06181000
  6189. * FIND THE OPERAND FIELD 06182000
  6190. SPACE 1 06183000
  6191. FNDOPER LA R6,DEC1(R6) BYPASS BLANKS UNTILL @V305096 06184000
  6192. CLI 0(R6),BLANK OPERAND FIELD FOUND @V305096 06185000
  6193. BE FNDOPER @V305096 06186000
  6194. LR R5,R6 GET FIRST OPERAND START ADDR @V305096 06187000
  6195. L RB,IPTMTX GET CSECT ADDRESS @VA05886 06188000
  6196. USING DLKSCN,RB SET ADDRESSABILITY @VA05886 06189000
  6197. L RB,AMSG12 PREPARE ERROR 2112 @V305096 06190000
  6198. DROP RB FREE THE REGISTER @VA05886 06191000
  6199. C R5,COLUMN72 IF ADDRESS BEYOND COLUMN 72 @V305096 06192000
  6200. BNL ERRACT GO TO ERROR ROUTINE @V305096 06193000
  6201. SPACE 1 06194000
  6202. * FIND OPERAND DELIMITER COMMA OR BLANK 06195000
  6203. SPACE 1 06196000
  6204. BCTR R6,0 POSITION R6 @V305096 06197000
  6205. FNDDELIM LA R6,DEC1(R6) GET NEXT CHARACTER @V305096 06198000
  6206. CLI 0(R6),COMMA IS IT COMMA @V305096 06199000
  6207. BE DELIMFND YES, DELIMITER IS FOUND @V305096 06200000
  6208. CLI 0(R6),BLANK IS IT BLANK @V305096 06201000
  6209. BNE FNDDELIM NO, CONTINUE SCAN @V305096 06202000
  6210. SPACE 1 06203000
  6211. * CHECK THE FOUND OPERAND FOR VALID LENGTH AND CARD LOCATION 06204000
  6212. SPACE 1 06205000
  6213. DELIMFND C R6,COLUMN72 COLUMN 71 EXCEEDED @V305096 06206000
  6214. L RB,OTHMTX GET CSECT ADDRESS @VA05886 06207000
  6215. USING DLKOTH,RB SET ADDRESSABILITY @VA05886 06208000
  6216. L RB,AMSG13 IF SO, @V305096 06209000
  6217. DROP RB FREE THE REGISTER @VA05886 06210000
  6218. BH ERRACT GO TO ERROR ROUTINE @V305096 06211000
  6219. SPACE 1 06212000
  6220. LR R7,R6 GET OPERAND @V305096 06213000
  6221. SR R7,R5 LENGTH IN REG 7 @V305096 06214000
  6222. BZ NEXTOPER IF LENGTH ZERO,CONTINUE SCAN @V305096 06215000
  6223. CH R7,K6 OPERAND LONGER THAN 6 CHAR @V305096 06216000
  6224. BNH ACTVALID NO, FIND EQUAL IN OP. LIST @V305096 06217000
  6225. OI ACTSW,INVALID/DEC256 INDICATE INVLD OPERAND FND @V305096 06218000
  6226. B NEXTOPER SEARCH NEXT OPERAND @V305096 06219000
  6227. SPACE 1 06220000
  6228. * MOVE THE FOUND OPERAND TO THE LAST ENTRY IN THE OPERAND LIST 06221000
  6229. * IF AN EQUAL OPERAND IS FOUND IN THE LIST, THE APPROPRIATE 06222000
  6230. * BITS ARE SET IN ACTSW, IF AN EQUAL COMPARE IS FOUND ON THE 06223000
  6231. * LAST ENTRY, A BIT IS SET IN ACTSW TO INDICATE AN INVALID 06224000
  6232. * OPERAND 06225000
  6233. SPACE 1 06226000
  6234. ACTVALID MVC LASTENTR(DEC6),BLANKS BLANKS TO LAST ENTRY @V305096 06227000
  6235. BCTR R7,0 PREPARE FOR MOVE OF OPERAND @V305096 06228000
  6236. EX R7,MOVEOPER MOVE THE OPERAND TO @V305096 06229000
  6237. * LAST LIST-ENTRY 06230000
  6238. LA R7,ACTLIST-ENTLNGTH PREPARE FOR TABLE SCAN @V305096 06231000
  6239. SCAN LA R7,ENTLNGTH(R7) PROCEED TO NEXT ENTRY @V305096 06232000
  6240. CLC 0(DEC6,R7),LASTENTR EQUAL OPERAND FOUND @V305096 06233000
  6241. BNE SCAN NO, CONTINUE SCAN @V305096 06234000
  6242. OC ACTSW,DEC6(R7) YES, SET APPROPRIATE SWITCH @V305096 06235000
  6243. NC ACTSW,DEC8(R7) & RESET CONFLICTING OPTIONS @V305096 06236000
  6244. SPACE 1 06237000
  6245. * PREPARE CARD SEARCH FOR NEXT OPERAND 06238000
  6246. SPACE 1 06239000
  6247. NEXTOPER CLI 0(R6),COMMA IF PREVIOUS SCAN STOPPED ON @V305096 06240000
  6248. * A COMMA THERE ARE MORE OPERANDS ON CURRENT CARD 06241000
  6249. LA R5,DEC1(R6) GET START OF NEXT OPERAND @V305096 06242000
  6250. BE FNDDELIM AND CONTINUE SCAN @V305096 06243000
  6251. SPACE 1 06244000
  6252. * IF NO ERRORS OCCURED ON PREVIOUS CARD, PREPARE FOR A 06245000
  6253. * NEW CARD. IF ERRORS OCCURED, STOP ACTION PROCESSING 06246000
  6254. SPACE 1 06247000
  6255. L RB,AMSG35 PREPARE FOR ERROR MSG @V305096 06248000
  6256. TM ACTSW,INVALID/DEC256 INVALID OPERAND FOUND @V305096 06249000
  6257. BNO NXTCARD NO, GO TO READ NEXT RECORD @V305096 06250000
  6258. * SET SWITCHES TO INDICATE ERROR, AFTER THAT FINISH ACTION 06251000
  6259. * PROCESSING FOR THE OPERANDS FOUND UNTILL NOW 06252000
  6260. SPACE 1 06253000
  6261. ERRACT MVI ACTERR+DEC1,HEX0 IF ERROR OCCURS ON ACTION @V305096 06254000
  6262. * CARD, WE MUST END ALL ACTION PROCESS 06255000
  6263. * AND SET UP AS THE ACTION TAKEN, THAT 06256000
  6264. * WHICH WE HAVE ALREADY PROCESSED . 06257000
  6265. * THEN WE WILL GO TO THE ERROR 06258000
  6266. * PROCESSOR AND PROCESS THE ERROR 06259000
  6267. EJECT 06260000
  6268. * FINISH ACTION PROCESSING AND TAKE THE NECESSARY ACTIONS 06261000
  6269. SPACE 1 06262000
  6270. NOTACT LH R5,ACTSW PREPARE SCAN OF ACTSW @V305096 06263000
  6271. SLL R5,DEC16 SHIFT OUT MEANINGLESS BITS @V305096 06264000
  6272. LA R8,ACTLIST-ENTLNGTH INITIATE LIST POINTER @V305096 06265000
  6273. LA R7,(LASTENTR-ACTLIST)/ENTLNGTH NUMBER OF ENTRIES@V305096 06266000
  6274. * FOR LOOP CONTROL 06267000
  6275. SPACE 1 06268000
  6276. * SCAN ACTSW AND BRANCH TO THE APPROPRIATE ACTION ROUTINES 06269000
  6277. SPACE 1 06270000
  6278. RETOUR LA R8,ENTLNGTH(R8) INCREMENT TO NEXT OPERAND @V305096 06271000
  6279. SLL R5,DEC1 CHECK CORRESP. BIT IN ACTSW @V305096 06272000
  6280. LTR R5,R5 IF POSITIVE, SWITCH IS OFF @V305096 06273000
  6281. BNM ACTRET SO CONTINUE SCAN @V305096 06274000
  6282. EX R0,DEC10(R8) BRANCH TO CORRECT SUBROUTINE @V305096 06275000
  6283. ACTRET BCT R7,RETOUR CONT. SCAN UNTILL ALL CHECKED @V305096 06276000
  6284. SPACE 2 06277000
  6285. TM MAPSW,HEX1 ACTION MAP SPECIFIED @V305096 06278000
  6286. BO ACTLINE YES, GO TO PRINT @V305096 06279000
  6287. * ACTION TAKEN LIN 06280000
  6288. B ALIGN4 EXIT @V305096 06281000
  6289. SPACE 2 06282000
  6290. ACTLINE EQU * @V305096 06283000
  6291. LA R4,W1 SET UP PRINT LINE POINTER @V305096 06284000
  6292. MVC DEC0(L'ACTTAKEN,R4),ACTTAKEN 'ACTION TAKEN MAP'@V305096 06285000
  6293. * TO PRINT AREA 06286000
  6294. LA R4,L'ACTTAKEN(R4) AND UPDATE LINE POINTER @V305096 06287000
  6295. LH R1,ACTSW PREPARE FOR SCAN OF OPERANDS @V305096 06288000
  6296. SLL R1,DEC18 TO BE MOVED TO PRINT LINE @V305096 06289000
  6297. * (BYPASS MAP AND NOMAP) 06290000
  6298. LA R2,ACTLIST+2*ENTLNGTH ADDR OF FIRST OPERAND TO @V305096 06291000
  6299. * BE SCANNED 06292000
  6300. LA R6,(LASTENTR-ACTLIST-2*ENTLNGTH)/ENTLNGTH NUMBER@V305096 06293000
  6301. * OF ENTRIES TO BE SCANNED 06294000
  6302. MVOPRNDS SLL R1,DEC1 WAS THIS OPERAND SPECIFIED @V305096 06295000
  6303. LTR R1,R1 IF POSITIVE, @V305096 06296000
  6304. BNM NXTENTRY CONTINUE SCAN @V305096 06297000
  6305. MVC 0(DEC6,R4),0(R2) MOVE OPERAND TO PRINT AREA @V305096 06298000
  6306. LA R4,DEC7(R4) UPDATE LINE POINTER @V305096 06299000
  6307. NXTENTRY LA R2,ENTLNGTH(R2) UPDATE TO NEXT ENTRY @V305096 06300000
  6308. BCT R6,MVOPRNDS IF COUNT NOT EXCEEDED, RETURN @V305096 06301000
  6309. BAL R6,PRINT PRINT ACTION TAKEN LINE @V305096 06302000
  6310. SPACE 1 06303000
  6311. * GET END OF SUPERVISOR ADDRESS AND FIRST POSSIBLE ORIGIN 06304000
  6312. SPACE 1 06305000
  6313. ALIGN4 L R3,PARTSTRT GET PARTITION START ADDRESS @V305096 06306000
  6314. LA R3,DEC7(R3) ALIGN TO @V305096 06307000
  6315. SRL R3,DEC3 DOUBLEWORD @V305096 06308000
  6316. SLL R3,DEC3 BOUNDARY @V305096 06309000
  6317. * 06310000
  6318. ST R3,EOSPVR EFFECTIVE END OF SUPVR ADDRESS@V305096 06311000
  6319. ST R3,NXPHRG INIT FOR FIRST POSSIBLE ORIGIN@V305096 06312000
  6320. SPACE 1 06313000
  6321. * FINISH ACTION PROCESSING, EXIT TO ERROR ROUTINE IF 06314000
  6322. * APPLICABLE, OR TO CONTROL CARD SCAN 06315000
  6323. SPACE 1 06316000
  6324. B MAINFLOW @V305096 06317000
  6325. * 06318000
  6326. EJECT 06319000
  6327. ******************************************************************** 06320000
  6328. * SUBROUTINE FOR ACTION MAP * 06321000
  6329. ******************************************************************** 06322000
  6330. SPACE 1 06323000
  6331. ACTMAP EQU * @V305065 06324000
  6332. OI MAPSW,HEX1 INDICATE ACTION MAP @V305096 06325000
  6333. B ACTRET RETURN @V305096 06326000
  6334. SPACE 1 06327000
  6335. ******************************************************************** 06328000
  6336. * SUBROUTINE FOR ACTION NOMAP * 06329000
  6337. ******************************************************************** 06330000
  6338. SPACE 1 06331000
  6339. ACTNOMAP NI MAPSW,HEXFF-HEX1 TURN OFF MAP @V305096 06332000
  6340. B ACTRET RETURN @V305096 06333000
  6341. SPACE 1 06334000
  6342. ******************************************************************** 06335000
  6343. * SUBROUTINE FOR ACTION NOAUTO * 06336000
  6344. ******************************************************************** 06337000
  6345. SPACE 1 06338000
  6346. ACTNOAUT MVI ALNKSW,HEXFF SET SWITCH FOR PROGRAM NOAUTO @V305096 06339000
  6347. B ACTRET RETURN @V305096 06340000
  6348. SPACE 1 06341000
  6349. ******************************************************************** 06342000
  6350. * SUBROUTINE FOR ACTION CANCEL * 06343000
  6351. ******************************************************************** 06344000
  6352. SPACE 1 06345000
  6353. ACTCANCE OI MAPSW,HEX2 TURN ON CANCEL OPTION SWITCH @V305096 06346000
  6354. B ACTRET RETURN @V305096 06347000
  6355. EJECT 06348000
  6356. ******************************************************************** 06349000
  6357. * SUBROUTINE FOR ACTION CLEAR * 06350000
  6358. ******************************************************************** 06351000
  6359. ACTCLEAR EQU * @V305065 06352000
  6360. OI MAPSW,CLEARSW INDICATE CLEAR REQUESTED @V305065 06353000
  6361. B ACTRET RETURN @V305096 06354000
  6362. ******************************************************************** 06355000
  6363. * SUBROUTINE FOR ACTION NOREL * 06356000
  6364. ******************************************************************** 06357000
  6365. SPACE 1 06358000
  6366. ACTNOREL NI MAPSW,HEXFF-RELSW INDICATE ACTION NOREL @V305096 06359000
  6367. B ACTRET RETURN @V305096 06360000
  6368. SPACE 1 06361000
  6369. ******************************************************************** 06362000
  6370. * SUBROUTINE FOR ACTION REL * 06363000
  6371. ******************************************************************** 06364000
  6372. SPACE 1 06365000
  6373. ACTREL OI MAPSW,RELSW INDICATE ACTION REL @V305096 06366000
  6374. B ACTRET RETURN @V305096 06367000
  6375. SPACE 1 06368000
  6376. ******************************************************************** 06369000
  6377. * SUBROUTINE FOR ACTION BG F1 F2 F3 AND F4 * 06370000
  6378. ******************************************************************** 06371000
  6379. SPACE 1 06372000
  6380. ACTBG B ACTRET @V305096 06373000
  6381. EJECT 06374000
  6382. ************************************************************ 06375000
  6383. * CMS SUBROUTINE FOR CHECKING PLIST 06376000
  6384. ************************************************************ 06377000
  6385. PLIST EQU * @V305065 06378000
  6386. LA R1,8(,R1) POINT TO PLIST @V305065 06379000
  6387. CLI 0(R1),X'FF' IS THERE A PLIST? @V305065 06380000
  6388. BE NOFILEN BRANCH IF NOT,ERROR @V305065 06381000
  6389. CLI 0(R1),C'(' OPTION LIST? @V305065 06382000
  6390. BE NOFILEN BRANCH IF YES, ERROR @V305065 06383000
  6391. MVC DOSLNK+8(8),0(R1) MOVE IN DOSLNK FILE NAME @V305065 06384000
  6392. CLI 8(R1),C'(' NEXT ITEM LEFT PAREN? @V305065 06385000
  6393. BE NODSLIB BRANCH IF YES @V305065 06386000
  6394. CLI 8(R1),X'FF' END OF PLIST? @V305065 06387000
  6395. BE NODSLIB BRANCH IF YES @V305065 06388000
  6396. LA R1,8(,R1) POINT TO LIBNAME @V305065 06389000
  6397. NODSLIB EQU * @V305065 06390000
  6398. MVC DOSFINM,0(R1) MOVE DOSLIB FILENAME @V305065 06391000
  6399. CLI 8(R1),X'FF' END OF PLIST? @V305065 06392000
  6400. BE ENDPLIST BRANCH IF YES @V305065 06393000
  6401. CLI 8(R1),C'(' LEFT PAREN? @V305065 06394000
  6402. BNE INVPARM BRANCH IF NOT, ERROR @V305065 06395000
  6403. LA R1,16(,R1) POINT TO ITEM AFTER PAREN @V305065 06396000
  6404. CLI 0(R1),X'FF' IS THERE ONE? @V305065 06397000
  6405. BE ENDPLIST BRANCH IF NOT @V305065 06398000
  6406. CLC 0(8,R1),=CL8'DISK' IS IT DISK? @V305065 06399000
  6407. BE CHKEND BRANCH IF YES @V305065 06400000
  6408. CLC 0(8,R1),=CL8'PRINT' IS IT PRINT? @V305065 06401000
  6409. BNE CHKTYPE BRANCH IF NOT @V305065 06402000
  6410. OI CMSSWT1,MAPPRT INDICATE PRINT @V305065 06403000
  6411. LA R2,14 ASSUME DEVICE '00E' @V305065 06404000
  6412. DC X'832F0024' ISSUE DEVICE TYPE DIAGNOSE @V305065 06405000
  6413. CLM RF,4,=X'42' IS PRINTER 3211? @V305065 06406000
  6414. BNE CHKEND BRANCH IF NOT @V305065 06407000
  6415. OI CMSSWT1,PRT3211 INDICATE 3211 @V305065 06408000
  6416. B CHKEND @V305065 06409000
  6417. CHKTYPE EQU * @V305065 06410000
  6418. CLC 0(8,R1),=CL8'TERM' IS IT TERM? @V305065 06411000
  6419. BNE INVOPT ERROR IF NOT @V305065 06412000
  6420. OI CMSSWT1,MAPTYP INDICATE TYPE @V305065 06413000
  6421. CHKEND EQU * @V305065 06414000
  6422. LA R1,8(,R1) POINT TO NEXT ITEM @V305065 06415000
  6423. CLI 0(R1),C')' IS THIS RIGHT PAREN? @V305065 06416000
  6424. BNE CHKEND1 BRANCH IF NOT @V305065 06417000
  6425. LA R1,8(,R1) POINT PAST RIGHT PAREN @V305065 06418000
  6426. CHKEND1 EQU * @V305065 06419000
  6427. CLI 0(R1),X'FF' END OF PLIST? @V305065 06420000
  6428. BNE INVOPT ERROR IF NOT @V305065 06421000
  6429. ENDPLIST EQU * @V305065 06422000
  6430. BR RE RETURN @V305065 06423000
  6431. EJECT 1 06424000
  6432. INVOPT EQU * @V305065 06425000
  6433. LR R2,R1 POINT TO INVALID OPTION @V305065 06426000
  6434. DMSERR NUM=003,LET=E,SUB=(CHARA,(R2)), @V305065*06427000
  6435. TEXT='INVALID OPTION ''........''' @V305065 06428000
  6436. MVI ERCODE,ER024 SET ERROR CODE @V305065 06429000
  6437. B CANCLB @V305065 06430000
  6438. EJECT 1 06431000
  6439. INVPARM EQU * @V305065 06432000
  6440. LA R2,8(,R1) POINT TO INVALID PARM @V305065 06433000
  6441. DMSERR NUM=70,LET=E,SUB=(CHARA,(R2)), @V305065*06434000
  6442. TEXT='INVALID PARAMETER ''........''' @V305065 06435000
  6443. MVI ERCODE,ER024 SET ERROR CODE @V305065 06436000
  6444. B CANCL @V305065 06437000
  6445. EJECT 1 06438000
  6446. NOFILEN EQU * @V305065 06439000
  6447. DMSERR NUM=001,LET=E,TEXT='NO FILENAME SPECIFIED' @V305065 06440000
  6448. MVI ERCODE,ER024 SET ERROR CODE @V305065 06441000
  6449. B CANCLB @V305065 06442000
  6450. EJECT 1 06443000
  6451. NODOS EQU * @V305065 06444000
  6452. DMSERR NUM=099,LET=E, @V305065C06445000
  6453. TEXT='CMS/DOS ENVIRONMENT NOT ACTIVE' @V305065 06446000
  6454. MVI ERCODE,ER040 SET ERROR CODE @V305065 06447000
  6455. B CANCL1 @V305065 06448000
  6456. EJECT 1 06449000
  6457. NODISK EQU * @V305065 06450000
  6458. DMSERR TEXT='NO READ/WRITE ''A'' DISK ACCESSED', @V305065X06451000
  6459. NUM=006,LET=E @V305065 06452000
  6460. MVI ERCODE,ER032 SET ERROR CODE @V305065 06453000
  6461. B CANCLB @V305065 06454000
  6462. EJECT 1 06455000
  6463. NOF80 EQU * @V305065 06456000
  6464. LA R2,DOSLNK+8 POINT TO PLIST @V305065 06457000
  6465. DMSERR NUM=007,LET=E,SUB=(CHAR8A,(2)), @V305065X06458000
  6466. TEXT='FILE ''....................'' IS NOT FIXED, 80 CHAX06459000
  6467. R. RECORDS' @V305065 06460000
  6468. MVI ERCODE,ER032 SET ERROR CODE @V305065 06461000
  6469. B CANCL @V305065 06462000
  6470. EJECT 1 06463000
  6471. LIBNTRW EQU * @V305065 06464000
  6472. LR RE,RF POINT TO DOSLIB FN & FT IN FST @VM03016 06465000
  6473. DMSERR TEXT='LIBRARY ''.................'' IS ON A READ/ONLY D*06466000
  6474. ISK',NUM=210,LET=E,SUB=(CHAR8A,(RE)) @VM03016 06467000
  6475. MVI ERCODE,ER036 SET ERROR CODE @V305065 06468000
  6476. B CANCL @V305065 06469000
  6477. BADDOSLK EQU * @VA08808 06470000
  6478. STC RF,ERCODE SAVE ERROR CODE @VA08808 06471000
  6479. B CANCLB RETURN @VA08808 06472000
  6480. EJECT 06473000
  6481. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06474000
  6482. * 06475000
  6483. *** CONSTANTS REQUIRED ONLY DURING INITIALIZATION 06476000
  6484. * 06477000
  6485. VCATND DC A(DLKCATND) END OF RESIDENT CODE @V305096 06478000
  6486. PAGEALGN DC A(X'FFF800') USED TO FORCE TEXT BUFFER ADDR @V305096 06479000
  6487. * TO PAGE BOUNDARY 06480000
  6488. ONEKALGN DC A(X'FFFFFC00') USED TO ALIGN ON 1K BNDY@V305096 06481000
  6489. SPACE 1 06482000
  6490. * CONSTANTS AND EQUATES FOR ACTION CARD PROCESSOR 06483000
  6491. SPACE 1 06484000
  6492. COLUMN72 DS F COLUMN 72 CARD ADDRESS @V305096 06485000
  6493. * 06486000
  6494. K6 DC H'6' CONSTANT 6 @V305096 06487000
  6495. * 06488000
  6496. ACTSW DC H'0' SWITCHES FOR ACTION PROCESSOR @V305096 06489000
  6497. * 06490000
  6498. INVALID EQU X'8000' SWITCH TO INDICATE INVALID OP @V305096 06491000
  6499. MAP EQU X'4000' SWITCH TO INDICATE ACTION MAP @V305096 06492000
  6500. NOMAP EQU X'2000' SWITCH TO INDICATE ACTION NOMAP @V305096 06493000
  6501. CANCEL EQU X'1000' SWITCH TO INDICATE ACTION CANCEL @V305096 06494000
  6502. NOAUTO EQU X'0800' SWITCH TO INDICATE ACTION NOAUTO @V305096 06495000
  6503. CLEAR EQU X'0400' SWITCH TO INDICATE ACTION CLEAR @V305096 06496000
  6504. NOREL EQU X'0200' SWITCH TO INDICATE ACTION NOREL @V305096 06497000
  6505. REL EQU X'0100' SWITCH TO INDICATE ACTION REL @V305096 06498000
  6506. BG EQU X'0080' SWITCH TO INDICATE ACTION BG@V305096 06499000
  6507. F1 EQU X'0040' SWITCH TO INDICATE ACTION F1@V305096 06500000
  6508. F2 EQU X'0020' SWITCH TO INDICATE ACTION F2@V305096 06501000
  6509. F3 EQU X'0010' SWITCH TO INDICATE ACTION F3@V305096 06502000
  6510. F4 EQU X'0008' SWITCH TO INDICATE ACTION F4@V305096 06503000
  6511. F5 EQU X'0004' SWITCH TO INDICATE ACTION F5@V505098 06504000
  6512. F6 EQU X'0002' SWITCH TO INDICATE ACTION F6@V505098 06505000
  6513. * EQU X'0001' FOR FUTURE EXPANSION 06506000
  6514. * 06507000
  6515. EJECT 06508000
  6516. ******************************************************************** 06509000
  6517. * TABLE WITH VALID ACTION OPERANDS * 06510000
  6518. * EACH ENTRY IS BUILT UP AS FOLLOWS * 06511000
  6519. * 1 OPERAND FIELD LENGTH 6 BYTES * 06512000
  6520. * 2 OR-FIELD LENGTH 2 BYTES USED TO SET * 06513000
  6521. * CORRESPONDING BIT IN ACTSW * 06514000
  6522. * 3 AND-FIELD LENGTH 2 BYTES USED TO RESET * 06515000
  6523. * CONFLICTING OPTIONS * 06516000
  6524. * 4 BRANCH INSTRUCTION LENGTH 4 BYTES * 06517000
  6525. * SUBJECT INSTRUCTION FOR AN EXECUTE * 06518000
  6526. * USED TO BRANCH TO THE APPROPRIATE SUBROUTINE * 06519000
  6527. * * 06520000
  6528. ******************************************************************** 06521000
  6529. DS 0H ALIGNMENT @V305096 06522000
  6530. KACTION DS 0CL7 USED TO SEARCH ACTION VERB @V305096 06523000
  6531. ACTTAKEN DS 0CL18 TO MOVE 'ACTION TAKEN MAP' @V305096 06524000
  6532. DC C'ACTION TAKEN ' TO PRINT AREA @V305096 06525000
  6533. * 06526000
  6534. ACTLIST EQU * START OF TABLE @V305096 06527000
  6535. OPMAP DC CL6'MAP' ENTRY FOR MAP @V305096 06528000
  6536. DC AL2(MAP) OR FIELD @V305096 06529000
  6537. DC AL2(HEXFFFF-NOMAP) AND FIELD @V305096 06530000
  6538. B ACTMAP SUBJECT INSTR FOR EXECUTE @V305096 06531000
  6539. OPNOMAP DC CL6'NOMAP' ENTRY FOR NOMAP @V305096 06532000
  6540. DC AL2(NOMAP) OR FIELD @V305096 06533000
  6541. DC AL2(HEXFFFF-MAP) AND FIELD @V305096 06534000
  6542. B ACTNOMAP SUBJECT INSTR FOR EXECUTE @V305096 06535000
  6543. DC CL6'CANCEL' ENTRY FOR CANCEL @V305096 06536000
  6544. DC AL2(CANCEL) OR FIELD @V305096 06537000
  6545. DC AL2(HEXFFFF) AND FIELD @V305096 06538000
  6546. B ACTCANCE SUBJECT INSTR FOR EXECUTE @V305096 06539000
  6547. DC CL6'NOAUTO' ENTRY FOR NOAUTO @V305096 06540000
  6548. DC AL2(NOAUTO) OR FIELD @V305096 06541000
  6549. DC AL2(HEXFFFF) AND FIELD @V305096 06542000
  6550. B ACTNOAUT SUBJECT INSTR FOR EXECUTE @V305096 06543000
  6551. DC CL6'CLEAR' ENTRY FOR CLEAR @V305096 06544000
  6552. DC AL2(CLEAR) OR FIELD @V305096 06545000
  6553. DC AL2(HEXFFFF) AND FIELD @V305096 06546000
  6554. B ACTCLEAR SUBJECT INSTR FOR EXECUTE @V305096 06547000
  6555. DC CL6'NOREL' ENTRY FOR NOREL @V305096 06548000
  6556. DC AL2(NOREL) OR FIELD @V305096 06549000
  6557. DC AL2(HEXFFFF-REL) AND FIELD @V305096 06550000
  6558. B ACTNOREL SUBJECT INSTR FOR EXECUTE @V305096 06551000
  6559. DC CL6'REL' ENTRY FOR REL @V305096 06552000
  6560. DC AL2(REL) OR FIELD @V305096 06553000
  6561. DC AL2(HEXFFFF-NOREL) AND FIELD @V305096 06554000
  6562. B ACTREL SUBJECT INSTR FOR EXECUTE @V305096 06555000
  6563. OPBG DC CL6'BG' ENTRY FOR BG @V305096 06556000
  6564. DC AL2(BG) OR FIELD @V305096 06557000
  6565. DC AL2(HEXFFFF-F1-F2-F3-F4-F5-F6) AND FIELD @V505098 06558000
  6566. B ACTBG SUBJECT INSTR FOR EXECUTE @V305096 06559000
  6567. DC CL6'F1' ENTRY FOR F1 @V305096 06560000
  6568. DC AL2(F1) OR FIELD @V305096 06561000
  6569. DC AL2(HEXFFFF-BG-F2-F3-F4-F5-F6) AND FIELD @V505098 06562000
  6570. B ACTBG SUBJECT INSTR FOR EXECUTE @V305096 06563000
  6571. DC CL6'F2' ENTRY FOR F2 @V305096 06564000
  6572. DC AL2(F2) OR FIELD @V305096 06565000
  6573. DC AL2(HEXFFFF-BG-F1-F3-F4-F5-F6) AND FIELD @V505098 06566000
  6574. B ACTBG SUBJECT INSTR FOR EXECUTE @V305096 06567000
  6575. DC CL6'F3' ENTRY FOR F3 @V305096 06568000
  6576. DC AL2(F3) OR FIELD @V305096 06569000
  6577. DC AL2(HEXFFFF-BG-F1-F2-F4-F5-F6) AND FIELD @V505098 06570000
  6578. B ACTBG SUBJECT INSTR FOR EXECUTE @V305096 06571000
  6579. DC CL6'F4' ENTRY FOR F4 @V305096 06572000
  6580. DC AL2(F4) OR FIELD @V305096 06573000
  6581. DC AL2(HEXFFFF-BG-F1-F2-F3-F5-F6) AND FIELD @V505098 06574000
  6582. B ACTBG SUBJECT INSTR FOR EXECUTE @V305096 06575000
  6583. DC CL6'F5' ENTRY FOR F5 @V505098 06576000
  6584. DC AL2(F5) OR FIELD @V505098 06577000
  6585. DC AL2(HEXFFFF-BG-F1-F2-F3-F4-F6) AND FIELD @V505098 06578000
  6586. B ACTBG SUBJECT INSTR FOR EXECUT@V505098 06579000
  6587. LASTPART EQU * HIGHEST PARTION ENTRY @V505098 06580000
  6588. DC CL6'F6' ENTRY FOR F6 @V505098 06581000
  6589. DC AL2(F6) OR FIELD @V505098 06582000
  6590. DC AL2(HEXFFFF-BG-F1-F2-F3-F4-F5) AND FIELD @V505098 06583000
  6591. B ACTBG SUBJECT INSTR FOR EXECUT@V505098 06584000
  6592. LASTENTR DC CL6' ' USED TO MOVE OPERAND @V305096 06585000
  6593. DC AL2(INVALID) FROM ACTION CARD @V305096 06586000
  6594. DC AL2(HEXFFFF) WHEN AN EQUAL COMPARE IS@V305096 06587000
  6595. * FOUND ON THIS ENTRY, THE OPERAND WAS INVALID 06588000
  6596. ENTLNGTH EQU OPNOMAP-OPMAP LENGTH OF ONE ENTRY @V305096 06589000
  6597. SPACE 2 06590000
  6598. MOVEOPER MVC LASTENTR(DEC0),DEC0(R5) USED BY EX INSTRUCTION @V305096 06591000
  6599. * TO MOVE AN ACTION OP TO THE LAST 06592000
  6600. * TABLE ENTRY 06593000
  6601. SPACE 2 06594000
  6602. * EQUATES USED DURING INITIALISATION 06595000
  6603. SPACE 1 06596000
  6604. HEXFFFF EQU X'FFFF' @V305096 06597000
  6605. DEC256 EQU 256 @V305096 06598000
  6606. * 06599000
  6607. * 06600000
  6608. * 06601000
  6609. ** TABLE TO PROVIDE ADDRESSABILITY TO ERROR MESSAGES 06602000
  6610. * 06603000
  6611. DS 0F @VA05886 06604000
  6612. AMSG35 DC YL1(L'MSG35-DEC1) LENGTH OF MESSAGE MIN 1 @VA05886 06605000
  6613. DC AL3(MSG35) ADDRESS OF ERROR MESSAGE @VA05886 06606000
  6614. LTORG , @V305096 06607000
  6615. EJECT 06608000
  6616. ******************************************************************** 06609000
  6617. * CONSTANTS AND WORK-FIELDS FOR INITIALIZATION 06610000
  6618. ******************************************************************** 06611000
  6619. CNBASE DC A(DMSDLK) BASE USED FOR CONSTANTS & S/R-S AREA @V305096 06612000
  6620. * 06613000
  6621. RELOADCN DC A(INTPT2) ADDR OF INSTR AFTER @V305096 06614000
  6622. * BALR FOR INITIALIZATION PHASE 06615000
  6623. READIR CCW X'06',INPBLK,X'00',80 READ LIBRARY @V305096 06616000
  6624. RLDINFO DC XL5'0102' DISK ADDR OF REL LIBRARY INFO IN @V305096 06617000
  6625. * SYS DIR, USED AT INITIALIZATION 06618000
  6626. EJECT 06619000
  6627. ******************************************************************** 06620000
  6628. * OVERFLOW FACTORS FOR DIFFERENT TYPES OF SYSRES 06621000
  6629. * DEVICES 06622000
  6630. * NOTE1 IF A NEW 2311-COMPATIBLE DEVICE TYPE WILL BE SUPPORTED 06623000
  6631. * AS SYSTEM RESIDENCE DEVICE INSERTING A NEW TABLE ENTRY WILL 06624000
  6632. * BE ALL THE WORK TO DO 06625000
  6633. * NOTE2 FOR A LAY OUT OF THE OVERFLOW FACTORS, SEE DMSDLK 06626000
  6634. * NEAR LABEL CYLFCT 06627000
  6635. ******************************************************************** 06628000
  6636. DEVSTART EQU * START OF TABLE @V305096 06629000
  6637. * 06630000
  6638. * 2314 06631000
  6639. * 06632000
  6640. TAB2314 DC AL1(DEV2314) . @V305096 06633000
  6641. REL2314 DC X'110013EC' RELOCATABLE LIB. DIRECTORY @V305096 06634000
  6642. RLL2314 DC X'100013EC' RELOCATABLE LIBRARY @V305096 06635000
  6643. LDEVTAB EQU *-TAB2314 @V305096 06636000
  6644. * 06637000
  6645. * 3330 06638000
  6646. * 06639000
  6647. TAB3330 DC AL1(DEV3330) . @V305096 06640000
  6648. REL3330 DC X'1C0012ED' REL. LIBRARY DIRECTORY @V305096 06641000
  6649. RLL3330 DC X'1C0012ED' RELOCATABLE LIBRARY @V305096 06642000
  6650. * 06643000
  6651. * 3330-11 06644000
  6652. * 06645000
  6653. TAB333B DC AL1(DEV333B) @V505098 06646000
  6654. REL333B DC X'1C0012ED' REL. LIBRARY DIRECTORY @V505098 06647000
  6655. RLL333B DC X'1C0012ED' RELOCATABLE LIBRARY @V505098 06648000
  6656. * 06649000
  6657. * 3340,36MB 06650000
  6658. * 06651000
  6659. TAB3343 DC AL1(DEV3343) . @V305096 06652000
  6660. REL3343 DC X'11000BF4' REL. LIBRARY DIRECTORY @V305096 06653000
  6661. RLL3343 DC X'11000BF4' RELOCATABLE LIBRARY @V305096 06654000
  6662. * 06655000
  6663. * 3340,70MB 06656000
  6664. * 06657000
  6665. TAB3347 DC AL1(DEV3347) @V305096 06658000
  6666. REL3347 DC X'11000BF4' REL. LIBRARY DIRECTORY @V305096 06659000
  6667. RLL3347 DC X'11000BF4' RELOCATABLE LIBRARY @V305096 06660000
  6668. * 06661000
  6669. * 3350 06662000
  6670. * 06663000
  6671. TAB3350 DC AL1(DEV3350) @V505098 06664000
  6672. REL3350 DC X'26001DE2' RELOCTE LIB DIRCTRY @VA08407 06665000
  6673. RLL3350 DC X'25001DE2' RELOCTEABLE LIB @VA08407 06666000
  6674. DEVEND EQU * END OF TABLE @V305096 06667000
  6675. EJECT 06668000
  6676. NVALID XC 0(1,R2),0(R2) SUBJ OF EXECUTE INSTRUCTION @V305096 06669000
  6677. RESTYP DS C DEV TYPE FOR SYSRES @V305096 06670000
  6678. SYSIR DSECT @V305096 06671000
  6679. BGCOM @V305065 06672000
  6680. MAPPUB @V305096 06673000
  6681. PUBWIT EQU *-PUBCUU @V305065 06674000
  6682. NUCON @V305065 06675000
  6683. DOSCB @V305065 06676000
  6684. FSCBD @V305065 06677000
  6685. OSFST @V305065 06678000
  6686. FSTB @V305065 06679000
  6687. ADT @V305065 06680000
  6688. DLKINL CSECT @V305096 06681000
  6689. PATCH2 DS 0H @V305096 06682000
  6690. DC ((PATCH2-INTPT2)/20)X'00' 5% PATCHAREA FOR @V305096 06683000
  6691. * INITIALIZATION 06684000
  6692. DLKINLND EQU * @V305096 06685000
  6693. ENTRY DLKINLND @V305096 06686000
  6694. END DLKINL 06687000