Table of Contents

DMSLOA Source

References

Source Listing

DMSLOA.ASSEMBLE.txt
  1. LOA TITLE 'DMSLOA (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00004000
  5. * 00005000
  6. * MODULE NAME: 00006000
  7. * 00007000
  8. * DMSLOA 00008000
  9. * 00009000
  10. * FUNCTION: 00010000
  11. * 00011000
  12. * LOAD AND INCLUDE COMMANDS TO INVOKE THE RELOCATING LOADER. 00012000
  13. * 00013000
  14. * ATTRIBUTES: 00014000
  15. * 00015000
  16. * REENTRANT, NUCLEUS RESIDENT 00016000
  17. * 00017000
  18. * ENTRY POINTS: 00018000
  19. * 00019000
  20. * DMSLOA 00020000
  21. * 00021000
  22. * ENTRY CONDITION: 00022000
  23. * 00023000
  24. * GPR1 = ADDRESS OF PLIST 00024000
  25. * 00025000
  26. * PLIST DS 0F 00026000
  27. * DC CL8'LOAD'|'INCLUDE' 00027000
  28. * DC CL8'FNAME1' 00028000
  29. * . 00029000
  30. * . 00030000
  31. * . 00031000
  32. * DC CL8'FNAMEN' 00032000
  33. * 00033000
  34. * *OPTIONS: 00034000
  35. * DC CL8'(' 00035000
  36. * CL8'START' 00036000
  37. * CL8'RESET', CL8'ENTRY'|'*' ('*', INCLUDE ONLY) 00037000
  38. * CL8'CLEAR'|'NOCLEAR' 00038000
  39. * CL8'SAME' (INCLUDE ONLY) 00039000
  40. * CL8'TYPE'|'NOTYPE' 00040000
  41. * CL8'MAP|'NOMAP' 00041000
  42. * CL8'LIBE|'NOLIBE' 00042000
  43. * CL8'NOINV'|'INV' 00043000
  44. * CL8'NOREP'|'REP' 00044000
  45. * CL8'NOAUTO'|'AUTO' 00045000
  46. * CL8'ORIGIN', CL8'ADDRESS OR TRANS' 00046000
  47. * (TRANS ON LOAD ONLY) 00047000
  48. * 00048000
  49. * EXIT CONDITIONS 00049000
  50. * 00050000
  51. * NORMAL - RETURN TO CALLER, R15=0. 00051000
  52. * PROGRAM IS LOADED INTO USER STORAGE 00052000
  53. * 00053000
  54. * ERROR - RETURN TO CALLER 00054000
  55. * R15=ERROR CODE (SEE BELOW) 00055000
  56. * 00056000
  57. * ALL ERROR MESSAGES AND RETURN CODES ARE GENERATED BY 00057000
  58. * THE LOADER (DMSLDR), BUT ARE PRESENTED HERE AS PART OF 00058000
  59. * THE LOAD AND INCLUDE COMMANDS: 00059000
  60. * 00060000
  61. * | GPR15 = : 00061000
  62. * | 28 FILE NOT FOUND 00062000
  63. * | 24 OPTION ERROR 00063000
  64. * | 4 UNRESOLVED REFERENCES 00064000
  65. * | 104 REFERENCE TABLE OVERFLOW 00065000
  66. * | 4 SLC NAME UNDEFINED 00066000
  67. * | 4 DUPLICATE IDENTIFIER 00067000
  68. * | 104 STORAGE EXCEEDED 00068000
  69. * | 4 PR ALIGNMENT ERROR 00069000
  70. * | 24 NO FILE NAME SPECIFIED 00070000
  71. * | 40 ENTRY POINT NOT FOUND 00071000
  72. * | 32 INVALID TXTLIB 00072000
  73. * | 100 READ ERROR 00073000
  74. * | 100 WRITE ERROR 00074000
  75. * | 256 POINT ERROR 00075000
  76. * 00076000
  77. * CALLS TO OTHER ROUTINES: 00077000
  78. * 00078000
  79. * DMSLDRB - TO LOAD SPECIFIED FILES. 00079000
  80. * DMSERR - TO ISSUE ERROR MESSAGE 00080000
  81. * 00081000
  82. * EXTERNAL REFERENCES: 00082000
  83. * 00083000
  84. * NUCON,LOADER TABLES 00084000
  85. * 00085000
  86. * TABLES/WORKAREAS: 00086000
  87. * 00087000
  88. * NONE 00088000
  89. * 00089000
  90. * REGISTER USAGE: 00090000
  91. * 00091000
  92. * LOAD - 00092000
  93. * 00093000
  94. * R1 PLIST 00094000
  95. * R2,6,14,15 WORK 00095000
  96. * R12 BASE 00096000
  97. * 00097000
  98. * INCLUDE - 00098000
  99. * 00099000
  100. * R1,2 PLIST 00100000
  101. * R12 BASE 00101000
  102. * R14,15 WORK 00102000
  103. * 00103000
  104. * NOTES: 00104000
  105. * 00105000
  106. * NONE 00106000
  107. * 00107000
  108. * OPERATION: 00108000
  109. * 00109000
  110. * LOAD 00110000
  111. * 00111000
  112. * 1. ZERO THE STARTING ADDRESS WORD IN NUCON. 00112000
  113. * 00113000
  114. * 2. ZERO OPTION FLAGS. 00114000
  115. * 00115000
  116. * 3. SET THE LOCATION COUNTER TO THE FIRST USER 00116000
  117. * LOCATION. SET LDR TBL COUNT TO TWO. 00117000
  118. * 00118000
  119. * 4. BALR TO DMSLDRB TO LOAD THE SPECIFIED PROGRAMS. 00119000
  120. * 00120000
  121. * 5. PUT THE RETURN CODE IN REG 15. 00121000
  122. * 00122000
  123. * 6. RETURN TO CALLER. 00123000
  124. * 00124000
  125. * INCLUDE 00125000
  126. * 00126000
  127. * 2. IF COMMAND WAS REUSE OR INCLUDE (RESET), CHECK IF 00129000
  128. * IT IS AN INTERFACE RETURN. IF SO, SAVE STADDR IN 00130000
  129. * THE RETURN + 12. IF NOT, INTERFACE, ZERO STADDR. 00131000
  130. * 00132000
  131. * 3. SET A LOADER FLAG TO PREVENT ERASING THE LOADMAP. 00133000
  132. * RESET THE OPTIONS BITS IF SAME NOT SPECIFIED. 00134000
  133. * 00135000
  134. * 4. BALR TO DMSLDRB TO CONTINUE LOADING. 00136000
  135. * 00137000
  136. * 5. RETURN TO CALLER. R15=ERROR CODE 00138000
  137. * 00139000
  138. * * OPTION PROCESSING IS DESCRIBED UNDER DMSLSB. 00140000
  139. *. 00141000
  140. EJECT 00142000
  141. DMSLOA START 0 00143000
  142. USING NUCON,R0 00144000
  143. LR R12,R15 SET BASE 00145000
  144. USING DMSLOA,R12 00146000
  145. SR R6,R6 GET A ZERO 00147000
  146. ST R14,LDRADDR SAVE RETURN ADDRESS 00148000
  147. CLI 0(R1),C'L' IS THIS A LOAD COMMAND ? 00149000
  148. BNE INCLUDE NO, TRY INCLUDE USE OR REUSE 00150000
  149. MVI UNRES,X'00' CLEAR INRESOLVED FLAG @VA02829 00150100
  150. ST R6,PRHOLD ZERO PR COUNT 00151000
  151. ST R6,STRTADDR ZERO STARTING ADDRESS 00152000
  152. STH R6,TBENT SET LDR TBL COUNT TO ZERO 00153000
  153. STH R6,LDRFLAGS ZERO LDRFLAGS 00154000
  154. MVC LOCCNT(4),AUSRAREA SET LOC CTR TO 1ST USER LOCATION 00155000
  155. TM SUBFLAG,SUBACT IS CMS SUBSET ACTIVE? @VA07964 00155200
  156. BO SUBACTIV YES, DON'T RESET MAINHIGH @VA07964 00155350
  157. MVC MAINHIGH(4),AUSRAREA RESET USER LAST LOCATION @VA05937 00155500
  158. SUBACTIV EQU * @VA07964 00155750
  159. L R2,ALDRTBLS GET TOP OF LOADER TABLE 00156000
  160. SH R2,=H'40' DOWN TWO ENTRIES 00157000
  161. MVC 0(40,R2),LTINIT PUT NUCON AND SYSREF IN LDRTBL 00158000
  162. LA R2,2 TWO ENTRIES IN LDRTBL 00159000
  163. STH R2,TBENT STORE IN NUCON 00160000
  164. COMMON1 CLI 8(R1),X'FF' ANY FILENAME SPECIFIED 00161000
  165. BE ERR001E NO, ERROR 00162000
  166. CLI 8(R1),C'(' OPTIONS WITH NO INTERVENING FNAME 00163000
  167. BE ERR001E YES, ERROR 00164000
  168. L R15,ADMSLDRB COMMON CODE 00165000
  169. BALR R14,R15 CALL THE LOADER 00166000
  170. USING *,R14 00167000
  171. L R12,ALOAD REESTABLISH ADDRESSIBILITY 00168000
  172. DROP R14 00169000
  173. L R15,LDRADDR+4 PICK UP LOADER'S ERROR CODE 00170000
  174. RETURN L R14,LDRADDR GET RETURN LOCATION 00171000
  175. BR R14 RETURN TO DMSISC 00172000
  176. SPACE 00173000
  177. INCLUDE LR R2,R1 COPY PLIST ADDRESS 00174000
  178. CHKSAM CLI 0(R2),C'(' IS IT LEFT PAREN 00175000
  179. BE CHKSAM1 YES, NOW LOOK FOR SAME OPTION 00176000
  180. CLI 0(R2),X'FF' END OF PLIST ? 00177000
  181. BE NOSAME YES, NO SAME OPTION 00178000
  182. LA R2,8(0,R2) NO, NEXT ITEM 00179000
  183. B CHKSAM CHECK IT 00180000
  184. CHKSAM1 CLC 0(8,R2),=CL8'SAME' IS THIS THE 'SAME' OPTION 00181000
  185. BE SAME YES 00182000
  186. CLI 0(R2),X'FF' IS IT END OF PLIST 00183000
  187. BE NOSAME YES, SAME OPTION NOT USED 00184000
  188. LA R2,8(0,R2) NEXT OPTION 00185000
  189. B CHKSAM1 CHECK IT 00186000
  190. SAME MVC 0(8,R2),=CL8'NOCLEAR' REPLACE SAME OPTION FOR NOP 00187000
  191. B CHKREUSE CONTINUE 00188000
  192. NOSAME NI LDRFLAGS+1,255-(NOMAP+NOAUTO+TYPE+NOREP+NOINV+NOLIBE) 00189000
  193. * RESET ALL USER OPTIONS 00190000
  194. CHKREUSE OI LDRFLAGS,NOERASE+FSTXTADR @V1D1705 00191125
  195. * INITIALIZE FLAGS 00192000
  196. B COMMON1 CONTINUE 00193000
  197. ERR001E DMSERR TEXT='NO FILENAME SPECIFIED',NUM=001,LET=E,CSECT=LIO 00194000
  198. LA R15,24 ERROR CODE 00195000
  199. B RETURN 00196000
  200. ADMSLDRB DC V(DMSLDRB) 00197000
  201. ALOAD DC A(DMSLOA) 00198000
  202. LTINIT DC CL8'SYSREF' 00199000
  203. DC V(SYSREF) 00200000
  204. DC V(SYSREF) 00201000
  205. DC F'0' 00202000
  206. DC CL8'NUCON' 00203000
  207. DC 3F'0' 00204000
  208. EJECT 00205000
  209. REGEQU 00206000
  210. SPACE 2 00207000
  211. NUCON 00208000
  212. EJECT 00209000
  213. LDRST 00210000
  214. END 00211000