Table of Contents

DMSOLD Source

References

Source Listing

DMSOLD.ASSEMBLE.txt
  1. OLD TITLE 'DMSOLD (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * SUBROUTINE NAME: 00004000
  5. * 00005000
  6. * DMSOLD 00006000
  7. * 00007000
  8. * FUNCTION: 00008000
  9. * 00009000
  10. * TO INITIALIZE FOR AND TO PERFORM EACH LOADING OPERATION 00010000
  11. * BY PROCESSING TEXT FILES WHICH MAY CONTAIN THE 00011000
  12. * FOLLOWING CARDS: SLC, ICS, ESD, TXT, REP, RLD, END, 00012000
  13. * LDT, LIBRARY, AND ENTRY. 00013000
  14. * 00014000
  15. * ATTRIBUTES: 00015000
  16. * 00016000
  17. * REENTRANT, DCSS/MODULE RESIDENT 00017000
  18. * 00018000
  19. * ENTRY POINTS: 00019000
  20. * 00020000
  21. * DMSOLD - ENTERED FROM DMSSLN WHEN LOAD REQUESTED 00021000
  22. * DMSLDRC - ENTERED BY VARIOUS LOADER ROUTINES WHEN AN INVALID 00022000
  23. * CARD IS DETECTED IN A TEXT FILE 00023000
  24. * DMSLDRD - ENTERED WHEN A FATAL ERROR OCCURS DURING LOADING 00024000
  25. * 00025000
  26. * ENTRY CONDITIONS: 00026000
  27. * 00027000
  28. * DMSLDRB R1=PLIST, R14=RETURN ADDRESS, 00028000
  29. * SAVES REGISTERS 9-12 00029000
  30. * PLIST - CL8'LOAD' 00030000
  31. * CL8'FILENAME1' 00031000
  32. * . . . . 00032000
  33. * CL8'FILENAMEN' 00033000
  34. * CL8'(' 00034000
  35. * CL8'OPTIONS' 00035000
  36. * CL8'FFFFFFFF' 00036000
  37. * 00037000
  38. * OPTIONS - 00038000
  39. * CL8'CLEAR' 00039000
  40. * CL8'START' 00040000
  41. * CL8'RESET', CL8'ENTRY NAME' 00041000
  42. * CL8'INV' OR CL8'NOINV' 00042000
  43. * CL8'REP' OR CL8'NOREP' 00043000
  44. * CL8'MAP' OR CL8'NOMAP' 00044000
  45. * CL8'ORIGIN', CL8'HEX LOCATION'|'TRANS' 00045000
  46. * CL8'NOLIBE' OR CL8'LIBE' 00046000
  47. * CL8'NOAUTO' OR CL8'AUTO' 00047000
  48. * CL8'TYPE' OR CL8'NOTYPE' 00048000
  49. * 00049000
  50. * 00050000
  51. * EXIT CONDITIONS: 00051000
  52. * 00052000
  53. * NORMAL - RETURN ON R14, LOADING COMPLETE . 00053000
  54. * 00054000
  55. * ERROR - ERROR MESSAGE TYPED, RETURN TO CALLER. 00055000
  56. * 00056000
  57. * CALLS TO OTHER ROUTINES: 00057000
  58. * 00058000
  59. * DMSLSBA - FROM VARIOUS ROUTINES FOR HEX TO BINARY CONVERSION 00059000
  60. * DMSLSBC - FROM ICS ROUTINE TO DEFINE CSECT, FROM ESD 00060000
  61. * TYPE 1 TO DEFINE ENTRY 00061000
  62. * DMSLSY - FROM ESD PRIVATE CODE RTN. 00062000
  63. * DMSLGTB - TO SETUP TEMPORARY TXTLIB DICTIONARIES. 00063000
  64. * DMSLIO - FOR ERROR MESSAGES AND LOAD MAP PROCESSING 00064000
  65. * DMSLIB - TO SEARCH TEXT LIBRARIES FOR UNDEFINED ENTRY NAMES 00065000
  66. * DMSSLNDY - FROM ESD ROUTINE IF OS LINK OR LOAD WAS ISSUED 00066000
  67. * DMSSCN - FROM CTLCRD1 TO A TEXT FILE CARD 00067000
  68. * DMSSMNSB - TO INITIALIZE FREE STORAGE IF START. 00068000
  69. * DMSBRD - TO READ TEXT FILES AND TXTLIBS. 00069000
  70. * DMSFNS - TO CLOSE READING 00070000
  71. * DMSLSBB - FROM RLD ROUTINE TO ADD TO UNDEFINED STRINGS 00071000
  72. * DMSLSBD - TO PROCESS LOADER OPTIONS 00072000
  73. * DMSLGTA - TO FREE TXTLIB DIRECTIONS 00073000
  74. * DMSFREB - FOR FREE STORAGE 00074000
  75. * 00075000
  76. * REGISTER USAGE: 00076000
  77. * 00077000
  78. * R8,R9 BASE 00078000
  79. * R13 - LDRST 00079000
  80. * REST - WORK 00080000
  81. * 00081000
  82. * OPERATION: DMSOLD 00082000
  83. * 00083000
  84. * 1. ACQUIRE AND INITIALIZE A WORK AREA (LDRST). 00084000
  85. * 00085000
  86. * 2. CALL DMSLIO TO SET UP LOADER I/O OPERATIONS. 00086000
  87. * 00087000
  88. * 3. IF TXTLIB DIRECTORIES ARE NOT IN FREE STORAGE, 00088000
  89. * CALL DMSLGTB TO BRING THEM IN. 00089000
  90. * 00090000
  91. * 4. CALL DMSLSBD TO PROCESS LOADER OPTION LIST. 00091000
  92. * 00092000
  93. * 5. PROCESS EACH TEXT FILE SEQUENTIALLY BY READING TEN 00093000
  94. * CARDS AT A TIME, THEN ANALYZING EACH OF THE CARDS 00094000
  95. * TO DETERMINE ITS TYPE. FOR EACH CARD, BRANCH TO 00095000
  96. * THE APPROPRIATE ROUTINE. 00096000
  97. * EACH ROUTINE WILL RETURN TO THIS READ 00097000
  98. * ROUTINE FOR THE NEXT CARD. 00098000
  99. * 00099000
  100. * 6. AT END-OF-FILE ON LAST TEXT FILE OR UPON FINDING 00100000
  101. * AN LDT CARD, BEGIN TXTLIB SEARCHING TO SATISFY ANY 00101000
  102. * UNDEFINED REFERENCES (DMSLIB). FOR EACH MATCH 00102000
  103. * DMSLIB WILL RETURN TO THE READ ROUTINE (IN STEP 5) 00103000
  104. * TO CONTINUE LOADING. 00104000
  105. * 00105000
  106. * 7. WHEN NO MORE MATCHES CAN BE MADE, SAVE SPECIFIED 00106000
  107. * STARTING ADDRESS, SAVE VALUE OF THE LOCATION 00107000
  108. * COUNTER, AND LIST ANY UNDEFINED ENTRIES AT THE 00108000
  109. * TERMINAL. 00109000
  110. * 00110000
  111. * 8. CLOSE TXTLIBS AND FREE THE WORK AREA 00111000
  112. * 00112000
  113. * 9. RETURN TO DMSSLN. 00113000
  114. * 00114000
  115. * NOTE: ANY CHANGES MADE TO THIS MODULE SHOULD 00115000
  116. * ALSO BE CONSIDERED FOR DMSLDR. 00116000
  117. *. 00117000
  118. EJECT 00118000
  119. DMSOLD START 0 @V305665 00119000
  120. ENTRY DMSLDRC,DMSLDRD @V305665 00120000
  121. EXTRN DMSLSBA,DMSLSBB,DMSLSBC @V305665 00121000
  122. RELDR EQU * @V305665 00122000
  123. BALR R8,0 @V305665 00123000
  124. BCTR R8,0 @V305665 00124000
  125. BCTR R8,0 @V305665 00125000
  126. USING RELDR,R8,R9 @VA05785 00126000
  127. LA R9,4095(0,R8) SET SECOND BASE REGISTER @VA05785 00127000
  128. LA R9,1(,R9) @VA05785 00128000
  129. LA 4,PERMIT SETUP TO TEST FOR PRINT CONTROL @V305665 00129000
  130. EJECT 00130000
  131. *********************************************************************** 00131000
  132. * 00132000
  133. * COMMON ROUTINE TO GET AND INITIALIZE THE LOADER 00133000
  134. * WORK AREA AND TO SET UP LOADER I/O 00134000
  135. * 00135000
  136. *********************************************************************** 00136000
  137. * 00137000
  138. INIT LR 2,1 SAVE ADDRESS OF PARAM LIST 00138000
  139. LR 3,14 AND ADDRESS OF RETURN LOCATION 00139000
  140. LA 0,NEED GET FREE STORAGE 00140000
  141. DMSFREE DWORDS=(0),TYPCALL=BALR 00141000
  142. USING LDRST,R1 00142000
  143. ST R13,REG13SAV PROTECT LDRST REGISTER 00143000
  144. DROP R1 00144000
  145. USING LDRST,R13 00145000
  146. LR 13,1 SAVE ADDR. OF SAVE AREA IN REG. 00146000
  147. ST 3,RETREG SAVE RETURN 00147000
  148. LR R1,R2 @VA02828 00148000
  149. LA R2,8(0,R2) GET TO FILENAMES 00149000
  150. ST R2,PARMLIST 00150000
  151. SRL R1,24 RESTORE CALL CODE @VA02828 00151000
  152. STC R1,PARMLIST @VA02828 00152000
  153. STM R9,R12,GPRSAV 00153000
  154. MVC BRAD(4),STRTADDR MOVE IN STARTING ADDRESS 00154000
  155. MVC TBLREF(4),ALDRTBLS MOVE IN TOP OF LOADER TBL ADDR 00155000
  156. MVC TBLCT(2),TBENT MOVE IN NUMBER OF LOADER TABLE ENTRIES 00156000
  157. MVC LOCCT(4),LOCCNT MOVE IN LOCATION COUNTER 00157000
  158. XC MEMBOUND(4),MEMBOUND 00158000
  159. XC LDRADDR+4(4),LDRADDR+4 CLEAR ERROR LOCATION 00159000
  160. SR 5,5 GET ZERO 00160000
  161. ST 5,FLAGS CLEAR LIBRARY FLAGS 00161000
  162. STC R5,FLAG3 CLEAR ANOTHER FLAG AREA @VA01699 00162000
  163. XC ENTADR,ENTADR CLEAR 'ENTRY' CARD POINTER 00163000
  164. XC ESIDTB(256),ESIDTB CLEAR ESDID TABLE 00164000
  165. XC ESIDTB+256(256),ESIDTB+256 CLEAR ESID TABLE @VA02083 00165000
  166. XC PRVCNT(2),PRVCNT CLEARING FIELD @VA05785 00166000
  167. NI LDRFLAGS,255-WORKFILE TURN RLD FLAG OFF NOW @VA10619 00166700
  168. NI LDRFLAGS+1,255-NOAUTO-NOLIBE ALLOW RESOLUTION @VA10619X00167300
  169. OF UNDEFINED NAMES 00167900
  170. MVC FLAG1(2),LDRFLAGS MOVE IN FLAGS FROM NUCON 00168000
  171. CLI UNRES,X'80' UNRESOLVED BIT ON? @VA02829 00169000
  172. BNE AWAY NO, CONTINUE NORMALLY @VA02829 00170000
  173. OI FLAGS,LUNDEF FORCE SEARCH FOR UNRESOLVED @VA02829 00171000
  174. AWAY LA R5,LDRSET SET UP LOADER I/O @VA02829 00172000
  175. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 00173000
  176. LR R14,R4 SET RETURN REG 00174000
  177. BR R11 GO SET I/O 00175000
  178. EJECT 00176000
  179. *********************************************************************** 00177000
  180. * 00178000
  181. * READ IN TEXT LIBRARY DIRECTORIES, PROCESS USER OPTIONS 00179000
  182. * 00180000
  183. *********************************************************************** 00181000
  184. * 00182000
  185. PERMIT L R5,TXTDIRC GET TXTLIB ANCHOR 00183000
  186. LTR R5,R5 ARE TXTLIB DIRECTORIES IN STOR. 00184000
  187. BNZ INIT1 YES, CONTINUE 00185000
  188. STM R0,R15,APSV SAVE REGS 00186000
  189. L R15,=V(DMSLGTB) GO READ THEM IN 00187000
  190. BALR R14,R15 00188000
  191. OI OSSFLAGS,OSRESET INDICATE CLEAN UP NEEDED 00189000
  192. INIT1 EQU * 00190000
  193. EJECT 00191000
  194. SPACE 1 00192000
  195. STM R0,R15,APSV SAVE REGISTERS 00193000
  196. L R15,=V(DMSLSBD) GO PROCEES USER OPTIONS 00194000
  197. BALR R14,R15 00195000
  198. * WHEN A SYSTEM MODULE IN EITHER THE USER AREA OR THE TRANSIENT AREA 00195025
  199. * IS TO BE REPLACED, THE ASSOCIATED PROTECTION FLAG MUST BE RESET. 00195050
  200. CLC FREELOWE+1(3),LOCCT+1 LOADING ABOVE USER AREA? @VA12751 00195075
  201. BNH TSTRESET YES, DON'T RESET FLAG @VA12751 00195100
  202. CLC AUSRAREA+1(3),LOCCT+1 LOADING IN USER AREA? @VA11814 00195125
  203. BH NOTUSER NO, CHECK FOR TRANSIENT @VA12751 00195250
  204. NI PROTFLAG,X'FF'-PRFUSYS RESET SYSTEM FLAG @VA11814 00195375
  205. B TSTRESET CONTINUE @VA11814 00195500
  206. NOTUSER EQU * @VA12751 00195530
  207. LA R6,X'01E0' LOAD REGISTER FOR TEST @VA12751 00195560
  208. CLM R6,M2,LOCCT+1 ABOVE TRANSIENT AREA? @VA12751 00195590
  209. BE TSTRESET DON'T RESET FLAG @VA12751 00195620
  210. CLM R6,M1,LOCCT+2 IN LOW-CORE FREE STORAGE? @VA12751 00195650
  211. BH TSTRESET YES, CONTINUE @VA12751 00195680
  212. NI PROTFLAG,X'FF'-PRFTSYS RESET FLAG FOR TRANSIENT @VA11814 00195750
  213. TSTRESET EQU * @VA11814 00195875
  214. TM FLAGS,RESET WAS RESET 'ENTRY' SPECIFIED 00196000
  215. BNO RDSET NO 00197000
  216. NI FLAGS,255-RESET TEMPORARILY TURN OFF P3093 00198000
  217. BAL R6,CTLENT1 YES, SET ENTRY NAME IN LDR TBL 00199000
  218. OI FLAGS,RESET TURN BACK ON P3093 00200000
  219. EJECT 00201000
  220. *********************************************************************** 00202000
  221. * 00203000
  222. * INPUT READ ROUTINE 00204000
  223. * 00205000
  224. *********************************************************************** 00206000
  225. * 00207000
  226. RDSET MVC READBUF(44),RDISK SET PLIST TO READ CARDS 00208000
  227. MVC FINIS(26),FDISK IMAGES FROM DISK 00209000
  228. OI FLAG3,CMD PROCESSING COMMAND LINE @VA01699 00210000
  229. LA 3,SPEC 00211000
  230. ST R3,READBUF+28 BUFFER ADR TO READ PLIST 00212000
  231. MVC SYSUT1(44),WORKSET SET WORK FILE PLIST 00213000
  232. ST R3,SYSUT1+28 BUFFER ADDRESS TO PLIST 00214000
  233. LA R1,SYSUT1 PLIST ADDRESS 00215000
  234. L R15,AERASE ERASE OLD WORK FILE V0304 00216000
  235. BALR R14,R15 V0304 00217000
  236. BC 15,CHKLST GO READ IN FIRST PARAMETER 00218000
  237. ERRDBF LA 5,12 WAS ERROR END OF FILE 00219000
  238. CR 15,5 00220000
  239. BC 8,FINISH YES - GO CLOSE OUT FILE 00221000
  240. MVC OUTBUF(18),8(R1) MOVE NAME TO BUFFER 00222000
  241. LA R5,RDERR62 SET CODE FOR READ ERROR MSG 00223000
  242. B FATERR TERMINATE LOADING 00224000
  243. * FILE NOT FOUND. IF DLYD IS ON, IT MEANS A LIBE ONLY SEARCH. 00225000
  244. FINISH LA 1,FINIS CLOSE FILE 00226000
  245. L R15,AFINIS V0304 00227000
  246. BALR R14,R15 V0304 00228000
  247. CHKLST L R3,PARMLIST UPDATE PARAMETER LIST POINTER 00229000
  248. CLI 0(3),X'FF' IS THERE ANOTHER PARAMETER TR 00230000
  249. BE LIBGO GO TO LIBE SERCH IN LDT 00231000
  250. CLI 0(R3),C'(' END OF FNAMES @VA00857 00232000
  251. BE LIBGO YES @VA00857 00233000
  252. MVC READBUF+8(8),0(R3) GET NEXT FILE FROM DISK 00234000
  253. MVC FINIS+8(8),0(3) 00235000
  254. HALF8 LA R3,8(R3,R0) UPDATE PLIST POINTER 00236000
  255. ST R3,PARMLIST SAVE IT 00237000
  256. LA R1,READBUF CHECK FOR FILE 00238000
  257. L R15,ASTATE 00239000
  258. BALR R14,R15 00240000
  259. LA R3,SPEC RESTORE BUFFER ADDRESS 00241000
  260. ST R3,READBUF+28 00242000
  261. BZ NXTRD FOUND IT OK 00243000
  262. CH R15,=H'28' WAS IT FILE NOT FOUND 00244000
  263. BE NTFND YES 00245000
  264. ST R15,LDRADDR+4 SAVE STATE ERROR CODE @VA02822 00246000
  265. B N03 TERMINATE LOADING 00247000
  266. NXTRD LA 1,SPEC PTR TO BUFFER AREA 00248000
  267. ST 1,CRDPTR SAVE IT 00249000
  268. LA R1,READBUF READ 10 CARDS 00250000
  269. L R15,ARDBUF V0304 00251000
  270. BALR R14,R15 V0304 00252000
  271. BNZ ERRDBF BRANCH IF ERROR V0304 00253000
  272. B RDCONT PROCEED 00254000
  273. NTFND EQU * @V1D1705 00255000
  274. LA R1,READBUF+8 SET NAME OF LIBE ENTRY NEEDED 00256000
  275. LA 2,LIB4FND SET NOT FOUND ADDRESS 00257000
  276. BAL 3,SERCH1 SEARCH LOADER TABLE 00258000
  277. TM OSSFLAGS,DYLD DYNAMIC LOAD @V1D1705 00259000
  278. BNO CKUND CHECK COMMD LINE PROC @VA01699 00260000
  279. MVC BRAD+1(3),13(R12) SET ENTRY ADDRESS FOR DMSSL@V1D1705 00261000
  280. CKUND TM REFLG1(R12),REFUND IF TXTLIB GLOBALED BETWEEN @VA01699 00262000
  281. BZ CKLIB LOAD AND INCLUDE, MAY MISS @VA01699 00263000
  282. B SETUND SEARCHING FOR UNDEFINEDS. @VA01699 00264000
  283. LIB4FND EQU * 00265000
  284. OI 8(12),X'80' MAKE UNDEFINED, FORCE LIBE SEARCH 00266000
  285. SETUND OI FLAGS,LUNDEF AT LEAST 1 UNDEFINED @VA01699 00267000
  286. CKLIB TM FLAG3,CMD IF PROCESSING COMMAND LINE @VA01699 00268000
  287. BZ SKPOBLIG NAME, OVERRIDE LIBRARY @VA01699 00269000
  288. OI REFLG2(R12),REFCMD CARD 'NO SEARCH' OPTION @VA01699 00270000
  289. NI REFLG1(R12),X'FF'-REFLIB RESET 'LIBE-SUPPRESS' @VA01699 00271000
  290. SKPOBLIG DS 0H @VA01699 00272000
  291. B CHKLST PROCESS NEXT FILE 00273000
  292. RD L 1,CRDPTR GET CURRENT CARD PTR 00274000
  293. LA 1,80(0,1) ADVANCE PTR 00275000
  294. LA R3,SPEC GET END OF DATA READ @VA01419 00276000
  295. A R3,NUMBYTE BY ADDING BYTES READ @VA01419 00277000
  296. CR 1,3 END OF CARD BUFF REACHED? 00278000
  297. BL GO STILL SOME LEFT IN BUFFER @VA01419 00279000
  298. CLC NUMBYTE,SETBYTE ARE WE AT END OF BUFFER ? @VA01419 00280000
  299. BE NXTRD YES, READ SOME MORE @VA01419 00281000
  300. B FINISH ELSE ALL DONE @VA01419 00282000
  301. GO ST R1,CRDPTR SAVE NEW RECORD POINTER @VA01419 00283000
  302. MVC SPEC(80),0(1) MOVE NEW CARD INTO SPEC 00284000
  303. RDCONT SR 6,6 ZERO 6 00285000
  304. LA 11,1 REGISTER 11 ALWAYS SET TO 1 00286000
  305. L 1,SPEC 00287000
  306. EJECT 00288000
  307. * 00289000
  308. *********************************************************************** 00290000
  309. * 00291000
  310. * SET LOCATION COUNTER ROUTINE (SLC) 00292000
  311. * THIS ROUTINE HAS TWO ENTRIES 00293000
  312. * (1) AT THE BEGINNING WHEN RESUME FALLLS THRU 00294000
  313. * (2) ORG2- USED TO OBTAIN THE CURRENT ADDRESS OF A GIVEN 00295000
  314. * SYMBOLIC LOCATION. 00296000
  315. * THIS ROUTINE SETS THE LOCATION COUNTER TO THE SLC- 00297000
  316. * CARD SPECIFIED ADDRESS AND/OR OBTAINS THE CURRENT 00298000
  317. * ADDRESS OF A GIVEN SYMBOLIC LOC. FROM THE REFTBL TABLE. 00299000
  318. * NOTE THAT IF NO ABS LOC IS PUNCHED AND THE SYMBOLIC NAME 00300000
  319. * IS AS YET UNDEFINED, AN ERROR IS CREATED. 00301000
  320. * 00302000
  321. *********************************************************************** 00303000
  322. * 00304000
  323. C 1,SLC 00305000
  324. BC 7,C2AE1 00306000
  325. CLI SPEC+6,C' ' CMP ADDR FOR BLANKS 00307000
  326. BC 7,C2AD BR- ADDR IN CRD 00308000
  327. OI FLAGS,NOSLCADR NO ADDR, TURN ON SWITCH 00309000
  328. BC 15,C2A 00310000
  329. C2AD LA 4,6(0,0) CONVERT ADDR TO BINARY 00311000
  330. LA 5,SPEC+6 00312000
  331. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00313000
  332. BALR 0,1 BR TO HEXB ROUTINE 00314000
  333. LTR R2,R2 BAD CONVERSION? @VA02089 00315000
  334. BM BADCRD YES, BRANCH TO ERROR @VA02089 00316000
  335. LR 6,0 SAVE ADDR IN REGISTER 00317000
  336. C2A CLI SPEC+16,C' ' TEST IMAGE FOR NAME 00318000
  337. * SYMBOL IS LEFT ADJUSTED 00319000
  338. BC 7,C2AE3 BR- NAME IN CRD 00320000
  339. TM FLAGS,NOSLCADR CHECK FOR ADR IN CARD 00321000
  340. BO BADCRD PRINT INVALID CARD 00322000
  341. SR 0,0 00323000
  342. C2B NI FLAGS,255-NOSLCADR RESET SWITCH 00324000
  343. AR 6,0 ADD CONVERTED ADDR TO ORG2 00325000
  344. ST 6,LOCCT SET THE LOCATION COUNTER 00326000
  345. BC 15,RD RETURN TO READ A CARD 00327000
  346. C2AE3 LA 2,ERRSLC 00328000
  347. BAL 3,SERCH 00329000
  348. LA 14,C2B LINK AGE 00330000
  349. L R0,12(0,R12) GET ABSOLUTE ADDRESS 00331000
  350. BCR 15,14 00332000
  351. ERRSLC LH 3,TBLCT 00333000
  352. SR 3,11 00334000
  353. STH 3,TBLCT 00335000
  354. LA 5,ERRORU 00336000
  355. LA 14,RD 00337000
  356. MVC OUTBUF(8),0(12) MOVE NAME TO BUFF 00338000
  357. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 00339000
  358. BR 11 GO PRINT 00340000
  359. EJECT 00341000
  360. *********************************************************************** 00342000
  361. * 00343000
  362. * INCLUDE CONTROL SECTION 00344000
  363. * ROUTINE (ICS) 00345000
  364. * 00346000
  365. *********************************************************************** 00347000
  366. * 00348000
  367. C2AE1 C 1,ICS 00349000
  368. BC 7,C3AA1 BR NO 00350000
  369. CLI SPEC+24,C' ' TEST FOR HEX ADDR 00351000
  370. BE BADCRD INVALID CARD 00352000
  371. LA 4,4 00353000
  372. LA 5,SPEC+24 TO BINARY 00354000
  373. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00355000
  374. BALR 0,1 BR TO HEXB 00356000
  375. LTR R2,R2 BAD CONVERSION? @VA02089 00357000
  376. BM BADCRD YES, BRANCH TO ERROR @VA02089 00358000
  377. LR 6,0 SAVE LENGTH IN REG 00359000
  378. LA 14,RD LOAD LINKAGE TO BRANCH TO RD WH 00360000
  379. LA 3,SYMDEF IF NAME IN REFTBL, IS IT DEFINE 00361000
  380. BAL 2,SERCH 00362000
  381. SAVELNTH EQU * RETURN HERE FROM SEARCH IF NAME NOT FOUND @VA12730 00362100
  382. STCM R6,M7,REFADDR(R12) SAVE CS LENGTH IN REFTBL @VA12730 00362200
  383. CLI SPEC+15,COMMA REQUEST FOR NEW CSECT? @VA12730 00362300
  384. BE CSECTDEF YES, SET CSECT FLAG @VA12730 00362400
  385. OI REFLG2(R12),REFICS ICS CARD WAITING FOR MATCH @VA12730 00362500
  386. BR R14 READ NEXT RECORD @VA12730 00362600
  387. CSECTDEF EQU * @VA12730 00362700
  388. OI REFLG2(R12),REFCSD IDENTIFY CSECT ENTRY @VA12730 00362800
  389. * ENTERED C2AJ1 FROM ESD00 ROUTINE 00363000
  390. C2AJ1 L 1,LOCCT LOD PRESENT LOCATION 00364000
  391. LA 1,7(0,1) ALIGN TO DBL WRD BOUND 00365000
  392. N 1,DBLBND ... 00366000
  393. ST 1,LOCCT ... 00367000
  394. LR 7,14 TEST FOR UNDEFINED BIT 00368000
  395. L 5,AADDEF AND DEFINE IF NECESSARY 00369000
  396. BALR 14,5 00370000
  397. ST R1,12(0,R12) STORE VALUE OF LOCCT IN REFTBL 00371000
  398. AR 1,6 UPDATE LOCCT 00372000
  399. ST 1,LOCCT 00373000
  400. SR 5,5 IO INDEX FOR ENTRY PRINT 00374000
  401. ST R5,8(0,R12) CLEAR FLAG BYTE OF REFTBL 00375000
  402. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 00376000
  403. BALR 14,11 GO PRINT NAME 'AT' LOC 00377000
  404. LR 14,7 00378000
  405. SR 6,6 00379000
  406. BCR 15,14 RETURNS TO RD OR C3AD4 (IN ESD 00380000
  407. SYMDEF EQU * NAME FOUND IN LOADER TABLE @VA12730 00380500
  408. CLI SPEC+15,COMMA NEW CSECT FOR INSERTION? @VA12730 00381000
  409. BE BADICS ERROR; MATCHING NAME IN TABLE @VA12730 00381500
  410. TM 8(R12),X'80' IS SYMBOL UNDEFINED? @VA12730 00382000
  411. BO SAVELNTH YES, FLAG ICS REQUEST @VA12730 00382500
  412. TM REFLG2(R12),REFICS IS ICS FOR SAME CSECT? @VA12730 00383000
  413. BO SAVELNTH GET UPDATED LENGTH @VA12730 00383500
  414. B BADICS NAME DEFINED; INVALID ICS CARD @VA12730 00384000
  415. EJECT 00385000
  416. *********************************************************************** 00386000
  417. * 00387000
  418. * DETERMINE IF ESD TYPE CARD 00388000
  419. * 00389000
  420. *********************************************************************** 00390000
  421. * 00391000
  422. C3AA1 C 1,ESD 00392000
  423. BC 7,C4AA1 NO- TEST FOR TXT CRD 00393000
  424. SPACE 1 00394000
  425. CA3A1 CLI SPEC+24,X'0A' WEAK EXTRN ? 00395000
  426. BE WEAKEXT YES 00396000
  427. NI SPEC+24,X'07' MASK ESD TYPE BYTE 00397000
  428. CLI SPEC+24,X'04' IS THIS A PC 00398000
  429. BE PC YES 00399000
  430. CA3A11 EQU * 00400000
  431. LH 12,SPEC+24 GET ESD NO 00401000
  432. SRL 12,8 (ISOLATE IT) JS 00402000
  433. AR 12,12 DOUBLE ESD NO. FOR JUMP-TBL, JS 00403000
  434. LH 12,ESDANAL(12) GET TBL ADDR FOR BRANCH 00404000
  435. LA R15,RELDR 00405000
  436. B 0(12,15) BRANCH TO APPROPRIATE ROUTINE 00406000
  437. EJECT 00407000
  438. *********************************************************************** 00408000
  439. * 00409000
  440. * ESD TYPE 1 ROUTINE (ENTRY) 00410000
  441. * 00411000
  442. *********************************************************************** 00412000
  443. * 00413000
  444. ENTESD SR R3,R3 CLEAR R3 00414000
  445. IC R3,SPEC+31 GET ID OF SECTION DEFINITION 00415000
  446. BAL 14,REFADR OBTAINS ADDR OF THE ENTRY IN RE 00416000
  447. LA R10,ESD00 SET PROCESS TO ESD00 00417000
  448. LATESD L R7,8(0,R12) LOAD RELOCATION FACTOR OF CSECT 00418000
  449. LA R7,0(0,R7) CLEAR FLAG BYTE 00419000
  450. STC 6,SPEC+24 (IF CSECT NOT DEFINED, BRANCH HERE) 00420000
  451. A 7,SPEC+24 FORM ENTRY POINT 00421000
  452. LA R7,0(0,R7) CLEAR HI BYTE P0966 00422000
  453. LA 2,C3AD1 NOT FOUND RETURN 00423000
  454. BAL 3,SERCH SEARCH FOR NAME IN REFTBL 00424000
  455. L R0,12(0,R12) LOAD ABSOLUTE ADDRESS 00425000
  456. TM 8(12),X'80' IS ENTRY DEFINED 00426000
  457. BC 1,C3AD2 NO - DEFINE IT 00427000
  458. TM FLAG1,NODUP IS MSG TO ISSUED ? @VM08875 00428000
  459. BO ESD1OK NO, BRANCH @VM08875 00429000
  460. MVC OUTBUF(8),0(12) MOVE NAME TO BUFF 00430000
  461. LA 5,ERRORM ERROR 202W 00431000
  462. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 00432000
  463. BALR 14,11 GO PRINT MESS AND NAME 00433000
  464. ESD1OK BR R10 GO TO ESD00 OR SDDEF RTN @VM08875 00434000
  465. C3AD2 LR 1,7 LOAD REG 1 FROM 7 00435000
  466. L 5,AADDEF 00436000
  467. BALR 14,5 00437000
  468. ST R1,12(0,R12) UPDATE REFTBL, STORE ABS. ADDRESS 00438000
  469. BC 15,PRNT 00439000
  470. C3AD1 ST R7,12(0,R12) STORE ABS. ADDR. IN REFTBL 00440000
  471. PRNT SR 5,5 IO INDEX FOR ENTRY PRINT 00441000
  472. ST R5,8(0,R12) CLEAR FLAG BYTE OF REFTBL 00442000
  473. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 00443000
  474. BALR 14,11 GO PRINT NAME 'AT' LOC 00444000
  475. BR R10 GO TO ESD00 OR SDDEF RTN 00445000
  476. EJECT 00446000
  477. *********************************************************************** 00447000
  478. * 00448000
  479. * ESD TYPE 0 + 4 ROUTINE (SEGMENT NAME + PRIVATE CODE) 00449000
  480. * 00450000
  481. *********************************************************************** 00451000
  482. * 00452000
  483. C3AA3 EQU * @V1D1705 00453000
  484. LR R11,R8 INSURE NON-ZERO R11 @VA04910 00454000
  485. TM FLAGS,ESD1ST IS FIRST ESDID SET YET? @VA04910 00455000
  486. BO C3AA3A BRANCH IF YES @VA04910 00456000
  487. SR R11,R11 INDICATE FIRST ESDID @VA04910 00457000
  488. C3AA3A EQU * @VA04910 00458000
  489. BAL R3,ESIDINC CHECK AND UPDATE ESDID NO. 00459000
  490. LA 2,C3AC3 NAME NOT IN TBL RETURN 00460000
  491. BAL 3,SERCH SEARCH FOR NAME IN REFTBL 00461000
  492. CLI SPEC+24,PCTYPE IS THIS PC CODE? @VA04910 00462000
  493. BNE CHKCOM BRANCH IF NOT @VA04910 00463000
  494. LTR R11,R11 WAS ESDID NUMBER UPDATED? @VA04910 00464000
  495. BNZ DECESID BRANCH IF YES @VA04910 00465000
  496. NI FLAGS,255-ESD1ST REMOVE ESD PROCESSED BIT @VA04910 00466000
  497. B PC GO TRY AGAIN @VA04910 00467000
  498. DECESID EQU * @VA04910 00468000
  499. LH R2,SPEC+14 GET ESDID NUMBER @VA04910 00469000
  500. BCTR R2,0 DECREMENT BY ONE @VA04910 00470000
  501. STH R2,SPEC+14 AND SAVE IT(KEEP ORIG.NO.) @VA04910 00471000
  502. B PC GET ANOTHER NUMBER @VA04910 00472000
  503. CHKCOM EQU * @VA04910 00473000
  504. CLI 8(12),X'82' WAS THIS NAME DEFINED AS COMMON @VA09317 00474000
  505. BE COMFIX2 YES IT WAS @VA09317 00475000
  506. TM REFLG2(R12),REFICS UNMATCHED ICS ENTRY? @VA12730 00475060
  507. BZ TSTUNDEF OTHERWISE UNDEFINED OR DUPLICATE @VA12730 00475120
  508. NI REFLG2(R12),255-REFICS RESET UNMATCHED FLAG @VA12730 00475180
  509. CLC SPEC+28(4),BLANKS LENGTH FIELD IN END CARD? @VA12730 00475240
  510. BE BADICS CANNOT HANDLE ICS REQUEST @VA12730 00475300
  511. ICM R6,M7,REFADDR(R12) LOAD NEW LENGTH FOR CSECT @VA12730 00475360
  512. MVC REFADDR(3,R12),ZEROES CLEAR REFTBL FIELD @VA12730 00475420
  513. LA R14,C3AD4 SET LINKAGE @VA12730 00475480
  514. B CSECTDEF GO TO DEFINITION ROUTINE @VA12730 00475540
  515. BADICS EQU * @VA12730 00475600
  516. LA R14,N03 SET RETURN ADDRESS FOR LIO @VA12730 00475660
  517. LA R5,ERRORB SET ERROR FUNCTION FOR LIO @VA12730 00475720
  518. L R11,ADMSLIO TYPE MESSAGE, SET RETURN CODE, @VA12730 00475780
  519. BR R11 AND EXIT @VA12730 00475840
  520. TSTUNDEF EQU * @VA12730 00475900
  521. TM 8(12),X'80' IS ENTRY DEFINED 00476000
  522. BC 7,C3AC3 NO - GET STARTING LOCATION 00477000
  523. TM FLAG1,NODUP IS MSG TO BE ISSUED ? @VM08875 00478000
  524. BO ESD0OK NO, BRANCH @VM08875 00479000
  525. LA 5,ERRORM ERROR 202W 00480000
  526. MVC OUTBUF(8),0(12) MOVE NAME TO BUFF 00481000
  527. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 00482000
  528. BALR 14,11 GO PRINT MESSAGE AND NAME 00483000
  529. ESD0OK LH R2,SPEC+14 GET ESID TABLE POSITION @VM08875 00484000
  530. AR R2,R2 TIMES TWO 00485000
  531. O R4,ESIDDUPF SET DUPLICATE SD FLAG 00486000
  532. STH 4,ESIDTB(2) STORE POINTER IN ESID TABLE 00487000
  533. B ESD00 GET NEXT CARD 00488000
  534. C3AD4 L R0,12(0,R12) GET ABS. ADDR. TO COMPUTE REL. FACTOR 00489000
  535. LH 2,SPEC+14 LOD ESID 00490000
  536. AR R2,R2 TIMES TWO 00491000
  537. SR R5,R5 CLEAR R5 00492000
  538. IC R5,ESIDTB(R2) SAVE FLAG FIELD 00493000
  539. SRL R5,4 ISOLATE 4 FLAG BITS V0308 00494000
  540. SLL R5,12 V0308 00495000
  541. OR R4,R5 00496000
  542. O R4,ESIDSDF SET SD FLAG 00497000
  543. STH 4,ESIDTB(2) PUT INDEX IN ESID TABLE 00498000
  544. STC 6,SPEC+24 LOD ASSEMBLED ADDR 00499000
  545. L 2,SPEC+24 00500000
  546. CR 0,2 00501000
  547. BC 5,COMP BR- ORG2 LESS THAN ADDR 00502000
  548. SR 0,2 00503000
  549. RELF STCM R0,B'0111',9(R12) SAVE RELOCATION FACTOR P0966 00504000
  550. LH R2,SPEC+14 GET ESID OF SD 00505000
  551. AR R2,R2 DOUBLE FOR ESIDTB INDEX 00506000
  552. LA R5,ESIDTB(R2) POINT TO ID TABLE ENTRY 00507000
  553. TM 0(R5),ESIDLATE ANY WAITING LD'S 00508000
  554. BO SDDEF YES, RESOLVE THEM 00509000
  555. BC 15,ESD00 READ ANOTHER CARD 00510000
  556. COMP SR 2,0 ADDRESS MINUS ORIGIN 00511000
  557. LCR 0,2 COMPLEMENT (TWOS) 00512000
  558. OI REFLG2(R12),REFNEG NEGATIVE RELOCATION FACTOR @VA12730 00513000
  559. BC 15,RELF 00514000
  560. C3AC3 EQU * @VA12730 00514600
  561. OI REFLG2(R12),REFCSD INDICATE CSECT @VA12730 00515200
  562. STC 6,SPEC+28 RETURNED HERE FOR NAME NOT FND 00516000
  563. L 6,SPEC+28 LOD SEGMENT LENGTH 00517000
  564. LA 14,C3AD4 00518000
  565. BC 15,C2AJ1 CK ADDR 00519000
  566. SPACE 4 00520000
  567. ESIDINC LH R2,SPEC+14 GET ESDID NUMBER 00521000
  568. CH R2,=X'00FF' COMPARE WITH 255 00522000
  569. BH ESDTBOVR ERROR IF > 255 00523000
  570. TM FLAGS,ESD1ST IS THIS 1ST ESDID ON CARD 00524000
  571. BZ FSTESD YES, DON'T INCREMENT 00525000
  572. LA 2,1(0,2) ADD 1 00526000
  573. STH 2,SPEC+14 INSERT AS NEW ESID NO 00527000
  574. FSTESD OI FLAGS,ESD1ST INDICATE FIRST ESD PROCESSED THIS CARD 00528000
  575. BR 3 RETURN TO CALLER 00529000
  576. COMFIX2 MVI 8(12),X'80' CHANGE IT TO REAL CSECT 00530000
  577. L 6,8(,12) GET LENGHTH UP UNTIL NOW 00531000
  578. LA 6,0(,6) CLEAR HIGH ORDER BYTE 00532000
  579. MVI SPEC+28,0 00533000
  580. C 6,SPEC+28 WAS PREV LENGTH GTR THAN CSECT 00534000
  581. BNL COMFIX3 BR YES 00535000
  582. L 6,SPEC+28 NO USE THIS LENGTH 00536000
  583. COMFIX3 ST 6,SPEC+28 00537000
  584. LA 14,C3AD4 GO TO ICS 00538000
  585. BC 15,C2AJ1 00539000
  586. ESDTBOVR LA R5,ESDOVER 00540000
  587. B FATERR TERMINATE 00541000
  588. EJECT 00542000
  589. *********************************************************************** 00543000
  590. * 00544000
  591. * ESD TYPE 2 ROUTINE (EXTRN) 00545000
  592. * THIS ROUTINE HAS TWO ENTRY POINTS. LOC C3AH1 AND LOC ESD00 00546000
  593. * LOCATION C3AH1 IS ENTERED FROM THE ESD CARD ANALYSIS ROUTINE 00547000
  594. * LOCATION ESD00 IS ENTERED FROM... 00548000
  595. * 1. THE ESD CARD ANALYSIS ROUTINE WHEN THE CARD BEING 00549000
  596. * PROCESSED IS A TYPE 1OR 2 , AND AN ABS LOAD IS INDICATED 00550000
  597. * 2. THE ESD TYPE 0 ROUTINE AND TYPE 1 ENTER AS THE LAST 00551000
  598. * STEP OF THESE ROUTINES 00552000
  599. *********************************************************************** 00553000
  600. * 00554000
  601. C3AH1 BAL 3,ESIDINC GO CHECK + UPDATE ESID NO 00555000
  602. LA R2,C3AH2 NOT FOUND RETURN 00556000
  603. BAL R3,SERCH LOOK FOR NAME IN REFTBL 00557000
  604. CLI 8(R12),X'83' WEAK EXTRN REFERENCE P3093 00558000
  605. BNE COM01 NO P3093 00559000
  606. L R2,12(,R12) GET RELOCATION FACTOR @VM08899 00560000
  607. ST R2,TEMPST SAVE FOR A WHILE @VM08899 00561000
  608. XC 0(20,R12),0(R12) ZERO OUT WXTRN ENTRY @VM08899 00562000
  609. BAL R2,SERCH GO PROMOTE ENTRY IN LDRTBLS @VM08899 00563000
  610. L R2,TEMPST GET RELOCATION FACTOR @VM08899 00564000
  611. ST R2,12(,R12) STORE IN NEW LOCATION @VM08899 00565000
  612. OI 8(R12),X'80' TURN UNDEFINED BIT ON @VM08899 00566000
  613. OI FLAGS,LUNDEF SHOW UNDEF TO LIBE @VM08899 00567000
  614. COM01 LH R2,SPEC+14 GET ESID NUMBER 00568000
  615. SLL 2,1 TIMES TWO 00569000
  616. STH 4,ESIDTB(2) PUT INDEX IN ESID TABLE 00570000
  617. ESD00 LA 2,16 TEST FOR MULTIPLE ENTRIES IN CA 00571000
  618. LH 1,SPEC+10 00572000
  619. SR 1,2 00573000
  620. BC 3,C3AH5 00574000
  621. NI FLAGS,255-ESD1ST RESET FIRST ESD FLAG 00575000
  622. B RD NEXT CARD @V1D1705 00576000
  623. C3AH5 MVC SPEC+16(32),SPEC+32 00577000
  624. STH 1,SPEC+10 00578000
  625. BC 15,CA3A1 00579000
  626. C3AH2 OI 8(12),X'80' PLACE UNDEFINED BIT ON 00580000
  627. OI FLAGS,LUNDEF SHOW UNDEFS TO LIBE 00581000
  628. SR 3,3 CLEAR REGISTER 3 00582000
  629. ST 3,12(,12) STORE ZERO IN RELOCATION FACTOR 00583000
  630. B COM01 FINISH 00584000
  631. EJECT 00585000
  632. ********************************************************************** 00586000
  633. * 00587000
  634. * ESD TYPE A (WEAK EXTRN) 00588000
  635. * 00589000
  636. ********************************************************************** 00590000
  637. SPACE 00591000
  638. WEAKEXT BAL R3,ESIDINC CHECK ESID 00592000
  639. LA R2,WEAKEXT1 NOT FOUND RETURN 00593000
  640. BAL R3,SERCH LOOK FOR NAME IN REFTBL 00594000
  641. B COM01 FINISH 00595000
  642. WEAKEXT1 OI 8(R12),WKEXT INDICATE WEAK EXTRN 00596000
  643. B C3AH2 FINISH 00597000
  644. EJECT 00598000
  645. *********************************************************************** 00599000
  646. * 00600000
  647. * ESD 5 + 6 ROUTINE (COMMON + PSEUDO REGISTER ) 00601000
  648. * 00602000
  649. *********************************************************************** 00603000
  650. SPACE 1 00604000
  651. COMESD BAL 3,ESIDINC GO CHECK + UPDATE ESID NO 00605000
  652. LA 2,COM03 00606000
  653. BAL 3,SERCH 00607000
  654. TM REFLG2(R12),REFICS ICS FLAG SET ON? @VA12730 00607300
  655. BO BADICS INVALID MATCH @VA12730 00607600
  656. TM 8(12),X'80' 00608000
  657. BZ COM01 00609000
  658. CLI 8(R12),X'82' PREVIOUSLY DEFINED AS COMMON @V201005 00610000
  659. BNER R2 TO 'COM04' - SKIP LENGTH CK @VA01759 00611000
  660. CLC 9(3,12),SPEC+29 GET LONGEST COMMON 00612000
  661. BNL COM04 KEEP OLD LENGTH 00613000
  662. COM03 MVC 9(3,12),SPEC+29 MOVE CURRENT LENGTH 00614000
  663. COM04 MVI 8(R12),X'82' DEFINE AS COMMON @V201005 00615000
  664. OI FLAG1,COMMONEX INDICATE COMMON EXISTS 00616000
  665. B COM01 TR 00617000
  666. EJECT 00618000
  667. * HANDLE PR (PSEDUO-REGISTER) 00619000
  668. PRVESD BAL R3,ESIDINC CHECK AND UPDATE ESID NUMBER @V1D1705 00620000
  669. CLI SPEC+28,C' ' BLANK ALIGNMENT FACTOR @V201005 00621000
  670. BNE NONBLANK NO @V201005 00622000
  671. MVI SPEC+28,X'03' REPLACE WITH WORD ALIGN @V201005 00623000
  672. NONBLANK LA R2,DEFENTRY IN CASE NOT FOUND @V201005 00624000
  673. BAL 3,PRSERCH LOOK FOR ENTRY IN REFTBL 00625000
  674. TM REFLG2(R12),REFICS ICS FLAG SET ON? @VA12730 00625300
  675. BO BADICS INVALID MATCH @VA12730 00625600
  676. LH 2,SPEC+14 GET ESDID NO. 00626000
  677. SLL 2,1 TIMES TWO 00627000
  678. STH 4,ESIDTB(2) PUT INDEX IN ESID TABLE 00628000
  679. CLC 9(3,12),SPEC+29 OLD LENGTH GREATER THAN NEW 00629000
  680. BNL ALTST YES, CHECK ALIGNMENT 00630000
  681. MVC 9(3,12),SPEC+29 NO, KEEP GREATER LENGTH 00631000
  682. ALTST TR SPEC+28(1),PRTRAN ENCODE ALIGNMENT BYTE @V201005 00632000
  683. CLC 8(1,12),SPEC+28 IS NEW AL MORE RESTRICTIVE 00633000
  684. BNL ESD00 NO, LOOK FOR MORE ESD'S 00634000
  685. LA 5,PRERR GET MESS # FOR PR ERR 00635000
  686. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 00636000
  687. BALR 14,11 ... 00637000
  688. B ESD00 BACK FOR MORE ESD'S 00638000
  689. DEFENTRY LH 2,SPEC+14 GET ESDID NO 00639000
  690. SLL 2,1 TIMES TWO 00640000
  691. STH 4,ESIDTB(2) PUT INDEX IN ESID TABLE 00641000
  692. MVC 8(4,12),SPEC+28 PUT LENGTH AND ALIGN IN ENTRY 00642000
  693. OI FLAG1,PREXIST INDICATE PR EXISTS 00643000
  694. SR 2,2 GET A ZERO 00644000
  695. IC 2,SPEC+28 GET FLAG BYTE 00645000
  696. LCR 4,2 AND ITS COMPLEMENT 00646000
  697. BCTR 4,0 ... 00647000
  698. AH R2,PRVCNT ALIGN PR DISPLACEMENT 00648000
  699. NR 2,4 ... 00649000
  700. ST 2,12(0,12) STORE IN REFTBL 00650000
  701. AH 2,10(0,12) ADD LENGTH 00651000
  702. STH R2,PRVCNT AND STORE AS NEW COUNT 00652000
  703. TR 8(1,12),PRTRAN CODE ALIGN BYTE 00653000
  704. B ESD00 BACK FOR MORE ESD'S 00654000
  705. EJECT 00655000
  706. ****************************************************************** 00656000
  707. * 00657000
  708. * ESD 04 PRIVATE CODE 00658000
  709. * 00659000
  710. ****************************************************************** 00660000
  711. * 00661000
  712. PC EQU * @V1D1705 00662000
  713. L R15,=V(DMSLSY) CREATE A UNIQUE SYMBOL 00663000
  714. BALR R14,R15 00664000
  715. MVC SPEC+16(8),NXTSYM MOVE SYMBOL TO ESD NAME FIELD 00665000
  716. MVI SPEC+16,C'.' 00666000
  717. B CA3A11 00667000
  718. EJECT 00668000
  719. *********************************************************************** 00669000
  720. * 00670000
  721. * TEXT CARD ROUTINE (TXT) 00671000
  722. * 00672000
  723. *********************************************************************** 00673000
  724. * 00674000
  725. C4AA1 C 1,TXT 00675000
  726. BC 7,C4AA3 BR- NOT TEXT CRD 00676000
  727. STC 6,SPEC+4 00677000
  728. LH 7,SPEC+10 NUM OF BYTES 00678000
  729. LTR 7,7 00679000
  730. BC 8,RD ZERO COUNT - DON'T NOVE ANY DAT 00680000
  731. LA R15,C4AK2+2 LINKAGE 00681000
  732. REPENT LH R3,SPEC+14 GET ESDID TO FIND ADDRESS @V1D1705 00682000
  733. LTR R3,R3 IS ESD ID VALID? @VA09103 00682300
  734. BNP BADCRD NO, THROW IT OUT @VA09103 00682600
  735. SLL 3,1 CHECK ESID TABLE 00683000
  736. LH 12,ESIDTB(3) ... 00684000
  737. LTR 12,12 IS IT NEGATIVE ENTRY (ALREADY LOADED) 00685000
  738. BM RD YES, SKIP IT 00686000
  739. SRL 3,1 NO, RESET CONDITIONS AND CONTINUE 00687000
  740. BAL 14,REFADR 00688000
  741. L R10,8(0,R12) LOAD RELOCATION FACTOR 00689000
  742. C4AC2 A 10,SPEC+4 ADD ADDR TO RELFAC 00690000
  743. LA R10,0(0,R10) CLEAR HI BYTE P0966 00691000
  744. ST 10,SPEC+4 00692000
  745. LR 1,10 00693000
  746. AR 1,7 00694000
  747. LA R5,ERRORC ERROR 709S 00695000
  748. TM BATFLAGS,BATLOAD BATCH BEING LOADED? V0742 00696000
  749. BO C4AJ2 YES: ALLOW FREE STORAGE LOAD V0742 00697000
  750. TM MODFLGS,SYSLOAD SYSTEM LOAD ? @VA04666 00698000
  751. BO C4AJ2 YES, ALLOW FREE STORAGE LOAD @VA04666 00699000
  752. TM OSSFLAGS,DYLD OS TYPE LOAD ? @V1D1705 00700000
  753. BNO NONDYNA BR IF NOT @V1D1705 00701000
  754. C R1,DYNAEND CHECK AGAINST GETMAINED AREA @V1D1705 00702000
  755. BC 11,FATERR ERROR IF TOO HIGH @V1D1705 00703000
  756. B NONDY2 @V1D1705 00704000
  757. NONDYNA EQU * @V1D1705 00705000
  758. C R1,FREELOWE WOULD WE OVERLAY FREE STOR 00706000
  759. BC 11,FATERR YES - ERROR 00707000
  760. NONDY2 EQU * @V1D1705 00708000
  761. C R10,AUSRAREA ARE WE BELOW USER STOR ? 00709000
  762. BNL C4AJ2 BNL IF NO PROBLEM. JS 00710000
  763. C R1,ALAST ABOVE TRANS AREA? @V305665 00711000
  764. BH FATERR YES, OVERLAY ERROR @VA02752 00712000
  765. C R1,ADTRANS BELOW TRANSIENT AREA? @V305665 00713000
  766. BL FATERR YES, OVERLAY ERROR 00714000
  767. C4AJ2 TM FLAG1,FSTXTADR HAS 1ST TEXT ADDRESS BEEN SAVED ? 00715000
  768. BO C4AK2 YES DON'T SAVE 00716000
  769. OI FLAG1,FSTXTADR INDICATE TEXT ADR SAVED 00717000
  770. ST 10,BRAD SAVE FIRST ADDR LOADED INTO 00718000
  771. C4AK2 BCR 15,R15 LINKAGE 00719000
  772. SR 7,11 SUB ONE FROM NUM OF BYTES 00720000
  773. EX 7,CHAR MOVE TEXT TO STORAGE 00721000
  774. BC 15,RD AND GO READ A CARD 00722000
  775. * 00723000
  776. CHAR MVC 0(1,10),SPEC+16 00724000
  777. EJECT 00725000
  778. *********************************************************************** 00726000
  779. * 00727000
  780. * REPLACE CARD ROUTINE (REP) 00728000
  781. * 00729000
  782. *********************************************************************** 00730000
  783. * 00731000
  784. C4AA3 C 1,REP 00732000
  785. BC 7,C5AA1 BR- NOT REPLACE CARD 00733000
  786. TM FLAG2,NOREP IS REP CARD PRINTING SUPPRESSED 00734000
  787. BC 1,C4AA4 YES 00735000
  788. LA 5,CRDIMJ GO PRINT OUT REP CARD IMAGE 00736000
  789. MVC OUTBUF(79),SPEC+1 MOVE CRD IMAJE TO BUFF 00737000
  790. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 00738000
  791. BALR 14,11 GO PRINT REP CARD 00739000
  792. C4AA4 LA 4,6 CONVERT REP CRD HEX ADDR TO BIN 00740000
  793. LA 5,SPEC+6 00741000
  794. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00742000
  795. BALR 0,1 BR TO HEXB 00743000
  796. LTR R2,R2 BAD CONVERSION? @VA02089 00744000
  797. BM BADCRD YES, BRANCH TO ERROR @VA02089 00745000
  798. ST 0,SPEC+4 SAVE ADDR IN CARD IMAGE 00746000
  799. LA 4,2(0,0) 00747000
  800. LA 5,SPEC+14 CONVERT REP ESID TO BIN 00748000
  801. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00749000
  802. BALR 0,1 BR TO HEXB 00750000
  803. STH 0,SPEC+14 SAVE THE ESID IN CARD IMAGE 00751000
  804. LA 5,SPEC+16 00752000
  805. NUM LA 7,2 NUM OF BYTES 00753000
  806. ST 5,TMPLOC 00754000
  807. TM FLAG2,APRILB 00755000
  808. BC 1,APR10 00756000
  809. BAL R15,REPENT CK ADDR 00757000
  810. APRIL LA 4,4 CONVERT HALF WORD OF CORRECTION 00758000
  811. L 5,TMPLOC 00759000
  812. L 1,HEXBB LOAD CONVERSION ROUTINE ADDRESS 00760000
  813. BALR 0,1 BR TO HEXB 00761000
  814. L R1,SPEC+4 LOD REPLACE ADDR 00762000
  815. STH 0,0(0,R1) PLACE CORRECTION IN STORAGE 00763000
  816. NI FLAG2,255-APRILB 00764000
  817. CLI 0(5),C',' 00765000
  818. BC 7,RD 00766000
  819. OI FLAG2,APRILB 00767000
  820. LA R1,2(R1,0) 00768000
  821. ST R1,SPEC+4 SAVE REPLACE ADDR 00769000
  822. AR 5,11 00770000
  823. BC 15,NUM 00771000
  824. APR10 LA R15,APRIL 00772000
  825. SR R10,R10 ZERO RELOCATION FACTOR @V1D1705 00773000
  826. B C4AC2 @V1D1705 00774000
  827. EJECT 00775000
  828. *********************************************************************** 00776000
  829. * 00777000
  830. * RELOCATION DICTIONARY CARD (RLD) 00778000
  831. * REG 6= 0 UPON ENTRY INTO C5AA1 00779000
  832. * 00780000
  833. *********************************************************************** 00781000
  834. SPACE 1 00782000
  835. C5AA1 C 1,RLD IS IT RLD 00783000
  836. BNE C6AA1 NO,TEST FOR END 00784000
  837. LA R1,SYSUT1 PLIST ADR 00785000
  838. L R15,AWRBUF WRITE RLD CARD TO WORK FILE V0304 00786000
  839. BALR R14,R15 V0304 00787000
  840. BNZ ERRUTW BRANCH ON ERROR V0304 00788000
  841. OI FLAG1,WORKFILE INDICATE RLD EXISTS 00789000
  842. B RD PROCESS NEXT CARD 00790000
  843. PASSTWO TM FLAG1,WORKFILE ANY RLDS ? 00791000
  844. BNO C6AB6 NO, FINISH THE LOAD 00792000
  845. NI FLAG1,255-WORKFILE RESET WORKFILE IND. 00793000
  846. LA R1,SYSUT1 PLIST ADDRESS TO R1 00794000
  847. L R15,AFINIS CLOSE WORK FILE V0304 00795000
  848. BALR R14,R15 V0304 00796000
  849. BNZ ERRUTW BRANCH ON ERROR V0304 00797000
  850. SR R6,R6 GET A ZERO 00798000
  851. NXTRLDCD LA R1,SYSUT1 ADDRESS OF PLIST 00799000
  852. L R15,ARDBUF READ AN RLD RECORD FROM WORK FILE V0304 00800000
  853. BALR R14,R15 V0304 00801000
  854. BNZ ERRUT1RD BRANCH IF ERROR V0304 00802000
  855. LA 10,SPEC+16 ADDRESS OF DATA FIELD IN 10 00803000
  856. C5AC1 EQU * @VA11245 00803300
  857. ST R6,SAV67 INDICATE ESID POINTER NOT SAVED @VA11245 00803600
  858. LR R6,R10 POINT TO CURRENT DATA FIELD @VA11245 00803900
  859. LR R11,R10 SAVE PTR TO CURRENT DATA FIELD @VA11849 00804050
  860. C5AC1A EQU * @VA11245 00804200
  861. LH R3,0(0,R6) GET RH ESID @VA11245 00804500
  862. N R3,=X'00007FFF' MASK ID FIELD 00805000
  863. LTR 3,3 IS IT 0 00806000
  864. BZ CXDTST YES, CHECK FOR PR CUM LENGTH 00807000
  865. CXDRET BAL 14,REFADR GET ADDR OF ENTRY IN REFTBLE 00808000
  866. ST 12,TEMPST SAVE ADDRESS 00809000
  867. C R12,TBLREF IS TXT ADDR INVALID @VA06291 00810000
  868. BE RLDABND YES. R12 IS AT STORAGE END @VA06291 00811000
  869. SR R0,R0 GET A ZERO @V201005 00812000
  870. TM 8(R12),X'80' IS NAME DEFINED @V201005 00813000
  871. BO PLOAD1 NO @V201005 00814000
  872. L R0,12(R12) GET NAME'S ADDRESS @V201005 00815000
  873. TM 4(R10),X'30' NON BRANCH ADCON @V201005 00816000
  874. BNZ PLOAD1 NO @V201005 00817000
  875. LH R3,0(0,R6) TEST IF SD ESIDTB @VA11245 00818000
  876. N R3,=X'00007FFF' MASK ID FIELD @VM08509 00819000
  877. AR R3,R3 MULT. BY TWO @VM08509 00820000
  878. LA R3,ESIDTB(R3) GET ADDR OF ESIDTB ENTRY @VM08509 00821000
  879. TM 0(R3),ESIDSDFB TEST ESID SD BIT @VM08509 00822000
  880. BNO PLOAD1 NO @V201005 00823000
  881. L R0,8(R12) YES, USE RELOCATION FACTOR @V201005 00824000
  882. TM REFLG2(R12),REFNEG NEGATIVE RELOCATION FACTOR? @VA12730 00825000
  883. BNO PLOAD1 NO @V1D1705 00826000
  884. ICM R0,B'1000',=X'FF' COMPENSATE FOR 3 BYTE RELOCA@V1D1705 00827000
  885. PLOAD1 EQU * @VA11245 00827500
  886. LH R3,2(0,R6) GET PH @VA11245 00828000
  887. SR R6,R6 RESTORE TO ZERO @VA11245 00828500
  888. N R3,=X'00007FFF' MASK ID FIELD 00829000
  889. LTR 3,3 IS IT 0 00830000
  890. BZ BADCRD2 YES, BAD CARD @VA01260 00831000
  891. SLL 3,1 CHECK ESID TABLE 00832000
  892. LH 12,ESIDTB(3) ... 00833000
  893. LTR 12,12 IS IT NEGATIVE ENTRY (ALREADY LOADED) 00834000
  894. BM SKIPRLD YES, SKIP THESE ENTRIES 00835000
  895. SRL 3,1 NO, RESET CONDITIONS AND CONTINUE 00836000
  896. BAL 14,REFADR GET REFTBL ADDR OF PH 00837000
  897. L R15,8(0,R12) GET REL. FACTOR OF PH 00838000
  898. BAL 14,CTR SEE IF END OF CARD 00839000
  899. SPACE 2 00840000
  900. C5AA3 AR 10,5 ADDR OF NEXT 4 BYTE DATA FIELD 00841000
  901. BCTR 5,0 C(REG 5) = 3 00842000
  902. IC 6,0(0,10) GET FLAG BYTE 00843000
  903. SRL 6,2 SHIFT OVER LENGTH BITS 00844000
  904. NR 6,5 MASK OUT ALL BUT LAST 2 BITS 00845000
  905. LA R5,RLDCONST+3 POINT TO WORK AREA +3 @V201005 00846000
  906. SR R5,R6 BACK UP ACCORDING TO ADCON LENGTH@V201005 00847000
  907. L 3,0(0,10) GET ASSIGNED ADDRESS OF (CON) 00848000
  908. LA 3,0(3,R15) COMPUTE LOADED ADDRESS 00849000
  909. TM 0(R10),X'30' NONBRANCH ADCON @V201005 00850000
  910. BNZ ZERO NO @V201005 00851000
  911. EX R6,MVCFROM MOVE RLD CONSTANT TO WORK AREA @V201005 00852000
  912. ZERO L R4,RLDCONST GET CONSTANT IN R4 @V201005 00853000
  913. TM 0(10),X'02' SHOULD WE SUBTRACT 00854000
  914. BO C5AE4 YES GO DO IT 00855000
  915. AR 4,R0 VAL=CON+ RH REL FAC 00856000
  916. EJECT 00857000
  917. COMPP ST R4,RLDCONST PUT VALUE BACK IN RLD CONST 00858000
  918. EX R6,MVCTO MOVE CONSTANT TO STOR. @V201005 00859000
  919. L 12,TEMPST GET ADDRESS OF RH SYMBOL 00860000
  920. TM 8(12),X'80' IS ENTRY DEFINED? 00861000
  921. BZ CTEX1 YES, SKIP REMEMBERING RTN. @V201005 00862000
  922. L 7,APPNT GET ADDRESS OF APOINT 00863000
  923. BALR 14,7 GO ADD TO STRING OF UNDEF'S 00864000
  924. CTEX1 SR R6,R6 GET 0 @V201005 00865000
  925. BAL 14,CTR CHECK FOR END OF CARD 00866000
  926. TM 0(10),X'01' NEXT RH + PH SAME AS THIS ONE 00867000
  927. BNO NXTENTRY NO, READ NEW DATA FIELD @VA11245 00867130
  928. TM 0(R10),X'30' IF SAME, COMPARE FLAGS @VA11245 00867260
  929. BZ BRTEST1 FIRST ENTRY IS NON-BRANCH @VA11245 00867390
  930. TM 4(R10),X'30' CHECK SECOND ENTRY @VA11245 00867520
  931. BNZ C5AA3 BOTH ARE BRANCH ADCONS @VA11245 00867650
  932. B BRTEST2 MIXED TYPES, REREAD ESID DATA @VA11245 00867780
  933. BRTEST1 EQU * @VA11245 00867910
  934. TM 4(R10),X'30' CHECK SECOND ENTRY @VA11245 00868040
  935. BZ C5AA3 BOTH ARE NON-BRANCH ADCONS @VA11245 00868170
  936. BRTEST2 EQU * @VA11245 00868300
  937. LH R4,SPEC+10 GET REMAINING BYTES IN RLD CARD @VA11849 00868430
  938. AR R4,R5 ADD 4 TO ADJUST FOR REREADING @VA11849 00868560
  939. STH R4,SPEC+10 STORE ADJUSTED BYTE COUNT @VA11245 00868690
  940. L R6,SAV67 LOAD REGISTER FOR TEST @VA11245 00868820
  941. LTR R6,R6 WAS ESID POINTER SAVED? @VA11245 00868950
  942. BNZ C5AC1A YES, REREAD RH AND PH @VA11245 00869080
  943. LR R6,R11 POINT BACK TO CURRENT ESID'S @VA11849 00869280
  944. ST R6,SAV67 SAVE THE POINTER @VA11245 00869470
  945. B C5AC1A BACK TO REREAD RH AND PH @VA11245 00869600
  946. NXTENTRY EQU * @VA11245 00869730
  947. AR R10,R5 GET ADDRESS OF NEXT DATA FIELD @VA11245 00869860
  948. B C5AC1 BACK TO GET NEW PH + RH 00870000
  949. C5AE4 SR 4,R0 SUB RH FROM ASSIGNED VAL 00871000
  950. B COMPP BACK TO ROUTINE 00872000
  951. MVCFROM MVC 0(*-*,R5),0(R3) EXECUTED MOVE @V201005 00873000
  952. MVCTO MVC 0(*-*,R3),0(R5) @V201005 00874000
  953. SPACE 2 00875000
  954. CTR LA 5,4 4 BYTES PER DATA FIELD 00876000
  955. ST R6,RLDCONST ZERO CONSTANT FIELD 00877000
  956. LH 4,SPEC+10 GET BYTE COUNT 00878000
  957. SR 4,5 SUBTRACT 5 00879000
  958. BZ NXTRLDCD GET NEXT RLD CARD FROM WORK FILE 00880000
  959. STH 4,SPEC+10 STORE NEW BYTE COUNT 00881000
  960. BR 14 BACK TO CALLLER 00882000
  961. SPACE 2 00883000
  962. CXDTST EQU * @VA11245 00883600
  963. TM 4(R6),X'30' IS IT A PR CUM LENGTH CONST? @VA11245 00884200
  964. BNO BADCRD2 NO, BAD CARD @VA01260 00885000
  965. LA 1,FAKECXD YES, SET TO DEFINE CXD ENTRY 00886000
  966. LA 2,NOCXD RETURN IF NOT FOUND 00887000
  967. BAL 3,PRSERCH1 LOOK FOR ENTRY IN REFTBL 00888000
  968. TM REFLG2(R12),REFICS ICS FLAG SET ON? @VA12730 00888300
  969. BO BADICS INVALID MATCH @VA12730 00888600
  970. NOCXD MVI 8(12),X'81' SET CXD CODE BYTE 00889000
  971. B CXDRET+4 BACK TO ROUTINE 00890000
  972. SPACE 2 00891000
  973. SKIPRLD BAL 14,CTR CHECK FOR END OF CARD 00892000
  974. SKIPRLD2 AR 10,5 MOVE TO NEXT 4-BYTE FIELD 00893000
  975. BAL 14,CTR CHECK FOR END OF CARD 00894000
  976. TM 0(10),X'01' NEXT RH + PH SAME AS THIS ONE ? 00895000
  977. BO SKIPRLD2 YES 00896000
  978. AR 10,5 NO, MOVE TO IT 00897000
  979. B C5AC1 PROCESS IT 00898000
  980. ERRUT1RD LA R5,RDERR62 ERROR MSG 104S (READ ERROR) 00899000
  981. CH R15,=H'12' WAS IT EOF ? 00900000
  982. BNE ERRUTWA NO, TERMINATE THIS COMMAND 00901000
  983. L R15,AERASE ERASE WORK FILE V0304 00902000
  984. BALR R14,R15 V0304 00903000
  985. B C6AB6 COMPLETE THE LOADING 00904000
  986. ERRUTW LA R5,WRERR46 ERROR MSG 105S (WRITE ERROR) 00905000
  987. ERRUTWA MVC OUTBUF(18),8(R1) FILE NAME TO MSG BUFFER 00906000
  988. LR R2,R15 SAVE ERROR RETURN CODE 00907000
  989. B FATERR TERMINATE THIS COMMAND 00908000
  990. EJECT 00909000
  991. *********************************************************************** 00910000
  992. * 00911000
  993. * END CARD ROUTINE (END) 00912000
  994. * 00913000
  995. *********************************************************************** 00914000
  996. * 00915000
  997. C6AA1 C 1,END 00916000
  998. BC 7,C6AC1 BR-NOT END CARD 00917000
  999. CLC SPEC+28(4),BLANKS CHECK FOR CSECT LENGTH IN END 00918000
  1000. BE C6AB5 NO - CONTINUE NORMALLY 00919000
  1001. L 1,LOCCT YES - UPDATE THE LOCATION COUNT 00920000
  1002. LA R1,7(0,R1) ALIGN TO DOUBLEWORD BOUNDARY @VA12730 00920300
  1003. N R1,DBLBND REMOVE EXCESS BITS @VA12730 00920600
  1004. A 1,SPEC+28 ... 00921000
  1005. LA 1,7(0,1) ALIGN TO DBL BOUND 00922000
  1006. N 1,DBLBND ... 00923000
  1007. ST 1,LOCCT ... 00924000
  1008. C6AB5 SR 2,2 ... 00925000
  1009. CLI SPEC+5,C' ' 00926000
  1010. BC 8,C6AB3 BR IF NO ADDR 00927000
  1011. STC 6,SPEC+4 00928000
  1012. TM FLAG1,ENDCDADR END CARD ADR ALLOWED 00929000
  1013. BC 1,C6AB3 BR NO, ADDR SAVED 00930000
  1014. LH 3,SPEC+14 LOD ESID 00931000
  1015. BAL 14,REFADR 00932000
  1016. L R2,8(0,R12) GET RELOCATION FACTOR 00933000
  1017. C6AB4 A 2,SPEC+4 FORM ADDR 00934000
  1018. STCM R2,B'0111',BRAD+1 SET ENTRY ADDRESS P0966 00935000
  1019. OI FLAG1,ENDCDADR INDICATE END CARD ADDRESS SAVED 00936000
  1020. C6AB3 B PASSTWO PROCESS RLDS 00937000
  1021. C6AB6 XC ESIDTB(256),ESIDTB CLEAR ESID TABLE 00938000
  1022. XC ESIDTB+256(256),ESIDTB+256 CLEAR ESID TABLE @VA02083 00939000
  1023. BC 15,RD TO RD 00940000
  1024. RLDABND EQU * @VA06291 00941000
  1025. L R11,ADMSLIO SET R11 FOR LIO BASE ADDR @VA06291 00942000
  1026. LA R5,ERRORB SET UP FUNCTION CODE FOR LIO @VA06291 00943000
  1027. LA R14,N03 SET UP RETURN EXIT ADDR @VA06291 00944000
  1028. BR 11 GO TYPE MSG AND RETURN TO EXIT @VA06291 00945000
  1029. EJECT 00946000
  1030. *********************************************************************** 00947000
  1031. * 00948000
  1032. * LOAD TERMINATE CARD ROUTINE (LDT) 00949000
  1033. * 00950000
  1034. *********************************************************************** 00951000
  1035. * 00952000
  1036. C6AC1 C 1,LDT 00953000
  1037. BE C6AC2 LDT CARD, PROCESS IT 00954000
  1038. B CTLCRD1 PROCESS AS A CONTROL CARD 00955000
  1039. C6AC2 CLI SPEC+16,C' ' IS THERE A NAME ? 00956000
  1040. BE CHKTXT CHECK FOR TEXT FILE @VA04695 00957000
  1041. LA 2,ERLDT1 00958000
  1042. BAL 3,SERCH 00959000
  1043. MVC BRAD(4),12(R12) PUT NEW START IN BRAD 00960000
  1044. CHKTXT EQU * @VA04695 00961000
  1045. CLC FTYPE,=CL8'TEXT' IS THIS TEXT FILE? @VA04695 00962000
  1046. BE RD BRANCH IF YES, MORE PROC REQ @VA04695 00963000
  1047. EJECT 00964000
  1048. *********************************************************************** 00965000
  1049. * 00966000
  1050. * INVOKE TEXT LIBRARY SEARCHING 00967000
  1051. * 00968000
  1052. *********************************************************************** 00969000
  1053. * 00970000
  1054. LIBGO TM FLAG2,NOAUTO+NOLIBE ARE SEARCHES SUPPRESSED 00971000
  1055. BO C6AD7 YES, DON'T LOOK 00972000
  1056. NI FLAG3,X'FF'-CMD NO LONGER PROC COMMAND LINE @VA01699 00973000
  1057. TM FLAGS,LUNDEF ANY UNDEFINEDS? 00974000
  1058. BZ C6AD7 NO - SKIP LIBE SEARCH 00975000
  1059. LA 3,NXTRD SET FOUND RETURN 00976000
  1060. L 11,ALIBE GO SEARCH LIBE 00977000
  1061. BALR 14,11 ... 00978000
  1062. EJECT 00979000
  1063. *********************************************************************** 00980000
  1064. * 00981000
  1065. * TERMINATE LOADING 00982000
  1066. * 00983000
  1067. *********************************************************************** 00984000
  1068. C6AD7 EQU * 00985000
  1069. L 12,ENTADR WAS 'ENTRY' SPECIFIED? 00986000
  1070. LA R12,0(,R12) 00987000
  1071. LTR 12,12 ... 00988000
  1072. BZ NOENTCRD NO 00989000
  1073. TM 8(12),X'80' WAS ENTRY-POINT DEFINED? 00990000
  1074. BO NOENTCRD NO 00991000
  1075. L R3,12(0,R12) GET V(ENTRY POINT) 00992000
  1076. CLC 04(8,R3),=C'CMS"XEQ"' SAVE NORMAL START ADDR? 00993000
  1077. BNE NOENT NO @VA03251 00994000
  1078. CLC 12(4,R3),ZEROES ADDRESS FILLED IN? @VA12730 00995000
  1079. BNE NOENTCRD YES @VA03251 00996000
  1080. MVC 12(4,R3),BRAD SAVE OLD START ADDR 00997000
  1081. NOENT MVC BRAD+1(3),13(R12) SET NEW START ADDRESS @VA03251 00998000
  1082. NOENTCRD EQU * 00999000
  1083. L 0,BRAD LOAD START ADDRESS 01000000
  1084. EX 0,C6AB6 CLEAR ESID TABLE 01001000
  1085. ST R0,STRTADDR SAVE STARTING ADDRESS 01002000
  1086. L R4,FLAG1 GET FLAG1 AND 2 01003000
  1087. ST R4,LDRFLAGS SAVE IN NUCON 01004000
  1088. STH R4,TBENT SAVE LDR TBL COUNT IN NUCON 01005000
  1089. MVI LOCCNT,X'00' CLEAR FIRST BYTE OF "LOCCNT" 01006000
  1090. MVC LOCCNT+1(3),LOCCT+1 SAVE CURR VALUE OF "LOCCT" 01007000
  1091. CLC LOCCNT,AUSRAREA ARE WE BELOW USER STOR? @VA02752 01008000
  1092. BNL TRANOVR NO, PROCEED AS USUAL @VA02752 01009000
  1093. CLC LOCCNT,ALAST ABOVE TRANSIENT AREA? @V305665 01010000
  1094. BH FATERR1 YES, ERROR @VA02752 01011000
  1095. TRANOVR EQU * @VA05785 01012000
  1096. L 12,TBLREF 01013000
  1097. SR 4,4 SHOW NO ERRORS IF NOT 01014000
  1098. LH R4,TBLCT GET NUMBER OF LDR TBL ENTRIES 01015000
  1099. CH R4,=H'2' WAS ANYTHING LOADED 01016000
  1100. BE N03 NO, BACK TO USER 01017000
  1101. LA 3,20 LDR TBL ENTRY SIZE 01018000
  1102. SR 0,0 01019000
  1103. SUB1 SR 12,3 POINT TI FIRST ENTRY IN REFTBL 01020000
  1104. CLI 8(12),X'80' IS ENTRY DEFINED? 01021000
  1105. BNE NO1 YES - LOOK AT NEXT ENTRY 01022000
  1106. MVI UNRES,X'80' SAVE UNRESOLVED FLAG @VA02829 01023000
  1107. TM REFLG2(R12),REFLBT NAME FOUND IN DMSLIB SEARCH? @VA12730 01024000
  1108. BO NO1 YES, DON'T LIST AS UNDEF. 01025000
  1109. EJECT 01026000
  1110. SYMCHK LTR 0,0 TEST FOR PREV UNDEF SYM 01027000
  1111. BC 7,SUB2 IF NONE, PRINT HEADER 01028000
  1112. LA 5,ERRORS PRINT UNDEFINED SYMBOL MESSAGE 01029000
  1113. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 01030000
  1114. BALR 14,11 GO PRINT HEADING 01031000
  1115. LA 2,OUTPUT+1 INITIALIZE POINTERS 01032000
  1116. LA 5,OUTPUT+68 01033000
  1117. SUB2 MVC 0(8,2),0(12) MOVE NAME INTO OUTPUT LINE 01034000
  1118. LA 2,9(,2) SPACE UP LINE POINTER 01035000
  1119. CR 2,5 ARE WE AT END OF LINE 01036000
  1120. BC 4,SUB3 NO - CONTINUE 01037000
  1121. LA 5,OUTR YES, PRINT OUT LINE 01038000
  1122. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 01039000
  1123. BALR 14,11 GO PRINT 01040000
  1124. LA 2,OUTPUT+1 INITIALIZE POINTERS 01041000
  1125. LA 5,OUTPUT+68 01042000
  1126. SUB3 LA R0,4 ERROR (NON-FATAL) 01043000
  1127. NO1 BCT 4,SUB1 01044000
  1128. LTR 0,0 TEST FOR ERRORS 01045000
  1129. BZ LDXEQ BRANCH NO ERRORS @VA05785 01046000
  1130. ST R0,LDRADDR+4 SAVE ERROR CODE 01047000
  1131. LA 5,OUTPUT 01048000
  1132. CR 2,5 01049000
  1133. BZ LDXEQ NO OUTPUT @VA05785 01050000
  1134. LA 5,OUTR 01051000
  1135. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 01052000
  1136. BALR 14,11 PRINT LAST LINE 01053000
  1137. EJECT 1 01054000
  1138. USING XPRTAB,R10 @VA05785 01055000
  1139. LDXEQ EQU * @VA05785 01056000
  1140. LA R10,SPEC USE SPEC & ESIDTB FOR FREE @VA05785 01057000
  1141. SR R6,6 GET 0 @VA05785 01058000
  1142. ST R6,HALFAD CLEAR SOME OF FREE @VA05785 01059000
  1143. ST R6,BYTEAD ... @VA05785 01060000
  1144. ST R6,FULLAD ... @VA05785 01061000
  1145. ST R6,DBLAD ... @VA05785 01062000
  1146. ST R6,CXDAD ... @VA05785 01063000
  1147. MVC COMMON(4),LOCCNT @VA05785 01064000
  1148. L R12,TBLREF POINT TO FIRST ITEM IN REFERENCE @VA05785 01065000
  1149. LH R4,TBLCT @VA05785 01066000
  1150. LTR R4,R4 ANY LOADER TABLE ENTRIES @VA05785 01067000
  1151. BZ N03 NO, OMIT LOAD COMPLETION @VA05785 01068000
  1152. LA R3,20 @VA05785 01069000
  1153. L R7,AADDEF TR @VA05785 01070000
  1154. SPACE 2 01071000
  1155. TM FLAG1,COMMONEX DO COMMON ENTRIES EXIST @VA05785 01072000
  1156. BZ S1 NO, DON'T PRINT HEADER @VA05785 01073000
  1157. NI FLAG1,255-COMMONEX RESET COMMON BIT @VA05785 01074000
  1158. LA R5,CMDEF GET IO INDEX FOR HEADER @VA05785 01075000
  1159. L R11,ADMSLIO GET LINKAGE @VA05785 01076000
  1160. BALR 14,11 GO PRINT HEADING @VA05785 01077000
  1161. EJECT 01078000
  1162. S1 SR R12,3 NEXT ENTRY IN REFTBL @VA05785 01079000
  1163. CLI 8(12),X'00' IS ENTRY DEFINED @VA05785 01080000
  1164. BE N1 YES LOOK AT NEXT @VA05785 01081000
  1165. TR 8(1,R12),TRANPR TRANSLATE FLAG TO INDEX @VA08891 01081500
  1166. SR R6,R6 GET 0 @VA05785 01083000
  1167. LR R1,6 DEFINE UNDEFS AT 0 @VA05785 01084000
  1168. IC R6,8(0,12) GET ENTRYS FLAG BYTE @VA05785 01085000
  1169. SLL R6,1 MULTIPLY BY 2 @VA05785 01086000
  1170. LH R6,XTRATBL(6) INDEX TRANSFER TABLE @VA05785 01087000
  1171. B R0(6,R8) GO TO APPROPRIATE ROUTINE @VA05785 01088000
  1172. N1 BCT R4,S1 BACK FOR MORE ENTRIES @VA05785 01089000
  1173. SPACE 2 01090000
  1174. TM FLAG1,PREXIST ARE THERE ANY PR ENTRIES @VA05785 01091000
  1175. BZ N03 @VA05785 01092000
  1176. NI FLAG1,255-PREXIST RESET PR PENDING BIT @VA05785 01093000
  1177. LA R5,PRDEF IO INDEX FOR P-R HEADER @VA05785 01094000
  1178. L R11,ADMSLIO PRINT HEADING @VA05785 01095000
  1179. BALR 14,11 ... @VA05785 01096000
  1180. SPACE 3 01097000
  1181. LA R3,DBLAD ADDRESS OF DBL PR TBL @VA05785 01098000
  1182. BAL R15,XPRPRT PRINT OUT DOUBLE AL PR @VA05785 01099000
  1183. LA R3,FULLAD ADDRESS OF FULL PR TBL @VA05785 01100000
  1184. BAL R15,XPRPRT PRINT FULL AL PR @VA05785 01101000
  1185. LA R3,HALFAD ADDRESS OF HALF PR TBL @VA05785 01102000
  1186. BAL R15,XPRPRT PRINT HALF AL PR @VA05785 01103000
  1187. LA R3,BYTEAD ADDRESS OF BYTE PR TBL @VA05785 01104000
  1188. BAL R15,XPRPRT PRINT BYTE AL PR @VA05785 01105000
  1189. LA R3,CXDAD ADDRESS OF CXD TBL @VA05785 01106000
  1190. BAL R15,XPRPRT PRINT CXD LENGTH @VA05785 01107000
  1191. B N03 RETURN TO USER @VA05785 01108000
  1192. XDBL LA R6,DBLAD ADDRESS OF DBL PR TBL @VA05785 01109000
  1193. LA R14,HALFAD-DBLAD SIZE OF DOUBLE TABLE @VA05785 01110000
  1194. B PRVSAVE GO SAVE REFTBL LOC OF PR ENTRY @VA05785 01111000
  1195. XFULL LA R6,FULLAD ADDRESS OF FULL PR TBL @VA05785 01112000
  1196. LA R14,DBLAD-FULLAD SIZE OF FULL TABLE @VA05785 01113000
  1197. B PRVSAVE GO SAVE REFTBL LOC OF PR ENTRY @VA05785 01114000
  1198. XHALF LA R6,HALFAD ADDRESS OF HALF PR TBL @VA05785 01115000
  1199. LA R14,BYTEAD-HALFAD SIZE OF HALF TABLE @VA05785 01116000
  1200. B PRVSAVE GO SAVE REFTBL LOC OF PR ENTRY @VA05785 01117000
  1201. XBYTE LA R6,BYTEAD LOC OF BYTE PR TBL @VA05785 01118000
  1202. LA R14,COMMON-BYTEAD SIZE OF BYTE TABLE @VA05785 01119000
  1203. B PRVSAVE GO SAVE REFTBL LOC OF PR ENTRY @VA05785 01120000
  1204. XCXD LA R6,CXDAD LOC OF PR CUM LENGTH TBL @VA05785 01121000
  1205. LA R14,8 SIZE OF CXD FIELD @VA05785 01122000
  1206. OI 8(12),X'80' UNDEFINE IT @VA05785 01123000
  1207. B PRVSAVE GO SAVE LOC OF PR CUM LENGTH @VA05785 01124000
  1208. XUNDEF MVI 8(12),X'80' RESET UNDEF BIT @VA05785 01125000
  1209. XC 0(8,12),0(12) ZERO OUT UNDEFINED ENTRY @VA05785 01126000
  1210. BALR 14,7 DEFINE ENTRY AT 0 @VA05785 01127000
  1211. B N1 RETURN TO LOOK AGAIN @VA05785 01128000
  1212. SPACE 2 01129000
  1213. XCOMSET L R1,COMMON GET CURRENT LOC OF COMMON @VA05785 01130000
  1214. L R2,8(,12) GET LENGTH OF CSECT @VA05785 01131000
  1215. LA R2,0(0,R2) CLEAR HIGH ORDER BYTE @VA05785 01132000
  1216. LA R1,7(,1) @VA05785 01133000
  1217. N R1,DBLBND ALIGN TO DOUBLE WRD @VA05785 01134000
  1218. LR R6,R1 SAVE BEGINNING OF THIS COMMON @VA05785 01135000
  1219. * SECT 01136000
  1220. AR R6,R2 ADD THE LENGTH @VA05785 01137000
  1221. ST R6,COMMON RESET COMMON LOCATION COUNTER @VA05785 01138000
  1222. ST R6,LOCCNT RESET LOCATION COUNTER @VA05785 01139000
  1223. OI 8(12),X'80' UNDEFINE THE ENTRY @VA05785 01140000
  1224. BAL R6,XENTDEF NO, GO DEFINE ENTRY @VA05785 01141000
  1225. LA R5,CMVAL IO INDES FOR COMMON PRINT @VA05785 01142000
  1226. L R11,ADMSLIO PRINT NAME, VAL + LENGTH @VA05785 01143000
  1227. BALR 14,11 ... @VA05785 01144000
  1228. CLC COMMON,FREELOWE IS MEMORY EXCEEDED @VA05785 01145000
  1229. BNL FATERR1 YES, GIVE FATAL ERROR MESSAGE @VA05785 01146000
  1230. * AND GIVE UP 01147000
  1231. B N1 BACK TO LOOK AGAIN @VA05785 01148000
  1232. PRVSAVE LH R1,0(0,6) GET DISP OF NEXT LOC IN TBL @VA05785 01149000
  1233. LA R1,2(0,1) ... @VA05785 01150000
  1234. CR R1,R14 WILL TABLE OVERFLOW @VA05785 01151000
  1235. BNL PRTBLOVR YES, FATAL ERROR @VA05785 01152000
  1236. LH R2,TBLCT TOTAL NO OF ENTRIES IN REFTBL @VA05785 01153000
  1237. SR R2,R4 MINUS CNT GIVES INDEX FROM TOP @VA05785 01154000
  1238. LA R2,1(0,2) OFF BY 1 @VA05785 01155000
  1239. STH R2,0(1,6) PUT INTO TBL @VA05785 01156000
  1240. STH R1,0(0,6) SAVE TBL INDEX @VA05785 01157000
  1241. B N1 BACK TO LOOK AGAIN @VA05785 01158000
  1242. PRTBLOVR LA R5,PROVER DMSLIO CODE @VA05785 01159000
  1243. B FATERR TERMINATE @VA05785 01160000
  1244. EJECT 01161000
  1245. XENTDEF EQU * @VA05785 01162000
  1246. BALR 14,7 GO DEFINE ENTRY @VA05785 01163000
  1247. ST R1,12(0,12) SET LOCATION IN LOADER TABLE @VA05785 01164000
  1248. MVI 8(12),X'00' CLEAR FLAG BYTE @VA05785 01165000
  1249. BR R6 BACK TO CALLER @VA05785 01166000
  1250. SPACE 2 01167000
  1251. XPRPRT LH R4,0(0,3) GET ENTRY COUNT FROM TABLE @VA05785 01168000
  1252. LTR R4,R4 ANYTHING IN TBL @VA05785 01169000
  1253. BCR 8,R15 NO BACK TO CALLER @VA05785 01170000
  1254. XPRSET2 L R12,TBLREF ADDRESS OF REFTBL TOP @VA05785 01171000
  1255. LA R3,2(0,3) INDEX PTR @VA05785 01172000
  1256. LH R2,0(0,3) GET REFTBL INDEX @VA05785 01173000
  1257. MH R2,=H'20' MULTIPLY BY 20 @VA05785 01174000
  1258. SR R12,R2 GET ADDRESS OF ENTRY @VA05785 01175000
  1259. L R1,12(0,12) GET VALUE FROM REFTBL @VA05785 01176000
  1260. LH R5,PRVCNT GET PRESENT PR COUNT @VA05785 01177000
  1261. LH R2,10(0,12) GET LENGTH OF PR ENTRY @VA05785 01178000
  1262. AR R2,R1 ADD TO VALUE @VA05785 01179000
  1263. CLI 8(12),X'84' IS THIS A CXD? @VA05785 01180000
  1264. BNE XPRCNT NO - PROCEED NORMALLY @VA05785 01181000
  1265. LR R1,5 YES - GET PRCNT AS VALUE @VA05785 01182000
  1266. XPRCNT CLR R2,R5 PRESENT PR VAL HIGHEST? @VA05785 01183000
  1267. BNH XPRDEF NO - DON'T REPLACE @VA05785 01184000
  1268. STH R2,PRVCNT NO, PUT NEW COUNT IN PRVCNT @VA05785 01185000
  1269. XPRDEF BAL R6,XENTDEF GO DEFINE ENTRY @VA05785 01186000
  1270. LA R5,PRVAL IO INDEX FOR PR PRINT @VA05785 01187000
  1271. L R11,ADMSLIO PRINT NAME, VAL + LENGTH @VA05785 01188000
  1272. BALR 14,11 ... @VA05785 01189000
  1273. XC 0(8,R12),0(R12) CLEAR PR FROM TABLE @VA05785 01190000
  1274. BCTR R4,0 SUBTRACT 1 @VA05785 01191000
  1275. BCT R4,XPRSET2 BACK FOR ANOTHER ENTRY @VA05785 01192000
  1276. BR R15 RETURN TO CALLER @VA05785 01193000
  1277. EJECT 1 01194000
  1278. N03 L 3,RETREG SET TO RETURN TO CALLER 01195000
  1279. N032 OI FLAGS,CLOSELIB SET TO CLOSE LIBRARIES 01196000
  1280. L 11,ALIBE GO TO LIBE ROUTINE 01197000
  1281. BALR 14,11 ... 01198000
  1282. LA 5,LDRFIN IO INDEX FOR LDR FINISH 01199000
  1283. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 01200000
  1284. BALR 14,11 GO FINISH 01201000
  1285. TM OSSFLAGS,DYLD IS THIS A DYNAMIC LOAD 01202000
  1286. BO AROUND YES,LEAVE TXTLIB DIRECTORIES IN STOR. 01203000
  1287. STM R0,R15,APSV SAVE REGISTERS 01204000
  1288. L R15,=V(DMSLGTA) FREE THE TXTLIB DIRECTORY BLOCKS 01205000
  1289. BALR R14,R15 01206000
  1290. LM R0,R15,APSV RESTORE REGISTERS 01207000
  1291. AROUND EQU * 01208000
  1292. LM R9,R12,GPRSAV 01209000
  1293. LA R0,NEED RETURN FRRE STORAGE 01210000
  1294. LR 1,13 01211000
  1295. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR 01212000
  1296. LR 1,6 01213000
  1297. LR 14,3 01214000
  1298. L R15,LDRRTCD GET RETURN CODE P0934 01215000
  1299. BCR 15,14 RETURN 01216000
  1300. SPACE 4 01217000
  1301. ERLDT1 LA 1,SPEC+16 SET POINTER TO NAME 01218000
  1302. ERLDT LA R5,ERROR30 ERROR MSG 209E (NAME NOT FOUND) 01219000
  1303. MVC OUTBUF(8),0(1) MOVE NAME TO BUFF 01220000
  1304. BC 15,FATERR 01221000
  1305. EJECT 01222000
  1306. *********************************************************************** 01223000
  1307. * 01224000
  1308. * ROUTINE TO LOCATE REFTBL ENTRIES 01225000
  1309. * THRU ESID 01226000
  1310. * 01227000
  1311. * LH 3, WITH ESID, RH, OR PH 01228000
  1312. * VALUE BEFORE ENTERING ROUTINE 01229000
  1313. * 01230000
  1314. *********************************************************************** 01231000
  1315. * 01232000
  1316. REFADR L 12,TBLREF 01233000
  1317. SLL 3,1 TIMES TWO 01234000
  1318. LR R5,R3 SAVE TABLE INDEX 01235000
  1319. LH 3,ESIDTB(3) GET INDEX OF ENTRY 01236000
  1320. N R3,ESIDMASK CLEAR OUT FLAG BITS 01237000
  1321. MH R3,=H'20' MULTIPLY BY 20 01238000
  1322. SR 12,3 SIZE-(ESID X 16) 01239000
  1323. C 12,TBLREF SEE IF ESD EXISTS 01240000
  1324. BCR 7,14 YES - BACK TO CALLER 01241000
  1325. L R7,LOCCT ASSUME LOCATION 01242000
  1326. LA R7,7(0,R7) ROUND TO DBL WD BOUNDARY 01243000
  1327. N R7,DBLBND 01244000
  1328. ST R7,LOCCT 01245000
  1329. CLC SPEC(4),ESD ESD CARD ? 01246000
  1330. BNE 4(0,R14) NO, RETURN +4 01247000
  1331. DMSFREE DWORDS=3,TYPCALL=BALR GET WAITING BLK 01248000
  1332. LR R7,R5 SET R7 TO ID TABLE INDEX 01249000
  1333. LA R2,MEMBOUND POINT TO WAITING CHAIN 01250000
  1334. BACK L R3,0(R2) 1ST (NEXT) BLOCK 01251000
  1335. LTR R3,R3 EXIST 01252000
  1336. BZ ENDCHAIN NO, ADD NEW BLOCK 01253000
  1337. LR R2,R3 YES, LOOK FOR NEXT 01254000
  1338. B BACK 01255000
  1339. ENDCHAIN ST R1,0(R2) CHAIN NEW BLOCK 01256000
  1340. MVC 4(16,R1),SPEC+16 SAVE ESD DATA ITEM FOR LD 01257000
  1341. XC 0(4,R1),0(R1) ZERO LASR POINTER 01258000
  1342. LA R1,ESIDTB(R7) GET TO ESIDTB FOR SD 01259000
  1343. OI 0(R1),ESIDLATE INDICATE WAITING LD'S 01260000
  1344. B ESD00 PROCESS NEXT ESD DATA ITEM 01261000
  1345. SDDEF LH R7,SPEC+14 ID OF SD 01262000
  1346. LA R2,MEMBOUND POINT TO WAITING CHAIN 01263000
  1347. LDLOOK L R3,0(R2) R3 = NEXT (1ST) BLOCK 01264000
  1348. LTR R3,R3 EXIST 01265000
  1349. BZ ESD00 NO, DO NEXT ESD DATA ITEM 01266000
  1350. CH R7,18(R3) LD AND SD ID'S MATCH 01267000
  1351. BE LDFND YES, THIS LD IS WAITING 01268000
  1352. LR R2,R3 UPDATE BASE PTR 01269000
  1353. B LDLOOK LOOK AT NEXT BLOCK 01270000
  1354. LDFND STM R0,R15,PLISTSAV PROTECT REGISTERS 01271000
  1355. MVC SPEC+16(16),4(R3) RESTORE ESD DATA ITEM TO SPEC BUFFER 01272000
  1356. BAL R10,LATESD PROCESS LD ITEM 01273000
  1357. LM R0,R15,PLISTSAV RESTORE REGISTERS 01274000
  1358. L R5,0(R3) PTR TO NEXT BLOCK 01275000
  1359. LR R1,R3 SET FREE LOCATION 01276000
  1360. DMSFRET DWORDS=3,LOC=(1),TYPCALL=BALR 01277000
  1361. ST R5,0(R2) ELIMINATE FREED BLOCK FROM CHAIN 01278000
  1362. B LDLOOK LOOK FOR MORE WAITING BLOCKS 01279000
  1363. EJECT 01280000
  1364. *********************************************************************** 01281000
  1365. * 01282000
  1366. * ROUTINE TO SEARCH REFERENCE TABLE 01283000
  1367. * FOR A GIVEN NAME 01284000
  1368. * 01285000
  1369. *********************************************************************** 01286000
  1370. * 01287000
  1371. * CALLING SEQUENCE-- 01288000
  1372. * L(LA) 2,NOT FOUND RETURN 01289000
  1373. * BAL 3,ENTRY FOUND RETURN 01290000
  1374. * REG 12 = ADDR OF ENTRY IN REFTBL.REG 11=1,REG 1= NAME OF PROG 01291000
  1375. * REG. 3 = REFTBL NUMBER (E.G. 1,2,3,...) 01292000
  1376. * THIS ROUTINE COMPARES EACH REFERENCE TABLE ENTRY 01293000
  1377. * WITH THE GIVEN NAME,DETERMINING FIRST WHETHER THERE 01294000
  1378. * IS AN ENTRY FOR THAT NAME AND 2ND WHAT THE 01295000
  1379. * STORAGE ADDRESS OF THAT ENTRY IS. 01296000
  1380. * 01297000
  1381. *********************************************************************** 01298000
  1382. * 01299000
  1383. PRSERCH LA 1,SPEC+16 ADDR OF NAME IN CARD 01300000
  1384. PRSERCH1 LA R15,X'80' PR MASK FOR CHKTYPE 01301000
  1385. B SERCH2 SKIP OVER SERCH INITIALIZATION 01302000
  1386. SERCH LA 1,SPEC+16 ADDR OF NAME IN CARD 01303000
  1387. SERCH1 LA R15,X'70' NON-PR MASK FOR CHKTYPE 01304000
  1388. SERCH2 LH 0,TBLCT NO OF ENTRIES IN REFTBL 01305000
  1389. SR 4,4 01306000
  1390. LA R5,20 LDR TBL ENTRY SIZE 01307000
  1391. L 12,TBLREF LARGEST ADDR IN STORAGE+1 01308000
  1392. LA R12,0(0,R12) CLEAR COUNT BYTE 01309000
  1393. STM R6,R7,SAV67 SAVE 6 + 7 01310000
  1394. LTR 0,0 01311000
  1395. BC 8,NOT 01312000
  1396. LM 6,7,0(1) LOAD WORD FOR SEARCH 01313000
  1397. CMP SR 12,5 01314000
  1398. AH R4,=H'1' TO ACCUMULATE ENTRY POSITION 01315000
  1399. CL 7,4(0,12) SECOND HALF OF ENTRY MATCH? 01316000
  1400. BNE CMPEND NO - TRY ANOTHER 01317000
  1401. CL 6,0(0,12) FIRST HALF OF ENTRY MATCH? 01318000
  1402. BE CHKTYPE YES - CHECK FOR TYPE MATCH 01319000
  1403. CMPEND BCT 0,CMP BACK TO LOOK AGAIN 01320000
  1404. NOT SR 12,5 01321000
  1405. AH R4,=H'1' ADD TO TOTAL ENTRIES 01322000
  1406. SR R0,R0 GET NUMBER OF PAGES OF LOADER-TABLES JS 01323000
  1407. IC R0,TBLREF FROM LEFT-MOST BYTE OF "LDRTBL", JS 01324000
  1408. MH R0,=H'204' X 204 (204 ENTRIES PER PAGE) 01325000
  1409. CR 4,0 01326000
  1410. BC 10,ERREF REFERENCE TABLE OVERFLOW 01327000
  1411. STH 4,TBLCT NO. FO ENTRIES IN TBLREF 01328000
  1412. MVC 0(8,12),0(1) PLACE NAME IN REFTBL 01329000
  1413. XC 8(12,12),8(12) ZERO OTHER PART OF ENTRY 01330000
  1414. LM R6,R7,SAV67 RESTORE 6 + 7 01331000
  1415. BCR 15,2 01332000
  1416. ERREF LA 5,ERRORR GO TO ERPRNT WITH COMMENT OF RE 01333000
  1417. BC 15,FATERR 01334000
  1418. SPACE 01335000
  1419. CHKTYPE CLI 8(R12),X'83' IS THIS A WEAK EXTRN 01336000
  1420. BE NMFND YES, OMIT CHECK 01337000
  1421. TM 8(R12),X'0D' DON'T CHECK FOR COMMON BIT 01338000
  1422. NMFND EX R15,TYPECHK PR BC 8; NON-PR BC 7 @V1D1705 01339000
  1423. LM R6,R7,SAV67 RESTORE REGS @V1D1705 01340000
  1424. BR 3 BACK TO FOUND RETURN 01341000
  1425. SPACE 01342000
  1426. TYPECHK BC 0,CMPEND 01343000
  1427. EJECT 01344000
  1428. *********************************************************************** 01345000
  1429. * 01346000
  1430. * ERROR ROUTINES 01347000
  1431. * 01348000
  1432. *********************************************************************** 01349000
  1433. DMSLDRD EQU * 01350000
  1434. FATERR L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 01351000
  1435. BALR 14,11 GO DO SOMETHING 01352000
  1436. B N03 GO TO TERMINATE LOADING 01353000
  1437. SPACE 01354000
  1438. FATERR1 EQU * 01355000
  1439. LA 5,ERRORC CORE SIZE EXCEEDED 01356000
  1440. B FATERR GIVE UP 01357000
  1441. SPACE 2 01358000
  1442. DMSLDRC EQU * 01359000
  1443. BADCRD LA R14,RD RETURN FROM LIO @VA01260 01360000
  1444. B BADCRD3 GO SET ERROR CODE @VA01260 01361000
  1445. BADCRD2 LA R14,NXTRLDCD RETURN FROM LIO @VA01260 01362000
  1446. BADCRD3 LA R5,ERRORA ERROR CODE FOR LIO @VA01260 01363000
  1447. MVC OUTBUF+15(80),SPEC MOVE CRD IMJ TO BUFF 01364000
  1448. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 01365000
  1449. BR 11 GO PRINT INV CARD 01366000
  1450. EJECT 01367000
  1451. *********************************************************************** 01368000
  1452. * CONSTANTS AREA 01369000
  1453. *********************************************************************** 01370000
  1454. SPACE 2 01371000
  1455. ALIBE DC V(DMSLIB) LIBRARY SEARCH ROUTINE 01372000
  1456. AADDEF DC A(DMSLSBC) LINKAGE DEFINITION ROUTINE 01373000
  1457. APPNT DC A(DMSLSBB) LINKAGE WAITING ROUTINE 01374000
  1458. HEXBB DC A(DMSLSBA) HEX TO BINARY CONVERSION 01375000
  1459. SPACE 1 01376000
  1460. SLC DC X'02' *** 01377000
  1461. DC C'SLC' 01378000
  1462. ICS DC X'02' *** 01379000
  1463. DC C'ICS' 01380000
  1464. ESD DC X'02' *** 01381000
  1465. DC C'ESD' 01382000
  1466. TXT DC X'02' *** 01383000
  1467. DC C'TXT' 01384000
  1468. REP DC X'02' *** 01385000
  1469. DC C'REP' 01386000
  1470. RLD DC X'02' *** 01387000
  1471. DC C'RLD' 01388000
  1472. END DC X'02' *** 01389000
  1473. DC C'END' 01390000
  1474. LDT DC X'02' *** 01391000
  1475. DC C'LDT' 01392000
  1476. SPACE 1 01393000
  1477. SPACE 1 01394000
  1478. OUTR EQU 2 TYPE OUT MSG BUFFER 01395000
  1479. LDRSET EQU 4 IO INDEX 01396000
  1480. LDRFIN EQU 6 IO INDEX 01397000
  1481. PRDEF EQU 8 IO INDEX 01398000
  1482. CMDEF EQU 12 IO INDEX 01399000
  1483. PRVAL EQU 16 IO INDEX 01400000
  1484. CMVAL EQU 20 IO INDEX 01401000
  1485. ERRORU EQU 28 203W - SLCNAME UNDEFINED 01402000
  1486. ERROR30 EQU 30 209E - ENTRY POINT NOT FOUND 01403000
  1487. ERRORA EQU 32 - INVALID CARD TO LOAD MAP 01404000
  1488. PROVER EQU 38 168S - PR TABLE OVERFLOW 01405000
  1489. ERRORR EQU 44 716S - LOADER TABLE OVERFLOW 01406000
  1490. WRERR46 EQU 46 705S - WRITE ERROR 01407000
  1491. ERRORM EQU 48 202W - DUPLICATE IDENTIFIER 01408000
  1492. ERRORI EQU 50 455E - ENTRY POINT NOT DEFINED 01409000
  1493. ERRORS EQU 52 201W - THE FOLLOWING NAMES ARE UNDEFINED 01410000
  1494. ERRORB EQU 54 - FILE CONTAINS INVALID RECORDS @VA06291 01411000
  1495. ESDOVER EQU 56 169S - ESDID TBL OVERFLOW 01412000
  1496. CRDIMJ EQU 60 - CARD IMAGE TO LOAD MAP 01413000
  1497. RDERR62 EQU 62 704S - READ ERROR 01414000
  1498. PRERR EQU 70 206W - PR ALIGNMENT ERROR 01415000
  1499. CTLCRD EQU 78 - CONTROL CARD TO LOAD MAP 01416000
  1500. ERRORC EQU 82 709S - STORAGE EXCEEDED 01417000
  1501. EJECT 01418000
  1502. SPACE 1 01419000
  1503. RDISK DC CL8'RDBUF' ROUTINE 01420000
  1504. DS 8C FILE 01421000
  1505. DC CL8'TEXT' TYPE 01422000
  1506. DC CL2' ' MODE 01423000
  1507. DC H'0' ITEM NO. 01424000
  1508. DS 4C 01425000
  1509. SETBYTE DC AL4(800) BUFF SIZE (10 CARDS 01426000
  1510. DS 2C 01427000
  1511. DC H'10' GET 10 80-BYTE ITEMS 01428000
  1512. DC AL4(0) 01429000
  1513. FDISK DC CL8'FINIS' ROUTINE 01430000
  1514. DS 8C FIEL 01431000
  1515. DC CL8'TEXT' TYPE 01432000
  1516. DC AL2(0) 01433000
  1517. WORKSET DC CL8'ERASE' 01434000
  1518. DC CL8'DMSLDR' 01435000
  1519. DC CL8'SYSUT1' 01436000
  1520. DC CL2'A5' 01437000
  1521. DC H'0' 01438000
  1522. DS 4X 01439000
  1523. DC AL4(80) 01440000
  1524. DC CL2'F' 01441000
  1525. DC H'1' 01442000
  1526. DS 4X 01443000
  1527. DC AL2(0) MODE 01444000
  1528. SPACE 1 01445000
  1529. SPACE 2 01446000
  1530. DS 0F 01447000
  1531. * FORMAT OF ESIDTB ENTRY IS -- 01448000
  1532. * BIT 0 DUPLICATE SD FLAG 01449000
  1533. * BIT 1 SD-TYPE ESID FLAG 01450000
  1534. * BIT 2 WAITING LD'S EXIST 01451000
  1535. * BIT 3 UNUSED 01452000
  1536. * BIT 4-15 REFTBL ENTRY NUMBER (E.G. 1,2,3,...) 01453000
  1537. ESIDMASK DC X'00001FFF' MASK OUT ESIDTB FLAGS 01454000
  1538. ESIDDUPF DC X'00008000' DUPLICATE SD FLAG 01455000
  1539. ESIDSDF DC X'0000',AL1(ESIDSDFB),X'00' SD-TYPE ESID FLAG 01456000
  1540. ESIDSDFB EQU X'40' SD-TYPE ESID BIT 01457000
  1541. ESIDLATE EQU X'20' WAITNG LABEL DEFINITIONS EXIST 01458000
  1542. SPACE 01459000
  1543. DBLBND DC X'00FFFFF8' MASK FOR DBL WD ALIGN 01460000
  1544. ALAST DC X'00010000' END OF TRANSIENT AREA @V305665 01461000
  1545. ADTRANS DC X'0000E000' START OF TRANSIENT AREA @V305665 01462000
  1546. EJECT 01463000
  1547. DROP R8 @V305665 01464000
  1548. USING RELDR,0 GET HALF-WORD DISP FROM RELDR 01465000
  1549. USING RELDR+4096,1 @VA02616 01466000
  1550. DS 0H 01467000
  1551. XTRATBL EQU * @VA05785 01468000
  1552. DC S(XBYTE) @VA05785 01469000
  1553. DC S(XHALF) @VA05785 01470000
  1554. DC S(XCOMSET) @VA05785 01471000
  1555. DC S(XFULL) @VA05785 01472000
  1556. DC S(XCXD) @VA05785 01473000
  1557. DC S(XUNDEF) @VA05785 01474000
  1558. DC S(XUNDEF) @VA05785 01475000
  1559. DC S(XDBL) @VA05785 01476000
  1560. ESDANAL EQU * FOR ESD ANALYSIS 01477000
  1561. DC S(C3AA3) 01478000
  1562. DC S(ENTESD) 01479000
  1563. DC S(C3AH1) 01480000
  1564. DC S(BADCRD) 01481000
  1565. DC S(C3AA3) TREAT PC AS CSECT 01482000
  1566. DC S(COMESD) 01483000
  1567. DC S(PRVESD) 01484000
  1568. DC S(BADCRD) 01485000
  1569. DROP 0,R1 @VA02616 01486000
  1570. USING DMSOLD,R8 @V305665 01487000
  1571. SPACE 1 01488000
  1572. DS 0F 01489000
  1573. FAKECXD DC X'FF' 01490000
  1574. DC CL7'CXD' 01491000
  1575. BLANKS EQU FAKECXD+4 FIELD OF BLANKS 01492000
  1576. COMMA EQU X'6B' SPECIAL CHARACTER: ',' @VA12730 01492100
  1577. ZEROES DC F'0' FOUR BYTES OF ZEROES @VA12730 01492200
  1578. M7 EQU 7 BINARY MASK '0111' @VA12730 01492300
  1579. M1 EQU 1 BINARY MASK '0001' @VA12751 01493500
  1580. M2 EQU 2 BINARY MASK '0010' @VA12751 01494000
  1581. EJECT @VA12751 01494500
  1582. LTORG 01495000
  1583. SPACE 01496000
  1584. PRTRAN DC X'7C7D827E8180807F' 01497000
  1585. DC X'000103070504020500000000000000000000000006' 01498000
  1586. TRANPR EQU *-X'90'-1 01499000
  1587. PCTYPE EQU X'04' PRIVATE CODE INDICATOR @VA04910 01500000
  1588. WKEXT EQU X'03' WEAK EXTERN INDICATOR 01501000
  1589. EJECT 01502000
  1590. ********************************************************************** 01503000
  1591. * 01504000
  1592. * CONTROL CARD PROCESSOR 01505000
  1593. * 01506000
  1594. ********************************************************************** 01507000
  1595. DS F 01508000
  1596. CTLCRD1 EQU * 01509000
  1597. SPACE 01510000
  1598. LA 1,SPEC SET P-LIST FOR 'SCAN' 01511000
  1599. STM R2,R15,APSV+8 SAVE REGS @VA02089 01512000
  1600. LA R0,80 SET COUNT TO 80 BYTES 01513000
  1601. USING NUCON,R0 01514000
  1602. MVC PLISTSAV(256),CMNDLIST SAVE SCAN WORK AREA 01515000
  1603. MVC PLISTSAV+256(256),CMNDLIST+256 01516000
  1604. L R15,ASCANN GET ADDRESS OF SCAN 01517000
  1605. BALR 14,15 AND AWAY WE GO ... 01518000
  1606. LM R2,R15,APSV+8 RESTORE REGS @VA02089 01519000
  1607. CLC 0(8,1),=CL8'ENTRY' IS IT ENTRY 01520000
  1608. BE CTLENT YES 01521000
  1609. CLC 0(8,1),=CL8'LIBRARY' IS IT LIBRARY 01522000
  1610. BE CTLLIB YES 01523000
  1611. MVC CMNDLIST(256),PLISTSAV RESTORE PLIST 01524000
  1612. MVC CMNDLIST+256(256),PLISTSAV+256 01525000
  1613. TM FLAG2,NOINV DO WE PRINT ILLEGAL CARDS ? 01526000
  1614. BC 8,BADCRD YES 01527000
  1615. B RD GET NEXT CARD 01528000
  1616. SPACE 2 01529000
  1617. CTLENT EQU * 01530000
  1618. LA R6,CTLRET RETURN FROM TABLE SEARCHING 01531000
  1619. MVC ENTNAME,8(R1) SAVE ENTRY NAME 01532000
  1620. CTLENT1 EQU * COME HERE IF RESET WAS SPECIFIED 01533000
  1621. LA 1,ENTNAME SET ADDRESS OF ENTRY NAME 01534000
  1622. LA 2,ENTNO SET 'NOT FOUND' ADDRESS 01535000
  1623. BAL 3,SERCH1 SEARCH LOADER TABLES 01536000
  1624. CTLENT2 TM FLAGS,RESET RESET 'NAME' IN EFFECT P3093 01537000
  1625. BCR 1,R6 YES, IGNORE ENTRY FUNCTION P3093 01538000
  1626. ST 12,ENTADR SAVE ADDRESS OF LOADER TABLE ENTRY 01539000
  1627. BR R6 RETURN TO CALLER 01540000
  1628. ENTNO EQU * 01541000
  1629. OI 8(12),X'80' INDICATE ENTRY UNDEFINED 01542000
  1630. OI FLAGS,LUNDEF NOTE THAT THERE ARE UNDEFINES 01543000
  1631. B CTLENT2 P3093 01544000
  1632. CTLRET EQU * 01545000
  1633. LA 5,CTLCRD SET I/O MESSAGE NUMBER 01546000
  1634. MVC OUTBUF+15(80),SPEC CARD IMAGE 01547000
  1635. L R11,ADMSLIO GET LINKAGE TO IO ROUTINE @V305614 01548000
  1636. BALR R14,R11 PRINT CONTROL CARD 01549000
  1637. CTRESTR MVC CMNDLIST(256),PLISTSAV RESTORE SCAN WORK AREA 01550000
  1638. MVC CMNDLIST+256(256),PLISTSAV+256 01551000
  1639. B RD PROCESS NEXT CARD 01552000
  1640. SPACE 2 01553000
  1641. CTLLIB EQU * 01554000
  1642. CLI 8(1),C'*' IS IT NON-OBLIGATOEY REFERENCE 01555000
  1643. BE NONREF YES 01556000
  1644. CLI 8(1),C'(' IS IT NON-OBLIGATORY REFERENCE 01557000
  1645. BNE BADCRD NO, CONDIDER IT INVALID 01558000
  1646. NONREF EQU * 01559000
  1647. LA 11,1 SET A 1 INTO REG. 11 01560000
  1648. LA 6,SPEC SCAN FOR ( 01561000
  1649. LA R5,SPEC+79 POINT TO END OF CARD P3072 01562000
  1650. NONREF1 EQU * 01563000
  1651. AR 6,11 INCREMENT 01564000
  1652. CR R6,R5 AT END OF CARD P3072 01565000
  1653. BH BADCRD YES, SOMETHING WRONG P3072 01566000
  1654. CLI 0(6),C'(' IS IT ( 01567000
  1655. BNE NONREF1 NO 01568000
  1656. NONREF2 EQU * 01569000
  1657. MVC OUTBUF(8),=CL8' ' SPACE TO FORM NAME @VA11148 01570000
  1658. LA 7,OUTBUF-1 INITIALIZE POINTER 01571000
  1659. NONREF3 LA R5,SPEC+79 SET R5 TO END OF CARD P3089 01572000
  1660. AR 6,11 INCREMENT 01573000
  1661. CR R6,R5 AT END OF CARD P3072 01574000
  1662. BH BADCRD YES, SOMETHING WRONG P3072 01575000
  1663. AR 7,11 INCREMENT 01576000
  1664. CLI 0(6),C',' END OF NAME? 01577000
  1665. BE NONREFM YES 01578000
  1666. CLI 0(6),C')' END OF CONTROL CARD? 01579000
  1667. BE NONREFN YES 01580000
  1668. MVC 0(1,7),0(6) MOVE CHARACTER 01581000
  1669. B NONREF3 GET NEXT CHARACTER 01582000
  1670. SPACE 01583000
  1671. NONREFM EQU * 01584000
  1672. BAL 7,NONREFX MARK ENTRY 01585000
  1673. B NONREF2 GET NEXT ENTRY 01586000
  1674. SPACE 01587000
  1675. NONREFN EQU * 01588000
  1676. BAL 7,NONREFX MARK LAST ENTRY 01589000
  1677. B CTLRET PRINT CONTROL CARD 01590000
  1678. SPACE 01591000
  1679. NONREFX EQU * 01592000
  1680. LA 1,OUTBUF SET ADDR. OF ENTRY NAME 01593000
  1681. LA 2,NONREFNT SET 'NOT FOUND' RETURN 01594000
  1682. BAL 3,SERCH1 SEARCH LOADER TABLE 01595000
  1683. TM 8(12),X'80' IS IT DEFINED ALREADY 01596000
  1684. BZ 0(0,7) YES, TOO LATE TO BOTHER 01597000
  1685. TM REFLG2(R12),REFCMD DEFND BY CMD? @VA01699 01598000
  1686. BCR 7,R7 OVERRIDE LIBE CARD @VA01699 01599000
  1687. OI REFLG1(R12),REFLIB NOTE SKIP LIBE SEARCH @VA01699 01600000
  1688. BCR 15,7 RETURN TO CALLER 01601000
  1689. NONREFNT EQU * 01602000
  1690. OI REFLG1(R12),REFLIB+REFUND 'UNDEFINED' ALSO @VA01699 01603000
  1691. BCR 15,7 BACK TO CALLER 01604000
  1692. SPACE 01605000
  1693. LTORG 01606000
  1694. * 01607000
  1695. EJECT 01608000
  1696. XPRTAB DSECT 01609000
  1697. SPACE 01610000
  1698. FULLAD DS 64D 01611000
  1699. DBLAD DS 32D 01612000
  1700. HALFAD DS 16D 01613000
  1701. BYTEAD DS 8D 01614000
  1702. COMMON DS 1F 01615000
  1703. CXDAD DS 1F 01616000
  1704. EJECT 01617000
  1705. LDRST 01618000
  1706. * 01619000
  1707. *********************************************************************** 01620000
  1708. * 01621000
  1709. * NUCLEUS CONSTANT AREA 01622000
  1710. * 01623000
  1711. *********************************************************************** 01624000
  1712. * 01625000
  1713. NUCON 01626000
  1714. SVCSAVE 01627000
  1715. REGEQU @V305665 01628000
  1716. END 01629000