Table of Contents

DMSFCH Source

References

Source Listing

DMSFCH.ASSEMBLE.txt
  1. FCH TITLE 'DMSFCH (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * MODULE NAME 00004000
  5. * 00005000
  6. * DMSFCH ( FETCH ROUTINE ) 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. * THIS ROUTINE IS ENTERED AS A RESULT OF AN SVC 00013000
  14. * 1, 2, OR 4 (DOS/VS SVC) FROM A DOS/VS PROGRAM, 00014000
  15. * OR FROM THE CMS/DOS 'FETCH' COMMAND. 00015000
  16. * 00016000
  17. * ATTRIBUTES 00017000
  18. * 00018000
  19. * CMSDOS SEGMENT RESIDENT MODULE 00019000
  20. * REENTRANT 00020000
  21. * 00021000
  22. * ENTRY POINTS 00022000
  23. * 00023000
  24. * DMSFCH 00024000
  25. * 00025000
  26. * ENTRY CONDITIONS 00026000
  27. * 00027000
  28. * THIS ROUTINE IS CALLED BY DMSDOS VIA BALR R14,R15 00028000
  29. * 00029000
  30. * R14 = RETURN ADDRESS 00030000
  31. * R15 = ENTRY POINT 00031000
  32. * R0 = OVERRIDE LOAD ADDRESS 00032000
  33. * R1 = PHASE DIRECTORY LIST 00033000
  34. * 00034000
  35. * DC CL8'PHASENM' NAME OF PHASE TO LOAD 00035000
  36. * DC F'11' NUMBER HALF WORDS IN LIST 00036000
  37. * DC XL4'0' NOT REFERENCED BY DMSFCH 00037000
  38. * DC XL1'0' OR XL1'1' IF 1, DO NOT LOAD PHASE 00038000
  39. * DC XL17'0' REST OF DIRECTORY LIST 00039000
  40. * 00040000
  41. * EXIT CONDITIONS 00041000
  42. * 00042000
  43. * RETURN TO CALLER WITH RETURN CODE IN R15 00043000
  44. * 00044000
  45. * RETURN CODES AND MESSAGES: 00045000
  46. * 00046000
  47. * 100 - SPECIFIED DISK NOT ATTACHED 00047000
  48. * 100 - INPUT ERROR ON SYSRES OR SYSCLB 00048000
  49. * 100 - ERROR READING DOSLIB FILE FROM DISK 00049000
  50. * 104 - VIRTUAL STORAGE CAPACITY EXCEEDED 00050000
  51. * 104 - DOS PARTITION TOO SMALL TO ACCOMMODATE FETCH REQUEST 00051000
  52. * 00052000
  53. * CALLS TO OTHER ROUTINES 00053000
  54. * 00054000
  55. * DMSFRE, DMSSTT, DMSSOP, DMSSVT 00055000
  56. * DMSSBS, DMSSCT, DMKGIO, DMSERR 00056000
  57. * 00057000
  58. * EXTERNAL REFERENCES 00058000
  59. * 00059000
  60. * NUCON, DCBD, CMSCB, OSFST, BGCOM 00060000
  61. * 00061000
  62. * TABLES/WORK AREAS 00062000
  63. * 00063000
  64. * FCHSECT 00064000
  65. * 00065000
  66. * NOTES 00066000
  67. * 00067000
  68. * DMSFCH WILL DESTROY THE CALLER'S REG. 7 THROUGH 11 00068000
  69. * 00069000
  70. * REGISTER USAGE 00070000
  71. * 00071000
  72. * R0 WORK & PHASE DIRECTORY POINTER UPON EXIT 00072000
  73. * R1 WORK & PHASE ENTRY POINT ADDRESS UPON EXIT 00073000
  74. * R2 WORK 00074000
  75. * R3 WORK 00075000
  76. * R4 WORK 00076000
  77. * R5 WORK 00077000
  78. * R6 FCHSECT ADDRESSABILITY 00078000
  79. * R7 DOSLIB DCB POINTER & WORK 00079000
  80. * R8 WORK 00080000
  81. * R9 WORK 00081000
  82. * R10 INTERNAL LINKAGE & WORK 00082000
  83. * R11 WORK 00083000
  84. * R12 DMSFCH ADDRESSABILITY 00084000
  85. * R13 SAVE AREA POINTER 00085000
  86. * R14 EXTERNAL LINKAGE & RETURN REGISTER 00086000
  87. * R15 ADDRESS OF EXTERNAL LINKAGE & RETURN CODE 00087000
  88. * 00088000
  89. * OPERATION 00089000
  90. * 00090000
  91. * 1. SET UP NECESSARY ADDRESSABILITIES AND SAVE 00091000
  92. * SOME REGISTERS. ACQUIRE WORK AREA FROM FREE 00092000
  93. * STORAGE. INITIALIZE WORK AREA AND CHECK IF 00093000
  94. * USER DOES NOT WANT THE PHASE LOADED ( USED 00094000
  95. * TO VERIFY IF THE PHASE EXISTS ). 00095000
  96. * 00096000
  97. * 2. VERIFY IF THE PRIVATE CORE IMAGE LIBRARY IS 00097000
  98. * ASSIGNED, AND IF SO, LOCATE THE LIBRARY DOSCB. 00098000
  99. * CALL STATE TO VERIFY IF THE LIBRARY EXISTS AND 00099000
  100. * USING THE LIBRARY OSFST, GET THE STARTING DISK 00100000
  101. * ADDRESS OF THE LIBRARY AND THE VIRTUAL DEVICE 00101000
  102. * ADDRESS OF WHERE THE LIBRARY RESIDES. 00102000
  103. * 00103000
  104. * 3. IF THE PRIVATE CORE IMAGE LIBRARY IS NOT ACTIVE 00104000
  105. * OR DOES NOT CONTAINS THE PHASE TO BE LOADED, 00105000
  106. * THE DOSLIB DCB IS OPENED TO SEARCH THROUGH THE 00106000
  107. * CHAIN OF DOSLIB'S GLOBALED. IF THE DCB DID OPEN 00107000
  108. * OK, A 'FIND' ( O/S SVC ) IS ISSUED TO SEE IF THE 00108000
  109. * PHASE RESIDES ON ANY OF THE GLOBALED DOSLIB'S. 00109000
  110. * 00110000
  111. * 4. IF NEITHER PRIVATE CORE IMAGE LIBRARY OR DOSLIB 00111000
  112. * LIBRARIES CONTAIN THE PHASE TO BE LOADED, DMSFCH 00112000
  113. * VERIFIES IF THE SYSRES VOLUME IS ACTIVE. IF THE 00113000
  114. * VOLUME IS ACTIVE, A SEARCH IS MADE TO LOCATE THE 00114000
  115. * SPECIFIED PHASE ON THE SYSTEM CORE IMAGE LIBRARY. 00115000
  116. * 00116000
  117. * 5. ONCE THE PHASE HAS BEEN LOCATED, THE PHASE HEADER 00117000
  118. * (DIRECTORY) RECORD IS READ. THE NUMBER OF TEXT 00118000
  119. * BLOCKS IN THE PHASE IS COMPUTED AND THE LENGTH OF 00119000
  120. * THE PHASE IS DETERMINED. IF THE PHASE RESIDES ON 00120000
  121. * A DOS/VS FORMATTED DISK, THE DISK ADDRESS OF THE 00121000
  122. * PHASE IS COMPUTED. 00122000
  123. * 00123000
  124. * 6. THE PHASE LOAD POINT AND ENTRY POINT IS COMPUTED 00124000
  125. * USING THE INFORMATION ON THE PHASE HEADER RECORD 00125000
  126. * AND THE USER SPECIFIED LOAD ADDRESS, IF ANY. THE 00126000
  127. * RELOCATION FACTOR (IF THE PHASE IS RELOCATABLE) 00127000
  128. * IS THEN COMPUTED AND THE ENDING ADDRESS OF THE 00128000
  129. * PHASE IS SAVED IN THE COMMUNICATIONS REGION. 00129000
  130. * NEXT, THE SIZE OF THE USER'S VIRTUAL PARTITION IS 00130000
  131. * COMPUTED (USING THE SPECIFIED DOSKPART - IF ANY). 00131000
  132. * IF THE PHASE TO BE LOADED WILL EXCEED 'PPEND'- THE 00132000
  133. * FETCH IS NOT ALLOWED AND MESSAGE 777S IS PRODUCED. 00133000
  134. * 00134000
  135. * 00135000
  136. * 7. ALL OF THE PHASE'S TEXT BLOCKS (DATA BLOCKS) ARE 00136000
  137. * READ AND MOVED TO THEIR SPECIFIC LOCATION IN THE 00137000
  138. * VIRTUAL PARTITION. IF THE PHASE IS RELOCATABLE, 00138000
  139. * THE NUMBER OF 'RLD' ITEMS TO RELOCATE IS ACQUIRED 00139000
  140. * FROM THE HEADER RECORD, AND THE PHASE IS RELOCATED 00140000
  141. * BY READING THE RLD ITEMS AND USING THE RELOCATION 00141000
  142. * FACTOR COMPUTED EARLY TO RELOCATE ALL OF THE PHASE'S 00142000
  143. * RELOCATABLE ITEMS. 00143000
  144. * 00144000
  145. * 8. WHEN THE PHASE HAS BEEN LOADED (AND RELOCATED IF 00145000
  146. * NEEDED) THE DOSLIB DCB IS CLOSED, THE DMSFCH WORK 00146000
  147. * AREA IS RETURN TO FREE STORAGE, AND A RETURN TO 00147000
  148. * CALLER IS MADE PASSING BACK THE FOLLOWING INFO. 00148000
  149. * R0. POINTS TO THE UPDATED PHASE DIRECTORY 00149000
  150. * R1. CONTAINS THE PHASE ENTRY POINT 00150000
  151. * R15. CONTAINS THE RETURN CODE OF THIS ROUTINE. 00151000
  152. *. 00152000
  153. EJECT 00153000
  154. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00154000
  155. * * 00155000
  156. * SET UP ADDRESSABILITIES , ACQUIRE WORK AREA FROM * 00156000
  157. * FREE STORAGE, AND INITIALIZE SOME FIELDS. * 00157000
  158. * * 00158000
  159. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00159000
  160. SPACE 2 00160000
  161. DMSFCH CSECT @V305001 00161000
  162. USING DMSFCH,R9 TEMP ADDRESSABILITY @V305001 00162000
  163. USING NUCON,R0 ... @V305001 00163000
  164. LR R8,R14 SAVE RETURN POINT @V305001 00164000
  165. LR R9,R15 SAVE ENTRY POINT @V305001 00165000
  166. LR R10,R0 SAVE LOAD ORIGIN @V305001 00166000
  167. LR R11,R1 SAVE DIRECTORY @V305001 00167000
  168. LA R0,FCHLEN GET WORK AREA LENGTH @V305001 00168000
  169. DMSFREE DWORDS=(0),TYPCALL=BALR @V305001 00169000
  170. USING FCHSECT,R1 ... @V305001 00170000
  171. XC FCHSECT(256),FCHSECT ZERO ENOUGH AT TOP @V305001 00171000
  172. XC FCHDCB,FCHDCB CLEAR DCB AREA, TOO @VA04915 00172000
  173. LR R14,R8 RESTORE RETURN ADDRESS @V305001 00173000
  174. STM R10,R11,USERLD SAVE ORIGIN AND DIRECTORY @V305001 00174000
  175. STM R12,R14,FCHREG1 SAVE REGS 12 - 14 @V305001 00175000
  176. STM R2,R7,FCHREG2 SAVE REGS 02 - 07 @V305001 00176000
  177. DROP R1,R9 @V305001 00177000
  178. LR R6,R1 WORK AREA ADDRESS TO R6 @V305001 00178000
  179. LR R12,R9 SET UP OUR BASE REGISTER @V305001 00179000
  180. USING FCHSECT,R6 @V305001 00180000
  181. USING DMSFCH,R12 @V305001 00181000
  182. MVC DIRNAME(DIRLEN),0(R11) MOVE DIRECTORY TO WORK @V305066 00182000
  183. LA R1,FCHBUF GET BEGIN WORK BUFFER @V305001 00183000
  184. LA R1,1024(,R1) COMPUTE END OF BUFFER @V305001 00184000
  185. ST R1,FCHBUFE SAVE FOR LATER @V305001 00185000
  186. LA R13,FCHSAVE POINT TO O/S SAVE AREA @V305001 00186000
  187. OC FCHSW,DIRC REMEMBER DIRC BITS FOR LATER @V305001 00187000
  188. NI FCHSW,FIFTEEN MUST RESET CMS BIT @VA05887 00188000
  189. EJECT 00189000
  190. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00190000
  191. * * 00191000
  192. * VERIFY IF PRIVATE C.I.L. IS ASSIGNED, AND IF SO, ISSUE * 00192000
  193. * DUMMY DLBL FOR IJSYSCL TO ACQUIRE USER ISSUED DLBL. 00193000
  194. * VERIFY THAT AN OSFST EXIST TO GET THE STARTING CCHHR OF * 00194000
  195. * THE DATA SET AND THE VIRTUAL DEVICE ADDRESS. * 00195000
  196. * * 00196000
  197. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00197000
  198. SPACE 2 00198000
  199. CKPCIL EQU * @V305001 00199000
  200. LA R3,SYSCLB GET SYSCLB LUB INDEX NO. @V305001 00200000
  201. BAL R10,TSTUNIT SEE IF UNIT ASSIGNED @V305001 00201000
  202. BZ CKDOSL BRANCH IN NOT ASSIGNED @V305001 00202000
  203. MVC FCHTYP,4(R3) SAVE DASD DEVICE TYPE @V305066 00203000
  204. SR R9,R9 ... @V305001 00204000
  205. ICM R9,M7,DOSFIRST+1 GET DOSCB CHAIN ADDRESS @V305066 00205000
  206. USING FCBSECT,R9 @V305001 00206000
  207. CKPCIL1 BZ CKDOSL IF ZERO, NO MORE DOSCB @V305001 00207000
  208. CLC IJSYSCL,FCBDD MATCHING DDNAME ? @V305001 00208000
  209. BE CKPCIL2 YES, BRANCH @V305001 00209000
  210. ICM R9,M7,1(R9) GET NEXT DOSCB ADDRESS @V305066 00210000
  211. B CKPCIL1 KEEP LOOKING @V305001 00211000
  212. CKPCIL2 CLI FCBDEV,FCBDSK IS DEVICE DISK ? @V305001 00212000
  213. BNE CKDOSL NO, BRANCH @V305001 00213000
  214. LA R1,FCBOP USE FCB FOR STATE PLIST @V305001 00214000
  215. L R15,ASTATE GET STATE ADDRESS @V305001 00215000
  216. BALR R14,R15 GO STATE PRIVATE LIBRARY @V305001 00216000
  217. LA R14,RC28 SET R14 TO RETURN CODE 28 @VA04898 00217000
  218. CLR R15,R14 IS RETURN CODE 28 ? @VA04898 00218000
  219. BZ ERRMSG YES, GO ISSUE ERRMSG @VA04898 00219000
  220. LTR R15,R15 RESET CONDITION CODE @VA04898 00220000
  221. BNZ CKDOSL IF ERRORS, GO TO SEARCH DOSLIB @V305001 00221000
  222. L R9,FCBOSFST GET OSFST FOR P.C.I.L. @V305001 00222000
  223. DROP R9 @V305001 00223000
  224. LTR R9,R9 ANY AVAILABLE ? @V305001 00224000
  225. BZ CKDOSL NO, BRANCH @V305001 00225000
  226. USING OSFST,R9 @V305001 00226000
  227. MVC FCHCHR(4),OSFSTXTN+2 SAVE P.C.I.L. CCHH @V305001 00227000
  228. MVI FCHR,ONE RECORD NUMBER TO 1 @V305066 00228000
  229. MVC FCHCUU(2),OSFSTDSK SAVE P.C.I.L. CUU @V305001 00229000
  230. DROP R9 @V305001 00230000
  231. OI FCHSW,PCILA SET PCIL FLAG IN FCHSW @V305001 00231000
  232. B CILCOMM GO TO COMMON C.I.L. CODE @V305001 00232000
  233. ERRMSG DMSERR TEXT='NO PRIVATE CORE IMAGE LIBRARY X00233000
  234. FOUND',NUM=16,LET=E 00234000
  235. B DONE GET OUT @VA04898 00235000
  236. EJECT 00236000
  237. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00237000
  238. * * 00238000
  239. * SEE IF ANY DOSLIB LIBRARIES HAVE BEEN GLOBALED, AND * 00239000
  240. * IF SO, OPEN THE DOSLIB DCB. THEN ISSUE THE O/S FIND * 00240000
  241. * SVC TO SEE IF THE PHASE EXISTS ON ANY OF THE GLOBALED * 00241000
  242. * DOSLIB'S. IF THE PHASE IS FOUND, SET THE 'CMS READ' * 00242000
  243. * FLAG ON, AND GO TO THE PHASE FOUND ROUTINE. * 00243000
  244. * * 00244000
  245. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00245000
  246. SPACE 2 00246000
  247. CKDOSL CLC DOSLIBL,FENCE ANY DOSLIB LIBRARY GLOBALED ? @V305066 00247000
  248. BE CKSCIL NO, CHECK FOR SYSTEM C.I.L. @V305001 00248000
  249. LA R9,DOSLIBL POINT TO DOSLIB NAMES @VA04915 00249000
  250. MVC STDOSFT,DOSLIB SET UP PLIST @VA04915 00250000
  251. MVC STDOSEND,FENCE MOVE FENCE TO PLIST @VA04915 00251000
  252. STDOSL EQU * @VA04915 00252000
  253. MVC STDOSNM,0(R9) MOVE IN THE NAME @VA04915 00253000
  254. LA R1,STDOSLST POINT TO LIST @VA04915 00254000
  255. L R15,ASTATE GET STATE ADDRESS @VA04915 00255000
  256. BALR R14,R15 GO STATE DOSLIB @VA04915 00256000
  257. BZ OPENDOSL BRANCH IF FOUND @VA04915 00257000
  258. LA R9,8(,R9) POINT TO NEXT NAME @VA04915 00258000
  259. CLC FENCE,0(R9) IS THERE ONE? @VA04915 00259000
  260. BE CKSCIL BRANCH IF NOT @VA04915 00260000
  261. B STDOSL CHECK THIS ONE @VA04915 00261000
  262. OPENDOSL EQU * @VA04915 00262000
  263. NI DOSFLAGS,255-DOSSVC CLEAR DOSSVC FLAG FOR NOW @V305001 00263000
  264. MVC FCHDCB,SYSLIB MOVE DCB TO WORK AREA @V305066 00264000
  265. LA R7,FCHDCB GET DCB BASE @V305001 00265000
  266. USING IHADCB,R7 ... @V305001 00266000
  267. MVI DCBBUFCB+3,ZERO TELL OPEN DON'T GET BUFFER @V305066 00267000
  268. LA R9,ERR104 GET ERROR ADDRESS @V305001 00268000
  269. ST R9,DCBEODAD SAVE IN DCB EODAD @V305001 00269000
  270. ST R9,DCBSYNAD SAVE IN DCB SYNAD @V305001 00270000
  271. MVI FCHBUF,RENT SET OPEN PLIST AS RE-ENTRANT @V305066 00271000
  272. LA R1,FCHBUF GET OPEN PLIST @V305001 00272000
  273. OPEN ((7)),MF=(E,(1)) OPEN DOSLIB @V305001 00273000
  274. TM DCBOFLGS,OPNOK DCB OPEN SUCCESSFUL ? @V305066 00274000
  275. BZ CKSCIL NO, CHECK FOR SYSTEM C.I.L. @V305001 00275000
  276. LA R15,EIGHT SET RETURN CODE TO 8. @V305066 00276000
  277. FIND (7),DIRNAME,D DO A FIND ON THE MEMBER @V305001 00277000
  278. LTR R15,R15 WAS THE MEMBER FOUND ? @V305001 00278000
  279. BNZ CKSCIL NO, CHECK FOR SYSTEM C.I.L. @V305001 00279000
  280. LA R8,DIRNAME GET BUFFER AREA FOR DIRECTORY @V305001 00280000
  281. L R9,DIRBLOCK GET MAX LENGTH DIRECTORY @V305001 00281000
  282. NI FCHSW,255-DOSREAD RESET DOS READ FLAG @V305001 00282000
  283. BAL R10,READ READ DIRECTORY (1ST RECORD) @V305001 00283000
  284. B PHSEFND GO PROCESS PHASE @V305001 00284000
  285. DROP R7 ... @V305001 00285000
  286. EJECT 00286000
  287. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00287000
  288. * * 00288000
  289. * ACQUIRE THE CUU OF SYSRES FORM THE SYSRES LUB/PUB. * 00289000
  290. * SET UP THE SYSTEM C.I.L. CCHHR AND FALL THROUGH C.I.L. * 00290000
  291. * COMMON CODE. BOTH THE PRIVATE C.I.L. AND THE SYSTEM * 00291000
  292. * C.I.L. WILL USE THIS CODE. A READ DIRECTORY CHANNEL * 00292000
  293. * PROGRAM IS USED TO LOCATE THE DIRECTORY ENTRY FOR THE * 00293000
  294. * PHASE. ONCE THE DIRECTORY FOR THE PHASE IS FOUND, * 00294000
  295. * THE DIRECTORY IS MOVED TO THE FETCH WORK AREA. * 00295000
  296. * * 00296000
  297. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00297000
  298. SPACE 2 00298000
  299. CKSCIL EQU * @V305001 00299000
  300. LA R3,SYSRES GET SYSRES LUB INDEX NO. @V305001 00300000
  301. BAL R10,TSTUNIT SEE IF UNIT ASSIGNED @V305001 00301000
  302. BZ PHNFND BRANCH IF NOT ASSIGNED @V305001 00302000
  303. MVC FCHTYP,4(R3) SAVE DASD DEVICE TYPE @V305066 00303000
  304. MVC FCHCUU,0(R3) SAVE SYSRES CUU @V305066 00304000
  305. MVC FCHCHR(5),SCILCHR INIT SYSRES DIRECTORY PTR. @V305001 00305000
  306. CILCOMM MVC FCHORG(4),FCHCHR SAVE LIBRARY ORIGIN CCHH @V305001 00306000
  307. LA R9,FCHHDR GET PROPER CHANNEL PGM @V305001 00307000
  308. ST R9,FCHCCWA SAVE IN WORK AREA @V305001 00308000
  309. OI FCHSW,DOSREAD+DACTIVE SET APPROP FLAGS @VA04754 00309000
  310. BAL R10,READ GO GET DIRECTORY @V305001 00310000
  311. NI FCHSW,255-DACTIVE DIRECTORY SEARCH IS OVER @VA04754 00311000
  312. LA R9,FCHTXT GET TEXT CHANNEL PGM @V305001 00312000
  313. ST R9,FCHCCWA SAVE IN WORK AREA @V305001 00313000
  314. LA R2,FCHBUF POINT TO BUFFER READ @V305001 00314000
  315. USING DIRNAME,R2 ... @V305001 00315000
  316. LA R2,2(,R2) ... @V305001 00316000
  317. SR R3,R3 ... @V305001 00317000
  318. BUMP AR R2,R3 BUMP TO NEXT ENTRY @V305001 00318000
  319. SR R3,R3 ZERO REG 3 @V305001 00319000
  320. IC R3,DIRN GET NUMBER HALF WORDS @V305001 00320000
  321. LA R3,DIRTT-DIRNAME(R3,R3) @V305001 00321000
  322. CLC DIRNAME,PHNAME(R6) DO NAMES MATCH ? @V305001 00322000
  323. BE PHFOUND YES, BRANCH @V305001 00323000
  324. BL BUMP NO, KEEP LOOKING @V305001 00324000
  325. DROP R2 ... @V305001 00325000
  326. TM FCHSW,PCILA LOOKINK IN P.C.I.L. ? @V305001 00326000
  327. BZ PHNFND NO, PHASE NOT FOUND @V305001 00327000
  328. NI FCHSW,255-PCILA RESET P.C.I.L. FLAG @V305001 00328000
  329. B CKDOSL TRY DOSLIB LIBRARY NOW.. @V305001 00329000
  330. EJECT 00330000
  331. USING DIRNAME,R2 ... @V305001 00331000
  332. PHFOUND SR R3,R3 ... @V305001 00332000
  333. IC R3,DIRN GET NO. HALF WORDS INFO. @V305001 00333000
  334. SLL R3,ONE MULTIPLY BY 2, @V305066 00334000
  335. LA R3,11(,R3) AND ADD CONSTANT. @V305066 00335000
  336. EX R3,MOVEDIR MOVE DIRECTORY TO WORK @V305001 00336000
  337. DROP R2 ... @V305001 00337000
  338. SPACE 2 00338000
  339. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00339000
  340. * * 00340000
  341. * THE NUMBER OF TEXT BLOCKS FOR THE PHASE IS COMPUTED, * 00341000
  342. * AND THE LENGTH OF THE PHASE IS DETERMINED. IF THE PHASE * 00342000
  343. * RESIDES ON A DOS DISK, THE SEEK/SEARCH ADDRESS FOR THE * 00343000
  344. * PHASE IS COMPUTED. * 00344000
  345. * * 00345000
  346. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00346000
  347. SPACE 2 00347000
  348. PHSEFND TM FCHSW,NOTEXT TEXT = NO SPECIFIED ? @V305001 00348000
  349. BO RLDEXIT YES, ALL DONE.... @V305001 00349000
  350. LH R9,DIRTT GET NUMBER 1024 BLOCKS @V305001 00350000
  351. BCTR R9,0 LESS LAST ONE @V305001 00351000
  352. SLA R9,TEN MULTIPLY BY 1024 @V305066 00352000
  353. AH R9,DIRLL ADD LENGTH LAST BLOCK @V305001 00353000
  354. ST R9,PHASELN SAVE AS PHASE LENGTH @V305001 00354000
  355. TM FCHSW,DOSREAD DOING I/O VIA DIAGNOSE ? @V305001 00355000
  356. BZ CMSREAD NO, BRANCH @V305001 00356000
  357. MVC FCHR(1),DIRTTR+2 MOVE RECORD NUMBER FROM TTR @V305001 00357000
  358. LH R3,DIRTTR GET RELATIVE HEAD @V305001 00358000
  359. AH R3,FCHORG+2 ADD TO ORIGIN HEAD @V305001 00359000
  360. SR R2,R2 ... @V305001 00360000
  361. LH R5,TC3340 GET 3340 DEVICE CONSTANT @V305001 00361000
  362. CLI FCHTYP,T3350 IS DEVICE 3350 @VA08343 00361100
  363. BNE TST3330 NO CHECK 3330 @VA08343 00361200
  364. LH R5,TC3350 GET 3350 DEV TYPE @VA08343 00361300
  365. B CMSEEK GO COMPUTE SEEK ADDR @VA08343 00361400
  366. TST3330 EQU * @VA08343 00361500
  367. CLI FCHTYP,T3330 IS DEVICE 3330 ? @V305001 00362000
  368. BNE TSTMOD11 IF NOT THEN CHECK 3330-11 @VA08343 00363000
  369. LH R5,TC3330 GET 3330 DEVICE CONSTANT @V305001 00364000
  370. B CMSEEK GO COMPUTE SEEK ADDRESS @V305001 00365000
  371. TSTMOD11 EQU * @VA08343 00365100
  372. CLI FCHTYP,MOD11 IS DEVICE 3330-11 @VA08343 00365200
  373. BNE TST2314 NO CHECK FOR 2314 @VA08343 00365300
  374. LH R5,TC3330 GET 3330 DEVICE CONSTANT @VA08343 00365400
  375. B CMSEEK GO COMPUTE SEEK ADDR @VA08343 00365500
  376. TST2314 CLI FCHTYP,T2314 IS DEVICE 2314 ? @V305001 00366000
  377. BNE CMSEEK NO, BRANCH @V305001 00367000
  378. LH R5,TC2314 GET 2314 DEVICE CONSTANT @V305001 00368000
  379. CMSEEK DR R2,R5 COMPUTE ABSOLUTE HEAD NUMBER @V305001 00369000
  380. STH R2,FCHCHR+2 SAVE FOR SEEK @V305001 00370000
  381. LH R2,FCHORG GET ORIGIN CYLINDER NUMBER @V305001 00371000
  382. AR R3,R2 COMPUTE ABSOLUTE CYL NUMBER @V305001 00372000
  383. STH R3,FCHCHR SAVE FOR SEEK @V305001 00373000
  384. EJECT 00374000
  385. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00375000
  386. * * 00376000
  387. * THE PHASE LOAD POINT AND ENTRY POINT IS COMPUTED AND * 00377000
  388. * THE RELOCATION FACTOR (IF PHASE IS RELOCATABLE) IS * 00378000
  389. * COMPUTED TOO. THE ENDING ADDRESS OF THE PHASE IS SAVED * 00379000
  390. * IN THE COMMUNICATIONS REGION . * 00380000
  391. * * 00381000
  392. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00382000
  393. SPACE 2 00383000
  394. CMSREAD SR R8,R8 ... @V305001 00384000
  395. SR R9,R9 ... @V305001 00385000
  396. ICM R8,M7,DIRPPP GET PHASE LOAD POINT @V305066 00386000
  397. ICM R9,M7,DIRAAA GET DOS PARTITION BEGIN @V305066 00387000
  398. SR R8,R9 COMPUTE RELATIVE DOS PPBEG @V305001 00388000
  399. BNM GETLDAD IF NOT MINUS, BRANCH @V305001 00389000
  400. SR R8,R8 ZERO RELATIVE DISPLACEMENT @V305001 00390000
  401. GETLDAD ICM R2,M7,USERLD+1 GET USER SUPPLIED R0. @V305066 00391000
  402. BZ GETLDP IF NOT SUPPLIED, USE DEFAULT @VA09200 00392000
  403. CLC DIRNAME(3),=CL3'$$B' LOADING $$B-TRANS ? @V305101 00393000
  404. BE SAVELD YES, DO NOT CHECK FOR 20000, @V305101 00394000
  405. B SAVELDP ELSE SEE IF LOADPOINT >= 20000. @V305101 00395000
  406. GETLDP L R2,AUSRAREA GET BEGINNING OF USERAREA @V305066 00396000
  407. LA R2,0(R8,R2) COMPUTE RELATIVE CMS PPBEG @V305066 00397000
  408. TM DIRC,RELPHSE RELOCATABLE PHASE? @V305066 00398000
  409. BO SAVELD YES, FETCH PHASE AT 20000+ @V305066 00399000
  410. ICM R2,M7,DIRPPP DOS LOAD POINT TO R2 @V305066 00400000
  411. SAVELDP C R2,AUSRAREA IS THE LOAD POINT < 20000 ? @V305066 00401000
  412. BL ERR115E YES, GIVE ERROR... @V305066 00402000
  413. SAVELD ST R2,PHASELD SAVE CMS PHASE LOAD POINT @V305066 00403000
  414. ICM R8,M7,DIRPPP GET PHASE LKED LOAD POINT @V305066 00404000
  415. ICM R9,M7,DIREEE GET PHASE LKED ENTRY POINT @V305066 00405000
  416. SR R2,R8 GET RELOCATION FACTOR @V305001 00406000
  417. AR R9,R2 RELOCATE ENTRY POINT @V305001 00407000
  418. ST R9,PHASEEP SAVE PHASE CMS ENTRY POINT @V305001 00408000
  419. ST R2,RELFACT SAVE RELO FACTOR @V305001 00409000
  420. L R3,PHASELD GET PHASE LOAD POINT @V305001 00410000
  421. L R2,PHASELN GET PHASE LENGTH @V305001 00411000
  422. AR R2,R3 COMPUTE END ADDRESS @V305001 00412000
  423. BCTR R2,0 LESS ONE @V305001 00413000
  424. TM DOSFLAGS,VSMINSTL ARE WE INSTALLING VSAM ? @V305101 00414000
  425. BO CKPHASE YES, DO NOT CHECK FOR $$B. @V305101 00415000
  426. C R3,DOSTRANS LOAD INTO TRANSIENT AREA? @VA09193 00415300
  427. BNE CKPHASE NO, CHECK USERAREA @VA09193 00415600
  428. CLC DIRNAME(3),=CL3'$$B' LOADING $$B-TRANS ? @V305101 00416000
  429. BE CK$$BHI YES, CHECK IF > THAN TRANS AREA @V305101 00417000
  430. CKPHASE C R2,FREELOWE EXCEEDS AVAILABLE STORAGE ? @V305101 00418000
  431. BNL NOCORE YES, GIVE ERROR MESSAGE @V305001 00419000
  432. L R9,ASYSREF GET ADDRESS OF BGCOM @VA04646 00420000
  433. USING BGCOM,R9 @VA04646 00421000
  434. ICM R3,15,PPEND WILL THE REAL PPEND STAND UP? @VA04646 00422000
  435. BNZ AVAILPT GOTCHA @VA04646 00423000
  436. DROP R9 @VA04646 00424000
  437. * 00425000
  438. * ALSO COMPUTE WHETHER PHASE WOULD EXCEED VIRTUAL PARTITION 00426000
  439. * SIZE AT EXECUTION TIME... 00427000
  440. * 00428000
  441. LH R9,FRERESPG GET NO. PP'S TO SAVE FOR CMS @VA04299 00429000
  442. SLL R9,12 CONVERT PAGES TO BYTES @VA04299 00430000
  443. LR R4,R9 AND PUT IT IN R4. @VA04299 00431000
  444. LR R5,R4 ALSO IN R5 @VA04299 00432000
  445. TM VSAMFLG1,VSAMRUN+VSAMSERV VSAM AND/OR AMSERV? @VA04299 00433000
  446. BNZ ADDANCH YES- CONSIDER ANCHOR TAB @VA04299 00434000
  447. TM DOSFLAGS,DOSVSAM WILL BE RUNNING VSAM?? @VA04299 00435000
  448. BZ CVPART NO- SKIP AROUND @VA04299 00436000
  449. ADDANCH LA R5,ANCHSIZ(,R4) RES SPACE FOR ANCHOR TABLE @VA04299 00437000
  450. CVPART L R3,FREELOWE GET TOT AMT OF SPACE @VA04299 00438000
  451. S R3,MAINSTRT IN PARTITION @VA04826 00439000
  452. SR R3,R9 BACK OUT RESERVED AMT. @VA04299 00440000
  453. CLR R4,R5 NOW, WAS VSAM A FACTOR? @VA04299 00441000
  454. BE NOVSM NO- SKIP ADD'L CALCS @VA04646 00442000
  455. LR R1,R3 SIZE INTO R1 FOR WORK @VA04299 00443000
  456. LH R4,PCTVSAM PERCENT TO RES FOR VSAM @VA04299 00444000
  457. MR R0,R4 CALC HOW MUCH ROOM TO LEAVE @VA04299 00445000
  458. D R0,=F'100' FOR GETVIS/FREEVIS USE @VA04299 00446000
  459. LR R3,R1 RELOAD R3- FORGET REMAINDER @VA04299 00447000
  460. LA R5,ANCHSIZ SIZE OF ANCHOR TABLE INTO WORK 00448000
  461. SR R3,R5 BACK IT OUT @VA04646 00449000
  462. * 00450000
  463. * IF PARTITION SIZE IS TOO BIG- USER WILL GET DEFAULT , I.E., A 00451000
  464. * SIZE SMALLER THAN WHAT WAS SPECIFIED IN DOSPART. EITHER AN 00452000
  465. * ACCEPTED DOSPART SIZE OR THIS 'SMALLER' AMOUNT IS THEN CHECKE 00453000
  466. * AGAINST THE SIZE OF THE PHASE TO BE LOADED. IF THE PHASE WILL 00454000
  467. * EXCEED THE END OF THE USER'S VIRTUAL DOS PARTITION, THEN THE 00455000
  468. * FETCH IS NOT ALLOWED AND AN ERROR MESSAGE IS PRODUCED. 00456000
  469. * 00457000
  470. NOVSM A R3,MAINSTRT CALC NEW MAINHIGH @VA04646 00458000
  471. BCTR R3,R0 MINUS ONE = PPEND @VA04646 00459000
  472. SR R9,R9 CLEAR WORK REG @VA04299 00460000
  473. ICM R9,3,DOSKPART GET USER REQ'D PART. SIZE @VA04299 00461000
  474. BZ AVAILPT IF 'NONE' USE DEFAULT SCHEME @VA04299 00462000
  475. SLL R9,10 CONVERT TO BYTES @VA04299 00463000
  476. A R9,MAINSTRT GET USER'S NOTION OF PPEND @VA04646 00464000
  477. CR R3,R9 WILL USER'S SIZE FIT? @VA04299 00465000
  478. BNH AVAILPT NO- USE WHAT'S AVAILABLE @VA04299 00466000
  479. LR R3,R9 GO ALONG WITH USER'S WISHES @VA04299 00467000
  480. AVAILPT EQU * @VA04299 00468000
  481. CR R2,R3 WILL PHASE BEING LOADED @VA04646 00469000
  482. * EXCEED THIS? 00470000
  483. BNH CKPH01 NO - GO GET IT @VA07269 00471000
  484. CL R2,MAINHIGH IS IT WITHIN GETVIS? @VA07269 00472000
  485. BH ERPART ITS OUT OF OUR AREA @VA07269 00473000
  486. L R3,MAINLIST GET FREE LIST POINTER @VA07269 00474000
  487. LA R3,0(R3) CLEAR HIGH ORDER BYTE @VA07269 00475000
  488. LTR R3,R3 IS PIONTER ZERO? @VA07269 00476000
  489. BZ CKPH01 YES - ITS ALL OURS @VA07269 00477000
  490. CKFRE EQU * @VA07269 00478000
  491. LR R4,R3 BRING IN THE FIRST POINTER @VA07269 00479000
  492. CL R4,PHASELD IS IT HIGHER THAN LOAD POINT? @VA07269 00480000
  493. BH CKMORE YES - SEE IF THE PHASE WILL FIT @VA07269 00481000
  494. A R4,4(R4) ADD FREE AREA LENGTH @VA07269 00482000
  495. BCTR R4,R0 SUBTRACT ONE TO GET TRUE LENGTH @VA07269 00483000
  496. CL R4,PHASELD ARE WE LOADING IN THIS FREE AREA?@VA07269 00484000
  497. BNL ERPART YES - THAT IS AN ERROR @VA07269 00485000
  498. L R3,0(R3) GET THE NEXT POINTER @VA07269 00486000
  499. LTR R3,R3 IS THIS THE END OF FREE LIST? @VA07269 00487000
  500. BZ CKPH01 YES - GO LOAD IT @VA07269 00488000
  501. B CKFRE AND GO LOOK AT THIS ONE @VA07269 00489000
  502. CKMORE EQU * @VA07269 00490000
  503. CR R4,R2 HIGHER THAN LOAD PT +LENGTH? @VA07269 00491000
  504. BNL CKPH01 YES - IT FITS GO GET IT @VA07269 00492000
  505. B ERPART NO - ITS OUT OF OUR PARTITION @VA07269 00493000
  506. CKPH01 EQU * @VA07269 00494000
  507. ST R2,LASTLOAD SAVE END OF LAST PHASE LOADED @VA07269 00495000
  508. B TXTREAD GO READ TEXT BLOCKS @V305001 00496000
  509. CK$$BHI LA R3,TRANSLN $$B-TRANS AREA LENGTH @V305066 00497000
  510. A R3,DOSTRANS COMPUTE WHERE DOSTRANS ENDS @V305101 00498000
  511. CR R2,R3 WILL $$B-TRANS EXCEED AREA ? @V305101 00499000
  512. BH NOCORE YES, GIVE ERROR MESSAGE @V305101 00500000
  513. USING BGCOM,R1 @VA06035 00501000
  514. L R1,ASYSREF @VA06035 00502000
  515. MVC LASTLOAD(4),HIPHAS @VA06035 00503000
  516. EJECT 00504000
  517. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00505000
  518. * * 00506000
  519. * THIS ROUTINE JUST LOOPS UNTIL ALL TEXT BLOCKS HAVE * 00507000
  520. * BEEN READ. ALL BLOCKS ARE READ INTO A WORK BUFFER AND * 00508000
  521. * MOVED TO THEIR SPECIFIC LOCATION IN CORE. * 00509000
  522. * * 00510000
  523. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00511000
  524. SPACE 2 00512000
  525. TXTREAD LH R11,DIRTT GET NUMBER BLOCKS TO READ @V305001 00513000
  526. BCTR R11,0 LESS LAST ONE @V305001 00514000
  527. L R2,PHASELD GET BEGIN ADDRESS OF PHASE @V305001 00515000
  528. NEXTREC LA R8,FCHBUF GET FETCH BUFFER @V305001 00516000
  529. L R9,TXTBLOCK GET LENGTH FETCH BUFFER @V305001 00517000
  530. LTR R11,R11 ONLY ONE BLOCK ? @V305001 00518000
  531. BZ RDLAST YES, READ AS LAST BLOCK @V305001 00519000
  532. LR R4,R8 TEMP SAVE IN R4 @V305001 00520000
  533. LR R3,R9 TEMP SAVE IN R3 @V305001 00521000
  534. LR R5,R3 ... @V305001 00522000
  535. BAL R10,READ GO READ TEXT BLOCK @V305001 00523000
  536. MVCL R2,R4 MOVE TEXT TO PHASE AREA @V305001 00524000
  537. BCT R11,NEXTREC GO GET NEXT RECORD @V305001 00525000
  538. RDLAST BAL R10,READ READ LAST BLOCK (SHORT) @V305001 00526000
  539. LA R4,FCHBUF GET BUFFER ADDRESS @V305001 00527000
  540. LH R3,DIRLL GET LENGTH LAST BLOCK @V305001 00528000
  541. LR R5,R3 ... @V305001 00529000
  542. MVCL R2,R4 MOVE TEXT TO PHASE AREA @V305001 00530000
  543. EJECT 00531000
  544. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00532000
  545. * * 00533000
  546. * DETERMINE IF PHASE IS RELOCATABLE, AND IF SO SET UP * 00534000
  547. * THE RLD BUFFER AND NUMBER OF ITEMS TO RELOCATE. * 00535000
  548. * * 00536000
  549. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00537000
  550. SPACE 2 00538000
  551. L R1,PHASELD GET PHASE CMS LOAD POINT @V305001 00539000
  552. ICM R5,M15,RELFACT GET RELOCATION FACTOR @V305066 00540000
  553. TM DIRC,RELPHSE PHASE RELOCATABLE ? @V305001 00541000
  554. BZ RLDEXIT NO, DON'T RELOCATE @V305001 00542000
  555. LTR R5,R5 RELOCATION FACTOR ZERO ? @V305001 00543000
  556. BZ RLDEXIT YES, BRANCH @V305001 00544000
  557. LH R2,DIRLL GET LENGTH LAST BLOCK @V305001 00545000
  558. LA R2,3(,R2) PLUS 3 FOR ALIGNMENT @V305001 00546000
  559. N R2,=A(X'FFFFFC') ALIGN TO FULL WORD @V305001 00547000
  560. LA R4,FCHBUF GET BUFFER ADDRESS @V305001 00548000
  561. AR R2,R4 POINT TO RLD ITEMS @V305001 00549000
  562. ST R2,RLDPTR SAVE ADDRESS @V305001 00550000
  563. L R11,LASTLOAD GET END ADDRESS OF PHASE @V305001 00551000
  564. LH R3,DIRRR GET NUMBER RLD ITEMS @V305001 00552000
  565. LTR R3,R3 IF NONE, BRANCH @V305001 00553000
  566. BZ RLDEXIT ... @V305001 00554000
  567. EJECT 00555000
  568. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00556000
  569. * * 00557000
  570. * THE RDL BLOCKS ARE READ ONE AT A TIME, AND ALL RLD * 00558000
  571. * ITEMS ARE RELOCATED USING THE COMPUTED RELO FACTOR. * 00559000
  572. * * 00560000
  573. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00561000
  574. SPACE 2 00562000
  575. L R4,RLDPTR GET BEGIN RLD ITEMS @V305001 00563000
  576. NXTRLD C R4,FCHBUFE ARE WE AT BUFF END ? @V305001 00564000
  577. BL NXTRLD1 NO, BRANCH @V305001 00565000
  578. READRLD LA R8,FCHBUF GET BUFFER ADDR @V305001 00566000
  579. L R9,TXTBLOCK GET RECORD LEN @V305001 00567000
  580. BAL R10,READ GET NEXT RLD BLOCK @V305001 00568000
  581. LA R4,FCHBUF GET BUFFER BEGIN @V305001 00569000
  582. ST R4,RLDPTR SAVE AS NEW RLD POINTER @V305001 00570000
  583. NXTRLD1 ICM R7,M15,0(R4) GET RLD ITEM. @V305066 00571000
  584. BZ RLDEXIT IF ZERO, ALL DONE @V305001 00572000
  585. NXTRLD2 AR R7,R5 ADD RELOCATION FACTOR @V305001 00573000
  586. LA R2,0(,R7) POINT TO CORE LOCATION @V305001 00574000
  587. SRL R7,27 CREATE MASK @V305001 00575000
  588. IC R14,MASKCON(R7) GET MASK FOR ICM/STCM @V305001 00576000
  589. AR R7,R2 LAST BYTE OF ADCON @V305001 00577000
  590. CR R7,R11 BEYOND END PHASE ? @V305001 00578000
  591. BH RLDEXIT YES, BRANCH @V305001 00579000
  592. EX R14,IADCON LOAD USER ADCON INTO R7 @V305001 00580000
  593. TM 0(R4),ONE ADD OR SUBTRACT ? @V305066 00581000
  594. LR R4,R5 SET TO ADD RELO @V305001 00582000
  595. BZ NXTRLD3 BRANCH IF ADD @V305001 00583000
  596. LCR R4,R5 SET TO SUBTRACT RELO @V305001 00584000
  597. NXTRLD3 AR R7,R4 ADD/SUB RELO FACTOR @V305001 00585000
  598. NXTRLD4 EX R14,SADCON STORE USER ADCON @V305001 00586000
  599. L R4,RLDPTR RLD POINTER @V305001 00587000
  600. LA R4,4(,R4) BUMP TO NEXT RLD ITEM @V305001 00588000
  601. ST R4,RLDPTR SAVE POINTER @V305001 00589000
  602. BCT R3,NXTRLD GO PROCESS NEXT RLD @V305001 00590000
  603. RLDEXIT EQU * DONE @V305001 00591000
  604. SR R9,R9 ZERO RETURN CODE @V305001 00592000
  605. EJECT 00593000
  606. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00594000
  607. * * 00595000
  608. * THE DOSLIB DCB IS CLOSED (IF PREVIOUSLY OPEN), * 00596000
  609. * AND THE FETCH WORK AREA IS RETURNED TO FREE STORAGE. * 00597000
  610. * CONTROL THEN RETURNS TO THE CALLER. * 00598000
  611. * * 00599000
  612. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00600000
  613. SPACE 2 00601000
  614. DONE NI FCHSW,FIFTEEN CLEAR UPPER 4 BITS OF FCHSW. @V305066 00602000
  615. OC DIRC,FCHSW SET UP DIRC AS UPON ENTRY @V305001 00603000
  616. LA R7,FCHDCB GET DOSLIB DCB ADDR @V305001 00604000
  617. USING IHADCB,R7 @V305001 00605000
  618. TM DCBOFLGS,OPNOK DOSLIB DCB OPEN ? @V305066 00606000
  619. BZ DONE2 NO, BRANCH @V305001 00607000
  620. DROP R7 @V305001 00608000
  621. MVI FCHBUF,RENT SET OPEN PLIST AS RE-ENTRANT @V305066 00609000
  622. LA R1,FCHBUF GET OPEN LIST @V305001 00610000
  623. CLOSE ((7)),MF=(E,(1)) CLOSE DOSLIB DCB @V305001 00611000
  624. DONE2 OI DOSFLAGS,DOSSVC SET DOSSVC FLAG ON @V305001 00612000
  625. L R10,USERDE GET USER'S DIRECTORY @V305001 00613000
  626. MVC 0(DIRLEN,R10),DIRNAME MOVE WORK DIRECTORY @V305066 00614000
  627. TM DIRC,PNOTFND PHASE FOUND ? @V305001 00615000
  628. BNO DONE3 YES, BRANCH @V305001 00616000
  629. SR R11,R11 ENTRY POINT ZERO @V305001 00617000
  630. B DONE4 BRANCH AROUND @V305001 00618000
  631. EJECT 00619000
  632. DONE3 L R11,PHASEEP GET PHASE ENTRY POINT @V305001 00620000
  633. LTR R9,R9 ANY ERRORS ? @V305001 00621000
  634. BNZ DONE4 YES, BRANCH @V305001 00622000
  635. L R1,ASYSREF GET BGCOM ADDRESS @V305001 00623000
  636. USING BGCOM,R1 ... @V305001 00624000
  637. MVC HIPHAS,LASTLOAD SET END PHASE JUST LOADED @V305001 00625000
  638. CLC DIRNAME(3),COMNAME SHOULD HIPROG BE UPDATED ? @V305001 00626000
  639. BNE DONE4 NO, LEAVE ALONE @V305001 00627000
  640. CLC HIPROG,HIPHAS IS THIS LONGEST PHASE ? @V305001 00628000
  641. BH DONE4 NO, LEAVE ALONE @V305001 00629000
  642. MVC HIPROG,HIPHAS SET LONGEST SO FAR... @V305001 00630000
  643. DROP R1 ... @V305001 00631000
  644. DONE4 LA R0,FCHLEN WORK AREA LEN TO R0 @V305001 00632000
  645. LR R1,R6 WORK AREA TO R1 @V305001 00633000
  646. LR R15,R12 TEMP. ADDRESSABILITY @V305001 00634000
  647. DROP R12 @V305001 00635000
  648. USING DMSFCH,R15 @V305001 00636000
  649. LM R12,R14,FCHREG1 RESTORE DMSDOS REGISTERS @V305001 00637000
  650. LM R2,R7,FCHREG2 ... @V305001 00638000
  651. LR R8,R14 RETURN ADDRESS TO R8 @V305001 00639000
  652. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V305001 00640000
  653. LR R0,R10 GET DIRECTORY ADDR IN R0 @V305001 00641000
  654. LR R1,R11 GET ENTRY POINT IN R1 @V305001 00642000
  655. LR R15,R9 GET RETURN CODE @V305001 00643000
  656. LR R14,R8 GET RETURN ADDRESS @V305001 00644000
  657. BR R14 RETURN TO DMSDOS @V305001 00645000
  658. DROP R15 @V305001 00646000
  659. USING DMSFCH,R12 @V305001 00647000
  660. PHNFND OI DIRC,PNOTFND SET PHASE NOT FOUND @V305001 00648000
  661. SR R9,R9 ZERO RETURN CODE @V305001 00649000
  662. B DONE BRANCH @V305001 00650000
  663. EJECT 00651000
  664. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00652000
  665. * * 00653000
  666. * READING IS DONE FROM CMS DISKS USING O/S MACROS, * 00654000
  667. * OR FROM DOS DISKS VIA DIAGNOSE TO CP. * 00655000
  668. * * 00656000
  669. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00657000
  670. SPACE 2 00658000
  671. READ EQU * @V305001 00659000
  672. TM FCHSW,DOSREAD READING FROM DOS DISK ? @V305001 00660000
  673. BO READ2 YES, BRANCH @V305001 00661000
  674. READ FCHDECB,SF,FCHDCB,(8),(9),MF=E @V305001 00662000
  675. CHECK FCHDECB @V305001 00663000
  676. BR R10 RETURN TO CALLER @V305001 00664000
  677. EJECT 00665000
  678. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00666000
  679. * * 00667000
  680. * FOR FIRST PASS ONLY, THE CHAN PROGRAMS ARE MOVED TO * 00668000
  681. * THE ACQUIRED WORK AREA, AND ALL CCW'S ARE RELOCATED. * 00669000
  682. * * 00670000
  683. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00671000
  684. SPACE 2 00672000
  685. READ2 TM FCHSW,CCWREL CCW'S RELOCATED ? @V305001 00673000
  686. BO READ3 YES, BRANCH @V305001 00674000
  687. MVC FCHTXT(TXTLEN),TXTCCW MOVE CCW'S TO WORK AREA@V305066 00675000
  688. LA R14,FCHTXT GET FIRST CHAIN CCW'S @V305066 00676000
  689. LA R15,FCHBB GET BBCCHHR ADDRESS @V305066 00677000
  690. STCM R15,M7,1(R14) STORE ADDR PORTION CCW @V305066 00678000
  691. LA R14,8(,R14) BUMP TO NEXT CCW @V305066 00679000
  692. LA R15,FCHCHR GET CCHHR ADDRESS @V305066 00680000
  693. STCM R15,M7,1(R14) STORE ADDR PORTION CCW @V305066 00681000
  694. STCM R14,M7,9(R14) STORE ADDR PORTION CCW @V305066 00682000
  695. LA R14,16(,R14) BUMP TO NEXT CCW @V305066 00683000
  696. LA R15,FCHBUF GET BUFFER ADDRESS @V305066 00684000
  697. STCM R15,M7,1(R14) STORE ADDR PORTION CCW @V305066 00685000
  698. LA R14,8(,R14) BUMP TO NEXT CCW @V305066 00686000
  699. LA R15,FCHCHR GET CCHHR ADDRESS @V305066 00687000
  700. STCM R15,M7,1(R14) STORE ADDR PORTION CCW @V305066 00688000
  701. LA R14,FCHHDR GET SECOND CHAIN CCW'S @V305066 00689000
  702. LA R15,FCHBB GET BBCCHHR ADDRESS @V305066 00690000
  703. STCM R15,M7,1(R14) STORE ADDR PORTION CCW @V305066 00691000
  704. LA R14,8(,R14) BUMP TO NEXT CCW @V305066 00692000
  705. LA R15,FCHCHR GET CCHHR ADDRESS @V305066 00693000
  706. STCM R15,M7,1(R14) STORE ADDR PORTION CCW @V305066 00694000
  707. STCM R14,M7,9(R14) STORE ADDR PORTION CCW @V305066 00695000
  708. LA R14,16(,R14) BUMP TO NEXT CCW @V305066 00696000
  709. LA R15,DIRNAME GET KEY ADDRESS @V305066 00697000
  710. STCM R15,M7,1(R14) STORE ADDR PORTION CCW @V305066 00698000
  711. STCM R14,M7,9(R14) STORE ADDR PORTION CCW @V305066 00699000
  712. LA R14,16(,R14) BUMP TO NEXT CCW @V305066 00700000
  713. LA R15,FCHBUF GET BUFFER ADDRESS @V305066 00701000
  714. STCM R15,M7,1(R14) STORE ADDR PORTION CCW @V305066 00702000
  715. OI FCHSW,CCWREL INDICATE CCW'S RELOCATED @V305001 00703000
  716. EJECT 00704000
  717. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00705000
  718. * * 00706000
  719. * THE LABEL FCHCCWA CONTAINS THE ADDRESS OF THE CORRECT * 00707000
  720. * CHANNEL PROGRAM TO EXECUTE. LABEL FCHCUU CONTAINS THE * 00708000
  721. * VIRTUAL DEVICE ADDRESS OF THE DISK. * 00709000
  722. * * 00710000
  723. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00711000
  724. SPACE 2 00712000
  725. READ3 LH R9,FCHCUU GET VIRTUAL DEVICE ADDRESS @V305001 00713000
  726. L R0,FCHCCWA GET PROPER CHANNEL PGM @V305001 00714000
  727. XC CSW,CSW ZERO OUT CSW @V305066 00715000
  728. DC X'83900020' DIAGNOSE I/O TO CP @V305001 00716000
  729. BZR R10 RETURN CODE = 0 @V305001 00717000
  730. BM NODISK DISK NOT ATTACHED @V305001 00718000
  731. BP DSKERR I/O ERROR @V305001 00719000
  732. STH R0,SENSDATA SAVE SENSE INFO. @V305001 00720000
  733. TM SENSDATA,NOT1 ANY SENSE BITS NOT ALLOWED ? @V305066 00721000
  734. BNZ DSKERR I/O ERROR @V305001 00722000
  735. TM SENSDATA+1,NOT2 ANY MORE BITS NOT ALLOWED ? @V305066 00723000
  736. BNZ DSKERR I/O ERROR @V305001 00724000
  737. MVC SENSBYTE(1),SENSDATA SET UP SENSE BYTE @V305001 00725000
  738. OC SENSBYTE(1),SENSDATA+1 ... @V305001 00726000
  739. TM SENSBYTE,NOREC+OVFLW NO RECORD OR OVERFLOW ?@V305066 00727000
  740. BNZR R10 YES, RETURN @V305001 00728000
  741. TM SENSBYTE,EOC END OF CYLINDER ? @V305066 00729000
  742. BZR R10 NO, RETURN @V305001 00730000
  743. LH R9,FCHCHR GET CYLINDER NUMBER @V305001 00731000
  744. LA R9,1(,R9) UP IT BY ONE @V305001 00732000
  745. STH R9,FCHCHR SAVE NEW CYLINDER NUMBER @V305001 00733000
  746. SR R9,R9 ... @V305001 00734000
  747. STH R9,FCHCHR+2 RESET HEAD TO ZERO @V305001 00735000
  748. MVI FCHCHR+4,ONE AND RECORD NUMBER TO 1 @V305066 00736000
  749. TM FCHSW,DACTIVE IS THIS DIRECTORY SEARCH? @VA04754 00737000
  750. BZR R10 NO, THEN RETURN TO CALLER @VA04754 00738000
  751. B READ3 GO READ NEXT CYLINDER @VA04639 00739000
  752. EJECT 00740000
  753. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00741000
  754. * * 00742000
  755. * CHECK IF SYSCLB OR SYSRES HAS BEEN ASSIGNED. * 00743000
  756. * REG 3 = 0 MEANS UNIT NOT ASSIGNED, OTHERWISE REG 3 * 00744000
  757. * CONTAINS THE POINTER TO THE CORRECT PUB ENTRY. * 00745000
  758. * * 00746000
  759. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00747000
  760. SPACE 2 00748000
  761. TSTUNIT EQU * @V305001 00749000
  762. USING BGCOM,R1 @V305001 00750000
  763. L R1,ASYSREF GET BGCOM ADDRESS @V305001 00751000
  764. AH R3,LUBPT POINT TO CORRECT LUB ENTRY @V305001 00752000
  765. TM 0(R3),NOASSGN UNIT ASSIGNED ? @V305066 00753000
  766. BO NOTASSGN NO, BRANCH @V305001 00754000
  767. LH R3,0(,R3) LUB ENTRY TO REG 3 @V305001 00755000
  768. SRL R3,8 ISOLATE PUB POINTER @V305001 00756000
  769. SLL R3,3 MULTIPLY BY 8 @V305001 00757000
  770. AH R3,PUBPT POINT TO CORRECT PUB ENTRY @V305001 00758000
  771. LTR R3,R3 SET CONDITION CODE @V305001 00759000
  772. BR R10 RETURN TO CALLER @V305001 00760000
  773. NOTASSGN SR R3,R3 ZERO REG 3 @V305001 00761000
  774. LTR R3,R3 SET CONDITION CODE @V305001 00762000
  775. BR R10 RETURN TO CALLER @V305001 00763000
  776. DROP R1 @V305001 00764000
  777. EJECT 00765000
  778. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00766000
  779. * * 00767000
  780. * ERROR MESSAGES * 00768000
  781. * * 00769000
  782. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00770000
  783. SPACE 2 00771000
  784. NOCORE DMSERR TEXT='VIRTUAL STORAGE CAPACITY EXCEEDED',LET=S,NUM=109 00772000
  785. LA R9,RC104 RETURN CODE @V305066 00773000
  786. B DONE GET OUT @V305001 00774000
  787. SPACE 1 00775000
  788. NODISK LH R9,FCHCUU GET DISK ADDRESS @V305001 00776000
  789. DMSERR TEXT='DISK (....) NOT ATTACHED',LET=S,NUM=113, @V305001*00777000
  790. SUB=(HEX,(R9)) @V305001 00778000
  791. LA R9,RC100 RETURN CODE @V305066 00779000
  792. B DONE GET OUT @V305001 00780000
  793. ERPART DMSERR TEXT='DOS PARTITION TOO SMALL TO ACCOMMODATE FETCH REQUX00781000
  794. EST',LET=S,NUM=777 @VA04299 00782000
  795. LA R9,RC104 RETURN CODE @VA04299 00783000
  796. B DONE GET OUT @VA04299 00784000
  797. EJECT 00785000
  798. DSKERR LA R10,CSYSRES SUBSTITUTION FOR SYSRES @V305001 00786000
  799. TM FCHSW,PCILA PRIVATE CORE IMAGE LIB ? @V305001 00787000
  800. BZ DSKERR2 NO, BRANCH @V305001 00788000
  801. LA R10,CSYSCLB SUBSTITUTION FOR SYSCLB @V305001 00789000
  802. DSKERR2 LR R9,R15 ERROR CODE TO R9 @V305001 00790000
  803. DMSERR TEXT='INPUT ERROR CODE ''..'' ON ''......''',LET=S, *00791000
  804. NUM=411,SUB=(DEC,(R9),CHARA,(R10)),MF=(E,'SYS') @V305066 00792000
  805. LA R9,RC100 RETURN CODE @V305066 00793000
  806. B DONE GET OUT @V305001 00794000
  807. EJECT 00795000
  808. ERR104 LA R2,FCHDCB GET DCB ADDRESS @V305001 00796000
  809. USING IHADCB,R2 @V305001 00797000
  810. L R2,DCBDEBAD GET DEB ADDRESS @V305001 00798000
  811. DROP R2 @V305001 00799000
  812. SH R2,=AL2(IHADEB-FCBINIT) GET FCB ADDRESS @V305001 00800000
  813. USING FCBSECT,R2 @V305001 00801000
  814. LA R2,FCBDSNAM POINT TO FILEID @V305001 00802000
  815. DROP R2 @V305001 00803000
  816. LH R3,FCHDECB+2 GET RETURN CODE FROM ECB @V305001 00804000
  817. DMSERR TEXT='ERROR ''..'' READING FILE ''.................... *00805000
  818. '' FROM DISK',NUM=104,LET=S,SUB=(DEC,(R3),CHAR8A,(R2)), *00806000
  819. MF=(E,'SYS') @V305001 00807000
  820. LA R9,RC100 RETURN CODE @V305066 00808000
  821. B DONE GET OUT @V305001 00809000
  822. ERR115E EQU * @V305101 00810000
  823. DMSERR TEXT='PHASE LOAD POINT LESS THAN .....', @V305101*00811000
  824. SUB=(HEXA,AUSRAREA),NUM=115,LET=E @V305101 00812000
  825. LA R9,RC40 RETURN CODE @V305066 00813000
  826. B DONE GET OUT @V305101 00814000
  827. EJECT 00815000
  828. SYSLIB DCB DDNAME=DOSLIB,DSORG=PO,RECFM=U,BLKSIZE=1024,MACRF=R 00816000
  829. EJECT 00817000
  830. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00818000
  831. * * 00819000
  832. * CONSTANTS, EXECUTED INSTRUCTIONS AND CHANNEL PROGRAMS * 00820000
  833. * * 00821000
  834. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00822000
  835. SPACE 2 00823000
  836. DIRBLOCK DC F'34' LENGTH DIRECTORY BLOCK @V305001 00824000
  837. TXTBLOCK DC F'1024' LENGTH FULL TEXT BLOCK @V305001 00825000
  838. MASKCON DC X'0103070F' RELOCATION MASK @V305001 00826000
  839. TC2314 DC H'20' TRACKS/CYL 2314 @V305001 00827000
  840. TC3330 DC H'19' TRACKS/CYL 3330 @V305001 00828000
  841. TC3340 DC H'12' TRACKS/CYL 3340 @V305001 00829000
  842. TC3350 DC H'30' TRACKS / CYL ON 3350 @VA08343 00829500
  843. SCILCHR DC X'0000000201' SYSTEM C.I.L. POINTER @V305001 00830000
  844. FENCE DC 4X'FF' FENCE CODE @V305066 00831000
  845. IJSYSCL DC CL8'IJSYSCL' SYSCLB DDNAME @V305001 00832000
  846. CSYSRES DC CL6'SYSRES' LITERAL @V305001 00833000
  847. CSYSCLB DC CL6'SYSCLB' LITERAL @V305001 00834000
  848. DOSLIB DC CL8'DOSLIB' DOSLIB LITERAL @VA04915 00835000
  849. SPACE 1 00836000
  850. IADCON ICM R7,0,0(R2) GET ADCON VALUE @V305001 00837000
  851. SADCON STCM R7,0,0(R2) SAVE RELOCATED ADCON VALUE @V305001 00838000
  852. MOVEDIR MVC DIRNAME(*-*),0(R2) MOVE DIRECTORY TO DSECT @V305001 00839000
  853. SPACE 1 00840000
  854. TXTCCW CCW SEEK,0,CC,6 @V305001 00841000
  855. CCW SEARCH,0,CC,5 @V305001 00842000
  856. CCW TIC,0,0,1 @V305001 00843000
  857. CCW READDATA,0,CC,1024 @V305001 00844000
  858. CCW READCNT,0,0,8 @V305001 00845000
  859. SPACE 1 00846000
  860. HDRCCW CCW SEEK,0,CC,6 @V305001 00847000
  861. CCW SEARCH,0,CC,5 @V305001 00848000
  862. CCW TIC,0,0,1 @V305001 00849000
  863. CCW SRCHKE,0,CC+SLI,8 @V305001 00850000
  864. CCW TIC,0,0,1 @V305001 00851000
  865. CCW READDATA,0,0,256 @V305001 00852000
  866. SPACE 1 00853000
  867. TXTLEN EQU *-TXTCCW LENGTH OF ABOVE CCWS @V305066 00854000
  868. EJECT 00855000
  869. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00856000
  870. * * 00857000
  871. * WORK AREA DSECT (ACQUIRED FROM FREE STORAGE) * 00858000
  872. * * 00859000
  873. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00860000
  874. SPACE 2 00861000
  875. FCHSECT DSECT FETCH WORK AREA @V305001 00862000
  876. FCHREG1 DS 3F DMSDOS REGISTER SAVE @V305001 00863000
  877. FCHREG2 DS 6F DITTO @V305001 00864000
  878. DIRNAME DS CL8 PHASE NAME @V305001 00865000
  879. DIRTTR DS XL3 PHASE TTR @V305001 00866000
  880. DIRN DS XL1 NO. HALF WORDS IN DIRECTRY @V305001 00867000
  881. DIRTT DS XL2 NO. TEXT BLOCKS IN PHASE @V305001 00868000
  882. DIRLL DS XL2 LENGTH LAST TEXT BLOCK @V305001 00869000
  883. DIRC DS XL1 FLAG BYTE @V305001 00870000
  884. DIRT DS XL1 RESERVED @V305001 00871000
  885. DIRPPP DS XL3 PHASE LOAD POINT @V305001 00872000
  886. DIREEE DS XL3 PHASE ENTRY POINT @V305001 00873000
  887. DIRRR DS XL2 NUMBER RLD ITEMS IN PHASE @V305001 00874000
  888. DIRR DS XL1 NO. ADDITIONAL RLD BLOCKS @V305001 00875000
  889. DIRAAA DS XL3 PARTITION START ADDRESS @V305001 00876000
  890. DIRK DS XL1 UNUSED @V305001 00877000
  891. DIRVEE DS XL3 PHASE ENTRY POINT IN SVA @V305001 00878000
  892. DIRLEN EQU *-DIRNAME LENGTH OF DIRECTORY @V305066 00879000
  893. PHASELN DS F PHASE LENGTH @V305001 00880000
  894. PHASELD DS F PHASE LOAD POINT IN CMS @V305001 00881000
  895. PHASEEP DS F PHASE ENTRY POINT IN CMS @V305001 00882000
  896. SENSDATA DS H SENSE DATA FROM DIAGNOSE @V305001 00883000
  897. SENSBYTE DS H COMPOUNDED SENSE INFORMATION @V305001 00884000
  898. USERLD DS F USER SPECIFIED LOAD ADDR @V305001 00885000
  899. USERDE DS F DIRECTORY ADDRESS FOR DMSDOS @V305001 00886000
  900. LASTLOAD DS F END ADDRESS OF PHASE @V305001 00887000
  901. RELFACT DS F RELOCATION FACTOR SAVE @V305001 00888000
  902. RLDPTR DS F RLD POINTER SAVE @V305001 00889000
  903. FCHSW DS X FETCH FLAG BYTE @V305001 00890000
  904. FCHTYP DS X DASD DEVICE TYPE @V305001 00891000
  905. FCHCUU DS H VIRTUAL DEVICE ADDR FOR DIAGNOSE @V305001 00892000
  906. FCHBB DS H BB OF BBCCHHR @V305001 00893000
  907. FCHCHR DS 2H CCHH TO SEEK/SEARCH @V305001 00894000
  908. FCHR DS 2H RECORD NUMBER @V305001 00895000
  909. FCHORG DS F ORIGIN CCHH OF LIBRARY @V305001 00896000
  910. FCHCCWA DS F ADDRESS CURRENT CHANNEL PGM @V305001 00897000
  911. FCHTXT DS 5D CCW'S TO READ TEXT BLOCKS @V305001 00898000
  912. FCHHDR DS 6D CCW'S TO READ DIRECTORY @V305001 00899000
  913. FCHDCB DS XL100 DOSLIB DCB @V305066 00900000
  914. FCHDECB DS 20X DOSLIB DECB @V305001 00901000
  915. FCHSAVE DS 18F O/S SAVE AREA @V305001 00902000
  916. FCHBUFE DS F END OF WORK BUFFER @V305001 00903000
  917. FCHBUF DS 1024X FETCH WORK BUFFER @V305001 00904000
  918. FCHEND DS 0D @V305001 00905000
  919. FCHLEN EQU (FCHEND-FCHSECT)/8 @V305001 00906000
  920. PHNAME EQU (DIRNAME-FCHSECT) @V305001 00907000
  921. ORG FCHBUF STATE DOSLIB PLIST @VA04915 00908000
  922. STDOSLST DS D @VA04915 00909000
  923. STDOSNM DS D @VA04915 00910000
  924. STDOSFT DS D @VA04915 00911000
  925. STDOSEND DS D @VA04915 00912000
  926. EJECT 00913000
  927. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00914000
  928. * * 00915000
  929. * IMPORTANT EQUATES * 00916000
  930. * * 00917000
  931. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00918000
  932. SPACE 2 00919000
  933. * EQUATES FOR DIRC FLAG 00920000
  934. SELFREL EQU X'80' PHASE SELF RELOCATABLE @V305001 00921000
  935. RELPHSE EQU X'40' PHASE TO BE RELOCATED @V305001 00922000
  936. SVAELIG EQU X'20' PHASE SVA ELIGIBLE @V305001 00923000
  937. SVAPHSE EQU X'10' PHASE IN SVA @V305001 00924000
  938. PCLPHSE EQU X'08' PHASE IN PRIV C.I.L. @V305001 00925000
  939. PNOTFND EQU X'04' PHASE NOT FOUND @V305001 00926000
  940. DACTIVE EQU X'02' PHASE DIRECTORY ACTIVE @V305001 00927000
  941. NOTEXT EQU X'01' TEXT = NO SPECIFIED @V305001 00928000
  942. SPACE 1 00929000
  943. * EQUATES FOR FCHSW FLAG 00930000
  944. DOSREAD EQU X'80' READING FROM LIVE DOS DISK @V305001 00931000
  945. PCILA EQU X'40' SEARCHING IN PRIV. C.I.L. @V305001 00932000
  946. CCWREL EQU X'20' CCW 'S ARE RELOCATED @V305001 00933000
  947. * EQU X'01' RESERVED FOR TEXT = NO 00934000
  948. * EQU X'02' RESERVED FOR DIRECTORY ACTIVE 00935000
  949. * EQU X'04' RESERVED FOR PHASE NOT FOUND 00936000
  950. * EQU X'08' DO NOT USE 00937000
  951. SPACE 1 00938000
  952. * EQUATES FOR CHANNEL PROGRAMS 00939000
  953. SEEK EQU X'07' SEEK COMMAND CODE @V305001 00940000
  954. SEARCH EQU X'31' SEARCH ID COMMAND CODE @V305001 00941000
  955. TIC EQU X'08' TIC COMMAND CODE @V305001 00942000
  956. READDATA EQU X'06' READ DATA COMMAND CODE @V305001 00943000
  957. READCNT EQU X'92' READ COUNT COMMAND CODE @V305001 00944000
  958. SRCHKE EQU X'E9' SEARCH KEY EQUAL COMMAND CODE @V305001 00945000
  959. CC EQU X'40' COMMAND CHAIN FLAG @V305001 00946000
  960. SLI EQU X'20' SILI CCW FLAG @V305001 00947000
  961. SPACE 1 00948000
  962. * EQUATES FOR LOGICAL UNITS AND DEVICES 00949000
  963. SYSRES EQU X'0C' SYSRES LUB INDEX * 2 @V305001 00950000
  964. SYSCLB EQU X'16' SYSCLB LUB INDEX * 2 @V305001 00951000
  965. T2314 EQU X'62' 2314 DEVICE TYPE @V305001 00952000
  966. T3330 EQU X'63' 3330 DEVICE TYPE @V305001 00953000
  967. MOD11 EQU X'65' 3330-11 DEVICE TYPE @VA08343 00953100
  968. T3350 EQU X'67' 3350 DEVICE TYPE @VA08343 00953200
  969. T3340 EQU X'68' 3340 DEVICE TYPE @V305001 00954000
  970. EJECT 00955000
  971. * EQUATES FOR SENSE INFORMATION 00956000
  972. CMDREJ EQU X'80' COMMAND REJECT @V305066 00957000
  973. INTREQ EQU X'40' INTERVENTION REQ. @V305066 00958000
  974. BUSOUT EQU X'20' BUS. OUT @V305066 00959000
  975. EQCHK EQU X'10' EQUIPMENT CHECK @V305066 00960000
  976. DATACHK EQU X'08' DATA CHECK @V305066 00961000
  977. OVERUN EQU X'04' OVER RUN @V305066 00962000
  978. TRKCHK EQU X'20' TRACK CONDITION CHECK @V305066 00963000
  979. SEEKCHK EQU X'01' SEEK CHECK @V305066 00964000
  980. NOT1 EQU CMDREJ+INTREQ+BUSOUT+EQCHK+DATACHK+OVERUN+SEEKCHK 00965000
  981. * 00966000
  982. CNTCHK EQU X'80' DATA CHECK IN COUNT @V305066 00967000
  983. TRKOVFLW EQU X'40' TRACK OVERFLOE @V305066 00968000
  984. EOC EQU X'20' END OF CYLINDER @V305066 00969000
  985. INVSEQ EQU X'10' INVALID SEQUENCE @V305066 00970000
  986. NOREC EQU X'08' NO RECORD FOUND @V305066 00971000
  987. FILEPROT EQU X'04' FILE PROTECTED @V305066 00972000
  988. SOVERUN EQU X'02' SERVICE OVER RUN @V305066 00973000
  989. OVFLW EQU X'01' OVERFLOW @V305066 00974000
  990. NOT2 EQU CNTCHK+TRKOVFLW+INVSEQ+SOVERUN @V305066 00975000
  991. SPACE 1 00976000
  992. * OTHER EQUATES 00977000
  993. ZERO EQU X'00' CONSTANT @V305066 00978000
  994. ONE EQU X'01' CONSTANT @V305066 00979000
  995. EIGHT EQU X'08' CONSTANT @V305066 00980000
  996. TEN EQU X'0A' CONSTANT @V305066 00981000
  997. TWELVE EQU X'0C' CONSTANT @V305066 00982000
  998. FIFTEEN EQU X'0F' CONSTANT @V305066 00983000
  999. M7 EQU B'0111' ICM/STCM MASK @V305066 00984000
  1000. M15 EQU B'1111' ICM/STCM MASK @V305066 00985000
  1001. RENT EQU X'80' RENT OPTION BIT @V305066 00986000
  1002. OPNOK EQU X'10' DCBOFLGS OPEN BIT @V305066 00987000
  1003. TRANSLN EQU 1400 SIZE OF THE DOS LTA @VA08226 00988100
  1004. NOASSGN EQU X'FE' LUB VALUE FOR NOT ASSIGNED @V305066 00989000
  1005. SPACE 1 00990000
  1006. * EQUATES FOR RETURN CODES 00991000
  1007. RC28 EQU 28 RETURN CODE @VA04898 00992000
  1008. RC40 EQU 40 RETURN CODE @V305066 00993000
  1009. RC100 EQU 100 RETURN CODE @V305066 00994000
  1010. RC104 EQU 104 RETURN CODE @V305066 00995000
  1011. EJECT 00996000
  1012. NUCON @V305001 00997000
  1013. DCBD DSORG=PS @V305001 00998000
  1014. EJECT 00999000
  1015. CMSCB @V305001 01000000
  1016. OSFST @V305001 01001000
  1017. BGCOM @V305001 01002000
  1018. ANCHTAB @VA04299 01003000
  1019. REGEQU @V305001 01004000
  1020. DMSFCH CSECT @V305001 01005000
  1021. LTORG @V305001 01006000
  1022. END 01007000