Table of Contents

DMSSLN Source

References

Source Listing

DMSSLN.ASSEMBLE.txt
  1. SLN TITLE 'DMSSLN (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * MODULE NAME 00004000
  5. * 00005000
  6. * DMSSLN 00006000
  7. * 00007000
  8. * FUNCTION 00008000
  9. * 00009000
  10. * HANDLE OS CONTENTS MANAGEMENT REQUESTS ISSUED 00010000
  11. * UNDER CMS. (LINK, LOAD, XCTL, DELETE, ATTACH,EXIT) 00011000
  12. * 00012000
  13. * ATTRIBUTES 00013000
  14. * 00014000
  15. * REENTRANT, SEGMENT RESIDENT 00015000
  16. * 00016000
  17. * ENTRY POINTS 00017000
  18. * 00018000
  19. * DMSSLN7 - XCTL - R15 POINTS TO ADDRESS OF REQUESTED 00019000
  20. * PHASE NAME 00020000
  21. * DMSSLN6 - LINK - SAME AS DMSSLN7 00021000
  22. * DMSSLN42 - ATTACH - R15 POINTS TO ATTACH PARAMETER LIS 00022000
  23. * DMSSLN8 - LOAD - R0 POINTS TO PHASE NAME 00023000
  24. * DMSSLN9 - DELETE - R0 POINTS TO PHASE NAME 00024000
  25. * DMSSLN3 - EXIT - NO ENTRY CONDITIONS 00025000
  26. * DMSSLNAB - ABEND RECOVERY - R14 RETURN ADDRESS 00026000
  27. * ALL ENTRY POINTS - R15 CONTAINS ADDRESSIBILITY 00027000
  28. * 00028000
  29. * ENTRY CONDITIONS 00029000
  30. * 00030000
  31. * SEE ENTRY POINTS 00031000
  32. * 00032000
  33. * EXIT CONDITIONS 00033000
  34. * 00034000
  35. * NORMAL 00035000
  36. * RETURN TO DMSITS TO: 00036000
  37. * 1) CONTINUE PROCESSING WITH CALLED PHASE OR END 00037000
  38. * OF TASK EXIT (LINK, XCTL, ATTACH) 00038000
  39. * 2) RETURN TO CALLER - EXIT FROM CALLED PHASE 00039000
  40. * 3) RETURN TO CALLER WITH LOADED PHASE ADDRESS IN 00040000
  41. * REGISTER ZERO (LOAD) 00041000
  42. * 4) RETURN TO CALLER WITH ZERO IN REGISTER 15 FOR 00042000
  43. * SUCCESSFUL DELETE 00043000
  44. * 00044000
  45. * ERROR 00045000
  46. * 1) RETURN TO CALLER WITH 4 IN REGISTER 15 FOR 00046000
  47. * PHASE NOT FOUND - DELETE 00047000
  48. * 2) ABEND X'155' LOADMOD ERROR (LINK, LOAD, XCTL, 00048000
  49. * ATTACH) 00049000
  50. * 3) ABEND X'15A' - CMS LOADER ERROR (>4) OR ENTRY 00050000
  51. * LOCATION NOT DETERMINEABLE 00051000
  52. * 00052000
  53. * CALLS TO OTHER ROUTINES 00053000
  54. * 00054000
  55. * DMSMOD, DMSLDRB 00055000
  56. * 00056000
  57. * EXTERNAL REFERENCES 00057000
  58. * 00058000
  59. * NUCON, SVCSECT, PGMSECT, DCB, 00059000
  60. * CALLER'S SAVE AREA + 12 (LINK, LOAD, XCTL, 00060000
  61. * ATTACH) IF COMPILER SWITCH IS OFF 00061000
  62. * 00062000
  63. * TABLES/WORKAREAS 00063000
  64. * 00064000
  65. * REQUEST BLOCK 00065000
  66. * 00066000
  67. * REGISTER USAGE 00067000
  68. * 00068000
  69. * R7 REQUEST BLOCK ADDRESS 00069000
  70. * R12 BASE REGISTER 00070000
  71. * R13 CMS SVC SAVE AREA ADDRESS 00071000
  72. * WORK 0-5,8-11,14,15 00072000
  73. * UNUSED 6 00073000
  74. * 00074000
  75. * OPERATION 00075000
  76. * 00076000
  77. * DMSSLN7 - XCTL 00077000
  78. * 1. IF XCTL IS FROM NON-DYNAMICALLY LOADED 00078000
  79. * PHASE GO TO DMSSLN6 STEP 2 (BELOW) 00079000
  80. * 2. RELEASE STORAGE OCCUPIED BY CURRENT PHASE (LATEST 00080000
  81. * RB ON LINK CHAIN DEFINES STORAGE AREA) 00081000
  82. * 3. GO TO DYNAMIC (BELOW) 00082000
  83. * 00083000
  84. * DMSSLN6 - LINK 00084000
  85. * 00085000
  86. * 1. CALL RESIDENT (BELOW) TO CHECK FOR LINK TO CMS 00086000
  87. * RESIDENT FUNCTION. 00087000
  88. * 2. ISSUE GETMAIN FOR A NEW REQUEST BLOCK 00088000
  89. * 3. IF ATTACH REQUEST SAVE ATTACHER'S R13 AND R15 00089000
  90. * IN THE RB. POINT R13 TO RB SAVE AREA FOR ATTACHEE 00090000
  91. * 4. IF THIS IS A LOAD REQUEST GO TO STEP 7 00091000
  92. * 5. CHAIN THIS RB AS LATEST ON LINK CHAIN. SAVE 00092000
  93. * RESUME PSW IN RB. 00093000
  94. * 6. IF COMPILER SWITCH IS ON GO TO LODMOD (BELOW), 00094000
  95. * OTHERWISE, GO TO DYNAMIC (BELOW). 00095000
  96. * 7. CHAIN THIS RB ON LOAD LIST. SET ZERO USE COUNT 00096000
  97. * GO TO DYNAMIC STEP 2 (BELOW). 00097000
  98. * 00098000
  99. * DMSSLN42 - ATTACH 00099000
  100. * 00100000
  101. * 1. ISSUE STAE MACRO IF STAI EXIT IS REQUESTED BY 00101000
  102. * ATTACHER. 00102000
  103. * 2. GO TO DMSSLN6 (ABOVE). 00103000
  104. * 00104000
  105. * DMSSLN8 - LOAD 00105000
  106. * 00106000
  107. * 1. IF REQUESTED PHASE IS ON LOAD RB CHAIN GO TO 00107000
  108. * DYNAMIC STEP 6 (BELOW). 00108000
  109. * STEP 2 (ABOVE). 00109000
  110. * 3. IF COMPILER SWITCH IS ON GO TO LODMOD 00110000
  111. * STEP 2 (BELOW; OTHERWISE GO TO DMSSLN6 STEP 2 00111000
  112. * (ABOVE). 00112000
  113. * 00113000
  114. * DMSSLN9 - DELETE 00114000
  115. * 00115000
  116. * 1. IF COMPILER SWITCH IS ON RETURN TO DMSITS. 00116000
  117. * 2. IF REQUESTED PHASE IS NOT ON LOAD RB CHAIN SET 00117000
  118. * RETURN CODE 4 IN R15. AND RETURN TO DMSITS. 00118000
  119. * 3. DECREMENT USE COUNT BY ONE. IF USE COUNT IS NOT 00119000
  120. * ZERO RETURN TO DMSITS. 00120000
  121. * 4. RELEASE PHASE STORAGE AREA, UNCHAIN AND FREEMAIN 00121000
  122. * LOAD REQUEST BLOCK. ZERO R15 AND RETURN TO DMSITS. 00122000
  123. * 00123000
  124. * DMSSLN3 - EXIT FROM CALLED PHASE 00124000
  125. * 00125000
  126. * 1. IF NOT RETURN FROM SUBTASK (ATTACH) GO TO STEP 3. 00126000
  127. * 2. POST ECB, EXECUTE END OF TASK EXIT ROUTINE IF ONE 00127000
  128. * WAS REQUESTED. 00128000
  129. * 3. RELEASE PHASE STORAGE, UNCHAIN AND FREE LATEST RB O 00129000
  130. * LINK RB CHAIN. RESTORE REGISTERS IF RETURN FROM SUBTAS 00130000
  131. * RETURN TO DMSITS. 00131000
  132. * 00132000
  133. * DYNAMIC - CALL CMS LOADER 00133000
  134. * 00134000
  135. * 1. IF REQUESTED PHASE IS ON LOAD REQUEST BLOCK CHAIN 00135000
  136. * GO TO STEP 6. 00136000
  137. * 2. SET PHASE NAME IN RB. ISSUE CONDITIONAL GETMAIN FOR 00137000
  138. * AN AREA TO LOAD REQUESTED PHASE INTO. SET LOCATION 00138000
  139. * COUNTER TO PHASE AREA. CALL DMSLDRB TO INCLUDE PHASE. 00139000
  140. * 3. IF DMSLDR RETURNS AN ERROR CODE >4 ISSUE ABEND 00140000
  141. * X'15A'. OTHERWISE RESET LOADER TABLE COUNT TO PRE-INCL 00141000
  142. * COUNT. 00142000
  143. * 4. RELEASE EXCESS PHASE STORAGE. 00143000
  144. * 5. DETERMINE PHASE ENTRY POINT: 00144000
  145. * A.USE STRTADDR VALUE IN NUCON IF COMPILER SWITCH IS O 00145000
  146. * B.USE STRTADDR IF PHASE NAME OCCURED AS A MEMBER NAME 00146000
  147. * IN A CMS TXTLIB (OS FORM - REF. TXTLIB COMMAND). 00147000
  148. * C.USE ALIASENT IN NUCON IF PHASE NAME OCCURED IN LOAD 00148000
  149. * CSECTS BUT WAS NOT THE TXTLIB MEMBER NAME (REAL ALI 00149000
  150. * D.USE STRTADDR FOR ALL OTHER CASES (SYMBOLIC ALIAS). 00150000
  151. * 00151000
  152. * 6. RESET DYNAMIC FLAGS. 00152000
  153. * 7. IF THIS IS A LOAD REQUEST GO TO STEP 9. 00153000
  154. * 8. SET PHASE ENTRY ADDRESS IN CMS OLD PSW AND R15, SET 00154000
  155. * THAT CALLED PHASE WILL RETURN TO AN SVC 3 INSTRUCTION. 00155000
  156. * RETURN TO DMSITS WHICH WILL TRANSFER TO CALLED PHASE. 00156000
  157. * 9. IF COMPILER SWITCH IS OFF INCREASE USE COUNT IN RB 00157000
  158. * ONE AND SAVE ENTRY LOCATION IN LOAD RB. 00158000
  159. * 10. SET R0 TO ENTRY LOCATION. RETURN TO DMSITS. 00159000
  160. * THE ENTRY ADDR. IS FROM THE LOAD RB IF PHASE WAS ALREA 00160000
  161. * IN STORAGE. 00161000
  162. * 00162000
  163. * LODMOD - LOADMOD A PHASE 00163000
  164. * 00164000
  165. * 1. SAVE REQUESTED NAME IN RB. IF REQUESTED NAME IS 00165000
  166. * ON LOAD RB CHAIN GO TO DYNAMIC STEP 6 (ABOVE). 00166000
  167. * 2. CALL DMSMOD TO BRING IN REQUESTED PHASE AS A CMS MO 00167000
  168. * IF DMSMOD RETURNS NON ZERO RETURN CODE ISSUE ABEND X'1 00168000
  169. * 3. GO TO DYNAMIC STEP 5 (ABOVE). 00169000
  170. * 00170000
  171. * RESIDENT 00171000
  172. * 00172000
  173. * CHECK REQUESTED PHASE NAME AGAINST CMS RESIDENT LIST 00173000
  174. * (IECQBFG1 IS ONLY ENTRY). IF EQUAL GO TO RESIDENT ROUT 00174000
  175. * OTHERWISE RETURN TO INTERNAL CALLER. 00175000
  176. * 00176000
  177. * DMSSLNAB - ABEND RECOVERY 00177000
  178. * 00178000
  179. * ENTERED WHEN AN ABEND (SVC 13) OCCURS IN CMS. DMSSLNAB 00179000
  180. * RELEASES THE LOAD AND LINK REQUEST BLOCK CHAINS BY 00180000
  181. * ZEROING THEIR RESPECTIVE ANCHORS IN NUCON. RETURN 00181000
  182. * TO DMSABN. 00182000
  183. *. 00183000
  184. EJECT 00184000
  185. DMSSLN7 START , @V305665 00185000
  186. ENTRY DMSSLN @V305665 00186000
  187. ENTRY DMSSLN3,DMSSLN6,DMSSLN7,DMSSLN8 @V1D1705 00187000
  188. ENTRY DMSSLN9,DMSSLN42 @V1D1705 00188000
  189. USING NUCON,XR0 @V1D1705 00189000
  190. USING SVCSECT,XRB @V1D1705 00190000
  191. USING SSAVE,XRD @V1D1705 00191000
  192. * TRANSFER CONTROL - XCTL, SVC 7 00192000
  193. SPACE 1 00193000
  194. DMSSLN EQU * @V305665 00194000
  195. USING DMSSLN7,XRC @V1D1705 00195000
  196. BAL XRA,LODREG SET REGS 7 13 @V1D1705 00196000
  197. LTR XR7,XR7 XCTL FROM DYNAMICALLY LOADED PHAS@V1D1705 00197000
  198. BZ LINK1 NO, TREAT XCTL AS LINK @V1D1705 00198000
  199. LA XRA,LINK1A SET LINKAGE @V1D1705 00199000
  200. B DEL6 FREE OLD PHASE AREA @V1D1705 00200000
  201. EJECT 00201000
  202. SPACE 1 00202000
  203. USING *,12 @V1D1705 00203000
  204. DMSSLN42 EQU * @V1D1705 00204000
  205. TM 8(XRF),X'01' WAS STAI EXIT REQUESTED @V1D1705 00205000
  206. BNO DMSSLN6 NO @V1D1705 00206000
  207. L XR4,40(XRF) GET STAE PARM ADDR @V1D1705 00207000
  208. L XR5,44(XRF) GET STAE EXIT ADDR @V1D1705 00208000
  209. LR XR1,XRD SET PARAM REG @V1D1705 00209000
  210. STAE (XR5),CT,PARAM=(XR4),MF=(E,(1)) @V1D1705 00210000
  211. L XRA,APGMSECT SET STAI FLG IN SCB @V1D1705 00211000
  212. USING PGMSECT,XRA @V1D1705 00212000
  213. L XRA,SCBPTR PTR TO CURRENT SCB @V1D1705 00213000
  214. DROP XRA @V1D1705 00214000
  215. OI 12(XRA),X'20' INDICATE SCB FOR STAI @V1D1705 00215000
  216. EJECT 00216000
  217. * LINK - SVC 6 00217000
  218. SPACE 1 00218000
  219. DMSSLN6 BALR XRC,0 @V1D1705 00219000
  220. USING *,XRC @V1D1705 00220000
  221. L XRC,BASED COMMON CAUSE @V1D1705 00221000
  222. USING DMSSLN7,XRC @V1D1705 00222000
  223. BAL 10,RESIDENT CHECK FOR RESIDENT ROUTINE @V1D1705 00223000
  224. BAL 10,LODREG SET REGS BY CONVENTION @V1D1705 00224000
  225. USING LINKBLK,XR1 LINKBLK DSECT @V1D1705 00225000
  226. LINK1 LA XR0,SAVLEN/8 GET LINK BLOCK @V1D1705 00226000
  227. DMSFREE DWORDS=(0),TYPCALL=BALR @V1D1705 00227000
  228. CLI OLDPSW+3,42 IS THIS ATTACH @V1D1705 00228000
  229. BNE LINK11 BRANCH IF NOT @V1D1705 00229000
  230. MVC SAVR15(4),EGPR15 SAVE PARAMETER REG @V1D1705 00230000
  231. MVC SAVR13(4),EGPR13 SAVE ATTACHER'S R13 @V1D1705 00231000
  232. LA XR0,SVAREA POINT TO NEW SAVE AREA FOR ATTACH@V1D1705 00232000
  233. ST XR0,EGPR13 @V1D1705 00233000
  234. B LINKA JOIN BELOW @V1D1705 00234000
  235. LINK11 CLI OLDPSW+3,SLOAD SVC 08 @V1D1705 00235000
  236. BE LOAD5 BRANCH IF YES @V1D1705 00236000
  237. LINKA ST XR7,LINKPTR CHAIN NEW AREA AHEAD OF OTHERS @V1D1705 00237000
  238. LR XR7,XR1 @V1D1705 00238000
  239. ST XR7,LINKLAST @V1D1705 00239000
  240. XC LINKBYTE(4),LINKBYTE CLEAR SIZE FIELD @V1D1705 00240000
  241. DROP XR1 @V1D1705 00241000
  242. USING LINKBLK,XR7 USE LINKBLK DSECT @V1D1705 00242000
  243. MVC SAVPSW(8),OLDPSW SAVE OLD SVC PSW @V1D1705 00243000
  244. LINK1A L XRF,EGPR15 GET A(PHASE NAME) @V1D1705 00244000
  245. L XRF,0(,XRF) @V1D1705 00245000
  246. TM OSSFLAGS,COMPSWT MODULES @V1D1705 00246000
  247. BO LODMOD CMS LOADMOD @V1D1705 00247000
  248. B DYNAMIC GO DYNAMICALLY LINK @V1D1705 00248000
  249. LINK2 EQU * RETURN FROM DYNAMIC LOAD OF T@V1D1705 00249000
  250. ST XR0,OLDPSW+4 SET PSW TO ENTRY POINT @V1D1705 00250000
  251. ST XR0,EGPR15 SET ENTRY POINT IN R15 @V1D1705 00251000
  252. LINK3 LA XRE,EXIT SET RETURN ADDRESS @V1D1705 00252000
  253. CLI OLDPSW+3,07 WAS THIS A TRANSFER CONTROL? @VA05460 00253000
  254. BE TRANS1 YES, SPECIAL CONSIDERATION @VA05460 00254000
  255. ST XRE,EGPR14 FOR CALLEE @V1D1705 00255000
  256. TRANS1 EQU * @VA05460 00256000
  257. L XRE,OSTEMP RETURN TO SVC HANDLER @V1D1705 00257000
  258. BR XRE @V1D1705 00258000
  259. LOAD5 L XRF,EGPR0 GET REQUESTED PHASE NAME @V1D1705 00259000
  260. LPR XRF,XRF IN CASE DE TYPE @V1D1705 00260000
  261. L XR7,LINKSTRT CHAIN NEW BLOCK TO LOAD LIST @V1D1705 00261000
  262. ST XR1,LINKSTRT AT THE TOP OF THE LIST @V1D1705 00262000
  263. ST XR7,0(XR1) @V1D1705 00263000
  264. LR XR7,XR1 R7 HAS LINK BLOCK ADDR @V1D1705 00264000
  265. MVI LINKCNT,X'00' CLEAR USE COUNT @V1D1705 00265000
  266. XC LINKBYTE,LINKBYTE CLEAR SIZE FIELD @VA04980 00266000
  267. B DYNAMIC1 FETCH PHASE @V1D1705 00267000
  268. EJECT 00268000
  269. * EXIT MACRO EXIT, SVC 3 00269000
  270. EXIT SVC 3 COME HERE ON RETURN MACRO @V1D1705 00270000
  271. SPACE 3 00271000
  272. * RETURN FROM LINKED-TO PHASE - RETURN, SVC 3 00272000
  273. SPACE 1 00273000
  274. USING *,12 @V1D1705 00274000
  275. DMSSLN3 L XRC,BASED COMMON ADDRESSABILITY @V1D1705 00275000
  276. USING DMSSLN7,XRC @V1D1705 00276000
  277. BAL 10,LODREG SET REGS BY CONVENTION @V1D1705 00277000
  278. CLI SAVPSW+3,42 WAS THIS AN ATTACH SVC @V1D1705 00278000
  279. BNE RETURN3 NO, SKIP ATTACH EXIT CODE @V1D1705 00279000
  280. L XR1,SAVR15 GET ADDR OF ATTACH PARM LIST @V1D1705 00280000
  281. LA XR1,0(0,XR1) CLEAR HI BYTE @V1D1705 00281000
  282. LTR XR1,XR1 IS THIS SECOND TIME THROUGH @V1D1705 00282000
  283. BZ RETURN3 YES, RETURN @V1D1705 00283000
  284. XC SAVR15(4),SAVR15 SET SWITCH FOR 2ND TIME THROU@V1D1705 00284000
  285. L XRA,8(XR1) GET ECB ADDR @V1D1705 00285000
  286. LA XRA,0(0,XRA) CLEAR HI BYTE @V1D1705 00286000
  287. LTR XRA,XRA IS IT ZERO @V1D1705 00287000
  288. BZ CKEXIT YES, CONTINUE @V1D1705 00288000
  289. MVC 0(4,XRA),EGPR15 FILL IN RETURN CODE @V1D1705 00289000
  290. MVI 0(XRA),X'40' FILL IN COMPLETION BIT @V1D1705 00290000
  291. CKEXIT L XRA,20(XR1) GET ADDR OF EXIT ROUTINE @V1D1705 00291000
  292. LA XRA,0(0,XRA) CLEAR HI BYTE @V1D1705 00292000
  293. LTR XRA,XRA IS THERE AN EXIT RTN. SPECIFI@V1D1705 00293000
  294. BZ RETURN3 NO, RETURN @V1D1705 00294000
  295. XC EGPR1,EGPR1 ZERO REG 1 @V1D1705 00295000
  296. ST XRA,EGPR15 SET ENTRY POINT IN REG 15 @V1D1705 00296000
  297. MVC OLDPSW+5(3),21(XR1) SET OLDPSW TO EXIT ROUTINE @V1D1705 00297000
  298. B LINK3 RETURN TO SVC ROUTINE @V1D1705 00298000
  299. RETURN3 BAL XRA,DEL6 RELEASE PHASE STORAGE @V1D1705 00299000
  300. MVC OLDPSW,SAVPSW RESTORE PSW FROM LAST LINK @V1D1705 00300000
  301. LR XR1,XR7 PREPARE TO FREE LATEST BLOCK ON C@V1D1705 00301000
  302. L XR7,LINKPTR GET SECOND MEMBER OF CHAIN @V1D1705 00302000
  303. ST 7,LINKLAST @V1D1705 00303000
  304. LA XR0,SAVLEN/8 LINK/XCTL LINK BLOCK SIZE @V1D1705 00304000
  305. CLI OLDPSW+3,42 IS THIS ATTACH @V1D1705 00305000
  306. BNE RETURN4 NO @V1D1705 00306000
  307. LA XRF,SVAREA-LINKBLK(XR1) GET ATTACHEE'S SAVE ARE@V1D1705 00307000
  308. MVC EGPR0(52),20(XRF) RESTORE REGS FOR ATTACHER @V1D1705 00308000
  309. MVC EGPR13(4),SAVR13-LINKBLK(XR1) RESTORE ATTACHER'S@V1D1705 00309000
  310. RETURN4 DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V1D1705 00310000
  311. B DEL7A @VA03007 00311000
  312. EJECT 00312000
  313. * LOAD IN AN OBJECT DECK - LOAD, SVC 8 00313000
  314. SPACE 1 00314000
  315. DMSSLN8 EQU * LOAD A MODULE, SVC 8 @V1D1705 00315000
  316. USING DMSSLN8,12 @V1D1705 00316000
  317. L XRC,BASED COMMON ADDRESSABILITY @V1D1705 00317000
  318. USING DMSSLN7,12 @V1D1705 00318000
  319. BAL 10,LODREG SET REGS BY CONVENTION @V1D1705 00319000
  320. L 15,EGPR0 GET A(PHASE NAME) @V1D1705 00320000
  321. LPR XRF,XRF IN CASE OF DE TYPE @V1D1705 00321000
  322. LA XR8,LOAD2 IN CASE FOUND @V1D1705 00322000
  323. LA XRA,LODMOD1 IN CASE NOT FOUND @V1D1705 00323000
  324. TM OSSFLAGS,COMPSWT TEST FOR MODULE FORM @V1D1705 00324000
  325. BO SCAN MODULES, LOOK FOR LRB @V1D1705 00325000
  326. LA XRA,LINK1 IN CASE NOT FOUND @V1D1705 00326000
  327. SCAN L XR0,LINKSTRT GET LRB ANCHOR @V1D1705 00327000
  328. LDLOOP LTR XR1,XR0 LAST LRB ? @V1D1705 00328000
  329. DROP XR7 @V1D1705 00329000
  330. USING LINKBLK,XR1 @V1D1705 00330000
  331. BCR 8,XRA BRANCH IF LAST @V1D1705 00331000
  332. CLC LINKNAM(8),0(XRF) IS THIS REQUESTED PHASE @V1D1705 00332000
  333. L XR0,LINKPTR PTR TO NEXT LRB @V1D1705 00333000
  334. BNE LDLOOP NO, CHECK NEXT LRB @V1D1705 00334000
  335. L XR0,LINKENT GET ENTRY LOCATION @V1D1705 00335000
  336. LR XR7,XR1 SET LINKBLK IN 7 @V1D1705 00336000
  337. DROP XR1 @V1D1705 00337000
  338. USING LINKBLK,XR7 @V1D1705 00338000
  339. BR XR8 RETURN @V1D1705 00339000
  340. EJECT 00340000
  341. * 00341000
  342. * SET UP TO GO TO "LOADER" TO LOAD APPROPRIATE TEXT DECKS 00342000
  343. * 00343000
  344. DYNAMIC LA XR8,INCORE2 IN CASE FOUND IN CORE @V1D1705 00344000
  345. BAL XRA,SCAN LOOK FOR PHASE IN CORE @V1D1705 00345000
  346. USING DYNALIST,XR9 @V1D1705 00346000
  347. DYNAMIC1 MVC LINKNAM(8),0(XRF) MOVE PHASE NAME TO LINK BLOC@V1D1705 00347000
  348. LH XR0,TBENT GET NUMBER OF TABLE ENTRIES @VA04980 00348000
  349. LTR XR0,XR0 HAS ANYTHING BEEN LOADED? @VA04980 00349000
  350. BZ DYNAMIC9 BRANCH IF NOT @VA04980 00350000
  351. L XR4,ALDRTBLS GET LOADER TABLE ADDRESS @VA04980 00351000
  352. LA XR4,0(,XR4) CLEAR HIGH BYTE @VA04980 00352000
  353. LA XR3,LDRENT GET LENGTH OF TABLE ENTRY @VA04980 00353000
  354. USING LDRSECT,XR4 @VA04980 00354000
  355. DYNAMIC3 EQU * @VA04980 00355000
  356. SR XR4,XR3 POINT TO NEXT LOADER ENTRY @VA04980 00356000
  357. CLC LINKNAM(8),LDRNAME IS THIS THE NAME? @VA04980 00357000
  358. BE DYNAMIC4 BRANCH IF YES @VA04980 00358000
  359. BCT XR0,DYNAMIC3 GO CHECK NEXT ENTRY @VA04980 00359000
  360. B DYNAMIC9 NAME IS NOT IN TABLE @VA04980 00360000
  361. DYNAMIC4 EQU * @VA04980 00361000
  362. L XR0,LDRADD GET START ADDRESS @VA04980 00362000
  363. MVC LINKAREA,LDRRELO MOVE IN RELOCATION FACTOR @VA04980 00363000
  364. B INCORE2 @VA04980 00364000
  365. DROP XR4 @VA04980 00365000
  366. DYNAMIC9 EQU * @VA04980 00366000
  367. L XR9,EGPR13 CALLER'S REG13 @V1D1705 00367000
  368. MVC LDNAME(8),0(XRF) SET NAME @V1D1705 00368000
  369. LA XR4,LOADLST+16 GETMAIN PARAM AREA @V305665 00369000
  370. LA XR3,LINKAREA SET ANSWER AREA @V1D1705 00370000
  371. GETMAIN VU,LA=GETCONST,A=(XR3),MF=(E,(XR4)) @V1D1705 00371000
  372. * FOR NEW PHASE 00372000
  373. L XR1,LINKAREA ADDR OF GOTTEN AREA @V1D1705 00373000
  374. ST XR1,LOCCNT SET LOCATION COUNTER @V1D1705 00374000
  375. A XR1,LINKBYTE POINT TO END OF GOTTEN AREA @V1D1705 00375000
  376. ST XR1,DYNAEND CHECKED BY DMSLDR @V1D1705 00376000
  377. XC ALIASENT(4),ALIASENT CLEAR ENTRY LOCATION FO@V1D1705 00377000
  378. MVC LOADLST+16(32),WLIST COMPLETE INCLUDE PLIST @V305665 00378000
  379. LH XRB,TBENT REMEMBER LOADER TABLE COUNT @V1D1705 00379000
  380. LA XR1,LOADLST SET PLIST @V305665 00380000
  381. LR XRA,XR7 SAVE XR7 @V1D1705 00381000
  382. L XRF,=V(DMSOLD) CALL LOADER @V305665 00382000
  383. BALR XRE,XRF @V1D1705 00383000
  384. USING *,XRE @V1D1705 00384000
  385. L XRC,BASED @V1D1705 00385000
  386. DROP XRE @V1D1705 00386000
  387. L XRD,CURRSAVE RESTORE R13 @V1D1705 00387000
  388. LR XR7,XRA RESTORE XR7 @V1D1705 00388000
  389. CH XRF,=H'4' CHECK LOADER RETURN CODE @V1D1705 00389000
  390. BH DYNAERR BRANCH IF YES @V1D1705 00390000
  391. STH XRB,TBENT RESTORE LOADER TBL COUNT @V1D1705 00391000
  392. L XR1,LOCCNT ENDING LOAD LOCATION @V1D1705 00392000
  393. LA XR1,7(0,XR1) ROUND TO DBL WD BDRY. @V1D1705 00393000
  394. N XR1,GETMASK @V1D1705 00394000
  395. L XR0,DYNAEND END OF PHASE AREA @V1D1705 00395000
  396. SR XR0,XR1 REMAING UNUSED STOR. @V1D1705 00396000
  397. BZ LOAD3A BRANCH IF ZERO @V1D1705 00397000
  398. FREEMAIN R,LV=(XR0),A=(XR1) RELEASE IT @V1D1705 00398000
  399. LOAD3A L XRF,LINKBYTE LENGTH OF GOTTEN AREA @V1D1705 00399000
  400. SR XRF,XR0 MINUS AM'T JUST FREED @V1D1705 00400000
  401. ST XRF,LINKBYTE AM'T STILL LEFT @V1D1705 00401000
  402. TM OSSFLAGS,DYMBRNM WAS A MEMBER CALLED BY ITS N@V1D1705 00402000
  403. BO DEFENT YES, USE DEFAULT ENTRY ADDRESS @V1D1705 00403000
  404. TM OSSFLAGS,DYLIBO WAS ENTRY POINT FOUND IN PHA@V1D1705 00404000
  405. BNO DEFENT NO, USE DEFAULT @V1D1705 00405000
  406. L XR0,ALIASENT GET ENTRY NAME LOCATION @V1D1705 00406000
  407. B INCORE2 CONTINUE @V1D1705 00407000
  408. DEFENT L XR0,STRTADDR DEFAULT ENTRY LOCATION @V1D1705 00408000
  409. LTR XR0,XR0 WAS ENTRY POINT SET @V1D1705 00409000
  410. BZ DYNAERR NO, ERROR @V1D1705 00410000
  411. INCORE2 NI OSSFLAGS,255-DYLD-DYLIBO-DYMBRNM @V1D1705 00411000
  412. * RESET DYNAMIC FLAGS 00412000
  413. CLI OLDPSW+3,SLOAD SVC 8 ? @V1D1705 00413000
  414. BE LOAD2 YES. @V1D1705 00414000
  415. B LINK2 ALL OTHER SVC'S @V1D1705 00415000
  416. DYNAERR ABEND 346 ERROR FROM DMSLDR @V1D1705 00416000
  417. LOAD2 TM OSSFLAGS,COMPSWT MODULES @V1D1705 00417000
  418. BO LOAD3 YES, SKIP USE COUNT CODE @V1D1705 00418000
  419. IC XRE,LINKCNT GET USE COUNT @V1D1705 00419000
  420. LA XRE,1(0,XRE) INCREASE IT @V1D1705 00420000
  421. STC XRE,LINKCNT SAVE IT @V1D1705 00421000
  422. ST XR0,LINKENT SET ENTRY ADDRESS IN LOAD BLOCK @V1D1705 00422000
  423. LOAD3 ST XR0,EGPR0 SET ANSWER REG @V1D1705 00423000
  424. L XRE,OSTEMP @V1D1705 00424000
  425. BR 14 RETURN TO SVCINT @V1D1705 00425000
  426. SPACE 1 00426000
  427. EJECT 00427000
  428. * RELEASE A LOAD MODULE - DELETE, SVC 9 00428000
  429. DMSSLN9 EQU * DELETE A PHASE, SVC 9 @V1D1705 00429000
  430. USING DMSSLN9,12 SET TEMPORARY ADDRESSABLIITY@V1D1705 00430000
  431. L XRC,BASED @V1D1705 00431000
  432. USING DMSSLN7,12 @V1D1705 00432000
  433. BAL XRA,LODREG @V1D1705 00433000
  434. TM OSSFLAGS,COMPSWT CMS MODULES @V1D1705 00434000
  435. BO DEL1 YES, DELETE TREATED AS NOP @V1D1705 00435000
  436. L XRF,EGPR0 SET R15 FOR SCAN @V1D1705 00436000
  437. LA XRA,DELABEND IN CASE NOT FOUND IN CORE @V1D1705 00437000
  438. BAL XR8,SCAN LOOK FOR PHASE ON LOAD LIST @V1D1705 00438000
  439. SR XR8,XR8 CLEAR FOR IC @V1D1705 00439000
  440. IC XR8,LINKCNT GET USE COUNT @V1D1705 00440000
  441. BCT XR8,DEL5 DECREMENT, BRANCH IF NOT ZERO @V1D1705 00441000
  442. LA XRA,DEL2 @V1D1705 00442000
  443. DEL6 L XR0,LINKBYTE LENGTH OF PHASE AREA @V1D1705 00443000
  444. LTR XR0,XR0 DOES PHASE OCCUPY STOR. @V1D1705 00444000
  445. BCR 8,XRA RETURN IF NOT @V1D1705 00445000
  446. L XR1,LINKAREA ADDR OF PHASE AREA @V1D1705 00446000
  447. FREEMAIN R,LV=(0),A=(1) RETURN STORAGE @V1D1705 00447000
  448. BR XRA RETURN TO CALLING SECTION @V1D1705 00448000
  449. DEL2 LA XR3,LINKSTRT FIND PREVIOUS LRB @V1D1705 00449000
  450. DEL4 C XR7,0(XR3) THIS LRB POINT TO CURRENT LRB @V1D1705 00450000
  451. BE DEL3 YES, FOUND IT @V1D1705 00451000
  452. L XR3,0(XR3) NEXT LRB ON CHAIN @V1D1705 00452000
  453. B DEL4 @V1D1705 00453000
  454. DEL3 LR XR1,XR7 @V1D1705 00454000
  455. L XR7,LINKPTR NEXT LRB @V1D1705 00455000
  456. LA XR0,SAVLEN/8 FREE LOAD BLOCK @V1D1705 00456000
  457. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V1D1705 00457000
  458. ST XR7,0(XR3) RECONNECT CHAIN @V1D1705 00458000
  459. DEL1 EQU * @V1D1705 00459000
  460. SR XRF,XRF CLEAR ERROR CODE @V1D1705 00460000
  461. DEL7 ST XRF,EGPR15 SET RETURN CODE FOR USER @VA02371 00461000
  462. DEL7A DS 0H @VA03007 00462000
  463. NI OSSFLAGS,255-DYLD-DYLIBO-DYMBRNM CLEAR DYMAMIC @VA02371 00463000
  464. L XRE,OSTEMP @V1D1705 00464000
  465. BR 14 RETURN TO SVC @V1D1705 00465000
  466. DEL5 STC XR8,LINKCNT SET USE COUNT @V1D1705 00466000
  467. B DEL1 RETURN @V1D1705 00467000
  468. DELABEND LA XRF,4 SET DELETE RETURN CODE @V1D1705 00468000
  469. B DEL7 EXIT @V1D1705 00469000
  470. EJECT 00470000
  471. * 00471000
  472. * INITIALIZE PROGRAM REGISTERS 00472000
  473. * 00473000
  474. LODREG OI OSSFLAGS,DYLD+OSRESET SET FLAGS @V1D1705 00474000
  475. L XR7,LINKLAST V(LAST LINKAGE CHAIN BLOCK) @V1D1705 00475000
  476. L XRD,CURRSAVE POINT TO SYSTEM SAVE ARE@V1D1705 00476000
  477. ST XRE,OSTEMP SAVE RETURN REG @V1D1705 00477000
  478. BR 10 @V1D1705 00478000
  479. SPACE 3 00479000
  480. SPACE 3 00480000
  481. EJECT 00481000
  482. * 00482000
  483. * EXECUTE CMS LOADMOD OF A MODULE PHASE 00483000
  484. * 00484000
  485. LODMOD MVC LINKNAM(8),0(XRF) PHASE NAME TO LINK BLOCK @V1D1705 00485000
  486. LA XR8,INCORE2 IN CASE FOUND @V1D1705 00486000
  487. BAL XRA,SCAN LOOK FOR PHASE ON LOAD RB CHAIN @V1D1705 00487000
  488. LODMOD1 L XRB,ASVCSECT @V1D1705 00488000
  489. MVC DUMCOM(8),0(XRF) MOVE PHASE NAME TO LOAD PLIST@V1D1705 00489000
  490. LA XR1,MODLIST @V1D1705 00490000
  491. L XRD,USAVEPTR SAVE AREA FOR DMSMOD @V1D1705 00491000
  492. USING FREEST,XRD @V305665 00492000
  493. L XRA,AFVS ADDR. OF FVSECT @V305665 00493000
  494. USING FVSECT,XRA @V305665 00494000
  495. MVC DSKLIN(44),DSKLIS MOVE PARAMETER LIST @V305665 00495000
  496. MVC DSKLIN+8(8),8(XR1) MOVE MODULE NAME TO PLIST @V305665 00496000
  497. LA XR1,DSKLIN SET PLIST REGISTER @V305665 00497000
  498. SR XR9,XR9 AVOID POSSIBLE FRET ERROR @VA06348 00498000
  499. L XRF,ASTATE CHECK FOR FILE @V305665 00499000
  500. BALR XRE,XRF @V305665 00500000
  501. BNZ LMODSTER STATE ERROR @V305665 00501000
  502. L XR1,28(,XR1) GET A(FST COPY) @V305665 00502000
  503. MVC DSKLIN+24(2),24(XR1) SET MODE IN PLIST @V305665 00503000
  504. LA XR0,TEN GET AN INPUT BUFFER @V305066 00504000
  505. DMSFREE DWORDS=(0),TYPCALL=BALR @V305665 00505000
  506. LR XR9,XR1 USE R9 AS BUFFER ADDR @V305665 00506000
  507. ST XR9,DSKLIN+28 SET IN PLIST @V305665 00507000
  508. LA XR1,DSKLIN ADDR OF READ PLIST @V305665 00508000
  509. L XRF,ARDBUF READ FIRST RECORD @V305665 00509000
  510. BALR XRE,XRF @V305665 00510000
  511. BNZ ERR104S ERROR @V305665 00511000
  512. L XR6,0(XR9) GET STARTING ADDR OF MOD @V305665 00512000
  513. LM XR3,XR4,4(XR9) GET 1ST AND LAST LOCATIONS @V305665 00513000
  514. TM SUBFLAG,SUBACT IS IT ACTIVE? @V305665 00514000
  515. BZ SUBOK BRANCH IF NOT @V305665 00515000
  516. C XR3,AUSRAREA COMPARE LOAD LOC WITH USER @V305665 00516000
  517. BL SUBOK OK IF LOADING BELOW USER @V305665 00517000
  518. LA XRF,THIRTY2 WOULD OVERLAY VALID TEXT @V305066 00518000
  519. B EXITA @V305665 00519000
  520. LMODSTER EQU * @V305665 00520000
  521. CH XRF,=H'28' FILE NOT FOUND? @V305665 00521000
  522. BE ERR002E BRANCH IF YES @V305665 00522000
  523. B EXITA @V305665 00523000
  524. SUBOK EQU * @V305665 00524000
  525. CLM XR3,LOW3,ADTRANS PUT MODULE IN TRANS? @V305665 00525000
  526. BNE STR6 BRANCH IF NOT @V305665 00526000
  527. MVC LASTTMOD,DSKLIN+8 REMEMBER MODULE @V305665 00527000
  528. ST XR6,STRTADDR SET STARTING ADDRESS @VA14326 00527500
  529. B LM34 @V305665 00528000
  530. STR6 EQU * @V305665 00529000
  531. C XR4,FREELOWE WILL FREE STOR BE OVERLAID @V305665 00530000
  532. BH ERR109S BRANCH IF YES @V305665 00531000
  533. MVC LASTLMOD,DSKLIN+8 REMEMBER MODULE @V305665 00532000
  534. ST XR6,STRTADDR SET STARTING ADRESS @V305665 00533000
  535. MVC LOCCNT(4),LOCCNT-STRTADDR(XR9) SET LOCATIONS @V305665 00534000
  536. LH XR8,TBENT-STRTADDR(XR9) LDR TABLE COUNT @V305665 00535000
  537. LTR XR8,XR8 IS IT ZERO (NO MAP)? @V305665 00536000
  538. BZ NOCOUNT BRANCH IF YES @V305665 00537000
  539. STH XR8,TBENT SET NEW COUNT @V305665 00538000
  540. SR XR0,XR0 GET NUM OF LDRTBL PAGES @V305665 00539000
  541. IC XR0,ALDRTBLS FROM LEFT-MOST BYTE @V305665 00540000
  542. MH XR0,=H'204' X 204 (204 ENTRIES/PAGE) @V305665 00541000
  543. CR XR8,XR0 @V305665 00542000
  544. BH ERR116S REFERENCE TABLE OVERFLOW @V305665 00543000
  545. NOCOUNT EQU * @V305665 00544000
  546. OI LDRFLAGS,HEX04 SET NOERASE FOR LOAD MAP @V305066 00545000
  547. LM34 EQU * @V305665 00546000
  548. MVC FRSTLOC(8),FRSTLOC-STRTADDR(XR9) SET LOCATIONS @V305665 00547000
  549. L XR5,F65535 MAX SIZE FOR RDBUF @V305665 00548000
  550. SR XR4,XR3 GET LENGTH OF TEXT @V305665 00549000
  551. RLOOP EQU * @V305665 00550000
  552. STM XR3,XR4,DSKLIN+28 ADDR AND LNTH IN PLIST @V305665 00551000
  553. CR XR4,XR5 TOO BIG FOR RDBUF? @V305665 00552000
  554. BNH OKR BRANCH IF NOT @V305665 00553000
  555. ST XR5,DSKLIN+32 IF TOO BIG SUBSTITUTE MAX @V305665 00554000
  556. OKR EQU * @V305665 00555000
  557. L XRF,ARDBUF READ IN SOME TEXT @V305665 00556000
  558. BALR XRE,XRF @V305665 00557000
  559. BNZ ERR104S BRANCH IF ERROR @V305665 00558000
  560. AR XR3,XR5 INCREMENT STARTING ADDRESS @V305665 00559000
  561. SR XR4,XR5 REMAINING COUNT @V305665 00560000
  562. BP RLOOP LOOP IF MORE @V305665 00561000
  563. LH XR4,TBENT-STRTADDR(XR9) NUM OF LOADER TBL ENT @V305665 00562000
  564. MH XR4,=H'20' MULTIPLY BY 20 @V305665 00563000
  565. LTR XR4,XR4 ANY LOADER TABLES? @V305665 00564000
  566. BZ CHKSTR BRANCH IF NOT @V305665 00565000
  567. L XR3,ALDRTBLS TOP OF LOADER TABLES @V305665 00566000
  568. LA XR3,0(,XR3) CLEAR HIGH BYTE @V305665 00567000
  569. SR XR3,XR4 GET STORAGE LOADER LOC @V305665 00568000
  570. STM XR3,XR4,DSKLIN+28 SET PLIST @V305665 00569000
  571. L XRF,ARDBUF @V305665 00570000
  572. BALR XRE,XRF READ IN LDR TABLES @V305665 00571000
  573. N XRF,=A(X'FFFFF7') ALLOW ONLY 0 OR 8 @V305665 00572000
  574. BNZ ERR104S READ ERROR @V305665 00573000
  575. CHKSTR EQU * @V305665 00574000
  576. TM LDRFLAGS+1-STRTADDR(XR9),X'80' STRINIT? @V305665 00575000
  577. BNO CHKSYS BRANCH IF NOT @V305665 00576000
  578. L XRF,=V(DMSSMNSB) STORAGE INIT. ROUTINE @V305665 00577000
  579. BALR XRE,XRF @V305665 00578000
  580. CHKSYS EQU * @V305665 00579000
  581. L XR3,4(XR9) GET FIST LOCATION @V305665 00580000
  582. CLM XR3,LOW3,ADTRANS TRANSIENT AREA? @V305665 00581000
  583. LA XR1,PRFUSYS XR1 <- USER SYSTEM BIT @V305665 00582000
  584. BNE CHKSYSA SKIP IF USER ROUTINE @V305665 00583000
  585. LA XR1,PRFTSYS XR1 <- TRANSIENT SYSTEM BIT @V305665 00584000
  586. CHKSYSA EQU * @V305665 00585000
  587. EX XR1,CHKSYSO TURN ON SYSTEM FLAG @V305665 00586000
  588. TM LDRFLAGS-STRTADDR(XR9),SYSTEM IS IT SYSTEM MOD? @V305665 00587000
  589. BO FINMOD SKIP IF SO @VA09429 00588000
  590. EX XR1,CHKSYSX IF NOT, RESET FLAG @VA09429 00589000
  591. B FINMOD @V305665 00590000
  592. CHKSYSO OI PROTFLAG,BINZERO BIT FILLED IN BY EX @V305066 00591000
  593. CHKSYSX XI PROTFLAG,BINZERO BIT FILLED IN BY EX @V305066 00592000
  594. FINMOD EQU * @V305665 00593000
  595. LA XR1,DSKLIN PLIST FOR FINIS @V305665 00594000
  596. L XRF,AFINIS @V305665 00595000
  597. BALR XRE,XRF FINIS FILE @V305665 00596000
  598. BNZ ERR105S BRANCH IF ERROR @V305665 00597000
  599. EXITA EQU * @V305665 00598000
  600. LTR XR1,XR9 WAS A BUFFER ACQUIRED? @V305665 00599000
  601. BZ EXIT1 BRANCH IF NOT @V305665 00600000
  602. LR XR5,XRF PROTECT RETURN CODE @V305665 00601000
  603. LA XR0,TEN SIZE OF BUFFER @V305066 00602000
  604. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V305665 00603000
  605. LR XRF,XR5 RESTORE RETURN CODE @V305665 00604000
  606. EXIT1 EQU * @V305665 00605000
  607. LR XRE,XRB @V305665 00606000
  608. LM XR3,XR4,FRSTLOC FIRST AND LAST LOCATIONS @V305665 00607000
  609. L XR7,LINKLAST RESTORE SOME REGS @V1D1705 00608000
  610. L XRD,CURRSAVE @V1D1705 00609000
  611. LTR XRF,XRF ANY ERRORS @V1D1705 00610000
  612. BZ DEFENT SET ENTRY POINT AND EXIT @V1D1705 00611000
  613. ABEND 341 TERMINATE @V1D1705 00612000
  614. EJECT 1 00613000
  615. ERR002E EQU * @V305665 00614000
  616. LA XR2,DSKLIN+8 ADDR OF FILE NAME @V305665 00615000
  617. DMSERR TEXT='FILE ........ MODULE NOT FOUND', @V305665X00616000
  618. LET=E,NUM=2,SUB=(CHARA,(XR2)) @V305665 00617000
  619. LA XRF,TWENTY8 SET ERROR CODE @V305066 00618000
  620. B EXITA AND RETURN @V305665 00619000
  621. SPACE 1 00620000
  622. ERR104S EQU * @V305665 00621000
  623. LR XR3,XRF SAVE RETURN CODE @V305665 00622000
  624. LA XR2,DSKLIN+8 ADDR OF FILE NAME @V305665 00623000
  625. DMSERR TEXT=('ERROR ''..'' READING FILE ', @V305665X00624000
  626. '''....................'' FROM DISK'), @V305665X00625000
  627. NUM=104,LET=S,MF=(E,MSG), @V305665X00626000
  628. SUB=(DEC,(XR3),CHAR8A,(XR2)) @V305665 00627000
  629. LA XRF,HUNDRED SET RETURN CODE @V305066 00628000
  630. B EXITA AND EXIT @V305665 00629000
  631. SPACE 1 00630000
  632. ERR105S EQU * @V305665 00631000
  633. LR XR3,XRF SAVE RETURN CODE @V305665 00632000
  634. LA XR2,DSKLIN+8 ADDR OF FILE NAME @V305665 00633000
  635. DMSERR TEXT=('ERROR ''..'' WRITING FILE ', @V305665X00634000
  636. '''....................'' ON DISK'), @V305665X00635000
  637. NUM=105,LET=S,MF=(E,MSG), @V305665X00636000
  638. SUB=(DEC,(XR3),CHAR8A,(XR2)) @V305665 00637000
  639. LA XRF,HUNDRED SET RETURN CODE @V305066 00638000
  640. B EXITA AND RETURN @V305665 00639000
  641. SPACE 1 00640000
  642. ERR109S EQU * @V305665 00641000
  643. DMSERR TEXT='STORAGE EXCEEDED',LET=S,NUM=109 @V305665 00642000
  644. LA XRF,HUNDRED4 SET ERROR CODE @V305066 00643000
  645. B EXITA AND RETURN @V305665 00644000
  646. SPACE 1 00645000
  647. ERR116S EQU * @V305665 00646000
  648. DMSERR TEXT='LOADER TABLE OVERFLOW',LET=S,NUM=116 @V305665 00647000
  649. LA XRF,HUNDRED4 SET ERROR CODE @V305066 00648000
  650. B EXITA AND RETURN @V305665 00649000
  651. EJECT 00650000
  652. XR0 EQU 0 @V1D1705 00651000
  653. XR1 EQU 1 @V1D1705 00652000
  654. XR2 EQU 2 @V1D1705 00653000
  655. XR3 EQU 3 @V1D1705 00654000
  656. XR4 EQU 4 @V1D1705 00655000
  657. XR5 EQU 5 @V1D1705 00656000
  658. XR6 EQU 6 @V1D1705 00657000
  659. XR7 EQU 7 @V1D1705 00658000
  660. XR8 EQU 8 @V1D1705 00659000
  661. XR9 EQU 9 @V1D1705 00660000
  662. XRA EQU 10 @V1D1705 00661000
  663. XRB EQU 11 @V1D1705 00662000
  664. XRC EQU 12 @V1D1705 00663000
  665. XRD EQU 13 @V1D1705 00664000
  666. XRE EQU 14 @V1D1705 00665000
  667. XRF EQU 15 @V1D1705 00666000
  668. DROP XRA @V305665 00667000
  669. EJECT 00668000
  670. *************************************************************** 00669000
  671. * 00670000
  672. * 'RESIDENT' 00671000
  673. * TESTS IF THE CALLED ROUTINE IS ELEMENT OF A 'CORE RESIDENT RO 00672000
  674. * LIST', IF SO BRANCHES TO IT. 00673000
  675. * 00674000
  676. *************************************************************** 00675000
  677. RESIDENT EQU * @V1D1705 00676000
  678. USING SSAVE,XRD @V1D1705 00677000
  679. L XRD,CURRSAVE POINT TO SYSTEM SAVE ARE@V1D1705 00678000
  680. L XRD,USAVEPTR POINT TO USER SAVE AREA @V1D1705 00679000
  681. STM XR8,XRB,0(XRD) SAVE SOME REGS @V1D1705 00680000
  682. L XRD,CURRSAVE POINT TO SYSTEM SAVE ARE@V1D1705 00681000
  683. LA 9,ROUTABLE ORIGIN OF CORE RESIDENT ROUTINES@V1D1705 00682000
  684. LA XRA,12 GET TABLE INCREMENT @V1D1705 00683000
  685. LA 11,ROUTEND END OF THE CORE RESIDENT ROUTINE@V1D1705 00684000
  686. SR 11,10 @V1D1705 00685000
  687. L 8,EGPR15 R8 POINTS TO THE NAME @V1D1705 00686000
  688. L 8,0(,8) OF THE CALLED ROUTINE @V1D1705 00687000
  689. SUIT01 CLC 0(8,9),0(8) @V1D1705 00688000
  690. BE SUIT02 THE CALLED ROUTINE IS ON THE LIS@V1D1705 00689000
  691. BXLE 9,10,SUIT01 @V1D1705 00690000
  692. L XR8,USAVEPTR POINT TO USER SAVE AREA @V1D1705 00691000
  693. LM XR8,XRB,0(XR8) RESTORE REGS @V1D1705 00692000
  694. LA XRD,EGPRS REPOINT TO XRD TO EGPRS @V1D1705 00693000
  695. BR 10 PROBABLY ON DISK. @V1D1705 00694000
  696. * 00695000
  697. SUIT02 LA 9,8(,9) @V1D1705 00696000
  698. L 12,0(,9) LOAD ROUTINE ADDRESS IN REGISTER @V1D1705 00697000
  699. LM XR0,XR8,EGPRS @V1D1705 00698000
  700. LA XRD,EGPRS @V1D1705 00699000
  701. BR 12 @V1D1705 00700000
  702. * 00701000
  703. * TRANSFERT WITH RETURN (TO SVCINT) IN R14,SAVE AREA(USED BY SV 00702000
  704. * IN R13,BASE IN R12.R15 TO R11, THE CONTENTS THAT EXISTED BEFO 00703000
  705. * THE OS SVC WAS EXECUTED. 00704000
  706. * THE ROUTINE IS ENTERED WITH REGISTERS SET AS IF IT HAS BEEN C 00705000
  707. * DIRECTLY VIA AN OS SVC INSTEAD OF BEING 'LINK-ED'. 00706000
  708. * 00707000
  709. EJECT 00708000
  710. *************************************************************** 00709000
  711. * 00710000
  712. * GETPOOL OS MACRO INSTRUCTION 00711000
  713. * **************************** 00712000
  714. *GETPOOL ROUTINE IS ENTERED VIA AN LINK SVC WHEN USER ISSUES 00713000
  715. * A GETPOOL MACRO.THE ROUTINE GETS CORE AND BUILD THE POOL 00714000
  716. * OF BUFFERS. 00715000
  717. *ENTRY POINT BY LINK TO IECQBFG1 00716000
  718. *INPUT REGISTER 13 USER SAVE AREA ADDRESS 00717000
  719. * REGISTER 14 RETURN ADDRESS 00718000
  720. * REGISTER 12 IECQBFG1 FIRST LOCATION ADDRESS 00719000
  721. * REGISTER 1 DCB ADDRESS FOR POOL ASSIGNMENT 00720000
  722. * +22 NUMBER OF BUFFERS REQUESTED 00721000
  723. * +24 LENGTH OF BUFFERS REQUESTED 00722000
  724. *OUTPUT NUMBER AND ADDRESS OF BUILT BUFFERS IN DCB BUFNO AND BU 00723000
  725. * EXITS NORMAL RETURN ON REGISTER 14 TO CALLER. NUMBER AND ADDR 00724000
  726. * BUILT BUFFERS IN DCB BUFNO AND BUFCB 00725000
  727. *EXITS ERRORS RETURN ON REGISTER 14 TO CALLER.NO BUFFERS BUILT. 00726000
  728. * FORCE OPEN TO BUILD BUFFERS SINCE USER SPECIFIED 0 BUFFER 00727000
  729. * NUMBER OR LENGTH 00728000
  730. * 00729000
  731. *************************************************************** 00730000
  732. USING IECQBFG1,12 @V1D1705 00731000
  733. IECQBFG1 EQU * @V1D1705 00732000
  734. LPR DCBR,BUFPTR (R1 MIGHT BE COMPLEMENTED) @V1D1705 00733000
  735. LH BUFNOR,22(,DCBR) PLACE NUMBER OF BUFFERS IN R@V1D1705 00734000
  736. LH LBUFLR,24(,DCBR) PLACE LENGTH OF BUFFERS IN R@V1D1705 00735000
  737. LTR BUFNOR,BUFNOR Q. ZERO NUMBER REQUESTED. @V1D1705 00736000
  738. BZ RETURNA YES,RETURN @V1D1705 00737000
  739. LTR LBUFLR,LBUFLR Q. ZERO LENGTH REQUESTED. @V1D1705 00738000
  740. BZ RETURNA YES, RETURN @V1D1705 00739000
  741. LA LBUFLR,7(,LBUFLR) ROUND LENGTH. @V1D1705 00740000
  742. SRL LBUFLR,3 TO MULTIPLE @V1D1705 00741000
  743. SLL LBUFLR,3 OF EIGHT. @V1D1705 00742000
  744. LR BUFPTR,LBUFLR ROUNDED LENGTH TIMES @V1D1705 00743000
  745. MR BUFPAR,BUFNOR NUMBER FOR TOTAL LENGTH @V1D1705 00744000
  746. TM 32(DCBR),1 Q.FULL WORD ALIGNMENT SPECIFIED @V1D1705 00745000
  747. BO POOL1 YES @V1D1705 00746000
  748. LA BUFPAR,8(,BUFPTR) NO, ADD 8 TO LGN FOR BCB @V1D1705 00747000
  749. B POOL2 @V1D1705 00748000
  750. POOL1 LA BUFPAR,16(,BUFPTR) YES, ADD 16 FOR BCB AND ALIG@V1D1705 00749000
  751. POOL2 GETMAIN R,LV=(0) OBTAIN CORE @V1D1705 00750000
  752. ST BUFPTR,20(,DCBR) PLACE BUFCB IN DCB @V1D1705 00751000
  753. STC BUFNOR,20(,DCBR) PLACE BUFNO IN DCB @V1D1705 00752000
  754. TM 32(DCBR),1 Q. FULL WORD ALIGNMENT SPECIFIED @V1D1705 00753000
  755. BO POOL3 YES @V1D1705 00754000
  756. LA BUFPAR,8(,BUFPTR) NO,DETERMINE BCB LINK ADDR @V1D1705 00755000
  757. B POOL4 @V1D1705 00756000
  758. POOL3 LA BUFPAR,12(,BUFPTR) YES,LINK ADDR AROUND ALIGN P@V1D1705 00757000
  759. POOL4 ST BUFPAR,0(,BUFPTR) PLACE LINK ADDR IN BCB @V1D1705 00758000
  760. STH LBUFLR,6(,BUFPTR) PLACE LENGTH IN BCB @V1D1705 00759000
  761. STH BUFNOR,4(,BUFPTR) PLACE NUMBER IN BCB @V1D1705 00760000
  762. POOLLOOP LR BUFPTR,BUFPAR UPDATE BUFFER ADDRESS POINTER @V1D1705 00761000
  763. BCT BUFNOR,LOOP Q.ALL BUFFERS BUILT @V1D1705 00762000
  764. XC 0(4,BUFPTR),0(BUFPTR) CLEAR BUFFER LINK ADDRES@V1D1705 00763000
  765. RETURNA BR 14 RETURN TO CALLER @V1D1705 00764000
  766. LOOP LA BUFPAR,0(3,BUFPTR) NO,CALCULATE NEXT BUFFER ADD@V1D1705 00765000
  767. ST BUFPAR,0(,BUFPTR) STORE BUFFER LINK ADDRESS @V1D1705 00766000
  768. BC 15,POOLLOOP BUILD NEXT BUFFER @V1D1705 00767000
  769. SPACE 1 00768000
  770. BUFPAR EQU 0 @V1D1705 00769000
  771. BUFPTR EQU 1 @V1D1705 00770000
  772. BUFNOR EQU 2 @V1D1705 00771000
  773. LBUFLR EQU 3 @V1D1705 00772000
  774. DCBR EQU 4 @V1D1705 00773000
  775. * SOME NICE CONSTANTS AND EQUATES 00774000
  776. * 00775000
  777. SPACE 1 00776000
  778. DS 0D @V1D1705 00777000
  779. BASED DC A(DMSSLN7) @V1D1705 00778000
  780. * 00779000
  781. * TABLE OF CORE-RESIDENT ROUNTINES 00780000
  782. * CL8'*NAME*', A(CORE LOCATION) 00781000
  783. * 00782000
  784. ROUTABLE DS 0F BEGGINING OF TABLE @V1D1705 00783000
  785. DC CL8'IECQBFG1',A(IECQBFG1) @V1D1705 00784000
  786. ROUTEND DS 0F END OF TABLE @V1D1705 00785000
  787. * 00786000
  788. GETMASK DC X'00FFFFF8' @V1D1705 00787000
  789. * 00788000
  790. * 00789000
  791. WLIST DS 0X STOCK VOCABULARY @V1D1705 00790000
  792. DC CL8'(' @V1D1705 00791000
  793. DC CL8'RESET' @V1D1705 00792000
  794. DC CL8'*' @V1D1705 00793000
  795. DC 8X'FF' @V1D1705 00794000
  796. GETCONST DC F'16' MINIMUM GETMAIN STOR. @V1D1705 00795000
  797. DC X'00F00000' MAXIMUM @V1D1705 00796000
  798. LOW3 EQU 7 MASK FOR 2-4 BYTES @V305665 00797000
  799. SYSTEM EQU X'01' @V305665 00798000
  800. TEN EQU 10 @V305066 00799000
  801. THIRTY2 EQU 32 @V305066 00800000
  802. HEX04 EQU X'04' @V305066 00801000
  803. BINZERO EQU X'00' @V305066 00802000
  804. TWENTY8 EQU 28 @V305066 00803000
  805. HUNDRED EQU 100 @V305066 00804000
  806. HUNDRED4 EQU 104 @V305066 00805000
  807. SPACE 2 00806000
  808. DSKLIS EQU *-8 @V305665 00807000
  809. DC X'FF',7X'40' SET FOR DEFAULT FNAME @V305665 00808000
  810. DC CL8'MODULE' FTYPE @V305665 00809000
  811. DC CL2'* ' FMODE @V305665 00810000
  812. DC H'0' ITEM NUMBER @V305665 00811000
  813. DC F'0' BUFFER ADDRESS @V305665 00812000
  814. DC A(80) LENGTH OF FIRST RECORD @V305665 00813000
  815. DC CL2'V ' VARIABLE LENGTH FILE @V305665 00814000
  816. DC H'1' NO. OF ITEMS @V305665 00815000
  817. DC F'0' NO. OF BYTES READ @V305665 00816000
  818. SPACE 2 00817000
  819. LTORG @V1D1705 00818000
  820. * 00819000
  821. * SOME DUMMIES FOLLOW .... 00820000
  822. * 00821000
  823. SPACE 1 00822000
  824. * BASE=XR9=A(12+XRD OF CALLER OS SAVEAREA) 00823000
  825. DYNALIST DSECT @V1D1705 00824000
  826. DS 3F @V1D1705 00825000
  827. LOADLST DS CL8 INCLUDE @V305665 00826000
  828. LDNAME DS CL8 "*NAME*" @V1D1705 00827000
  829. DS 8F @V1D1705 00828000
  830. FREEST DSECT @V305665 00829000
  831. BUFF DS 2F @V305665 00830000
  832. DSKLIN DS 11F @V305665 00831000
  833. MSG DMSERR MF=L,MAXSUBS=2 @V305665 00832000
  834. EJECT 00833000
  835. SPACE 3 00834000
  836. SLOAD EQU 8 @V1D1705 00835000
  837. LINKBLK DSECT @V1D1705 00836000
  838. LINKPTR DS 1F POINTER TO NEXT LINK BLOCK @V1D1705 00837000
  839. LINKAREA DS 1F PHASE STORAGE AREA LOCATION @V1D1705 00838000
  840. LINKBYTE DS 1F LENGTH (BYTES) OF PHASE AREA @V1D1705 00839000
  841. LINKNAM DS 2F PHASE NAME @V1D1705 00840000
  842. SAVPSW DS 2F OLD SVC PSW FOR LINK @V1D1705 00841000
  843. LINKENT DS 1F ENTRY LOCATION OF PHASE @V1D1705 00842000
  844. LINKCNT DS 2X USE COUNT - LOAD RB @V1D1705 00843000
  845. SVAREA DS 19F SAVE AREA FOR ATTACHEE @V1D1705 00844000
  846. SAVR13 DS 1F @V1D1705 00845000
  847. SAVR15 DS 1F @V1D1705 00846000
  848. DS 0D @V1D1705 00847000
  849. SAVLEN EQU (*-LINKBLK) BLOCK LENGTH @V1D1705 00848000
  850. SPACE 3 @VA04980 00849000
  851. LDRSECT DSECT LOADER TABLE ENTRY @VA04980 00850000
  852. LDRNAME DS 2F LOADED TEXT NAME @VA04980 00851000
  853. LDRRELO DS F RELOCATION FACTOR @VA04980 00852000
  854. LDRADD DS F ASSIGNED ADDRESS @VA04980 00853000
  855. LDRFLG2 DS F @VA04980 00854000
  856. LDRENT EQU *-LDRNAME @VA04980 00855000
  857. EJECT 00856000
  858. PGMSECT @V1D1705 00857000
  859. SPACE 3 00858000
  860. NUCON @V1D1705 00859000
  861. SPACE 3 00860000
  862. SVCSECT @V1D1705 00861000
  863. SPACE 3 00862000
  864. FVS @V305665 00863000
  865. CMSAVE @V1D1705 00864000
  866. EJECT 00865000
  867. END 00866000