Table of Contents

DMSLDR Source

References

Source Listing

DMSLDR.ASSEMBLE.txt
  1. LDR TITLE 'DMSLDR (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00004000
  5. * 00005000
  6. * 00006000
  7. * MODULE NAME: 00007000
  8. * 00008000
  9. * DMSLDR (LDR) 00009000
  10. * 00010000
  11. * FUNCTION: 00011000
  12. * 00012000
  13. * THIS MODULE CONSISTS OF THE FOLLOWING LOADER ROUTINES: 00013000
  14. * DMSLDRA, DMSLDRB 00014000
  15. * 00015000
  16. * SUBROUTINE NAME: 00016000
  17. * 00017000
  18. * DMSLDRA 00018000
  19. * 00019000
  20. * FUNCTION: 00020000
  21. * 00021000
  22. * TO BEGIN EXECUTION OF A GROUP OF PROGRAMS LOADED INTO 00022000
  23. * CORE. DEFINITION OF ALL UNDEFINED PROGRAMS IN 00023000
  24. * ESTABLISHED AS AT LOCATION ZERO. 00024000
  25. * 00025000
  26. * ATTRIBUTES: 00026000
  27. * 00027000
  28. * REENTRANT, NUCLEUS RESIDENT 00028000
  29. * 00029000
  30. * ENTRY POINTS: 00030000
  31. * 00031000
  32. * DMSLDRA - FROM START COMMAND OR INTERNALLY FROM DMSLDRB LDT 00032000
  33. * ROUTINE IF START SPECIFIED 00033000
  34. * 00034000
  35. * ENTRY CONDITIONS: 00035000
  36. * 00036000
  37. * R1 - PLIST 00037000
  38. * 00038000
  39. * EXIT CONDITIONS: 00039000
  40. * 00040000
  41. * NORMAL - 00041000
  42. * EXIT BACK TO DMSLDRB TO BEGIN EXECUTION OF 00042000
  43. * LOADED PROGRAM 00043000
  44. * 00044000
  45. * ERROR - 00045000
  46. * RETURN TO CALLER FOR 00046000
  47. * FOLLOWING ERRORS: MEMORY EXCEEDED, STARTING NAME 00047000
  48. * ILLEGAL 00048000
  49. * 00049000
  50. * CALLS TO OTHER ROUTINES: 00050000
  51. * 00051000
  52. * DMSLIO - TO PRINT MESSAGES 00052000
  53. * DMSLSBC - TO DEFINE UNDEFINED ENTRIES AT ZERO 00053000
  54. * SERCH1 - IN DMSLDRB TO FIND STARTING NAME'S LOCATION 00054000
  55. * 00055000
  56. * EXTERNAL REFERENCES: 00056000
  57. * 00057000
  58. * NUCON, REFTBL 00058000
  59. * 00059000
  60. * TABLES/WORKAREAS: 00060000
  61. * 00061000
  62. * NONE 00062000
  63. * 00063000
  64. * REGISTER USAGE: 00064000
  65. * 00065000
  66. * | R8,R9 BASE 00066000
  67. * R13 - LDRST 00067000
  68. * | REST WORK 00068000
  69. * 00069000
  70. * OPERATION: 00070000
  71. * 00071000
  72. * THE START EXECUTION ROUTINE RECEIVES CONTROL FROM THE 00072000
  73. * START COMMAND OR THE LDT CARD ROUTINE IF THE START OPTION 00073000
  74. * WAS SPECIFIED. THE START EXECUTION ROUTINE: 00074000
  75. * 00075000
  76. * 1. INITIALIZES FREE STORAGE. 00076000
  77. * 00077000
  78. * 2. CALLS THE DISK AND TYPE OUTPUT PROGRAM (DMSLIO) TO 00078000
  79. * PRINT A STORAGE MAP HEADER FOR COMMON, IF THE 00079000
  80. * REFTBL CONTAINS ANY COMMON ENTRIES. 00080000
  81. * 00081000
  82. * 3. SEARCHES THE REFTBL FOR ENTRIES WITH A NONZERO 00082000
  83. * FLAG (COMMON, CXD, PR, AND REFERENCES TO UNDEFINED 00083000
  84. * SYMBOLS). 00084000
  85. * 00085000
  86. * A. A POINTER TO PR ENTRY IS PLACED IN A SEPARATE 00086000
  87. * TABLE DEPENDING UPON PR ALIGNMENT: BYTE, 00087000
  88. * HALFWORD, FULLWORD, OR DOUBLEWORD. 00088000
  89. * 00089000
  90. * B. A CXD ENTRY IS MARKED "UNDEFINED" FOR LATER 00090000
  91. * PROCESSING AND A POINTER PLACED IN SPECIAL 00091000
  92. * CXD TABLE. 00092000
  93. * 00093000
  94. * C. A COMMON IS DEFINED AT THE NEXT AVAILABLE 00094000
  95. * LOAD LOCATION AND THE LOCATION COUNTER 00095000
  96. * (LOCCNT) IS INCREASED BY THE LENGTH OF THE 00096000
  97. * COMMON. REFERENCES TO THE COMMON ARE 00097000
  98. * PROCESSED BY CALLED ADDEF. THE NAME, 00098000
  99. * ADDRESS, AND LENGTH OF THE COMMON ARE PRINTED 00099000
  100. * BY CALLING DMSLIO VIA CMVAL. 00100000
  101. * 00101000
  102. * D. A REFERENCE TO AN UNDEFINED SYMBOL IS 00102000
  103. * REPLACED BY A VALUE OF ZERO BY CALLING ADDEF. 00103000
  104. * 00104000
  105. * 4. AFTER SCANNING ENTIRE REFTBL, THE DISK AND TYPE 00105000
  106. * OUTPUT PROGRAM (DMSLIO) IS CALLED TO PRINT A 00106000
  107. * STORAGE MAP HEADER FOR PR'S, IF THERE ARE ANY 00107000
  108. * PSEUDO-REGISTER ENTRIES IN THE REFTBL. THE NAME, 00108000
  109. * VALUE, AND LENGTH OF EACH PR (THEY WERE DEFINED 00109000
  110. * EARLIER WHEN ESD WAS FIRST ENCOUNTERED) ARE 00110000
  111. * PRINTED AS WELL AS THE CXD REQUEST, WHICH CAN ONLY 00111000
  112. * BE DETERMINED AFTER ALL PR'S HAVE BEEN ASSIGNED. 00112000
  113. * 00113000
  114. * 5. THE STARTING ADDRESS FOR EXECUTION IS THEN 00114000
  115. * DETERMINED: BY ENTRY-POINT NAME IS SUPPLIED, BY 00115000
  116. * START COMMAND OR BY THE START EXECUTION ADDRESS 00116000
  117. * (IN BRAD) SET BY FIRST PROGRAM LOADED, END CARD, 00117000
  118. * LDT CARD, OR ENTRY CONTROL CARD. 00118000
  119. * 00119000
  120. * 6. A. IF ACTUAL EXECUTION IS SUPPRESSED, FOR 00120000
  121. * EXAMPLE, BY SPECIFYING START (NO) COMMAND, 00121000
  122. * 00122000
  123. * THE LIBRARY IS CLOSED, LOAD MAP CLOSED, FREE 00123000
  124. * STORAGE RELEASED, AND CONTROL RETURNED TO 00124000
  125. * CALLER. OTHERWISE, EXECUTION IS PERFORMED BY 00125000
  126. * SETP 6B. 00126000
  127. * 00127000
  128. * B. THE MESSAGE "EXECUTION BEGINS" IS PRINTED, 00128000
  129. * IF THE CMS/DOS ENVIRONMENT IS NOT ACTIVE 00129000
  130. * ( DOSCOMP+DOSSVC ). THE GETMAIN/FREEMAIN 00130000
  131. * STORAGE IS INITIALIZED (STRINIT). IF THE 00131000
  132. * CMS/DOS ENVIRONMENT IS ACTIVE ( DOSSVC), 00132000
  133. * A CALL IS MADE TO DMSSMNAT TO INITIALIZE 00133000
  134. * THE CMS/DOS PARTITION. 00134000
  135. * THE SAVE AREA ADDRESS IS SET IN REGISTER 00135000
  136. * 13, THE ENTRY POINT OF THE PROGRAM IS SET 00136000
  137. * IN REGISTER 15, THE RETURN ADDRESS IS SET 00137000
  138. * IN REGISTER 14, AND THE ADDRESS TO THE 00138000
  139. * PROGRAM'S PLIST IS SET IN REGISTER 1. 00139000
  140. * An extended PLIST is supplied in R0. HRC309DS 00139200
  141. * IF THE CMS/DOS ENVIRONMENT IS ACTIVE 00140000
  142. * ( DOSCOMP+DOSSVC ), REGISTER 1 WILL THEN 00141000
  143. * CONTAIN THE ENTRY POINT ADDRESS OF THE 00142000
  144. * PROGRAM TO BE EXECUTED. 00143000
  145. * CONTROL IS THEN TRANSFERRED TO THE LOADED 00144000
  146. * PROGRAM VIA 'LPSW' INSTRUCTION. 00145000
  147. * @VA04695 00146000
  148. * NOTE: ANY CHANGES MADE TO THIS MODULE SHOULD ALSO @VA04695 00147000
  149. * BE CONSIDERED FOR DMSOLD. @VA04695 00148000
  150. *. 00149000
  151. EJECT 00150000
  152. DMSLDRA START 00151000
  153. * 00152000
  154. ENTRY DMSLDRB,DMSLDRC,DMSLDRD 00153000
  155. EXTRN DMSLIO 00154000
  156. EXTRN DMSLSBA,DMSLSBC,DMSLSBB 00155000
  157. USING LDRST,R13 00156000
  158. * 00157000
  159. RELDR EQU * 00158000
  160. BALR R8,0 00159000
  161. BCTR R8,0 00160000
  162. BCTR R8,0 00161000
  163. USING RELDR,R8,R9 00162000
  164. B LDRSTA 00163000
  165. DC X'CCCC' 00164000
  166. DC C'DMSLDR' 00165000
  167. DC X'CCCC' 00166000
  168. EJECT 00167000
  169. REGEQU 00168000
  170. LDRSTA LA R9,4095(0,R8) SET SECOND BASE REG 00169000
  171. LA R9,1(0,R9) 00170000
  172. BAL R4,INIT GET AND INITIALIZE WORK AREA 00171000
  173. USING XPRTAB,10 FREE TABLES 00172000
  174. USING NUCON,R0 00173000
  175. OI FLAGS,START INDICATE START REQUESTED 00174000
  176. SPACE 2 00175000
  177. LDXEQ EQU * 00176000
  178. LA 10,SPEC USE SPEC & ESIDTB FOR FREE 00177000
  179. SR 6,6 GET 0 00178000
  180. ST 6,HALFAD CLEAR SOME OF FREE 00179000
  181. ST 6,BYTEAD ... 00180000
  182. ST 6,FULLAD ... 00181000
  183. ST 6,DBLAD ... 00182000
  184. ST 6,CXDAD ... 00183000
  185. MVC COMMON(4),LOCCNT 00184000
  186. L 12,TBLREF POINT TO FIRST ITEM IN REFERENC 00185000
  187. LH 4,TBLCT 00186000
  188. LTR R4,R4 ANY LOADER TABLE ENTRIES 00187000
  189. BZ XREST NO, OMIT LOAD COMPLETION 00188000
  190. LA 3,20 00189000
  191. L 7,AADDEF TR 00190000
  192. SPACE 2 00191000
  193. TM FLAG1,COMMONEX DO COMMON ENTRIES EXIST 00192000
  194. BZ S1 NO, DON'T PRINT HEADER 00193000
  195. NI LDRFLAGS,255-COMMONEX RESET COMMON BIT @VA14133 00194000
  196. LA 5,CMDEF GET IO INDEX FOR HEADER 00195000
  197. L 11,ALDRIO GET LINKAGE 00196000
  198. BALR 14,11 GO PRINT HEADING 00197000
  199. EJECT 00198000
  200. S1 SR 12,3 NEXT ENTRY IN REFTBL 00199000
  201. CLI 8(12),X'00' IS ENTRY DEFINED 00200000
  202. BE N1 YES LOOK AT NEXT 00201000
  203. TR 8(1,R12),TRANPR TRANSLATE FLAG TO INDEX @VA08891 00201500
  204. SR 6,6 GET 0 00203000
  205. LR 1,6 DEFINE UNDEFS AT 0 00204000
  206. IC 6,8(0,12) GET ENTRYS FLAG BYTE 00205000
  207. SLL 6,1 MULTIPLY BY 2 00206000
  208. LH 6,XTRATBL(6) INDEX TRANSFER TABLE 00207000
  209. B 0(6,R8) GO TO APPROPRIATE ROUTINE 00208000
  210. N1 BCT 4,S1 BACK FOR MORE ENTRIES 00209000
  211. SPACE 2 00210000
  212. TM FLAG1,PREXIST ARE THERE ANY PR ENTRIES 00211000
  213. BZ XREST NO, SKIP PR EVALS 00212000
  214. NI LDRFLAGS,255-PREXIST RESET PR PENDING BIT @VA14133 00213000
  215. LA 5,PRDEF IO INDEX FOR P-R HEADER 00214000
  216. L 11,ALDRIO PRINT HEADING 00215000
  217. BALR 14,11 ... 00216000
  218. SPACE 3 00217000
  219. LA 3,DBLAD ADDRESS OF DBL PR TBL 00218000
  220. BAL R15,XPRPRT PRINT OUT DOUBLE AL PR 00219000
  221. LA 3,FULLAD ADDRESS OF FULL PR TBL 00220000
  222. BAL R15,XPRPRT PRINT FULL AL PR 00221000
  223. LA 3,HALFAD ADDRESS OF HALF PR TBL 00222000
  224. BAL R15,XPRPRT PRINT HALF AL PR 00223000
  225. LA 3,BYTEAD ADDRESS OF BYTE PR TBL 00224000
  226. BAL R15,XPRPRT PRINT BYTE AL PR 00225000
  227. LA 3,CXDAD ADDRESS OF CXD TBL 00226000
  228. BAL R15,XPRPRT PRINT CXD LENGTH 00227000
  229. SPACE 1 00228000
  230. XREST L R1,PARMLIST CHECK FOR STARTING NAME 00229000
  231. CLI 0(1),X'FF' IS THERE A NAME 00230000
  232. BE XREST1 NO, USE DEFAULT START @VA00857 00231000
  233. CLI 0(R1),C'*' IS IT START * @VA00857 00232000
  234. BE XREST1 YES, DEFAULT START @VA00857 00233000
  235. CLI 0(R1),C'(' NAME SPECIFIED @VA00857 00234000
  236. BNE C6AD3 YES, GO LOOK IT UP @VA00857 00235000
  237. CLC 8(8,R1),=CL8'NO' START (NO) @VA00896 00236000
  238. BE XREST2 YES @VA00896 00237000
  239. MVC PARMLIST(4),FRSTSDID SET PARMLIST TO END @VA00896 00238000
  240. XREST1 L 0,BRAD NO - GET TRANSFER ADDRESS ALREA 00239000
  241. LTR 0,0 IS THERE ONE 00240000
  242. BC 8,C6AD4 NO - GO TO FIRST PROG. LOADED 00241000
  243. B EXEC START EXECUTION 00242000
  244. SPACE 00243000
  245. XREST2 EQU * 00244000
  246. NI FLAGS,255-START RESET START INDICATOR 00245000
  247. B EXEC2 00246000
  248. EJECT 00247000
  249. EXEC L R4,STRTADDR GET 'LOADED' START ADDRESS 00248000
  250. CLC 4(8,R4),=C'CMS"XEQ"' INITIALIZATION ROUTINE? 00249000
  251. BNE EXEC1 NO. RESET 'STADDR'. 00250000
  252. CR R0,R4 SAME POINTER? 00251000
  253. BE EXEC1 YES. LEAVE ALONE. 00252000
  254. ST R0,12(,R4) SET USER START POINT INTO "CMSXEQ". 00253000
  255. LR R0,R4 GET R0= STADDR 00254000
  256. EXEC1 LTR R4,R0 WAS A STARTING LOCATION FOUND 00255000
  257. BZ ERR455 NO, ERROR 00256000
  258. CLC 0(2,R4),=XL2'00' IS THE LOCATION VALID 00257000
  259. BE ERR455 NO, ERROR 00258000
  260. LH R6,TBLCT GET LDR TBL COUNT 00259000
  261. CH R6,=H'2' GREATER THAN TWO 00260000
  262. BNH ERR455 NO, NOTHING LOADED 00261000
  263. EXEC2 ST R0,PSW+4 STORE BRANCH ADDR INTO PSW 00262000
  264. L R4,LOCCNT GET LOCATION COUNTER 00263000
  265. LA 4,7(0,4) ALIGN TO DBL WRD BOUND 00264000
  266. N 4,DBLBND ... 00265000
  267. ST R4,LOCCNT ... 00266000
  268. C R4,AUSRAREA IS IT LESS THAN 20,000 ? @VA05623 00267000
  269. BL NOSTOR YES, DONT STORE IN MAINHIGH @VA05623 00268000
  270. ST R4,MAINHIGH DEFINE AS USER LAST LOC @VA05623 00269000
  271. NOSTOR DS 0H @VA05623 00270000
  272. SR R4,R4 NO ERRORS 00271000
  273. TM FLAGS,START WAS EXECUTION REQUESTED 00272000
  274. BNO N03 NO, NORMAL RETURN 00273000
  275. MVI OSSFLAGS,X'00' CLEAR OS FLAGS @VA09702 00273500
  276. B N023 YES - GO TO XEQ FUDGE 00274000
  277. ERR455 LA R5,ERRORI MSG CODE FOR DMSLIO 00275000
  278. B FATERR TERMINATE THIS COMMAND 00276000
  279. SPACE 3 00277000
  280. XDBL LA 6,DBLAD ADDRESS OF DBL PR TBL 00278000
  281. LA R14,HALFAD-DBLAD SIZE OF DOUBLE TABLE 00279000
  282. B PRVSAVE GO SAVE REFTBL LOC OF PR ENTRY 00280000
  283. XFULL LA 6,FULLAD ADDRESS OF FULL PR TBL 00281000
  284. LA R14,DBLAD-FULLAD SIZE OF FULL TABLE 00282000
  285. B PRVSAVE GO SAVE REFTBL LOC OF PR ENTRY 00283000
  286. XHALF LA 6,HALFAD ADDRESS OF HALF PR TBL 00284000
  287. LA R14,BYTEAD-HALFAD SIZE OF HALF TABLE 00285000
  288. B PRVSAVE GO SAVE REFTBL LOC OF PR ENTRY 00286000
  289. XBYTE LA 6,BYTEAD LOC OF BYTE PR TBL 00287000
  290. LA R14,COMMON-BYTEAD SIZE OF BYTE TABLE 00288000
  291. B PRVSAVE GO SAVE REFTBL LOC OF PR ENTRY 00289000
  292. XCXD LA 6,CXDAD LOC OF PR CUM LENGTH TBL 00290000
  293. LA R14,8 SIZE OF CXD FIELD 00291000
  294. OI 8(12),X'80' UNDEFINE IT 00292000
  295. B PRVSAVE GO SAVE LOC OF PR CUM LENGTH 00293000
  296. XUNDEF MVI 8(12),X'80' RESET UNDEF BIT 00294000
  297. XC 0(8,12),0(12) ZERO OUT UNDEFINED ENTRY @VM01416 00295000
  298. BALR 14,7 DEFINE ENTRY AT 0 00296000
  299. B N1 RETURN TO LOOK AGAIN 00297000
  300. SPACE 2 00298000
  301. XCOMSET L 1,COMMON GET CURRENT LOC OF COMMON 00299000
  302. L 2,8(,12) GET LENGTH OF CSECT 00300000
  303. LA R2,0(0,R2) CLEAR HIGH ORDER BYTE 00301000
  304. LA 1,7(,1) 00302000
  305. N 1,DBLBND ALIGN TO DOUBLE WRD 00303000
  306. LR 6,1 SAVE BEGINNING OF THIS COMMON SECT 00304000
  307. AR 6,2 ADD THE LENGTH 00305000
  308. ST 6,COMMON RESET COMMON LOCATION COUNTER 00306000
  309. ST R6,LOCCNT RESET LOCATION COUNTER 00307000
  310. OI 8(12),X'80' UNDEFINE THE ENTRY 00308000
  311. BAL 6,XENTDEF NO, GO DEFINE ENTRY 00309000
  312. LA 5,CMVAL IO INDES FOR COMMON PRINT 00310000
  313. L 11,ALDRIO PRINT NAME, VAL + LENGTH 00311000
  314. BALR 14,11 ... 00312000
  315. CLC COMMON,FREELOWE IS MEMORY EXCEEDED 00313000
  316. BNL FATERR1 YES, GIVE FATAL ERROR MESSAGE AND GIVE UP 00314000
  317. B N1 BACK TO LOOK AGAIN 00315000
  318. PRVSAVE LH 1,0(0,6) GET DISP OF NEXT LOC IN TBL 00316000
  319. LA 1,2(0,1) ... 00317000
  320. CR R1,R14 WILL TABLE OVERFLOW 00318000
  321. BNL PRTBLOVR YES, FATAL ERROR 00319000
  322. LH 2,TBLCT TOTAL NO OF ENTRIES IN REFTBL 00320000
  323. SR 2,4 MINUS CNT GIVES INDEX FROM TOP 00321000
  324. LA 2,1(0,2) OFF BY 1 00322000
  325. STH 2,0(1,6) PUT INTO TBL 00323000
  326. STH 1,0(0,6) SAVE TBL INDEX 00324000
  327. B N1 BACK TO LOOK AGAIN 00325000
  328. PRTBLOVR LA R5,PROVER DMSLIO CODE 00326000
  329. B FATERR TERMINATE 00327000
  330. EJECT 00328000
  331. XENTDEF EQU * 00329000
  332. BALR 14,7 GO DEFINE ENTRY 00330000
  333. ST 1,12(0,12) SET LOCATION IN LOADER TABLE 00331000
  334. MVI 8(12),X'00' CLEAR FLAG BYTE 00332000
  335. BR 6 BACK TO CALLER 00333000
  336. SPACE 2 00334000
  337. SPACE 2 00335000
  338. XPRPRT LH 4,0(0,3) GET ENTRY COUNT FROM TABLE 00336000
  339. LTR 4,4 ANYTHING IN TBL 00337000
  340. BCR 8,R15 NO BACK TO CALLER 00338000
  341. XPRSET2 L 12,TBLREF ADDRESS OF REFTBL TOP 00339000
  342. LA 3,2(0,3) INDEX PTR 00340000
  343. LH 2,0(0,3) GET REFTBL INDEX 00341000
  344. MH R2,=H'20' MULTIPLY BY 20 00342000
  345. SR 12,2 GET ADDRESS OF ENTRY 00343000
  346. L 1,12(0,12) GET VALUE FROM REFTBL 00344000
  347. LH R5,PRVCNT GET PRESENT PR COUNT 00345000
  348. LH 2,10(0,12) GET LENGTH OF PR ENTRY 00346000
  349. AR 2,1 ADD TO VALUE 00347000
  350. CLI 8(12),X'84' IS THIS A CXD? 00348000
  351. BNE XPRCNT NO - PROCEED NORMALLY 00349000
  352. LR 1,5 YES - GET PRCNT AS VALUE 00350000
  353. XPRCNT CLR 2,5 PRESENT PR VAL HIGHEST? 00351000
  354. BNH XPRDEF NO - DON'T REPLACE 00352000
  355. STH R2,PRVCNT NO, PUT NEW COUNT IN PRVCNT 00353000
  356. XPRDEF BAL 6,XENTDEF GO DEFINE ENTRY 00354000
  357. LA 5,PRVAL IO INDEX FOR PR PRINT 00355000
  358. L 11,ALDRIO PRINT NAME, VAL + LENGTH 00356000
  359. BALR 14,11 ... 00357000
  360. XC 0(8,R12),0(R12) CLEAR PR FROM TABLE @V1D1705 00358000
  361. BCTR 4,0 SUBTRACT 1 00359000
  362. BCT 4,XPRSET2 BACK FOR ANOTHER ENTRY 00360000
  363. BR R15 RETURN TO CALLER 00361000
  364. SPACE 3 00362000
  365. C6AD3 LA 2,ERLDT GRIPE IF NAME NOT FOUND 00363000
  366. BAL 3,SERCH1 00364000
  367. CA6D4 L R0,12(0,R12) PICK UP ABS. ADDR. OF NAME 00365000
  368. BC 15,EXEC 00366000
  369. C6AD4 L 12,TBLREF ADDRESS OF REFTBL TOP 00367000
  370. LA R6,60 3RD ENTRY IN LOADER TABLE 00368000
  371. SR 12,6 00369000
  372. BC 15,CA6D4 00370000
  373. EJECT 00371000
  374. *. 00372000
  375. * SUBROUTINE NAME: 00373000
  376. * 00374000
  377. * DMSLDRB 00375000
  378. * 00376000
  379. * FUNCTION: 00377000
  380. * 00378000
  381. * TO INITIALIZE FOR AND TO PERFORM EACH LOADING OPERATION 00379000
  382. * BY PROCESSING TEXT FILES WHICH MAY CONTAIN THE 00380000
  383. * FOLLOWING CARDS: SLC, ICS, ESD, TXT, REP, RLD, END, 00381000
  384. * LDT, LIBRARY, AND ENTRY. 00382000
  385. * 00383000
  386. * ATTRIBUTES: 00384000
  387. * 00385000
  388. * REENTRANT, NUCLEUS RESIDENT 00386000
  389. * 00387000
  390. * ENTRY POINTS: 00388000
  391. * 00389000
  392. * DMSLDRB - ENTERED FROM DMSLDP WHEN LOAD FUNCTION IS REQUESTE 00390000
  393. * DMSLDRC - ENTERED BY VARIOUS LOADER ROUTINES WHEN AN INVALID 00391000
  394. * CARD IS DETECTED IN A TEXT FILE 00392000
  395. * DMSLDRD - ENTERED WHEN A FATAL ERROR OCCURS DURING LOADING 00393000
  396. * 00394000
  397. * ENTRY CONDITIONS: 00395000
  398. * 00396000
  399. * DMSLDRB R1=PLIST, R14=RETURN ADDRESS, 00397000
  400. * SAVES REGISTERS 9-12 00398000
  401. * PLIST - CL8'LOAD' 00399000
  402. * CL8'FILENAME1' 00400000
  403. * . . . . 00401000
  404. * CL8'FILENAMEN' 00402000
  405. * CL8'(' 00403000
  406. * CL8'OPTIONS' 00404000
  407. * CL8'FFFFFFFF' 00405000
  408. * 00406000
  409. * OPTIONS - 00407000
  410. * CL8'CLEAR' 00408000
  411. * CL8'START' 00409000
  412. * CL8'RESET', CL8'ENTRY NAME' 00410000
  413. * CL8'INV' OR CL8'NOINV' 00411000
  414. * CL8'REP' OR CL8'NOREP' 00412000
  415. * CL8'MAP' OR CL8'NOMAP' 00413000
  416. * CL8'ORIGIN', CL8'HEX LOCATION'|'TRANS' 00414000
  417. * CL8'NOLIBE' OR CL8'LIBE' 00415000
  418. * CL8'NOAUTO' OR CL8'AUTO' 00416000
  419. * CL8'TYPE' OR CL8'NOTYPE' 00417000
  420. * 00418000
  421. * DMSLDRC - INVALID CARD IMAGE IS IN SPEC BUFFER 00419000
  422. * DMSLDRD R5 = ERROR CODE FOR DMSLIO 00420000
  423. * 00421000
  424. * EXIT CONDITIONS: 00422000
  425. * 00423000
  426. * NORMAL - RETURN ON R14, LOADING COMPLETE OR EXIT TO 00424000
  427. * DMSLDRA IF START OPTION SPECIFIED. 00425000
  428. * 00426000
  429. * ERROR - ERROR MESSAGE TYPED, RETURN TO CALLER. 00427000
  430. * 00428000
  431. * CALLS TO OTHER ROUTINES: 00429000
  432. * 00430000
  433. * DMSLSBA - FROM VARIOUS ROUTINES FOR HEX TO BINARY CONVERSION 00431000
  434. * DMSLSBC - FROM ICS ROUTINE TO DEFINE CSECT, FROM ESD 00432000
  435. * TYPE 1 TO DEFINE ENTRY 00433000
  436. * DMSLSY - FROM ESD PRIVATE CODE RTN. 00434000
  437. * DMSLGTB - TO SETUP TEMPORARY TXTLIB DICTIONARIES. 00435000
  438. * DMSLIO - FOR ERROR MESSAGES AND LOAD MAP PROCESSING 00436000
  439. * DMSLIB - TO SEARCH TEXT LIBRARIES FOR UNDEFINED ENTRY NAMES 00437000
  440. * DMSSLNDY - FROM ESD ROUTINE IF OS LINK OR LOAD WAS ISSUED 00438000
  441. * DMSSCN - FROM CTLCRD1 TO A TEXT FILE CARD 00439000
  442. * DMSSMNSB - TO INITIALIZE FREE STORAGE IF START. 00440000
  443. * DMSBRD - TO READ TEXT FILES AND TXTLIBS. 00441000
  444. * DMSFNS - TO CLOSE READING 00442000
  445. * DMSLSBB - FROM RLD ROUTINE TO ADD TO UNDEFINED STRINGS 00443000
  446. * DMSLSBD - TO PROCESS LOADER OPTIONS 00444000
  447. * DMSLGTA - TO FREE TXTLIB DIRECTIONS 00445000
  448. * DMSFREB - FOR FREE STORAGE 00446000
  449. * 00447000
  450. * REGISTER USAGE: 00448000
  451. * 00449000
  452. * R8,R9 BASE 00450000
  453. * R13 - LDRST 00451000
  454. * REST - WORK 00452000
  455. * 00453000
  456. * OPERATION: DMSLDRB 00454000
  457. * 00455000
  458. * 1. ACQUIRE AND INITIALIZE A WORK AREA (LDRST). 00456000
  459. * 00457000
  460. * 2. CALL DMSLIO TO SET UP LOADER I/O OPERATIONS. 00458000
  461. * 00459000
  462. * 3. IF TXTLIB DIRECTORIES ARE NOT IN FREE STORAGE, 00460000
  463. * CALL DMSLGTB TO BRING THEM IN. 00461000
  464. * 00462000
  465. * 4. CALL DMSLSBD TO PROCESS LOADER OPTION LIST. 00463000
  466. * 00464000
  467. * 5. PROCESS EACH TEXT FILE SEQUENTIALLY BY READING TEN 00465000
  468. * CARDS AT A TIME, THEN ANALYZING EACH OF THE CARDS 00466000
  469. * TO DETERMINE ITS TYPE. FOR EACH CARD, BRANCH TO 00467000
  470. * THE APPROPRIATE ROUTINE. 00468000
  471. * EACH ROUTINE WILL RETURN TO THIS READ 00469000
  472. * ROUTINE FOR THE NEXT CARD. 00470000
  473. * 00471000
  474. * 6. AT END-OF-FILE ON LAST TEXT FILE OR UPON FINDING 00472000
  475. * AN LDT CARD, BEGIN TXTLIB SEARCHING TO SATISFY ANY 00473000
  476. * UNDEFINED REFERENCES (DMSLIB). FOR EACH MATCH 00474000
  477. * DMSLIB WILL RETURN TO THE READ ROUTINE (IN STEP 5) 00475000
  478. * TO CONTINUE LOADING. 00476000
  479. * 00477000
  480. * 7. WHEN NO MORE MATCHES CAN BE MADE, SAVE SPECIFIED 00478000
  481. * STARTING ADDRESS, SAVE VALUE OF THE LOCATION 00479000
  482. * COUNTER, AND LIST ANY UNDEFINED ENTRIES AT THE 00480000
  483. * TERMINAL. 00481000
  484. * 00482000
  485. * 8. IF START EXECUTION WAS REQUESTED, BRANCH TO LDXEQ 00483000
  486. * IN DMSLDRA. IF NOT, CLOSE TXTLIBS AND FREE THE 00484000
  487. * WORK AREA. 00485000
  488. * 00486000
  489. * 9. RETURN TO DMSLOA. 00487000
  490. * 00488000
  491. * NOTE: ANY CHANGES MADE TO THIS MODULE SHOULD 00489000
  492. * ALSO BE CONSIDERED FOR DMSOLD. 00490000
  493. *. 00491000
  494. EJECT 00492000
  495. DMSLDRB EQU * 00493000
  496. BALR 12,0 00494000
  497. USING *,12 00495000
  498. LM R8,R9,BREG1 SET BASE REGS 00496000
  499. DROP R12 00497000
  500. LA 4,PERMIT SETUP TO TEST FOR PRINT CONTROL 00498000
  501. EJECT 00499000
  502. *********************************************************************** 00500000
  503. * 00501000
  504. * COMMON ROUTINE TO GET AND INITIALIZE THE LOADER 00502000
  505. * WORK AREA AND TO SET UP LOADER I/O 00503000
  506. * 00504000
  507. *********************************************************************** 00505000
  508. * 00506000
  509. INIT LR 2,1 SAVE ADDRESS OF PARAM LIST 00507000
  510. LR 3,14 AND ADDRESS OF RETURN LOCATION 00508000
  511. LR R11,0 save EPLIST pointer HRC309DS 00508200
  512. LA 0,NEED GET FREE STORAGE 00509000
  513. DMSFREE DWORDS=(0),TYPCALL=BALR 00510000
  514. DROP R13 00511000
  515. USING LDRST,R1 00512000
  516. ST R13,REG13SAV PROTECT LDRST REGISTER 00513000
  517. DROP R1 00514000
  518. USING LDRST,R13 00515000
  519. LR 13,1 SAVE ADDR. OF SAVE AREA IN REG. 00516000
  520. ST 3,RETREG SAVE RETURN 00517000
  521. LR R1,R2 @VA02828 00518000
  522. LA R2,8(0,R2) GET TO FILENAMES 00519000
  523. ST R2,PARMLIST 00520000
  524. SRL R1,24 RESTORE CALL CODE @VA02828 00521000
  525. STC R1,PARMLIST @VA02828 00522000
  526. STM R9,R12,GPRSAV 00523000
  527. CLI PARMLIST,X'01' was an EPLIST passed to us? HRC309DS 00523025
  528. BE EPTEST yes, proceed HRC309DS 00523050
  529. CLI PARMLIST,X'0B' was an EPLIST passed to us? HRC309DS 00523075
  530. BE EPTEST yes, proceed HRC309DS 00523100
  531. CLI PARMLIST,X'0D' was an EPLIST passed to us? HRC309DS 00523125
  532. BNE EPSKIP no, so never mind HRC309DS 00523150
  533. EPTEST EQU * HRC309DS 00523175
  534. ST R11,EPARMLST yes, save the EPLIST pointer HRC309DS 00523200
  535. * We need to adjust the EPLIST, since it currently has START HRC309DS 00523225
  536. * as the command name. So make EPLCMD point to EPLARGBG, scan HRC309DS 00523250
  537. * for the second argument, and have EPLARGBG point to it. HRC309DS 00523275
  538. USING EPLIST,R11 HRC309DS 00523300
  539. STM R4,R6,EPLSAVE save the registers we are using HRC309DS 00523325
  540. L R6,EPLARGBG start of arguments & scan start HRC309DS 00523350
  541. ST R6,EPLCMD new pointer to command HRC309DS 00523375
  542. L R5,EPLARGND end of arguments HRC309DS 00523400
  543. BCTR R5,0 decrement for BXLE HRC309DS 00523425
  544. LA R4,1 loop increment HRC309DS 00523450
  545. EPLOOP1 EQU * scan for blank after command HRC309DS 00523475
  546. CLI 0(R6),C' ' is it a space yet? HRC309DS 00523500
  547. BE EPLOOP2 found it HRC309DS 00523525
  548. BXLE R6,R4,EPLOOP1 keep looping if not HRC309DS 00523550
  549. B EPSETEM no arguments HRC309DS 00523575
  550. EPLOOP2 EQU * scan for start of arguments HRC309DS 00523600
  551. CLI 0(R6),C' ' is it a space yet? HRC309DS 00523625
  552. BNE EPSETEM found start of arguments HRC309DS 00523650
  553. BXLE R6,R4,EPLOOP2 keep looping if not HRC309DS 00523675
  554. EPSETEM EQU * HRC309DS 00523700
  555. ST R6,EPLARGBG store start of arguments HRC309DS 00523725
  556. LM R4,R6,EPLSAVE restore the registers HRC309DS 00523750
  557. DROP R11 HRC309DS 00523775
  558. EPSKIP EQU * HRC309DS 00523800
  559. MVC BRAD(4),STRTADDR MOVE IN STARTING ADDRESS 00524000
  560. MVC TBLREF(4),ALDRTBLS MOVE IN TOP OF LOADER TBL ADDR 00525000
  561. MVC TBLCT(2),TBENT MOVE IN NUMBER OF LOADER TABLE ENTRIES 00526000
  562. MVC LOCCT(4),LOCCNT MOVE IN LOCATION COUNTER 00527000
  563. XC MEMBOUND(4),MEMBOUND 00528000
  564. XC LDRADDR+4(4),LDRADDR+4 CLEAR ERROR LOCATION 00529000
  565. SR 5,5 GET ZERO 00530000
  566. ST 5,FLAGS CLEAR LIBRARY FLAGS 00531000
  567. STC R5,FLAG3 CLEAR ANOTHER FLAG AREA @VA01699 00532000
  568. XC ENTADR,ENTADR CLEAR 'ENTRY' CARD POINTER 00533000
  569. XC ESIDTB(256),ESIDTB CLEAR ESDID TABLE 00534000
  570. XC ESIDTB+256(256),ESIDTB+256 CLEAR ESID TABLE @VA02083 00535000
  571. XC ESIDTB+512(256),ESIDTB+512 CLEAR ESDID TABLE HRC006DS 00535300
  572. XC ESIDTB+768(256),ESIDTB+768 CLEAR ESID TABLE HRC006DS 00535600
  573. XC ESIDTB+512(256),ESIDTB+512 CLEAR ESDID TABLE 00535010
  574. XC ESIDTB+768(256),ESIDTB+768 CLEAR ESID TABLE 00535020
  575. MVC PRVCNT(2),PRHOLD INITIALIZE PR COUNT 00536000
  576. XC SYSUT1(4),SYSUT1 @V305032 00537000
  577. MVC FLAG1(2),LDRFLAGS MOVE IN FLAGS FROM NUCON 00538000
  578. CLI UNRES,X'80' UNRESOLVED BIT ON? @VA02829 00539000
  579. BNE AWAY NO, CONTINUE NORMALLY @VA02829 00540000
  580. OI FLAGS,LUNDEF FORCE SEARCH FOR UNRESOLVED @VA02829 00541000
  581. AWAY LA R5,LDRSET SET UP LOADER I/O @VA02829 00542000
  582. L R11,ALDRIO ADR OF DMSLIO 00543000
  583. LR R14,R4 SET RETURN REG 00544000
  584. BR R11 GO SET I/O 00545000
  585. BREG1 DC A(RELDR) V0304 00546000
  586. DC A(RELDR+4096) V0304 00547000
  587. EJECT 00548000
  588. *********************************************************************** 00549000
  589. * 00550000
  590. * READ IN TEXT LIBRARY DIRECTORIES, PROCESS USER OPTIONS 00551000
  591. * 00552000
  592. *********************************************************************** 00553000
  593. * 00554000
  594. PERMIT L R5,TXTDIRC GET TXTLIB ANCHOR 00555000
  595. LTR R5,R5 ARE TXTLIB DIRECTORIES IN STOR. 00556000
  596. BNZ INIT1 YES, CONTINUE 00557000
  597. STM R0,R15,APSV SAVE REGS 00558000
  598. L R15,=V(DMSLGTB) GO READ THEM IN 00559000
  599. BALR R14,R15 00560000
  600. OI OSSFLAGS,OSRESET INDICATE CLEAN UP NEEDED 00561000
  601. INIT1 EQU * 00562000
  602. SPACE 1 00563000
  603. STM R0,R15,APSV SAVE REGISTERS 00564000
  604. L R15,=V(DMSLSBD) GO PROCEES USER OPTIONS 00565000
  605. BALR R14,R15 00566000
  606. * WHEN A SYSTEM MODULE IN EITHER THE USER AREA OR THE TRANSIENT AREA 00566025
  607. * IS TO BE REPLACED, THE ASSOCIATED PROTECTION FLAG MUST BE RESET. 00566050
  608. CLC FREELOWE+1(3),LOCCT+1 LOADING ABOVE USER AREA? @VA12428 00566075
  609. BNH TSTRESET YES, DON'T RESET FLAG @VA12428 00566100
  610. CLC AUSRAREA+1(3),LOCCT+1 LOADING IN USER AREA? @VA11667 00566125
  611. BH NOTUSER NO, CHECK FOR TRANSIENT @VA12428 00566250
  612. NI PROTFLAG,X'FF'-PRFUSYS RESET SYSTEM FLAG @VA11667 00566375
  613. B TSTRESET CONTINUE @VA11667 00566500
  614. NOTUSER EQU * @VA12428 00566530
  615. LA R6,X'01E0' LOAD REGISTER FOR TEST @VA12428 00566560
  616. CLM R6,M2,LOCCT+1 ABOVE TRANSIENT AREA? @VA12428 00566590
  617. BE TSTRESET DON'T RESET FLAG @VA12428 00566620
  618. CLM R6,M1,LOCCT+2 IN LOW-CORE FREE STORAGE? @VA12428 00566650
  619. BH TSTRESET YES, CONTINUE @VA12428 00566680
  620. NI PROTFLAG,X'FF'-PRFTSYS RESET FLAG FOR TRANSIENT @VA11667 00566750
  621. TSTRESET EQU * @VA11667 00566875
  622. TM FLAGS,RESET WAS RESET 'ENTRY' SPECIFIED 00567000
  623. BNO RDSET NO 00568000
  624. NI FLAGS,255-RESET TEMPORARILY TURN OFF P3093 00569000
  625. BAL R6,CTLENT1 YES, SET ENTRY NAME IN LDR TBL 00570000
  626. OI FLAGS,RESET TURN BACK ON P3093 00571000
  627. EJECT 00572000
  628. *********************************************************************** 00573000
  629. * 00574000
  630. * INPUT READ ROUTINE 00575000
  631. * 00576000
  632. *********************************************************************** 00577000
  633. * 00578000
  634. RDSET MVC READBUF(44),RDISK SET PLIST TO READ CARDS 00579000
  635. MVC FINIS(26),FDISK IMAGES FROM DISK 00580000
  636. OI FLAG3,CMD PROCESSING COMMAND LINE @VA01699 00581000
  637. LA 3,SPEC 00582000
  638. B CHKLST GO READ IN FIRST PARAMETER @V305032 00583000
  639. ERRDBF LA 5,12 WAS ERROR END OF FILE 00584000
  640. CR 15,5 00585000
  641. BC 8,FINISH YES - GO CLOSE OUT FILE 00586000
  642. MVC OUTBUF(18),8(R1) MOVE NAME TO BUFFER 00587000
  643. LA R5,RDERR62 SET CODE FOR READ ERROR MSG 00588000
  644. B FATERR TERMINATE LOADING 00589000
  645. * FILE NOT FOUND. IF DLYD IS ON, IT MEANS A LIBE ONLY SEARCH. 00590000
  646. FINISH LA 1,FINIS CLOSE FILE 00591000
  647. L R15,AFINIS V0304 00592000
  648. BALR R14,R15 V0304 00593000
  649. CHKLST L R3,PARMLIST UPDATE PARAMETER LIST POINTER 00594000
  650. CLI 0(3),X'FF' IS THERE ANOTHER PARAMETER TR 00595000
  651. BE LIBGO GO TO LIBE SERCH IN LDT 00596000
  652. CLI 0(R3),C'(' END OF FNAMES @VA00857 00597000
  653. BE LIBGO YES @VA00857 00598000
  654. MVC READBUF+8(8),0(R3) GET NEXT FILE FROM DISK 00599000
  655. MVC FINIS+8(8),0(3) 00600000
  656. HALF8 LA R3,8(R3,R0) UPDATE PLIST POINTER 00601000
  657. ST R3,PARMLIST SAVE IT 00602000
  658. LA R1,READBUF CHECK FOR FILE 00603000
  659. L R15,ASTATE 00604000
  660. BALR R14,R15 00605000
  661. LA R3,SPEC RESTORE BUFFER ADDRESS 00606000
  662. ST R3,READBUF+28 00607000
  663. BZ NXTRD FOUND IT OK 00608000
  664. CH R15,=H'28' WAS IT FILE NOT FOUND 00609000
  665. BE NTFND YES 00610000
  666. ST R15,LDRADDR+4 SAVE STATE ERROR CODE @VA02822 00611000
  667. B N03 TERMINATE LOADING 00612000
  668. NXTRD LA 1,SPEC PTR TO BUFFER AREA 00613000
  669. ST 1,CRDPTR SAVE IT 00614000
  670. LA R1,READBUF READ 10 CARDS 00615000
  671. L R15,ARDBUF V0304 00616000
  672. BALR R14,R15 V0304 00617000
  673. BNZ ERRDBF BRANCH IF ERROR V0304 00618000
  674. B RDCONT PROCEED 00619000
  675. NTFND EQU * @V1D1705 00620000
  676. LA R1,READBUF+8 SET NAME OF LIBE ENTRY NEEDED 00621000
  677. LA 2,LIB4FND SET NOT FOUND ADDRESS 00622000
  678. BAL 3,SERCH1 SEARCH LOADER TABLE 00623000
  679. TM OSSFLAGS,DYLD DYNAMIC LOAD @V1D1705 00624000
  680. BNO CKUND CHECK COMMD LINE PROC @VA01699 00625000
  681. MVC BRAD+1(3),13(R12) SET ENTRY ADDRESS FOR DMSSL@V1D1705 00626000
  682. CKUND TM REFLG1(R12),REFUND IF TXTLIB GLOBALED BETWEEN @VA01699 00627000
  683. BZ CKLIB LOAD AND INCLUDE, MAY MISS @VA01699 00628000
  684. B SETUND SEARCHING FOR UNDEFINEDS. @VA01699 00629000
  685. LIB4FND EQU * 00630000
  686. OI 8(12),X'80' MAKE UNDEFINED, FORCE LIBE SEARCH 00631000
  687. SETUND OI FLAGS,LUNDEF AT LEAST 1 UNDEFINED @VA01699 00632000
  688. CKLIB TM FLAG3,CMD IF PROCESSING COMMAND LINE @VA01699 00633000
  689. BZ SKPOBLIG NAME, OVERRIDE LIBRARY @VA01699 00634000
  690. OI REFLG2(R12),REFCMD CARD 'NO SEARCH' OPTION @VA01699 00635000
  691. NI REFLG1(R12),X'FF'-REFLIB RESET 'LIBE-SUPPRESS' @VA01699 00636000
  692. SKPOBLIG DS 0H @VA01699 00637000
  693. B CHKLST PROCESS NEXT FILE 00638000
  694. RD L 1,CRDPTR GET CURRENT CARD PTR 00639000
  695. LA 1,80(0,1) ADVANCE PTR 00640000
  696. LA R3,SPEC GET END OF DATA READ @VA01419 00641000
  697. A R3,NUMBYTE BY ADDING BYTES READ @VA01419 00642000
  698. CR 1,3 END OF CARD BUFF REACHED? 00643000
  699. BL GO STILL SOME LEFT IN BUFFER @VA01419 00644000
  700. CLC NUMBYTE,SETBYTE ARE WE AT END OF BUFFER ? @VA01419 00645000
  701. BE NXTRD YES, READ SOME MORE @VA01419 00646000
  702. B FINISH ELSE ALL DONE @VA01419 00647000
  703. GO ST R1,CRDPTR SAVE NEW RECORD POINTER @VA01419 00648000
  704. MVC SPEC(80),0(1) MOVE NEW CARD INTO SPEC 00649000
  705. RDCONT SR 6,6 ZERO 6 00650000
  706. LA 11,1 REGISTER 11 ALWAYS SET TO 1 00651000
  707. L 1,SPEC 00652000
  708. EJECT 00653000
  709. * 00654000
  710. *********************************************************************** 00655000
  711. * 00656000
  712. * SET LOCATION COUNTER ROUTINE (SLC) 00657000
  713. * THIS ROUTINE HAS TWO ENTRIES 00658000
  714. * (1) AT THE BEGINNING WHEN RESUME FALLLS THRU 00659000
  715. * (2) ORG2- USED TO OBTAIN THE CURRENT ADDRESS OF A GIVEN 00660000
  716. * SYMBOLIC LOCATION. 00661000
  717. * THIS ROUTINE SETS THE LOCATION COUNTER TO THE SLC- 00662000
  718. * CARD SPECIFIED ADDRESS AND/OR OBTAINS THE CURRENT 00663000
  719. * ADDRESS OF A GIVEN SYMBOLIC LOC. FROM THE REFTBL TABLE. 00664000
  720. * NOTE THAT IF NO ABS LOC IS PUNCHED AND THE SYMBOLIC NAME 00665000
  721. * IS AS YET UNDEFINED, AN ERROR IS CREATED. 00666000
  722. * 00667000
  723. *********************************************************************** 00668000
  724. * 00669000
  725. C 1,SLC 00670000
  726. BC 7,C2AE1 00671000
  727. CLI SPEC+6,C' ' CMP ADDR FOR BLANKS 00672000
  728. BC 7,C2AD BR- ADDR IN CRD 00673000
  729. OI FLAGS,NOSLCADR NO ADDR, TURN ON SWITCH 00674000
  730. BC 15,C2A 00675000
  731. C2AD LA 4,6(0,0) CONVERT ADDR TO BINARY 00676000
  732. LA 5,SPEC+6 00677000
  733. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00678000
  734. BALR 0,1 BR TO HEXB ROUTINE 00679000
  735. LTR R2,R2 BAD CONVERSION? @VA02089 00680000
  736. BM BADCRD YES, BRANCH TO ERROR @VA02089 00681000
  737. LR 6,0 SAVE ADDR IN REGISTER 00682000
  738. C2A CLI SPEC+16,C' ' TEST IMAGE FOR NAME 00683000
  739. * SYMBOL IS LEFT ADJUSTED 00684000
  740. BC 7,C2AE3 BR- NAME IN CRD 00685000
  741. TM FLAGS,NOSLCADR CHECK FOR ADR IN CARD 00686000
  742. BO BADCRD PRINT INVALID CARD 00687000
  743. SR 0,0 00688000
  744. C2B NI FLAGS,255-NOSLCADR RESET SWITCH 00689000
  745. AR 6,0 ADD CONVERTED ADDR TO ORG2 00690000
  746. C2BNEWLC ST R6,LOCCT STORE UPDATED LOCATION COUNTER @VM03154 00691000
  747. B RD AND GO READ THE NEXT CARD-IMAGE. @VM03154 00692000
  748. C2AE3 LA 2,ERRSLC 00693000
  749. BAL 3,SERCH 00694000
  750. LA 14,C2B LINK AGE 00695000
  751. L R0,12(0,R12) GET ABSOLUTE ADDRESS 00696000
  752. BCR 15,14 00697000
  753. ERRSLC LH 3,TBLCT 00698000
  754. SR 3,11 00699000
  755. STH 3,TBLCT 00700000
  756. LA 5,ERRORU 00701000
  757. LA 14,RD 00702000
  758. MVC OUTBUF(8),0(12) MOVE NAME TO BUFF 00703000
  759. L 11,ALDRIO GET LINKAGE TO IO PACK 00704000
  760. BR 11 GO PRINT 00705000
  761. EJECT 00706000
  762. *********************************************************************** 00707000
  763. * 00708000
  764. * INCLUDE CONTROL SECTION 00709000
  765. * ROUTINE (ICS) 00710000
  766. * 00711000
  767. *********************************************************************** 00712000
  768. * 00713000
  769. C2AE1 C 1,ICS 00714000
  770. BC 7,C3AA1 BR NO 00715000
  771. CLI SPEC+24,C' ' TEST FOR HEX ADDR 00716000
  772. BE BADCRD INVALID CARD 00717000
  773. LA 4,4 00718000
  774. LA 5,SPEC+24 TO BINARY 00719000
  775. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00720000
  776. BALR 0,1 BR TO HEXB 00721000
  777. LTR R2,R2 BAD CONVERSION? @VA02089 00722000
  778. BM BADCRD YES, BRANCH TO ERROR @VA02089 00723000
  779. LR 6,0 SAVE LENGTH IN REG 00724000
  780. LA 14,RD LOAD LINKAGE TO BRANCH TO RD WH 00725000
  781. LA 3,SYMDEF IF NAME IN REFTBL, IS IT DEFINE 00726000
  782. BAL 2,SERCH 00727000
  783. SAVELNTH EQU * RETURN HERE FROM SEARCH IF NAME NOT FOUND @VA11353 00727100
  784. STCM R6,M7,REFADDR(R12) SAVE CS LENGTH IN REFTBL @VA11353 00727200
  785. CLI SPEC+15,COMMA REQUEST FOR NEW CSECT? @VA11353 00727300
  786. BE CSECTDEF YES, SET CSECT FLAG @VA11353 00727400
  787. OI REFLG2(R12),REFICS ICS CARD WAITING FOR MATCH @VA11353 00727500
  788. BR R14 READ NEXT RECORD @VA11353 00727600
  789. CSECTDEF EQU * @VA11353 00727700
  790. OI REFLG2(R12),REFCSD IDENTIFY CSECT ENTRY @VA11353 00727800
  791. * ENTERED C2AJ1 FROM ESD00 ROUTINE 00728000
  792. C2AJ1 L 1,LOCCT LOD PRESENT LOCATION 00729000
  793. LA 1,7(0,1) ALIGN TO DBL WRD BOUND 00730000
  794. N 1,DBLBND ... 00731000
  795. ST 1,LOCCT ... 00732000
  796. LR 7,14 TEST FOR UNDEFINED BIT 00733000
  797. L 5,AADDEF AND DEFINE IF NECESSARY 00734000
  798. BALR 14,5 00735000
  799. ST R1,12(0,R12) STORE VALUE OF LOCCT IN REFTBL 00736000
  800. AR 1,6 UPDATE LOCCT 00737000
  801. ST 1,LOCCT 00738000
  802. SR 5,5 IO INDEX FOR ENTRY PRINT 00739000
  803. ST R5,8(0,R12) CLEAR FLAG BYTE OF REFTBL 00740000
  804. L 11,ALDRIO GET LINKAGE 00741000
  805. BALR 14,11 GO PRINT NAME 'AT' LOC 00742000
  806. LR 14,7 00743000
  807. SR 6,6 00744000
  808. BCR 15,14 RETURNS TO RD OR C3AD4 (IN ESD 00745000
  809. SYMDEF EQU * NAME FOUND IN LOADER TABLE @VA11353 00745500
  810. CLI SPEC+15,COMMA NEW CSECT FOR INSERTION? @VA11353 00746000
  811. BE BADICS ERROR; MATCHING NAME IN TABLE @VA11353 00746500
  812. TM 8(R12),X'80' IS SYMBOL UNDEFINED? @VA11353 00747000
  813. BO SAVELNTH YES, FLAG ICS REQUEST @VA11353 00747500
  814. TM REFLG2(R12),REFICS IS ICS FOR SAME CSECT? @VA11353 00748000
  815. BO SAVELNTH GET UPDATED LENGTH @VA11353 00748500
  816. B BADICS NAME DEFINED; INVALID ICS CARD @VA11353 00749000
  817. EJECT 00750000
  818. *********************************************************************** 00751000
  819. * 00752000
  820. * DETERMINE IF ESD TYPE CARD 00753000
  821. * 00754000
  822. *********************************************************************** 00755000
  823. * 00756000
  824. C3AA1 C 1,ESD 00757000
  825. BC 7,C4AA1 NO- TEST FOR TXT CRD 00758000
  826. SPACE 1 00759000
  827. CA3A1 CLI SPEC+24,X'0A' WEAK EXTRN ? 00760000
  828. BE WEAKEXT YES 00761000
  829. NI SPEC+24,X'07' MASK ESD TYPE BYTE 00762000
  830. CLI SPEC+24,X'04' IS THIS A PC 00763000
  831. BE PC YES 00764000
  832. CA3A11 EQU * 00765000
  833. LH 12,SPEC+24 GET ESD NO 00766000
  834. SRL 12,8 (ISOLATE IT) JS 00767000
  835. AR 12,12 DOUBLE ESD NO. FOR JUMP-TBL, JS 00768000
  836. LH 12,ESDANAL(12) GET TBL ADDR FOR BRANCH 00769000
  837. LA R15,RELDR 00770000
  838. B 0(12,15) BRANCH TO APPROPRIATE ROUTINE 00771000
  839. EJECT 00772000
  840. *********************************************************************** 00773000
  841. * 00774000
  842. * ESD TYPE 1 ROUTINE (ENTRY) 00775000
  843. * 00776000
  844. *********************************************************************** 00777000
  845. * 00778000
  846. ENTESD SR R3,R3 CLEAR R3 00779000
  847. IC R3,SPEC+31 GET ID OF SECTION DEFINITION 00780000
  848. BAL 14,REFADR OBTAINS ADDR OF THE ENTRY IN RE 00781000
  849. LA R10,ESD00 SET PROCESS TO ESD00 00782000
  850. LATESD L R7,8(0,R12) LOAD RELOCATION FACTOR OF CSECT 00783000
  851. LA R7,0(0,R7) CLEAR FLAG BYTE 00784000
  852. STC 6,SPEC+24 (IF CSECT NOT DEFINED, BRANCH HERE) 00785000
  853. A 7,SPEC+24 FORM ENTRY POINT 00786000
  854. LA R7,0(0,R7) CLEAR HI BYTE P0966 00787000
  855. LA 2,C3AD1 NOT FOUND RETURN 00788000
  856. BAL 3,SERCH SEARCH FOR NAME IN REFTBL 00789000
  857. L R0,12(0,R12) LOAD ABSOLUTE ADDRESS 00790000
  858. TM 8(12),X'80' IS ENTRY DEFINED 00791000
  859. BC 1,C3AD2 NO - DEFINE IT 00792000
  860. TM FLAG1,NODUP IS MSG TO ISSUED ? @VM08875 00793000
  861. BO ESD1OK NO, BRANCH @VM08875 00794000
  862. MVC OUTBUF(8),0(12) MOVE NAME TO BUFF 00795000
  863. LA 5,ERRORM ERROR 202W 00796000
  864. L 11,ALDRIO GET LINKAGE 00797000
  865. BALR 14,11 GO PRINT MESS AND NAME 00798000
  866. ESD1OK BR R10 GO TO ESD00 OR SDDEF RTN @VM08875 00799000
  867. C3AD2 LR 1,7 LOAD REG 1 FROM 7 00800000
  868. L 5,AADDEF 00801000
  869. BALR 14,5 00802000
  870. ST R1,12(0,R12) UPDATE REFTBL, STORE ABS. ADDRESS 00803000
  871. BC 15,PRNT 00804000
  872. C3AD1 ST R7,12(0,R12) STORE ABS. ADDR. IN REFTBL 00805000
  873. PRNT SR 5,5 IO INDEX FOR ENTRY PRINT 00806000
  874. ST R5,8(0,R12) CLEAR FLAG BYTE OF REFTBL 00807000
  875. L 11,ALDRIO GET LINKAGE 00808000
  876. BALR 14,11 GO PRINT NAME 'AT' LOC 00809000
  877. BR R10 GO TO ESD00 OR SDDEF RTN 00810000
  878. EJECT 00811000
  879. *********************************************************************** 00812000
  880. * 00813000
  881. * ESD TYPE 0 + 4 ROUTINE (SEGMENT NAME + PRIVATE CODE) 00814000
  882. * 00815000
  883. *********************************************************************** 00816000
  884. * 00817000
  885. C3AA3 EQU * @V1D1705 00818000
  886. LR R11,R8 INSURE NON-ZERO R11 @VA04910 00819000
  887. TM FLAGS,ESD1ST IS FIRST ESDID SET YET? @VA04910 00820000
  888. BO C3AA3A BRANCH IF YES @VA04910 00821000
  889. SR R11,R11 INDICATE FIRST ESDID @VA04910 00822000
  890. C3AA3A EQU * @VA04910 00823000
  891. BAL R3,ESIDINC CHECK AND UPDATE ESDID NO. 00824000
  892. LA 2,C3AC3 NAME NOT IN TBL RETURN 00825000
  893. BAL 3,SERCH SEARCH FOR NAME IN REFTBL 00826000
  894. CLI SPEC+24,PCTYPE IS THIS PC CODE? @VA04910 00827000
  895. BNE CHKCOM BRANCH IF NOT @VA04910 00828000
  896. LTR R11,R11 WAS ESDID NUMBER UPDATED? @VA04910 00829000
  897. BNZ DECESID BRANCH IF YES @VA04910 00830000
  898. NI FLAGS,255-ESD1ST REMOVE ESD PROCESSED BIT @VA04910 00831000
  899. B PC GO TRY AGAIN @VA04910 00832000
  900. DECESID EQU * @VA04910 00833000
  901. LH R2,SPEC+14 GET ESDID NUMBER @VA04910 00834000
  902. BCTR R2,0 DECREMENT BY ONE @VA04910 00835000
  903. STH R2,SPEC+14 AND SAVE IT(KEEP ORIG.NO.) @VA04910 00836000
  904. B PC GET ANOTHER NUMBER @VA04910 00837000
  905. CHKCOM EQU * @VA04910 00838000
  906. CLI 8(12),X'82' WAS THIS NAME DEFINED AS COMMON @VA09317 00839000
  907. BE COMFIX2 YES IT WAS @VA09317 00840000
  908. TM REFLG2(R12),REFICS UNMATCHED ICS ENTRY? @VA11353 00840060
  909. BZ TSTUNDEF OTHERWISE UNDEFINED OR DUPLICATE @VA11353 00840120
  910. NI REFLG2(R12),255-REFICS RESET UNMATCHED FLAG @VA11353 00840180
  911. CLC SPEC+28(4),BLANKS LENGTH FIELD IN END CARD? @VA11353 00840240
  912. BE BADICS CANNOT HANDLE ICS REQUEST @VA11353 00840300
  913. ICM R6,M7,REFADDR(R12) LOAD NEW LENGTH FOR CSECT @VA11353 00840360
  914. MVC REFADDR(3,R12),ZEROES CLEAR REFTBL FIELD @VA11353 00840420
  915. LA R14,C3AD4 SET LINKAGE @VA11353 00840480
  916. B CSECTDEF GO TO DEFINITION ROUTINE @VA11353 00840540
  917. BADICS EQU * @VA11353 00840600
  918. LA R14,N03 SET RETURN ADDRESS FOR LIO @VA11353 00840660
  919. LA R5,ERRORB SET ERROR FUNCTION FOR LIO @VA11353 00840720
  920. L R11,ALDRIO TYPE MESSAGE, SET RETURN CODE, @VA11353 00840780
  921. BR R11 AND EXIT @VA11353 00840840
  922. TSTUNDEF EQU * @VA11353 00840900
  923. TM 8(12),X'80' IS ENTRY DEFINED 00841000
  924. BC 7,C3AC3 NO - GET STARTING LOCATION 00842000
  925. TM FLAG1,NODUP IS MSG TO BE ISSUED ? @VM08875 00843000
  926. BO DUPCST NO-NO MSG SET REL-FACT @VA07537 00844100
  927. LA 5,ERRORM ERROR 202W 00845000
  928. MVC OUTBUF(8),0(12) MOVE NAME TO BUFF 00846000
  929. L 11,ALDRIO GET LINKAGE 00847000
  930. BALR 14,11 GO PRINT MESSAGE AND NAME 00848000
  931. DUPCST EQU * @VA07537 00848200
  932. L R2,C12(R12) LOAD ABSOLUTE ADDRESS @VA07537 00848250
  933. SR R5,R5 CLEAR R5 @VA07537 00848300
  934. ICM R5,C7,SPEC+C25 GET ASSEMBLED ADDRESS @VA07537 00848350
  935. CR R2,R5 IS NEG RELOC. NECESSARY @VA07537 00848400
  936. BL NEGREL YES-GO DO IT @VA07537 00848450
  937. SR R2,R5 CALC. RELOC. FACTOR @VA07537 00848500
  938. B SAVEREL GO SAVE REL-FACT @VA07537 00848550
  939. NEGREL EQU * @VA07537 00848600
  940. SR R5,R2 CALC. DIFF @VA07537 00848650
  941. LCR R2,R5 LOAD NEG RELOC FACTOR @VA07537 00848700
  942. OI C16(R12),NGREL INDICATE NEG REL-FACT @VA07537 00848750
  943. SAVEREL EQU * @VA07537 00848800
  944. STCM R2,C7,C9(R12) STORE REL-FACT @VA07537 00848850
  945. ESD0OK LH R2,SPEC+14 GET ESID TABLE POSITION @VM08875 00849000
  946. AR R2,R2 TIMES TWO 00850000
  947. O R4,ESIDDUPF SET DUPLICATE SD FLAG 00851000
  948. O R4,ESIDSDF SET SD FLAG, TOO @VA05573 00852000
  949. STH 4,ESIDTB(2) STORE POINTER IN ESID TABLE 00853000
  950. B ESD00 GET NEXT CARD 00854000
  951. C3AD4 L R0,12(0,R12) GET ABS. ADDR. TO COMPUTE REL. FACTOR 00855000
  952. LH 2,SPEC+14 LOD ESID 00856000
  953. AR R2,R2 TIMES TWO 00857000
  954. SR R5,R5 CLEAR R5 00858000
  955. IC R5,ESIDTB(R2) SAVE FLAG FIELD 00859000
  956. SRL R5,4 ISOLATE 4 FLAG BITS V0308 00860000
  957. SLL R5,12 V0308 00861000
  958. OR R4,R5 00862000
  959. O R4,ESIDSDF SET SD FLAG 00863000
  960. STH 4,ESIDTB(2) PUT INDEX IN ESID TABLE 00864000
  961. STC 6,SPEC+24 LOD ASSEMBLED ADDR 00865000
  962. L 2,SPEC+24 00866000
  963. CR 0,2 00867000
  964. BC 5,COMP BR- ORG2 LESS THAN ADDR 00868000
  965. SR 0,2 00869000
  966. RELF STCM R0,B'0111',9(R12) SAVE RELOCATION FACTOR P0966 00870000
  967. LH R2,SPEC+14 GET ESID OF SD 00871000
  968. AR R2,R2 DOUBLE FOR ESIDTB INDEX 00872000
  969. LA R5,ESIDTB(R2) POINT TO ID TABLE ENTRY 00873000
  970. TM 0(R5),ESIDLATE ANY WAITING LD'S 00874000
  971. BO SDDEF YES, RESOLVE THEM 00875000
  972. BC 15,ESD00 READ ANOTHER CARD 00876000
  973. COMP SR 2,0 ADDRESS MINUS ORIGIN 00877000
  974. LCR 0,2 COMPLEMENT (TWOS) 00878000
  975. OI REFLG2(R12),REFNEG NEGATIVE RELOCATION FACTOR @VA11353 00879000
  976. BC 15,RELF 00880000
  977. C3AC3 EQU * @VA11353 00880600
  978. OI REFLG2(R12),REFCSD INDICATE CSECT @VA11353 00881200
  979. STC 6,SPEC+28 RETURNED HERE FOR NAME NOT FND 00882000
  980. L 6,SPEC+28 LOD SEGMENT LENGTH 00883000
  981. LA 14,C3AD4 00884000
  982. BC 15,C2AJ1 CK ADDR 00885000
  983. SPACE 4 00886000
  984. ESIDINC LH R2,SPEC+14 GET ESDID NUMBER 00887000
  985. TM FLAGS,ESD1ST IS THIS 1ST ESDID ON CARD 00890000
  986. BZ FSTESD YES, DON'T INCREMENT 00891000
  987. LA 2,1(0,2) ADD 1 00892000
  988. STH 2,SPEC+14 INSERT AS NEW ESID NO 00893000
  989. FSTESD OI FLAGS,ESD1ST INDICATE FIRST ESD PROCESSED THIS CARD 00894000
  990. CH R2,HW511 COMPARE WITH 511 HRC006DS 00894490
  991. BH ESDTBOVR ERROR IF GT 511 HRC006DS 00894680
  992. BR 3 RETURN TO CALLER 00895000
  993. COMFIX2 MVI 8(12),X'80' CHANGE IT TO REAL CSECT 00896000
  994. L 6,8(,12) GET LENGHTH UP UNTIL NOW 00897000
  995. LA 6,0(,6) CLEAR HIGH ORDER BYTE 00898000
  996. MVI SPEC+28,0 00899000
  997. C 6,SPEC+28 WAS PREV LENGTH GTR THAN CSECT 00900000
  998. BNL COMFIX3 BR YES 00901000
  999. L 6,SPEC+28 NO USE THIS LENGTH 00902000
  1000. COMFIX3 ST 6,SPEC+28 00903000
  1001. LA 14,C3AD4 GO TO ICS 00904000
  1002. BC 15,C2AJ1 00905000
  1003. ESDTBOVR LA R5,ESDOVER 00906000
  1004. B FATERR TERMINATE 00907000
  1005. EJECT 00908000
  1006. *********************************************************************** 00909000
  1007. * 00910000
  1008. * ESD TYPE 2 ROUTINE (EXTRN) 00911000
  1009. * THIS ROUTINE HAS TWO ENTRY POINTS. LOC C3AH1 AND LOC ESD00 00912000
  1010. * LOCATION C3AH1 IS ENTERED FROM THE ESD CARD ANALYSIS ROUTINE 00913000
  1011. * LOCATION ESD00 IS ENTERED FROM... 00914000
  1012. * 1. THE ESD CARD ANALYSIS ROUTINE WHEN THE CARD BEING 00915000
  1013. * PROCESSED IS A TYPE 1OR 2 , AND AN ABS LOAD IS INDICATED 00916000
  1014. * 2. THE ESD TYPE 0 ROUTINE AND TYPE 1 ENTER AS THE LAST 00917000
  1015. * STEP OF THESE ROUTINES 00918000
  1016. *********************************************************************** 00919000
  1017. * 00920000
  1018. C3AH1 BAL 3,ESIDINC GO CHECK + UPDATE ESID NO 00921000
  1019. LA R2,C3AH2 NOT FOUND RETURN 00922000
  1020. BAL R3,SERCH LOOK FOR NAME IN REFTBL 00923000
  1021. CLI 8(R12),X'83' WEAK EXTRN REFERENCE P3093 00924000
  1022. BNE COM01 NO P3093 00925000
  1023. L R2,12(,R12) GET RELOCATION FACTOR @VM08899 00926000
  1024. ST R2,TEMPST SAVE FOR A WHILE @VM08899 00927000
  1025. XC 0(20,R12),0(R12) ZERO OUT WXTRN ENTRY @VM08899 00928000
  1026. BAL R2,SERCH GO PROMOTE ENTRY IN LDRTBLS @VM08899 00929000
  1027. L R2,TEMPST GET RELOCATION FACTOR @VM08899 00930000
  1028. ST R2,12(,R12) STORE IN NEW LOCATION @VM08899 00931000
  1029. OI 8(R12),X'80' TURN UNDEFINED BIT ON @VM08899 00932000
  1030. OI FLAGS,LUNDEF SHOW UNDEF TO LIBE @VM08899 00933000
  1031. COM01 LH R2,SPEC+14 GET ESID NUMBER 00934000
  1032. SLL 2,1 TIMES TWO 00935000
  1033. STH 4,ESIDTB(2) PUT INDEX IN ESID TABLE 00936000
  1034. ESD00 LA 2,16 TEST FOR MULTIPLE ENTRIES IN CA 00937000
  1035. LH 1,SPEC+10 00938000
  1036. SR 1,2 00939000
  1037. BC 3,C3AH5 00940000
  1038. NI FLAGS,255-ESD1ST RESET FIRST ESD FLAG 00941000
  1039. B RD NEXT CARD @V1D1705 00942000
  1040. C3AH5 MVC SPEC+16(32),SPEC+32 00943000
  1041. STH 1,SPEC+10 00944000
  1042. BC 15,CA3A1 00945000
  1043. C3AH2 OI 8(12),X'80' PLACE UNDEFINED BIT ON 00946000
  1044. OI FLAGS,LUNDEF SHOW UNDEFS TO LIBE 00947000
  1045. SR 3,3 CLEAR REGISTER 3 00948000
  1046. ST 3,12(,12) STORE ZERO IN RELOCATION FACTOR 00949000
  1047. B COM01 FINISH 00950000
  1048. EJECT 00951000
  1049. ********************************************************************** 00952000
  1050. * 00953000
  1051. * ESD TYPE A (WEAK EXTRN) 00954000
  1052. * 00955000
  1053. ********************************************************************** 00956000
  1054. SPACE 00957000
  1055. WEAKEXT BAL R3,ESIDINC CHECK ESID 00958000
  1056. LA R2,WEAKEXT1 NOT FOUND RETURN 00959000
  1057. BAL R3,SERCH LOOK FOR NAME IN REFTBL 00960000
  1058. B COM01 FINISH 00961000
  1059. WEAKEXT1 OI 8(R12),WKEXT INDICATE WEAK EXTRN 00962000
  1060. B C3AH2 FINISH 00963000
  1061. SPACE 3 00964000
  1062. *********************************************************************** 00965000
  1063. * 00966000
  1064. * ESD 5 + 6 ROUTINE (COMMON + PSEUDO REGISTER ) 00967000
  1065. * 00968000
  1066. *********************************************************************** 00969000
  1067. SPACE 1 00970000
  1068. COMESD BAL 3,ESIDINC GO CHECK + UPDATE ESID NO 00971000
  1069. LA 2,COM03 00972000
  1070. BAL 3,SERCH 00973000
  1071. TM REFLG2(R12),REFICS ICS FLAG SET ON? @VA11353 00973300
  1072. BO BADICS INVALID MATCH @VA11353 00973600
  1073. TM 8(12),X'80' 00974000
  1074. BZ COM01 00975000
  1075. CLI 8(R12),X'82' PREVIOUSLY DEFINED AS COMMON @V201005 00976000
  1076. BNER R2 TO 'COM04' - SKIP LENGTH CK @VA01759 00977000
  1077. CLC 9(3,12),SPEC+29 GET LONGEST COMMON 00978000
  1078. BNL COM04 KEEP OLD LENGTH 00979000
  1079. COM03 MVC 9(3,12),SPEC+29 MOVE CURRENT LENGTH 00980000
  1080. COM04 MVI 8(R12),X'82' DEFINE AS COMMON @V201005 00981000
  1081. OI FLAG1,COMMONEX INDICATE COMMON EXISTS 00982000
  1082. B COM01 TR 00983000
  1083. EJECT 00984000
  1084. * HANDLE PR (PSEDUO-REGISTER) 00985000
  1085. PRVESD BAL R3,ESIDINC CHECK AND UPDATE ESID NUMBER @V1D1705 00986000
  1086. CLI SPEC+28,C' ' BLANK ALIGNMENT FACTOR @V201005 00987000
  1087. BNE NONBLANK NO @V201005 00988000
  1088. MVI SPEC+28,X'03' REPLACE WITH WORD ALIGN @V201005 00989000
  1089. NONBLANK LA R2,DEFENTRY IN CASE NOT FOUND @V201005 00990000
  1090. BAL 3,PRSERCH LOOK FOR ENTRY IN REFTBL 00991000
  1091. TM REFLG2(R12),REFICS ICS FLAG SET ON? @VA11353 00991300
  1092. BO BADICS INVALID MATCH @VA11353 00991600
  1093. LH 2,SPEC+14 GET ESDID NO. 00992000
  1094. SLL 2,1 TIMES TWO 00993000
  1095. STH 4,ESIDTB(2) PUT INDEX IN ESID TABLE 00994000
  1096. CLC 9(3,12),SPEC+29 OLD LENGTH GREATER THAN NEW 00995000
  1097. BNL ALTST YES, CHECK ALIGNMENT 00996000
  1098. MVC 9(3,12),SPEC+29 NO, KEEP GREATER LENGTH 00997000
  1099. ALTST TR SPEC+28(1),PRTRAN ENCODE ALIGNMENT BYTE @V201005 00998000
  1100. CLC 8(1,12),SPEC+28 IS NEW AL MORE RESTRICTIVE 00999000
  1101. BNL ESD00 NO, LOOK FOR MORE ESD'S 01000000
  1102. LA 5,PRERR GET MESS # FOR PR ERR 01001000
  1103. L 11,ALDRIO GO PRINT MESS 01002000
  1104. BALR 14,11 ... 01003000
  1105. B ESD00 BACK FOR MORE ESD'S 01004000
  1106. DEFENTRY LH 2,SPEC+14 GET ESDID NO 01005000
  1107. SLL 2,1 TIMES TWO 01006000
  1108. STH 4,ESIDTB(2) PUT INDEX IN ESID TABLE 01007000
  1109. MVC 8(4,12),SPEC+28 PUT LENGTH AND ALIGN IN ENTRY 01008000
  1110. OI FLAG1,PREXIST INDICATE PR EXISTS 01009000
  1111. SR 2,2 GET A ZERO 01010000
  1112. IC 2,SPEC+28 GET FLAG BYTE 01011000
  1113. LCR 4,2 AND ITS COMPLEMENT 01012000
  1114. BCTR 4,0 ... 01013000
  1115. AH R2,PRVCNT ALIGN PR DISPLACEMENT 01014000
  1116. NR 2,4 ... 01015000
  1117. ST 2,12(0,12) STORE IN REFTBL 01016000
  1118. AH 2,10(0,12) ADD LENGTH 01017000
  1119. STH R2,PRVCNT AND STORE AS NEW COUNT 01018000
  1120. TR 8(1,12),PRTRAN CODE ALIGN BYTE 01019000
  1121. B ESD00 BACK FOR MORE ESD'S 01020000
  1122. EJECT 01021000
  1123. ****************************************************************** 01022000
  1124. * 01023000
  1125. * ESD 04 PRIVATE CODE 01024000
  1126. * 01025000
  1127. ****************************************************************** 01026000
  1128. * 01027000
  1129. PC EQU * @V1D1705 01028000
  1130. L R15,=V(DMSLSY) CREATE A UNIQUE SYMBOL 01029000
  1131. BALR R14,R15 01030000
  1132. MVC SPEC+16(8),NXTSYM MOVE SYMBOL TO ESD NAME FIELD 01031000
  1133. MVI SPEC+16,C'.' 01032000
  1134. B CA3A11 01033000
  1135. EJECT 01034000
  1136. *********************************************************************** 01035000
  1137. * 01036000
  1138. * TEXT CARD ROUTINE (TXT) 01037000
  1139. * 01038000
  1140. *********************************************************************** 01039000
  1141. * 01040000
  1142. C4AA1 C 1,TXT 01041000
  1143. BC 7,C4AA3 BR- NOT TEXT CRD 01042000
  1144. STC 6,SPEC+4 01043000
  1145. LH 7,SPEC+10 NUM OF BYTES 01044000
  1146. LTR 7,7 01045000
  1147. BC 8,RD ZERO COUNT - DON'T NOVE ANY DAT 01046000
  1148. LA R15,C4AK2+2 LINKAGE 01047000
  1149. REPENT LH R3,SPEC+14 GET ESDID TO FIND ADDRESS @V1D1705 01048000
  1150. LTR R3,R3 IS ESD ID VALID? @VA09103 01048300
  1151. BNP BADCRD NO, THROW IT OUT @VA09103 01048600
  1152. SLL 3,1 CHECK ESID TABLE 01049000
  1153. LH 12,ESIDTB(3) ... 01050000
  1154. LTR 12,12 IS IT NEGATIVE ENTRY (ALREADY LOADED) 01051000
  1155. BM RD YES, SKIP IT 01052000
  1156. SRL 3,1 NO, RESET CONDITIONS AND CONTINUE 01053000
  1157. BAL 14,REFADR 01054000
  1158. L R10,8(0,R12) LOAD RELOCATION FACTOR 01055000
  1159. C4AC2 A 10,SPEC+4 ADD ADDR TO RELFAC 01056000
  1160. LA R10,0(0,R10) CLEAR HI BYTE P0966 01057000
  1161. ST 10,SPEC+4 01058000
  1162. LR 1,10 01059000
  1163. AR 1,7 01060000
  1164. LA R5,ERRORC ERROR 709S 01061000
  1165. TM BATFLAGS,BATLOAD BATCH BEING LOADED? V0742 01062000
  1166. BO C4AJ2 YES: ALLOW FREE STORAGE LOAD V0742 01063000
  1167. TM MODFLGS,SYSLOAD SYSTEM LOAD ? @VA04666 01064000
  1168. BO C4AJ2 YES, ALLOW FREE STORAGE LOAD @VA04666 01065000
  1169. TM OSSFLAGS,DYLD OS TYPE LOAD ? @V1D1705 01066000
  1170. BNO NONDYNA BR IF NOT @V1D1705 01067000
  1171. C R1,DYNAEND CHECK AGAINST GETMAINED AREA @V1D1705 01068000
  1172. BC 11,FATERR ERROR IF TOO HIGH @V1D1705 01069000
  1173. B NONDY2 @V1D1705 01070000
  1174. NONDYNA EQU * @V1D1705 01071000
  1175. C R1,FREELOWE WOULD WE OVERLAY FREE STOR 01072000
  1176. BL NONDY2 BRANCH IF NOT @V305665 01073000
  1177. CLC AOSMODL(4),ZEROES OS SIM MODULE PRESENT? @VA11353 01074000
  1178. BE FATERR NO,THEN ERROR @VA05525 01075000
  1179. C R1,AOSMODL POSSIBLY IN MODULE AREA? @V305665 01076000
  1180. BL FATERR ERROR IF NOT @V305665 01077000
  1181. L R0,VMSIZE GET MACHINE SIZE @V305665 01078000
  1182. SR R14,R14 CLEAR REGISTER @V305665 01079000
  1183. IC R14,ALDRTBLS GET NUMBER OF LDT PAGES @V305665 01080000
  1184. SLL R14,12 GET SIZE OF LOADER PAGES @V305665 01081000
  1185. SR R0,R14 DETERMINE USABLE SIZE @V305665 01082000
  1186. CR R1,R0 STILL IN MODULE AREA? @V305665 01083000
  1187. BH FATERR BRANCH IF NOT @V305665 01084000
  1188. NONDY2 EQU * @V1D1705 01085000
  1189. C R10,AUSRAREA ARE WE BELOW USER STOR ? 01086000
  1190. BNL C4AJ2 BNL IF NO PROBLEM. JS 01087000
  1191. C R1,=V(TRANSEND) ABOVE TRANS AREA ? 01088000
  1192. BH FATERR YES, OVERLAY ERROR @VA02752 01089000
  1193. C R10,=V(TRANSAR) BELOW TRANS AREA ? 01090000
  1194. BL FATERR YES, OVERLAY ERROR 01091000
  1195. C4AJ2 TM FLAG1,FSTXTADR HAS 1ST TEXT ADDRESS BEEN SAVED ? 01092000
  1196. BO C4AK2 YES DON'T SAVE 01093000
  1197. OI FLAG1,FSTXTADR INDICATE TEXT ADR SAVED 01094000
  1198. ST 10,BRAD SAVE FIRST ADDR LOADED INTO 01095000
  1199. C4AK2 BCR 15,R15 LINKAGE 01096000
  1200. SR 7,11 SUB ONE FROM NUM OF BYTES 01097000
  1201. EX 7,CHAR MOVE TEXT TO STORAGE 01098000
  1202. BC 15,RD AND GO READ A CARD 01099000
  1203. * 01100000
  1204. CHAR MVC 0(1,10),SPEC+16 01101000
  1205. EJECT 01102000
  1206. *********************************************************************** 01103000
  1207. * 01104000
  1208. * REPLACE CARD ROUTINE (REP) 01105000
  1209. * 01106000
  1210. *********************************************************************** 01107000
  1211. * 01108000
  1212. C4AA3 C 1,REP 01109000
  1213. BC 7,C5AA1 BR- NOT REPLACE CARD 01110000
  1214. TM FLAG2,NOREP IS REP CARD PRINTING SUPPRESSED 01111000
  1215. BC 1,C4AA4 YES 01112000
  1216. LA 5,CRDIMJ GO PRINT OUT REP CARD IMAGE 01113000
  1217. MVC OUTBUF(79),SPEC+1 MOVE CRD IMAJE TO BUFF 01114000
  1218. L 11,ALDRIO GET LINKAGE 01115000
  1219. BALR 14,11 GO PRINT REP CARD 01116000
  1220. C4AA4 LA 4,6 CONVERT REP CRD HEX ADDR TO BIN 01117000
  1221. LA 5,SPEC+6 01118000
  1222. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 01119000
  1223. BALR 0,1 BR TO HEXB 01120000
  1224. LTR R2,R2 BAD CONVERSION? @VA02089 01121000
  1225. BM BADCRD YES, BRANCH TO ERROR @VA02089 01122000
  1226. ST 0,SPEC+4 SAVE ADDR IN CARD IMAGE 01123000
  1227. LA 4,2(0,0) 01124000
  1228. LA 5,SPEC+14 CONVERT REP ESID TO BIN 01125000
  1229. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 01126000
  1230. BALR 0,1 BR TO HEXB 01127000
  1231. STH 0,SPEC+14 SAVE THE ESID IN CARD IMAGE 01128000
  1232. LA 5,SPEC+16 01129000
  1233. NUM LA 7,2 NUM OF BYTES 01130000
  1234. ST 5,TMPLOC 01131000
  1235. TM FLAG2,APRILB 01132000
  1236. BC 1,APR10 01133000
  1237. BAL R15,REPENT CK ADDR 01134000
  1238. APRIL LA 4,4 CONVERT HALF WORD OF CORRECTION 01135000
  1239. L 5,TMPLOC 01136000
  1240. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 01137000
  1241. BALR 0,1 BR TO HEXB 01138000
  1242. L R1,SPEC+4 LOD REPLACE ADDR 01139000
  1243. STH 0,0(0,R1) PLACE CORRECTION IN STORAGE 01140000
  1244. NI FLAG2,255-APRILB 01141000
  1245. CLI 0(5),C',' 01142000
  1246. BC 7,RD 01143000
  1247. OI FLAG2,APRILB 01144000
  1248. LA R1,2(R1,0) 01145000
  1249. ST R1,SPEC+4 SAVE REPLACE ADDR 01146000
  1250. AR 5,11 01147000
  1251. BC 15,NUM 01148000
  1252. APR10 LA R15,APRIL 01149000
  1253. SR R10,R10 ZERO RELOCATION FACTOR @V1D1705 01150000
  1254. B C4AC2 @V1D1705 01151000
  1255. EJECT 01152000
  1256. *********************************************************************** 01153000
  1257. * 01154000
  1258. * RELOCATION DICTIONARY CARD (RLD) 01155000
  1259. * REG 6= 0 UPON ENTRY INTO C5AA1 01156000
  1260. * 01157000
  1261. *********************************************************************** 01158000
  1262. SPACE 1 01159000
  1263. C5AA1 C 1,RLD IS IT RLD 01160000
  1264. BNE C6AA1 NO,TEST FOR END 01161000
  1265. * THE FIRST WORD OF WHAT USED TO BE THE RDBUF/WRBUF 01162000
  1266. * PLIST IS USED AS A POINTER TO THE HEAD OF A RLD CARD 01163000
  1267. * INCORE CHAIN. RLD CARDS ARE ADDED AT THE HEAD OF THE 01164000
  1268. * CHAIN SINCE THEY DO NOT DEPEND ON BEING PERFORMED IN 01165000
  1269. * ANY PARTICULAR ORDER, AND THE END OF THE CHAIN IS 01166000
  1270. * MARKED WITH A ZERO. THE FIRST FOUR BYTES OF THE 80 01167000
  1271. * BYTES GOTTEN FROM FREE STORAGE IS USED AS A CHAIN. 01168000
  1272. SPACE 2 01169000
  1273. DMSFREE DWORDS=10,TYPCALL=BALR @V305032 01170000
  1274. MVC 4(76,R1),SPEC+4 MOVE LAST 76 COLS OF RLD TO @V305032 01171000
  1275. L R0,SYSUT1 FREE STORAGE & CHAIN TOGETHER @V305032 01172000
  1276. ST R0,0(,R1) OLD HEAD IS SECOND @V305032 01173000
  1277. ST R1,SYSUT1 NEW BLOCK IS HEAD @V305032 01174000
  1278. B RD PROCESS NEXT CARD 01175000
  1279. SPACE 2 01176000
  1280. PASSTWO EQU * @V305032 01177000
  1281. SR R6,R6 GET A ZERO @V305032 01178000
  1282. NXTRLDCD EQU * @V305032 01179000
  1283. L R1,SYSUT1 SEE IF ANY RLD CARDS @V305032 01180000
  1284. LTR R1,R1 ZERO IF NONE @V305032 01181000
  1285. BZ C6AB6 BRANCH IF NOT @V305032 01182000
  1286. MVC SPEC+4(76),4(R1) MOVE RLD CARD TO WORK AREA @V305032 01183000
  1287. L R10,0(,R1) POINT TO NEXT RLD CARD @V305032 01184000
  1288. DMSFRET DWORDS=10,LOC=(1),TYPCALL=BALR @V305032 01185000
  1289. ST R10,SYSUT1 STORE POINTER TO NEXT CARD @V305032 01186000
  1290. LA 10,SPEC+16 ADDRESS OF DATA FIELD IN 10 01187000
  1291. C5AC1 EQU * @VA10086 01187300
  1292. ST R6,SAV67 INDICATE ESID POINTER NOT SAVED @VA10086 01187600
  1293. LR R6,R10 POINT TO CURRENT DATA FIELD @VA10086 01187900
  1294. LR R11,R10 SAVE PTR TO CURRENT DATA FIELD @VA11838 01188050
  1295. C5AC1A EQU * @VA10086 01188200
  1296. LH R3,0(0,R6) GET RH ESID @VA10086 01188500
  1297. N R3,=X'00007FFF' MASK ID FIELD 01189000
  1298. LTR 3,3 IS IT 0 01190000
  1299. BZ CXDTST YES, CHECK FOR PR CUM LENGTH 01191000
  1300. CXDRET BAL 14,REFADR GET ADDR OF ENTRY IN REFTBLE 01192000
  1301. ST 12,TEMPST SAVE ADDRESS 01193000
  1302. C R12,TBLREF IS THE ADDRESS INVALID @VA06291 01194000
  1303. BE BADRLD YES WE'RE POINTING AT STOR END @VA06291 01195000
  1304. SR R0,R0 GET A ZERO @V201005 01196000
  1305. TM 8(R12),X'80' IS NAME DEFINED @V201005 01197000
  1306. BO PLOAD1 NO @V201005 01198000
  1307. L R0,12(R12) GET NAME'S ADDRESS @V201005 01199000
  1308. TM 4(R10),X'30' NON BRANCH ADCON @V201005 01200000
  1309. BNZ PLOAD1 NO @V201005 01201000
  1310. LH R3,0(0,R6) TEST IF SD ESIDTB @VA10086 01202000
  1311. N R3,=X'00007FFF' MASK ID FIELD @VM08509 01203000
  1312. AR R3,R3 MULT. BY TWO @VM08509 01204000
  1313. LA R3,ESIDTB(R3) GET ADDR OF ESIDTB ENTRY @VM08509 01205000
  1314. TM 0(R3),ESIDSDFB TEST ESID SD BIT @VM08509 01206000
  1315. BNO PLOAD1 NO @V201005 01207000
  1316. L R0,8(R12) YES, USE RELOCATION FACTOR @V201005 01208000
  1317. TM REFLG2(R12),REFNEG NEGATIVE RELOCATION FACTOR? @VA11353 01209000
  1318. BNO PLOAD1 NO @V1D1705 01210000
  1319. ICM R0,B'1000',=X'FF' COMPENSATE FOR 3 BYTE RELOCA@V1D1705 01211000
  1320. PLOAD1 EQU * @VA10086 01211500
  1321. LH R3,2(0,R6) GET PH @VA10086 01212000
  1322. SR R6,R6 RESTORE TO ZERO @VA10086 01212500
  1323. N R3,=X'00007FFF' MASK ID FIELD 01213000
  1324. LTR 3,3 IS IT 0 01214000
  1325. BZ BADCRD2 YES, BAD CARD @VA01260 01215000
  1326. SLL 3,1 CHECK ESID TABLE 01216000
  1327. LH 12,ESIDTB(3) ... 01217000
  1328. LTR 12,12 IS IT NEGATIVE ENTRY (ALREADY LOADED) 01218000
  1329. BM SKIPRLD YES, SKIP THESE ENTRIES 01219000
  1330. SRL 3,1 NO, RESET CONDITIONS AND CONTINUE 01220000
  1331. BAL 14,REFADR GET REFTBL ADDR OF PH 01221000
  1332. L R15,8(0,R12) GET REL. FACTOR OF PH 01222000
  1333. BAL 14,CTR SEE IF END OF CARD 01223000
  1334. SPACE 2 01224000
  1335. C5AA3 AR 10,5 ADDR OF NEXT 4 BYTE DATA FIELD 01225000
  1336. BCTR 5,0 C(REG 5) = 3 01226000
  1337. IC 6,0(0,10) GET FLAG BYTE 01227000
  1338. SRL 6,2 SHIFT OVER LENGTH BITS 01228000
  1339. NR 6,5 MASK OUT ALL BUT LAST 2 BITS 01229000
  1340. LA R5,RLDCONST+3 POINT TO WORK AREA +3 @V201005 01230000
  1341. SR R5,R6 BACK UP ACCORDING TO ADCON LENGTH@V201005 01231000
  1342. L 3,0(0,10) GET ASSIGNED ADDRESS OF (CON) 01232000
  1343. LA 3,0(3,R15) COMPUTE LOADED ADDRESS 01233000
  1344. TM 0(R10),X'30' NONBRANCH ADCON @V201005 01234000
  1345. BNZ ZERO NO @V201005 01235000
  1346. EX R6,MVCFROM MOVE RLD CONSTANT TO WORK AREA @V201005 01236000
  1347. ZERO L R4,RLDCONST GET CONSTANT IN R4 @V201005 01237000
  1348. TM 0(10),X'02' SHOULD WE SUBTRACT 01238000
  1349. BO C5AE4 YES GO DO IT 01239000
  1350. AR 4,R0 VAL=CON+ RH REL FAC 01240000
  1351. EJECT 01241000
  1352. COMPP ST R4,RLDCONST PUT VALUE BACK IN RLD CONST 01242000
  1353. EX R6,MVCTO MOVE CONSTANT TO STOR. @V201005 01243000
  1354. L 12,TEMPST GET ADDRESS OF RH SYMBOL 01244000
  1355. TM 8(12),X'80' IS ENTRY DEFINED? 01245000
  1356. BZ CTEX1 YES, SKIP REMEMBERING RTN. @V201005 01246000
  1357. L 7,APPNT GET ADDRESS OF APOINT 01247000
  1358. BALR 14,7 GO ADD TO STRING OF UNDEF'S 01248000
  1359. CTEX1 SR R6,R6 GET 0 @V201005 01249000
  1360. BAL 14,CTR CHECK FOR END OF CARD 01250000
  1361. TM 0(10),X'01' NEXT RH + PH SAME AS THIS ONE 01251000
  1362. BNO NXTENTRY NO, READ NEW DATA FIELD @VA10086 01251130
  1363. TM 0(R10),X'30' IF SAME, COMPARE FLAGS @VA10086 01251260
  1364. BZ BRTEST1 FIRST ENTRY IS NON-BRANCH @VA10086 01251390
  1365. TM 4(R10),X'30' CHECK SECOND ENTRY @VA10086 01251520
  1366. BNZ C5AA3 BOTH ARE BRANCH ADCONS @VA10086 01251650
  1367. B BRTEST2 MIXED TYPES, REREAD ESID DATA @VA10086 01251780
  1368. BRTEST1 EQU * @VA10086 01251910
  1369. TM 4(R10),X'30' CHECK SECOND ENTRY @VA10086 01252040
  1370. BZ C5AA3 BOTH ARE NON-BRANCH ADCONS @VA10086 01252170
  1371. BRTEST2 EQU * @VA10086 01252300
  1372. LH R4,SPEC+10 GET REMAINING BYTES IN RLD CARD @VA11838 01252430
  1373. AR R4,R5 ADD 4 TO ADJUST FOR REREADING @VA11838 01252560
  1374. STH R4,SPEC+10 STORE ADJUSTED BYTE COUNT @VA10086 01252690
  1375. L R6,SAV67 LOAD REGISTER FOR TEST @VA10086 01252820
  1376. LTR R6,R6 WAS ESID POINTER SAVED? @VA10086 01252950
  1377. BNZ C5AC1A YES, REREAD RH AND PH @VA10086 01253080
  1378. LR R6,R11 POINT BACK TO CURRENT ESID'S @VA11838 01253280
  1379. ST R6,SAV67 SAVE THE POINTER @VA10086 01253470
  1380. B C5AC1A BACK TO REREAD RH AND PH @VA10086 01253600
  1381. NXTENTRY EQU * @VA10086 01253730
  1382. AR R10,R5 GET ADDRESS OF NEXT DATA FIELD @VA10086 01253860
  1383. B C5AC1 BACK TO GET NEW PH + RH 01254000
  1384. C5AE4 SR 4,R0 SUB RH FROM ASSIGNED VAL 01255000
  1385. B COMPP BACK TO ROUTINE 01256000
  1386. MVCFROM MVC 0(*-*,R5),0(R3) EXECUTED MOVE @V201005 01257000
  1387. MVCTO MVC 0(*-*,R3),0(R5) @V201005 01258000
  1388. SPACE 2 01259000
  1389. CTR LA 5,4 4 BYTES PER DATA FIELD 01260000
  1390. ST R6,RLDCONST ZERO CONSTANT FIELD 01261000
  1391. LH 4,SPEC+10 GET BYTE COUNT 01262000
  1392. SR 4,5 SUBTRACT 5 01263000
  1393. BZ NXTRLDCD GET NEXT RLD CARD FROM WORK FILE 01264000
  1394. STH 4,SPEC+10 STORE NEW BYTE COUNT 01265000
  1395. BR 14 BACK TO CALLLER 01266000
  1396. SPACE 2 01267000
  1397. CXDTST EQU * @VA10086 01267600
  1398. TM 4(R6),X'30' IS IT A PR CUM LENGTH CONST? @VA10086 01268200
  1399. BNO BADCRD2 NO, BAD CARD @VA01260 01269000
  1400. LA 1,FAKECXD YES, SET TO DEFINE CXD ENTRY 01270000
  1401. LA 2,NOCXD RETURN IF NOT FOUND 01271000
  1402. BAL 3,PRSERCH1 LOOK FOR ENTRY IN REFTBL 01272000
  1403. TM REFLG2(R12),REFICS ICS FLAG SET ON? @VA11353 01272300
  1404. BO BADICS INVALID MATCH @VA11353 01272600
  1405. NOCXD MVI 8(12),X'81' SET CXD CODE BYTE 01273000
  1406. B CXDRET+4 BACK TO ROUTINE 01274000
  1407. SPACE 2 01275000
  1408. SKIPRLD BAL 14,CTR CHECK FOR END OF CARD 01276000
  1409. SKIPRLD2 AR 10,5 MOVE TO NEXT 4-BYTE FIELD 01277000
  1410. BAL 14,CTR CHECK FOR END OF CARD 01278000
  1411. TM 0(10),X'01' NEXT RH + PH SAME AS THIS ONE ? 01279000
  1412. BO SKIPRLD2 YES 01280000
  1413. AR 10,5 NO, MOVE TO IT 01281000
  1414. B C5AC1 PROCESS IT 01282000
  1415. BADRLD EQU * @VA06291 01283000
  1416. LA R14,N03 SET RET ADDR FOR LIO @VA06291 01284000
  1417. LA R5,ERRORB SET ERROR FUNCTION FOR LIO @VA06291 01285000
  1418. L R11,ALDRIO GO TYPE MSG AND SET RETURN @VA06291 01286000
  1419. BR R11 CODE, EXIT ON RETURN FROM LIO @VA06291 01287000
  1420. EJECT 01288000
  1421. *********************************************************************** 01289000
  1422. * 01290000
  1423. * END CARD ROUTINE (END) 01291000
  1424. * 01292000
  1425. *********************************************************************** 01293000
  1426. * 01294000
  1427. C6AA1 C 1,END 01295000
  1428. BC 7,C6AC1 BR-NOT END CARD 01296000
  1429. CLC SPEC+28(4),BLANKS CHECK FOR CSECT LENGTH IN END 01297000
  1430. BE C6AB5 NO - CONTINUE NORMALLY 01298000
  1431. L 1,LOCCT YES - UPDATE THE LOCATION COUNT 01299000
  1432. LA R1,7(0,R1) ALIGN TO DOUBLEWORD BOUNDARY @VA11353 01299300
  1433. N R1,DBLBND REMOVE EXCESS BITS @VA11353 01299600
  1434. A 1,SPEC+28 ... 01300000
  1435. LA 1,7(0,1) ALIGN TO DBL BOUND 01301000
  1436. N 1,DBLBND ... 01302000
  1437. ST 1,LOCCT ... 01303000
  1438. C6AB5 SR 2,2 ... 01304000
  1439. CLI SPEC+5,C' ' 01305000
  1440. BC 8,C6AB3 BR IF NO ADDR 01306000
  1441. STC 6,SPEC+4 01307000
  1442. TM FLAG1,ENDCDADR END CARD ADR ALLOWED 01308000
  1443. BC 1,C6AB3 BR NO, ADDR SAVED 01309000
  1444. LH 3,SPEC+14 LOD ESID 01310000
  1445. BAL 14,REFADR 01311000
  1446. L R2,8(0,R12) GET RELOCATION FACTOR 01312000
  1447. C6AB4 A 2,SPEC+4 FORM ADDR 01313000
  1448. STCM R2,B'0111',BRAD+1 SET ENTRY ADDRESS P0966 01314000
  1449. OI FLAG1,ENDCDADR INDICATE END CARD ADDRESS SAVED 01315000
  1450. C6AB3 B PASSTWO PROCESS RLDS 01316000
  1451. C6AB6 XC ESIDTB(256),ESIDTB CLEAR ESID TABLE 01317000
  1452. XC ESIDTB+256(256),ESIDTB+256 CLEAR ESID TABLE @VA02083 01318000
  1453. XC ESIDTB+512(256),ESIDTB+512 CLEAR ESID TABLE HRC006DS 01318300
  1454. XC ESIDTB+768(256),ESIDTB+768 CLEAR ESID TABLE HRC006DS 01318600
  1455. XC ESIDTB+512(256),ESIDTB+512 CLEAR ESID TABLE 01318010
  1456. XC ESIDTB+768(256),ESIDTB+768 CLEAR ESID TABLE 01318020
  1457. BC 15,RD TO RD 01319000
  1458. EJECT 01320000
  1459. *********************************************************************** 01321000
  1460. * 01322000
  1461. * LOAD TERMINATE CARD ROUTINE (LDT) 01323000
  1462. * 01324000
  1463. *********************************************************************** 01325000
  1464. * 01326000
  1465. C6AC1 C 1,LDT 01327000
  1466. BNE CHEKSPB NO - MAYBE AN "SPB" CARD. @VM03154 01328000
  1467. C6AC2 CLI SPEC+16,C' ' IS THERE A NAME ? 01329000
  1468. BE CHKTXT CHECK FOR TEXT FILE @VA04695 01330000
  1469. LA 2,ERLDT1 01331000
  1470. BAL 3,SERCH 01332000
  1471. MVC BRAD(4),12(R12) PUT NEW START IN BRAD 01333000
  1472. CHKTXT EQU * @VA04695 01334000
  1473. CLC FTYPE,=CL8'TEXT' IS THIS TEXT FILE? @VA04695 01335000
  1474. BE RD BRANCH IF YES, NO LDT IN TEXT@VA04695 01336000
  1475. SPACE 01337000
  1476. *********************************************************************** 01338000
  1477. * 01339000
  1478. * INVOKE TEXT LIBRARY SEARCHING 01340000
  1479. * 01341000
  1480. *********************************************************************** 01342000
  1481. * 01343000
  1482. LIBGO TM FLAG2,NOAUTO+NOLIBE ARE SEARCHES SUPPRESSED 01344000
  1483. BO C6AD7 YES, DON'T LOOK 01345000
  1484. NI FLAG3,X'FF'-CMD NO LONGER PROC COMMAND LINE @VA01699 01346000
  1485. TM FLAGS,LUNDEF ANY UNDEFINEDS? 01347000
  1486. BZ C6AD7 NO - SKIP LIBE SEARCH 01348000
  1487. LA 3,NXTRD SET FOUND RETURN 01349000
  1488. L 11,ALIBE GO SEARCH LIBE 01350000
  1489. BALR 14,11 ... 01351000
  1490. * CONTINUE TO "C6AD7" ... 01352000
  1491. SPACE 01353000
  1492. *********************************************************************** 01354000
  1493. * 01355000
  1494. * TERMINATE LOADING 01356000
  1495. * 01357000
  1496. *********************************************************************** 01358000
  1497. C6AD7 EQU * 01359000
  1498. NI FLAG1,255-NODUP REMOVE NODUP FLAG @VA05276 01360000
  1499. L 12,ENTADR WAS 'ENTRY' SPECIFIED? 01361000
  1500. LA R12,0(,R12) 01362000
  1501. LTR 12,12 ... 01363000
  1502. BZ NOENTCRD NO 01364000
  1503. TM 8(12),X'80' WAS ENTRY-POINT DEFINED? 01365000
  1504. BO NOENTCRD NO 01366000
  1505. L R3,12(0,R12) GET V(ENTRY POINT) 01367000
  1506. CLC 04(8,R3),=C'CMS"XEQ"' SAVE NORMAL START ADDR? 01368000
  1507. BNE NOENT NO @VA03251 01369000
  1508. TM DOSFLAGS,DOSMODE CMS/DOS ENVIRONMENT ACTIVE? @V305066 01370000
  1509. BO FATERR2 IF SO, OS COMPILERS CANNOT RUN! @V305066 01371000
  1510. CLC 12(4,R3),ZEROES ADDRESS FILLED IN? @VA11353 01372000
  1511. BNE NOENTCRD YES @VA03251 01373000
  1512. MVC 12(4,R3),BRAD SAVE OLD START ADDR 01374000
  1513. NOENT MVC BRAD+1(3),13(R12) SET NEW START ADDRESS @VA03251 01375000
  1514. NOENTCRD EQU * 01376000
  1515. L 0,BRAD LOAD START ADDRESS 01377000
  1516. EX 0,C6AB6 CLEAR ESID TABLE 01378000
  1517. ST R0,STRTADDR SAVE STARTING ADDRESS 01379000
  1518. L R4,FLAG1 GET FLAG1 AND 2 01380000
  1519. ST R4,LDRFLAGS SAVE IN NUCON 01381000
  1520. STH R4,TBENT SAVE LDR TBL COUNT IN NUCON 01382000
  1521. TM BATFLAGS,BATLOAD LOADING ABOVE FREELOWE? @VA04199 01383000
  1522. BO OKLOC YES; SKIP @VA04199 01384000
  1523. TM MODFLGS,SYSLOAD SYSTEM LOAD ? @VA04666 01385000
  1524. BO OKLOC YES, ALLOW LOAD ABOVE FREELOWE @VA04666 01386000
  1525. CLC LOCCT+1(3),FREELOWE+1 NO; LOCCT > FREELOWE? @VA04199 01387000
  1526. BH FATERR1 YES; TERMINATE WITH ERROR @VA04199 01388000
  1527. OKLOC L R4,LOCCT GET CURRENT VALUE OF 'LOCCNT' @VA04199 01389000
  1528. LA R4,0(,R4) CLEAR HIGH BYTE @V305665 01390000
  1529. SR R3,R3 @V305665 01391000
  1530. C R3,AOSMODL IS THERE A SIM. MODULE? @V305665 01392000
  1531. BE NOSIM BRANCH IF NOT @V305665 01393000
  1532. C R4,AOSMODL IS THIS OS SIM. MODULE? @V305665 01394000
  1533. BH TRANOVR BRANCH IF YES @V305665 01395000
  1534. NOSIM EQU * @V305665 01396000
  1535. ST R4,LOCCNT STORE NEW 'LOCCNT' @V305665 01397000
  1536. CLC LOCCNT,AUSRAREA ARE WE BELOW USER STOR? @VA02752 01398000
  1537. BNL TRANOVR NO, PROCEED AS USUAL @VA02752 01399000
  1538. CLC LOCCNT,=V(TRANSEND) ABOVE END OF TRANS AREA? @VA02752 01400000
  1539. BH FATERR1 YES, ERROR @VA02752 01401000
  1540. TRANOVR MVC PRHOLD(2),PRVCNT SAVE PR COUNT @VA02752 01402000
  1541. L 12,TBLREF 01403000
  1542. SR 4,4 SHOW NO ERRORS IF NOT 01404000
  1543. LH R4,TBLCT GET NUMBER OF LDR TBL ENTRIES 01405000
  1544. CH R4,=H'2' WAS ANYTHING LOADED 01406000
  1545. BE N03 NO, BACK TO USER 01407000
  1546. LA 3,20 LDR TBL ENTRY SIZE 01408000
  1547. SR 0,0 01409000
  1548. SUB1 SR 12,3 POINT TI FIRST ENTRY IN REFTBL 01410000
  1549. CLI 8(12),X'80' IS ENTRY DEFINED? 01411000
  1550. BNE NO1 YES - LOOK AT NEXT ENTRY 01412000
  1551. MVI UNRES,X'80' SAVE UNRESOLVED FLAG @VA02829 01413000
  1552. TM REFLG2(R12),REFLBT NAME FOUND IN DMSLIB SEARCH? @VA11353 01414000
  1553. BO NO1 YES, DON'T LIST AS UNDEF. 01415000
  1554. SYMCHK LTR 0,0 TEST FOR PREV UNDEF SYM 01416000
  1555. BC 7,SUB2 IF NONE, PRINT HEADER 01417000
  1556. LA 5,ERRORS PRINT UNDEFINED SYMBOL MESSAGE 01418000
  1557. L 11,ALDRIO GET LINKAGE 01419000
  1558. BALR 14,11 GO PRINT HEADING 01420000
  1559. LA 2,OUTPUT+1 INITIALIZE POINTERS 01421000
  1560. LA 5,OUTPUT+68 01422000
  1561. SUB2 MVC 0(8,2),0(12) MOVE NAME INTO OUTPUT LINE 01423000
  1562. LA 2,9(,2) SPACE UP LINE POINTER 01424000
  1563. CR 2,5 ARE WE AT END OF LINE 01425000
  1564. BC 4,SUB3 NO - CONTINUE 01426000
  1565. LA 5,OUTR YES, PRINT OUT LINE 01427000
  1566. L 11,ALDRIO GET LINKAGE 01428000
  1567. BALR 14,11 GO PRINT 01429000
  1568. LA 2,OUTPUT+1 INITIALIZE POINTERS 01430000
  1569. LA 5,OUTPUT+68 01431000
  1570. SUB3 LA R0,4 ERROR (NON-FATAL) 01432000
  1571. NO1 BCT 4,SUB1 01433000
  1572. LTR 0,0 TEST FOR ERRORS 01434000
  1573. BC 8,NO2 IF SO, FLUSH OUTPUT BUFFER 01435000
  1574. ST R0,LDRADDR+4 SAVE ERROR CODE 01436000
  1575. LA 5,OUTPUT 01437000
  1576. CR 2,5 01438000
  1577. BC 8,NO2 01439000
  1578. LA 5,OUTR 01440000
  1579. L 11,ALDRIO GET LINKAGE 01441000
  1580. BALR 14,11 PRINT LAST LINE 01442000
  1581. NO2 TM FLAGS,START START SPECIFIED ? 01443000
  1582. BNO N03 NO, CLOSE AND LEAVE 01444000
  1583. CLC LDRADDR+6(2),=H'4' CHECK ERROR CODE 01445000
  1584. BNH LDXEQ OK IF NOT > 4 01446000
  1585. B N03 IF > 4 DON'T GO INTO EXECUTION 01447000
  1586. EJECT 01448000
  1587. *********************************************************************** 01449000
  1588. * 01450000
  1589. * "SPB" = SET LOCATION COUNTER TO NEXT PAGE BOUNDARY 01451000
  1590. * 01452000
  1591. *********************************************************************** 01453000
  1592. SPACE 01454000
  1593. CHEKSPB CL R1,SPB IS IT AN "SPB" CARD ? @VM03154 01455000
  1594. BNE CTLCRD1 NO - PROCESS AS A CONTROL CARD. @VM03154 01456000
  1595. L R6,LOCCT PICK UP LOCATION COUNTER @VM03154 01457000
  1596. LA R6,Q4095(,R6) ROUND UP TO NEXT PAGE BOUNDARY @VM03154 01458000
  1597. N R6,PAGBOUND ... @VM03154 01459000
  1598. B C2BNEWLC GO STORE UPDATED LOCATION CNTR. @VM03154 01460000
  1599. EJECT 01461000
  1600. USING XPRTAB,10 01462000
  1601. N023 EQU * 01463000
  1602. L R3,REG13SAV EXECUTION TIME SAVE AREA 01464000
  1603. L R4,ACMSRET SET RETURN TO DMSITS 01465000
  1604. L R5,PSW+4 BRANCH ADDRESS 01466000
  1605. SR 6,6 ZERO FOR 0 01467000
  1606. L R7,PARMLIST PLIST TO R1 01468000
  1607. L R6,EPARMLST setup for restoring EPLIST to R0 01468200
  1608. TM DOSFLAGS,DOSSVC+DOSCOMP DOS SVC+COMP ACTIVE ? @V305001 01469000
  1609. BNO SAVREGS NO, BRANCH @V305001 01470000
  1610. LR R7,R5 ENTRY POINT TO R1 ALSO @V305001 01471000
  1611. SAVREGS STM R3,R7,0(R3) TEMP SAVE IN USER'S SAVE @V305001 01472000
  1612. LR 6,3 REG SAVE OF SAVE AREA PTR 01473000
  1613. SPACE 01474000
  1614. SPACE 01475000
  1615. LA 1,CONWAIT WAIT FOR ANY TYPING TO DIE DOWN 01476000
  1616. SVC X'CA' (NOTE - R15=0 ON RETURN) 01477000
  1617. TM DOSFLAGS,DOSSVC+DOSCOMP DOS SVC+COMP ACTIVE ? @V305001 01478000
  1618. BO NOEXMSG YES, BYPASS NEXT MSG @V305001 01479000
  1619. DMSERR TEXT='Execution begins...',NUM=740,LET=I, HRC309DSX01480000
  1620. CSECT=LIO @V1D1705 01481000
  1621. SPACE 01482000
  1622. NOEXMSG BAL R3,N032 OFF TO INITIALIZE LDR @V305001 01483000
  1623. DROP 10 01484000
  1624. SPACE 01485000
  1625. STRINIT TYPCALL=BALR 01486000
  1626. TM DOSFLAGS,DOSSVC IS DOSSVC MODE ACTIVE ? @V305001 01487000
  1627. BZ STRNTOK NO, DO NOT CALL SMNAT @V305001 01488000
  1628. LR R3,R1 SAVE REG.1 FOR A WHILE @V305001 01489000
  1629. LA R1,=CL8'DMSSMNAT' GET DMSSMNAT NAME @V305001 01490000
  1630. SVC 202 CALL SMNAT TO INITIALIZE @V305001 01491000
  1631. DC AL4(FATERR3) ONLY ERROR IS NO STORAGE @VA06270 01492000
  1632. LR R1,R3 RESTORE REG.1 (USED ABOVE) @V305001 01493000
  1633. XC DOSRC,DOSRC ZERO DOS RETURN CODE @V305001 01494000
  1634. STRNTOK L R15,CURRSAVE GET LOAD OR START SAVE AREA @V305001 01495000
  1635. USING SSAVE,R15 01496000
  1636. OI TYPFLAG,TPFUSR MAKE IT A 'USER' PROGRAM 01497000
  1637. L R14,EGPR1 POINT TO ORIGINAL PARAMETER LIST 01498000
  1638. MVC CALLEE,8(R14) COPY PGM NAME INTO SAVE AREA 01499000
  1639. CLI CALLEE,X'FF' WAS COMMAND 'START' WITH NO ARG? 01500000
  1640. BNE *+10 SKIP IF NOT 01501000
  1641. MVC CALLEE,=CL8'USER PGM' JUST USE 'USER PGM' AS CALLEE 01502000
  1642. DROP R15 01503000
  1643. L R13,PSW+4 GET USER'S START ADDRESS @VA07981 01503080
  1644. LA R13,0(R13) CLEAR HIGH ORDER BYTE @VA07981 01503160
  1645. C R13,=V(USERAREA) LOADED IN USER AREA? @VA07981 01503240
  1646. BL TSYSFLAG NO, TEST FOR SYSTEM TRANSIENT @VA07981 01503320
  1647. TM PROTFLAG,PRFUSYS SYSTEM FLAG SET FOR USER? @VA07981 01503400
  1648. BZ USERKEY NO, SET USER KEY @VA07981 01503480
  1649. B SETMASK YES, KEEP SYSTEM KEY @VA07981 01503560
  1650. TSYSFLAG EQU * @VA07981 01503640
  1651. TM PROTFLAG,PRFTSYS TRANSIENT WITH SYSTEM KEY? @VA07981 01503720
  1652. BO SETREGS MASK AND KEY REMAIN UNCHANGED @VA07981 01503800
  1653. USERKEY EQU * @VA07981 01503880
  1654. DMSKEY USER,NOSTACK SET USER PSW KEY 01504000
  1655. C R13,=V(USERAREA) LOADED IN USER AREA? @VA07981 01504250
  1656. BL SETREGS NO, LEAVE INTERRUPTS DISABLED @VA07981 01504500
  1657. SETMASK EQU * @VA07981 01504750
  1658. SSM =AL1(X'FF') TURN ON SYSTEM MASK 01505000
  1659. SETREGS EQU * @VA07981 01505500
  1660. LM 13,1,0(1) SET GPRS 13 - 1 01506000
  1661. XC 0(18*4,13),0(13) CLEAR SAVE AREA 01507000
  1662. BR R15 BRANCH TO ROUTINE 01508000
  1663. EJECT 01509000
  1664. N03 L 3,RETREG SET TO RETURN TO CALLER 01510000
  1665. N032 OI FLAGS,CLOSELIB SET TO CLOSE LIBRARIES 01511000
  1666. L 11,ALIBE GO TO LIBE ROUTINE 01512000
  1667. BALR 14,11 ... 01513000
  1668. LA 5,LDRFIN IO INDEX FOR LDR FINISH 01514000
  1669. L 11,ALDRIO GET LINKAGE 01515000
  1670. BALR 14,11 GO FINISH 01516000
  1671. TM OSSFLAGS,DYLD IS THIS A DYNAMIC LOAD 01517000
  1672. BO AROUND YES,LEAVE TXTLIB DIRECTORIES IN STOR. 01518000
  1673. STM R0,R15,APSV SAVE REGISTERS 01519000
  1674. L R15,=V(DMSLGTA) FREE THE TXTLIB DIRECTORY BLOCKS 01520000
  1675. BALR R14,R15 01521000
  1676. LM R0,R15,APSV RESTORE REGISTERS 01522000
  1677. AROUND EQU * 01523000
  1678. LM R9,R12,GPRSAV 01525000
  1679. LA R0,NEED RETURN FRRE STORAGE 01526000
  1680. LR 1,13 01527000
  1681. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR 01528000
  1682. LR 1,6 01529000
  1683. LR 14,3 01530000
  1684. L R15,LDRRTCD GET RETURN CODE P0934 01531000
  1685. BCR 15,14 RETURN 01532000
  1686. SPACE 4 01533000
  1687. ERLDT1 LA 1,SPEC+16 SET POINTER TO NAME 01534000
  1688. ERLDT LA R5,ERROR30 ERROR MSG 209E (NAME NOT FOUND) 01535000
  1689. MVC OUTBUF(8),0(1) MOVE NAME TO BUFF 01536000
  1690. BC 15,FATERR 01537000
  1691. EJECT 01538000
  1692. *********************************************************************** 01539000
  1693. * 01540000
  1694. * ROUTINE TO LOCATE REFTBL ENTRIES 01541000
  1695. * THRU ESID 01542000
  1696. * 01543000
  1697. * LH 3, WITH ESID, RH, OR PH 01544000
  1698. * VALUE BEFORE ENTERING ROUTINE 01545000
  1699. * 01546000
  1700. *********************************************************************** 01547000
  1701. * 01548000
  1702. REFADR L 12,TBLREF 01549000
  1703. SLL 3,1 TIMES TWO 01550000
  1704. LR R5,R3 SAVE TABLE INDEX 01551000
  1705. LH 3,ESIDTB(3) GET INDEX OF ENTRY 01552000
  1706. N R3,ESIDMASK CLEAR OUT FLAG BITS 01553000
  1707. MH R3,=H'20' MULTIPLY BY 20 01554000
  1708. SR 12,3 SIZE-(ESID X 16) 01555000
  1709. C 12,TBLREF SEE IF ESD EXISTS 01556000
  1710. BCR 7,14 YES - BACK TO CALLER 01557000
  1711. L R7,LOCCT ASSUME LOCATION 01558000
  1712. LA R7,7(0,R7) ROUND TO DBL WD BOUNDARY 01559000
  1713. N R7,DBLBND 01560000
  1714. ST R7,LOCCT 01561000
  1715. CLC SPEC(4),ESD ESD CARD ? 01562000
  1716. BNE 4(0,R14) NO, RETURN +4 01563000
  1717. DMSFREE DWORDS=3,TYPCALL=BALR GET WAITING BLK 01564000
  1718. LR R7,R5 SET R7 TO ID TABLE INDEX 01565000
  1719. LA R2,MEMBOUND POINT TO WAITING CHAIN 01566000
  1720. BACK L R3,0(R2) 1ST (NEXT) BLOCK 01567000
  1721. LTR R3,R3 EXIST 01568000
  1722. BZ ENDCHAIN NO, ADD NEW BLOCK 01569000
  1723. LR R2,R3 YES, LOOK FOR NEXT 01570000
  1724. B BACK 01571000
  1725. ENDCHAIN ST R1,0(R2) CHAIN NEW BLOCK 01572000
  1726. MVC 4(16,R1),SPEC+16 SAVE ESD DATA ITEM FOR LD 01573000
  1727. XC 0(4,R1),0(R1) ZERO LASR POINTER 01574000
  1728. LA R1,ESIDTB(R7) GET TO ESIDTB FOR SD 01575000
  1729. OI 0(R1),ESIDLATE INDICATE WAITING LD'S 01576000
  1730. B ESD00 PROCESS NEXT ESD DATA ITEM 01577000
  1731. SDDEF LH R7,SPEC+14 ID OF SD 01578000
  1732. LA R2,MEMBOUND POINT TO WAITING CHAIN 01579000
  1733. LDLOOK L R3,0(R2) R3 = NEXT (1ST) BLOCK 01580000
  1734. LTR R3,R3 EXIST 01581000
  1735. BZ ESD00 NO, DO NEXT ESD DATA ITEM 01582000
  1736. CH R7,18(R3) LD AND SD ID'S MATCH 01583000
  1737. BE LDFND YES, THIS LD IS WAITING 01584000
  1738. LR R2,R3 UPDATE BASE PTR 01585000
  1739. B LDLOOK LOOK AT NEXT BLOCK 01586000
  1740. LDFND STM R0,R15,PLISTSAV PROTECT REGISTERS 01587000
  1741. MVC SPEC+16(16),4(R3) RESTORE ESD DATA ITEM TO SPEC BUFFER 01588000
  1742. BAL R10,LATESD PROCESS LD ITEM 01589000
  1743. LM R0,R15,PLISTSAV RESTORE REGISTERS 01590000
  1744. L R5,0(R3) PTR TO NEXT BLOCK 01591000
  1745. LR R1,R3 SET FREE LOCATION 01592000
  1746. DMSFRET DWORDS=3,LOC=(1),TYPCALL=BALR 01593000
  1747. ST R5,0(R2) ELIMINATE FREED BLOCK FROM CHAIN 01594000
  1748. B LDLOOK LOOK FOR MORE WAITING BLOCKS 01595000
  1749. EJECT 01596000
  1750. *********************************************************************** 01597000
  1751. * 01598000
  1752. * ROUTINE TO SEARCH REFERENCE TABLE 01599000
  1753. * FOR A GIVEN NAME 01600000
  1754. * 01601000
  1755. *********************************************************************** 01602000
  1756. * 01603000
  1757. * CALLING SEQUENCE-- 01604000
  1758. * L(LA) 2,NOT FOUND RETURN 01605000
  1759. * BAL 3,ENTRY FOUND RETURN 01606000
  1760. * REG 12 = ADDR OF ENTRY IN REFTBL.REG 11=1,REG 1= NAME OF PROG 01607000
  1761. * REG. 3 = REFTBL NUMBER (E.G. 1,2,3,...) 01608000
  1762. * THIS ROUTINE COMPARES EACH REFERENCE TABLE ENTRY 01609000
  1763. * WITH THE GIVEN NAME,DETERMINING FIRST WHETHER THERE 01610000
  1764. * IS AN ENTRY FOR THAT NAME AND 2ND WHAT THE 01611000
  1765. * STORAGE ADDRESS OF THAT ENTRY IS. 01612000
  1766. * 01613000
  1767. *********************************************************************** 01614000
  1768. * 01615000
  1769. PRSERCH LA 1,SPEC+16 ADDR OF NAME IN CARD 01616000
  1770. PRSERCH1 LA R15,X'80' PR MASK FOR CHKTYPE 01617000
  1771. B SERCH2 SKIP OVER SERCH INITIALIZATION 01618000
  1772. SERCH LA 1,SPEC+16 ADDR OF NAME IN CARD 01619000
  1773. SERCH1 LA R15,X'70' NON-PR MASK FOR CHKTYPE 01620000
  1774. SERCH2 LH 0,TBLCT NO OF ENTRIES IN REFTBL 01621000
  1775. SR 4,4 01622000
  1776. LA R5,20 LDR TBL ENTRY SIZE 01623000
  1777. L 12,TBLREF LARGEST ADDR IN STORAGE+1 01624000
  1778. LA R12,0(0,R12) CLEAR COUNT BYTE 01625000
  1779. STM R6,R7,SAV67 SAVE 6 + 7 01626000
  1780. LTR 0,0 01627000
  1781. BC 8,NOT 01628000
  1782. LM 6,7,0(1) LOAD WORD FOR SEARCH 01629000
  1783. CMP SR 12,5 01630000
  1784. AH R4,=H'1' TO ACCUMULATE ENTRY POSITION 01631000
  1785. CL 7,4(0,12) SECOND HALF OF ENTRY MATCH? 01632000
  1786. BNE CMPEND NO - TRY ANOTHER 01633000
  1787. CL 6,0(0,12) FIRST HALF OF ENTRY MATCH? 01634000
  1788. BE CHKTYPE YES - CHECK FOR TYPE MATCH 01635000
  1789. CMPEND BCT 0,CMP BACK TO LOOK AGAIN 01636000
  1790. NOT SR 12,5 01637000
  1791. AH R4,=H'1' ADD TO TOTAL ENTRIES 01638000
  1792. SR R0,R0 GET NUMBER OF PAGES OF LOADER-TABLES JS 01639000
  1793. IC R0,TBLREF FROM LEFT-MOST BYTE OF "LDRTBL", JS 01640000
  1794. MH R0,=H'204' X 204 (204 ENTRIES PER PAGE) 01641000
  1795. CR 4,0 01642000
  1796. BC 10,ERREF REFERENCE TABLE OVERFLOW 01643000
  1797. STH 4,TBLCT NO. FO ENTRIES IN TBLREF 01644000
  1798. MVC 0(8,12),0(1) PLACE NAME IN REFTBL 01645000
  1799. XC 8(12,12),8(12) ZERO OTHER PART OF ENTRY 01646000
  1800. LM R6,R7,SAV67 RESTORE 6 + 7 01647000
  1801. BCR 15,2 01648000
  1802. ERREF LA 5,ERRORR GO TO ERPRNT WITH COMMENT OF RE 01649000
  1803. BC 15,FATERR 01650000
  1804. SPACE 01651000
  1805. CHKTYPE CLI 8(R12),X'83' IS THIS A WEAK EXTRN 01652000
  1806. BE NMFND YES, OMIT CHECK 01653000
  1807. TM 8(R12),X'0D' DON'T CHECK FOR COMMON BIT 01654000
  1808. NMFND EX R15,TYPECHK PR BC 8; NON-PR BC 7 @V1D1705 01655000
  1809. LM R6,R7,SAV67 RESTORE REGS @V1D1705 01656000
  1810. BR 3 BACK TO FOUND RETURN 01657000
  1811. SPACE 01658000
  1812. TYPECHK BC 0,CMPEND 01659000
  1813. EJECT 01660000
  1814. *********************************************************************** 01661000
  1815. * 01662000
  1816. * ERROR ROUTINES 01663000
  1817. * 01664000
  1818. *********************************************************************** 01665000
  1819. DMSLDRD EQU * 01666000
  1820. FATERR L 11,ALDRIO GET LINKAGE 01667000
  1821. BALR 14,11 GO DO SOMETHING 01668000
  1822. B N03 GO TO TERMINATE LOADING 01669000
  1823. SPACE 01670000
  1824. FATERR1 EQU * 01671000
  1825. LA 5,ERRORC CORE SIZE EXCEEDED 01672000
  1826. B FATERR GIVE UP 01673000
  1827. SPACE 2 01674000
  1828. FATERR2 EQU * @V305066 01675000
  1829. LA R5,ERRORD CMS/DOS ENVIRON. ACTIVE @V305066 01676000
  1830. B FATERR GIVEUP @V305066 01677000
  1831. SPACE 2 01678000
  1832. FATERR3 EQU * @VA06270 01679000
  1833. LA R5,ERRORC CORE SIZE EXCEEDED @VA06270 01680000
  1834. L R11,ALDRIO GET LINKAGE @VA06270 01681000
  1835. BALR R14,R11 PUT OUT MESSAGE @VA06270 01682000
  1836. LM R13,R1,0(R3) RESTORE REGISTERS @VA06270 01683000
  1837. L R15,LDRRTCD GET RETURN CODE @VA06270 01684000
  1838. BR R14 AND RETURN @VA06270 01685000
  1839. DMSLDRC EQU * 01686000
  1840. BADCRD LA R14,RD RETURN FROM LIO @VA01260 01687000
  1841. B BADCRD3 GO SET ERROR CODE @VA01260 01688000
  1842. BADCRD2 LA R14,NXTRLDCD RETURN FROM LIO @VA01260 01689000
  1843. BADCRD3 LA R5,ERRORA ERROR CODE FOR LIO @VA01260 01690000
  1844. MVC OUTBUF+15(80),SPEC MOVE CRD IMJ TO BUFF 01691000
  1845. L 11,ALDRIO GET LINKAGE 01692000
  1846. BR 11 GO PRINT INV CARD 01693000
  1847. EJECT 01694000
  1848. *********************************************************************** 01695000
  1849. * CONSTANTS AREA 01696000
  1850. *********************************************************************** 01697000
  1851. SPACE 2 01698000
  1852. ALDRIO DC A(DMSLIO) I/O ROUTINE 01699000
  1853. ALIBE DC V(DMSLIB) LIBRARY SEARCH ROUTINE 01700000
  1854. AADDEF DC A(DMSLSBC) LINKAGE DEFINITION ROUTINE 01701000
  1855. APPNT DC A(DMSLSBB) LINKAGE WAITING ROUTINE 01702000
  1856. HEXBB DC A(DMSLSBA) HEX TO BINARY CONVERSION 01703000
  1857. CONWAIT DC CL8'CONWAIT' 01704000
  1858. SPACE 1 01705000
  1859. SLC DC X'02' *** 01706000
  1860. DC C'SLC' 01707000
  1861. ICS DC X'02' *** 01708000
  1862. DC C'ICS' 01709000
  1863. ESD DC X'02' *** 01710000
  1864. DC C'ESD' 01711000
  1865. TXT DC X'02' *** 01712000
  1866. DC C'TXT' 01713000
  1867. REP DC X'02' *** 01714000
  1868. DC C'REP' 01715000
  1869. RLD DC X'02' *** 01716000
  1870. DC C'RLD' 01717000
  1871. END DC X'02' *** 01718000
  1872. DC C'END' 01719000
  1873. LDT DC X'02' *** 01720000
  1874. DC C'LDT' 01721000
  1875. SPB DC X'02' SPB = "SET TO PAGE BOUNDARY" @VM03154 01722000
  1876. DC C'SPB' ... @VM03154 01723000
  1877. SPACE 01724000
  1878. Q4095 EQU 4095 TO ROUND TO NEXT PAGE BOUNDARY @VM03154 01725000
  1879. HW511 DC H'511' HALFWORD '511' HRC006DS 01725440
  1880. SPACE 01726000
  1881. DS 0F @VA13904 01726050
  1882. PAGBOUND DC X'00FFF000' TO TRUNCATE TO PAGE BOUNDARY @VM03154 01726100
  1883. DBLBND DC X'00FFFFF8' MASK FOR DBL WD ALIGN 01726150
  1884. SPACE 1 01727000
  1885. SPACE 1 01728000
  1886. OUTR EQU 2 TYPE OUT MSG BUFFER 01729000
  1887. LDRSET EQU 4 IO INDEX 01730000
  1888. LDRFIN EQU 6 IO INDEX 01731000
  1889. PRDEF EQU 8 IO INDEX 01732000
  1890. CMDEF EQU 12 IO INDEX 01733000
  1891. PRVAL EQU 16 IO INDEX 01734000
  1892. CMVAL EQU 20 IO INDEX 01735000
  1893. ERRORU EQU 28 203W - SLCNAME UNDEFINED 01736000
  1894. ERROR30 EQU 30 209E - ENTRY POINT NOT FOUND 01737000
  1895. ERRORA EQU 32 - INVALID CARD TO LOAD MAP 01738000
  1896. ERRORB EQU 54 ERROR056E- INVALID TEXT DECK @VA06291 01739000
  1897. PROVER EQU 38 168S - PR TABLE OVERFLOW 01740000
  1898. ERRORR EQU 44 716S - LOADER TABLE OVERFLOW 01741000
  1899. WRERR46 EQU 46 705S - WRITE ERROR 01742000
  1900. ERRORM EQU 48 202W - DUPLICATE IDENTIFIER 01743000
  1901. ERRORI EQU 50 455E - ENTRY POINT NOT DEFINED 01744000
  1902. ERRORS EQU 52 201W - THE FOLLOWING NAMES ARE UNDEFINED 01745000
  1903. ESDOVER EQU 56 169S - ESDID TBL OVERFLOW 01746000
  1904. CRDIMJ EQU 60 - CARD IMAGE TO LOAD MAP 01747000
  1905. RDERR62 EQU 62 704S - READ ERROR 01748000
  1906. PRERR EQU 70 206W - PR ALIGNMENT ERROR 01749000
  1907. CTLCRD EQU 78 - CONTROL CARD TO LOAD MAP 01750000
  1908. ERRORC EQU 82 709S - STORAGE EXCEEDED 01751000
  1909. ERRORD EQU 86 099E - CMS/DOS ENVIRON. ACTIVE @V305066 01752000
  1910. EJECT 01753000
  1911. SPACE 1 01754000
  1912. RDISK DC CL8'RDBUF' ROUTINE 01755000
  1913. DS 8C FILE 01756000
  1914. DC CL8'TEXT' TYPE 01757000
  1915. DC CL2' ' MODE 01758000
  1916. DC H'0' ITEM NO. 01759000
  1917. DS 4C 01760000
  1918. SETBYTE DC AL4(800) BUFF SIZE (10 CARDS 01761000
  1919. DS 2C 01762000
  1920. DC H'10' GET 10 80-BYTE ITEMS 01763000
  1921. DC AL4(0) 01764000
  1922. FDISK DC CL8'FINIS' ROUTINE 01765000
  1923. DS 8C FIEL 01766000
  1924. DC CL8'TEXT' TYPE 01767000
  1925. DC AL2(0) 01768000
  1926. SPACE 1 01769000
  1927. SPACE 2 01770000
  1928. DS 0F 01771000
  1929. * FORMAT OF ESIDTB ENTRY IS -- 01772000
  1930. * BIT 0 DUPLICATE SD FLAG 01773000
  1931. * BIT 1 SD-TYPE ESID FLAG 01774000
  1932. * BIT 2 WAITING LD'S EXIST 01775000
  1933. * BIT 3 UNUSED 01776000
  1934. * BIT 4-15 REFTBL ENTRY NUMBER (E.G. 1,2,3,...) 01777000
  1935. ESIDMASK DC X'00001FFF' MASK OUT ESIDTB FLAGS 01778000
  1936. ESIDDUPF DC X'00008000' DUPLICATE SD FLAG 01779000
  1937. ESIDSDF DC X'0000',AL1(ESIDSDFB),X'00' SD-TYPE ESID FLAG 01780000
  1938. ESIDSDFB EQU X'40' SD-TYPE ESID BIT 01781000
  1939. ESIDLATE EQU X'20' WAITNG LABEL DEFINITIONS EXIST 01782000
  1940. SPACE 01783000
  1941. EJECT 01785000
  1942. DROP R8,R9 01786000
  1943. USING RELDR,0 GET HALF-WORD DISP FROM RELDR 01787000
  1944. USING RELDR+4096,1 @VA02616 01788000
  1945. DS 0H 01789000
  1946. XTRATBL EQU * FOR XEQ ENTRY ANALYSIS 01790000
  1947. DC S(XBYTE) 0 01791000
  1948. DC S(XHALF) 01792000
  1949. DC S(XCOMSET) 01793000
  1950. DC S(XFULL) 3 01794000
  1951. DC S(XCXD) 4 01795000
  1952. DC S(XUNDEF) 5 01796000
  1953. DC S(XUNDEF) 6 01797000
  1954. DC S(XDBL) 7 01798000
  1955. SPACE 1 01799000
  1956. ESDANAL EQU * FOR ESD ANALYSIS 01800000
  1957. DC S(C3AA3) 01801000
  1958. DC S(ENTESD) 01802000
  1959. DC S(C3AH1) 01803000
  1960. DC S(BADCRD) 01804000
  1961. DC S(C3AA3) TREAT PC AS CSECT 01805000
  1962. DC S(COMESD) 01806000
  1963. DC S(PRVESD) 01807000
  1964. DC S(BADCRD) 01808000
  1965. DROP 0,R1 @VA02616 01809000
  1966. USING RELDR,R8,R9 01810000
  1967. SPACE 1 01811000
  1968. DS 0F 01812000
  1969. FAKECXD DC X'FF' 01813000
  1970. DC CL7'CXD' 01814000
  1971. BLANKS EQU FAKECXD+4 FIELD OF BLANKS 01815000
  1972. SPACE 1 01816000
  1973. SPACE 2 01817000
  1974. LTORG 01818000
  1975. SPACE 01819000
  1976. PRTRAN DC X'7C7D827E8180807F' 01820000
  1977. DC X'000103070504020500000000000000000000000006' 01821000
  1978. TRANPR EQU *-X'90'-1 01822000
  1979. PCTYPE EQU X'04' PRIVATE CODE INDICATOR @VA04910 01823000
  1980. WKEXT EQU X'03' WEAK EXTERN INDICATOR 01824000
  1981. EJECT 01825000
  1982. ********************************************************************** 01826000
  1983. * 01827000
  1984. * CONTROL CARD PROCESSOR 01828000
  1985. * 01829000
  1986. ********************************************************************** 01830000
  1987. DS F 01831000
  1988. CTLCRD1 EQU * 01832000
  1989. SPACE 01833000
  1990. LA 1,SPEC SET P-LIST FOR 'SCAN' 01834000
  1991. STM R2,R15,APSV+8 SAVE REGS @VA02089 01835000
  1992. LA R0,80 SET COUNT TO 80 BYTES 01836000
  1993. USING NUCON,R0 01837000
  1994. MVC PLISTSAV(256),CMNDLIST SAVE SCAN WORK AREA 01838000
  1995. MVC PLISTSAV+256(256),CMNDLIST+256 01839000
  1996. L R15,ASCANN GET ADDRESS OF SCAN 01840000
  1997. BALR 14,15 AND AWAY WE GO ... 01841000
  1998. LM R2,R15,APSV+8 RESTORE REGS @VA02089 01842000
  1999. CLC 0(8,1),=CL8'ENTRY' IS IT ENTRY 01843000
  2000. BE CTLENT YES 01844000
  2001. CLC 0(8,1),=CL8'LIBRARY' IS IT LIBRARY 01845000
  2002. BE CTLLIB YES 01846000
  2003. MVC CMNDLIST(256),PLISTSAV RESTORE PLIST 01847000
  2004. MVC CMNDLIST+256(256),PLISTSAV+256 01848000
  2005. TM FLAG2,NOINV DO WE PRINT ILLEGAL CARDS ? 01849000
  2006. BC 8,BADCRD YES 01850000
  2007. B RD GET NEXT CARD 01851000
  2008. SPACE 2 01852000
  2009. CTLENT EQU * 01853000
  2010. LA R6,CTLRET RETURN FROM TABLE SEARCHING 01854000
  2011. MVC ENTNAME,8(R1) SAVE ENTRY NAME 01855000
  2012. CTLENT1 EQU * COME HERE IF RESET WAS SPECIFIED 01856000
  2013. LA 1,ENTNAME SET ADDRESS OF ENTRY NAME 01857000
  2014. LA 2,ENTNO SET 'NOT FOUND' ADDRESS 01858000
  2015. BAL 3,SERCH1 SEARCH LOADER TABLES 01859000
  2016. CTLENT2 TM FLAGS,RESET RESET 'NAME' IN EFFECT P3093 01860000
  2017. BCR 1,R6 YES, IGNORE ENTRY FUNCTION P3093 01861000
  2018. ST 12,ENTADR SAVE ADDRESS OF LOADER TABLE ENTRY 01862000
  2019. BR R6 RETURN TO CALLER 01863000
  2020. ENTNO EQU * 01864000
  2021. OI 8(12),X'80' INDICATE ENTRY UNDEFINED 01865000
  2022. OI FLAGS,LUNDEF NOTE THAT THERE ARE UNDEFINES 01866000
  2023. B CTLENT2 P3093 01867000
  2024. CTLRET EQU * 01868000
  2025. LA 5,CTLCRD SET I/O MESSAGE NUMBER 01869000
  2026. MVC OUTBUF+15(80),SPEC CARD IMAGE 01870000
  2027. L 11,ALDRIO LINKAGE ADDRESS 01871000
  2028. BALR R14,R11 PRINT CONTROL CARD 01872000
  2029. CTRESTR MVC CMNDLIST(256),PLISTSAV RESTORE SCAN WORK AREA 01873000
  2030. MVC CMNDLIST+256(256),PLISTSAV+256 01874000
  2031. B RD PROCESS NEXT CARD 01875000
  2032. SPACE 2 01876000
  2033. CTLLIB EQU * 01877000
  2034. CLI 8(1),C'*' IS IT NON-OBLIGATOEY REFERENCE 01878000
  2035. BE NONREF YES 01879000
  2036. CLI 8(1),C'(' IS IT NON-OBLIGATORY REFERENCE 01880000
  2037. BNE BADCRD NO, CONDIDER IT INVALID 01881000
  2038. NONREF EQU * 01882000
  2039. LA 11,1 SET A 1 INTO REG. 11 01883000
  2040. LA 6,SPEC SCAN FOR ( 01884000
  2041. LA R5,SPEC+79 POINT TO END OF CARD P3072 01885000
  2042. NONREF1 EQU * 01886000
  2043. AR 6,11 INCREMENT 01887000
  2044. CR R6,R5 AT END OF CARD P3072 01888000
  2045. BH BADCRD YES, SOMETHING WRONG P3072 01889000
  2046. CLI 0(6),C'(' IS IT ( 01890000
  2047. BNE NONREF1 NO 01891000
  2048. NONREF2 EQU * 01892000
  2049. MVC OUTBUF(8),=CL8' ' SPACE TO FORM NAME @VA09901 01893000
  2050. LA 7,OUTBUF-1 INITIALIZE POINTER 01894000
  2051. NONREF3 LA R5,SPEC+79 SET R5 TO END OF CARD P3089 01895000
  2052. AR 6,11 INCREMENT 01896000
  2053. CR R6,R5 AT END OF CARD P3072 01897000
  2054. BH BADCRD YES, SOMETHING WRONG P3072 01898000
  2055. AR 7,11 INCREMENT 01899000
  2056. CLI 0(6),C',' END OF NAME? 01900000
  2057. BE NONREFM YES 01901000
  2058. CLI 0(6),C')' END OF CONTROL CARD? 01902000
  2059. BE NONREFN YES 01903000
  2060. MVC 0(1,7),0(6) MOVE CHARACTER 01904000
  2061. B NONREF3 GET NEXT CHARACTER 01905000
  2062. SPACE 01906000
  2063. NONREFM EQU * 01907000
  2064. BAL 7,NONREFX MARK ENTRY 01908000
  2065. B NONREF2 GET NEXT ENTRY 01909000
  2066. SPACE 01910000
  2067. NONREFN EQU * 01911000
  2068. BAL 7,NONREFX MARK LAST ENTRY 01912000
  2069. B CTLRET PRINT CONTROL CARD 01913000
  2070. SPACE 01914000
  2071. NONREFX EQU * 01915000
  2072. LA 1,OUTBUF SET ADDR. OF ENTRY NAME 01916000
  2073. LA 2,NONREFNT SET 'NOT FOUND' RETURN 01917000
  2074. BAL 3,SERCH1 SEARCH LOADER TABLE 01918000
  2075. TM 8(12),X'80' IS IT DEFINED ALREADY 01919000
  2076. BZ 0(0,7) YES, TOO LATE TO BOTHER 01920000
  2077. TM REFLG2(R12),REFCMD DEFND BY CMD? @VA01699 01921000
  2078. BCR 7,R7 OVERRIDE LIBE CARD @VA01699 01922000
  2079. OI REFLG1(R12),REFLIB NOTE SKIP LIBE SEARCH @VA01699 01923000
  2080. BCR 15,7 RETURN TO CALLER 01924000
  2081. NONREFNT EQU * 01925000
  2082. OI REFLG1(R12),REFLIB+REFUND 'UNDEFINED' ALSO @VA01699 01926000
  2083. BCR 15,7 BACK TO CALLER 01927000
  2084. SPACE 01928000
  2085. LTORG 01929000
  2086. * 01930000
  2087. C16 EQU 16 @VA07537 01930100
  2088. C25 EQU 25 @VA07537 01930200
  2089. M1 EQU 1 BINARY MASK '0001' @VA12428 01930220
  2090. M2 EQU 2 BINARY MASK '0010' @VA12428 01930240
  2091. NGREL EQU X'01' @VA07537 01930300
  2092. COMMA EQU X'6B' SPECIAL CHARACTER: ',' @VA11353 01930400
  2093. ZEROES DC F'0' FOUR BYTES OF ZEROES @VA11353 01930500
  2094. M7 EQU 7 BINARY MASK '0111' @VA11353 01930600
  2095. EJECT 01931000
  2096. XPRTAB DSECT 01932000
  2097. SPACE 01933000
  2098. FULLAD DS 64D 01934000
  2099. DBLAD DS 32D 01935000
  2100. HALFAD DS 16D 01936000
  2101. BYTEAD DS 8D 01937000
  2102. COMMON DS 1F 01938000
  2103. CXDAD DS 1F 01939000
  2104. EJECT 01940000
  2105. LDRST 01941000
  2106. EPLIST HRC309DS 01941200
  2107. * 01942000
  2108. *********************************************************************** 01943000
  2109. * 01944000
  2110. * NUCLEUS CONSTANT AREA 01945000
  2111. * 01946000
  2112. *********************************************************************** 01947000
  2113. * 01948000
  2114. NUCON 01949000
  2115. SVCSAVE 01950000
  2116. END 01951000