Table of Contents

DMKVDD Source

References

Source Listing

DMKVDD.ASSEMBLE.txt
  1. VDD TITLE 'DMKVDD (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. SPACE 2 00005000
  6. EJECT 00006000
  7. *. 00007000
  8. * MODULE NAME - 00008000
  9. * DMKVDD 00009000
  10. * 00010000
  11. * FUNCTION - 00011000
  12. * DMKVDDDE - 'DETACH' A VIRTUAL OR REAL DEVICE. 00012000
  13. * 00013000
  14. *. 00014000
  15. DMKVDD START 0 @V407490 00015000
  16. SPACE 00016000
  17. DC CL8'DMKVDD' TO IDENTIFY "VIRTUAL DEVICE @V407466 00017000
  18. * BUILD" MODULE 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,DMKCVTHB,DMKCVTBD @V407466 00024000
  25. EXTRN DMKSCNFD,DMKSCNRD,DMKSCNRU,DMKSCNVU @V407466 00025000
  26. EXTRN DMKSCNVS,DMKSCNRN,DMKSCNVN,DMKSCNAU @V407466 00026000
  27. EXTRN DMKLOCKQ,DMKLOCKD,DMKVDSAT @V407466 00027000
  28. EXTRN DMKVCHDC,DMKERMSG @V407466 00028000
  29. EXTRN DMKVDREL,DMKIOSQR @V407466 00029000
  30. SPACE 00030000
  31. EXTRN DMKSYSOW,DMKSYSOC OWNED LIST @V407466 00031000
  32. EXTRN DMKPGT4P,DMKPGT4T @V407466 00032000
  33. EXTRN DMKPGT5P,DMKPGT5T 3350 ALLOCATION ANCHORS @V407466 00033000
  34. EXTRN DMKPGTTM,DMKPGT90 SYSTEM TEMPSPACE COUNTS @V407466 00034000
  35. EXTRN DMKPGTP5,DMKPGTP0,DMKPGTP4 PREFERRED ALLOCATION @V407466 00035000
  36. EXTRN DMKPGTT5,DMKPGTT0,DMKPGTT4 TEMPSPACE ALLOCATION @V407466 00036000
  37. EXTRN DMKVDCSC,DMKDSBRD,DMKSTKIO @VA08187 00037000
  38. EJECT 00038000
  39. *. 00039000
  40. * 00040000
  41. * COMMAND LINE FORMAT - 00041000
  42. * 00042000
  43. * +--------+--------------------------------+ 00043000
  44. * | | | 00044000
  45. * | DETACH | VADDR | 00045000
  46. * | | VADDR1-VADDR2 | 00046000
  47. * | | VADDR . . . | 00047000
  48. * | | | 00048000
  49. * | | RADDR <FROM> USERID | 00049000
  50. * | | RADDR1-RADDR2 <FROM> USERID | 00050000
  51. * | | RADDR . . . <FROM> USERID | 00051000
  52. * | | RADDR <FROM> SYSTEM | 00052000
  53. * | | RADDR . . . <FROM> SYSTEM | 00053000
  54. * | | RADDR1-RADDR2 <FROM> SYSTEM | 00054000
  55. * | | | 00055000
  56. * | | CHANNEL X | 00056000
  57. * | | CHANNEL X <FROM> USERID | 00057000
  58. * | | | 00058000
  59. * +--------+--------------------------------+ 00059000
  60. * 00060000
  61. * ATTRIBUTES - 00061000
  62. * 00062000
  63. * REENTRANT, PAGEABLE, CALLED VIA SVC 00063000
  64. * 00064000
  65. * ENTRY CONDITIONS - 00065000
  66. * 00066000
  67. * GPR 2 = 0 00067000
  68. * GPR 9 = ADDRESS OF COMMAND BUFFER 00068000
  69. * GPR 11 = ADDRESS OF USER'S VMBLOK 00069000
  70. * GPR 12 = ADDRESS OF DMKVDDDE 00070000
  71. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00071000
  72. * 00072000
  73. * EXIT CONDITIONS - 00073000
  74. * 00074000
  75. * GPR 2 = 0 IF DEVICE HAS BEEN DETACHED, OR 00075000
  76. * ERROR-CODE (SEE ERROR MESSAGES) IF UNSUCCESSFUL. 00076000
  77. * 00077000
  78. * CALLS TO OTHER ROUTINES - 00078000
  79. * 00079000
  80. * DMKSCNFD 00080000
  81. * DMKCVTHB 00081000
  82. * DMKSCNRU 00082000
  83. * DMKSCNVU 00083000
  84. * DMKSCNRN 00084000
  85. * DMKSCNVN 00085000
  86. * DMKSCNAU 00086000
  87. * DMKERMSG 00087000
  88. * DMKVDREL 00088000
  89. * DMKCVTBH 00089000
  90. * DMKQCNWT 00090000
  91. * DMKVCHDC 00091000
  92. * DMKVDCSC 00092000
  93. * DMKLOCKD 00093000
  94. * DMKLOCKQ 00094000
  95. * DMKCVTBD 00095000
  96. * 00096000
  97. * EXTERNAL REFERENCES - 00097000
  98. * 00098000
  99. * NONE 00099000
  100. * 00100000
  101. * TABLES / WORK AREAS - 00101000
  102. * 00102000
  103. * VMBLOK 00103000
  104. * RDEVBLOK 00104000
  105. * VCHBLOK 00105000
  106. * VCUBLOK 00106000
  107. * VDEVBLOK 00107000
  108. * VCUDVTBL 00108000
  109. * VCHCUTBL 00109000
  110. * VMCHTBL 00110000
  111. * 00111000
  112. * REGISTER USAGE - 00112000
  113. * 00113000
  114. * GPR 6 = ADDRESS OF VCHBLOK 00114000
  115. * GPR 7 = ADDRESS OF VCUBLOK 00115000
  116. * GPR 8 = ADDRESS OF RDEVBLOK/VDEVBLOK 00116000
  117. * GPR 9 = ADDRESS OF COMMAND BUFFER 00117000
  118. * GPR 11 = ADDRESS OF USER'S VMBLOK 00118000
  119. * GPR 12 = BASE REGISTER 00119000
  120. * GPR 13 = ADDRESS OF STANDARD SAVE AREA 00120000
  121. * 00121000
  122. * GPRS 0-5 AND 14-15 ARE WORK REGISTERS. 00122000
  123. * GPR 10 IS ALSO A WORK REGISTER 00123000
  124. * 00124000
  125. * NOTES - NONE 00125000
  126. * 00126000
  127. * OPERATION - 00127000
  128. * 00128000
  129. * 1. DMKVDCSC IS CALLED TO PERFORM SYNTAX CHECKING 00129000
  130. * ON THE COMMAND LINE; DMKVDCSC WILL CALL DMKCFCSC TO 00130000
  131. * DETERMINE IF THE FIRST OPERAND ON THE COMMAND IS A RANGE 00131000
  132. * OF DEVICE ADDRESSES. REGARDLESS OF WHETHER A RANGE OR A 00132000
  133. * SINGLE ADDRESS OR MULTIPLE ADDRESSES ARE SPECIFIED ON THE 00133000
  134. * COMMAND LINE, DMKSCNFD AND DMKCVTHB ARE USED TO OBTAIN AND 00134000
  135. * CONVERT FROM HEX TO BINARY THE DEVICE ADDRESSES. 00135000
  136. * IF THE DEVICE ADDRESS IS MISSING OR INVALID, OR THE COMMAND 00136000
  137. * FAILS TO PASS THE COMMAND SYNTAX CHECKING, AN ERROR CODE 00137000
  138. * IS RETURNED TO THE CALLER (DMKVDD) AND DMKVDD ISSUES 00138000
  139. * AN APPROPRIATE ERROR MESSAGE. 00139000
  140. * 00140000
  141. * 2. A CHECK IS MADE FOR THE ERROR CONDITIONS 00141000
  142. * OF THE DEVICE BEING OFFLINE, SHARED, CP OWNED, OR NOT 00142000
  143. * DEDICATED TO THE SPECIFIED USER (ERROR CODE AND MESSAGE 00143000
  144. * RETURNED IF NOT). IF THESE CHECKS ARE OK, THEN THE 00144000
  145. * APPROPRIATE VMBLOK AND VIRTUAL DEVICE ADDRESS ARE 00145000
  146. * REFERENCED IN THE NEXT STEP. 00146000
  147. * 00147000
  148. * 3. THE VIRTUAL DEVICE ADDRESS IS CHECKED FOR VALIDITY, AND 00148000
  149. * DMKSCNVU IS CALLED TO OBTAIN THE VCHBLOK, VCUBLOK, AND 00149000
  150. * VDEVBLOK (ERROR CODE AND MESSAGE IF NOT FOUND). IF OK, THEN 00150000
  151. * THE DMKVDREL SUBROUTINE IS CALLED TO PERFORM THE NECESSARY 00151000
  152. * INTERNAL FUNCTIONS TO RELEASE THE VIRTUAL DEVICE. 00152000
  153. * 00153000
  154. * 4. THEN THE VDEVADD ADDRESS IN VDEVBLOK IS SET TO X'FFFF' TO 00154000
  155. * INDICATE THE DEVICE NO LONGER EXISTS, AND THE CORRESPONDING 00155000
  156. * VCUDVTBL ENTRY IN THE VCUBLOK IS ALSO SET TO X'FFFF'. IF ALL 00156000
  157. * THE VIRTUAL DEVICES ON THIS CONTROL UNIT HAVE BEEN RELEASED, 00157000
  158. * THEN THE VCUADD IN THE VCUBLOK, AND THE CORRESPONDING VCHCUTBL 00158000
  159. * ENTRY IN THE VCHBLOK ARE ALSO SET TO X'FFFF'. SIMILARLY 00159000
  160. * (IF THIS WAS DONE), THEN IF ALL THE VIRTUAL CONTROL UNITS 00160000
  161. * ON THE CHANNEL HAVE BEEN RELEASED, THEN THE VCHADD IN THE 00161000
  162. * VCHBLOK AND THE CORRESPONDING VMCHTBL ENTRY IN THE VMBLOK 00162000
  163. * ARE ALSO SET TO X'FFFF'. 00163000
  164. * 00164000
  165. * 5. WHEN DETACHING A DEDICATED DASD DEVICE, DMKVDD WILL 00165000
  166. * CREATE AND STACK (DMKSTKIO) A DEVICE END INTERRUPT IOBLOK 00166000
  167. * FOR DMKDSBRD TO READ THE VOLUME LABEL. THIS WILL ENSURE 00167000
  168. * THAT THE VOLUME SERIAL OF THE PACK THAT WAS ACTUALLY ON 00168000
  169. * THE DRIVE WILL BE MOVED TO THE RDEVBLOK AND QUERY REQUESTS 00169000
  170. * WILL REFLECT THE TRUE VOLUME SERIAL ON THE DRIVE. 00170000
  171. * 00171000
  172. * 6. IF A REAL DEVICE WAS DETACHED, MESSAGES ARE SENT TO THE 00172000
  173. * CALLER, AND TO THE USER TO WHOM THE DEVICE BELONGED, 00173000
  174. * INDICATING THAT THE DEVICE HAS BEEN DETACHED, AND RETURN IS 00174000
  175. * MADE TO THE CALLER. 00175000
  176. * 00176000
  177. * 7. FOR A VIRTUAL DEVICE, THE CALLER (USER) IS SENT A MESSAGE 00177000
  178. * THAT THE DEVICE HAS BEEN DETACHED, AND RETURN IS MADE TO HIM. 00178000
  179. * 00179000
  180. * 8. FOR THE "DETACH CHANNEL" COMMAND, THE COMMAND LINE IS 00180000
  181. * SCANNED FOR PROPER FORMAT AND THAT THE USER HAS A HIGH 00181000
  182. * ENOUGH COMMAND LEVAL CLASS TO ISSUE THE COMMAND. IF THE 00182000
  183. * COMMAND LINE IS CORRECT A CALL IS MADE TO DMKVCHDC TO 00183000
  184. * DO THE ACTUAL DETACHING. 00184000
  185. * 00185000
  186. * 9. ERROR MESSAGES WILL BE ISSUED FOR THOSE DEVICE ADDRESSES 00186000
  187. * IN THE RANGE OR THOSE MULTIPLE ADDRESSES ON THE COMMAND LINE 00187000
  188. * WHICH CANNOT BE DETACHED. COMMAND PROCESSING WILL NOT 00188000
  189. * TERMINATE WHEN ONE OF THE DEVICES CANNOT BE DETACHED. 00189000
  190. * INSTEAD, SUCCESSFUL DETACH MESSAGES AND ERROR MESSAGES 00190000
  191. * WILL BE ISSUED UNTIL ALL DEVICE ADDRESSES ON THE COMMAND 00191000
  192. * LINE HAVE BEEN PROCESSED. 00192000
  193. * 00193000
  194. * RESPONSES - 00194000
  195. * 00195000
  196. * 'TYPE VADDR DETACHED' 00196000
  197. * 'VADDR . . . DETACHED' 00197000
  198. * 'VADDR1-VADDR2 DETACHED' 00198000
  199. * 00199000
  200. * 'TYPE RADDR DETACHED $USERID$ VADDR' 00200000
  201. * 'RADDR . . . DETACHED $USERID$' 00201000
  202. * 'RADDR1-RADDR2 DETACHED $USERID$' 00202000
  203. * 00203000
  204. * 'TYPE RADDR DETACHED $USERID$ VADDR BY $USERID$' 00204000
  205. * 'RADDR . . . DETACHED $USERID$ BY $USERID$' 00205000
  206. * 'RADDR1-RADDR2 DETACHED $USERID$ BY $USERID$' 00206000
  207. * 00207000
  208. * 'DASD RADDR DETACHED SYSTEM $VOLID$' 00208000
  209. * 'DASD RADDR DETACHED SYSTEM $VOLID$ BY $USERID$' 00209000
  210. * 'RADDR . . . DETACHED SYSTEM BY $USERID$' 00210000
  211. * 'RADDR1-RADDR2 DETACHED SYSTEM BY $USERID$' 00211000
  212. * 00212000
  213. * ERROR MESSAGES - 00213000
  214. * 00214000
  215. * DMKVDD006E INVALID DEVICE TYPE - RADDR 00215000
  216. * DMKVDD020E USERID MISSING OR INVALID 00216000
  217. * DMKVDD021E RADDR MISSING OR INVALID 00217000
  218. * DMKVDD022E VADDR MISSING OR INVALID 00218000
  219. * DMKVDD034E CHANNEL MISSING OR INVALID 00219000
  220. * DMKVDD040E DEV ADDR DOES NOT EXIST 00220000
  221. * DMKVDD045E $USERID$ NOT LOGGED ON 00221000
  222. * DMKVDD046E TYPE RADDR OFFLINE 00222000
  223. * DMKVDD121E TYPE RADDR NOT ATTACHED TO $USERID$ 00223000
  224. * DMKVDD123E DASD RADDR CP OWNED 00224000
  225. * DMKVDD124E DASD RADDR IN USE BY NNN USERS 00225000
  226. * DMKVDD135E TYPE RADDR NOT DETACHED; CHAN XX DEDICATED 00226000
  227. * DMKVDD140E TYPE RADDR ATTACHED TO $USERID$ 00227000
  228. * DMKVDD142E TYPE RADDR NOT DRAINED 00228000
  229. * DMKVDD143E TYPE RADDR IN USE BY SYSTEM 00229000
  230. * DMKVDD273E DETACH REJ VIRT MACH TRACING I/O 00229500
  231. *. 00230000
  232. SPACE 2 00231000
  233. DMKVDDDE RELOC DETACH A DEVICE FROM A USER'S VM @V407466 00232000
  234. XC VDDBITS(4),VDDBITS CLEAR FLAG-BIT WORD @V407466 00233000
  235. * (SAVEWRK1) 00234000
  236. OI VDDBITS+1,DETACH INDICATE "DETACH" COMMAND @V407466 00235000
  237. SLR R2,R2 CLEAR R2 FOR ZERO RETURN CODE @V407466 00236000
  238. ST R2,SAVER2 SAVE IN CASE NO ERRORS @V407466 00237000
  239. LA R0,MULTSIZE SIZE OF WORKAREA @V407466 00238000
  240. CALL DMKFREE ACQUIRE STORAGE @V407466 00239000
  241. LR R4,R1 TRANSFER ADDR TO R4 @V407466 00240000
  242. USING DETMSG,R4 ESTABLISH ADDRESSABILITY @V407466 00241000
  243. MVI DETMSG,BLANK PROPAGATE BLANKS THROUGH WORKAREA@V407466 00242000
  244. MVC DETMSG+1((MULTSIZE*8)-1),DETMSG ... @V407466 00243000
  245. SPACE 2 00244000
  246. * R9 POINTS TO COMMAND LINE 00245000
  247. * R4 POINTS TO ACQUIRED WORK AREA 00246000
  248. EJECT 00247000
  249. CALL DMKVDCSC SCAN COMMAND LINE @V407466 00248000
  250. LTR R2,R2 ANY ERRORS @V407466 00249000
  251. BNZ ERRTABL-8(R2) BRANCH TO ERROR ROUTINE @V407466 00250000
  252. TM VDDBITS,RANGE IS IT A RANGE? @VA11655 00250200
  253. BZ NOTRANGE YES, BRANCH. @VA11655 00250400
  254. OI RAFLG,FRSTHRU TURN ON FLAG. @VA11655 00250600
  255. NOTRANGE DS 0H @VA11655 00250800
  256. TM VDDBITS,VDETACH DETACH 'VIRTUAL'? @V407466 00251000
  257. BZ DETREAL NO, MUST BE DETACH REAL @V407466 00252000
  258. LR R10,R11 VMBLOK IN R10 ALSO FOR 'LOCKUSER'@V407466 00253000
  259. TM VDDBITS,CHANNEL IS IT DETACH CHANNEL? @V407466 00254000
  260. BO DEDCHAN YES, DO IT! @V407466 00255000
  261. LA R5,SCNVU BR ADDRESS FOR FIND VIRTUAL @V407466 00256000
  262. * BLOCKS 00257000
  263. TM VDDBITS,MULTR MULTIPLES SPECIFIED @V407466 00258000
  264. BZ INIT INITIALIZE FOR RANGE/SINGLE ADDR @V407466 00259000
  265. BAL R5,MULTIPLE ESTABLISH MULTIPLE REGISTERS @V407466 00260000
  266. SCNVU CALL DMKSCNVU FIND OUT WHAT KIND OF DEVICE @V407466 00261000
  267. BNZ UNKNOWN IT'S NOT EVEN THERE @V407466 00262000
  268. B CHKVTYPE CHECK WHAT KIND OF DEVICE @V407466 00263000
  269. SPACE 2 00264000
  270. DETREAL EQU * FIRST CHECK FOR CHANNEL @V407490 00265000
  271. TM VDDBITS,CHANNEL DETACH CHANNEL ??? @V407490 00266000
  272. BO DEDCHAN YES, BETTER GO DO IT @V407490 00267000
  273. TM VMOSTAT,VMSYSOP IS CALLER SYSTEM OPERATOR? @V407490 00268000
  274. BO DTSYSOP YES @V407466 00269000
  275. OI VDDBITS,NSYSOP THREE MESSAGES RESULTANT @V407466 00270000
  276. DTSYSOP EQU * @V407466 00271000
  277. LA R5,FINDRDEV BRANCH ADDRESS @V407466 00272000
  278. TM VDDBITS,MULTR MULTIPLES SPECIFIED? @V407466 00273000
  279. BZ INIT YES, ACQUIRE STORAGE FOR MESSAGE @V407466 00274000
  280. BAL R5,MULTIPLE GET DEVICE ADDRESS @V407466 00275000
  281. FINDRDEV BAL R5,GETRDEV FIND RDEVBLOK @V407466 00276000
  282. USING RDEVBLOK,R8 @V407466 00277000
  283. TM RDEVSTAT,RDEVDISA IS THE DEVICE OFFLINE ? @V407466 00278000
  284. BO DEVOFFL BRANCH IF YES @V407466 00279000
  285. TM RDEVTYPC,CLASDASD+CLASTAPE DISK OR TAPE ? @V407466 00280000
  286. BZ DETRLDV NO -- SKIP THESE TESTS @V407466 00281000
  287. TM RDEVFLAG,RDEVOWN IS IT A CP OWNED VOLUME ? @V407466 00282000
  288. BO DEVOWND BRANCH IF YES @V407466 00283000
  289. CLC RDEVLNKS,=H'0' Are there links to device? HRC039DK 00284100
  290. BNE ERR16 Can't detach if there are links HRC039DK 00284200
  291. DETRLDV EQU * TEST FOR DETACH FROM SYSTEM @V407466 00286000
  292. TM VDDBITS,ATTSYST "DETACH FROM SYSTEM" @V407466 00287000
  293. BO DETSYST YES - GO DO IT @V407466 00288000
  294. TM RDEVSTAT,RDEVDED IS IT A DEDICATED DEVICE ? @V407466 00289000
  295. BZ ERR68 NO @V407466 00290000
  296. CLM R10,B'0111',RDEVUSER+1 IS THIS THE RIGHT USER ? @V407466 00291000
  297. BNE ERR68 NO - ERROR @V407466 00292000
  298. CLC RDEVTYPC(2),=AL1(CLASDASD,TYP2305) 2305 ? @V407466 00293000
  299. BNE DETNDRM NO -- NORMAL DEVICE @V407466 00294000
  300. TM RDEVADD+1,X'07' TRY TO DETACH AN EXPOSURE ? @V407466 00295000
  301. BNZ VDD021 YUP, BAD NEWS. @V407466 00296000
  302. OI VDDBITS,DED2305 INDICATE 2305 TYPE DETACH @V407466 00297000
  303. SPACE 00298000
  304. DETNDRM EQU * @V407466 00299000
  305. BAL R5,SWPUSER GET THE DETACHEE'S VMBLOK @V407466 00300000
  306. TM VMRSTAT,VMLOGON+VMLOGOFF IS DETACHEE LOGGING OFF@V407466 00301000
  307. BNZ NOTLOGD YES, DON'T ALLOW THE DETACH @V407466 00302000
  308. TM VMOSTAT,VMKILL IS DETACHEE BEING FORCED @V407466 00303000
  309. BNZ NOTLOGD YES, DON'T ALLOW THE DETACH @V407466 00304000
  310. LH R1,RDEVATT LOAD ATTACHED VIRTUAL DEVICE @V407466 00305000
  311. * ADDRESS 00306000
  312. LR R2,R8 SAVE RDEVBLOK ADDR FOR LATER @V407466 00307000
  313. B DETRDEV REJOIN DEVICE DETACH CODE @V407466 00308000
  314. DROP R8 @V407466 00309000
  315. SPACE 00310000
  316. INIT L R1,DEVADDR SINGLE ADDR/1ST RANGE RADDR @V407466 00311000
  317. LR R9,R1 ... TO R9 @V407466 00312000
  318. XC SAVEWRK8(L'SAVEWRK8),SAVEWRK8 CLEAR @V407466 00313000
  319. BR R5 RETURN TO MAINLINE @V407466 00314000
  320. SPACE 00315000
  321. USING MDSECT,R4 ADDRESSABILITY @V407466 00316000
  322. MULTIPLE L R9,MULTADD FIRST MULTIPLE ADDRESS @V407466 00317000
  323. LR R1,R9 DEVICE ADDRESS @V407466 00318000
  324. ST R4,SAVEWRK8 SAVE PTR @V407466 00319000
  325. BR R5 RETURN TO MAINLINE @V407466 00320000
  326. SPACE 00321000
  327. USING VDEVBLOK,R8 @V407466 00322000
  328. CHKVTYPE CLC VDEVTYPC(2),=AL1(CLASDASD,TYP2305) DETACH ZEUS @V407466 00323000
  329. BNE DETRDEV NO -- NORMAL DEVICE @V407466 00324000
  330. TM VDEVSTAT,VDEVDED IS THIS A DEDICATED 2305? @V407466 00325000
  331. BZ DETRDEV NOPE, THEN 1 EXPOSURE IS OK @V407466 00326000
  332. TM DEVADDR+3,X'07' YUP, IS IT BASE ADDRESS? @V407466 00327000
  333. BNZ VDD022 NOPE, BAD NEWS. @V407490 00328000
  334. OI VDDBITS,DED2305 IND. MESSING WITH DEDICATED 2305@V407466 00329000
  335. DETRDEV EQU * DETACH OF REAL DEVICE @V407466 00330000
  336. ST R9,SAVEWRK7 SAVE R9 FOR LATER @V407466 00331000
  337. LA R9,8(0,0) LOOP COUNTER IF 2305 @V407466 00332000
  338. ST R1,VIRTADD SAVE THE VIRTUAL ADDRESS @V407466 00333000
  339. BAL R5,LOKUSER LOCK THE USER'S BLOCKS @V407466 00334000
  340. L R1,VIRTADD VIRTUAL DEVICE ADDRESS @V407466 00335000
  341. DETDRUM EQU * ENTER HERE FOR 2305 DETACH @V407466 00336000
  342. CALL DMKSCNVU GET THE VDEVBLOK ADDRESS @V407466 00337000
  343. BNZ INVADDF1 BRANCH IF NOT FOUND @V407466 00338000
  344. USING VCHBLOK,R6 @V407466 00339000
  345. USING VCUBLOK,R7 @V407466 00340000
  346. AIF (NOT &DEDCH).NOTDED2 @V407466 00341000
  347. TM VCHSTAT,VCHDED IS THIS CHANNEL DEDICATED @V407466 00342000
  348. BO CHANDED YES - CANNOT DETACH THIS DEVICE @V407466 00343000
  349. .NOTDED2 ANOP 00344000
  350. CLI VDEVTYPC,CLASDASD DASD TYPE DEVICE @V407466 00345000
  351. BNE VIRTDET SEE IF 'VDETACH' IS INDICATED @V407466 00346000
  352. TM VDEVSTAT,VDEVDED DED. REAL VOLUME (NOT MDISK) @V407466 00347000
  353. BZ VIRTDET NO, DON'T READ LABEL FOR MDISK @V407466 00348000
  354. TM VDDBITS,DED2305 2305 ? @VA07801 00349000
  355. BZ SKIP2305 GO AHEAD WITH UNSOL. DE @VA07801 00349100
  356. TM VDEVADD+1,X'07' BASE EXPOSURE ? @VA07801 00349200
  357. BNZ VIRTDET NO, SKIP UNSOL DE @VA07801 00349300
  358. SKIP2305 LR R3,R8 SAVE VDEVBLOK ADDR TEMP @VA07801 00349400
  359. L R8,VDEVREAL GET RDEVBLOK ADDRESS @V407466 00350000
  360. LA R0,IOBSIZE SIZE OF IOBLOK IN DBL. WDS. @V407466 00351000
  361. CALL DMKFREE GO GET IOBLOK @V407466 00352000
  362. LR R2,R1 IOBLOK ADDRESSED VIA R2 @V407466 00353000
  363. USING IOBLOK,R2 ADDRESSABILITY @V407466 00354000
  364. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IOBLOK @V407466 00355000
  365. ST R2,IOBLINK IOBLOK POINTS TO ITSELF @V407466 00356000
  366. CALL DMKSCNRD GET DEVICE ADDR IN 'CUU' FORM @V407466 00357000
  367. STH R1,IOBRADD STORE IN IOBLOK @V407466 00358000
  368. LR R8,R3 RESTORE VDEVBLOK ADDR TO R8 @V407466 00359000
  369. L R1,ASYSVM SET USER TO SYSTEM @V407466 00360000
  370. ST R1,IOBUSER SAVE IN IOBLOK @V407466 00361000
  371. L R1,=A(DMKDSBRD) RETURN ADDRESS AFTER UNSTK @VA08187 00362000
  372. ST R1,IOBIRA ... @V407466 00363000
  373. MVI IOBCSW+4,DE INDICATE UNSOLICITED INTERRUPT @V407466 00364000
  374. OI IOBSPEC,IOBUNSL FLAG AS UNSOLICITED INTERR. @V407466 00365000
  375. LR R1,R10 SAVE VMBLOK PTR. TEMP. @V407466 00366000
  376. LR R10,R2 IOBLOK ADDRESS TO R10 @V407466 00367000
  377. CALL DMKSTKIO STACK IOBLOK @V407466 00368000
  378. LR R10,R1 RESTORE VMBLOK PTR. @V407466 00369000
  379. DROP R2 @V407466 00370000
  380. VIRTDET TM VDDBITS,VDETACH DETACH VIRTUAL?? @V407466 00371000
  381. BO DETRELSE YES - ALLOW MSG FROM DMKVDREL @V407466 00372000
  382. NI VDEVSTAT,X'FF'-VDEVCATT SUPPRESS VDDRL MESSAGE @V407466 00373000
  383. DETRELSE EQU * @V407466 00374000
  384. TM VDEVTYPC,CLASTAPE TAPE DEV ? HRC003DK 00374010
  385. BNO DETRELS2 HRC003DK 00374020
  386. TM VDDBITS+1,TPNORUN DETACH LEAVE ? HRC003DK 00374030
  387. BNO DETRELS2 HRC003DK 00374040
  388. OI VDEVFLG2,VDEVTNR HRC003DK 00374050
  389. DETRELS2 EQU * HRC003DK 00374060
  390. TM VDEVTYPC,CLASURI+CLASURO IS IT UNIT RECORD @VA07232 00374100
  391. BNO MAINLINE NO DONT BOTHER @VA07232 00374200
  392. TM VDEVSFLG,VDEVSVC ACTIVE SPOOLING ? @VA07232 00374300
  393. BO EMSG143E YES,NOT ALLOWED TO DETACH @VA07232 00374400
  394. MAINLINE EQU * @VA07232 00374500
  395. CALL DMKVDREL RELEASE THE DEVICE @V407466 00375000
  396. LOADFFS L R2,FFS LOAD FFFFFFFF @V407466 00376000
  397. SR R3,R3 ZERO INDEX REGISTER @V407466 00377000
  398. ST R4,SAVEWRK6 SAVE R4 TEMPORARILY @V407466 00378000
  399. LA R4,COUNT4 LOAD INCREMENT REGISTER @V407490 00379000
  400. LA R5,COUNT28 LOAD COMPARAND REGISTER @V407490 00380000
  401. LH R1,VDEVADD GET VIRTUAL DEVICE ADDRESS @V407466 00381000
  402. AR R1,R1 MULTIPLY IT BY 2 @V407466 00382000
  403. STH R2,VDEVADD INDICATE DEVICE NO LONGER EXISTS @V407466 00383000
  404. STH R2,VCUDVTBL(R1) REMOVE RDEVBLOK INDEX FROM TABLE@V407466 00384000
  405. DETCULP CL R2,VCUDVTBL(R3) ANY MORE DEVICES ON THIS CU ? @V407466 00385000
  406. BNE DETDONE BRANCH IF YES @V407466 00386000
  407. BXLE R3,R4,DETCULP BRANCH IF MORE TABLE ENTRIES @V407466 00387000
  408. LH R1,VCUADD LOAD VIRTUAL CONTROL UNIT ADDRESS@V407466 00388000
  409. SRL R1,3 MULTIPLY IT BY 2 @V407466 00389000
  410. STH R2,VCUADD INDICATE CONTROL UNIT NO LONGER @V407466 00390000
  411. * EXISTS 00391000
  412. STH R2,VCHCUTBL(R1) REMOVE VCUBLOK INDEX FROM TABLE @V407466 00392000
  413. SR R3,R3 ZERO INDEX REGISTER @V407466 00393000
  414. DETCHLP CL R2,VCHCUTBL(R3) ANY MORE CTL UNITS ON THIS @V407466 00394000
  415. * CHAN ? 00395000
  416. BNE DETDONE BRANCH IF YES @V407466 00396000
  417. BXLE R3,R4,DETCHLP BRANCH IF MORE TABLE ENTRIES @V407466 00397000
  418. LH R1,VCHADD LOAD VIRTUAL CHANNEL ADDRESS @V407466 00398000
  419. SRL R1,7 MULTIPLY IT BY 2 @V407466 00399000
  420. STH R2,VCHADD INDICATE CHANNEL NO LONGER EXISTS@V407466 00400000
  421. STH R2,VMCHTBL(R1) REMOVE VCHBLOK INDEX FROM TABLE @V407466 00401000
  422. DETDONE EQU * DETACH FINISHED @V407466 00402000
  423. L R4,SAVEWRK6 RESTORE R4 @V407466 00403000
  424. TM VDDBITS,DED2305 IS THIS A DEDICATED 2305? @V407466 00404000
  425. BZ DETRESP NOPE, BR. @V407466 00405000
  426. L R1,VIRTADD VIRTUAL DEVICE ADDRESS @V407466 00406000
  427. LA R1,1(0,R1) MOVE TO NEXT EXPOSURE @V407466 00407000
  428. ST R1,VIRTADD . . . @V407466 00408000
  429. BCT R9,DETDRUM DETACH ALL EIGHT AT ONCE @V407466 00409000
  430. S R1,F8 RESTORE ORIGINAL ADDRESS @V407466 00410000
  431. ST R1,VIRTADD . . . @V407466 00411000
  432. DETRESP EQU * @V407466 00412000
  433. BAL R5,FREUSER UNLOCK USER + SWAP VMBLOKS @V407466 00413000
  434. L R9,SAVEWRK7 RESTORE R9 @V407466 00414000
  435. TM VDDBITS,MULTR MULTIPLES BEING PROCESSED @V407466 00415000
  436. BO MULTMSG YES, FORMAT MULT MSG @V407466 00416000
  437. TM VDDBITS,RANGE RANGE BEING PROCESSED @V407466 00417000
  438. BO RAMSG NO, NORMAL MESSAGE PATH @V407466 00418000
  439. CALL DMKSCNVN GET EBCDIC TYPE-NAME @V407466 00419000
  440. LR R3,R1 ...INTO R3 @V407466 00420000
  441. DROP R6,R7,R8 @V407466 00421000
  442. RESPOND EQU * MAXIMUM OF THREE MESSAGES @V407466 00422000
  443. USING DETMSG,R4 @V407466 00423000
  444. ST R3,DETDTYP TYPE-NAME OF AFFECTED DEVICE @V407466 00424000
  445. MVI DETDEL1,BLANK DELIMITER @V407466 00425000
  446. L R1,VIRTADD VIRTUAL ADDRESS @V407466 00426000
  447. CALL DMKCVTBH ...INTO PRINTABLE FORM @V407466 00427000
  448. STCM R1,B'0111',DETADD1 INTO TWO PLACES @V407466 00428000
  449. MVI DETDEL2,BLANK DELIMITER @V407466 00429000
  450. RESPOND2 MVC RADET,=CL8'DETACHED' CONSTANT 'DETACHED' @V407466 00430000
  451. TM VDDBITS,ATTSYST DETACH FROM 'SYSTEM' @V407466 00431000
  452. BO OPERMSG YES, SKIP USER MSG @V407466 00432000
  453. LA R0,RASIZE1 MSG LENGTH @V407466 00433000
  454. TM VDDBITS,VDETACH IS THIS 'DETACH VIRTUAL' ? @V407466 00434000
  455. BZ SNDUSR1 NO @V407466 00435000
  456. SLR R2,R2 NO EXTRA PARMS FOR QCNWT @V407466 00436000
  457. TM VMMLVL2,VMMIMSG USER WANT INFO MSGS? @V407466 00437000
  458. BO SNDFRET YES - SEND MSG AND FRET BUFFER @V407466 00438000
  459. TM VDDBITS+1,DETERR ERROR MSG BEING PROCESSED @V407466 00439000
  460. BCR 1,R6 YES, RETURN TO PROCESS ERROR @V407466 00440000
  461. LA R0,MULTSIZE NO - GET MSG SIZE @V407466 00441000
  462. LR R1,R4 AND START ADDR @V407466 00442000
  463. CALL DMKFRET RELEASE THE BUFFER @V407466 00443000
  464. B VDDEXIT EXIT @V407466 00444000
  465. SPACE 2 00445000
  466. SNDUSR1 EQU * SWITCH TO TARGET USER'S VMBLOK @V407466 00446000
  467. CLR R10,R11 DETACH FROM HIMSELF ? @V407466 00447000
  468. BE OPERMSG YES - SKIP SHORT MESSAGE @V407466 00448000
  469. MVC DETBY,=CL3'BY ' ADD OPERATOR CUE @V407466 00449000
  470. MVC DETUSER(L'VMUSER),VMUSER ...FOR FORCED DETAC@V407466 00450000
  471. MVI DETDEL3,BLANK DELIMITER @V407466 00451000
  472. BAL R5,SWPUSER SWITCH TO USER'S VMBLOK @V4M0193 00452000
  473. LA R0,DETSIZE5 LENGTH @V407466 00453000
  474. LR R1,R4 MESSAGE START @V407466 00454000
  475. CALL DMKQCNWT,PARM=NORET @V407466 00455000
  476. BAL R5,SWPCALL BACK TO CALLER'S VMBLOK @V407466 00456000
  477. OPERMSG EQU * BUILD MESSAGE FOR @V407466 00457000
  478. * ATTACHER/DETACHER 00458000
  479. MVC DETUSER2,CMDUSER USERID OF DETACHEE @V407466 00459000
  480. LA R0,DETSIZE2 MSG LENGTH @V407466 00460000
  481. TM VDDBITS,RANGE RANGE BEING PROCESSED @V407466 00461000
  482. BO CHKSYS YES, SEE IF ATTACH TO SYSTEM @V407466 00462000
  483. MVC DETADD2(4),DETADD1 MOVE VIRTUAL ADDRESS @V407466 00463000
  484. * FURTHER OUT 00464000
  485. MVI DETDEL4,BLANK FIX UP BLANKS FOR SPACING @V407466 00465000
  486. BAL R5,CVTRADD CONVERT REAL ADDRESS TO HEX @V407466 00466000
  487. STCM R1,B'0111',DETADD1 ...INTO OPERATOR MESSAGES @V407466 00467000
  488. LA R0,DETSIZE3 CURRENT LENGTH @V407466 00468000
  489. CHKSYS TM VDDBITS,ATTSYST ATTACH TO SYSTEM ? @V407466 00469000
  490. BZ SNDOPMG NO @V407466 00470000
  491. MVC DETUSER2(8),=CL8'SYSTEM' @V407466 00471000
  492. TM VDDBITS,RANGE IS IT A RANGE? @VA11655 00471025
  493. BO SNDOPMG YES! SEND MESSAGE @VA11655 00471050
  494. MVC DETDEL4-1(6),CMDUSER THIS IS THE VOLID @VA08940 00472100
  495. SNDOPMG EQU * TYPE MESSAGE TO ATTACHER @V407466 00473000
  496. LR R1,R4 MESSAGE START @V407466 00474000
  497. CALL DMKQCNWT,PARM=NORET @V407466 00475000
  498. TM VDDBITS,NSYSOP ATTACH BY SYSTEM OPERATOR ? @V407466 00476000
  499. BZ CLEANXT YES - JUST EXIT @V407466 00477000
  500. TM VDDBITS,RANGE RANGE BEING PROCESSED @V407466 00478000
  501. BO RAFORM YES, FORMAT RANGE @V407466 00479000
  502. MVC DETBY2(3),=C'BY ' CONSTANT 'BY' @V407466 00480000
  503. MVC DETUSER3(L'VMUSER),VMUSER DETACHER @V407466 00481000
  504. LA R0,FULLEN FULL LENGTH @V407490 00482000
  505. SENDSYS LA R2,OPERATOR SEND MESSAGE TO SYSTEM OPERATOR @V407466 00483000
  506. SNDFRET EQU * SEND MESSAGE + RELEASE BUFFER @V407466 00484000
  507. LR R1,R4 MESSAGE START @V407466 00485000
  508. TM VDDBITS+1,DETERR ERROR MESSAGE TO PROCESS? @V407466 00486000
  509. BO QCNWT ISSUE MSG, DON'T RELEASE STORAGE @V407466 00487000
  510. LA R3,MULTSIZE SIZE OF STORAGE TO RELEASE @V407466 00488000
  511. CALL DMKQCNWT,PARM=NORET+DFRET(,R2) ISSUE MSG + REL @V407466 00489000
  512. * STOR. 00490000
  513. B VDDEXIT EXIT @V407466 00491000
  514. SPACE 2 00492000
  515. QCNWT CALL DMKQCNWT,PARM=NORET(,R2) ISSUE MESSAGE @V407466 00493000
  516. BR R6 RETURN TO PROCESS ERROR MSG @V407466 00494000
  517. SPACE 00495000
  518. RAMSG DS 0H @VA11236 00496010
  519. ******************************************************************* 00496020
  520. * AT THIS POINT R9 HAS THE ADDRESS OF THE DEVICE WE JUST * 00496030
  521. * DETACHED. FIRST TIME THRU RADDR1 AND RADDR2 (SAVEWRK8) ARE ZERO* 00496040
  522. * SUBSEQUENT ENTRYS RADDR1 WILL BE THE FIRST DEVICE WE DETACHED * 00496050
  523. * AND RADDR2 WILL BE THE SECOND LAST DEVICE WE DETACHED AND WILL * 00496060
  524. * BE UPDATED WITH R9 DEVICE SHORTLY. RADDR1 AND RADDR2 WILL * 00496070
  525. * THEN BE USED AS INPUT TO CONVERT FOR THE MESSAGE TEXT * 00496080
  526. ******************************************************************* 00496090
  527. TM RAFLG,FRSTHRU IS THIS THE FOIST TIME TROO @VA11236 00496100
  528. BZ NOTFIRST NO'SNOT UPDATE RADDR2 @VA11236 00496110
  529. STH R9,RADDR1 YES'TIS UPDATE RADDR1 @VA11236 00496120
  530. NI RAFLG,X'FF'-FRSTHRU REMOVE INDICATOR @VA11236 00496130
  531. B ENDRANGE GO CHECK FOR MORE DETACHS @VA11236 00496140
  532. NOTFIRST DS 0H @VA11236 00496150
  533. STH R9,RADDR2 SHOW THE LAST DETACHED DEVICE @VA11236 00496160
  534. ENDRANGE DS 0H @VA11236 00496170
  535. TM VDDBITS,DED2305 WORKING WITH 2305 ?? @V407490 00502000
  536. BZ ENDRNGE1 NOPE , BRANCH @V407490 00503000
  537. LA R9,7(,R9) ADD EIGHT EXPOSURES FOR DRUM @V407490 00504000
  538. ENDRNGE1 CH R9,ENDRADDR END OF RANGE ?? @V407490 00505000
  539. BNL RAMSG2 YES, ISSUE MESSAGE @V407490 00506000
  540. NI VDDBITS,X'FF'-DED2305 RESET DRUM FLAG @V407490 00507000
  541. LA R9,1(,R9) INCREM RANGE RADDR @V407490 00508000
  542. LR R1,R9 NEXT ADDR TO R1 @V407466 00509000
  543. USING DETMSG,R4 ADDRESSABILITY FOR MSG @V407466 00510000
  544. MVI DETMSG,BLANK PROPAGATE BLANKS THROUGH @V407466 00511000
  545. MVC DETMSG+1((MULTSIZE*8)-1),DETMSG MSG AREA @V407466 00512000
  546. TM VDDBITS,VDETACH DETACH 'VIRTUAL' @V407466 00513000
  547. BO SCNVU FIND VIRTUAL BLOCKS @V407466 00514000
  548. B FINDRDEV OTHERWISE, FIND REAL DEVICE @V407466 00515000
  549. SPACE 2 00519000
  550. USING DETMSG,R4 MSG AREA ADDRESSABILITY @V407466 00520000
  551. RAMSG2 SLR R1,R1 CLEAR R1 @V407466 00521000
  552. LH R1,RADDR2 2ND RANGE RADDR @V407466 00522000
  553. LTR R1,R1 FULL RANGE FOR MSG @V407466 00523000
  554. BNZ CONVERT YES, GO FORMAT MSG @V407466 00524000
  555. LH R1,RADDR1 FIRST ADDRESS IN RANGE @V407466 00525000
  556. LTR R1,R1 IS IT THERE? @V407466 00526000
  557. BZ CLEANXT ALL DONE, GET OUT @V407466 00527000
  558. B CONVERT2 OTHERWISE SINGLE MSG @V407466 00528000
  559. SPACE 2 00529000
  560. CONVERT CALL DMKCVTBH CONVERT ADDR @V407466 00530000
  561. STCM R1,B'0111',RACUU2 2ND RADDR IN RANGE @V407466 00531000
  562. MVI RADASH,DASH RANGE DELIMITER '-' @V407466 00532000
  563. MVC RADEL1,BLANKS DELIMITER @V407466 00533000
  564. SINGLE LH R1,RADDR1 1ST RADDR IN RANGE @V407466 00534000
  565. CONVERT2 CALL DMKCVTBH CONVERT ADDR @V407466 00535000
  566. STCM R1,B'0111',RACUU1 1ST ADDR IN RANGE @V407466 00536000
  567. B RESPOND2 CONTINUE TO FORMAT @V407466 00537000
  568. SPACE 2 00538000
  569. RAFORM MVI DETDEL4,BLANK DELIMITER @V407466 00539000
  570. MVC DETBY3,=CL3'BY ' CONSTANT 'BY ' @V407466 00540000
  571. MVC DETUSER4,VMUSER DETACHER @V407466 00541000
  572. LA R0,DETSIZE4 DATA LENGTH @V407466 00542000
  573. B SENDSYS SEND MESSAGE TO SYSTEM OPERATOR @V407466 00543000
  574. SPACE 2 00544000
  575. CLEANXT EQU * @V407466 00545000
  576. TM VDDBITS+1,DETERR ERROR MESSAGE IN PROCESS @V407466 00546000
  577. BCR 1,R6 YES, RETURN TO PROCESS ERROR @V407466 00547000
  578. * MESSAGE 00548000
  579. LR R1,R4 MESSAGE BUFFER @V407466 00549000
  580. LA R0,MULTSIZE @V407466 00550000
  581. CALL DMKFRET @V407466 00551000
  582. DROP R4 @V407466 00552000
  583. VDDEXIT EQU * RETURN TO DMKCFM @V407466 00553000
  584. BAL R5,SWPCALL MAKE SURE WE HAVE THE RIGHT TIMER@V407466 00554000
  585. EXIT @V407466 00555000
  586. EJECT 00556000
  587. MULTMSG EQU * @V407466 00557000
  588. USING MDSECT,R9 @V407466 00558000
  589. LR R1,R9 ... TO R9 @V407466 00559000
  590. SLR R7,R7 ZERO R7 @V407466 00560000
  591. IC R7,MULTCUU NO. CUU IN MSG @V407466 00561000
  592. LA R5,1(,R7) INCEMENT BY ONE @V407466 00562000
  593. STC R5,MULTCUU STORE FOR LATER @V407466 00563000
  594. L R9,SAVEWRK8 PTR TO BEGINNING OF AREA @V407466 00564000
  595. LA R8,L'MULTADD L'CUU + L'DELIMITER @V407490 00565000
  596. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00566000
  597. AR R9,R7 POINTER TO SLOT FOR NEXT ADDR @V407466 00567000
  598. CALL DMKCVTBH CONVERT TO HEX FOR MSG @V407466 00568000
  599. STCM R1,B'0111',MULTADDR SAVE ADDR IN MSG @V407466 00569000
  600. MVI MULTDEL1,BLANK CUU DELIMITER @V407466 00570000
  601. DROP R9 @V407466 00571000
  602. USING MDSECT,R4 RE-EST. ADDRESSABILTIY @V407466 00572000
  603. MULTCONT LA R4,4(,R4) SEE IF MORE ADDRS TO PROCESS @V407466 00573000
  604. L R1,FFS X'FFFFFFFF' TO R1 @V407466 00574000
  605. C R1,MULTADDR ANY MORE ADDRS TO PROCESS @V407466 00575000
  606. BE FINFORM NO, FORMAT MESSAGE @V407466 00576000
  607. L R9,MULTADDR NEXT ADDR TO PROCESS @V407466 00577000
  608. LR R1,R9 ADDR TO R1 @V407466 00578000
  609. NI VDDBITS,X'FF'-DED2305 RESET DRUM FLAG @V407490 00579000
  610. TM VDDBITS,VDETACH DETACH 'VIRTUAL' @V407466 00580000
  611. BO SCNVU YES, FIND VIRTUAL BLOCKS @V407466 00581000
  612. B FINDRDEV OTHERWISE FIND REAL DEVICE @V407466 00582000
  613. SPACE 2 00583000
  614. FINFORM SLR R5,R5 ZERO R5 @V407466 00584000
  615. IC R5,MULTCUU NO. CUU'S IN MSG @V407466 00585000
  616. LR R7,R5 RESTORE TO R7 @V407466 00586000
  617. LTR R5,R5 ANY ADDRS IN BUFFER? @V407466 00587000
  618. BZ FRETBUF NO, RELEASE STORAGE AND GET OUT @V407466 00588000
  619. LA R8,L'MULTADD L'CUU + L'DELIMITER @V407490 00589000
  620. L R1,SAVEWRK8 MSG BUFFER ADDR @V407466 00590000
  621. MR R4,R8 R5*R8 INTO R4-R5 @V407466 00591000
  622. AR R5,R1 ADJUST MSG POINTER @V407466 00592000
  623. LR R4,R5 RESTORE TO R4 @V407466 00593000
  624. MVC MULTCON(L'MULTCON+L'MULTDEL2),=CL9'DETACHED ' @V407466 00594000
  625. TM VDDBITS,ATTSYST DETACH FROM SYSTEM ?? @V407490 00595000
  626. BO MULTMSG5 YES, ISSUE MESSAGE @V407490 00596000
  627. TM VDDBITS,VDETACH DETACH VIRTUAL? @V407466 00597000
  628. BZ MULTMSG3 NO, MUST BE DETACH REAL @V407466 00598000
  629. SLR R2,R2 NO EXTRA PARMS FOR QCNWT @V407466 00599000
  630. TM VMMLVL2,VMMIMSG USER WANT INFO MSGS @V407466 00600000
  631. BO MULTMSG4 SEND MSG & FRET BUFFER @V407466 00601000
  632. FRETBUF LA R0,MULTSIZE SIZE OF BUFFER @V407466 00602000
  633. L R1,SAVEWRK8 ADDR OF BUFFER TO R1 @V407466 00603000
  634. CALL DMKFRET RELEASE STORAGE @V407466 00604000
  635. B VDDEXIT EXIT @V407466 00605000
  636. SPACE 00606000
  637. MULTMSG4 CH R7,=H'10' IF > 10 CUU'S - MULTIPLE LINES @V407466 00607000
  638. BH MANY1 YES, MULTIPLE MSG LINES @V407466 00608000
  639. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00609000
  640. LA R0,MULTSIZ1(,R7) + L'DETACHED @V407466 00610000
  641. LA R3,MULTSIZE SIZE OF MSG BUFFER TO FRET @V407466 00611000
  642. CALL DMKQCNWT,PARM=NORET+DFRET(,R2) @V407466 00612000
  643. B VDDEXIT EXIT @V407466 00613000
  644. SPACE 00614000
  645. MANY1 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CCU'S @V407466 00615000
  646. LA R0,MULTSIZ1(,R7) PLUS L'DETACHED @V407466 00616000
  647. CALL DMKQCNWT,PARM=NORET @V407466 00617000
  648. B FRETBUF RELEASE MSG BUFFER @V407466 00618000
  649. SPACE 00619000
  650. MULTMSG3 CLR R10,R11 DETACH FROM HIMSELF? @V407466 00620000
  651. BE MULTMSG5 YES, SKIP SHORT MESSAGE @V407466 00621000
  652. MVI MULTDEL2,BLANK DELIMITER @V407466 00622000
  653. MVC MULTBY2,=CL3'BY ' CONSTANT 'BY ' @V407466 00623000
  654. MVC MULTUSE3(L'VMUSER),VMUSER DETACHER @V407466 00624000
  655. LR R2,R1 SAVE R1 VALUE @V4M0193 00625000
  656. BAL R5,SWPUSER @V407466 00626000
  657. LR R1,R2 RESTORE R1 VALUE @V4M0193 00627000
  658. CH R7,=H'10' IF > 10 CUU'S - MANY MSG LINES @V407466 00628000
  659. BH MANY2 YES, MANY MSG LINES @V407466 00629000
  660. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00630000
  661. LA R0,MULTSIZ4(,R7) MSG LENGTH @V407466 00631000
  662. CALL DMKQCNWT,PARM=NORET @V407466 00632000
  663. SWAP DS 0H @V4M0193 00633000
  664. LR R2,R1 SAVE R1 VALUE @V4M0193 00634000
  665. BAL R5,SWPCALL SWITCH BACK TO CALLER'S VMBLOK @V4M0193 00635000
  666. LR R1,R2 RESTORE R1 VALUE @V4M0193 00636000
  667. SPACE 00637000
  668. MULTMSG5 EQU * @V407466 00638000
  669. SLR R7,R7 CLEAR R7 FOR NO. MULTIPLES @V407466 00639000
  670. IC R7,MULTCUU NO. OF ADDRS IN MSG @V407466 00640000
  671. MVC MULTUSER(L'VMUSER),CMDUSER USERID @V407466 00641000
  672. TM VDDBITS,ATTSYST DETACH FROM SYSTEM @V407466 00642000
  673. BZ MULTMSG6 NO @V407466 00643000
  674. MVC MULTUSER(L'VMUSER),=CL8'SYSTEM' SYSTEM @V407466 00644000
  675. MULTMSG6 CH R7,=H'10' IF > 10 CUU'S - MANY MSG LINES @V407466 00645000
  676. BH MANY3 YES, MANY LINES @V407466 00646000
  677. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00647000
  678. LA R0,MULTSIZ6(,R7) + L'DETACHED + L'USERID @V407466 00648000
  679. CALL DMKQCNWT,PARM=NORET @V407466 00649000
  680. SYSDET IC R7,MULTCUU NO. OF MULTIPLES IN MSG @V407466 00650000
  681. TM VDDBITS,NSYSOP DETACH BY SYSTEM OPERATOR @V407466 00651000
  682. BZ FRETBUF YES, RELEASE STORAGE @V407466 00652000
  683. MVI MULTDEL3,BLANK DELIMITER @V407466 00653000
  684. MVC MULTBY,=CL3'BY ' CONSTANT 'BY ' @V407466 00654000
  685. MVC MULTUSE2(L'VMUSER),VMUSER @V407466 00655000
  686. LA R2,OPERATOR SYSTEM OPERATOR @V407466 00656000
  687. CH R7,=H'10' IF > 10 CUU'S MANY MSG LINES @V407466 00657000
  688. BH MANY4 MULTIPLE LINES @V407466 00658000
  689. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00659000
  690. LA R0,MULTSIZ2(,R7) LENGTH @V407466 00660000
  691. LA R3,MULTSIZE MSG BUFFER SIZE @V407466 00661000
  692. CALL DMKQCNWT,PARM=NORET+DFRET(,R2) @V407466 00662000
  693. B VDDEXIT EXIT @V407466 00663000
  694. SPACE 00664000
  695. MANY2 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CUU'S @V407466 00665000
  696. LA R0,MULTSIZ4(,R7) LENGTH @V407466 00666000
  697. CALL DMKQCNWT,PARM=NORET LAST LINE OF THIS MSG @V407466 00667000
  698. L R1,SAVEWRK8 MSG BUFFER ADDR @V407466 00668000
  699. B SWAP NEXT MSG @V407466 00669000
  700. SPACE 00670000
  701. MANY3 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CUU'S @V407466 00671000
  702. LA R0,MULTSIZ6(,R7) + L'DETACHED + L'USERID @V407466 00672000
  703. CALL DMKQCNWT,PARM=NORET @V407466 00673000
  704. L R1,SAVEWRK8 MSG BUFFER ADDR @V407466 00674000
  705. B SYSDET CHECK FOR DET BY SYSTEM OPERATOR @V407466 00675000
  706. SPACE 00676000
  707. MANY4 BAL R5,MULTLINE ISSUE REPEATED LINES OF 10 CUU'S @V407466 00677000
  708. LA R0,MULTSIZ2(,R7) + L'BY + L'USERID @V407466 00678000
  709. CALL DMKQCNWT,PARM=NORET ISSUE MSG & RETURN @V407466 00679000
  710. B FRETBUF RELEASE BUFFER @V407466 00680000
  711. SPACE 00681000
  712. MULTLINE LA R0,MAXCUU MAX 10 CUU PER LINE @V407490 00682000
  713. NEXTLINE CALL DMKQCNWT,PARM=NORET @V407466 00683000
  714. LA R1,40(,R1) NEXT LINE POINTER @V407466 00684000
  715. SH R7,=H'10' SUBTRACE 10 @V407466 00685000
  716. CH R7,=H'10' STILL MORE THAN 10 LEFT @V407466 00686000
  717. BH NEXTLINE PUT OUT NEXT LINE @V407466 00687000
  718. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00688000
  719. BR R5 RETURN TO MAINLINE @V407466 00689000
  720. DROP R4 @V407466 00690000
  721. EJECT 00691000
  722. USING DETMSG,R4 ADDRESSABILITY FOR MSGAREA @V407466 00692000
  723. TSTRANGE TM VDDBITS,RANGE RANGE BEING PROCESSED @V407466 00693000
  724. BCR 14,R5 NO, JUST ISSUE ERROR MESSAGE @V407466 00694000
  725. OI VDDBITS+1,DETERR ISSUE SUCCESSFUL MSG FIRST @V407466 00695000
  726. STM R5,R6,SAVEWRK5 SAVE R5,R6 TEMPORARILY @V407466 00696000
  727. LA R6,ONLYERR SET UP RETURN ADDRESS FOR SINGLE @V407490 00697000
  728. SLR R1,R1 CLEAR R1 @V407466 00698000
  729. CH R1,RADDR1 SUCCESSFUL MSG PENDING? @V407466 00699000
  730. BE ONLYERR NO, ISSUE ERROR ONLY @V407466 00700000
  731. CH R1,RADDR2 FULL RANGE MESSAGE? @V407466 00701000
  732. BE SINGLE NO, ONLY SINGLE ADDR PENDING @V407466 00702000
  733. LH R1,RADDR2 SECOND ADDR IN RANGE @V407466 00703000
  734. BAL R6,CONVERT CONVERT & BUILD MSG @V407466 00704000
  735. ONLYERR MVI DETMSG,BLANK PROPAGATE BLANKS @V407466 00705000
  736. MVC DETMSG+1((MULTSIZE*8)-1),DETMSG THROUGH MSGAREA @V407466 00706000
  737. SLR R5,R5 CLEAR R5 FOR STORE @V407466 00707000
  738. ST R5,SAVEWRK8 REINITIALIZE RANGE ADDRESSES @V407466 00708000
  739. OI RAFLG,FRSTHRU TURN ON FLAG @VA11655 00708100
  740. LM R5,R6,SAVEWRK5 RESTORE R5, R6 @V407466 00709000
  741. NI VDDBITS+1,X'FF'-DETERR TURN OFF SWITCH @V407466 00710000
  742. BR R5 RETURN TO MAINLINE @V407466 00711000
  743. SPACE 2 00712000
  744. DETMSG DSECT NORMAL RESPONSES FOR DETACH @V407466 00713000
  745. DETDTYP DS CL4 DEVICE TYPE-NAME @V407466 00714000
  746. DETDEL1 DS CL1 DELIMITER @V407466 00715000
  747. DETADD1 DS CL3 CUU @V407466 00716000
  748. DETDEL2 DS CL1 DELIMITER @V407466 00717000
  749. DETCON DS CL8 CONSTANT 'DETACHED' @V407466 00718000
  750. DETDEL3 DS CL1 DELIMITER @V407466 00719000
  751. DETBY DS CL3 BY + DELIMITER @V407466 00720000
  752. DETUSER DS CL8 VMUSER @V407466 00721000
  753. DETSIZE5 EQU *-DETDTYP MSG LENGTH @V407466 00722000
  754. SPACE 00723000
  755. ORG DETBY @V407466 00724000
  756. DETUSER2 DS CL8 USERID OF DETACHEE @V407466 00725000
  757. DETSIZE2 EQU *-DETDTYP LENGTH @V407466 00726000
  758. DETDEL4 DS CL1 DELIMITER @V407466 00727000
  759. DETADD2 DS CL4 VIRTUAL ADDRESS @V407466 00728000
  760. DETDEL5 DS CL1 DELIMITER @V407466 00729000
  761. DETSIZE3 EQU *-DETDTYP LENGTH @V407466 00730000
  762. DETBY2 DS CL3 CONSTANT 'BY ' @V407466 00731000
  763. DETUSER3 DS CL8 @V407466 00732000
  764. DETSIZE EQU (*-DETDTYP+7)/8 MSG LENGTH @V407466 00733000
  765. SPACE 00734000
  766. ORG DETADD2 @V407466 00735000
  767. DETBY3 DS CL3 CONSTANT 'BY ' @V407466 00736000
  768. DETUSER4 DS CL8 USERID @V407466 00737000
  769. DETSIZE4 EQU *-DETDTYP LENGTH @V407466 00738000
  770. SPACE 00739000
  771. ORG DETMSG @V407466 00740000
  772. RACUU1 DS CL3 1ST RADDR IN RANGE @V407466 00741000
  773. RADASH DS CL1 DASH @V407466 00742000
  774. RACUU2 DS CL3 2ND RADDR IN RANGE @V407466 00743000
  775. RADEL1 DS CL2 DELIMITER @V407466 00744000
  776. RADET DS CL8 'DETACHED' @V407466 00745000
  777. RASIZE1 EQU *-RACUU1 MSG LENGTH @V407466 00746000
  778. SPACE 2 00747000
  779. DMKVDD CSECT , RE-ENTER PREVIOUS CSECT @V407466 00748000
  780. SPACE 2 00749000
  781. *---------------------------------------------------------------------* 00750000
  782. * CVTRADD - CONVERT DEVICE ADDRESS TO HEXADECIMAL * 00751000
  783. * ZAPVOLD - REMOVE VOLUME SERIAL FROM REAL DEVICE BLOCK * 00752000
  784. *---------------------------------------------------------------------* 00753000
  785. CVTRADD EQU * CONVERT REAL DEVICE ADDRESS @V407466 00754000
  786. LR R1,R9 ADDR TO R1 @V407466 00755000
  787. TM VDDBITS,RANGE+MULTR RANGE OR MULTIPLES BEING @V407466 00756000
  788. BM CVTBH PROCESSED - CONVERT ADDR IN R1 @V407466 00757000
  789. L R1,DEVADDR OTHERWISE, SINGLE ADDR @V407466 00758000
  790. CVTBH CALL DMKCVTBH @V407466 00759000
  791. BR R5 @V407466 00760000
  792. SPACE 00761000
  793. ZAPVOLD EQU * REMOVE VOLID FROM RDEVBLOK @V407466 00762000
  794. L R1,SAVEWRK9 REAL DEVICE BLOCK POINTER - SAVED@V407466 00763000
  795. USING RDEVBLOK,R1 @V407466 00764000
  796. MVC RDEVUSER(4),ASYSVM IN USE BY SYSTEM @V407466 00765000
  797. BR R5 @V407466 00766000
  798. DROP R1 @V407466 00767000
  799. EJECT 00768000
  800. DETSYST EQU * DETACH VOLUME FROM SYSTEM @V407466 00769000
  801. USING RDEVBLOK,R8 @V407466 00770000
  802. TM RDEVSTAT,RDEVDED ATTACHED TO A USER ? @V407466 00771000
  803. BO DEVATTU YES - ERROR @V407466 00772000
  804. CLI RDEVTYPC,CLASDASD IF IT ISN'T A DASD DEVICE... @V407466 00773000
  805. BNE INVTYPE ...IT CAN'T BE ATTACHED TO SYSTEM@V407466 00774000
  806. TM RDEVFLAG,RDEVSYS Is device attached to system? HRC039DK 00774100
  807. BZ BADSYST Device is not attached to system HRC039DK 00774200
  808. SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 00775000
  809. MVC CMDUSER(6),RDEVSER SAVE SERIAL FOR MESSAGES @V407466 00776000
  810. BAL R5,ZAPVOLD CLEAR VOLID AND RDEVUSER FROM @V407466 00777000
  811. * RDEVBLOK 00778000
  812. BAL R5,GETRTYP GET TYPE-NAME IN TO R4 @V407466 00779000
  813. OI RDEVFLAG,RDEVMOUT INDICATE VOLUME NOT ATTACHED @V407466 00780000
  814. NI RDEVFLAG,255-RDEVSYS Device detached from sys. HRC039DK 00780100
  815. TM VDDBITS,MULTR MULTIPLES BEING PROCESSED ?? @V407490 00781000
  816. BO MULTMSG YES, FORMAT MULTIPLE MSG @V407490 00782000
  817. TM VDDBITS,RANGE PROCESSING RANGE PER CHANCE ?? @V407490 00783000
  818. BO RAMSG YES, GO BUILD RANGE MSG @V407490 00784000
  819. B RESPOND SETUP FOR DETACH RESPONSES @V407466 00785000
  820. SPACE 4 00786000
  821. *---------------------------------------------------------------------* 00787000
  822. * DEDCHAN - ATTACH OR DETACH DEDICATED CHANNEL(S) * 00788000
  823. * CONTROL TRANSFERS TO THE MODULE "DMKVCHDC" FOR TESTING * 00789000
  824. * THE AVAILABILITY OF THE CHANNEL AND DEVICES, AND FOR * 00790000
  825. * THE ACTUAL ATTACH OR DETACH FUNCTIONS. FLAGS AND COMMAND * 00791000
  826. * LINE DATA ARE PASSED TO DMKVCHDC IN REGISTERS 1-4. * 00792000
  827. *---------------------------------------------------------------------* 00793000
  828. SPACE 2 00794000
  829. DEDCHAN EQU * PROCESSING FOR DEDICATED CHANNELS@V407466 00795000
  830. LA R0,MULTSIZE SIZE OF WORK AREA @V407490 00796000
  831. LR R1,R4 LOAD THE ADDRESS OF WORKAREA @V407490 00797000
  832. CALL DMKFRET GO RELEASE THE WORKAREA @V407490 00798000
  833. L R1,VDDBITS FLAGS USED WITHIN "DMKVDD" @V407466 00799000
  834. L R2,DEVADDR BYTE 3 HAS CHANNEL NUMBER @V407466 00800000
  835. LM R3,R4,CMDUSER USERID WANTING THE CHANNEL @V407466 00801000
  836. CALL DMKVCHDC @V407466 00802000
  837. ST R2,SAVER2 SAVE RETURN CODE @V407490 00803000
  838. B VDDEXIT EXIT TO DMKCFM @V407466 00804000
  839. EJECT 00805000
  840. *---------------------------------------------------------------------* 00806000
  841. * FREUSER AND SWPUSER - UNLOCK USERID AND SWAP VMBLOKS * 00807000
  842. * LOKUSER AND SWPCALL - LOCK A USERID AND SWAP VMBLOKS * 00808000
  843. *---------------------------------------------------------------------* 00809000
  844. SPACE 2 00810000
  845. FREUSER EQU * UNLOCK ATTACHEE'S USERID @V407466 00811000
  846. LA R1,VMUSER @V407466 00812000
  847. CALL DMKLOCKD DIRECTORY UNLOCK SUBROUTINE @V407466 00813000
  848. SWPCALL EQU * GO BACK TO CALLER'S VMBLOK @V407466 00814000
  849. L R1,SAVER11 GET CALLER'S VMBLOK ADDRESS @V407508 00815000
  850. SWTCHVM SWITCH TO CALLER'S VMBLOK @V4M0193 00816000
  851. BR R5 ...RETURN TO CALLER @V407466 00817000
  852. SPACE 2 00818000
  853. LOKUSER EQU * THROW A LOCK ON DEVICE BLOCKS @V407466 00819000
  854. LA R1,VMUSER POINT TO THE USERID @V407466 00820000
  855. CALL DMKLOCKQ ...AND LOCK IT @V407466 00821000
  856. LA R0,L'VMUSER LENGTH OF USERID IN R1 @V407466 00822000
  857. CALL DMKSCNAU USER STILL LOGGED ON? @V407466 00823000
  858. BNZ NOTLOGD NO - ERROR @V407466 00824000
  859. BR R5 @V407466 00825000
  860. SPACE 2 00826000
  861. SWPUSER EQU * SWAP TO TARGET USER'S VMBLOK @V407466 00827000
  862. LR R1,R10 GET USER'S VMBLOK ADDRESS @V407508 00828000
  863. SWTCHVM SWITCH TO SPECIFIED USER @V4M0193 00829000
  864. BR R5 @V407466 00830000
  865. SPACE 3 00831000
  866. *---------------------------------------------------------------------* 00832000
  867. * GETRDEV, GETRTYP - GET REAL DEVICE BLOCK + TYPE NAME * 00833000
  868. *---------------------------------------------------------------------* 00834000
  869. SPACE 2 00835000
  870. GETRDEV EQU * LOCATE REAL DEVICE BLOCK @V407466 00836000
  871. TM VDDBITS,RANGE+MULTR RANGE OR MULTIPLES @V407466 00837000
  872. BM GETRDEV2 FIND THE RDEVBLOK @V407466 00838000
  873. L R1,DEVADDR REAL DEVICE ADDRESS @V407466 00839000
  874. GETRDEV2 CALL DMKSCNRU ...FIND THE RDEVBLOK @V407466 00840000
  875. BNZ UNKNOWN REAL DEVICE DOES NOT EXIST @V407466 00841000
  876. ST R8,SAVEWRK9 SAVE THE RDEVBLOK POINTER @V407466 00842000
  877. BR R5 @V407466 00843000
  878. SPACE 00844000
  879. GETRTYP EQU * GET EBCDIC TYPE-NAME OF REAL @V407466 00845000
  880. * DEVICE 00846000
  881. L R8,SAVEWRK9 RDEVBLOK ADDRESS @V407466 00847000
  882. CALL DMKSCNRN ...GET IT'S TYPE-NAME @V407466 00848000
  883. LR R3,R1 ...INTO R3 @V407466 00849000
  884. BR R5 @V407466 00850000
  885. EJECT 00851000
  886. * 00852000
  887. * THIS IS THE SAME BRANCH TABLE USED BY ATTACH; THE EMPTY BRANCH 00853000
  888. * ENTRIES ARE NOT USED BY DETACH. 00854000
  889. * 00855000
  890. SPACE 2 00856000
  891. ERRTABL DS 0F @V407466 00857000
  892. B NODRAIN 8 @V407466 00858000
  893. B DEVOFFL 12 @V407466 00859000
  894. B SHRCHEK 16 @V407466 00860000
  895. B DEVOWND 20 @V407466 00861000
  896. DC F'0' 24 @V407466 00862000
  897. B INVOPT 28 HRC003DK 00863490
  898. DC F'0' 32 @V407466 00864000
  899. B INVADD2 36 @V407466 00865000
  900. DC F'0' 40 @V407466 00866000
  901. B NOTLOGD 44 @V407466 00867000
  902. B INVUSID 48 @V407466 00868000
  903. B INVADD1 52 @V407466 00869000
  904. DC F'0' 56 @V407466 00870000
  905. DC F'0' 60 @V407466 00871000
  906. DC F'0' 64 @V407466 00872000
  907. B BADUSER 68 @V407466 00873000
  908. B BADTRACE 72 @VA09655 00873500
  909. SPACE 2 00874000
  910. ERR16 LA R2,RC16 SHARED DEVICE @V407466 00875000
  911. B ERROR FORMAT ERROR MESSAGE @V407466 00876000
  912. SPACE 2 00877000
  913. ERR68 LA R2,RC68 BADUSER @V407466 00878000
  914. ERROR LA R7,SAVEWRK2 ESTABLISH ADDRESSABILITY @V407466 00879000
  915. USING WRK2,R7 FOR ERROR MESSAGES @V407466 00880000
  916. B ERRTABL-8(R2) BRANCH TO APPROPRIATE ERROR @V407466 00881000
  917. * ROUTINE 00882000
  918. SPACE 2 00883000
  919. RC16 EQU 16 SHARED DEVICE @V407466 00884000
  920. RC68 EQU 68 BADUSER @V407466 00885000
  921. EJECT 00886000
  922. INVOPT EQU * HRC003DK 00886200
  923. * R0 & R1 contain LENGTH already HRC003DK 00886400
  924. LA R2,EMSG003 HRC003DK 00886600
  925. B MSGSEND3 HRC003DK 00886800
  926. NOTLOGD EQU * USERID NOT LOGGED ON @V407466 00887000
  927. BAL R5,SWPCALL MAKE SURE WE HAVE RIGHT TIMER @VA10357 00887500
  928. LA R1,CMDUSER USERID @V407466 00888000
  929. LA R0,L'VMUSER DATA LENGTH @V407466 00889000
  930. LA R2,EMSG045 MSG= DMKVDD045E @V407490 00890000
  931. B MSGSEND3 GO SEND MSG @V407490 00891000
  932. SPACE 2 00892000
  933. INVTYPE EQU * @V407466 00893000
  934. BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00894000
  935. BAL R5,CVTRADD GET REAL ADDRESS @V407466 00895000
  936. STCM R1,B'0111',SAVEWRK2 SAVE IN SAVEWRK2 @V407466 00896000
  937. LA R0,L'SAVEWRK2-1 DATA LENGTH @V407466 00897000
  938. LA R2,EMSG006 MSG= DMKVDD006E @V407490 00898000
  939. B MSGSEND ISSUE MESSAGE @V407466 00899000
  940. SPACE 2 00900000
  941. DEVATTU EQU * TYPE RADDR ATTACHED TO USERID @V407466 00901000
  942. BAL R5,TSTRANGE SEE IF RANGE PROCESSING @V407466 00902000
  943. LA R2,EMSG140 MSG= DMKVDD140E @V407490 00903000
  944. L R8,SAVEWRK9 RDEVBLOK ADDRESS @V407466 00904000
  945. L R8,RDEVUSER-RDEVBLOK(R8) USER'S VMBLOK @V407466 00905000
  946. MVC CMDUSER(L'VMUSER),VMUSER-VMBLOK(R8) USERID @V407466 00906000
  947. BAL R6,USERDEV SETUP DATA STRING FOR 'ERMSG' @V407466 00907000
  948. B MSGSEND ISSUE ERROR MESSAGE @V407466 00908000
  949. SPACE 2 00909000
  950. INVUSID EQU * USERID MISSING OR INVALID @V407466 00910000
  951. LA R2,EMSG020 MSG= DMKVDD020E @V407490 00911000
  952. B MSGONLY @V407466 00912000
  953. SPACE 2 00913000
  954. INVADD1 EQU * FIRST ADDR MISSING OR INVALID @V407466 00914000
  955. BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00915000
  956. TM VDDBITS,CHANNEL MESSAGE FOR CAHNNEL COMMAND @V407466 00916000
  957. BZ VDD022A BRANCH IF NOT @V407490 00917000
  958. LA R2,EMSG034 LOAD CHANNEL ERROR CODE @V407490 00918000
  959. B MSGONLY . . . . @V407466 00919000
  960. SPACE 00920000
  961. INVADD2 LA R2,EMSG022 MSG= DMKVDD022E @V407490 00921000
  962. B MSGONLY @V407466 00922000
  963. SPACE 00923000
  964. VDD021 BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00924000
  965. LA R2,EMSG021 RADDR MISSING OR INVALID @V407490 00925000
  966. VDDMSG BAL R5,CVTRADD GET REAL ADDRESS @V407490 00926000
  967. STCM R1,B'0111',SAVEWRK2 SAVE IN SAVEWRK2 @V407490 00927000
  968. LA R0,L'SAVEWRK2-1 GET DATA LENGTH @V407490 00928000
  969. TM VDDBITS,RANGE PROCESSING RANGE?? @VA14197 00929100
  970. BO MSGSEND YES, SEND MSG AND RETURN TO VDD @V407490 00930000
  971. B MSGSEND2 JUST SEND MESSAGE @V407490 00931000
  972. SPACE 2 00932000
  973. VDD022 EQU * @V407490 00933000
  974. LA R2,EMSG022 MSG NUMBER @V407490 00934000
  975. B VDDMSG SET UP FOR MSG @V407490 00935000
  976. BADTRACE EQU * TRACING I/O @VA09655 00935100
  977. MVC SAVEWRK2(32),TRACEMSG MOVE IN MESSAGE @VA14558 00935210
  978. LA R0,L'TRACEMSG LENGTH OF MSG @VA09655 00935300
  979. LA R2,EMSG273 MSG NUMBER @VA09655 00935400
  980. B MSGSEND SEND MSG @VA09655 00935500
  981. TRACEMSG DC C'DETACH REJ VIRT MACH TRACING I/O' @VA14558 00935610
  982. EJECT 00936000
  983. VDD022A EQU * @V407490 00937000
  984. LA R1,CMDUSER GET INVALID PARM @V407490 00938000
  985. LA R0,L'VMUSER GET DATA LENGTH @V407490 00939000
  986. LA R2,EMSG022 MSG NUMBER @V407490 00940000
  987. B MSGSEND3 GO SEND MSG @V407490 00941000
  988. SPACE 2 00942000
  989. SPACE 2 00943000
  990. INVADDF1 EQU * DEV ADDR DOES NOT EXIST @V407466 00944000
  991. L R9,SAVEWRK7 RESTORE R9 @V407466 00945000
  992. BAL R5,FREUSER UNLOCK USER'S CONTROL BLOCKS @V407466 00946000
  993. UNKNOWN EQU * DEV ADDR DOES NOT EXIST @V407466 00947000
  994. BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00948000
  995. BAL R5,CVTRADD CONVERT ADDRESS TO HEX @V407466 00949000
  996. STCM R1,B'0111',SAVEWRK2 @V407466 00950000
  997. LA R0,L'SAVEWRK2-1 DATA LENGTH @V407466 00951000
  998. LA R2,EMSG040 MSG= DMKVDD040E @V407490 00952000
  999. B MSGSEND GO BUILD + TYPE MESSAGE @V407466 00953000
  1000. SPACE 2 00954000
  1001. DEVOFFL EQU * TYPE RADDR OFFLINE @V407466 00955000
  1002. CLI RDEVTYPC,CLASDASD DASD TYPE ?? @V407490 00956000
  1003. BNE DEVOFFLI NO @V407490 00957000
  1004. CLI RDEVTYPE,TYP2305 HOW ABOUT A DRUM ??? @V407490 00958000
  1005. BNE DEVOFFLI NO @V407490 00959000
  1006. TM RDEVADD+1,X'07' BASE ADDRESS ?? @V407490 00960000
  1007. BNZ VDD021 NO, DETACHING EXPOSURE,BAD NEWS @V407490 00961000
  1008. DEVOFFLI EQU * @V407490 00962000
  1009. BAL R5,TSTRANGE SEE IF RANGE SPECIFIED @V407466 00963000
  1010. LA R2,EMSG046 MSG= DMKVDD046E @V407490 00964000
  1011. B TYPRADD GO BUILD VARIABLE STRING @V407466 00965000
  1012. SPACE 00966000
  1013. BADSYST EQU * 00966100
  1014. MVC CMDUSER,=C'SYSTEM ' Specify userid as SYSTEM HRC039DK 00966200
  1015. BADUSER EQU * TYPE RADDR NOT ATTACHED TO USERID@V407466 00967000
  1016. BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00968000
  1017. BAL R6,USERDEV SET UP 'TYPE RADDR USERID' STRING@V407466 00969000
  1018. LA R2,121(,0) MSG= DMKVDD121E @V407466 00970000
  1019. B MSGSEND @V407466 00971000
  1020. SPACE 2 00972000
  1021. DEVOWND EQU * DASD RADDR CP OWNED @V407466 00973000
  1022. BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00974000
  1023. BAL R5,CVTRADD CONVERT ADDRESS @V407466 00975000
  1024. STCM R1,B'0111',SAVEWRK2 @V407466 00976000
  1025. LA R0,L'SAVEWRK2-1 DATA LENGTH @V407466 00977000
  1026. LA R2,EMSG123 MSG= DMKVDD123E @V407490 00978000
  1027. B MSGSEND @V407466 00979000
  1028. SPACE 2 00980000
  1029. DEVSHRD EQU * DASD RADDR IN USE BY NNN USERS @V407466 00981000
  1030. BAL R5,CVTRADD CONVERT ADDRESS @V407466 00982000
  1031. STCM R1,B'0111',SAVEWRK2 SAVE IN MESSAGE @V407466 00983000
  1032. MVI DELIM1,BIN0 DELIMITER @V407466 00984000
  1033. LM R1,R2,SAVEWRK3 SAVE USERID SINCE DESTROYED @V407466 00985000
  1034. STM R1,R2,SAVEWRK5 WHEN MSG IS BUILT @V407466 00986000
  1035. SLR R1,R1 CLEAR FOR NEXT LOAD HALF @V407466 00987000
  1036. LH R1,RDEVLNKS-RDEVBLOK(,R8) NO. OF USERS @V407466 00988000
  1037. CALL DMKCVTBD CONVERT TO DECIMAL @V407466 00989000
  1038. STCM R1,B'0111',SAVEWRK3 SAVE IN MSG BUFFER @V407466 00990000
  1039. LA R0,DETSIZE1 DATA LENGTH @V407466 00991000
  1040. LA R2,EMSG124 MSG= DMKVDD124E @V407490 00992000
  1041. B MSGSEND ISSUE ERROR MESSAGE @V407466 00993000
  1042. SPACE 00994000
  1043. SHRCHEK EQU * CHECK DIFFERENT VARIETIES OF @V407466 00995000
  1044. * 'SHARED' 00996000
  1045. BAL R5,TSTRANGE PROCESS SUCCESSFUL MSG FIRST @V407466 00997000
  1046. L R8,SAVEWRK9 GET RDEVBLOK ADDRESS @V407466 00998000
  1047. USING RDEVBLOK,R8 @V407466 00999000
  1048. CLI RDEVTYPC,CLASDASD IS IT DASD DEVICE ? @V407466 01000000
  1049. BE DEVSHRD YES - ACTUAL LINK USAGE @V407466 01001000
  1050. EMSG143E LA R2,EMSG143 MSG = DMKVDD143E @VA07232 01002000
  1051. B TYPRADD @V407466 01004000
  1052. SPACE 01005000
  1053. AIF (NOT &DEDCH).NOTDED3 **AIF** @V407466 01006000
  1054. CHANDED EQU * ERROR FOR DEDICATED CHANNELS @V407466 01007000
  1055. LA R7,SAVEWRK2 GET ADDRESSABILITY TO MSG AREA @VA07240 01007100
  1056. L R9,SAVEWRK7 RESTORE R9 @V407466 01008000
  1057. BAL R5,FREUSER UNLOCK USER'S CONTROL BLOCKS @V407466 01009000
  1058. BAL R5,TSTRANGE DETERMINE IF RANGE PROCESSING @V407466 01010000
  1059. USING VCHBLOK,R6 @V407466 01011000
  1060. LH R1,VCHADD GET ADDRESS OF VIRTUAL CHANNEL @V407466 01012000
  1061. SRL R1,8(0) ... @V407466 01013000
  1062. CALL DMKCVTBD CONVERT TO DECIMAL @V407466 01014000
  1063. DROP R6 @V407466 01015000
  1064. MVI SAVEWRK4,BIN0 DELIMITER @V407466 01016000
  1065. STCM R1,B'0011',DETCHAN STORE CHANNEL NUMBER @V407466 01017000
  1066. TM DETCHAN,HEX0F CHANNEL NUMBER > 9 @V407466 01018000
  1067. BNZ SKIPNEXT YES - LEAVE CHANNEL NUMBER ALONE @V407466 01019000
  1068. MVI DETCHAN,BIN0 CLEAR HI ORDER BYTE @V407466 01020000
  1069. SKIPNEXT BAL R5,GETRDEV GET REAL DEVICE BOLCKS @V407466 01021000
  1070. BAL R5,GETRTYP GO GET THE TYPE OF DEVICE @V407466 01022000
  1071. BAL R5,CVTRADD ... @V407466 01023000
  1072. ST R3,SAVEWRK2 SAVE IT. @V407466 01024000
  1073. ST R1,SAVEWRK3 STORE DEVICE ADDRESS @V407466 01025000
  1074. MVI SAVEWRK3,BIN0 DELIMITER @V407466 01026000
  1075. LA R0,DETSIZE7 MESSAGE LENGTH @V407466 01027000
  1076. LA R2,EMSG135 YES, MSG= DMKVDD135E @V407490 01028000
  1077. B MSGSEND @V407466 01029000
  1078. .NOTDED3 ANOP 01030000
  1079. SPACE 01031000
  1080. NODRAIN EQU * TYPE RADDR NOT DRAINED @V407466 01032000
  1081. LA R2,EMSG142 MSG= DMKVDD142E @V407490 01033000
  1082. TYPRADD EQU * @V407466 01034000
  1083. LM R0,R1,SAVEWRK3 SAVE USERID SINCE FIELD DESTROYED@V407466 01035000
  1084. STM R0,R1,SAVEWRK5 WHEN MSG BUILT @V407466 01036000
  1085. BAL R5,GETRTYP @V407466 01037000
  1086. BAL R5,CVTRADD @V407466 01038000
  1087. ST R3,SAVEWRK2 PLACE 'TYPE' IN MESSAGE @V407466 01039000
  1088. ST R1,SAVEWRK3 @V407466 01040000
  1089. MVI SAVEWRK3,BIN0 DELIMITER @V407466 01041000
  1090. LA R0,L'SAVEWRK2+L'SAVEWRK3 DATA LENGTH @V407466 01042000
  1091. B MSGSEND ISSUE MESSAGE @V407466 01043000
  1092. SPACE 2 01044000
  1093. MSGONLY EQU * NO EXTRA DATA FOR MESSAGE @V407466 01045000
  1094. SLR R1,R1 ZERO R1 @V407466 01046000
  1095. SLR R0,R0 ZERO R0 @V407466 01047000
  1096. B MSGSEND2 ISSUE ERROR MESSAGE @V407466 01048000
  1097. SPACE 2 01049000
  1098. MSGSEND EQU * BUILD + TYPE ERROR MESSAGE @V407466 01050000
  1099. ICM R2,B'1000',=X'80' RETURN TO DMKVDD AFTER MSG @V407466 01051000
  1100. * RETURN 01052000
  1101. MSGSEND2 LA R1,SAVEWRK2 START OF MOST DATA @V407466 01053000
  1102. MSGSEND3 EQU * @V407490 01054000
  1103. LTR R2,R2 ARE WE GOING TO RETURN ??? @V407490 01055000
  1104. BM WILLRET YES, WE SHALL RETURN.. @V407490 01056000
  1105. ICM R2,B'1000',=X'40' NOT RETURNING, SET UP FRET @V407490 01057000
  1106. LA R3,MULTSIZE SIZE OF THE WORKAREA @V407490 01058000
  1107. SLL R3,24 GET IT TO THE HI ORDER @V407490 01059000
  1108. OR R3,R4 LOAD IN THE ADDRESS @V407490 01060000
  1109. WILLRET EQU * @V407490 01061000
  1110. ICM R0,B'1110',DMKVDD+3 MODULE IDENTIFIER @V407466 01062000
  1111. CALL DMKERMSG GO DO IT @V407466 01063000
  1112. ST R2,SAVER2 SAVE ERROR NUMBER @V407490 01064000
  1113. CH R2,=H'140' ERROR MSG 140E? @V407466 01065000
  1114. BE MVCUSER RESTORE USERID TO ORIG. LOC. @V407466 01066000
  1115. CH R2,=H'121' ERROR MSG 121E? @V407466 01067000
  1116. BE MVCUSER RESTORE USERID TO ORIG. LOC. @V407466 01068000
  1117. CH R2,=H'124' ERROR MSG 124E? @V407466 01069000
  1118. BE MVCUSER2 RESTORE USERID @V407466 01070000
  1119. CH R2,=H'142' ERROR MSG 142E? @V407466 01071000
  1120. BE MVCUSER2 RESTORE USERID @V407466 01072000
  1121. CH R2,=H'143' ERROR MSG 143E? @V407466 01073000
  1122. BE MVCUSER2 RESTORE USERID @V407466 01074000
  1123. CH R2,=H'46' ERROR MSG 046E? @V407466 01075000
  1124. BE MVCUSER2 RESTORE USERID @V407466 01076000
  1125. CH R2,=H'273' ERROR MSG 273E ? @VA09655 01076300
  1126. BE CLEANXT RETURN TO CALLER @VA09655 01076700
  1127. CONTINUE TM VDDBITS,MULTR PROCESSING MULTIPLE ADDRS @V407466 01077000
  1128. BO MULTCONT CONTINUE PROCESSING MULTIPLES @V407466 01078000
  1129. TM VDDBITS,RANGE PROCESSING RANGE @V407466 01079000
  1130. BNO CLEANXT NO, CLEANUP AND GET OUT @V407466 01080000
  1131. B ENDRANGE SEE IF MORE RANGE TO PROCESS @V407466 01081000
  1132. SPACE 01082000
  1133. MVCUSER MVC SAVEWRK3(8),SAVEWRK4+1 RESTORE USERID TO ORIG. @V407466 01083000
  1134. * LOC. 01084000
  1135. B CONTINUE PROCEED WITH NEXT ADDR @V407466 01085000
  1136. SPACE 01086000
  1137. MVCUSER2 LM R1,R2,SAVEWRK5 RESTORE USERID @V407466 01087000
  1138. STM R1,R2,SAVEWRK3 TO ORIGINAL LOCATION @V407466 01088000
  1139. B CONTINUE AND CONTINUE TO PROCESS @V407466 01089000
  1140. EJECT 01090000
  1141. SPACE 2 01091000
  1142. *---------------------------------------------------------------------* 01092000
  1143. * USERDEV - BUILD STRING FOR DMKERMSG = "TYPE RADDR USERID" * 01093000
  1144. *---------------------------------------------------------------------* 01094000
  1145. SPACE 2 01095000
  1146. USERDEV EQU * @V407466 01096000
  1147. BAL R5,GETRTYP GET 'TYPE' IN GPR 4 @V407466 01097000
  1148. BAL R5,CVTRADD GET 'RADD' IN GPR 1 @V407466 01098000
  1149. MVC SAVEWRK5+1(L'VMUSER),CMDUSER SLIDE USER OVER @V407490 01099000
  1150. MVI SAVEWRK5,BIN0 LAST DELIMITER @V407466 01100000
  1151. ST R1,SAVEWRK4 'RADD' @V407466 01101000
  1152. MVI SAVEWRK4,BIN0 FIRST DELIMITER @V407466 01102000
  1153. ST R3,SAVEWRK3 'TYPE' @V407466 01103000
  1154. MVC SAVEWRK2(20),SAVEWRK3 LEFT-JUSTIFY ENTIRE STRING@V407466 01104000
  1155. LA R0,DETSIZE6 DATA LENGTH @V407466 01105000
  1156. BR R6 RETURN @V407466 01106000
  1157. SPACE 3 01106010
  1158. RAFLG DC X'00' RANGE FLAG @VA11236 01106020
  1159. FRSTHRU EQU X'80' FIRST TIME THRU THE RANGE @VA11236 01106030
  1160. SPACE 2 01107000
  1161. EJECT 01108000
  1162. LTORG @V407466 01109000
  1163. EJECT 01110000
  1164. COPY SAVE @V407466 01111000
  1165. EJECT 01112000
  1166. *----------------------------* 01113000
  1167. * 01114000
  1168. VDDBITS EQU SAVEWRK1 FLAGS USED WITHIN VDD @V407466 01115000
  1169. MULTCUU EQU SAVEWRK1+2 NO. MULTIPLE ADDRS IN MSG @V407466 01116000
  1170. DEVADDR EQU SAVEWRK2 REAL/VIRTUAL DEVICE ADDRESS @V407466 01117000
  1171. CMDUSER EQU SAVEWRK3 AND SAVEWRK4 - USERID @V407466 01118000
  1172. VIRTADD EQU SAVEWRK5 VIRTUAL DEVICE ADDRESS @V407466 01119000
  1173. ENDRADDR EQU SAVEWRK1+2 RANGE RADDR @V407466 01120000
  1174. RADDR1 EQU SAVEWRK8 FIRST ADDR IN RANGE @V407466 01121000
  1175. RADDR2 EQU SAVEWRK8+2 SECOND ADDR IN RANGE @V407466 01122000
  1176. EMSG003 EQU 3 HRC003DK 01122500
  1177. EMSG006 EQU 6 @V407490 01123000
  1178. EMSG020 EQU 20 @V407490 01124000
  1179. EMSG021 EQU 21 @V407490 01125000
  1180. EMSG022 EQU 22 @V407490 01126000
  1181. EMSG034 EQU 34 @V407490 01127000
  1182. EMSG040 EQU 40 @V407490 01128000
  1183. EMSG045 EQU 45 @V407490 01129000
  1184. EMSG046 EQU 46 @V407490 01130000
  1185. EMSG123 EQU 123 @V407490 01131000
  1186. EMSG124 EQU 124 @V407490 01132000
  1187. EMSG135 EQU 135 @V407490 01133000
  1188. EMSG140 EQU 140 @V407490 01134000
  1189. EMSG142 EQU 142 @V407490 01135000
  1190. EMSG143 EQU 143 @V407490 01136000
  1191. EMSG273 EQU 273 @VA09655 01136500
  1192. FULLEN EQU 48 @V407490 01137000
  1193. MAXCUU EQU 40 @V407490 01138000
  1194. COUNT4 EQU 4 @V407490 01139000
  1195. COUNT28 EQU 28 @V407490 01140000
  1196. SPACE 01141000
  1197. * 01142000
  1198. * FLAGS DEFINED IN "VDDBITS" : 01143000
  1199. * 01144000
  1200. CHANNEL EQU X'80' "CHANNEL" OPTION SPECIFIED @V407466 01145000
  1201. NSYSOP EQU X'40' CALLER IS NOT SYSTEM OPERATOR @V407466 01146000
  1202. MULTR EQU X'20' DETACH VIRTUAL DEVICE @V407466 01147000
  1203. ATTSYST EQU X'10' ATTACH/DETACH TO/FROM "SYSTEM" @V407466 01148000
  1204. ATTREAD EQU X'08' ATTACH "R/O" @V407466 01149000
  1205. RANGE EQU X'04' RANGE PROCESSING @V407466 01150000
  1206. VDETACH EQU X'02' DETACH VIRTUAL @V407466 01151000
  1207. DED2305 EQU X'01' ATTACH/DEDICATE MULTI EXP DEVICE @V407466 01152000
  1208. * 01153000
  1209. * FLAGS DEFINED IN "VDDBITS" : 01154000
  1210. * 01155000
  1211. DETACH EQU X'08' DETACH COMMAND @V407466 01156000
  1212. DETERR EQU X'02' ERROR MESSAGE INDICATOR @V407466 01157000
  1213. TPNORUN EQU X'01' LEAVE OPTION SPECIFIED HRC003DK 01157500
  1214. SPACE 01158000
  1215. BIN0 EQU X'00' MESSAGE DELIMITER @V407466 01159000
  1216. BLANK EQU X'40' BLANK @V407466 01160000
  1217. HEX0F EQU X'0F' @V407466 01161000
  1218. DASH EQU C'-' RANGE DELIMITER @V407466 01162000
  1219. SPACE 2 01163000
  1220. MDSECT DSECT DSECT FOR MULTIPLE ADDRESSES @V407466 01164000
  1221. MULTADD DS F MULTIPLE ADDRESS @V407466 01165000
  1222. DS 47F UP TO 48 CUU ON ONE COMMAND @V407466 01166000
  1223. DS 4D @V407466 01167000
  1224. MULTSIZE EQU (*-MULTADD)/8 LENGTH OF BUFFER IN DOUBLEWORDS @V407466 01168000
  1225. SPACE 2 01169000
  1226. ORG MULTADD OVERLAY @V407466 01170000
  1227. MULTCON DS CL8 CONSTANT 'DETACHED' @V407466 01171000
  1228. MULTSIZ1 EQU *-MULTCON L'DETACHED @V407466 01172000
  1229. MULTDEL2 DS CL1 DELIMITER @V407466 01173000
  1230. MULTUSER DS CL8 USERID @V407466 01174000
  1231. MULTSIZ8 EQU *-MULTDEL2 MSG LENGTH @V407466 01175000
  1232. MULTSIZ6 EQU *-MULTCON L'DETACHED + L'DELIM +L'USERID @V407466 01176000
  1233. MULTDEL3 DS CL1 DELIMITER @V407466 01177000
  1234. MULTBY DS CL3 CONSTANT @V407466 01178000
  1235. MULTUSE2 DS CL8 USERID @V407466 01179000
  1236. MULTSIZ2 EQU *-MULTCON MESSAGE LENGTH @V407466 01180000
  1237. MULTSIZ3 EQU *-MULTDEL2 MESSAGE LENGTH @V407466 01181000
  1238. SPACE 2 01182000
  1239. ORG MULTUSER @V407466 01183000
  1240. MULTBY2 DS CL3 CONSTANT 'BY ' @V407466 01184000
  1241. MULTUSE3 DS CL8 USERID @V407466 01185000
  1242. MULTSIZ4 EQU *-MULTCON MSG LENGTH @V407466 01186000
  1243. SPACE 01187000
  1244. ORG MULTADD @V407466 01188000
  1245. MULTADDR DS CL3 MULTIPLE ADDR @V407466 01189000
  1246. MULTDEL1 DS CL1 DELIMITER @V407466 01190000
  1247. SPACE 01191000
  1248. WRK2 DSECT ERROR MESSAGE DSECT @V407466 01192000
  1249. DETADD DS XL3 DASD RADDR IN USE BY NNN USERS @V407466 01193000
  1250. DELIM1 DS X MSG DELIMITER @V407466 01194000
  1251. DETNNN DS XL3 NNN USERS @V407466 01195000
  1252. DETSIZE1 EQU *-DETADD MSG LENGTH @V407466 01196000
  1253. DS XL6 RESERVED @V407466 01197000
  1254. DETUSE DS CL4 USERID @V407466 01198000
  1255. DETSIZE6 EQU *-DETADD MSG LENGTH @V407466 01199000
  1256. ORG DETADD @V407466 01200000
  1257. DS CL9 @V407466 01201000
  1258. DETCHAN DS CL2 CHANNEL NUMBER @V407466 01202000
  1259. DETSIZE7 EQU (*-DETADD) MSG LENGTH @V407466 01203000
  1260. EJECT 01204000
  1261. COPY EQU @V407466 01205000
  1262. COPY DEVTYPES @V407466 01206000
  1263. PSA @V407466 01207000
  1264. COPY VMBLOK @V407466 01208000
  1265. COPY RBLOKS @V407466 01209000
  1266. COPY VBLOKS @V407466 01210000
  1267. COPY IOBLOKS @V407466 01211000
  1268. VDDLOK DSECT , DSECT FOR EXPANDED IOBLOK @V407466 01212000
  1269. DS (IOBSIZE)D @V407466 01213000
  1270. VDDLCCW DS 5D SEEK,SEARCH,TIC,READ,SENSE @V407466 01214000
  1271. VDDLCNT DS 1D SEEK AND SEARCH ARGS @V407466 01215000
  1272. VDDLBUF DS 10D 80-BYTE LABEL-RECORD BUFFER @V407466 01216000
  1273. VDDLSNS DS 3D 24-BYTE SENSE AREA @V407466 01217000
  1274. VDDLLEN EQU (*-VDDLOK)/8 BLOCK LENGTH IN DBL-WDS @V407466 01218000
  1275. SPACE 01219000
  1276. DMKVDD CSECT , RE-ENTER MAIN CSECT @V407466 01220000
  1277. EJECT 01221000
  1278. COPY ALLOC @V407466 01222000
  1279. COPY UDIRECT @V407466 01223000
  1280. END DMKVDD 01224000