Table of Contents

DMKDSB Source

References

Source Listing

DMKDSB.ASSEMBLE.txt
  1. DSB TITLE 'DMKDSB (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE INPUT SERIALIZATION @V200820 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME : DMKDSB 00005000
  6. * 00006000
  7. * 00007000
  8. * 00008000
  9. * FUNCTION: 00009000
  10. * 00010000
  11. * 00011000
  12. * DMKDSBSD: ISSUES BUFFER UNLOAD CCW FOR 3330/3340/3350/2305. 00012000
  13. * 00013000
  14. * DMKDSBRD: READS VOLUME LABEL WHEN AN UNSOLICITED DEVICE-END 00014000
  15. * INTERRUPT OCCURS. IF THE PACK HAS BEEN CHANGED (3330/3340/ 00015000
  16. * 3350/2305) A BUFFER UNLOAD IS ALSO PERFORMED. 00016000
  17. * 00017000
  18. * 00018000
  19. * ATTRIBUTES : REENTRANT,RESIDENT,CALLED VIA SVC. 00019000
  20. * 00020000
  21. * 00021000
  22. * ENTRY POINT: DMKDSBRD - ENTRY FOR UNSOLICATED D.E. INTERRUPTS 00022000
  23. * DMKDSBSD - COLLECT DASD ENVIRONMENTAL SENSE DATA 00023000
  24. * 00024000
  25. * 00025000
  26. * ENTRY CONDITIONS : GPR8=ADDRESS OF RDEVBLOK 00026000
  27. * GPR10=ADDRESS OF IOBLOK 00027000
  28. * GPR12=BASE ADDRESS 00028000
  29. * GPR13=ADDRESS OF SAVE AREA 00029000
  30. * 00030000
  31. * 00031000
  32. * EXIT CONDITIONS : 1. RETURN TO CALLER WHEN ENTRY POINT 00032000
  33. * WAS DMKDSBSD. 00033000
  34. * 2. EXIT TO DMKDSPCH WHEN ENTRY POINT 00034000
  35. * WAS DMKDSBRD. 00035000
  36. * 00036000
  37. * 00037000
  38. * CALLS TO OTHER ROUTINES : 00038000
  39. * 1. DMKIOSQR - PERFORM REAL I/O. 00039000
  40. * 2. DMKFREE - OBTAIN STORAGE FOR DASD 00040000
  41. * IOERBLOK, WORK BUFFER AND MSG 00041000
  42. * BUFFER. 00042000
  43. * 3. DMKFRET - TO RET. STORAGE OBTAINED BY DMKFRE 00043000
  44. * 4. DMKIOESD - RECORD DASD STATISTICAL DATA 00044000
  45. * 5. DMKQCNWT - TO WRITE MSG DSB956A TO OPERATOR 00045000
  46. * 6. DMKSCNRU - TO FIND THE R-BLOCK'S 00046000
  47. * 7. DMKCVTBH - TO CONVERT REAL DEVICE ADDRESS 00047000
  48. * 8. DMKDSPCH - EXIT AFTER DMKDSBRD PROCESSING 00048000
  49. * OR TO WAIT FOR I/O TO COMPLETE. 00049000
  50. * 00050000
  51. * 00051000
  52. * EXTERNAL REFERENCES : 00052000
  53. * DMKIOESD 00053000
  54. * 00054000
  55. * 00055000
  56. * TABLES AND WORKAREAS : BUFFER TO CONTAIN CHANNEL PROGRAM 00056000
  57. * AND LABEL READ FROM DASD VOLUME. 00057000
  58. * 00058000
  59. * 00059000
  60. * REGISTER USAGE : 00060000
  61. * GPR 0=PSA ADDRESSABILITY 00061000
  62. * GPR 1=SCRATCH 00062000
  63. * GPR 2=SCRATCH 00063000
  64. * GPR 3=SCRATCH 00064000
  65. * GPR 4=SCRATCH 00065000
  66. * GPR 5=GENERAL USAGE IS FOR BAL REGISTER 00066000
  67. * GPR 6=SCRATCH 00067000
  68. * GPR 7=IOERBLOK ADDRESS 00068000
  69. * GPR 8=RDEVBLOK ADDRESS. 00069000
  70. * GPR 9=SCRATCH 00070000
  71. * GPR 10=IOBLOK ADDRESS. 00071000
  72. * GPR 11=VMBLOK ADDRESS. 00072000
  73. * GPR 12=BASE ADDRESS. 00073000
  74. * GPR 13=SAVE AREA ADDRESS. 00074000
  75. * GPR 14=EXTERNAL LINKAGE REGISTER. 00075000
  76. * GPR 15=EXTERNAL LINKAGE REGISTER. 00076000
  77. * 00077000
  78. * 00078000
  79. * NOTES : NONE. 00079000
  80. * 00080000
  81. * 00081000
  82. * 00082000
  83. * OPERATION : 00083000
  84. * 00084000
  85. * 00085000
  86. * DMKDSBSD: IS CALLED FROM DMKCPS WHEN A 'SHUTDOWN' COMMAND IS ISSUED 00086000
  87. * OR FROM DMKCCW WHEN THE VIRTUAL MACHINE ISSUES A BUFFER UNLOAD 00087000
  88. * CCW. IT DETERMINES WHAT TYPES OF DASDI DEVICES ARE 00088000
  89. * ON THE SYSTEM AND ISSUES BUFFER UNLOAD TO 3330/3340/3350/2305 00089000
  90. * DEVICES. IF NO ERROR'S ARE ENCOUNTED A CALL IS MADE TO 00090000
  91. * DMKIOESD TO RECORD THE RECORD FOR FIELD ENGINEERING USE. 00091000
  92. * 00092000
  93. * 00093000
  94. * DMKDSBRD: IS CALLED FROM DMKIOS WHEN AN UNSOLICITED DEVICE END 00094000
  95. * INTERRUPT OCCURS. THIS ROUTINE WILL READ THE VOLUME LABEL VIA 00095000
  96. * A CALL TO DMKIOS. IF THE PACK HAS BEEN CHANGED AND THE 00096000
  97. * DEVICE IS A 3330/3340/3350, A BUFFER UNLOAD COMMAND WILL BE 00097000
  98. * EXECUTED. A CALL IS THEN MADE TO DMKIOESD TO RECORD THE 00098000
  99. * RECORD. THE NEW VOLUME LABEL IS THEN MOVED INTO THE RDEVBLOK. 00099000
  100. * THIS ENABLES DYNAMIC VOLUME RECOGNITION 00100000
  101. * DMKVDD (DETACH) ALSO STACKS AN UNSOLICITED DEVICE-END 00101000
  102. * INTERRUPT TO DMKDSBRD TO SEE IF THE PACK WAS CHANGED. 00102000
  103. * DMKCPS STACKS AN UNSOLICITED DEVICE-END INTERRUPT TO 00103000
  104. * DMKDSBRD TO SEE IF 2/4 CHANSW FEATURE ON HARDWARE WHEN 00104000
  105. * PERFORM A LABEL READ. 00105000
  106. * 00106000
  107. * 00107000
  108. * 00108000
  109. * 00109000
  110. * ERROR MESSAGES: 00110000
  111. * 00111000
  112. * DMKDSB956A DASD CCU VOLID VOLID NOT MOUNTED; NOW OFFLINE 00112000
  113. *. 00113000
  114. EJECT 00143000
  115. COPY OPTIONS 00144000
  116. DMKDSB CSECT 00145000
  117. ENTRY DMKDSBSD DO BUFFER UNLOAD FOR SHUTDOWN OR DMKCCW 00146000
  118. ENTRY DMKDSBRD ENTRY TO READ VOLUME LABEL ETC. 00147000
  119. SPACE 00149000
  120. EXTRN DMKIOESD,DMKIOSQR 00151000
  121. EXTRN DMKCVTBH 00152000
  122. EXTRN DMKSCNRU 00153000
  123. EXTRN DMKSTKCP,DMKSSSMQ @V60B6B8 00153010
  124. USING SAVEAREA,R13 00154000
  125. USING PSA,R0 00155000
  126. * USING IOERBLOK,R7 ADDRESSABILITY FOR IOERBLOK 00156000
  127. USING STATDASD,R4 ADDRESSABILITY FOR STATISICAL DATA 00157000
  128. USING RDEVBLOK,R8 00158000
  129. USING IOBLOK,R10 00159000
  130. USING DMKDSB,R12 COMMON ADDRESSABILITY 00160000
  131. * DMKDSBSD = 1ST ENTRY POINT; R12 = A(DMKDSBSD) = A(DMKDSB) ... 00181000
  132. SPACE 00182000
  133. DMKDSBSD ENTER DO BUFFER UNLOAD FOR SHUTDOWN OR DMKCCW: 00183000
  134. BAL R5,GETSTBUF GET BUFFER TO READ THE VOL1 LABEL 00184000
  135. MVI STATCALL,X'FF' INDICATE DMKDSBSD ENTRY @VA02264 00185000
  136. ST R13,STATGR13 STORE POINTER TO SAVE AREA 00186000
  137. B STATMAIN CONTINUE 00187000
  138. SPACE 00188000
  139. DMKDSBRD DS 0H ENTRY FROM UNSOLICITED DE INTERRUPT 00189000
  140. USING *,R12 00190000
  141. L R12,=A(DMKDSB) COMMON ADDRESSABILITY 00191000
  142. USING DMKDSB,R12 00192000
  143. TM IOBCSW+4,DE DOES THE UNSOL. INT INCLUDE DE? @V407438 00192250
  144. BZ NOLABEL NOPE, THEN DON'T READ THE LABEL @V407438 00192500
  145. TM IOBCSW+4,UC ENTRY WITH UC STATUS 00193000
  146. BZ NOUCK NO 00194000
  147. NOLABEL BAL R5,CKIOB FRET ANY IOERBLOK @V407438 00195000
  148. B FRETIOB 00196000
  149. NOUCK LH R1,IOBRADD GET THE REAL DEVICE ADDRESS 00197000
  150. CALL DMKSCNRU AND FIND THE R-BLOCK'S 00198000
  151. BAL R5,GETSTBUF GET A BUFFER TO READ THE VOL1 LABEL 00199000
  152. STATMAIN L R1,ASYSVM LOAD THE ADDRESS OF SYSTEM VMBLOK 00200000
  153. CLI STATCALL,X'FF' ENTERED AT DMKDSBSD ? @VA02264 00201000
  154. BNE *+6 NO -- CHARGE SYSTEM @VA02264 00202000
  155. LR R1,R11 YES -- CHARGE USER @VA02264 00203000
  156. ST R1,IOBUSER ..... INTO IOBLOK @VA02264 00204000
  157. LA R0,IOERSIZE SIZE OF 1 IOERBLOK 00205000
  158. SR R7,R7 R7=0: NO EXTRA WORDS IN IOERBLOK 00206000
  159. CLI RDEVTYPE,TYP2305 IS IT A 2305 ? 00207000
  160. BNE CALLFREE NOPE - REGULAR-SIZE IOERBLOK IS FINE 00208000
  161. *********************************************************************** 00209010
  162. * FOR CLARITY... SIZE OF THE EXTENSION HAS TO BE CALCULATED AS WHATS 00209020
  163. * LEFT OF THE BUFFERED DATA SIZE (E.G. 128 FOR THIS 2305) AFTER TAKING 00209030
  164. * OUT THAT PORTION PLACED FROM IOERDATA TO THE END OF THE IOERBLOK. 00209040
  165. * AS THIS IS VARIABLE IT SHOULD BE CALCULATED AS THE OVERALL SIZE LESS 00209050
  166. * THE AREA PRECEDING IOERDATA... ALL OF COURSE IN NUMBER OF DOUBLEWORDS 00209060
  167. *********************************************************************** 00209070
  168. LA R0,IOERSIZE+(128/8-(IOERSIZE-(IOERDATA-IOERBLOK)/8)) 973 00209080
  169. LA R7,128/8-(IOERSIZE-(IOERDATA-IOERBLOK)/8) 12 @VA09736 00209090
  170. CALLFREE CALL DMKFREE NOW GET REGULAR OR EXTRA-SIZE IOERBLOK 00211000
  171. USING IOERBLOK,R1 (VERY BRIEFLY) 00212000
  172. LR R0,R7 SAVE THIS EXTENSION LENGTH @VA09736 00213010
  173. LA R7,IOERSIZE(R7) INDICATE OVERALL LENGTH @VA09736 00213020
  174. SLL R7,3 MULT BY EIGHT @VA09736 00213030
  175. BCTR R7,R0 DECRIMENT BY UNO FOR EX @VA09736 00213040
  176. BCTR R7,R0 DECRIMENT BY UNO FOR CLEAR @VA09736 00213050
  177. MVI IOERBLOK,X'00' INIT BLOK TO ZERO @VA09736 00213060
  178. EX R7,IOECLR AND CLEAR THE BEAUTY OUT @VA09736 00213070
  179. STH R0,IOEREXT INDICATE THE EXTENSION @VA09736 00213080
  180. B SKIPCLR @VA09736 00213090
  181. SPACE 00213100
  182. IOECLR MVC IOERBLOK+1(0),IOERBLOK EXEC TO CLEAR @VA09736 00213110
  183. SPACE 00213120
  184. SKIPCLR DS 0H @VA09736 00213130
  185. DROP R1 00215000
  186. LR R7,R1 NOW NORMAL IOERBLOK ADDRESSABILITY 00216000
  187. USING IOERBLOK,R7 ... 00217000
  188. LA R0,STATSIZE SIZE OF WORKING STORAGE IS 00218000
  189. STH R0,IOERDW STORED IN THE IOERBLOK. 00219000
  190. ST R4,IOERLOC SAVE ADDRESS OF WORKING STORAGE. 00220000
  191. ST R4,IOBCAW SET CAW ADDRESS IN IOBLOK 00221000
  192. STM R7,R8,STATREGS SAVE PTRS TO IOERBLOK AND RDEVBLOK 00222000
  193. CLI RDEVTYPE,TYP2314 IS IT 2314 ?? @VA05779 00222100
  194. BE SNS2314 YES @VA05779 00222200
  195. LA R1,SNSRTN GET INTERRUPT RETURN ADDRESS AND 00223000
  196. ST R1,IOBIRA STORE IT IN THE IOBLOK 00224000
  197. OI IOBSPEC,IOBTIO TELL IOS TO DO A 'TIO' 00225000
  198. CALL DMKIOSQR CALL IOS TO SCHEDULE SENSE 00226000
  199. GOTO DMKDSPCH WAIT FOR I/O TO COMPLETE 00227000
  200. SPACE 00228000
  201. SNSRTN DS 0H CONNECTOR 00229000
  202. USING *,R12 00230000
  203. L R12,=A(DMKDSB) 00231000
  204. USING DMKDSB,R12 00232000
  205. L R4,IOBCAW RESTORE ADDRESS OF WORKING STORAGE 00233000
  206. LM R7,R8,STATREGS RESTORE ADDRESS OF IOERBLOK AND RDEVBLOK 00234000
  207. NI IOBSPEC,X'FF'-IOBTIO RESET 'TIO' FLAG 00235000
  208. TM IOBSTAT,IOBFATAL WAS THERE AN ERROR CONDALTPATH @VA11416 00236100
  209. BNZ FRETIOER IF YES, EXIT 00237000
  210. TM IOBSTAT,IOBCC3 WAS THERE AN ERROR CONDITION @VA11416 00237060
  211. BZ SNS2314 NO, ALL OK @VA11416 00237120
  212. BO FRETIOER DEVICE GONE IN THE MEANWHILE @VA11416 00237180
  213. CLC IOBCSW+4(2),=AL1(DE,0) CLEAN DEVICE END? @VA11416 00237240
  214. BNE FRETIOER NO. @VA11416 00237300
  215. SNS2314 EQU * @VA05779 00237500
  216. XC IOERDATA(IOERSNSZ),IOERDATA CLEAR SENSE AREA @V407438 00238000
  217. CLI STATCALL,X'FF' ENTERED AT DMKDSBSD ? @VA02264 00243000
  218. BE SKIPVOL1 IF YES, NO NEED TO READ VOLUME LABEL. 00244000
  219. CLI RDEVTYPE,TYP3380 DO WE HAVE A 3380 ? HRC011DK 00244300
  220. BE RDVOL80 HRC011DK 00244600
  221. CLI RDEVTYPE,TYP2305 DO WE HAVE A 2305? @VA07801 00245000
  222. BNE RDVOLLA NOPE - GO READ VOL LABEL @VA07801 00245100
  223. LA R6,STATREL LOOKING FOR RELEASE @VA07801 00245200
  224. ST R6,IOBCAW STORE IT @VA07801 00245300
  225. LA R1,RELRET LOAD R1 WITH IRA @VA07801 00245400
  226. ST R1,IOBIRA STORE INTO IOBLOK @VA07801 00245500
  227. OI IOBSPEC2,IOBREL IND. CH. PGM CONTAINS CP REL. @VA07801 00245600
  228. B DSBIOS CALL IOSQR @VA07801 00245700
  229. RDVOL80 LA R1,STATSEN-STATDASD HRC011DK 00245730
  230. OI 4(R1),CC TURN ON COMMAND CHAINING HRC011DK 00245760
  231. RDVOLLA OI IOBSPEC2,IOBREL IND. CH. PGM CONTAINS CP REL. @VA07801 00245800
  232. RDVOLLB LA R1,VOL1RTN RETURN ADDR AFTER LABEL READ @VA07801 00245900
  233. ST R1,IOBIRA STORE ADDRESS IN IOBLOK @VA07801 00246000
  234. ST R4,IOBCAW ADDRESS OF CHANNEL PROGRAM @VA07801 00246100
  235. DSBIOS CALL DMKIOSQR CALL IOS TO READ VOL LABEL @VA07801 00246200
  236. GOTO DMKDSPCH WAIT FOR I/O TO COMPLETE 00247000
  237. SPACE 00248000
  238. RELRET DS 0H @VA07801 00248025
  239. USING *,R12 @VA07801 00248050
  240. L R12,=A(DMKDSB) @VA07801 00248075
  241. USING DMKDSB,R12 @VA07801 00248100
  242. NI IOBSPEC2,255-IOBREL TURN OFF SPECIAL REL. FLG @VA07801 00248125
  243. CL R10,IOBLINK VERIFY IF THIS IS COPIED IOBLOK @VA07801 00248150
  244. BNE FRETIOB YES, GET RID OF IT @VA07801 00248175
  245. L R6,IOBCAW POINT TO IT @VA07801 00248200
  246. LA R1,STATREL-STATDASD DISP OF REL IN CHANNEL PGM @VA07801 00248225
  247. LR R4,R6 ADDRESS OF RELEASE TO R4 @VA07801 00248250
  248. SR R4,R1 R4 - BEGINNING OF WORK STORAGE @VA07801 00248275
  249. LM R7,R8,STATREGS GET IOERBLOK/RDEVBLOK ADDRESSES @VA07801 00248300
  250. LA R6,8(,R6) POINT PAST RELEASE CCW @VA07801 00248325
  251. L R1,IOBCSW GET ENDING CSW ADDR @VA07801 00248350
  252. LA R1,0(R1) CLEAN ANY GARBAGE @VA07801 00248375
  253. CR R1,R6 @VA07801 00248400
  254. BNH SKIPFEAT 2/4 CHANSW NOT PRESENT @VA07801 00248425
  255. OI RDEVFTR,FTRRSRL ONLY 1 CCW LEFT @VA07801 00248450
  256. SKIPFEAT TM IOBSTAT,IOBFATAL+IOBCC3 FATAL I/O? @VA07801 00248475
  257. BZ *+8 NO @VA07801 00248500
  258. BAL R5,CKIOB FRET POSSIBLE IOERBLOK @VA07801 00248525
  259. NI STATSCCW+4,X'FF'-CC NO MORE CMD CHAINING @VA07801 00248550
  260. B RDVOLLB CALL IOS @VA07801 00248575
  261. VOL1RTN DS 0H CONNECTOR 00249000
  262. USING *,R12 00250000
  263. L R12,=A(DMKDSB) 00251000
  264. USING DMKDSB,R12 00252000
  265. CL R10,IOBLINK IS THIS DEVICE END @VA01965 00253000
  266. BNE FRETIOB IF NOT, GO FRET IOB @VA01940 00254000
  267. L R4,IOBCAW RESTORE ADDRESS OF WORKING STORAGE. 00255000
  268. LM R7,R8,STATREGS RESTORE ADDRESS OF IOERBLOK AND RDEVBLOK 00256000
  269. TM STATSCCW+4,CC NO CMD CHAINING HERE @VA07801 00257000
  270. BZ LABRED DON'T BOTHER WITH RELEASE @VA07801 00257100
  271. NI IOBSPEC2,255-IOBREL TURN OFF SPECIAL REL. FLG @VA07801 00257200
  272. LA R0,STATREL+8 GET END OF RELEASE CCW ADDRESS @VA07801 00257300
  273. L R1,IOBCSW GET ENDING CSW ADDRESS @V407438 00258200
  274. LA R1,0(R1) CLEAR ANY GARBAGE @V407438 00258300
  275. CLR R1,R0 DID WE GET THE LABEL READ? @V407438 00258400
  276. BNH LABRED ENDED BEFORE REL CCW @VA07875 00258500
  277. L R5,RDEVCUB GET ADDRESS OF ALTCU @VA07875 00258520
  278. LTR R5,R5 IS THERE ALTCU ? @VA07875 00258540
  279. BNZ LABRED YES, CAN NOT ALLOW RES/REL @VA07875 00258560
  280. OI RDEVFTR,FTRRSRL ONLY 1 CCW LEFT, R/R MUSTBE GOOD@V407438 00258600
  281. LABRED TM IOBSTAT,IOBFATAL+IOBCC3 FATAL I/O @VA07801 00259100
  282. BNZ FRETIOER POSSIBLY FRET IOERBLOK @VA07801 00259200
  283. CLI RDEVTYPE,TYP3380 IS THIS A 3380 DASD ? HRC011DK 00259220
  284. BNE LABCOMP NO, CONTINUE HRC011DK 00259240
  285. MVC RDEVMDL,STATSDE4 YES, STORE MODEL TYPE HRC011DK 00259260
  286. LABCOMP DS 0H HRC011DK 00259280
  287. BAL R5,COMPVOL1 COMP THE LABEL READ WITH VOLID @VA07801 00259300
  288. BE FRETIOER IF NOT CHANGED SKIP THE BUFFER UNLOAD 00260000
  289. SPACE 00261000
  290. SKIPVOL1 CL R10,IOBLINK DO WE HAVE A COPIED IOBLOK ? @VA07015 00262100
  291. BNE FRETIOB YES, GO FRET IOBLOK AND OUT @VA07015 00262200
  292. TM RDEVFTR,FTREXTSN DOES DEVICE HAVE BUFFERS ? @VA07015 00262300
  293. BZ FRETIOER IF NOT, DO NOT ISSUE BUFFER UNLOAD 00263000
  294. LM R0,R1,PACKCHG RESOLVE ADDRESS OF BUFFER UNLOAD CCW 00264000
  295. CLI RDEVTYPE,TYP2305 HOLD IT - DO WE HAVE THE RIGHT CCW ? 00265000
  296. BNE *+8 YES - DON'T BE A WORRY-WART. 00266000
  297. LM R0,R1,UNLD2305 NOPE - GET THE RIGHT ONE LIKE I SAID 00267000
  298. ALR R0,R7 00268000
  299. STM R0,R1,STATSNS 00269000
  300. STH R1,IOERLEN SAVE SENSE LENGTH FOR ERROR RECORDING 00270000
  301. LA R1,READBUF LOAD R1 W/ INTERRUPT RETURN ADDRESS AND 00271000
  302. ST R1,IOBIRA STORE IT IN THE IOBLOK. 00272000
  303. ST R4,IOBCAW SET CAW ADDR IN IOBLOK @VA01727 00273000
  304. STM R7,R8,STATREGS SAVE PTR TO IOERBLOK AND RDEVBLOK@VA01727 00274000
  305. CALL DMKIOSQR CALL IOS FOR BUFFER UNLOAD OPERATION. 00275000
  306. GOTO DMKDSPCH WAIT FOR I/O TO COMPLETE. 00276000
  307. SPACE 00277000
  308. READBUF DS 0H CONNECTOR 00278000
  309. USING *,R12 00279000
  310. L R12,=A(DMKDSB) 00280000
  311. USING DMKDSB,R12 00281000
  312. L R4,IOBCAW RESTORE ADDRESS OF WORKING STORAGE 00282000
  313. LM R7,R8,STATREGS RESTORE ADDRESS OF IOERBLOK AND RDEVBLOK. 00283000
  314. TM IOBSTAT,IOBFATAL+IOBCC3 WAS THERE AN ERROR CONDITION 00284000
  315. BNZ FRETIOER IF YES, EXIT 00285000
  316. LH R3,IOERDW SAVE NUMBER OF DW IN WORKING STORAGE. 00286000
  317. ST R7,IOBIOER STORE ADDRESS OF IOERBLOK FOR RECORDER. 00287000
  318. MVC IOERVSER(6),RDEVSER MOVE IN OLD VOLID @VA01727 00288000
  319. CALL DMKIOESD RECORD THIS RECORD. 00289000
  320. B FRETSTAT RELEASE WORKING STORAGE 00290000
  321. SPACE 00291000
  322. FRETIOER LA R0,IOERSIZE SIZE OF 1 IOERBLOK 00292000
  323. AH R0,IOEREXT INCLUDE EXTRA SIZE (IF ANY) 00293000
  324. LR R1,R7 LOCATION OF IOERBLOK. 00294000
  325. CALL DMKFRET FRET THIS STORAGE 00295000
  326. SPACE 00296000
  327. FRETSTAT BAL R5,TESTVOL CHECK VOLUME STATUS @VA03772 00297000
  328. ICM R2,B'1000',STATCALL RESTORE CALLING IND.. @VA03772 00298000
  329. L R13,STATGR13 AND SAVEAREA REG @VA03772 00299000
  330. LR R1,R4 ADDRESS OF STAT DSECT 00300000
  331. LA R0,STATSIZE ALSO ITS SIZE 00301000
  332. CALL DMKFRET FRET IT 00302000
  333. BAL R5,CKIOB FRET POSSIBLE IOERBLOK 00303000
  334. LTR R2,R2 ENTERED AT DMKDSBSD ? @VA02264 00304000
  335. BM RETNSHUT IF YES, EXIT TO CALLER , OTHERWISE 00305000
  336. FRETIOB LR R1,R10 R1 IS ADDR OF IOB @VA01940 00306000
  337. LA R0,IOBSIZE GET IT'S SIZE @VA01965 00307000
  338. CALL DMKFRET AND RELEASE IT @VA01965 00308000
  339. GOTO DMKDSPCH GOTO THE DISPATCHER. 00309000
  340. SPACE 00310000
  341. RETNSHUT EXIT EXIT TO CALLER. 00311000
  342. SPACE 3 00312000
  343. * BUILD A BUFFER TO READ THE VOLID OF PACK 00313000
  344. SPACE 00314000
  345. GETSTBUF LA R0,STATSIZE GET A BUFFER TO READ THE VOL1 LABEL 00315000
  346. CALL DMKFREE 00316000
  347. LR R4,R1 SAVE THE POINTER TO THE BUFFER 00317000
  348. XC STATDASD(STATSIZE*8),STATDASD ZERO OUT THE BUFFER 00318000
  349. MVC STATVOL1(6),BLANKS INITIALIZE LABL AND VOL1 @VA04062 00318500
  350. MVC STATDASD(RDVOLEND-RDVOLID),RDVOLID MOVE MDL CCWS@V407438 00319000
  351. LA R14,((RDVOLEND-8)-RDVOLID)/8 GET LOOP COUNT @V4M0003 00320100
  352. LA R1,STATSEEK ADDR OF THE FIRST TO DO @V407438 00321000
  353. RESOLVAD L R15,0(R1) GET THE CURRENT ADDRESS @V407438 00322000
  354. ALR R15,R4 ADJUST BY BEGINNING OF GOTTEN STG@V407438 00323000
  355. ST R15,0(R1) AND RESTORE @V407438 00324000
  356. LA R1,8(R1) BUMP TO NEXT CCW @V407438 00325000
  357. BCT R14,RESOLVAD CONTINUE UNTIL ALL CCW'S ARE DONE@V4M0003 00326100
  358. BR R5 RETURN TO THE CALLING ROUTINE 00335000
  359. SPACE 3 00336000
  360. * COMPARE THE VOLID READ TO THE VOLID IN THE REAL DEVICE BLOCK 00337000
  361. SPACE 00338000
  362. COMPVOL1 CLC STATVOL1,=C'VOL1' STANDARD VOL 1 LABEL 00339000
  363. BE STANDLBL YES - 00340000
  364. CLC STATVOL1(3),=C'CMS' ANY CMS TYPE LABEL? HRC015DK 00341000
  365. BE STANDLBL YES - 00342000
  366. MVC STATLABL+4(2),STATLABL MOVE LABEL IN PIECES @VA04062 00343500
  367. MVC STATLABL(4),STATVOL1 PREVENT OVERLAP @VA04062 00344500
  368. STANDLBL EQU * HERE FOR STANDARD LABEL 00345000
  369. CLC STATLABL,RDEVSER WAS THE PACK CHANGED ? 00346000
  370. BCR 8,R5 RETURN WITH THE CONDITION CODE SET 00347000
  371. MVI STATPACK,X'FF' INDICATE PACK WAS CHANGED 00348000
  372. BR R5 RETURN WITH THE CONDITION CODE SET 00349000
  373. SPACE 3 00350000
  374. * TEST IF PACK WAS CHANGED AND IN USE BY THE SYSTEM 00351000
  375. SPACE 00352000
  376. TESTVOL CLI STATPACK,X'FF' WAS THE PACK CHANGE 00353000
  377. BCR 7,R5 NO- RETURN TO THE CALLER 00354000
  378. SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00354100
  379. CLI RDEVTYPE,TYP3330 IS IT A 3330 @V60B6B8 00354110
  380. BNE TESTSYS NO, NO SPECIAL 3330V CHECK @V60B6B8 00354120
  381. TM RDEVFTR,SYSVIRT+VIRTUAL IS IT A VUA @V60B6B8 00354130
  382. BNZ MNT3330V YES, CHECK FOR WAITING USER @V60B6B8 00354140
  383. TESTSYS EQU * CONTINUE STANDARD DASD CHECKS @V60B6B8 00354150
  384. TM RDEVFLAG,RDEVSYS+RDEVOWN WAS PACK IN USE BY SYSTEM 00355000
  385. BNZ ERROR956 DO NOT MOVE IN NEW VOLID; VARY OFFLINE 00356000
  386. MVC RDEVSER,STATLABL MOVE IN THE NEW VOLID 00357000
  387. TM RDEVSTAT,RDEVDED DEVICE DEDICATED ? 00358000
  388. BO *+8 YES -- 00359000
  389. OI RDEVFLAG,RDEVMOUT INDICATE VOLUME MOUNTED; NOT ATTACHED 00360000
  390. CLI RDEVTYPE,TYP3340 3340 TYPE ? @V2A2029 00361000
  391. BCR 7,R5 NO - RETURN TO CALLER @V2A2029 00362000
  392. NI RDEVFTR,X'FF'-(FTRRPS+FTR70MB+FTR35MB) RESET @V2A2029 00363000
  393. TM STATSDAT+2,X'80' RPS FEATURE PRESENT ? @V2A2029 00364000
  394. BZ *+8 NO - @V2A2029 00365000
  395. OI RDEVFTR,FTRRPS INDICATE RPS FEATURE @V2A2029 00366000
  396. TM STATSDAT+2,X'02' 3340 70MB PACK MOUNTED ? @V2A2029 00367000
  397. BZ SET35MB NO -- MUST BE 35MB PACK @V2A2029 00368000
  398. OI RDEVFTR,FTR70MB INDICATE 70MB PACK MOUNTED @V2A2029 00369000
  399. BR R5 RETURN TO CALLER @V2A2029 00370000
  400. SET35MB OI RDEVFTR,FTR35MB INDICATE 35MB PACK MOUNTED @V2A2029 00371000
  401. BR R5 RETURN TO CALLER IF NOT IN USE BY SYSTEM 00372000
  402. SPACE 1 00372100
  403. ERROR956 OI RDEVSTAT,RDEVDISA MARK THE DEVICE OFFLINE 00373000
  404. LH R1,IOBRADD GET THE REAL DEVICE ADDRESS 00374000
  405. CALL DMKCVTBH AND CONVERT IT 00375000
  406. LR R3,R1 SAVE CONVERTED ADDRESS 00376000
  407. LA R0,(L'DSB956+7)/8 GET A MSG BUFFER 00377000
  408. CALL DMKFREE 00378000
  409. MVC 0(L'DSB956,R1),DSB956 MOVE IN THE MSG 00379000
  410. STCM R3,7,DSB956AD(R1) FILL IN THE CONVERTED ADDRESS 00380000
  411. MVC DSB956VS(6,R1),STATLABL THE VOLID ALSO 00381000
  412. LR R3,R0 SAVE THE BUFFER LENGTH (DW) 00382000
  413. LA R0,L'DSB956 SET UP THE MSG LENGTH 00383000
  414. LA R2,DFRET+NORET+OPERATOR+ALARM PARM REG 00384000
  415. CALL DMKQCNWT TELL THE OPERATOR 00385000
  416. BR R5 RETURN TO THE CALLER 00386000
  417. EJECT 00386100
  418. MNT3330V EQU * PROCESS 3330V MOUNT @V60B6B8 00386200
  419. * 00386300
  420. * THIS ROUTINE IS ENTERED WHEN A 3330V VOLUME 00386400
  421. * HAS BEEN MOUNTED ON A NON-DEDICATED VUA. 00386500
  422. * THIS CODE WILL SCAN THE QUEUE OF MSSCOM 00386600
  423. * BLOCKS WHICH DESCRIBE MACHINES WAITING FOR 00386700
  424. * 3330V'S. THIS QUEUE IS CREATED BY DMKSSS 00386800
  425. * WHEN A MOUNT ORDER FOR A SYSTEM VOLUME IS 00386900
  426. * ISSUED TO THE MSC. THE UNSOLICITED DEVICE 00387000
  427. * END, INDICATING MOUNT COMPLETE, IS GENERATED 00387100
  428. * BY THE STAGING ADAPTER WHEN THE FIRST CYLINDER 00387200
  429. * OF THE REQUESTED VOLUME HAS BEEN STAGED. 00387300
  430. * 00387400
  431. * WHEN THE CORRECT MSSCOM BLOCK IS FOUND, THE 00387500
  432. * ADDRESS OF A CPEXBLOK IS EXTRACTED. THIS 00387600
  433. * CPEXBLOK IS CREATED BY DMKSSS WHEN THE MSSCOM 00387700
  434. * BLOCK IS QUEUED. THE DISPATCH ADDRESS IN THE 00387800
  435. * CPEXBLOK POINTS TO AN ENTRY IN DMKSSS AT WHICH 00387900
  436. * A LINK TO A SYSTEM 3330V IS TO CONTINUE. 00388000
  437. * 00388100
  438. MVC RDEVSER,STATLABL MOVE LABEL INTO RDEVBLOK @V60B6B8 00388200
  439. NI RDEVFLAG,X'FF'-RDEVSEL-RDEVMOUT @VA09303 00388210
  440. * HOLLY 00388300
  441. L R1,MOUNTQ ANCHOR FOR QUEUE OF MSSCOM BLOCKS@V60B6B8 00388400
  442. L R6,0(R1) FIRST MSSCOM BLOCK @V60B6B8 00388500
  443. LTR R6,R6 IS THERE A Q @V60B6B8 00388600
  444. BZ NOWAIT NO, NO ONE WAITING @V60B6B8 00388700
  445. USING VSCOMM,R6 ADDRESSABILITY FOR ASSEMBLER @V60B6B8 00388800
  446. COMPVOL EQU * LOOP TO FIND BLOCK FOR THIS @V60B6B8 00388900
  447. * VOLUME 00389000
  448. CLC RDEVSER,MSSSER COMPARE VOLSER JUST MOUNTED @V60B6B8 00389100
  449. * TO VOLSER THIS BLOCK DESCRIBES 00389200
  450. BE COMMFOUN THIS IS THE ONE @V60B6B8 00389300
  451. DEVADBAD EQU * @VMI2016 00389310
  452. LA R1,MSSNEXT RESET R1 FOR FUTURE RECHAINING @V60B6B8 00389400
  453. L R6,MSSNEXT GET NEXT BLOCK POINTER @V60B6B8 00389500
  454. LTR R6,R6 IS THERE ANOTHER BLOCK @V60B6B8 00389600
  455. BNZ COMPVOL YES, CHECK IT @V60B6B8 00389700
  456. NOWAIT EQU * NO ONE WAITING ON THIS MOUNT @V60B6B8 00389800
  457. OI RDEVFLAG,RDEVMOUT SET FLAG: VOLUME MOUNTED @V60B6B8 00389900
  458. BR R5 RETURN: NO ONE WAITING @V60B6B8 00390000
  459. COMMFOUN EQU * SOMEONE NEEDS THIS VOLUME @V60B6B8 00390100
  460. LH R1,RDEVADD DEVICE ADDR @VMI2016 00390103
  461. L R15,RDEVCUA RCUBLOK ADDR @VMI2016 00390106
  462. LH R0,RCUADD-RCUBLOK(R15) CU ADDR @VMI2016 00390109
  463. OR R1,R0 CU-DEV ADDR @VMI2016 00390112
  464. TM RCUTYPE-RCUBLOK(R15),RCUSUB SUBORD CUBLOK? @VMI2016 00390115
  465. BZ GOTPRIME NO, PRIME, POINTS TO RCHBLOK @VMI2016 00390118
  466. L R15,RCUPRIME-RCUBLOK(R15) GET PRIME RCUBLOK @VMI2016 00390121
  467. GOTPRIME EQU * THIS RCUBLOK POINTS TO RCHBLOK @VMI2016 00390124
  468. L R15,RCUCHA-RCUBLOK(R15) RCHBLOK ADDR @VMI2016 00390127
  469. LH R0,RCHADD-RCHBLOK(R15) CHAN ADDR @VMI2016 00390130
  470. OR R1,R0 CH - CU - DEV ADDR @VMI2016 00390133
  471. CH R1,MSSVUA IS MSS P.C.I. ON CORRECT ADDR @VMI2016 00390136
  472. BNE DEVADBAD NO, MUST BE ALT PATH @VMI2016 00390139
  473. * 00390147
  474. * CHECK TO SEE IF THIS MSS VOLUME IS BEING MOUNTED BY VM/370. 00390155
  475. * IF SO, THEN FLAG AS SO IN ORDER TO RECOGNIZE ANY NEED TO 00390163
  476. * ISSUE A RELINQUISH REQUEST FOR THIS VOLUME. 00390171
  477. * 00390179
  478. OI RDEVFLAG,RDEVVMNT FLAG AS MOUNTED BY CP @VA11344 00390187
  479. L R2,MSSTASK1 ADDR OF CPEXBLOK FOR DMKSSS @V60B6B8 00390200
  480. LA R0,CPEXSIZE SIZE OF CPEXBLOK FOR DMKFREE @V60B6B8 00390300
  481. * HOLLY 00390400
  482. CALL DMKFREE HOLLY @V60B6B8 00390500
  483. USING CPEXBLOK,R1 HOLLY @V60B6B8 00390600
  484. STM R0,R15,CPEXREGS SAVE REGS IN CPEXBLOK @V60B6B8 00390700
  485. * HOLLY 00390800
  486. L R15,=V(DMKSSSEN) STACK A CPEXBLOK @V60B6B8 00390900
  487. * HOLLY 00391000
  488. ST R15,CPEXADD FOR DMKSSEN @V60B6B8 00391100
  489. * HOLLY 00391200
  490. CALL DMKSTKCP PUT THE CPEXBLOK ON DISPATCH Q @V60B6B8 00391300
  491. BR R5 BACK TO THE MAINLINE @V60B6B8 00391400
  492. DROP R6 THROUGH WITH MSSCOM @V60B6B8 00391500
  493. USING STATDASD,R4 @V60B6B8 00391600
  494. * THIS ROUTINE WILL CHECK FOR A SECOND IOERBLOK . IF ONE WAS 00777000
  495. * OBTAINED STORAGE WILL BE GIVEN BACK TO THE SYSTEM. 00778000
  496. * 00779000
  497. CKIOB L R1,IOBIOER GET ADDR OF 2'ND IOERBLOK @VA07801 00780000
  498. LA R1,0(R1) CLEAR HI BYTE 00781000
  499. LTR R1,R1 WAS BLOCK REALY OBTAINED ? 00782000
  500. BZ NOTUSED BRANCH IF NO. 00783000
  501. TM IOERCSW+5-IOERBLOK(R1),IFCC+CCC+CDC IS CHANNEL @VA01254 00784000
  502. * ERROR 00785000
  503. * INDICATED ? 00786000
  504. BZ CKEND NO, GO FRET IOERBLOK @VA01254 00787000
  505. LR R3,R1 SAVE THE IOERBLOK POINTER @VA01254 00788000
  506. L R1,IOERCCRA-IOERBLOK(R3) CHANNEL REC ADDR @V508690 00789500
  507. L R0,IOERCCRL-IOERBLOK(R3) CHANNEL REC LENGTH @V508690 00790500
  508. CALL DMKFRET RELEASE STORAGE @VA01254 00793000
  509. LR R1,R3 GET IOERBLOK POINTER @VA01254 00794000
  510. CKEND EQU * @VA01254 00795000
  511. LA R0,IOERSIZE LOAD IOERBLOK SIZE. 00796000
  512. AH R0,IOEREXT-IOERBLOK(,R1) INCLUDE EXTRA SIZE (IF ANY) 00797000
  513. CALL DMKFRET 00798000
  514. NOTUSED MVC IOBIOER,ZEROES CLEAR ADDRESS IN IOBLOK IN CASE 00799000
  515. BR R5 RETURN TO CALLER. 00800000
  516. SPACE 1 00801000
  517. DSB956 DC C'DMKDSB956A DASD XXX VOLID XXXXXX NOT MOUNTED; NOW OFFL*01217000
  518. INE' 01218000
  519. DSB956AD EQU 16 DISP OF THE UNIT ADDRESS 01219000
  520. DSB956VS EQU 26 DISP OF THE VOL SER NO 01220000
  521. SPACE 01221000
  522. RDVOLID CCW X'07',STATCCHH-STATDASD,CC+SILI,6 SEEK 01222000
  523. CCW X'08',STATSRCH-STATDASD,CC+SILI,1 @V407438 01222250
  524. CCW X'03',0,SILI,1 TIC/NOP FOR 3330V'S @V407438 01222500
  525. CCW X'31',STATCCHH+2-STATDASD,CC+SILI,5 SRCHID 01223000
  526. CCW X'08',STATSRCH-STATDASD,CC+SILI,1 TIC 01224000
  527. CCW X'06',STATVOL1-STATDASD,CC+SILI,10 READ DATA @V2A2029 01225000
  528. CCW X'04',STATSDAT-STATDASD,SILI+CC,IOERSNSZ SENSE @VA07801 01225500
  529. CCW X'94',STATSDAT-STATDASD,SILI+CC,IOERSNSZ RELSE @VA07801 01226000
  530. CCW X'04',STATSDAT-STATDASD,SILI,IOERSNSZ SENSE @VA07801 01226500
  531. SENSE4 CCW X'E4',STATSE4-STATDASD,SILI,7 SENSE ID HRC011DK 01226700
  532. VOL1CCHH DC X'0000000000000300' SEARCH AURGUMENT 01227000
  533. RDVOLEND EQU * END OF CH PGMS + SEEK/SRCH ARG @V407438 01227250
  534. SPACE 01227500
  535. PACKCHG CCW X'A4',IOERDATA-IOERBLOK,SILI,24 BUFFER UNLOAD COMMAND 01228000
  536. UNLD2305 CCW X'24',IOERDATA-IOERBLOK,SILI,128 DITTO FOR 2305 ONLY 01229000
  537. SPACE 01230000
  538. MOUNTQ DC V(DMKSSSMQ) ANCHOR FOR QUEUE OF MSSCOM BLOCKS@V60B6B8 01230010
  539. * DESCRIBING 3330V'S BEING MOUNTED 01230020
  540. LTORG @V407438 01270750
  541. EJECT 01271000
  542. COPY IOER GET IOERSNSZ DEFINED @V407438 01271250
  543. EJECT 01271500
  544. STATDASD DSECT 01273000
  545. STATSEEK DS D SEEK CCW 01274000
  546. STATTIC1 DS D TIC TO "STATSRCH" @V407438 01274250
  547. STATNOP DS D NOP, END HERE FOR 3330V CYL FAULT@V407438 01274500
  548. STATSRCH DS D SEARCH ID EQUAL CCW 01275000
  549. STATTIC DS D TIC CCW 01276000
  550. STATREAD DS D READ DATA CCW 01277000
  551. STATSCCW DS D SENSE CCW (3340) @VA07801 01277500
  552. STATREL DS D RELEASE CCW @VA07801 01278000
  553. STATSEN DS D SENSE FOR DETECTING RELEASE @VA07801 01278500
  554. STATSE4 DS D SENSE ID FOR 3380S HRC011DK 01278700
  555. STATCCHH DS D SEARCH AURGUMENT (BBCCHHR) 01279000
  556. STATVOL1 DS CL4 (VOL1) 01280000
  557. STATLABL DS CL6 VOLUME SERIAL NUMBER. 01281000
  558. DS CL4 01282000
  559. STATPACK DS CL1 PACK CHANGE SWITCH 01283000
  560. STATCALL DS CL1 CALLED FROM SHUTDOWN 01284000
  561. STATSDAT DS CL(IOERSNSZ) SENSE INFORMATION @V407438 01285000
  562. STATSDE4 DS CL7 SENSE ID INFORMATION HRC011DK 01285300
  563. DS CL1 HRC011DK 01285600
  564. STATREGS DS D GPR7-8 SAVE AREA 01286000
  565. STATGR13 DS F USED TO SAVE GPR-13 01287000
  566. DS F 01288000
  567. ORG STATSEEK 01289000
  568. STATSNS DS D BUFFER UNLOAD CCW 01290000
  569. ORG 01291000
  570. STATSIZE EQU (*-STATDASD)/8 SIZE OF DSECT IN DOUBLE WORDS 01293000
  571. EJECT 01318000
  572. VSCOMM MSSCOM @V60B6B8 01318010
  573. EJECT 01318020
  574. COPY RBLOKS @V200820 01319000
  575. COPY VMBLOK @VA04231 01319800
  576. COPY IOBLOKS @V200820 01320000
  577. COPY DEVTYPES @V200820 01321000
  578. COPY EQU @V200820 01322000
  579. COPY SAVE @V200820 01324000
  580. PSA @V200820 01325000
  581. END DMKDSB @V200820 01326000