Table of Contents

DMSSTT Source

References

Source Listing

DMSSTT.ASSEMBLE.txt
  1. STT TITLE 'DMSSTT (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00004000
  5. * 00005000
  6. * 00006000
  7. * 00007000
  8. * MODULE NAME: 00008000
  9. * 00009000
  10. * DMSSTT 00010000
  11. * 00011000
  12. * FUNCTION: 00012000
  13. * 00013000
  14. * TO LOCATE THE FILE STATUS TABLE ENTRY FOR A GIVEN 00014000
  15. * FILE, AND IF FOUND TO PROVIDE THE CALLER WITH A COPY 00015000
  16. * THEREOF. 00016000
  17. * 00017000
  18. * ATTRIBUTES: 00018000
  19. * 00019000
  20. * NUCLEUS RESIDENT, REENTRANT 00020000
  21. * 00021000
  22. * ENTRY POINTS: 00022000
  23. * 00023000
  24. * DMSSTTE - (STATE) 00024000
  25. * DMSSTTW - (STATEW) 00025000
  26. * 00026000
  27. * ENTRY CONDITIONS: 00027000
  28. * 00028000
  29. * LA R1, PLIST R1 MUST POINT TO P-LIST AS USUAL 00029000
  30. * 00030000
  31. * THEN EITHER 00031000
  32. * 00032000
  33. * SVC X'CA' CALL STATE VIA SVC 00033000
  34. * DC AL4(NOT FOUND) ERROR-RETURN (IF NOT FOUND) 00034000
  35. * 00035000
  36. * OR 00036000
  37. * 00037000
  38. * L R15, ASTATE WHERE ASTATE=V(STATE) 00038000
  39. * BALR R14,R15 CALL STATE VIA BALR 00039000
  40. * BNZ NOTFOUND TRANSFER IF ERROR (NOT FOUND) 00040000
  41. * 00041000
  42. * 00042000
  43. * R1 MUST POINT TO STATE PARAMETER LIST: 00043000
  44. * 00044000
  45. * DS 0F 00045000
  46. * PLIST DC CL8'STATE' (NOTE-IMMATERIAL IF CALLED BY BALR) 00046000
  47. * DC CL8' ' FILENAME 00047000
  48. * DC CL8' ' FILETYPE 00048000
  49. * DC CL2' ' FILEMODE 00049000
  50. * DC CL2' ' NOT USED 00050000
  51. * ADCON DC A(*-*) ADDRESS OF COPY OF FST ENTRY RETURNED 00051000
  52. * HERE IF FILE WAS FOUND. IF THIS V0409 00052100
  53. * CONTAINS **** AT ENTRY TO STATE V0409 00052200
  54. * THEN * WILL BE INVALID CHAR. IN V0409 00052300
  55. * FILENAME OR FILETYPE V0409 00052400
  56. * 00053000
  57. * EXIT CONDITIONS: 00054000
  58. * 00055000
  59. * FILE FOUND 00056000
  60. * R15=0 (AND CONDITION-CODE=0) 00057000
  61. * ALSO,ADCON IN P-LIST FILLED IN TO V(STATEFST) 00058000
  62. * 00059000
  63. * FILE NOT FOUND 00060000
  64. * R15=20 ILLEGAL CHARACTER IN FILEID 00061000
  65. * 24 INVALID FILE MODE 00062000
  66. * INVALID PARAMETER (TERMINAL REQUESTS ONLY) 00063000
  67. * INCOMPLETE FILEID (TERMINAL REQUESTS ONLY) 00064000
  68. * 28 FILE NOT FOUND 00065000
  69. * 36 DISK MODE NOT ACCESSED 00066000
  70. * 80 I/O ERROR ACCESSING OS DATA SET 00066050
  71. * 81 OS READ PASSWORD PROTECTED DATA SET 00066100
  72. * 82 DATA SET ORGANIZATION IS NOT BSAM, 00066150
  73. * QSAM OR BPAM 00066200
  74. * 83 DATA SET HAS MORE THAN 16 EXTENTS 00066250
  75. * 00067000
  76. * CALLS TO OTHER ROUTINES: 00068000
  77. * 00069000
  78. * DMSLAF,DMSLFS,DMSLAD,DMSERR 00070000
  79. * 00071000
  80. * EXTERNAL REFERENCES 00072000
  81. * 00073000
  82. * ADTSECT,AFTSECT,FVSECT,DMSNUC,FSTSECT,OSFST 00074000
  83. * 00075000
  84. * TABLES/WORKAREAS 00076000
  85. * 00077000
  86. * NONE 00078000
  87. * 00079000
  88. * REGISTER USAGE 00080000
  89. * 00081000
  90. * R13 FVSECT 00082000
  91. * R1,R3 FSTSECT 00083000
  92. * R1,R3 FSTSECT 00084000
  93. * R4 ADTSECT 00085000
  94. * REST WORK 00086000
  95. * 00086100
  96. * NOTES: 00086150
  97. * 00086200
  98. * | "STATE/STATEW" IS TREATED AS A "COMMAND" OR A "FUNCTION" 00086250
  99. * | ACCORDING TO THE HIGH-ORDER BYTE OF R1 AT INPUT, VIZ: 00086300
  100. * | IF = X'0C', IT WAS ISSUED AS A COMMAND FROM DMSINT. 00086350
  101. * | IF = X'0D', IT WAS ISSUED FROM AN EXEC FILE (DMSEXT), 00086400
  102. * | WITH "&CONTROL" SET TO EITHER "CMS" OR "ALL". 00086450
  103. * | IF = X'0E', IT WAS ISSUED FROM AN EXEC FILE (DMSEXT), 00086500
  104. * | WITH "&CONTROL OFF" IN EFFECT. 00086550
  105. * | IF < X'0C' OR > X'0E', IT IS ASSUMED TO BE A FUNCTION, 00086600
  106. * | I.E. CALLED FROM ANOTHER PROGRAM. 00086650
  107. * 00086700
  108. * | FOR STATE/STATEW CALLED AS A COMMAND (EITHER FROM THE 00086750
  109. * | TERMINAL OR FROM AN EXEC FILE), A CHECK IS MADE THAT 00086800
  110. * | THE MODE (IF GIVEN) IS NO MORE THAN TWO CHARACTERS. 00086850
  111. * 00086900
  112. * | FOR STATE/STATEW CALLED AS A COMMAND FROM THE TERMINAL, 00086950
  113. * | A CHECK IS ALSO MADE THAT NO ADDITIONAL (EXTRANEOUS) 00087000
  114. * | PARAMETERS (FOLLOWING THE FILE MODE) ARE PRESENT. 00087050
  115. * | (THIS CHECK IS PURPOSELY OMITTED IF STATE/STATEW IS 00087100
  116. * | CALLED FROM AN EXEC FILE, SO THAT ADDITIONAL PARAMETERS 00087150
  117. * | FROM A STANDARD CMS EXEC FILE CREATED BY LISTFILE WILL 00087200
  118. * | NOT CAUSE STATE/STATEW TO FAIL.) 00087250
  119. * 00087300
  120. * | FOR STATE/STATEW CALLED AS A FUNCTION (OR FROM AN EXEC FILE 00087350
  121. * | WITH "&CONTROL OFF" IN EFFECT), THE "FILE NOT FOUND" 00087400
  122. * | AND THE "DISK NOT ACCESSED" ERROR MESSAGES 00087450
  123. * ARE NOT ISSUED. ALL OTHER MESSAGES 00087470
  124. * | ARE GIVEN IRRESPECTIVE OF WHETHER STATE/STATEW WAS CALLED 00087500
  125. * | AS A COMMAND OR AS A FUNCTION. 00087550
  126. * 00087600
  127. * OPERATION: 00088000
  128. * 00089000
  129. * DMSSTT CHECKS THE FILE NAME AND FILE TYPE 00090000
  130. * FOR ILLEGAL CHARACTERS AND RETURNS IF ONE IS 00091000
  131. * FOUND. THEN CHECK FOR VALID MODE SPECIFICATION 00092000
  132. * IF INVALID RETURN. IF A MODE LETTER WAS GIVEN 00093000
  133. * CALL DMSLAD TO FIND ADT. RETURN IF DISK IS NOT 00094000
  134. * ACCESSED. 00095000
  135. * 00096000
  136. * DMSSTTE CALLS DMSLAF TO SEE IF THE GIVEN FILE IS IN 00097000
  137. * THE ACTIVE FILE TABLE. 00098000
  138. * IF FOUND, THE ACTIVE 40-BYTE FST ENTRY IS MOVED FROM 00099000
  139. * AFTFST IN THE AFT BLOCK TO THE COPY AT STATEFST TO BE 00100000
  140. * PROVIDED TO THE CALLER, AND THE STATER0 AND STATER1 00101000
  141. * WORDS FOLLOWING STATEFST ARE SET TO THE ADDRESSES OF 00102000
  142. * THE ADT BLOCK AND THE FST ENTRY RESPECTIVELY; THEN 00103000
  143. * V(STATEFST) IS STORED IN THE CALLER'S P-LIST (IF 00104000
  144. * NECESSARY) AS DESCRIBED BELOW. 00105000
  145. * 00106000
  146. * IF THE FILE WAS NOT FOUND BY DMSLAF, DMSSTTE THEN 00107000
  147. * CALLS DMSLFS TO FIND THE GIVEN FILE. IF NOT FOUND BY 00108000
  148. * DMSLFS, THE ERROR CODE FROM DMSLFS (28 FOR FILE NOT 00109000
  149. * FOUND) IS RETURNED TO THE CALLER AS SHOWN IN THE EXIT 00110000
  150. * CONDITIONS. 00111000
  151. * 00112000
  152. * IF THE FILE WAS FOUND BY DMSLFS, THEN THE 40-BYTE 00113000
  153. * ENTRY IS MOVED TO STATEFST, AND 00114000
  154. * THE R0 AND R1 VALUES OBTAINED FROM DMSLFS ARE STORED 00115000
  155. * AT THE STATER0 AND STATER1 00116000
  156. * WORDS FOLLOWING STATEFST. (THESE WORDS ARE USED BY 00117000
  157. * RDBUF TO AVOID AN EXTRA 00118000
  158. * SEARCH OF THE FST TABLES UNDER THE CIRCUMSTANCES 00119000
  159. * GIVEN IN THE DMSBRD DESCRIPTION). 00120000
  160. * WHERE THE FILE WAS FOUND BY FSTLKP, THE MODE LETTER 00121000
  161. * IS STORED IN THE STATEFST COPY 00122000
  162. * USING THE SAME ALGORITHM AS DMSLAFFE, BEING CAREFULLY 00123000
  163. * CHOSEN FROM THAT OF THE CALLER'S 00124000
  164. * PARAMETER LIST, OR THE ADTM OR ADTMX MODE GIVEN BY 00125000
  165. * THE ACTIVE DISK TABLE. 00126000
  166. * 00127000
  167. * THE RESULT OF THE CHOICE OF MODE-LETTER FACILITATES 00128000
  168. * THE FEATURE OF A READ-ONLY EXTENSION OF A GIVEN DISK. 00129000
  169. * FOR EXAMPLE, IF A B-DISK IS A READ-ONLY EXTENSION OF 00130000
  170. * A A-DISK, IF THE CALLER'S PARAMETER LIST SPECIFIED 00131000
  171. * THE B-MODE, THE MODE STORED IN STATEFST WILL BE B; 00132000
  172. * BUT IF THE CALLER SPECIFIED A OR '*', THE MODE STORED 00133000
  173. * IN STATEFST WILL BE A. 00134000
  174. * 00135000
  175. * AFTER SETTING UP STATEFST AND THE TWO WORDS THAT 00136000
  176. * FOLLOW, AS DESCRIBED DMSSTT STORES THE ADDRESS OF 00137000
  177. * STATEFST IN THE CALLER'S P-LIST (UNLESS IT IS ALREADY 00138000
  178. * THERE), AND RETURNS TO THE CALLER AS SHOWN IN THE 00139000
  179. * EXIT CONDITIONS. 00140000
  180. * 00141000
  181. * Also fill in various members in an extended STATEFST. HRC105DS 00141100
  182. * This is done for compatibility with later software HRC105DS 00141200
  183. * which targets VM/SP, however, it is not possible to HRC105DS 00141300
  184. * use the greater capacity of some of these counters HRC105DS 00141400
  185. * with 800 byte disk blocks which are limited to 40 HRC105DS 00141500
  186. * byte FSTs and cannot accomodate the larger values. HRC105DS 00141600
  187. *. 00142000
  188. EJECT 00143000
  189. DMSSTTE START 0 CHECK BOTH READ AND READ/WRITE DISKS 00144000
  190. ENTRY DMSSTTW,STATEW,STATE 00145000
  191. STATE EQU DMSSTTE 00146000
  192. USING NUCON,R0 00147000
  193. FSENTR REGSAV3 ENTER 'STATE', SAVE REGISTERS 00148000
  194. L R10,=V(DMSLFS) A(FSTLKP) FOR 'STATE' 00149000
  195. LA R12,BALR12 COMMON ADDRESSABILITY, 00150000
  196. USING BALR12,R12 ... 00151000
  197. B JOIN JOIN FORCES WITH 'STATEW'. 00152000
  198. DROP R12,R13 00153000
  199. SPACE 2 00154000
  200. DMSSTTW DS 0H 00155000
  201. STATEW EQU DMSSTTW 00156000
  202. FSENTR REGSAV3 00157000
  203. BALR12 EQU * (COMMON ADDRESSABILITY HERE) 00158000
  204. L R10,=V(DMSLFSW) A(FSTLKW) FOR 'STATEW' 00159000
  205. JOIN LA R3,0(0,R1) SAVE PLIST ADR 00160000
  206. CLI REGSAV3+4,X'0C' COMMAND OR FUNCTION ? @VA01154 00161100
  207. BL NOCHECK FUNCTION: OMIT FILE-MODE CHECKS @VA01154 00161200
  208. CLI REGSAV3+4,X'0E' CHECK FURTHER (0C/0D/0E)... @VA01154 00161300
  209. BH NOCHECK FUNCTION: OMIT FILE-MODE CHECKS @VA01154 00161400
  210. * STATE/STATEW ISSUED AS A COMMAND FROM TERMINAL OR FROM AN EXEC FILE: 00161500
  211. CLI 8(R3),X'FF' FNAME SPECIFIED 00163000
  212. BE ERR054E NO, ERROR 00164000
  213. CLI 16(R3),X'FF' FTYPE SPECIFIED 00165000
  214. BE ERR054E NO, ERROR 00166000
  215. CLI 24(R3),X'FF' MODE SPECIFIED 00167000
  216. BE NOCHECK NO, PLIST OK 00168000
  217. CLI 26(R3),C' ' IS MODE LONGER THAN TWO CHARS. 00169000
  218. BNE ERR048E YES, ERROR 00170000
  219. CLI 32(R3),X'FF' ANY EXTRA PARAMETERS 00171000
  220. BE NOCHECK NOPE ("FENCE" IS THERE) - OK. @VA01154 00172100
  221. CLI REGSAV3+4,X'0C' WAS IT FROM TERMINAL OR EXEC ? @VA01154 00172200
  222. BE ERR070E FROM TERMINAL - IT'S AN "ERROR" @VA01154 00172300
  223. NOCHECK LA R5,7(,R1) SET END OF SCAN 00173000
  224. LA R2,8(,R1) SCAN FILENAME FOR INVALID CHARS 00174000
  225. BALR R9,0 SET TO ITERATE TWICE 00175000
  226. LA R5,8(,R5) ADJUST END OF SCAN PTR 00176000
  227. CLC 28(4,R3),=4C'*' SHOULD * BE INVALID V0409 00176100
  228. BE TEST YES V0409 00176200
  229. CLC 0(8,R2),=CL8'*' STATE ALL FNAMES OR FTYPES 00177000
  230. BNE TEST NO, CHECK FNAME (OR FTYPE) 00178000
  231. LA R2,8(,R2) GET OVER FNAME (OR FTYPE) 00179000
  232. B BALR99 LOOK AT FTYPE (OR FMODE) 00180000
  233. TEST L R6,=V(INVTBL) TRANSLATE TABLE FOR INVALID CHARS. P3074 00181000
  234. TRT 0(8,R2),0(R6) LOOK FOR INVALID CHARS 00182000
  235. BZ BALR99 NO INVALID CHARS. 00183000
  236. LR R2,R1 CHECK FOR IMBEDDED BLANKS 00184000
  237. ENDSCAN CLI 0(R2),X'40' BLANK 00185000
  238. BNE ERR062E NO, INVALID CHARACTER 00186000
  239. LA R2,1(,R2) NEXT CHAR 00187000
  240. CR R2,R5 END OF FNAME OR FTYPE 00188000
  241. BC 12,ENDSCAN NO 00189000
  242. BALR99 LA R2,1(R5) INSURE R2 POINTS TO NEXT @VA02470 00190300
  243. BALR R9,R9 FIELD, WONT IF NO BLNK IN FN@VA02470 00190600
  244. OK CLI 24(R3),C'A' COMPARE MODE LETTER WITH 'A' 00191000
  245. BL SPCCHK LOWER THAN 'A' 00192000
  246. CLI 24(R3),C'I' COMPARE MODE LETTER WITH 'I' HRC002DS 00193690
  247. BNH OK1 MODE OK (A-I) HRC002DS 00194380
  248. CLI 24(R3),C'J' COMPARE MODE LETTER WITH 'J' HRC002DS 00195070
  249. BL ERR048E MODE BAD(< J) HRC002DS 00195760
  250. CLI 24(R3),C'R' COMPARE MODE LETTER WITH 'R' HRC002DS 00196450
  251. BNH OK1 MODE OK (J-R) HRC002DS 00197140
  252. CLI 24(R3),C'S' COMPARE MODE LETTER WITH 'S' HRC002DS 00197830
  253. BL ERR048E MODE BAD(< S) HRC002DS 00198520
  254. CLI 24(R3),C'Z' COMPARE WITH 'Z' HRC002DS 00199210
  255. BNH OK1 MODE OK IF BTWEEN A AND Z HRC002DS 00199900
  256. CLI 24(R3),X'FF' NO FMODE SPEC 00201000
  257. BE OK2 YES 00202000
  258. B ERR048E ANYTHING ELSE IS AN ERROR HRC002DS 00202500
  259. SPCCHK CLI 24(R3),X'00' MODE = BINARY ZERO 00203000
  260. BE OK2 YES 00204000
  261. CLC 24(2,R3),=CL2'*' ALL FMODES 00205000
  262. BE OK2 YES 00206000
  263. CLC 24(2,R3),=CL2' ' BLANK FMODE 00207000
  264. BNE ERR048E IT MUST BE INVALID 00208000
  265. B OK2 OMIT MODE NUMBER CHECK 00209000
  266. OK1 CLI 25(R3),C' ' MODE NUMBER BLANK 00210000
  267. BE OK1A YES 00211000
  268. CLI 25(R3),C'0' COMPARE WITH ZERO 00212000
  269. BL ERR048E 00213000
  270. CLI 25(R3),C'5' 00214000
  271. BH ERR048E INVALID MODE NUMBER 00215000
  272. OK1A LR R1,R3 00216000
  273. L R15,=V(DMSLAD) SEE IF DISK IS ACCESSED @V305665 00217100
  274. BALR R14,R15 00218000
  275. BNZ ERR069E NOT ACCESSED 00219000
  276. USING ADTSECT,R1 00220000
  277. TM ADTFLG2,ADTFROS OS DISK @V201105 00220100
  278. BZ OK1B TRF IF NOT @VA14295 00220120
  279. CLM R10,7,VCFSTLKW+1 WAS THIS A STATEW CALL? @VA14295 00220140
  280. BNE OK2 TRF IF NOT @VA14295 00220160
  281. TM ADTFLG3,ADTFRWOS READ/WRITE OS DISK? @VA14295 00220180
  282. BO OK2 YES, OK @V201105 00220200
  283. LR R5,R3 ERROR - SET UP R5 @VA14295 00221000
  284. B ERR002E @VA14295 00221300
  285. OK1B TM ADTFLG1,ADTFRO+ADTFRW IS DISK ACCESSED @VA14295 00221600
  286. DROP R1 00222000
  287. BZ ERR069E NO, ERROR 00223000
  288. OK2 LR R1,R3 00224000
  289. LR R2,R3 00225000
  290. LA R3,STATEFST LET R3 POINT TO 'STATEFST' (NEED LATER) 00226000
  291. SR R0,R0 INITIALIZE R0 AND 00227000
  292. L R15,AACTLKP CALL 'ACTLKP' TO SEE IF IN 00228000
  293. BALR R14,R15 ACTIVE-FILE-TABLE 00229000
  294. BNZ LR1510 BNZ IF NOT. 00230000
  295. USING AFTSECT,R1 IF FOUND, REFERENCE ACTIVE-FILE-TABLE, 00231000
  296. L R0,AFTADT LET R0 POINT TO ACTIVE-DISK-TABLE, 00232000
  297. LA R15,FSTFAW MAYBE AN ACTIVE WRITE ? 00233000
  298. TM AFTFLG,AFTWRT ... 00234000
  299. BO JS2 TRF IF YES (R15 ALL SET - NO PROBLEMS). 00235000
  300. C R10,=V(DMSLFSW) WAS THIS A STATEW CALL? 00236000
  301. BNE JS1 TRF IF NOT (NO PROBLEM) 00237000
  302. LR R4,R0 IF STATEW CALL, CHECK 00238000
  303. USING ADTSECT,R4 ACTIVE-DISK-TABLE 00239000
  304. TM ADTFLG1,ADTFRW MAKE SURE THIS IS A READ-WRITE-DISK 00240000
  305. BZ JS3 IF NOT, RESTORE R1 & CALL FSTLKW INSTEAD. 00241000
  306. DROP R4 00242000
  307. JS1 LA R15,FSTFAR PROBABLY AN ACTIVE READ ? 00243000
  308. TM AFTFLG,AFTRD ... 00244000
  309. BO JS2 TRF IF YES (ALL SET). 00245000
  310. LA R15,FSTFAP IF NEITHER, MUST BE AN ACTIVE POINT. 00246000
  311. JS2 LA R1,AFTFST POINT R1 TO FST-BLOCK IN ACTIVE-FILE-TABLE 00247000
  312. B JS4 JOIN CODE BELOW. 00248000
  313. DROP R1 00249000
  314. * 00250000
  315. JS3 LR R1,R2 RESTORE R1 FOR SPECIAL CASE, AND: 00251000
  316. * 00252000
  317. LR1510 LR R15,R10 A(FSTLKP) OR A(FSTLKW) INTO R15, AND 00253000
  318. LR R5,R1 SAVE IN CASE ERROR 00254000
  319. BALR R14,R15 CALL FSTLKP OR FSTLKW 00255000
  320. ENTRY DMSSTTR @V201105 00256100
  321. DMSSTTR LTR R15,R15 CHECK RETURN CODE @V201105 00256110
  322. BZ JS4 FOUND SOMETHING @V201105 00256120
  323. CH R15,=H'79' CHECK FOR UNSUPPORTED OS DATASET @V201105 00256130
  324. BH ERR229 BRANCH IF SO @V201105 00256140
  325. B ERR002E CMS FILE NOT FOUND @V201105 00256150
  326. USING FSTSECT,R3 REFERENCE FST-BLOCK IN 'STATEFST', 00257000
  327. JS4 LR R4,R0 REFERENCE ACTIVE-DISK-TABLE 00258000
  328. USING ADTSECT,R4 ... 00259000
  329. TM ADTFLG2,ADTFROS OS DISK @V201105 00259010
  330. BNO CMSJS4 NO @V201105 00259020
  331. USING OSFST,R1 @V201105 00259030
  332. MVC FVSFSTN(16),8(R2) SET FNAME FTYPE IN FST COPY @V201105 00259040
  333. XC FVSFSTDT(FVSFSTAD-FVSFSTDT),FVSFSTAD @V201105 00259050
  334. * CLEAR OS FST COPY AREA @V201105 00259060
  335. MVC FVSFSTM(OSFSTFLG-OSFSTFM),OSFSTFM MOVE OS PARTS @V201105 00259070
  336. DROP R1 @V201105 00259080
  337. B SETFSTFB CONTINUE BELOW @V201105 00259090
  338. CMSJS4 EQU * @V201105 00259100
  339. MVC STATEFST(40),0(R1) COPY 'FST ENTRY' INTO 'STATEFST' 00260000
  340. XC FVSFSTAB+0(2),FVSFSTAB Clear top half of word HRC105DS 00260005
  341. MVC FVSFSTAB+2(2),FVSFSTDB Store alt. block count HRC105DS 00260010
  342. XC FVSFSTAI+0(2),FVSFSTAI Clear top half of word HRC105DS 00260015
  343. MVC FVSFSTAI+2(2),FVSFSTIC Store alt. item count HRC105DS 00260020
  344. PACK FVSFSTAT(2),FVSFSTYR(3) Put year into 1st byte HRC105DS 00260025
  345. MVC FVSFSTAT+1(4),FVSFSTDT Rest of date and time HRC105DS 00260030
  346. MVI FVSFSTAT+5,X'29' Pull seconds from thin air HRC105DS 00260035
  347. * Somebody fix this properly before 2070. HRC105DS 00260040
  348. CLI FVSFSTAT,X'69' Is year greater than 69? HRC105DS 00260045
  349. BH LASTCENT Year is probably 1970-1999 then HRC105DS 00260050
  350. O R15,=F'8' Set flag bit for 21st century HRC105DS 00260055
  351. LASTCENT EQU * HRC105DS 00260060
  352. SETFSTFB EQU * COMMON FST COPY SET @V201105 00260100
  353. STC R15,FSTFB AND STORE 00, OR FLAG COMPUTED ABOVE. 00261000
  354. STM R0,R1,STATER0 SAVE ADDRESSES OF ADT AND FST BLOCKS 00262000
  355. IC R5,ADTM TENTATIVELY CHOOSE PRIMARY MODE LETTER 00263000
  356. LA R6,FSTFRW AND READ-WRITE DISK FLAG-BIT 00264000
  357. TM ADTFLG1,ADTFRW IS IT A READ/WRITE DISK ? 00265000
  358. BO JS6 TRF IF YES, GO FINIS UP. 00266000
  359. LA R6,FSTFRO TENTATIVELY CHOOSE READ-ONLY FLAG-BIT, 00267000
  360. CLI ADTMX,C' ' CHECK EXTENSION-MODE-LETTER 00268000
  361. BE JS6 TRF IF BLANK, GO FINISH UP. 00269000
  362. CLC ADTM,PRMODE(R2) DID CALLER SPECIFY THIS VERY DISK ? 00270000
  363. BE JS5 TRF IF YES - STAY WITH PRIMARY LETTER. 00271000
  364. IC R5,ADTMX CHOOSE EXTENSION LETTER IF NONE OF ABOVE. 00272000
  365. JS5 LA R6,FSTFRWX TENTATIVELY CHOOSE EXT. OF R/W DISK FLAG 00273000
  366. LA R1,ADTMX-24 POINT TO DISK IT'S AN EXTENSION OF, 00274000
  367. L R15,=V(DMSLADW) CALL 'ADTLKW' TO SEE IF A RW DISK 00275000
  368. BALR R14,R15 ... 00276000
  369. BZ JS6 TRF IF YES (WE'RE ALL SET). 00277000
  370. LA R6,FSTFROX IF NOT, CALL IT R/O EXT. OF R/O DISK. 00278000
  371. * 00279000
  372. JS6 STC R5,FSTM STORE CAREFULLY-CHOSEN MODE-LETTER, 00280000
  373. O R6,FSTFB-3 AND 'OR' IN THE FLAG-BITS 00281000
  374. ST R6,FSTFB-3 INTO THE STATEFST FLAG-BYTE (FSTFB). 00282000
  375. SR R15,R15 CLEAR R15 FOR NORMAL RETURN 00283000
  376. CL R3,PRETN(,R2) NECESSARY TO STORE A(STATEFST) ? @VA01154 00283100
  377. BE EXITLM NO - EXIT FORTHWITH (C.C. = 0) @VA01154 00283200
  378. * (AVOIDING NEEDLESS SETTING OF CHANGE-BIT, 00283300
  379. * AND POSSIBLE CP PROTECTION-KEY THRASHING) 00283400
  380. ST R3,PRETN(,R2) BUT DO STORE A(STATEFST) IF WE MUST. 00284000
  381. EXIT LTR R15,R15 SET COND. CODE FROM RETURN-CODE, @VA01154 00285100
  382. EXITLM LM R0,R14,REGSAV3 RESTORE THE OTHER REGISTERS, @VA01154 00286100
  383. BR R14 AND EXIT (WITH R15 ALREADY OK) 00289000
  384. SPACE 3 00290000
  385. * 00291000
  386. * CONSTANTS 00292000
  387. * 00293000
  388. PRMODE EQU 24 DISPLACEMENT OF MODE (IF GIVEN) IN P-LIST 00294000
  389. PRETN EQU 28 DISPLACEMENT IN P-LIST FOR A(STATEFST) AD-CON 00295000
  390. * 00296000
  391. ERR002E DS 0H CMS "FILE NOT FOUND": @VA01154 00297100
  392. CLI REGSAV3+4,X'0C' COMMAND OR FUNCTION ? @VA01154 00297200
  393. BL CODE28 FUNCTION: OMIT ERROR MESSAGE @VA01154 00297300
  394. CLI REGSAV3+4,X'0D' CHECK FURTHER (0C/0D)... @VA01154 00297400
  395. BH CODE28 FUNCTION: OMIT ERROR MESSAGE @VA01154 00297500
  396. * OMIT THE ERROR MESSAGE IF THE STATE/STATEW WAS ISSUED AS A 00297600
  397. * FUNCTION, OR FROM AN EXEC FILE WITH "&CONTROL OFF" IN EFFECT; 00297700
  398. * BUT GIVE THE ERROR MESSAGE IF THE STATE/STATEW WAS ISSUED FROM 00297800
  399. * THE TERMINAL (I.E. FROM DMSINT), OR IF IT WAS ISSUED FROM AN 00297900
  400. * EXEC FILE (I.E. FROM DMSEXT) WITH &CONTROL CMS OR ALL IN EFFECT: 00298000
  401. LA R2,8(R5) POINT TO FILE ID 00300000
  402. CLI 16(R2),X'FF' NO FILEMODE SPECIFIED? @VA02247 00300300
  403. BNE CONTINUE NO, CONTINUE PROCESSING @VA02247 00300600
  404. MVC 16(2,R2),=CL2' ' SET FILEMODE TO BLANK @VA02247 00300900
  405. CONTINUE DMSERR TEXT='FILE ''....................'' NOT FOUND', X00301500
  406. NUM=2,LET=E,SUB=(CHAR8A,(R2)),TYPCALL=BALR 00302000
  407. CODE28 LA R15,28 00303000
  408. B EXIT 00304000
  409. ERR048E LA R2,24(R3) POINT TO MODE 00305000
  410. LA R4,2 SET TO TYPE 2-CHARACTER FILEMODE @VA01154 00305100
  411. CLI REGSAV3+4,X'0C' COMMAND OR FUNCTION ? @VA01154 00305200
  412. BL R4OK FUNCTION: USE 2 CHARS. IN MSG @VA01154 00305300
  413. CLI REGSAV3+4,X'0E' CHECK FURTHER (0C/0D/0D)... @VA01154 00305400
  414. BH R4OK FUNCTION: USE 2 CHARS. IN MSG @VA01154 00305500
  415. LA R4,8 SET TO TYPE 8-CHARACTER FILEMODE @VA01154 00305600
  416. R4OK EQU * NOW GIVE INVALID-MODE ERROR-MSG: @VA01154 00305700
  417. DMSERR TEXT='INVALID MODE ''........''',NUM=48,LET=E, X00306000
  418. SUB=(CHAR8A,((R2),(R4))),TYPCALL=BALR @VA01154 00307100
  419. CODE24 LA R15,24 00308000
  420. B EXIT 00309000
  421. ERR054E DMSERR TEXT='INCOMPLETE FILEID SPECIFIED',NUM=54,LET=E, X00310000
  422. TYPCALL=BALR 00311000
  423. B CODE24 GO SET RETURN-CODE = 24 @VA01154 00312100
  424. ERR062E LA R3,8(,R3) POINT TO FILEID 00314000
  425. DMSERR TEXT='INVALID CHARACTER ''..'' IN FILEID X00315100
  426. ''.................''',NUM=62,LET=E,MF=(E,'SYS'), X00316500
  427. SUB=(CHARA,((R2),1),CHAR8A,(R3)),TYPCALL=BALR 00317000
  428. CODE20 LA R15,20 00318000
  429. B EXIT 00319000
  430. ERR069E DS 0H CMS "DSIK NOT ACCESSED" @VA09015 00320000
  431. CLI REGSAV3+4,X'0C' COMMAND OR FUNCTION ? @VA09015 00320020
  432. BL CODE36 FUNCTION: OMIT ERROR MESSAGE @VA09015 00320040
  433. CLI REGSAV3+4,X'0D' CHECK FURTHER (0C/0D)... @VA09015 00320060
  434. BH CODE36 FUNCTION: OMIT ERROR MESSAGE @VA09015 00320080
  435. ERR069 LA R3,24(R3) POINT TO MODE LETTER @VA03409 00320300
  436. DMSERR TEXT='DISK ''..'' NOT ACCESSED',NUM=69, X00321000
  437. LET=E,SUB=(CHARA,((R3),1)),TYPCALL=BALR 00322000
  438. CODE36 LA R15,36 00323000
  439. B EXIT 00324000
  440. ERR070E LA R2,32(R1) 00325000
  441. DMSERR TEXT='INVALID PARAMETER ''........''',NUM=70, X00326000
  442. LET=E,SUB=(CHAR8A,(R2)),TYPCALL=BALR 00327000
  443. B CODE24 GO SET RETURN-CODE = 24 @VA01154 00328100
  444. ERR229 LR R2,R15 @V201105 00329010
  445. DMSERR TEXT='UNSUPPORTED OS DATASET, ERROR ''..''', X00329020
  446. NUM=229,LET=E,SUB=(DEC,(R15)) @V201105 00329030
  447. LTR R15,R2 RESTORE R15 & SET COND. CODE, @VA01154 00329100
  448. B EXITLM AND GO RESTORE R0-R14 AND EXIT. @VA01154 00329200
  449. SPACE 00329300
  450. LTORG @VA01154 00329400
  451. EJECT 00329500
  452. OSFST @VA01154 00329600
  453. NUCON 00331000
  454. REGEQU 00332000
  455. AFT 00333000
  456. FVS 00334000
  457. ADT 00335000
  458. FSTB 00336000
  459. END 00337000