User Tools

Site Tools


ibm:vm370-lib:cms:dmsfet.assemble_src

DMSFET Source

References

Source Listing

DMSFET.ASSEMBLE.txt
  1. FET TITLE 'DMSFET (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * MODULE NAME 00004000
  5. * 00005000
  6. * DMSFET ( FETCH ) 00006000
  7. * 00007000
  8. * FUNCTION 00008000
  9. * 00009000
  10. * PROVIDE THE FACILITY TO BRING INTO STORAGE A 00010000
  11. * SPECIFIED PHASE FROM THE SYSTEM/PRIVATE CORE 00011000
  12. * IMAGE LIBRARY OR FROM A CMS 'DOSLIB' LIBRARY. 00012000
  13. * ALSO, TO START EXECUTION OF THE PHASE, IF THE 00013000
  14. * START OPTION WAS SPECIFIED. IF 'START' WAS NOT 00014000
  15. * SPECIFIED, TO INFORM THE USER WHERE THE PHASE 00015000
  16. * ENTRY POINT IS. 00016000
  17. * 00017000
  18. * ATTRIBUTES 00018000
  19. * 00019000
  20. * NUCLEUS RESIDENT MODULE 00020000
  21. * REENTRANT 00021000
  22. * 00022000
  23. * ENTRY POINTS 00023000
  24. * 00024000
  25. * DMSFET 00025000
  26. * 00026000
  27. * ENTRY CONDITIONS 00027000
  28. * 00028000
  29. * R1 = PARAMETER LIST 00029000
  30. * 00030000
  31. * DC CL8'FETCH' COMMAND 00031000
  32. * DC CL8'PHASENM' NAME OF PHASE TO FETCH 00032000
  33. * DC CL8'(' BEGIN OF OPTIONS IF ANY 00033000
  34. * DC CL8'START' | 'ORIGIN' ADDRESS | 'COMP' | 'INSTAL' 00034000
  35. * 00035000
  36. * OPTIONS 00036000
  37. * 00037000
  38. * START - START EXECUTING THE PHASE IMMEDIATELY 00038000
  39. * AFTER LOADED. 00039000
  40. * 00040000
  41. * ORIGIN - SPECIFIES WHERE IN THE VIRTUAL PARTITION 00041000
  42. * THE USER WANTS THE PHASE LOADED. 00042000
  43. * 00043000
  44. * COMP - SET A SWITCH IN 'DOSFLAGS' SO THAT WHEN 00044000
  45. * THE PHASE IS GIVEN CONTROL, REGISTER 1 00045000
  46. * CONTAINS THE ADDRESS OF ITS ENTRY POINT. 00046000
  47. * 00047000
  48. * INSTAL - SET A SWITCH IN 'DOSFLAGS' SO THAT WHEN 00048000
  49. * THE SPECIFIED VSAM SEGMENT PHASE TABLE 00049000
  50. * IS LOADED, ALL OF THE REFERENCED PHASES 00050000
  51. * IN THE SEGMENT TABLE WILL BE LOADED AS 00051000
  52. * PART OF THE SEGMENT. 00052000
  53. * 00053000
  54. * EXIT CONDITIONS 00054000
  55. * 00055000
  56. * RETURN TO CALLER WITH RETURN CODE IN R15 00056000
  57. * 00057000
  58. * RETURN CODES AND MESSAGES: 00058000
  59. * 00059000
  60. * 0 - PHASE ENTRY POINT AT LOCATION XXXXXX 00060000
  61. * 24 - NO PHASE NAME SPECIFIED 00061000
  62. * 24 - INVALID OPTION SPECIFIED 00062000
  63. * 24 - INVALID PARAMETER SPECIFIED 00063000
  64. * 24 - INVALID PARAMETER IN ORIGIN OPTION 00064000
  65. * 28 - SPECIFIED PHASE NOT FOUND 00065000
  66. * 32 - CMS/DOS ENVIRONMENT NOT ACTIVE 00066000
  67. * 00067000
  68. * CALLS TO OTHER ROUTINES 00068000
  69. * 00069000
  70. * DMSSMN, DMSFCH, DMSFLD, DMSDOS 00070000
  71. * DMSFRE, DMSLDR, DMSERR 00071000
  72. * 00072000
  73. * EXTERNAL REFERENCES 00073000
  74. * 00074000
  75. * NUCON, BGCOM 00075000
  76. * 00076000
  77. * TABLES/WORK AREAS 00077000
  78. * 00078000
  79. * LDRTBLS 00079000
  80. * 00080000
  81. * REGISTER USAGE 00081000
  82. * 00082000
  83. * R0 NUCON ADDRESSABILITY 00083000
  84. * R1 COMMAND LINE POINTER & PLIST(S) POINTER 00084000
  85. * R2 WORK 00085000
  86. * R3 CONTAINS INTERNAL FLAGS 00086000
  87. * R4 RETURN REGISTER SAVE 00087000
  88. * R5 WORK 00088000
  89. * R6 WORK 00089000
  90. * R7 CONTAINS ORIGIN ADDRESS 00090000
  91. * R8 NOT USED 00091000
  92. * R9 NOT USED 00092000
  93. * R10 NOT USED 00093000
  94. * R11 NOT USED 00094000
  95. * R12 DMSFET ADDRESSABILITY 00095000
  96. * R13 NOT USED 00096000
  97. * R14 RETURN REGISTER 00097000
  98. * R15 RETURN CODE 00098000
  99. * 00099000
  100. * OPERATION 00100000
  101. * 00101000
  102. * 1. SET UP NECESSARY ADDRESSABILITIES AND SAVE 00102000
  103. * THE RETURN REGISTER. INITIALIZE THE DOSFLAGS 00103000
  104. * FIELD, AND VERIFY IF IN CMS/DOS ENVIRONMENT. 00104000
  105. * 00105000
  106. * 2. CHECK THE COMMAND LINE FOR VALID ARGUMENTS 00106000
  107. * AND OPTIONS. ENSURE THAT A PHASE NAME WAS 00107000
  108. * SPECIFIED. SET INTERNAL FLAG IF THE 'START' 00108000
  109. * OPTION WAS SPECIFIED. IF THE 'COMP' OPTION 00109000
  110. * WAS SPECIFIED, SET FLAG 'DOSCOMP' IN FLAG 00110000
  111. * BYTE 'DOSFLAGS' (DOSFLAGS IS IN NUCON). 00111000
  112. * IF THE 'ORIGIN' OPTION WAS SPECIFIED, THEN 00112000
  113. * CONVERT THE ADDRESS IN THE COMMAND LINE TO 00113000
  114. * A BINARY VALUE. IF THE 'INSTAL' OPTION WAS 00114000
  115. * SPECIFIED, SET FLAG 'VSMINSTL' IN THE FLAG 00115000
  116. * BYTE 'DOSFLAGS'. (DOSFLAGS IS IN NUCON). 00116000
  117. * 00117000
  118. * 3. INITIALIZE THE CMS'S ( USER AREA ) STORAGE 00118000
  119. * POINTERS. COMPUTE THE SIZE OF THE VIRTUAL 00119000
  120. * MACHINE AND ACQUIRE ALL STORAGE ( LESS SIX 00120000
  121. * PAGES FOR SYSTEM USE ). INITIALIZE LOCATION 00121000
  122. * 'PPEND' IN 'BGCOM' TO POINT TO THE END OF THE 00122000
  123. * USER'S VIRTUAL PARTITION. ALSO INITIALIZE THE 00123000
  124. * THE DATE FIELD IN 'BGCOM'. 00124000
  125. * 00125000
  126. * 4. ISSUE FILEDEF FOR THE 'DOSLIB' LIBRARIES, AND 00126000
  127. * ISSUE AN SVC 4 TO LET DMSFCH LOAD, AND IF NE- 00127000
  128. * CESSARY RELOCATE THE REQUESTED PHASE. ONCE THE 00128000
  129. * PHASE HAS BEEN LOADED, DMSFCH RETURNS THE ENTRY 00129000
  130. * POINT OF THE PHASE IN REGISTER 1. 00130000
  131. * 00131000
  132. * 5. A LOADER TABLE ENTRY ( NUMBER 3 ) IS SETUP TO 00132000
  133. * POINT AT THE PHASE JUST LOADED, SO DMSLDR CAN 00133000
  134. * NOW WHERE THE PHASE IS IN CORE. IF THE 'START' 00134000
  135. * WAS SPECIFIED, A PLIST IS BUILT TO CALL 'START' 00135000
  136. * (DMSLDR) AND BEGIN EXECUTING THE PHASE. 00136000
  137. * 00137000
  138. * 6. IF 'START' WAS NOT SPECIFIED, AN INFORMATION 00138000
  139. * MESSAGE IS ISSUED TO INFORM THE USER WHERE THE 00139000
  140. * ENTRY POINT OF THE PHASE IS. HE MAY SETUP ADDR. 00140000
  141. * STOPS OR BREAKPOINTS AND HE CAN START EXECUTING 00141000
  142. * THE PHASE BY ISSUING THE CMS 'START' COMMAND. 00142000
  143. * 00143000
  144. * 7. WHEN ALL PROCESSING HAS BEEN DONE, A RETURN TO 00144000
  145. * CALLER IS MADE PASSING BACK IN REGISTER 15 THE 00145000
  146. * RETURN CODE OF THE COMMAND. IF THE PHASE WAS 00146000
  147. * EXECUTED BY SPECIFYING THE 'START' OPTION, THE 00147000
  148. * RETURN CODE MAY BE THAT OF THE PHASE JUST RUN. 00148000
  149. *. 00149000
  150. EJECT 00150000
  151. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00151000
  152. * * 00152000
  153. * IF THE CMS/DOS ENVIRONMENT IS NOT ACTIVE, DMSFET CAN * 00153000
  154. * NOT CONTINUE. THE PARAMETER LIST IS CHECKED FOR ERRORS. * 00154000
  155. * OPTIMUM PARAMETER LIST COULD BE: * 00155000
  156. * FETCH PHASENM ( START COMP ) . * 00156000
  157. * * 00157000
  158. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00158000
  159. SPACE 2 00159000
  160. DMSFET CSECT @V305001 00160000
  161. USING NUCON,R0 @V305001 00161000
  162. USING DMSFET,R12 @V305001 00162000
  163. SR R3,R3 CLEAR FLAG REGISTER @V305001 00163000
  164. SR R7,R7 INITIALIZE ORIGIN @V305001 00164000
  165. LR R4,R14 SAVE RETURN REGISTER @V305001 00165000
  166. LR R12,R15 SET UP ADDRESSABILITY @V305001 00166000
  167. TM DOSFLAGS,DOSMODE+DOSSVC ARE WE IN DOS MODE ? @V305001 00167000
  168. BNO ERR99 NO, GIVE ERROR @V305001 00168000
  169. NI DOSFLAGS,255-(DOSCOMP+VSMINSTL) CLEAR 2 FLAGS @V305101 00169000
  170. MVI DOSRC,ZERO AND INITIALIZE RETURN CODE. @V305066 00170000
  171. * 00171000
  172. LA R1,8(,R1) BUMP PAST COMMAND NAME @V305001 00172000
  173. CLC 0(8,R1),FENCE ANY PHASE NAME SPECIFIED ? @V305001 00173000
  174. BE ERR1 NO, GIVE ERROR @V305001 00174000
  175. LR R2,R1 SAVE R1 TEMPORARILY @V305001 00175000
  176. LA R1,8(,R1) BUMP PAST PHASE NAME @V305001 00176000
  177. CLC 0(8,R1),FENCE ANY OPTIONS ? @V305001 00177000
  178. BE LINEOK NO, ASSUME NOSTART @V305001 00178000
  179. CLI 0(R1),LPAR BEGIN OPTIONS ? @V305001 00179000
  180. BNE ERR70 NO, GIVE ERROR @V305001 00180000
  181. LA R1,8(,R1) BUMP PAST LEFT PAREN @V305001 00181000
  182. OPTLUP CLC 0(8,R1),COMP COMP OPTION ? @V305001 00182000
  183. BNE CKINSTL NO, SEE IF INSTAL @V305101 00183000
  184. OI DOSFLAGS,DOSCOMP SET COMPILER SWITCH ON @V305001 00184000
  185. B OPTNXT SEE IF MORE OPTIONS @V305001 00185000
  186. CKINSTL CLC 0(8,R1),INSTAL INSTAL OPTION ? @V305101 00186000
  187. BNE CKORIG NO, SEE IF ORIGIN @V305101 00187000
  188. OI DOSFLAGS,VSMINSTL SET VSAM INSTAL SWITCH ON @V305101 00188000
  189. B OPTNXT SEE IF MORE OPTIONS @V305101 00189000
  190. CKORIG CLC 0(8,R1),ORIGIN ORIGIN OPTION ? @V305001 00190000
  191. BE ORGL1 YES, BRANCH @V305001 00191000
  192. CKSTRT CLC 0(8,R1),START START OPTION ? @V305001 00192000
  193. BNE ERR3 NO, GIVE ERROR @V305001 00193000
  194. LA R3,ONE SET START FLAG (ANY NON-ZERO VALUE) @V305066 00194000
  195. OPTNXT LA R1,8(,R1) BUMP PAST OPTION @V305001 00195000
  196. CLC 0(8,R1),FENCE THIS MUST BE END @V305001 00196000
  197. BE LINEOK YES, IT IS END @V305001 00197000
  198. CLI 0(R1),RPAR MAYBE IT IS RIGHT PARENS? @V305001 00198000
  199. BNE OPTLUP NO, CHECK NEW OPTION @V305001 00199000
  200. B LINEOK THIS IS THE END @V305001 00200000
  201. EJECT 00201000
  202. ORGL1 CLC 8(8,R1),FENCE ANY SPECIFIED ? @V305001 00202000
  203. BE ERR3 NO, GIVE ERROR @V305001 00203000
  204. CLI 8(R1),RPAR DITTO ? @V305001 00204000
  205. BE ERR3 SAME ERROR IF RIGHT PARENS @V305001 00205000
  206. LA R1,8(,R1) BUMP TO POSSIBLE ADDRESS @V305001 00206000
  207. LR R5,R1 POINT REG. 5 TO ADDRESS @V305001 00207000
  208. LR R6,R5 POINT REG. 6 TO ADDRESS @V305001 00208000
  209. SR R0,R0 INITIALIZE TO ZERO @V305001 00209000
  210. SR R7,R7 INITIALIZE TO ZERO @V305001 00210000
  211. ORGL2 CLI 0(R6),BLANK END OF ADDRESS ? @V305001 00211000
  212. BE ORGL3 YES, BRANCH @V305001 00212000
  213. LA R6,1(,R6) POINT TO NEXT CHAR. @V305001 00213000
  214. SR R6,R5 GET LENGTH SO FAR @V305001 00214000
  215. CH R6,=H'8' REACHED MAX ALLOWED ? @V305001 00215000
  216. BE ORGL4 YES, BRANCH THEN @V305001 00216000
  217. AR R6,R5 RESTORE ADDRESS POINT @V305001 00217000
  218. B ORGL2 LOOK AT NEXT CHAR. @V305001 00218000
  219. ORGL3 SR R6,R5 COMPUTE LENGTH FIELD @V305001 00219000
  220. ORGL4 CLI 0(R5),CHAR0 IS CHAR. ZERO ? @V305066 00220000
  221. BL ORGL6 IF LESS, CHECK FOR POSS. HEX @V305001 00221000
  222. CLI 0(R5),CHAR9 IS CHAR. NINE ? @V305066 00222000
  223. BH ERR4 IF HIGHER, THEN ERROR @V305001 00223000
  224. IC R7,0(0,R5) ISOLATE CHAR. @V305001 00224000
  225. SH R7,=X'00F0' CLEAR ZONE @V305001 00225000
  226. ORGL5 SLL R0,4 ... @V305001 00226000
  227. AR R0,R7 .. @V305001 00227000
  228. LA R5,1(,R5) BUMP TO NEXT CHAR. @V305001 00228000
  229. BCT R6,ORGL4 KEEP LOOKING @V305001 00229000
  230. LR R7,R0 BINARY ADDRESS IN REG. 7 @V305001 00230000
  231. LA R7,7(,R7) ROUND ADDRESS TO NEAREST @V305001 00231000
  232. N R7,=X'FFFFFFF8' DOUBLE WORD BOUNDARY @V305001 00232000
  233. C R7,AUSRAREA SEE IF ABOVE USER AREA @V305001 00233000
  234. BL ERR4 ERROR IF BELOW X'20000' @V305001 00234000
  235. B OPTNXT GO SEE IF MORE OPTIONS @V305001 00235000
  236. ORGL6 CLI 0(R5),CHARA SEE IF EBCDIC 'A' @V305066 00236000
  237. BL ERR4 IF LESS, THEN ERROR @V305001 00237000
  238. CLI 0(R5),CHARF SEE IF EBCDIC 'F' @V305066 00238000
  239. BH ERR4 IF HIGHER, THEN ERROR @V305001 00239000
  240. IC R7,0(0,R5) ISOLATE CHAR. @V305001 00240000
  241. SH R7,=X'00B7' SUBTRACT CONSTANT @V305001 00241000
  242. B ORGL5 KEEP LOOKING @V305001 00242000
  243. EJECT 00243000
  244. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00244000
  245. * * 00245000
  246. * THE PHASE NAME SPECIFIED IN THE COMMAND LINE IS USED * 00246000
  247. * AS THE JOB NAME IN THE PARTITION COMM. REGION. A DOS * 00247000
  248. * SVC 34 (GETIME) IS ISSUED TO INITIALIZE THE DATE IN * 00248000
  249. * THE PARTITION COMM. REGION. A DOS SVC 4 (LOAD) IS * 00249000
  250. * ISSUED TO BRING THE REQUESTED PHASE INTO STORAGE. A * 00250000
  251. * THIRD LOADER TABLE ENTRY IS BUILT SO THAT START CAN * 00251000
  252. * BEGIN EXECUTION OF THE PHASE JUST LOADED. IF 'START' * 00252000
  253. * WAS SPECIFIED, AN SVC 202 TO START IS ISSUED, OTHER- * 00253000
  254. * WISE AN INFORMATION MESSAGE IS ISSUED SPECIFYING THE * 00254000
  255. * ENTRY ADDRESS OF THE PHASE JUST LOADED, AND A RETURN * 00255000
  256. * TO THE CALLER IS MADE. * 00256000
  257. * * 00257000
  258. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00258000
  259. SPACE 2 00259000
  260. LINEOK L R1,ABGCOM GET BGCOM ADDRESS @V305001 00260000
  261. USING BGCOM,R1 @V305001 00261000
  262. MVC COMNAME,0(R2) SET UP JOB NAME @V305001 00262000
  263. DROP R1 @V305001 00263000
  264. * 00264000
  265. SVC 34 INITIALIZE BGCOM DATE @V305001 00265000
  266. NOPR 0 ... @V305001 00266000
  267. SPACE 1 00267000
  268. LA R1,FDOSL GET DOSLIB FILEDEF PLIST @V305001 00268000
  269. SVC 202 ISSUE FILEDEF FOR DOSLIBS @V305001 00269000
  270. L R1,ASYSCOM GET SYSTEM COMMUNICATIONS AREA @V305001 00270000
  271. USING SYSCOM,R1 @V305001 00271000
  272. L R1,IJBFTTAB GET FETCH TABLE ADDRESS @V305001 00272000
  273. DROP R1 @V305001 00273000
  274. USING FCHTAB,R1 @V305001 00274000
  275. XC FCHTAB(FCHLENG),FCHTAB ZERO ENTIRE AREA @V305001 00275000
  276. MVI DIRN,ELEVEN SET UP SHORT LENGTH @V305066 00276000
  277. MVC DIRNAME,0(R2) SET UP PHASE NAME @V305001 00277000
  278. LA R5,DIRNAME GET PHASE NAME ADDRESS @V305001 00278000
  279. ST R5,FCHAPHNM STORE IN LIST @V305001 00279000
  280. MVI FCHOPT,DACTIVE+NOTEXT SET FOR DE=YES, TXT=NO @V305066 00280000
  281. DROP R1 @V305001 00281000
  282. LR R0,R7 SET LOAD ADDRESS @V305001 00282000
  283. SVC 4 SEE IF PHASE EXISTS @V305001 00283000
  284. LR R1,R0 R0 TO USABLE REGISTER @V305001 00284000
  285. TM 16(R1),DACTIVE+PNOTFND PHASE FOUND ? @V305066 00285000
  286. BO ERR2 NO, ERROR MSG TO USER @V305001 00286000
  287. LR R0,R7 SET LOAD ADDRESS @V305001 00287000
  288. LR R1,R2 POINT TO PHASE NAME @V305001 00288000
  289. SVC 4 NOW LOAD THE REQUESTED PHASE @V305001 00289000
  290. TM DOSFLAGS,VSMINSTL IS THIS VASMGEND INSTAL ? @V305101 00290000
  291. BZ NOINSTL NO, CONTINUE BELOW... @V305101 00291000
  292. EJECT 00292000
  293. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00293000
  294. * * 00294000
  295. * SPECIAL ROUTINE TO LOAD ALL PHASES WHICH ARE PART OF A * 00295000
  296. * VSAM OR AMS SEGMENT. WHEN INSTALLING VSAM OR AMS, THE * 00296000
  297. * INSTALLATION EXEC REQUEST THE LOADING OF THE FRONT END * 00297000
  298. * TABLE CONTAINING THE NAMES OF THE PHASES THAT COMPRISE * 00298000
  299. * THAT SPECIFIED SEGMENT. ONCE THE TABLE HAS BEEN LOADED, * 00299000
  300. * A SEARCH IS MADE THROUGH THE FRONT END TABLE, AND ALL * 00300000
  301. * PHASES REFERENCED IN THE TABLE ARE LOADED CONTIGUOUSLY * 00301000
  302. * BY REPETITIVE CALLS TO DMSFCH (VIA SVC 4). * 00302000
  303. * * 00303000
  304. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00304000
  305. SPACE 2 00305000
  306. L R5,ABGCOM R5 TO ADDRESS BGCOM @V305101 00306000
  307. USING BGCOM,R5 @V305101 00307000
  308. L R6,ASYSCOM R6 TO ADDRESS SYSCOM TEMPORARILY @V305101 00308000
  309. USING SYSCOM,R6 @V305101 00309000
  310. L R6,IJBFTTAB R6 TO ADDRESS FCHTAB @V305101 00310000
  311. DROP R6 @V305101 00311000
  312. USING FCHTAB,R6 @V305101 00312000
  313. SR R15,R15 INITIALIZE RETURN CODE @V305101 00313000
  314. LA R2,4(,R1) AND POINT TO FIRST PHASE TO LOAD.@V305101 00314000
  315. INSTL CLC 0(8,R2),FENCE IS THIS END OF TABLE ? @V305101 00315000
  316. BE RETURN YES, MUST BE ALL DONE.... @V305101 00316000
  317. XC FCHTAB(FCHLENG),FCHTAB ZERO OUT ENTIRE TABLE @V305101 00317000
  318. MVI DIRN,ELEVEN SET UP FOR SHORT LENGTH @V305101 00318000
  319. MVC DIRNAME,0(R2) SET UP THE PHASE NAME @V305101 00319000
  320. LA R1,DIRNAME GET PHASE NAME ADDRESS @V305101 00320000
  321. ST R1,FCHAPHNM STORE IN FETCH LIST @V305101 00321000
  322. MVI FCHOPT,DACTIVE+NOTEXT SET FOR DE=YES, TXT=NO @V305101 00322000
  323. L R1,HIPHAS GET END ADDRESS LAST PHASE @V305101 00323000
  324. LA R1,7(,R1) PREPARE TO ROUND @V305101 00324000
  325. SRL R1,THREE THE ADDRESS TO THE @V305101 00325000
  326. SLL R1,THREE NEAREST DOUBLE WORD, @V305101 00326000
  327. ST R1,8(,R2) AND SAVE AS NEXT PHASE LOAD ADDR @V305101 00327000
  328. LR R0,R1 NOW SET R0 WITH LOAD ADDRESS @V305101 00328000
  329. LR R1,R6 AND SET R6 WITH FETCH LIST @V305101 00329000
  330. SVC 4 AND GO SEE IF PHASE EXISTS. @V305101 00330000
  331. LR R1,R0 R0 TO USABLE REGISTER. @V305101 00331000
  332. TM 16(R1),DACTIVE+PNOTFND WAS PHASE FOUND ? @V305101 00332000
  333. BO ERR2 NO, ERROR MSG TO USER. @V305101 00333000
  334. L R0,8(,R2) RELOAD PHASE LOAD ADDRESS @V305101 00334000
  335. LR R1,R2 AND LET R1 POINT TO PHASE NAME @V305101 00335000
  336. SVC 4 AND NOW LOAD THE PHASE. @V305101 00336000
  337. LA R2,12(,R2) BUMP TO NEXT PHASE NAME @V305101 00337000
  338. B INSTL AND SEE IF MORE TO LOAD. @V305101 00338000
  339. DROP R5,R6 @V305101 00339000
  340. EJECT 00340000
  341. NOINSTL L R5,ALDRTBLS GET ADDR LOADER TABLES @V305101 00341000
  342. LA R5,0(,R5) CLEAR HI ORDER BYTE @V305001 00342000
  343. SH R5,=H'60' POINT TO THIRD ENTRY @V305001 00343000
  344. MVC 0(60,R5),DUMLDRT MOVE DUMMY 3 ENTRIES @V305001 00344000
  345. MVC 0(8,R5),0(R2) MOVE PHASE NAME TO ENTRY @V305001 00345000
  346. ST R1,8(,R5) SET UP LOAD POINT @V305001 00346000
  347. ST R1,12(,R5) SET UP ENTRY POINT @V305001 00347000
  348. LA R5,THREE SET UP A CONSTANT @V305066 00348000
  349. STH R5,TBENT SET UP 3 LOADER ENTRIES @V305001 00349000
  350. ST R1,STRTADDR SET UP CMS START ADDR @V305001 00350000
  351. L R5,ABGCOM GET BGCOM REGION ADDR @V305001 00351000
  352. USING BGCOM,R5 @V305001 00352000
  353. L R5,HIPHAS GET PHASE END ADDRESS @V305001 00353000
  354. ST R5,LASTLOC SET MODULE END ADDRESS @V305001 00354000
  355. ST R5,LOCCNT SET LOADER LOCATION COUNTER @V305001 00355000
  356. DROP R5 @V305001 00356000
  357. LTR R3,R3 START SPECIFIED ? @V305001 00357000
  358. BNZ EXECUTE YES, INVOKE START @V305001 00358000
  359. DMSERR LET=I,NUM=710,TYPCALL=BALR, @V305001*00359000
  360. TEXT='PHASE ''........'' ENTRY POINT AT LOCATION ......'*00360000
  361. ,SUB=(CHARA,(R2),HEXA,STRTADDR),MF=(E,'SYS') @V305001 00361000
  362. SR R15,R15 ZERO RETURN CODE @V305001 00362000
  363. RETURN LR R14,R4 RESTORE RETURN REGISTER @V305001 00363000
  364. NI DOSFLAGS,255-VSMINSTL RESET VSAM INSTAL FLAG @V305101 00364000
  365. BR R14 RETURN TO CMS @V305001 00365000
  366. EJECT 00366000
  367. EXECUTE EQU * @V305001 00367000
  368. DMSFREE DWORDS=3,TYPCALL=BALR @V305001 00368000
  369. LR R5,R1 SAVE LOCATION ADDRESS @V305001 00369000
  370. MVC 0(8,R1),START SET UP PLIST COMMAND @V305001 00370000
  371. MVC 8(8,R1),0(R2) SET UP PLIST MODULE NAME @V305001 00371000
  372. MVC 16(8,R1),FENCE SET UP THE FENCE @V305001 00372000
  373. SVC 202 CALL START @V305001 00373000
  374. DC AL4(*+4) NO-OP ERROR EXIT @V305001 00374000
  375. NI DOSFLAGS,255-DOSCOMP RESET COMPILER SWITCH @V305001 00375000
  376. LR R1,R5 RESTORE PLIST ADDRESS @V305001 00376000
  377. LR R5,R15 SAVE RETURN CODE @V305001 00377000
  378. DMSFRET DWORDS=3,LOC=(1),TYPCALL=BALR @V305001 00378000
  379. LR R15,R5 RESTORE RETURN CODE @V305001 00379000
  380. B RETURN RETURN TO CMS @V305001 00380000
  381. EJECT 00381000
  382. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00382000
  383. * * 00383000
  384. * CONSTANTS AND DUMMY LOADER TABLE ENTRIES. * 00384000
  385. * * 00385000
  386. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00386000
  387. SPACE 2 00387000
  388. LPAR EQU C'(' LEFT PARENS @V305001 00388000
  389. RPAR EQU C')' RIGHT PARENS @V305001 00389000
  390. BLANK EQU C' ' BLANK CODE @V305001 00390000
  391. ZERO EQU X'00' CONSTANT @V305066 00391000
  392. ONE EQU X'01' CONSTANT @V305066 00392000
  393. THREE EQU X'03' CONSTANT @V305066 00393000
  394. ELEVEN EQU X'0B' CONSTANT @V305066 00394000
  395. CHAR0 EQU C'0' CHARACTER ZERO @V305066 00395000
  396. CHAR9 EQU C'9' CHARACTER NINE @V305066 00396000
  397. CHARA EQU C'A' CHARACTER 'A' @V305066 00397000
  398. CHARF EQU C'F' CHARACTER 'F' @V305066 00398000
  399. RC24 EQU 24 RETURN CODE @V305066 00399000
  400. RC28 EQU 28 RETURN CODE @V305066 00400000
  401. RC40 EQU 40 RETURN CODE @V305066 00401000
  402. DS 0D @V305001 00402000
  403. FENCE DC 8X'FF' FENCE @V305001 00403000
  404. START DC CL8'START' OPTION OR COMMAND NAME @V305001 00404000
  405. ORIGIN DC CL8'ORIGIN' OPTION @V305001 00405000
  406. COMP DC CL8'COMP' OPTION @V305001 00406000
  407. INSTAL DC CL8'INSTAL' OPTION @V305101 00407000
  408. * 00408000
  409. FDOSL DC CL8'FILEDEF' COMMAND NAME @V305001 00409000
  410. DC CL8'DOSLIB' DDNAME @V305001 00410000
  411. DC CL8'DISK' ... @V305001 00411000
  412. DC CL8'CMS' FNAME @V305001 00412000
  413. DC CL8'DOSLIB' FTYPE @V305001 00413000
  414. DC CL8'*' FMODE @V305001 00414000
  415. DC CL8'(' BEGIN OPTIONS @V305001 00415000
  416. DC CL8'CONCAT' OPTION @V305001 00416000
  417. DC 8X'FF' FENCE @V305001 00417000
  418. * 00418000
  419. DUMLDRT DS 0F KEEP IN ORDER 'TILL NEXT LABEL @V305001 00419000
  420. DC CL8' ' PHASE NAME (3RD ENTRY) @V305001 00420000
  421. DC 2F'0' LOAD POINT / ENTRY POINT ADDRS @V305001 00421000
  422. DC X'20000000' CONSTANT @V305001 00422000
  423. DC CL8'SYSREF' SYSREF ENTRY @V305001 00423000
  424. DC 3F'0' ... @V305001 00424000
  425. DC CL8'NUCON' NUCON ENTRY @V305001 00425000
  426. ENDORD DC 3F'0' ... @V305001 00426000
  427. EJECT 00427000
  428. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00428000
  429. * * 00429000
  430. * ERROR MESSAGES * 00430000
  431. * * 00431000
  432. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00432000
  433. SPACE 2 00433000
  434. ERR1 EQU * @V305001 00434000
  435. DMSERR TEXT='NO PHASE NAME SPECIFIED',LET=E,NUM=98 @V305001 00435000
  436. LA R15,RC24 RETURN CODE = 24 @V305066 00436000
  437. B RETURN RETURN TO CALLER @V305001 00437000
  438. * 00438000
  439. ERR2 EQU * @V305001 00439000
  440. DMSERR TEXT='PHASE ''........'' NOT FOUND',LET=E,NUM=4, *00440000
  441. SUB=(CHARA,(R2)) @V305001 00441000
  442. LA R15,RC28 RETURN CODE = 28 @V305066 00442000
  443. B RETURN RETURN TO CALLER @V305001 00443000
  444. EJECT 00444000
  445. ERR3 LR R2,R1 SET SUB REGISTER @V305001 00445000
  446. DMSERR TEXT='INVALID OPTION ''........''',LET=E,NUM=3, *00446000
  447. SUB=(CHARA,(R2)) @V305001 00447000
  448. LA R15,RC24 RETURN CODE = 24 @V305066 00448000
  449. B RETURN RETURN TO CALLER @V305001 00449000
  450. * 00450000
  451. ERR4 LR R2,R1 SET SUB REGISTER @V305001 00451000
  452. DMSERR TEXT='INVALID PARAMETER ''........'' IN THE OPTION ''OR*00452000
  453. IGIN'' FIELD',NUM=29,LET=E,SUB=(CHARA,(R2)) @V305066 00453000
  454. LA R15,RC24 RETURN CODE = 24 @V305066 00454000
  455. B RETURN RETURN TO CALLER @V305001 00455000
  456. EJECT 00456000
  457. ERR70 LR R2,R1 SET SUB REGISTER @V305001 00457000
  458. DMSERR TEXT='INVALID PARAMETER ''........''',LET=E,NUM=70, *00458000
  459. SUB=(CHARA,(R2)) @V305001 00459000
  460. LA R15,24 SET RETURN CODE @V305001 00460000
  461. B RETURN RETURN TO CALLER @V305001 00461000
  462. * 00462000
  463. ERR99 EQU * @V305001 00463000
  464. DMSERR TEXT='CMS/DOS ENVIRONMENT NOT ACTIVE',NUM=99,LET=E 00464000
  465. LA R15,RC40 RETURN CODE = 40 @V305066 00465000
  466. B RETURN RETURN TO CALLER @V305001 00466000
  467. LTORG 00467000
  468. EJECT 00468000
  469. NUCON @V305001 00469000
  470. BGCOM @V305001 00470000
  471. SYSCOM @V305001 00471000
  472. FCHTAB @V305001 00472000
  473. REGEQU @V305001 00473000
  474. END 00474000
ibm/vm370-lib/cms/dmsfet.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator