Table of Contents

DMKVDA Source

References

Source Listing

DMKVDA.ASSEMBLE.txt
  1. VDA TITLE 'DMKVDA (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF SYSIN @V407466 00002000
  3. COPY OPTIONS @V407466 00003000
  4. COPY LOCAL @V407466 00004000
  5. *. 00005000
  6. * MODULE NAME - 00006000
  7. * 00007000
  8. * DMKVDA 00008000
  9. * 00009000
  10. * FUNCTION - 00010000
  11. * TO 'ATTACH' A REAL DEVICE TO A USER AS A VIRTUAL DEVICE, 00011000
  12. * OR TO DEDICATE ALL DEVICES ON A PARTICULAR CHANNEL TO A 00012000
  13. * SPECIFIED USER. 00013000
  14. *. 00014000
  15. SPACE 2 00015000
  16. DMKVDA START 00016000
  17. SPACE 00017000
  18. DC CL8'DMKVDA' MODULE IDENTIFICATION @V407466 00018000
  19. SPACE 00019000
  20. USING PSA,R0 @V407466 00020000
  21. USING VMBLOK,R11 @V407466 00021000
  22. USING SAVEAREA,R13 @V407466 00022000
  23. SPACE 00023000
  24. EXTRN DMKCVTBH @VA13651 00024000
  25. EXTRN DMKSCNRU,DMKSCNVU @VA13651 00025000
  26. EXTRN DMKSCNVS,DMKSCNRN,DMKSCNAU @V407466 00026000
  27. EXTRN DMKLOCKQ,DMKLOCKD,DMKVDSAT @V407466 00027000
  28. EXTRN DMKVCHDC @VA13651 00028000
  29. EXTRN DMKSSSVA,DMKSSSAS,DMKSTKCP @V60B6B8 00030000
  30. EXTRN DMKVDCPS,DMKVDCAL,DMKVDCSC @V407466 00031000
  31. EXTRN DMKSYSOW,DMKSYSOC @V407466 00032000
  32. EXTRN DMKVDEDC READ LABEL/ALLOC RECORD @V407466 00033000
  33. EXTRN DMKVDERR ERROR MESSAGE ROUTINE @VA13651 00033500
  34. *. 00034000
  35. * 00035000
  36. * COMMAND LINE FORMAT - 00036000
  37. * 00037000
  38. * +--------+-----------------------------------------------+ 00038000
  39. * | | | 00039000
  40. * | ATTACH | RADDR <TO> USERID <AS> <VADDR> <R/O> | 00040000
  41. * | | <3330V> <VOLID XXXXXX> | 00040500
  42. * | | RADDR <TO> SYSTEM <AS> VOLID | 00041000
  43. * | | RADDR1-RADDR2 <TO> USERID <R/O> | 00042000
  44. * | | RADDR1 RADDR2 ... <TO> USERID <R/O> | 00043000
  45. * | | | 00044000
  46. * | | CHANNEL X <TO> USERID | 00045000
  47. * | | | 00046000
  48. * +--------+-----------------------------------------------+ 00047000
  49. * 00048000
  50. * ATTRIBUTES - 00049000
  51. * 00050000
  52. * REENTRANT, PAGEABLE, CALLED VIA SVC 00051000
  53. * 00052000
  54. * ENTRY CONDITIONS - 00053000
  55. * 00054000
  56. * GPR 2 = 0 00055000
  57. * GPR 9 = ADDRESS OF COMMAND BUFFER 00056000
  58. * GPR 11 = ADDRESS OF CALLER'S VMBLOK 00057000
  59. * GPR 12 = ADDRESS OF DMKVDAAT 00058000
  60. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00059000
  61. * 00060000
  62. * EXIT CONDITIONS - 00061000
  63. * 00062000
  64. * GPR 2 = 0 IF DEVICE HAS BEEN ATTACHED, OR 00063000
  65. * ERROR-CODE (SEE ERROR MESSAGES) IF UNSUCCESSFUL. 00064000
  66. * 00065000
  67. * CALLS TO OTHER ROUTINES - 00066000
  68. * 00067000
  69. * DMKSSSVA 00068000
  70. * DMKSSSAS 00069000
  71. * DMKSTKCP 00070000
  72. * DMKSCNRN 00072000
  73. * DMKSCNRU 00074000
  74. * DMKSCNAU 00075000
  75. * DMKSCNVU 00076000
  76. * DMKSCNVS 00077000
  77. * DMKVDSAT 00078000
  78. * DMKCVTBH 00079000
  79. * DMKQCNWT 00080000
  80. * DMKFREE 00081000
  81. * DMKLOCKQ - LOCK USERID 00082000
  82. * DMKLOCKD - UNLOCK USERID 00083000
  83. * DMKVCHDC 00084000
  84. * DMKVDCPS - PRESCAN 00085000
  85. * DMKVDCAL - ALLOCATION ROUTINE 00086000
  86. * DMKVDCSC - SCAN COMMAND LINE 00087000
  87. * DMKSYSOW 00088000
  88. * DMKSYSOC 00089000
  89. * DMKVDERR - PUT OUR 'ATTACH' ERROR MESSAGES 00089500
  90. * DMKVDEDC - READ LABEL/ALLOCATION RECORD 00090000
  91. * 00091000
  92. * EXTERNAL REFERENCES - 00092000
  93. * 00093000
  94. * DMKSYSOW - OWNED LIST START 00094000
  95. * DMKSYSOC - COUNT OF OWNED LIST VOLUMES 00094500
  96. * 00095000
  97. * TABLES / WORK AREAS - 00096000
  98. * 00097000
  99. * VMBLOK 00098000
  100. * UDEVBLOK (DUMMY FOR USE BY DMKVDSAT SUBROUTINE) 00099000
  101. * ATTMSG - WORK AREA FOR RANGE MESSAGES 00100000
  102. * MDSECT - WORK AREA FOR MULTIPLE DEVICE ADDRESSES 00101000
  103. * 00102000
  104. * REGISTER USAGE - 00103000
  105. * 00104000
  106. * GPR 8 = ADDRESS OF RDEVBLOK 00105000
  107. * GPR 9 = ADDRESS OF COMMAND BUFFER 00106000
  108. * GPR 10 = ADDRESS OF VMBLOK FOR ATTACHED-TO USER 00107000
  109. * GPR 11 = ADDRESS OF CALLER'S OR USER'S VMBLOK 00108000
  110. * GPR 12 = BASE REGISTER 00109000
  111. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00110000
  112. * 00111000
  113. * GPRS 0-7 AND 14-15 ARE WORK REGISTERS. 00112000
  114. * 00113000
  115. * 00114000
  116. * OPERATION - 00115000
  117. * 00116000
  118. * 1. THE INPUT LINE IS SCANNED VIA A CALL TO DMKVDCSC. 00117000
  119. * DMKVDCSC WILL SCAN THE COMMAND LINE VIA DMKSCNFD AND DMKCVTHB 00118000
  120. * TO OBTAIN AND CONVERT FROM HEX TO BINARY (WHERE APPROPRIATE) 00119000
  121. * THE REAL DEVICE, USERID, AND VIRTUAL DEVICE. IF ANY FIELDS 00120000
  122. * ARE OMITTED OR INVALID, AN ERROR CODE IS RETURNED TO THE 00121000
  123. * CALLER AND DMKVDA WILL ISSUE AN APPROPRIATE ERROR MESSAGE 00122000
  124. * BASED ON THE RETURN CODE RECEIVED. DMKCFCSC IS CALLED BY 00123000
  125. * DMKVDCSC TO SCAN THE FIRST COMMAND OPERAND TO DETERMINE IF 00124000
  126. * A RANGE OF REAL DEVICE ADDRESSES WAS SPECIFIED. IF MULTIPLE 00125000
  127. * ADDRESSES ARE SPECIFIED ON THE COMMAND LINE, A WORK AREA 00126000
  128. * IS OBTAINED AND ALL MULTIPLE REAL ADDRESSES ARE STORED IN 00127000
  129. * BINARY FORM IN THIS WORK AREA FOR LATER PROCESSING. 00128000
  130. * 00129000
  131. * 2. DMKVDCPS WILL BE CALLED TO PERFORM A PRESCAN WHEN A RANGE 00130000
  132. * OF REAL ADDRESSES OR MULTIPLE REAL ADDRESSES WERE SPECIFIED 00131000
  133. * ON THE COMMAND LINE. THE PURPOSE OF THE PRESCAN IS TO 00132000
  134. * DETERMINE THE NUMBER OF REAL DEVICES WHICH ARE LIKELY TO BE 00133000
  135. * ATTACHED ON THIS COMMAND EXECUTION AND TO ACQUIRE STORAGE 00134000
  136. * FOR VIRTUAL BLOCKS IN ADVANCE TO MINIMIZE REPEATED CALLS 00135000
  137. * TO DMKFRE LATER BY DMKVDS. DMKVDCPS WILL BE CALLED ONLY 00136000
  138. * WHEN MULTIPLE REAL ADDRESSES OR A RANGE OF REAL ADDRESSES 00137000
  139. * WERE SPECIFIED ON THE COMMAND LINE. 00138000
  140. * 00139000
  141. * 3. DMKSCNRU IS CALLED TO FIND RDEVBLOK FOR THE REAL DEVICE 00140000
  142. * (ERROR RETURNED IF NOT FOUND). DMKSCNAU IS CALLED TO FIND 00141000
  143. * THE ACTIVE USER FOR WHOM THE ATTACH IS SPECIFIED (ERROR 00142000
  144. * RETURNED IF HE IS NOT LOGGED ON). DMKSCNVU IS CALLED TO 00143000
  145. * ENSURE THAT THE VIRTUAL DEVICE DOES NOT ALREADY EXIST 00144000
  146. * (ERROR RETURNED IF IT DOES). 00145000
  147. * 00146000
  148. * 4. A CALL IS MADE TO DMKVDEDC TO VERIFY DEVICE 00147000
  149. * EXISTENCE. SETS UP AN I/O TASK (TIO) TO SEE IF 00148000
  150. * THE DEVICE EXISTS. IF THE DEVICE DOES NOT EXIST, 00149000
  151. * IT IS MARKED OFFLINE AND A 'DOES NOT EXIST' MESSAGE 00150000
  152. * IS ISSUED FROM DMKVDA. 00151000
  153. * 00152000
  154. * FOR DASD, DMKVDEDC WILL SET UP AND EXECUTE AN 00153000
  155. * I/O TASK TO READ THE DASD VOLUME LABEL OF THE DEVICE 00154000
  156. * BEING ATTACHED. IF SUCCESSFUL, THE VOLUME SERIAL 00155000
  157. * IS INSERTED INTO THE 'RDEVSER' FIELD OF THE REAL 00156000
  158. * DEVICE BLOCK. AN ERROR RETURN CODE IS PASSED BACK TO 00157000
  159. * DMKVDA IF FAILURE ENCOUNTERED ON THE READ. A FLAG 00158000
  160. * IS SET IF IT IS A CP/370 OWNED VOLUME. 00159000
  161. * IF DMKVDEDC WAS CALLED WITH PARM = 1, INDICATING 00160000
  162. * ALLOCATION DATA IS PRESENT, THE ALLOCATION 00161000
  163. * RECORD IS READ INTO FREE STORAGE. 00162000
  164. * 00163000
  165. * 5. IF THESE TESTS ARE SATISFACTORY, THEN DMKVDSAT IS CALLED 00164000
  166. * TO ATTACH THE GIVEN REAL DEVICE AS A VIRTUAL DEVICE. IF AN 00165000
  167. * ERROR RETURN OCCURS FROM DMKVDSAT, THEN THE ERROR CODE IS 00166000
  168. * RETURNED TO THE CALLER OF DMKVDAAT AND AN ERROR MESSAGE IS 00167000
  169. * SENT. 00168000
  170. * 00169000
  171. * 6. IF DMKVDSAT WAS SUCCESSFUL, A MESSAGE IS 00170000
  172. * SENT TO THE USER INDICATING THE DEVICE HAS BEEN ATTACHED; 00171000
  173. * AN ADDITIONAL MESSAGE IS SENT TO THE CALLER INDICATING THAT 00172000
  174. * THE DEVICE HAS BEEN ATTACHED. IF THE CALLER IS NOT THE 00173000
  175. * SYSTEM OPERATOR, A MESSAGE IS SENT TO THE SYSTEM OPERATOR 00174000
  176. * INDICATING WHAT DEVICE WAS ATTACHED BY WHAT CALLER TO WHAT 00175000
  177. * USER. 00176000
  178. * 00177000
  179. * 7. PROCESSING WILL CONTINUE IF AN ERROR IS ENCOUNTERED WHILE 00178000
  180. * PROCESSING MULTIPLE REAL ADDRESSES OR A RANGE. AN ERROR 00179000
  181. * MESSAGE WILL BE ISSUED FOR THE DEVICE ADDRESSES IN ERROR. 00180000
  182. * A RESPONSE TYPE MESSAGE WILL ALSO BE ISSUED FOR THOSE REAL 00181000
  183. * ADDRESSES IN THE RANGE WHICH COULD BE ATTACHED OR THOSE 00182000
  184. * MULTIPLE ADDRESS IN THE COMMAND LINE WHICH COULD BE 00183000
  185. * ATTACHED. 00184000
  186. * 00185000
  187. * 8. FOR THE ATTACH CHANNEL COMMAND, A CHECK IS MADE TO ENSURE 00186000
  188. * THAT THE COMMAND LINE IS CORRECT VIA A CALL TO DMKVDCSC. 00187000
  189. * DMKVCHDC IS THEN CALLED TO ATTACH THE CHANNEL AND MARK ALL 00188000
  190. * CONTROL UNITS AND DEVICES ON THE CHANNEL AS DEDICATED. 00189000
  191. * 00190000
  192. * RESPONSES - 00191000
  193. * 00192000
  194. * 'TYPE VADDR ATTACHED' 00193000
  195. * OR 00194000
  196. * 'DASD VADDR ATTACHED R/O' (IF READONLY OPTION WAS SPECIFIED) 00195000
  197. * 00196000
  198. * 'TYPE RADDR ATTACH TO $USERID$ VADDR' 00197000
  199. * 00198000
  200. * 'TYPE RADDR ATTACH TO $USERID$ VADDR BY $USERID$' 00199000
  201. * 00200000
  202. * 'DASD RADDR ATTACH TO SYSTEM $VOLID$' 00201000
  203. * 00202000
  204. * 'DASD RADDR ATTACH TO SYSTEM $VOLID$ BY $USERID$' 00203000
  205. * 00204000
  206. * 'RADDR ... ATTACHED' 00205000
  207. * 'RADDR ... ATTACHED TO $USERID$' 00206000
  208. * 'RADDR ... ATTACHED TO $USERID$ BY $USERID$' 00207000
  209. * 00208000
  210. * 'RADDR-RADDR ATTACHED' 00209000
  211. * 'RADDR-RADDR ATTACHED TO $USERID$' 00210000
  212. * 'RADDR-RADDR ATTACHED TO $USERID$ BY $USERID$' 00211000
  213. * 00212000
  214. * 00213000
  215. * ERROR MESSAGES - 00214000
  216. * 00215000
  217. * SEE DMKVDERR FOR ERROR MESSAGE TEXT. 00216000
  218. EJECT 00246000
  219. DMKVDAAT RELOC ATTACH A REAL DEV/CHANNEL TO USER'S VM @V407490 00247000
  220. XC VDABITS(4),VDABITS CLEAR FLAG-BIT WORD @V407466 00248000
  221. * (SAVEWRK1) 00249000
  222. SLR R10,R10 CLEAR R10 FOR LATER @V407466 00250000
  223. SLR R4,R4 CLEAR R4 @V407466 00251000
  224. ST R4,SAVER2 CLEAR R2 FOR ZERO RETURN CODE @V407466 00252000
  225. LA R0,MULTSIZE+MSGSIZE+VOLSIZE LARGE PIECE OF @V60B6B8 00253000
  226. * STORAGE 00254000
  227. CALL DMKFREE GO GET IT @V407466 00255000
  228. LR R4,R1 R4 CONTAINS ADDR OF AREA @V407466 00256000
  229. USING ATTMSG,R4 ESTABLISH ADDRESSABILITY @V407466 00257000
  230. MVI ATTMSG,BLANK PROPAGATE BLANKS THROUGH AREA @V407466 00258000
  231. MVC ATTMSG+1((MULTSIZE*8+MSGSIZE*8)-1),ATTMSG @V407466 00259000
  232. ST R4,SAVEWRK5 SAVE ADDR OF WORKAREA @V407466 00260000
  233. EJECT 00261000
  234. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00262000
  235. * DMKVDCSC WILL SCAN THE COMMAND LINE AND PERFORM SYNTAX CHECKING. * 00263000
  236. * R9 POINTS TO THE COMMAND LINE AT ENTRY TO DMKVDCSC. DMKVDCSC WILL * 00264000
  237. * USE THE DMKVDA SAVEAREA TO STORE COMMAND LINE OPERANDS AND FLAGS. * 00265000
  238. * UPON RETURN FROM DMKVDCSC R2 = 0 IF A SUCCESSFUL SYNTAX CHECK WAS * 00266000
  239. * PERFORMED. OTHERWISE R2 WILL CONTAIN THE APPROPRIATE ERROR CODE. * 00267000
  240. * UPON RETURN R4 STILL POINTS TO LARGE WORK AREA. * 00268000
  241. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00269000
  242. SPACE 2 00270000
  243. CALL DMKVDCSC SCAN COMMAND LINE @V407466 00271000
  244. LTR R2,R2 ANY SYNTAX ERRORS @V407466 00272000
  245. BNZ ERROR JUMP TO ERROR MESSAGE CODE @V407466 00273000
  246. TM VDABITS,CHANNEL ATTACHING A CHANNEL? @V407466 00274000
  247. BO DEDCHAN YES, TRANSFER TO DMKVCHDC @V407466 00275000
  248. LA R0,MULTSIZE+MSGSIZE CONSTRUCT VOLID OFFSET @V60B6B8 00276000
  249. SLL R0,3 ...NO OF BYTES INTO MSG BUFFER @V60B6B8 00277000
  250. LR R3,R4 BUFFER ADDR @V60B6B8 00278000
  251. AR R3,R0 ACTUAL ADDR OF OFFSET @V60B6B8 00279000
  252. MVC 0(VOLIDSIZ,R3),SAVEWRK6 VOLID SET BY DMKVDCSC @V60B6B8 00280000
  253. LR R3,R4 WORK AREA ADDR TO R3 @V407466 00281000
  254. TM VDABITS,MULTR MULTIPLE ADDRESSES ON COMMAND @V407466 00282000
  255. BO GOODCMD2 YES, PREPARE FOR PRESCAN @V407466 00283000
  256. TM VDABITS,RANGE MULTIPLE ADDRESSES ON COMMAND @V407466 00285000
  257. BO GOODCMD YES, RANGE PROCESSING @V407466 00286000
  258. LH R1,VIRTADD VIRTUAL ADDR TO R1 IF SINGLE @V407466 00287000
  259. MVC SAVEWRK5(FLAGLEN),SAVEWRK9 SAVE FLAG SET IN DMKVDC 00287100
  260. TM VMOSTAT,VMSYSOP THE SYSTEM OPERATOR @V407466 00288000
  261. BO PROCESS YES @V407466 00289000
  262. OI VDABITS,NSYSOP ATTACH BY OTHER THAN PRIMARY OP. @V407466 00290000
  263. B PROCESS KEEP PROCESSING SINGLE ADDR @V407466 00291000
  264. SPACE 2 00292000
  265. GOODCMD EQU * SCAN DID NOT FAIL @V407466 00293000
  266. SLR R3,R3 ZERO R3 TO INDICATE RANGE @V407466 00294000
  267. GOODCMD2 EQU * ENSURE PARAMETER VALIDITY @V60B6B8 00295000
  268. TM SAVEWRK9,VOLPRES WAS 'VOLID' PRESENT WITH @V60B6B8 00296000
  269. * RANGE OR MULT 00297000
  270. BO MSG076 YES, INVALID, SET UP ERROR MSG @VMI2020 00298000
  271. BAL R5,SWPUSER SWITCH TO ATTACHEE'S VMBLOK @V60B6B8 00299000
  272. BAL R5,LOKUSER LOCK USER'S DEVICE BLOCKS @V407466 00300000
  273. BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00301000
  274. EJECT 00302000
  275. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00303000
  276. * R3 POINTS TO FREE STORAGE CONTAINING MULTIPLE ADDRESSES. * 00304000
  277. * IF R3 = 0, THEN DMKVDCPS IS PROCESSING A RANGE OF ADDRESSES. * 00305000
  278. * R2 UPON RETURN CONTAINS AN ERROR CODE IF APPROPRIATE. * 00306000
  279. * R4 REMAINS UNCHANGED ACROSS THE CALL TO DMKVDCPS. * 00307000
  280. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00308000
  281. SPACE 2 00309000
  282. CALL DMKVDCPS DO PRESCAN FOR RANGE/MULTIPLES @V407466 00310000
  283. CH R2,=H'124' EXCEEDED MAX DEVICES? @VA13217 00310300
  284. BE ERR153 YES - ISSUE ERROR MSG @VA13217 00310600
  285. LTR R2,R2 INSUFFICIENT STORAGE FOR REQUEST @V407466 00311000
  286. BNZ ERROR JUMP TO ERROR MSG CODE IF SO @V407466 00312000
  287. LA R0,MULTSIZE+MSGSIZE LENGTH OF MSG BUFFER @V60B6B8 00313000
  288. L R15,SAVEWRK5 BUFFER ADDR @VMI2002 00314000
  289. SLL R0,3 MSG BUFFER LENGTH IN BYTES @V60B6B8 00315000
  290. AR R15,R0 BUMP OVER MSG BUFFER @VMI2002 00316000
  291. MVC 0(VOLIDSIZ,R15),SAVEWRK3 VOLID IF PASSED FROM @VMI2002 00317000
  292. * DMKVDC 00318000
  293. TM VMOSTAT,VMSYSOP THE SYSTEM OPERATOR ???? @V407490 00319000
  294. BO ATTSYSOP YES, GO CONTINUE PROCESSING @V407490 00320000
  295. OI VDABITS,NSYSOP ATTACH BY OTHER THAN PRIMARY OP @V407490 00321000
  296. ATTSYSOP EQU * @V407490 00322000
  297. MVC SAVEWRK5(FLAGLEN),SAVEWRK9 SAVE FLAG SET IN @VA10488 00322100
  298. * DMKVDC 00322200
  299. TM VDABITS,RANGE PROCESSING RANGE @V407466 00323000
  300. BNO CHKMULT NO, SEE IF MULTIPLE ADDRESSES @V407466 00324000
  301. L R1,DEVADDR RADDR1 IN RANGE @V407466 00325000
  302. PROCESS DS 0H @V4M0193 00326000
  303. LR R9,R1 SAVE R1 @V4M0193 00327000
  304. BAL R5,SWPCALL SWITCH BACK TO CALLER'S VMBLOK @V4M0193 00328000
  305. LR R1,R9 RESTORE R1 @V4M0193 00329000
  306. LA R9,SAVEWRK6 SAVEWRK6,7,8 = UDEVBLOK @V407466 00330000
  307. USING UDEVBLOK,R9 @V407466 00331000
  308. MVC UDEVBLOK(12),ZEROES CLEAR TO ZERO @V407466 00332000
  309. STH R1,UDEVADD ... INTO UDEVBLOK @V407466 00333000
  310. BAL R5,GETRDEV GET RDEVBLOK @V407466 00336000
  311. USING RDEVBLOK,R8 @V407466 00337000
  312. CLI RDEVTYPC,CLASDASD IS THIS DASD DEVICE @V60B6B8 00338000
  313. BNE TSTDISA NO, CONTINUE @V60B6B8 00339000
  314. CLI RDEVTYPE,TYP3330 IS IT A 3330 DASD @V60B6B8 00340000
  315. BNE TSTDISA NO, CONTINUE @V60B6B8 00341000
  316. TM RDEVFTR,VIRTUAL+SYSVIRT IS IT AN MSS VUA @V60B6B8 00342000
  317. BZ TSTDISA NO, CONTINUE @V60B6B8 00343000
  318. TM VDABITS,ATTSYST ATT TO THE SYSTEM @VMI2002 00346000
  319. BO TSTSYSV YES, TEST DEVICE FEATURE @VMI2002 00347000
  320. TM RDEVFTR,VIRTUAL ATT TO USER, IS RDEV A VIRT @VMI2002 00348000
  321. BZ INVTYPE NO, INVALID DEV TYPE @VMI2002 00349000
  322. B TSTVOLPR DEV TYPE OK, SEE IF SPECIFIC @VMI2002 00350000
  323. * VOL NEEDED 00351000
  324. TSTSYSV EQU * @VMI2002 00352000
  325. TM RDEVFTR,SYSVIRT ATT TO SYS, IS RDEV A SYSV @VMI2002 00353000
  326. BZ INVTYPE NO, INVALID DEV TYPE @VMI2002 00354000
  327. TSTVOLPR EQU * @VMI2002 00355000
  328. TM SAVEWRK5,VOLPRES WAS 'VOLID' PRESENT FOR VUA @VMI2002 00356000
  329. BZ TSTDISA NO, CONTINUE @V60B6B8 00357000
  330. TM PSAMSS,MSSPRES MSS PRESENT IN THIS SYSTEM? @VA09319 00357010
  331. * VMI2040 00357020
  332. BZ TSTDISA NO,DON'T TRY TO CALL DMKSSS @VA09319 00357030
  333. * VMI2040 00357040
  334. L R7,SAVEWRK5 ADDR OF THE NEEDED VOLID @V60B6B8 00358000
  335. LA R7,0(,R7) CLEAR HIGH ORDER BYTE @VA13651 00358500
  336. LA R0,MULTSIZE+MSGSIZE LENG OF MSG AREA IN D-WORDS @V60B6B8 00359000
  337. SLL R0,3 INTO BYTES @V60B6B8 00360000
  338. AR R7,R0 ADDR OF VOLID IF ONE EXISTS @V60B6B8 00361000
  339. CALL DMKSSSVA FIND 'VOLID' FOR VUA @V60B6B8 00362000
  340. LTR R0,R0 WAS THERE AN ERROR @V60B6B8 00363000
  341. BNZ CHKRETC POSSIBLY, TEST RETURN CODE @V60B6B8 00364000
  342. TSTDISA EQU * TEST FOR OFFLINE DEVICE @V60B6B8 00365000
  343. TM RDEVSTAT,RDEVDISA IS DEVICE OFFLINE? @V407466 00366000
  344. BO ERR12 YES - ERROR MESSAGE @V407466 00367000
  345. TM VDABITS,ATTSYST ATTACH TO SYSTEM ? @V407466 00368000
  346. BO ATTVOLD YES @V407466 00369000
  347. TM RDEVSTAT,RDEVDED IS DEVICE ALREADY DED.? @V407466 00370000
  348. BO ERR24 YES, GO INFORM @V407466 00371000
  349. TM RDEVFTR,VIRTUAL THIS AN MSS VIRTUAL VUA? @VA11344 00371100
  350. BNO TSTDISA1 NO - THEN DON'T WORRY @VA11344 00371200
  351. TM SAVEWRK5,VOLPRES VOL PRESENT IN COMMAND? @VA11344 00371300
  352. BO TSTDISA1 YES - THEN DON'T RESET FLAG @VA11344 00371400
  353. NI RDEVFLAG,X'FF'-RDEVVMNT ELSE RESET 'MTD-BY-CP' @VA11344 00371500
  354. TSTDISA1 DS 0H @VA11344 00371600
  355. LA R1,CLASSPEC*256+TYPCTCA CHECK FOR REAL CTCA @V407466 00372000
  356. CH R1,RDEVTYPC TRYING TO ATTACH A CTCA ? @V407466 00373000
  357. BNE NOTCTCA NO -- NORMAL HANDLING @V407466 00374000
  358. OI VDABITS,ATTCTCA NEEDS SOME SPECIAL HANDLING @V407466 00375000
  359. NOTCTCA EQU * TEST FOR DASD READ-ONLY OPTION @V407466 00376000
  360. TM VDABITS,ATTREAD "R/O" SPECIFIED ? @V407466 00377000
  361. BZ NOTREAD NO @V407466 00378000
  362. CLI RDEVTYPC,CLASDASD VALID ONLY FOR DASD DEVICES @V407466 00379000
  363. BE CHKDRUM O.K. AS IT SITS @V407466 00380000
  364. TM VDABITS,RANGE+MULTR RANGE OR MULTIPLE ADDRESSES @V407490 00381000
  365. BM NOTREAD YES, CONTINUE PROCESSING @V407490 00382000
  366. MSG 'R/O' SET REGS FOR ERROR MSG ROUTINE @V407466 00383000
  367. B INVOPTS2 INVALID OPTION @V407466 00384000
  368. CHKRETC EQU * TEST RETURN CODE FROM DMKSSS @V60B6B8 00385000
  369. LA R15,RC4 EXPECTED RC @V60B6B8 00386000
  370. CR R15,R0 COMPARE TO ACTUAL @V60B6B8 00387000
  371. BE SAVEINFO IF RC=4, SAVE PERTINENT INFO @V60B6B8 00388000
  372. B INVTYPE PUT OUT ERROR MESSAGE @V60B6B8 00391000
  373. SAVEINFO EQU * SAVE PERTINENT INFO (FLAGS @V60B6B8 00392000
  374. * ETC.) 00393000
  375. TM MSSFLAG2-OSVSCOM(R1),MSGPROC PCI YET @VA09302 00394000
  376. BZ PCINOW YES, PROCESS @VMI2018 00395000
  377. NI MSSFLAG2-OSVSCOM(R1),X'FF'-MSGPROC @VA09302 00396000
  378. L R3,MSSTASK1-OSVSCOM(R1) SAVE POINTER TO @V60B6B8 00397000
  379. * MSSTASK1 00398000
  380. LA R0,SAVESIZE GET A DUPLICATE SAVE AREA @V60B6B8 00399000
  381. CALL DMKFREE @V60B6B8 00400000
  382. MVC SAVEWRK1-SAVEAREA(4,R1),SAVEWRK1 SAVE FLAGS @V60B6B8 00401000
  383. MVC SAVEWRK2-SAVEAREA(WORKAREA,R1),SAVEWRK2 HOLLY @V60B6B8 00402000
  384. * SAVE REMAINING INFO 00403000
  385. ST R1,CPEXR1-CPEXBLOK(R3) PUT PTR TO INFO IN @V60B6B8 00404000
  386. * MSSTASK1 CPEXBLOK 00405000
  387. B VDAATEXT EXIT FOR NOW, WAIT FOR MSS MOUNT @V60B6B8 00406000
  388. * 00407000
  389. * THE FOLLOWING ROUTINE IS ENTERED AFTER AN MSS VOLUME 00408000
  390. * MOUNT. 00409000
  391. * 00410000
  392. DMKVDAS1 RELOC @V60B6B8 00411000
  393. USING OSVSCOM,R3 GPR 3 WAS SET BY DMKSSS @V60B6B8 00412000
  394. MVC SAVEWRK1,SAVEWRK1-SAVEAREA(R1) RESTORE FLAGS @V60B6B8 00413000
  395. * TO CURRENT SAVEAREA 00414000
  396. MVC SAVEWRK2(WORKAREA),SAVEWRK2-SAVEAREA(R1) @V60B6B8 00415000
  397. * RESTORE OTHER WORKING INFO 00416000
  398. LA R0,SAVESIZE SIZE OF SAVE AREA @V60B6B8 00417000
  399. CALL DMKFRET GIVE IT BACK @V60B6B8 00418000
  400. L R1,MSSTASK3 IS THERE A PENDING I/O @V60B6B8 00419000
  401. LTR R1,R1 REPRESENTED BY A CPEXBLOK @V60B6B8 00420000
  402. BZ FRECOM2 NO @V60B6B8 00421000
  403. CALL DMKSTKCP STACK THE CPEXBLOK FOR THE I/O @V60B6B8 00422000
  404. FRECOM2 EQU * @V60B6B8 00423000
  405. LA R0,MSSSIZE NO OF D-WORDS IN AN MSSCOM @V60B6B8 00424000
  406. LR R1,R3 MSSCOM ADDR @V60B6B8 00425000
  407. CALL DMKFRET RETURN CORE TO THE SYSTEM @V60B6B8 00426000
  408. B TSTDISA AND COMPLETE THE ATTACH @V60B6B8 00427000
  409. PCINOW EQU * MSS VOLUME IS NOW MOUNTED @VMI2018 00428000
  410. L R14,=V(DMKSSSMQ) ADDR OF MSSCOM Q PTR @VMI2018 00429000
  411. L R15,0(R14) FIRST MSSCOM IN Q @VMI2018 00430000
  412. CHKNEXT EQU * SEE IF OUR MSSCOM IS IN Q @VMI2018 00431000
  413. CR R15,R1 IS Q ENTRY OURS? @VMI2018 00432000
  414. BE DEQIT YES, REMOVE IT @VMI2018 00433000
  415. LA R14,MSSNEXT-OSVSCOM(R15) NEXT CHAIN PTR @VMI2018 00434000
  416. L R15,MSSNEXT-OSVSCOM(R15) NEXT MSSCOM @VMI2018 00435000
  417. B CHKNEXT AND CHECK IT @VMI2018 00436000
  418. DEQIT EQU * @VMI2018 00437000
  419. MVC 0(4,R14),MSSNEXT-OSVSCOM(R15) RECHAIN @VMI2018 00438000
  420. LA R0,MSSSIZE SIZE OF THE MSSCOM @VMI2018 00439000
  421. CALL DMKFRET RELEASE IT @VMI2018 00440000
  422. B TSTDISA AND COMPLETE THE ATTACH @VMI2018 00441000
  423. EJECT 00442000
  424. USING MDSECT,R4 @V407466 00443000
  425. CHKMULT L R2,MULTADD FIRST MULTIPLE ADDRESS @V407466 00444000
  426. USING ATTMSG,R4 @V407466 00445000
  427. GOODCMD3 LR R1,R2 DEVICE ADDRESS TO R1 @V407466 00446000
  428. NI VDABITS,X'FF'-DED2305 RESET DRUM FLAG @V407490 00447000
  429. B PROCESS PROCESS MULTIPLE ADDRESSES @V407466 00448000
  430. SPACE 00449000
  431. NOTREAD EQU * @V407466 00450000
  432. CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL DEVICE @V407466 00451000
  433. BNE NOTLINE NO @V407466 00452000
  434. TM RDEVFLAG,RDEVENAB+RDEVPREP IS LINE ACTIVE @V407466 00453000
  435. BNZ ERR16 SEND MSG = VDA143E @V407466 00454000
  436. TM RDEVSTAT,RDEVBUSY IS IT BUSY @V407466 00455000
  437. BO ERR16 YES, SEND MSG VDA143E @V407466 00456000
  438. B GOODOPT CHECK DEVICE STATUS @V407466 00457000
  439. SPACE 00458000
  440. NOTLINE EQU * ... @V407466 00459000
  441. CLI RDEVTYPC,CLASGRAF IS IT A GRAF DEVICE ? @VA08560 00459100
  442. BNE NOTGRAF NO,CHECK NEXT TYPE @VA08560 00459130
  443. CLC RDEVNAME,TST3138 IS IT A 3138 CONSOLE ? @VA08560 00459160
  444. BE GRAFCONS YES IT IS @VA08560 00459190
  445. CLC RDEVNAME,TST3148 IS IT A 3148 CONSOLE ? @VA08560 00459220
  446. BE GRAFCONS YES IT IS @VA08560 00459250
  447. CLC RDEVNAME,TST3158 IS IT A 3158 CONSOLE ? @VA08560 00459280
  448. BE GRAFCONS YES IT IS @VA08560 00459310
  449. CLC RDEVNAME,TST3036 IS IT A 3036 CONSOLE ? @VA08560 00459340
  450. BE GRAFCONS YES IT IS @VA08560 00459370
  451. CLC RDEVNAME,TST3066 IS IT A 3066 CONSOLE ? @VA08560 00459400
  452. BE GRAFCONS YES IT IS @VA08560 00459430
  453. B GOODOPT CHECK DEVICE STATUS @VA08560 00459460
  454. DS 0D @VA08560 00459490
  455. TST3036 DC X'3036' @VA08560 00459520
  456. TST3066 DC X'3066' @VA08560 00459550
  457. TST3138 DC X'3138' @VA08560 00459580
  458. TST3148 DC X'3148' @VA08560 00459610
  459. TST3158 DC X'3158' @VA08560 00459640
  460. SPACE 00459670
  461. GRAFCONS EQU * @VA08560 00459700
  462. OI UDEVSTAT,UDEV3158 INDICATE CONSOLE DEVICE @VA08560 00459730
  463. B GOODOPT CHECK DEVICE STATUS @VA08560 00459760
  464. SPACE 00459790
  465. NOTGRAF EQU * @VA08560 00459820
  466. TM RDEVTYPC,CLASURI+CLASURO UNIT RECORD DEVICE @V407466 00460000
  467. BZ NOTUR NO, CHECK NEXT TYPE @V407466 00461000
  468. TM RDEVFLAG,RDEVDRAN IS THE DEVICE DRAINED @V407466 00462000
  469. BZ ERR08 NO, CANNOT ATTACH @V407466 00463000
  470. ICM R15,15,RDEVSPL CHECK FOR ACTIVE SFBLOK @V407466 00464000
  471. BNZ ERR08 YES, CANNOT ATTACH @V407466 00465000
  472. B GOODOPT ATTACH THE DEVICE @V407466 00466000
  473. SPACE 00467000
  474. NOTUR EQU * ... @V407466 00468000
  475. CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE @V407466 00469000
  476. BNE GOODOPT NO, CHECK DEVICE EXISTENCE @V407466 00470000
  477. OI UDEVMODE,UDEVW YES- SET ACCESS MODE TO R/W @V407466 00471000
  478. CHKDRUM EQU * SPECIAL TEST FOR 2305 ATTACH @V407466 00472000
  479. CLI RDEVTYPE,TYP2305 MULTIPLE-EXPOSURE DEVICE ? @V407466 00473000
  480. BNE GOODOPT NO -- ALL SET @V407466 00474000
  481. TM RDEVADD+1,X'07' ATTACHING BASE EXPOSURE? @V407466 00475000
  482. BNZ VDA021A NOPE, BAD NEWS... @V407490 00476000
  483. TM UDEVADD+1,X'07' ATTACHING AS BASE EXPOSURE? @V407466 00477000
  484. BNZ VDA022B NOPE, ALSO BAD NEWS. @V407466 00478000
  485. OI VDABITS,DED2305 IND. MESSING WITH DEDICATED 2305@V407466 00479000
  486. SPACE 00480000
  487. GOODOPT EQU * FIND THE VOLUME LABEL @V407466 00481000
  488. BAL R7,DEVCHECK FIND THE VOLUME LABEL @V407466 00482000
  489. DROP R8 @V407466 00483000
  490. SPACE 00484000
  491. CHEKLOK EQU * CHK USERID FOR LOCKED OR IN LOGON@V407466 00485000
  492. LA R1,CMDUSER ATTACHEE'S USERID @V407466 00486000
  493. BAL R5,CHKUSER ENSURE STILL THERE @V407466 00487000
  494. LR R10,R1 ENSURE USE OF CURRENT VMBLOK @VA08223 00488000
  495. BAL R5,SWPUSER SWITCH TO ATTACHEE'S VMBLOK @V407466 00489000
  496. TM VDABITS,RANGE+MULTR MORE THAN 1 ADDRESS @V407466 00490000
  497. BM SKIPLOCK YES, ALREADY LOCKED @V407466 00491000
  498. BAL R5,LOKUSER LOCK THE USER'S DEVICE BLOCKS @V407466 00492000
  499. SPACE 00493000
  500. SKIPLOCK LH R1,UDEVADD VIRTUAL DEVICE ADDRESS @V407466 00494000
  501. CALL DMKSCNVU SEE IF ALREADY DEFINED @V407466 00495000
  502. BZ ERR56 ALREADY DEFINED @V407466 00496000
  503. BC 4,NOTDEDCH CHANNEL NOT FOUND @V407466 00497000
  504. BC 2,CHKDEDCH CONTROL UNIT NOT FOUND @V407466 00498000
  505. TM VDABITS,ATTCTCA ATTACHING A CTCA ? @V407466 00499000
  506. BO ERR56 YES - CANNOT DO IT IF C.U. EXISTS@V407466 00500000
  507. TM VDABITS,DED2305 DEDICATED 2305 TYPE ATTACH? @V407466 00501000
  508. BZ CHKDEDCH NOPE, SKIP @V407466 00502000
  509. USING VCUBLOK,R7 ADDRESS THE VCUBLOK @V407466 00503000
  510. N R1,F8 OBTAIN BASE ADDR INDEX @V407466 00504000
  511. SLL R1,1 CONVERT TO VCUDVTBL 2 BYTE INDEX @V407466 00505000
  512. LR R5,R3 SAVE R3 TEMPORARILY @V407466 00506000
  513. LA R3,VCUDVTBL+2*7(R1) TABLE ADDR OF LAST EXPOSURE @V407466 00507000
  514. LA R1,VCUDVTBL(R1) TABLE ADDR OF FIRST EXPOSURE @V407466 00508000
  515. LA R2,COUNT2 TABLE ENTRY LENGTH FOR BXLE @V407490 00509000
  516. PRESCAN CLI 0(R1),X'FF' IS THIS DEVICE DEFINED? @V407466 00510000
  517. BE EXPOS LOOK AT ALL 8 EXPOSURES @V407466 00511000
  518. LA R2,RC60 ERROR 56 @V407466 00512000
  519. LR R3,R5 RESTORE VIRTUAL ADDRESS @VA11421 00512500
  520. B ERROR COMMON ERROR PROCESSING @V407466 00513000
  521. SPACE 2 00514000
  522. EXPOS BXLE R1,R2,PRESCAN NO, LOOK AT ALL 8 EXPOSURES @V407466 00515000
  523. LR R3,R5 RESTORE R3 @V407466 00516000
  524. CHKDEDCH EQU * CANNOT ATTACH TO DED CHANNEL @V407466 00517000
  525. AIF (NOT &DEDCH).NOTDED1 **AIF** @V407466 00518000
  526. USING VCHBLOK,R6 @V407466 00519000
  527. TM VCHSTAT,VCHDED IS CHANNEL DEDICATED @V407466 00520000
  528. BNO NOTDEDCH NO, KEEP GOING @V407466 00521000
  529. LA R2,RC64 CHANNEL DEDICATED ERROR @V407466 00522000
  530. B ERROR GO TO COMMON ERROR PROCESSING @V407466 00523000
  531. SPACE 2 00524000
  532. DROP R6,R7 NO MORE VCHBLOK OR VCUBLOK @V407466 00525000
  533. .NOTDED1 ANOP 00526000
  534. NOTDEDCH EQU * ALL CLEAR - FIRE AT WILL @V407466 00527000
  535. L R1,SAVEWRK9 RDEVBLOK ADDRESS @V407466 00528000
  536. LR R2,R9 ...UDEVBLOK @V407466 00529000
  537. CALL DMKVDSAT PERFORM REAL ATTACH @V407466 00530000
  538. TM VDABITS,RANGE+MULTR MORE THAN ONE ADDRESS @V407466 00531000
  539. BM SKIPFRE YES, SKIP 'FREUSER' @V407466 00532000
  540. BAL R5,FREUSER UNLOCK AND SWAP R11 @V407466 00533000
  541. SKIPFRE BAL R5,SWPCALL SWITCH TO CALLER'S VMBLOK @V407466 00534000
  542. CH R2,=H'124' MAX DEVICES EXCEEDED? @VA13217 00534300
  543. BE ERR153 YES - ISSUE ERROR MSG @VA13217 00534600
  544. LTR R2,R2 DID VDSAT GIVE AN ERROR ? @V407466 00535000
  545. BNZ ERROR JUMP TO ERROR MESSAGE CODE @V407466 00536000
  546. OI VDEVSTAT-VDEVBLOK(R8),VDEVCATT ATTACH VIA CMD @V407466 00537000
  547. TM SAVEWRK5,VIRTPRES WAS 3330V REQUESTED @V60B6B8 00538000
  548. BZ TSTMLT NO, CONTINUE @V60B6B8 00539000
  549. OI VDEVFLG2-VDEVBLOK(R8),VDEVVIRT SET FLAG @VA09758 00540010
  550. L R1,SAVEWRK9 RDEVBLOK ADDR @V60B6B8 00541000
  551. OI RDEVFLAG-RDEVBLOK(R1),RDEV333V @V60B6B8 00542000
  552. TSTMLT EQU * TEST FOR MULT @V60B6B8 00543000
  553. TM VDABITS,MULTR PROCESSING MULTIPLE ADDRESSES @V407466 00544000
  554. BO MULTMSG SPECIAL FORMAT FOR MULTMSG @V407466 00545000
  555. TM VDABITS,RANGE PROCESSING A RANGE @V407466 00546000
  556. BNO RESPATT NO, FORMAT MESSAGE @V407466 00547000
  557. LH R1,UDEVADD SEE IF ANY MORE ADDRESSES IN @V407466 00548000
  558. LR R2,R1 POSSIBLE MORE ADDRS TO PROCESS @V407490 00549000
  559. CALL DMKCVTBH RADDR1 TO PRINT HEX @V407466 00550000
  560. USING ATTMSG,R4 MSG BUFFER ADDRESSABILITY @V407466 00551000
  561. CLC ATTRADD1(3),=CL3' ' RADDR1 IN MESSAGE @V407466 00552000
  562. BE STORADD1 NO, STORE IN RADDR1 FIELD @V407466 00553000
  563. STCM R1,B'0111',ATTRADD2 STORE IN MSG BUFFER @V407466 00554000
  564. CHKEND EQU * @V407490 00555000
  565. TM VDABITS,DED2305 WORKING WITH DRUM ?? @V407490 00556000
  566. BZ CHKEND1 NO , TEST WITH WHAT WE HAVE @V407490 00557000
  567. LA R2,7(,R2) BUMP FOR EIGHT EXPOSURES @V407490 00558000
  568. CHKEND1 CH R2,VDABITS+2 AT THE END OF THE RANGE @V407490 00559000
  569. BNL RESPOND2 YES, ALL DONE, PROCESS MSG @V407490 00560000
  570. LA R2,1(,R2) BUMP FOR NEXT ADDR TO PROCESS @V407490 00561000
  571. B GOODCMD3 GO PROCESS NEXT ADDR @V407490 00562000
  572. SPACE 2 00563000
  573. RESPOND2 CLC ATTRADD1,=CL3' ' RADDR1 = BLANK @V407466 00564000
  574. BCR 8,R6 DO NOT ISSUE ANY MESSAGE @V407466 00565000
  575. CLC ATTRADD2,=CL3' ' RADDR2 BLANK IN MSG @V407466 00566000
  576. BE SINGMSG YES, ISSUE MSG FOR SINGLE ADDR @V407466 00567000
  577. CLC ATTRADD1,ATTRADD2 RADDR1=RADDR2 IN MSG BUF @V407466 00568000
  578. BE SINGMSG YES, ISSUE SINGLE MESSAGE @V407466 00569000
  579. MVC ATTDASH,DASH PLACE '-' IN MSG @V407466 00570000
  580. MVC ATTFLD1(L'ATTACHED),ATTACHED 'ATTACHED' TO MSG @V407466 00571000
  581. TM VDABITS,ATTSYST ATTACH TO 'SYSTEM' @V407466 00572000
  582. BO OPERMSG SKIP SHORT MESSAGE @V407466 00573000
  583. LA R0,ATTFLD1+8-ATTMSG CURRENT LENGTH @V407466 00574000
  584. B SNDUSR1 SWITCH TO TARGET USER'S VMBLOK @V407466 00575000
  585. SPACE 2 00576000
  586. STORADD1 STCM R1,B'0111',ATTRADD1 STORE ADDR1 IN MSG @V407466 00577000
  587. B CHKEND SEE IF END OF RANGE @V407466 00578000
  588. SPACE 00579000
  589. SINGMSG MVC ATTADD1(3),ATTRADD1 PREPARE FOR SINGLE MESSAGE @V407466 00580000
  590. MVI ATTADD1-1,BLANK BLANK CHAR BEFORE ADDR @V407466 00581000
  591. RESPATT EQU * CONTRUCT MSGS FOR 'ATTACH REAL' @V407466 00582000
  592. BAL R5,GETRTYP GET EBCDIC TYPE-NAME OF DEVICE @V407466 00583000
  593. TM VDABITS,RANGE RANGE BEING PROCESSED @V407466 00584000
  594. BO STORTYPE YES, STORE DEVICE TYPE @V407466 00585000
  595. EJECT 00586000
  596. * 00587000
  597. * CONSTRUCT AND TYPE VARIOUS CONSOLE MESSAGES 00588000
  598. * 00589000
  599. MVI ATTMSG,X'40' CLEAR TO BLANKS @V407466 00590000
  600. MVC ATTMSG+1((ATTSIZE*8)-1),ATTMSG @V407466 00591000
  601. STORTYPE MVC ATTFLD1(8),ATTACHED USER/OPERATOR CUE @V407466 00592000
  602. ST R3,ATTDTYP TYPE-NAME OF AFFECTED DEVICE @V407466 00593000
  603. TM VDABITS,ATTSYST ATTACH TO SYSTEM ? @V407466 00594000
  604. BO OPERMSG YES - SKIP USER MESSAGE @V407466 00595000
  605. TM VDABITS,RANGE RANGE BEING PROCESSED @V407466 00596000
  606. BO LENGTH SKIP FOLLOWING CONVERT @V407466 00597000
  607. LH R1,VIRTADD VIRTUAL ADDRESS @V407466 00599000
  608. CALL DMKCVTBH ...INTO PRINTABLE FORM @V407466 00600000
  609. STCM R1,B'0111',ATTADD1 INTO TWO PLACES @V407466 00601000
  610. LENGTH LA R0,ATTFLD1+8-ATTMSG CURRENT LENGTH @V407466 00602000
  611. TM VDABITS,ATTREAD ATTACHED R/O ? @V407466 00603000
  612. BZ SNDUSR1 NO @V407466 00604000
  613. LA R0,ATTUSER+3-ATTMSG EXTRA LENGTH @V407466 00605000
  614. MVC ATTUSER(3),=C'R/O' ADD THIS TO MESSAGE @V407466 00606000
  615. SNDUSR1 EQU * SWITCH TO TARGET USER'S VMBLOK @V407466 00607000
  616. CLR R10,R11 ATTACH TO/FROM HIMSELF ? @V407466 00608000
  617. BE OPERMSG YES - SKIP SHORT MESSAGE @V407466 00609000
  618. SNDUSR2 EQU * SEND INFORMATION MESSAGE TO USER @V407466 00610000
  619. LR R4,R0 SAVE R0 @V4M0193 00611000
  620. BAL R5,SWPUSER SW TO USER'S VMBLOK @VA07393 00612000
  621. LR R0,R4 RESTORE R0 @V4M0193 00613000
  622. L R4,SAVEWRK5 RESTORE R4 @V4M0193 00614000
  623. LA R4,0(,R4) CLEAR HIGH ORDER BYTE @VA13651 00614500
  624. LR R1,R4 MESSAGE START @V407466 00615000
  625. L R2,=A(NOTRESP) INDICATE NON-COMMAND MSG @V60C2B8 00616000
  626. CALL DMKQCNWT,PARM=NORET(,R2) @V60C2B8 00617000
  627. BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00618000
  628. OPERMSG EQU * BUILD MSG FOR ATTACHER/DETACHER @V407466 00619000
  629. MVC ATTFLD1+6(8),BLANKS CLEAN UP AFTER USER MSG @V407466 00620000
  630. MVC ATTFLD2(2),=C'TO' @V407466 00621000
  631. TM VDABITS,RANGE RANGE MESSAGE FORMAT? @V407466 00622000
  632. BNO OPRMSG1 NO, CONTINUE TO FORMAT @V407466 00623000
  633. LA R0,ATTADD2-ATTMSG CURRENT LENGTH @V407466 00624000
  634. B OPRMSG2 CONTINUE TO FORMAT @V407466 00625000
  635. SPACE 2 00626000
  636. OPRMSG1 EQU * @V407466 00627000
  637. MVC ATTADD2(4),ATTADD1 MOVE VADDR FURTHER OUT @V407466 00628000
  638. MVI ATTADD2-1,X'40' FIX UP BLANKS FOR SPACING @V407466 00629000
  639. MVI ATTFLD2+2,X'40' ... @V407466 00630000
  640. BAL R5,CVTRADD CONVERT REAL ADDRESS TO HEX @V407466 00631000
  641. STCM R1,B'0111',ATTADD1 ...INTO OPERATOR MESSAGES @V407466 00632000
  642. LA R0,ATTFLD3-ATTMSG CURRENT LENGTH @V407466 00633000
  643. OPRMSG2 MVC ATTUSER(8),CMDUSER USERID OF ATTACHEE @V407466 00634000
  644. TM VDABITS,ATTSYST ATTACH TO SYSTEM ? @V407466 00635000
  645. BZ SNDOPER NO @V407466 00636000
  646. MVC ATTUSER(8),=CL8'SYSTEM' @V407466 00637000
  647. MVC ATTADD2-2(6),CMDUSER THIS IS THE VOLID @V407466 00638000
  648. B SNDOPMG @V407466 00639000
  649. SPACE 2 00640000
  650. SNDOPER EQU * @V407466 00641000
  651. TM VDABITS,RANGE RANGE MESSAGE? @V407466 00642000
  652. BO SNDOPMG SKIP R/O IN MESSAGE @V407466 00643000
  653. TM VDABITS,ATTREAD ATTACH READ/ONLY ? @V407466 00644000
  654. BZ SNDOPMG NO @V407466 00645000
  655. MVC ATTFLD3(3),=C'R/O' @V407466 00646000
  656. LA R0,ATTOPER-ATTMSG @V407466 00647000
  657. SNDOPMG EQU * TYPE MESSAGE TO ATTACHER @V407466 00648000
  658. LR R1,R4 MESSAGE START @V407466 00649000
  659. CALL DMKQCNWT,PARM=NORET @V407466 00650000
  660. TM VDABITS,NSYSOP ATTACH BY SYSTEM OPERATOR ? @V407466 00651000
  661. BZ VERERR NECESSARY TO ISSUE ERROR MSG @V407466 00652000
  662. TM VDABITS,RANGE RANGE MESSAGE @V407466 00653000
  663. BZ SNDOPMG2 NO, SLIGHTLY DIFFERENT FORMAT @V407466 00654000
  664. MVC ATTADD2(3),=C'BY ' SUBSTITUTE 'BY ' @V407466 00655000
  665. MVI ATTADD2-1,BLANK DELIMITER @V407466 00656000
  666. MVC ATTFLD3(8),VMUSER ATTACHER @V407466 00657000
  667. LA R0,ATTFLD3-ATTMSG+L'ATTOPER MSG LENGTH @V407466 00658000
  668. B SNDOPMG3 CONTINUE BELOW ... @V407466 00659000
  669. SPACE 2 00660000
  670. SNDOPMG2 MVC ATTFLD3(3),=C'BY ' @V407466 00661000
  671. MVC ATTOPER(8),VMUSER ATTACHER @V407466 00662000
  672. LA R0,ATTOPER-ATTMSG+L'ATTOPER MSG LENGTH @V407466 00663000
  673. SNDOPMG3 LR R1,R4 MESSAGE START @V407466 00664000
  674. CALL DMKQCNWT,PARM=NORET+OPERATOR @V407466 00665000
  675. TM VDABITS+1,ATTERR ISSUE ERROR AFTER RESPONSE ? @V407466 00666000
  676. BZ CLEANXT NO, FRET THE BUFFER @V407466 00667000
  677. BLDBUFF MVI ATTMSG,BLANK PROPAGATE BLANKS THROUGH @V407466 00668000
  678. MVC ATTMSG+1((ATTSIZE*8)-1),ATTMSG MESSAGE AREA @V407466 00669000
  679. LH R1,UDEVADD ERROR ADDRESS @V407466 00670000
  680. BR R6 RETURN TO ISSUE ERROR MESSAGE @V407466 00671000
  681. EJECT 00672000
  682. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00673000
  683. * WHEN MULTIPLE ADDRESSES ARE BEING PROCESSED, THE MESSAGE * 00674000
  684. * IDENTIFYING THOSE DEVICES SUCCESSFULLY ATTACHED WILL ASSUME TWO * 00675000
  685. * FORMATS. * 00676000
  686. * THE USER WILL RECEIVE THE MESSAGE - R1 R2 ... ATTACHED * 00677000
  687. * THE OPERATOR WILL RECEIVE THE MESSAGE - * 00678000
  688. * R1 R2 ... ATTACHED TO USERID * 00679000
  689. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00680000
  690. SPACE 2 00681000
  691. MULTMSG EQU * @V407490 00682000
  692. USING MDSECT,R6 CHANGE ADDRESSABILITY @V407466 00683000
  693. SLR R7,R7 ZERO R7 @V407466 00684000
  694. IC R7,MULTCUU NUMBER OF MULTIPLES IN MSG @V407466 00685000
  695. LA R1,1(,R7) INCREMENT BY 1 @V407466 00686000
  696. STCM R1,B'0001',MULTCUU COUNT OF MULTIPLES IN MSG @V407466 00687000
  697. LA R8,L'MULTADD L'CUU + L'DELIMITER @V407490 00688000
  698. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00689000
  699. AR R7,R3 PLUS ADDR OF WORK AREA @V407466 00690000
  700. LR R6,R7 NEXT SLOT FOR ADDR @V407466 00691000
  701. LH R1,UDEVADD MULT. ADDR FOR MESSAGE @V407466 00692000
  702. CALL DMKCVTBH CONVERT TO HEX FOR MSG @V407466 00693000
  703. STCM R1,B'0111',MULTADD STORE IN MESSAGE @V407466 00694000
  704. MVI DELIM1,BLANK SEPARATE HDR FROM CCU @V407466 00695000
  705. DROP R6 @V407466 00696000
  706. USING MDSECT,R4 WORK AREA ADDRESSABILITY @V407466 00697000
  707. MULTCONT LA R4,4(,R4) TO SEE IF MORE MULT. ADDRS @V407466 00698000
  708. L R2,MULTADD TO BE PROCESSED @V407466 00699000
  709. C R2,FFS END OF MULTIPLES? @V407466 00700000
  710. BNE GOODCMD3 THERE ARE MORE, KEEP GOING @V407466 00701000
  711. DROP R4 @V407466 00702000
  712. USING MDSECT,R6 @V407466 00703000
  713. SLR R7,R7 CLEAR R7 @V407466 00704000
  714. IC R7,MULTCUU NO. MULTIPLES @V407466 00705000
  715. LTR R7,R7 ANY MULTIPLES? @V407466 00706000
  716. BZ CLEANXT NO MULTS, RELEASE STG AND EXIT @V407466 00707000
  717. LA R8,L'MULTADD LENGTH OF MULTIPLE @V407490 00708000
  718. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00709000
  719. AR R7,R3 ADD BEG. MSG BUFFER ADDR @V407466 00710000
  720. LR R6,R7 AND PUT INTO R6 @V407466 00711000
  721. MVC MULTADD(L'MULTADD*2),=C'ATTACHED' SUBST. CONST @V407466 00712000
  722. MVI DELIM2,BLANK SEPARATE CCU FROM 'ATTACHED' @V407466 00713000
  723. MVC CONTO,=C'TO ' CONSTANT 'TO' @V407466 00714000
  724. MVC USERID,CMDUSER USERID @V407466 00715000
  725. TM VDABITS,ATTSYST ATTACH TO 'SYSTEM' @V407466 00716000
  726. BZ NOTSYS NO, USERID OK @V407466 00717000
  727. MVC USERID,=CL8'SYSTEM' SUBSTITUTE 'SYSTEM' @V407466 00718000
  728. NOTSYS MVI DELIM3,BLANK DELIMITER @V407466 00719000
  729. MVC CONBY,=CL3'BY ' CONSTANT 'BY' @V407466 00720000
  730. MVC ATTACHER,VMUSER ATTACHER USERID @V407466 00721000
  731. SLR R7,R7 CLEAR R7 AGAIN @V407466 00722000
  732. IC R7,MULTCUU NO. OF MULTIPLES @V407466 00723000
  733. CLR R10,R11 ATTACH TO HIMSELF? @V407466 00724000
  734. BE SKIPMSG YES @V407466 00725000
  735. BAL R5,SWPUSER SEND INFORMATION MSG TO USER @V407466 00726000
  736. CH R7,=H'10' IF EXCEEDS 10 - MULTIPLE LINES @V407466 00727000
  737. BH MANY1 YES, ISSUE MULTIPLE LINES @V407466 00728000
  738. MR R6,R8 R7 * R8 INTO R6-R7 @V407466 00729000
  739. LA R0,USERSIZE(,R7) + L'ATTACHED @V407466 00730000
  740. L R1,SAVEWRK5 ADDR OF MSG BUFFER @V407466 00731000
  741. LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00731500
  742. CALL DMKQCNWT,PARM=NORET @V407466 00732000
  743. BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00733000
  744. L R1,SAVEWRK5 POINT TO BEGINNING OF MSG AREA @V4M0193 00734000
  745. LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00734500
  746. LA R0,OPERSIZE(,R7) + L'TO + L'USERID @V407466 00735000
  747. MULTMSG5 CALL DMKQCNWT,PARM=NORET @V407466 00736000
  748. TM VDABITS,NSYSOP ATTACH BY SYSTEM OPERATOR @V407466 00737000
  749. BZ CLEANXT YES, RELEASE MULTIPLE WORK AREA @V407466 00738000
  750. LA R2,OPERATOR NO, SEND MSG TO SYSTEM OPERATOR @V407466 00739000
  751. LA R0,ASIZE(,R7) + L'BY + L'USERID @V407466 00740000
  752. LASTLINE CALL DMKQCNWT,PARM=NORET+0(,R2) @V407466 00741000
  753. B CLEANXT FREE USER'S BLOCKS AND SWITCH R11@V407466 00742000
  754. SPACE 2 00743000
  755. MANY1 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CUU @V407466 00744000
  756. LA R0,USERSIZE(,R7) ... @V407466 00745000
  757. CALL DMKQCNWT,PARM=NORET LAST LINE @V407466 00746000
  758. BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00747000
  759. L R1,SAVEWRK5 POINT TO BEGIN OF MSG AREA @V407466 00748000
  760. LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00748500
  761. IC R7,MULTCUU NUMBER OF CUU IN MSG @V407466 00749000
  762. MANY2 BAL R5,MULTLINE REPEATED LINES FOR NEXT MSG @V407466 00750000
  763. LA R0,OPERSIZE(,R7) +L'TO + L'USERID @V407466 00751000
  764. CALL DMKQCNWT,PARM=NORET LAST LINE @V407466 00752000
  765. TM VDABITS,NSYSOP ATTACH BY SYSTEM OPERATOR? @V407466 00753000
  766. BZ CLEANXT YES, RELEASE STORAGE @V407466 00754000
  767. LA R2,OPERATOR SEND MSG TO SYSTEM OPERATOR @V407466 00755000
  768. L R1,SAVEWRK5 POINT TO BEG OF MSG AREA @V407466 00756000
  769. LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00756500
  770. IC R7,MULTCUU NUMBER OF CUU'S IN MSG @V407466 00757000
  771. BAL R5,MULTLINE ISSUE REPEATED LINES @V407466 00758000
  772. LA R0,ASIZE(,R7) + L'TO + L'USERID @V407466 00759000
  773. B LASTLINE VERY, VERY LAST LINE @V407466 00760000
  774. SPACE 2 00761000
  775. SKIPMSG CH R7,=H'10' EXCEEDS 10 - MULTIPLE LINES @V407466 00762000
  776. BH MANY2 YES @V407466 00763000
  777. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00764000
  778. LA R0,OPERSIZE(,R7) PLUS FIXED LENGTH @V407466 00765000
  779. L R1,SAVEWRK5 BEGINNING OF MSG AREA @V407466 00766000
  780. LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00766500
  781. B MULTMSG5 ISSUE SINGLE LINE MSG @V407466 00767000
  782. SPACE 2 00768000
  783. MULTLINE LA R0,MAXCUU MAX 10 CUU PER LINE @V407490 00769000
  784. L R1,SAVEWRK5 BEGINNING OF MSG AREA @V407466 00770000
  785. LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00770500
  786. NEXTLINE CALL DMKQCNWT,PARM=NORET @V407466 00771000
  787. LA R1,MAXCUU(,R1) NEXT LINE POINTER @V407490 00772000
  788. SH R7,=H'10' SUBTRACT 10 @V407466 00773000
  789. CH R7,=H'10' STILL MORE THAN 10 LEFT @V407466 00774000
  790. BH NEXTLINE YES, ISSUE ANOTHER LINE @V407466 00775000
  791. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00776000
  792. BR R5 PUT OUT LAST LINE @V407466 00777000
  793. SPACE 2 00778000
  794. VERERR TM VDABITS+1,ATTERR WAS ERROR MESSAGE ISSUED? @V407466 00779000
  795. BO BLDBUFF YES, CLEAR MSG BUFFER @V407466 00780000
  796. SPACE 2 00781000
  797. CLEANXT EQU * @V407466 00782000
  798. L R1,SAVEWRK5 MESSAGE BUFFER TO FRET @V407466 00783000
  799. LA R1,0(,R1) CLEAR HIGH ORDER BYTE @VA13651 00783500
  800. LA R0,MULTSIZE+MSGSIZE+VOLSIZE WORKAREA SIZE @V60B6B8 00784000
  801. CALL DMKFRET @V407466 00785000
  802. DROP R6 @V407466 00786000
  803. BAL R5,SWPUSER SWITCH TO ATTACHEE'S VMBLOK @V407466 00787000
  804. UNLOCK BAL R5,FREUSER UNLOCK USER'S BLOCKS @V407466 00788000
  805. SPACE 3 00789000
  806. VDAATEXT EQU * @V407466 00790000
  807. EXIT RETURN TO CALLER @V407466 00791000
  808. EJECT 00792000
  809. ATTMSG DSECT NORMAL RESPONSES FOR 'ATTACH/DETACH' @V407466 00793000
  810. ATTDTYP DC C'DEVX ' EBCDIC DEVICE TYPE-NAME @V407466 00794000
  811. ATTADD1 DC C'CCU ' ADDRESS 1 @V407466 00795000
  812. ATTFLD1 DC C'ATTACH ' FIRST VARIABLE FIELD @V407466 00796000
  813. ATTFLD2 DC C'TO ' ... @V407466 00797000
  814. ATTUSER DC C'$USERID$ ' ATTACHEE USERID @V407466 00798000
  815. ATTADD2 DC C'CCU ' ADDRESS 2 @V407466 00799000
  816. ATTFLD3 DC C'BY ' @V407466 00800000
  817. ATTOPER DC C'$USERID$' USERID OF ATTACHER (NOT SYSOP) @V407466 00801000
  818. SPACE 00802000
  819. ATTSIZE EQU (*-ATTMSG+7)/8 BUFFER SIZE IN DBL-WDS @V407466 00803000
  820. SPACE 00804000
  821. * RANGE MESSAGE FORMAT FOLLOWS 00805000
  822. ORG ATTDTYP @V407466 00806000
  823. ATTRADD1 DC C'CUU' RADDR1 @V407466 00807000
  824. ATTDASH DC C'-' - @V407466 00808000
  825. ATTRADD2 DC C'CUU' RADDR2 @V407466 00809000
  826. SPACE 2 00810000
  827. SPACE 00811000
  828. DMKVDA CSECT , RE-ENTER PREVIOUS CSECT @V407466 00812000
  829. ATTACHED DC CL8'ATTACHED' CONSTANT FOR MESSAGE @V407466 00813000
  830. SPACE 2 00814000
  831. *---------------------------------------------------------------------* 00815000
  832. * CVTRADD - CONVERT DEVICE ADDRESS TO HEXADECIMAL * 00816000
  833. * ZAPVOLD - REMOVE VOLUME SERIAL FROM REAL DEVICE BLOCK * 00817000
  834. *---------------------------------------------------------------------* 00818000
  835. SPACE 2 00819000
  836. CVTRADD EQU * CONVERT REAL DEVICE ADDRESS @V407466 00820000
  837. L R1,DEVADDR @V407466 00821000
  838. TM VDABITS,RANGE+MULTR RANGE/MULTIPLES BEING PROC @V407466 00822000
  839. BZ CONVERT NO, USE ADDR IN DEVADDR FIELD @V407466 00823000
  840. LH R1,UDEVADD DEVICE ADDRESS @V407466 00824000
  841. CONVERT CALL DMKCVTBH @V407466 00825000
  842. BR R5 @V407466 00826000
  843. EJECT 00835000
  844. ATTVOLD EQU * ATTACH TO SYSTEM AS VOLID @V407466 00836000
  845. USING RDEVBLOK,R8 @V407466 00837000
  846. LA R7,MSGAREA(R4) USED IN CASE ERROR MSG @V407466 00838000
  847. CLI RDEVTYPC,CLASDASD IS IT A DASD DEVICE ? @V407466 00839000
  848. BNE INVTYPE NO - CANNOT ATTACH TO SYSTEM @V407466 00840000
  849. TM PSAMSS,MSSPRES MSS PRESENT IN THIS SYSTEM? @VA09319 00840010
  850. * VMI2040 00840020
  851. BZ ATTVOLD2 NO,DON'T TRY TO CAL DMKSSS @VA09319 00840030
  852. * VMI2040 00840040
  853. TM RDEVFTR,VIRTUAL+SYSVIRT IS THIS A 3330V @V60B6B8 00841000
  854. BNZ SYS3330V YES, CALL DMKSSS @V60B6B8 00842000
  855. SPACE 2 00843000
  856. * CANNOT ATTACH 3330V DEVICE ADDRESSES TO 'SYSTEM' 00844000
  857. SPACE 00845000
  858. * RDEVSYS RDEVOWN RDEVMOUT MEANING 00846000
  859. * FLAG 0 0 1 DEV FREE; VOLUME MOUNTED, 00847000
  860. * NOT ATTACHED 00848000
  861. * 0 0 0 DEVICE ATTACHED TO SYSTEM 00849000
  862. * EXCEPT IF THE VOLID IS 00850000
  863. * BLANK 00851000
  864. * 1 0 0 DEVICE ATTACHED TO SYSTEM 00852000
  865. * WITH OR WITHOUT LINKS HRC039DK 00853100
  866. * 1 1 0 DEV ATTACHED TO SYSTEM & 00854000
  867. * IS A SYSTEM OWNED VOLUME 00855000
  868. SPACE 00856000
  869. .SYSTEM ANOP 00857000
  870. ATTVOLD2 TM RDEVSTAT,RDEVDISA IS THE DEVICE OFFLINE ? @V407466 00858000
  871. BO ERR12 YES -- SEND OFFLINE MESSAGE @VA13651 00859000
  872. TM RDEVSTAT,RDEVDED DEDICATED TO A USER ? @V407466 00860000
  873. BO ERR24 YES -- SEND DEDICATED MESSAGE @VA13651 00861000
  874. TM RDEVFLAG,RDEVOWN CP-OWNED VOLUME ? @V407466 00862000
  875. BO DEVOWND YES -- @V407466 00863000
  876. CLC RDEVLNKS,=H'0' Does dasd have existing links? HRC039DK 00864100
  877. BNE DEVSHRD Minidisks in use on dasd HRC039DK 00864200
  878. TM RDEVFLAG,RDEVSYS Dasd already attached to sys.? HRC039DK 00864300
  879. BZ ALLOK No. Can be attached now. HRC039DK 00864400
  880. TM RDEVFLAG,RDEVMOUT VOL ALREADY ATTACHED TO SYS? @V407466 00866000
  881. BO ALLOK NO- DEV NOT MOUNTED AFTER IPL @V407466 00867000
  882. CLC RDEVSER(6),BLANKS VOLID BLANK (NOT RDY AT IPL) @V407466 00868000
  883. BE ALLOK @V407466 00869000
  884. MVC CMDUSER(6),RDEVSER SEND MSG WITH RDEVSER @V407466 00870000
  885. B MSG125E SEND THE MESSAGE @V407466 00871000
  886. SPACE 2 00872000
  887. SYS3330V EQU * ATTACH A VUA TO THE SYSTEM @V60B6B8 00873000
  888. LA R0,CMDUSER ADDR OF VOLID @V60B6B8 00874000
  889. CALL DMKSSSAS VERIFY PARMS, MOUNT VOID IF @V60B6B8 00875000
  890. * NECESSARY 00876000
  891. LTR R0,R0 WAS THERE AN ERROR @V60B6B8 00877000
  892. BZ ALLOK NO, VOLUME NOW AVAILABLE @V60B6B8 00878000
  893. LA R15,RC4 EXPECTED RETURN CODE @V60B6B8 00879000
  894. CR R0,R15 AGAINST ACTUAL @V60B6B8 00880000
  895. BE SAVEINFO OK, WAIT FOR MSS MOUNT @V60B6B8 00881000
  896. B WRNGVOL @V60B6B8 00882000
  897. * 00883000
  898. * THE FOLLOWING ENTRY POINT IS REACHED AFTER AN 00884000
  899. * MSS VOLUME MOUNT TO SATISFY AN ATTACH 00885000
  900. * REQUEST. SCHEDULE A PENDING I/O REQUEST 00886000
  901. * IF THERE IS ONE, THEN FREE UP THE MSSCOM 00887000
  902. * BLOCK WHICH REPRESENTED THE MOUNT. 00888000
  903. * 00889000
  904. DMKVDAS2 RELOC @V60B6B8 00890000
  905. USING OSVSCOM,R3 R3 SET BY DMKSSS @V60B6B8 00891000
  906. MVC SAVEWRK1,SAVEWRK1-SAVEAREA(R1) RESTORE FLAGS @V60B6B8 00892000
  907. * TO CURRENT SAVEAREA 00893000
  908. MVC SAVEWRK2(WORKAREA),SAVEWRK2-SAVEAREA(R1) @V60B6B8 00894000
  909. * RESTORE OTHER WORKING INFO 00895000
  910. LA R0,SAVESIZE SIZE OF SAVE AREA @V60B6B8 00896000
  911. CALL DMKFRET GIVE IT BACK @V60B6B8 00897000
  912. L R1,MSSTASK3 ADDR OF CPEXBLOK, IF IT EXISTS @V60B6B8 00898000
  913. LTR R1,R1 IS THERE PENDING I/O @V60B6B8 00899000
  914. BZ FRECOM1 NO @V60B6B8 00900000
  915. CALL DMKSTKCP STACK THE CPEXBLOK FOR I/O @V60B6B8 00901000
  916. FRECOM1 EQU * @V60B6B8 00902000
  917. LA R0,MSSSIZE NO OF D-WORDS IN MSSCOM @V60B6B8 00903000
  918. LR R1,R3 ADDR OF MSSCOM @V60B6B8 00904000
  919. CALL DMKFRET RETURN STORAGE TO SYSTEM @V60B6B8 00905000
  920. ALLOK EQU * @V407466 00906000
  921. LA R1,CMDUSER THIS IS THE VOLID @V407466 00907000
  922. LA R0,VOLIDSIZ ... LENGTH @V407490 00908000
  923. TM RDEVFTR,VIRTUAL+SYSVIRT IS IT A 3330V ? @VA09301 00908100
  924. BZ SKPON NO, DON'T TURN THE FLAG ON @VA09301 00908200
  925. OI RDEVFLAG,RDEVMOUT TELL SCNVS THIS VOL OK @V60B6B8 00909000
  926. SKPON CALL DMKSCNVS SEARCH FOR DUPLICATE VOLID @VA09301 00910000
  927. BZ DUPVOL DUPLICATE VOLID - MSG DMKVDA125E @V407466 00911000
  928. TM RDEVFTR,VIRTUAL+SYSVIRT IS IT A 3330V ? @VA09301 00911100
  929. BZ SKPOFF NO,DON'T TURN THE FLAG OFF @VA09301 00911200
  930. NI RDEVFLAG,X'FF'-RDEVMOUT @V60B6B8 00912000
  931. SKPOFF BAL R7,DEVCHECK VERIFY DEVICE EXISTENCE @VA09301 00913100
  932. LTR R2,R2 ERROR ENCOUNTERED ON LABEL READ? @V407466 00914000
  933. BNZ ERROR YES, ISSUE MESSAGE @V407466 00915000
  934. LA R7,MSGAREA(R4) RESTORE R7 FOR MSG BUFFER @V407466 00916000
  935. CLC CMDUSER(6),RDEVSER DO THE LABELS MATCH ? @V407466 00917000
  936. BNE WRNGVOL NO @V407466 00918000
  937. SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 00919000
  938. TM VDABITS+1,CPOWND ALLOCATION DATA PRESENT ? @V407466 00920000
  939. BZ RESMOUT NO - ALL FINISHED EXCEPT MSGS @V407466 00921000
  940. SPACE 1 00922000
  941. * SEARCH OWNED-VOLUME LIST TO SEE IF THE ALLOCATION DATA 00923000
  942. * IS PERTINENT TO THE RUNNING SYSTEM 00924000
  943. SPACE 00925000
  944. L R4,=A(DMKSYSOW) OWNED LIST START @V407466 00926000
  945. USING OWNDLIST,R4 @V407466 00927000
  946. L R3,=A(DMKSYSOC) COUNT OF VOLUMES @V407466 00928000
  947. L R3,0(,R3) ... @V407466 00929000
  948. VOLSRCH EQU * SEE IF ACTUALLY OWNED @V407466 00930000
  949. CLC OWNDVSER(6),RDEVSER @V407466 00931000
  950. BE VOLCHAN FOUND IT @V407466 00932000
  951. LA R4,8(,R4) NEXT ENTRY IN LIST @V407466 00933000
  952. BCT R3,VOLSRCH LOOP THRU OWNED LIST @V407466 00934000
  953. RESMOUT NI RDEVFLAG,X'FF'-RDEVMOUT INDICATE ATTACHED TO SYS@V407466 00935000
  954. OI RDEVFLAG,RDEVSYS Device now attached to system HRC039DK 00935100
  955. L R4,SAVEWRK5 MSGAREA ADDRESS @V407466 00936000
  956. LA R4,0(,R4) CLEAR HIGH ORDER BYTE @VA13651 00936500
  957. B RESPATT NOT PERTINENT - GIVE RESPONSES @V407466 00937000
  958. SPACE 00938000
  959. VOLCHAN EQU * VOLUME IS CP-OWNED @V407466 00939000
  960. OI VDABITS+1,ALLOCN READ ALLOCATION RECORD @V407466 00940000
  961. BAL R7,DEVCHECK VERIFY DEVICE EXISTENCE @V407466 00941000
  962. LTR R2,R2 ERROR READING ALLOC. DATA @V407466 00942000
  963. BNZ ERROR YES, ISSUE ERROR MESSAGE @V407466 00943000
  964. SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 00944000
  965. OI RDEVFLAG,RDEVOWN+RDEVSYS @V407466 00945000
  966. NI RDEVFLAG,X'FF'-RDEVMOUT INDICATE VOLUME ATTACHED@V407466 00946000
  967. LH R15,OWNDPREF SEE IF PAGING VOLUME @V407466 00947000
  968. LTR R15,R15 THIS BETTER BE MINUS... @V407466 00948000
  969. BM VDA2A OR ELSE SOMETHING IS REALLY WRONG@V407466 00949000
  970. SPACE 00950000
  971. ABEND 2 ...LIKE I SAID.. @V407466 00951000
  972. SPACE 00952000
  973. VDA2A EQU * @V407466 00953000
  974. LPR R15,R15 MAKE -1, -2 INTO +1, +2 @V407466 00954000
  975. SLL R15,2 ...INTO +4, +8 @V407466 00955000
  976. B *(R15) SKIP FLAG SET IF NOT PREFERRED @V407466 00956000
  977. SPACE 2 00957000
  978. OI RDEVFLAG,RDEVPREF @V407466 00958000
  979. SPACE 00959000
  980. * SET UP TO CHAIN IN ALLOCATION TABLES 00960000
  981. * R10 - ADDRESS OF IOBLOK 00961000
  982. * R4 OWNDLIST POINTER 00962000
  983. * R8 - RDEVBLOK POINTER 00963000
  984. * R3 - INDEX 00964000
  985. SPACE 00965000
  986. LR R3,R15 MOVE INDEX TO R3 @V407466 00966000
  987. CALL DMKVDCAL @V407466 00967000
  988. L R4,SAVEWRK5 RESTORE MSGAREA ADDRESS @V407466 00968000
  989. LA R4,0(,R4) CLEAR HIGH ORDER BYTE @VA13651 00968500
  990. B RESPATT ISSUE RESPONSE MESSAGES @V407466 00969000
  991. EJECT 00970000
  992. EJECT 00971000
  993. *********************************************************************** 00972000
  994. * CALL TO DMKVDEDC 00973000
  995. * SUBROUTINE TO VERIFY DEVICE EXISTENCE. 00974000
  996. * 00975000
  997. * A CALL IS MADE TO DMKVDEDC TO VERIFY DEVICE 00976000
  998. * EXISTENCE. SETS UP AN I/O TASK (TIO) TO SEE IF 00977000
  999. * THE DEVICE EXISTS. IF THE DEVICE DOES NOT EXIST, 00978000
  1000. * IT IS MARKED OFFLINE AND A 'DOES NOT EXIST' MESSAGE 00979000
  1001. SPACE 2 00980000
  1002. * IS ISSUED FROM DMKVDA. 00981000
  1003. * 00982000
  1004. * FOR DASD, DMKVDEDC WILL SET UP AND EXECUTE AN 00983000
  1005. * I/O TASK TO READ THE DASD VOLUME LABEL OF THE DEVICE 00984000
  1006. * BEING ATTACHED. IF SUCCESSFUL, THE VOLUME SERIAL 00985000
  1007. * IS INSERTED INTO THE 'RDEVSER' FIELD OF THE REAL 00986000
  1008. * DEVICE BLOCK. AN ERROR RETURN CODE IS PASSED BACK TO 00987000
  1009. * DMKVDA IF FAILURE ENCOUNTERED ON THE READ. A FLAG 00988000
  1010. * IS SET IF IT IS A CP/370 OWNED VOLUME. 00989000
  1011. * IF DMKVDEDC WAS CALLED WITH PARM = 1, INDICATING 00990000
  1012. * ALLOCATION DATA IS PRESENT, THE ALLOCATION 00991000
  1013. * RECORD IS READ INTO FREE STORAGE. 00992000
  1014. *********************************************************************** 00993000
  1015. SPACE 00994000
  1016. DEVCHECK EQU * CHECK DEVICE EXISTENCE ROUT. @V407466 00995000
  1017. L R6,DEVADDR GET VADDR IN CUU FORM @V407466 00997000
  1018. TM VDABITS,RANGE+MULTR RANGE OR MULTIPLES? @V407466 00998000
  1019. BZ TSTALLOC SEE IF READING ALLOC. DATA @V407466 00999000
  1020. LH R6,UDEVADD MUST GET VADDR FROM UDEVBLOK @V407466 01000000
  1021. TSTALLOC TM VDABITS+1,ALLOCN READING ALLOC. REC. THIS TIME? 01001000
  1022. BZ VDE NO, REGL LABEL READ @V407466 01002000
  1023. SPACE 01003000
  1024. * R8 POINTS TO RDEVBLOK @V407466 01004000
  1025. * R6 CONTAINS RADDR OF DEVICE BEING ATTACHED @V407466 01005000
  1026. * R10 AND R11 CONTAIN VMBLOK ADDRESSES @V407466 01006000
  1027. SPACE 01007000
  1028. CALL DMKVDEDC,PARM=1 IND. ALLOC READ @V407466 01008000
  1029. B CHKRC NOW CHECK FOR ERRORS @V407466 01009000
  1030. SPACE 01010000
  1031. VDE CALL DMKVDEDC GO VERIFY DEVICE EXISTENCE @V407466 01011000
  1032. SPACE 01012000
  1033. * UPON RETURN FROM DMKVDEDC, R2 CONTAINS ERROR CODE OR @V407466 01013000
  1034. * ZERO INDICATING SUCCESSFUL COMPLETION. @V407466 01014000
  1035. SPACE 01015000
  1036. CHKRC CH R2,=H'68' DEVICE NOT READY? @V407466 01016000
  1037. BE ERROR ... @VA07393 01017000
  1038. CH R2,=H'80' DEVICE UNKNOWN @V407466 01018000
  1039. BE ERROR YES, ISSUE ERROR MSG @V407466 01019000
  1040. CH R2,=H'120' BUSY CONDITION @VA11952 01019100
  1041. BE ERROR @VA11952 01019150
  1042. * THERE MAY HAVE BEEN A BAD LABEL READ BUT THIS @V407466 01020000
  1043. * ERROR MESSAGE IS ISSUED ONLY WHEN ATTACHING TO THE SYSTEM @V407466 01021000
  1044. BR R7 CONTINUE TO PROCESS @V407466 01022000
  1045. SPACE 2 01023000
  1046. * BITS DEFINED IN VDABITS+1 : 01024000
  1047. * 01025000
  1048. CPOWND EQU X'20' ALLOCATION DATA PRESENT ON VOLUME@V407466 01026000
  1049. ALLOCN EQU X'10' READING ALLOCATION DATA @V407466 01027000
  1050. NOTREDY EQU X'08' 'NOTREADY' @V407466 01028000
  1051. ATTERR EQU X'02' ERROR MSG TO FOLLOW RESPONSE @V407466 01029000
  1052. SPACE 01030000
  1053. BLANK EQU X'40' BLANK @V407466 01031000
  1054. SPACE 01032000
  1055. DASH DC C'-' RANGE DELIMITER @V407466 01033000
  1056. SPACE 01034000
  1057. SPACE 01035000
  1058. EJECT 01036000
  1059. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01037000
  1060. * DEDCHAN - ATTACH DEDICATED CHANNEL(S); CONTROL TRANSFERS * 01038000
  1061. * TO THE MODULE DMKVCHDC FOR TESTING THE AVAILABILITY * 01039000
  1062. * OF THE CHANNEL AND DEVICES, AND FOR THE ACTUAL ATTACH * 01040000
  1063. * FUNCTION. FLAGS AND COMMAND INE DATA ARE PASSED TO * 01041000
  1064. * DMKVCHDC IN REGISTERS 1-4. * 01042000
  1065. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 01043000
  1066. DS 0F 01044000
  1067. SPACE 2 01045000
  1068. DEDCHAN EQU * PROCESSING FOR DEDICATED CHANNELS@V407466 01046000
  1069. L R1,VDABITS FLAGS USED WITHIN DMKVDA @V407466 01047000
  1070. L R2,DEVADDR BYTE 3 HAS CHANNEL NUMBER @V407466 01048000
  1071. LM R3,R4,CMDUSER USERID WANTING THE CHANNEL @V407466 01049000
  1072. SPACE 01050000
  1073. CALL DMKVCHDC @V407466 01051000
  1074. BAL R5,SWPCALL SWITCH TO CALLER'S VMBLOK @V407466 01052000
  1075. ST R2,SAVER2 SAVE RETURN CODE @V407490 01053000
  1076. LA R0,MULTSIZE+MSGSIZE+VOLSIZE WORKAREA SIZE @V60B6B8 01054000
  1077. L R1,SAVEWRK5 ADDR OF WORK AREA @V407466 01055000
  1078. CALL DMKFRET RELEASE STORAGE @V407466 01056000
  1079. B VDAATEXT EXIT @V407466 01057000
  1080. EJECT 01058000
  1081. *---------------------------------------------------------------------* 01059000
  1082. * FREUSER AND SWPUSER - UNLOCK USERID AND SWAP VMBLOKS * 01060000
  1083. * LOKUSER AND SWPCALL - LOCK A USERID AND SWAP VMBLOKS * 01061000
  1084. *---------------------------------------------------------------------* 01062000
  1085. SPACE 2 01063000
  1086. FREUSER EQU * UNLOCK ATTACHEE'S USERID @V407466 01064000
  1087. LA R1,VMUSER @V407466 01065000
  1088. CALL DMKLOCKD DIRECTORY UNLOCK SUBROUTINE @V407466 01066000
  1089. SWPCALL EQU * GO BACK TO CALLER'S VMBLOK @V407466 01067000
  1090. L R1,SAVER11 GET CALLER'S VMBLOK ADDRESS @V407508 01068000
  1091. SWTCHVM SWITCH TO CALLER'S VMBLOK @V4M0193 01069000
  1092. BR R5 ...RETURN TO CALLER @V407466 01070000
  1093. SPACE 2 01071000
  1094. LOKUSER EQU * THROW A LOCK ON DEVICE BLOCKS @V407466 01072000
  1095. LA R1,VMUSER POINT TO THE USERID @V407466 01073000
  1096. CALL DMKLOCKQ ...AND LOCK IT @V407466 01074000
  1097. LA R0,L'VMUSER LENGTH OF USERID @VA08223 01075000
  1098. CALL DMKSCNAU USER STILL LOGGED ON? @V407466 01076000
  1099. BNZ NOTLOGD NO - ERROR @V407466 01077000
  1100. BR R5 @V407466 01078000
  1101. SPACE 2 01079000
  1102. SWPUSER EQU * SWAP TO TARGET USER'S VMBLOK @V407466 01080000
  1103. LR R1,R10 GET USER'S VMBLOK ADDRESS @V407508 01081000
  1104. SWTCHVM SWITCH TO SPECIFIED USER @V4M0193 01082000
  1105. BR R5 @V407466 01083000
  1106. EJECT 01084000
  1107. CHKUSER EQU * ... @V407466 01085000
  1108. LA R0,8 LENGTH OF USERID @V407466 01086000
  1109. CALL DMKSCNAU USER STILL LOGGED ON @V407466 01087000
  1110. BNZ NOTLOGD NOT LOGGED ON - ERROR @V407466 01088000
  1111. BR R5 RETURN TO MAINLINE CODE @V407466 01089000
  1112. SPACE 3 01090000
  1113. *---------------------------------------------------------------------* 01091000
  1114. * GETRDEV, GETRTYP - GET REAL DEVICE BLOCK + TYPE NAME * 01092000
  1115. *---------------------------------------------------------------------* 01093000
  1116. SPACE 2 01094000
  1117. GETRDEV EQU * LOCATE REAL DEVICE BLOCK @V407466 01095000
  1118. TM VDABITS,RANGE+MULTR RANGE OR MULTIPLES @V407466 01096000
  1119. BM GETRDEV2 YES, R1 ALREADY SET UP @V407466 01097000
  1120. L R1,DEVADDR REAL DEVICE ADDRESS @V407466 01098000
  1121. GETRDEV2 CALL DMKSCNRU ...FIND THE RDEVBLOK @V407466 01099000
  1122. BNZ UNKNOWN REAL DEVICE DOES NOT EXIST @V407466 01100000
  1123. ST R8,SAVEWRK9 SAVE THE RDEVBLOK POINTER @V407466 01101000
  1124. BR R5 @V407466 01102000
  1125. SPACE 01103000
  1126. GETRTYP EQU * GET EBCDIC TYPE-NAME OF REAL DEV @V407466 01104000
  1127. L R8,SAVEWRK9 RDEVBLOK ADDRESS @V407466 01105000
  1128. CALL DMKSCNRN ...GET IT'S TYPE-NAME @V407466 01106000
  1129. LR R3,R1 ...INTO R4 @V407466 01107000
  1130. BR R5 @V407466 01108000
  1131. EJECT 01109000
  1132. ERR08 LA R2,RC8 DEVICE NOT DRAINED @V407466 01110000
  1133. B ERROR ISSUE ERROR MSG @V407466 01111000
  1134. SPACE 01112000
  1135. ERR12 LA R2,RC12 DEVICE OFFLINE @V407466 01113000
  1136. CLI RDEVTYPC,CLASDASD DASD DEVICE ?? @V407490 01114000
  1137. BNE ERROR NO @V407490 01115000
  1138. CLI RDEVTYPE,TYP2305 HOW ABOUT A DRUM ?? @V407490 01116000
  1139. BNE ERROR NOPE @V407490 01117000
  1140. TM RDEVADD+1,X'07' IS THIS A BASE ADDRESS ?? @V407490 01118000
  1141. BNZ VDA021A INVALID BASE ADDRESS,GIVE VDA021 @V407490 01119000
  1142. B ERROR COMMON ERROR PROCESSING @V407490 01120000
  1143. SPACE 01121000
  1144. ERR16 LA R2,RC16 DEVICE SHARED @V407466 01122000
  1145. B ERROR ISSUE ERROR MSG @V407466 01123000
  1146. SPACE 01123200
  1147. DEVOWND EQU * DEVICE ALREADY CP OWNED @VA13651 01123400
  1148. LA R2,RC20 SET UP ERROR INDEX @VA13651 01123600
  1149. B ERROR ISSUE ERROR MESSAGE @VA13651 01123800
  1150. SPACE 2 01124000
  1151. ERR24 LA R2,RC24 DEVICE ALREADY DEDICATED @V407466 01125000
  1152. B ERROR COMMON ERROR PROCESSING @V407466 01126000
  1153. SPACE 01126200
  1154. NOTLOGD EQU * USERID NOT LOGGED ON @VA13651 01126400
  1155. LA R2,RC44 SET UP ERROR INDEX @VA13651 01126600
  1156. B ERROR ISSUE ERROR MESSAGE @VA13651 01126800
  1157. SPACE 2 01127000
  1158. ERR56 LA R2,RC56 DEVICE ALREADY DEFINED @V407466 01128000
  1159. B ERROR ISSUE ERROR MESSAGE @VA13651 01128020
  1160. SPACE 1 01128040
  1161. UNKNOWN EQU * DEV ADDR DOES NOT EXIST @VA13651 01128060
  1162. LA R2,RC80 SET UP ERROR INDEX @VA13651 01128080
  1163. B ERROR ISSUE ERROR MESSAGE @VA13651 01128100
  1164. SPACE 1 01128120
  1165. DEVSHRD EQU * DASD RADDR IN USE BY NNN USERS @VA13651 01128140
  1166. LA R2,RC84 SET UP ERROR INDEX @VA13651 01128160
  1167. B ERROR ISSUE ERROR MESSAGE @VA13651 01128180
  1168. SPACE 1 01128200
  1169. INVOPTS2 EQU * INVALID OPTION @VA13651 01128220
  1170. LA R2,RC88 SET UP ERROR INDEX @VA13651 01128240
  1171. B ERROR ISSUE ERROR MESSAGE @VA13651 01128260
  1172. SPACE 1 01128280
  1173. INVTYPE EQU * INVALID DEVICE TYPE @VA13651 01128300
  1174. LA R2,RC92 SET UP ERROR INDEX @VA13651 01128320
  1175. B ERROR ISSUE ERROR MESSAGE @VA13651 01128340
  1176. SPACE 1 01128360
  1177. VDA021A EQU * RADDR MISSING OR INVALID @VA13651 01128380
  1178. LA R2,RC96 SET UP ERROR INDEX @VA13651 01128400
  1179. B ERROR ISSUE ERROR MESSAGE @VA13651 01128420
  1180. SPACE 1 01128440
  1181. VDA022B EQU * VADDR MISSING OR INVALID @VA13651 01128460
  1182. LA R2,RC100 SET UP ERROR INDEX @VA13651 01128480
  1183. B ERROR ISSUE ERROR MESSAGE @VA13651 01128500
  1184. SPACE 1 01128520
  1185. DUPVOL EQU * VOLID ALREADY ATTACHED @VA13651 01128540
  1186. LR R8,R1 PICK UP ADDR OF DEV CONT VOLID @VA13651 01128560
  1187. MSG125E EQU * @VA13651 01128580
  1188. LA R2,RC104 SET UP ERROR INDEX @VA13651 01128600
  1189. B ERROR ISSUE ERROR MESSAGE @VA13651 01128620
  1190. SPACE 1 01128640
  1191. WRNGVOL EQU * @VA13651 01128660
  1192. LA R2,RC108 SET UP ERROR INDEX @VA13651 01128680
  1193. B ERROR ISSUE ERROR MESSAGE @VA13651 01128700
  1194. SPACE 1 01128720
  1195. MSG076 EQU * INVALID PARAMETERS @VA13651 01128740
  1196. LA R2,RC112 SET UP ERROR INDEX @VA13651 01128760
  1197. B ERROR ISSUE ERROR MESSAGE @VA13217 01128790
  1198. SPACE 1 01128820
  1199. ERR153 EQU * MAXIMUM DEVICES EXCEEDED @VA13217 01128850
  1200. LA R2,RC124 SET UP ERROR INDEX @VA13217 01128880
  1201. B ERROR ISSUE ERROR MESSAGE @VA13217 01128910
  1202. SPACE 1 01128940
  1203. ERROR EQU * COMMON ERROR MESSAGE ROUTINE @V407466 01129000
  1204. ST R2,SAVEWRK7 SAVE ERROR INDEX @VA13651 01130000
  1205. B ERRTABL-8(R2) BRANCH TO ERROR ROUTINE @V407466 01133000
  1206. SPACE 2 01134000
  1207. ERRTABL EQU * JUMP TABLE FOR R2 ERROR INDEX @VA13651 01135000
  1208. B CHKRANGE INDEX = 8 @VA13651 01138000
  1209. B CHKRANGE INDEX = 12 @VA13651 01141000
  1210. B CHKRANGE INDEX = 16 @VA13651 01144000
  1211. B CHKRANGE INDEX = 20 @VA13651 01147000
  1212. B CHKRANGE INDEX = 24 @VA13651 01150000
  1213. B SENDEMSG INDEX = 28 @VA13651 01153000
  1214. B SENDEMSG INDEX = 32 @VA13651 01156000
  1215. B SENDEMSG INDEX = 36 @VA13651 01159000
  1216. B SENDEMSG INDEX = 40 @VA13651 01162000
  1217. B SENDEMSG INDEX = 44 @VA13651 01165000
  1218. B SENDEMSG INDEX = 48 @VA13651 01168000
  1219. B SENDEMSG INDEX = 52 @VA13651 01171000
  1220. B CHKRANGE INDEX = 56 @VA13651 01174000
  1221. B BAD05 INDEX = 60 @VA13651 01177000
  1222. B CHANDED INDEX = 64 @VA13651 01180000
  1223. B CHKRANGE INDEX = 68 @VA13651 01183000
  1224. B SENDEMSG INDEX = 72 @VA13651 01186000
  1225. B SENDEMSG INDEX = 76 @VA13651 01189000
  1226. B CHKRANGE INDEX = 80 @VA13651 01192000
  1227. B CHKRANGE INDEX = 84 @VA13651 01195000
  1228. B CHKRANGE INDEX = 88 @VA13651 01198000
  1229. B SENDEMSG INDEX = 92 @VA13651 01201000
  1230. B CHKRANGE INDEX = 96 @VA13651 01204000
  1231. B CHKRANGE INDEX = 100 @VA13651 01207000
  1232. B SENDEMSG INDEX = 104 @VA13651 01210000
  1233. B SENDEMSG INDEX = 108 @VA13651 01213000
  1234. B SENDEMSG INDEX = 112 @VA13651 01216000
  1235. B SENDEMSG INDEX = 120 @VA11952 01217000
  1236. B CHKRANGE INDEX = 124 @VA13217 01218000
  1237. EJECT 01239000
  1238. BAD05 LA R6,VCUDVTBL-VCUBLOK(R7) POINT TO DEVICE TABLE @V407466 01240000
  1239. SLR R1,R6 CALC BAD DEVICE TABLE INDEX @V407466 01241000
  1240. SRL R1,1 CONVERT INDEX TO 'DEV' ADDR @V407466 01242000
  1241. LH R2,VIRTADD VIRTUAL ADDRESS TO R2 @V407466 01244000
  1242. OR R1,R2 ADD BAD DEV ADDR TO BASE FOR MSG @V407466 01245000
  1243. STH R1,VIRTADD AND RESAVE @V407466 01246000
  1244. B CHKRANGE GO TEST FOR RANGE @VA13651 01247000
  1245. SPACE 01287000
  1246. CHANDED EQU * ERROR FOR DEDICATED CHANNELS @V407490 01288000
  1247. AIF (NOT &DEDCH).NOTDED3 **AIF** @V407466 01289000
  1248. LR R8,R6 SAVE R6 FOR LATER @V407466 01290000
  1249. .NOTDED3 ANOP **ANOP** 01291000
  1250. SPACE 1 01298000
  1251. CHKRANGE EQU * @VA13651 01305000
  1252. BAL R5,TSTRANGE TEST FOR RANGE BEING PROCESSED @VA13651 01312000
  1253. SENDEMSG EQU * CALL VDE ROUTINE TO ISSUE MSG @VA13651 01319000
  1254. LR R2,R0 SAVE PARM COUNT FOR VDERR MSG @VA13651 01326000
  1255. LR R7,R1 SAVE PARM ADDRESS FOR VDERR MSG @VA13651 01333000
  1256. BAL R5,SWPCALL ENSURE VMBLOK SWITCH BEFORE CALL @VA13651 01340000
  1257. LR R0,R2 RESTORE PARM COUNT FOR VDERR MSG @VA13651 01347000
  1258. LR R1,R7 RESTORE PARM ADDR FOR VDERR MSG @VA13651 01354000
  1259. L R2,SAVEWRK7 RELOAD ERROR INDEX FOR VDERR @VA13651 01361000
  1260. L R7,SAVEWRK5 LOAD ADDRESS OF WORKAREA @VA13651 01368000
  1261. LA R7,MSGAREA(,R7) GET ADDRESS OF MESSAGE AREA @VA13651 01375000
  1262. CALL DMKVDERR CALL ERROR MESSAGE ROUTINE @VA13651 01382000
  1263. B BRTABLE(R2) CONTINUE AT APPROPRIATE PLACE @VA13651 01389000
  1264. SPACE 1 01396000
  1265. BRTABLE EQU * @VA13651 01403000
  1266. B CLEANXT EXIT @VA13651 01410000
  1267. B PROCESS CONTINUE PROCESSING RANGE @VA13651 01417000
  1268. B MULTCONT CONTINUE PROCESSING MULTIPLES @VA13651 01424000
  1269. B RESPATT ISSUE RESPONSES @VA13651 01431000
  1270. SPACE 2 01449000
  1271. TSTRANGE TM VDABITS,RANGE RANGE BEING PROCESSED @V407466 01450000
  1272. BCR 14,R5 NO, JUST ISSUE ERROR MESSAGE @V407466 01451000
  1273. OI VDABITS+1,ATTERR ISSUE SUCCESSFUL MSG FIRST @V407466 01452000
  1274. ST R5,SAVEWRK8 STORE R5 TEMPORARILY @V407466 01453000
  1275. BAL R6,RESPOND2 GO ISSUE RESPONSE MESSAGES @V407466 01454000
  1276. NI VDABITS+1,X'FF'-ATTERR TURN OFF SWITCH @V407466 01455000
  1277. L R5,SAVEWRK8 RESTORE R5 @V407466 01456000
  1278. BR R5 RETURN TO MAINLINE @V407466 01457000
  1279. SPACE 2 01458000
  1280. SPACE 01481000
  1281. * THE FOLLOWING ERROR CODE EQUATES ARE USED IN THIS MODULE 01482000
  1282. RC12 EQU 12 DEVICE IS OFFLINE @V407466 01483000
  1283. RC8 EQU 8 DEVICE NOT DRAINED @V407466 01484000
  1284. RC16 EQU 16 DEVICE SHARED @V407466 01485000
  1285. RC20 EQU 20 DEVICE ALREADY CP OWNED @VA13651 01485500
  1286. RC24 EQU 24 DEVICE ALREADY ATTACHED @V407466 01486000
  1287. RC44 EQU 44 USERID NOT LOGGED ON @VA13651 01486500
  1288. RC56 EQU 56 DEVICE ALREADY DEFINED @V407466 01487000
  1289. RC60 EQU 60 BAD LABEL READ @V407466 01488000
  1290. RC64 EQU 64 CHANNEL DEDICATED @V407466 01489000
  1291. RC80 EQU 80 DEVICE DOES NOT EXIST @VA13651 01490000
  1292. RC84 EQU 84 DEVICE ALREADY IN USE @VA13651 01490100
  1293. RC88 EQU 88 INVALID OPTION @VA13651 01490200
  1294. RC92 EQU 92 INVALID DEVICE TYPE @VA13651 01490300
  1295. RC96 EQU 96 RADDR MISSING OR INVALID @VA13651 01490400
  1296. RC100 EQU 100 VADDR MISSING OR INVALID @VA13651 01490500
  1297. RC104 EQU 104 DUPLICATE VOLUME @VA13651 01490600
  1298. RC108 EQU 108 VOLUMES DON'T MATCH @VA13651 01490700
  1299. RC112 EQU 112 INVALID PARAMETERS @VA13651 01490800
  1300. RC124 EQU 124 MAXIMUM DEVICES EXCEEDED @VA13217 01490900
  1301. * FLAGS SET IN SAVEWRK9 BY DMKVDC 01491000
  1302. VIRTPRES EQU X'40' 3330V PARM PRESENT @V60B6B8 01492000
  1303. VOLPRES EQU X'80' VOLID PARM PRESENT @V60B6B8 01493000
  1304. EJECT 01494000
  1305. RC4 EQU 4 @V60B6B8 01530000
  1306. VOLSIZE EQU 1 @V60B6B8 01532000
  1307. FLAGLEN EQU 1 LENGTH OF FLAGS IN SAVEWRK @V60B6B8 01533000
  1308. EJECT 01535000
  1309. LTORG @V407466 01536000
  1310. EJECT 01537000
  1311. COPY SAVE @V407466 01538000
  1312. WORKAREA EQU ((SAVEWRK9+L'SAVEWRK9)-SAVEWRK2) LNGTH OF WORKAR@V60B6B8 01539000
  1313. EJECT 01540000
  1314. *----------------------------* 01541000
  1315. * 01542000
  1316. WRK2 DSECT ERROR MESSAGE DSECT @V407466 01543000
  1317. ATTCUU DS CL3 CUU @V407466 01544000
  1318. ATTSIZE1 EQU *-ATTCUU DATA LENGTH @V407466 01545000
  1319. ATTDEL4 DS X DELIMITER @V407466 01546000
  1320. ATTNO DS CL3 NUMBER OF USERS @V407466 01547000
  1321. ATTSIZE5 EQU *-ATTCUU DATA LENGTH @V407466 01548000
  1322. DS X ... @V407466 01549000
  1323. ATTDEL1 DS X DELIMITER @V407466 01550000
  1324. ATTUSE DS CL3 USERID @V407466 01551000
  1325. ATTDEL5 DS X DELIMITER @V407466 01552000
  1326. ATTUSER2 DS CL4 USERID @V407466 01553000
  1327. ATTSIZE2 EQU *-ATTCUU DATA LENGTH @V407466 01554000
  1328. ATTDEL2 DS X DELIMITER @V407466 01555000
  1329. ATTVADDR DS CL3 VADDR @V407466 01556000
  1330. ATTSIZE3 EQU *-ATTCUU DATA LENGTH @V407466 01557000
  1331. MSGSIZE EQU (*-ATTCUU+7)/8 @V407466 01558000
  1332. ORG ATTDEL1 SAVEWRK4 @V407466 01559000
  1333. ATTDEL3 DS X DELIMITER @V407466 01560000
  1334. ATTCHAN DS CL2 CHANNEL @V407466 01561000
  1335. ATTSIZE4 EQU *-ATTCUU DATA LENGTH @V407466 01562000
  1336. ORG ATTCUU @V407466 01563000
  1337. DS CL4 @V407466 01564000
  1338. ATTCON DS CL8 CONSTANT 'ATTACHED' @V407466 01565000
  1339. *----------------------------* 01566000
  1340. * 01567000
  1341. VDABITS EQU SAVEWRK1 FLAGS USED WITHIN VDA @V407466 01568000
  1342. MULTCUU EQU SAVEWRK1+2 NO. MULT. ADDRS IN MSG @V407466 01569000
  1343. DEVADDR EQU SAVEWRK2 REAL/VIRTUAL DEVICE ADDRESS @V407466 01570000
  1344. CMDUSER EQU SAVEWRK3 AND SAVEWRK4 - USERID @V407466 01571000
  1345. VIRTADD EQU SAVEWRK1+2 VIRTUAL DEVICE ADDRESS @V407466 01572000
  1346. SPACE 01573000
  1347. * EQUATES 01574000
  1348. MAXCUU EQU 40 @V407490 01601000
  1349. VOLIDSIZ EQU 6 @V407490 01602000
  1350. COUNT2 EQU 2 @V407490 01603000
  1351. SPACE 01605000
  1352. * 01606000
  1353. * FLAGS DEFINED IN "VDABITS" : 01607000
  1354. * 01608000
  1355. CHANNEL EQU X'80' "CHANNEL" OPTION SPECIFIED @V407466 01609000
  1356. NSYSOP EQU X'40' CALLER IS NOT SYSTEM OPERATOR @V407466 01610000
  1357. MULTR EQU X'20' MULTIPLE RADDR ON COMMAND LINE @V407466 01611000
  1358. ATTSYST EQU X'10' ATTACH/DETACH TO/FROM "SYSTEM" @V407466 01612000
  1359. ATTREAD EQU X'08' ATTACH "R/O" @V407466 01613000
  1360. ATTCTCA EQU X'02' ATTACH REAL CHAN-TO-CHAN ADAPTER @V407466 01614000
  1361. DED2305 EQU X'01' ATTACH/DEDICATE MULTI EXP DEVICE @V407466 01615000
  1362. RANGE EQU X'04' RANGE ON COMMAND LINE @V407466 01616000
  1363. SPACE 01617000
  1364. MDSECT DSECT @V407466 01618000
  1365. MULTADD DS F @V407466 01619000
  1366. DS 47F UP TO 48 CCU ON ONE COMMAND EXEC.@V407466 01620000
  1367. DS 4D @V407466 01621000
  1368. MULTSIZE EQU (*-MULTADD+7)/8 @V407466 01622000
  1369. MSGAREA EQU *-MULTADD @V407466 01623000
  1370. SPACE 01624000
  1371. ORG MULTADD @V407466 01625000
  1372. DS CL3 ... @V407466 01626000
  1373. DELIM1 DS XL1 @V407466 01627000
  1374. DS CL4 CONSTANT - 'ATTACH' @V407466 01628000
  1375. DELIM2 DS XL1 @V407466 01629000
  1376. USERSIZE EQU *-MULTADD SIZE OF USER MSG IN BYTES @V407466 01630000
  1377. CONTO DS CL3 CONSTANT - 'TO ' @V407466 01631000
  1378. USERID DS CL8 USERID @V407466 01632000
  1379. OPERSIZE EQU *-MULTADD SIZE OF OPERATOR MSG IN BYTES @V407466 01633000
  1380. DELIM3 DS XL1 @V407466 01634000
  1381. CONBY DS CL3 CONSTANT - 'BY ' @V407466 01635000
  1382. ATTACHER DS CL8 ATTACHER @V407466 01636000
  1383. ASIZE EQU *-MULTADD SIZE OF ATTACHER MSG IN BYTES @V407466 01637000
  1384. EJECT 01638000
  1385. COPY EQU @V407466 01639000
  1386. OSVSCOM MSSCOM @V60B6B8 01640000
  1387. DMKVDA CSECT @V60B6B8 01641000
  1388. COPY DEVTYPES @V407466 01642000
  1389. PSA @V407466 01643000
  1390. COPY VMBLOK @V407466 01644000
  1391. COPY RBLOKS @V407466 01645000
  1392. COPY VBLOKS @V407466 01646000
  1393. COPY IOBLOKS @V407466 01647000
  1394. COPY IOER @V407466 01648000
  1395. EJECT 01649000
  1396. COPY ALLOC @V407466 01650000
  1397. COPY UDIRECT @V407466 01651000
  1398. END DMKVDA 01652000