Table of Contents

DMKCQP Source

References

Source Listing

DMKCQP.ASSEMBLE.txt
  1. CQP TITLE 'DMKCQP (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME - 00005000
  6. * DMKCQP 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * TO RETURN TO THE REQUESTOR INFORMATION FOR 00009000
  10. * THE QUERY PAGING, PRIORITY, SYSTEM, LINKS, DUMP, HOLD, REAL, 00010000
  11. * FREE, PROCESSOR, ALL, OR TERMINAL COMMAND. 00011000
  12. * 00012000
  13. * ATTRIBUTES - 00013000
  14. * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
  15. * 00015000
  16. * ENTRY POINTS - 00016000
  17. * DMKCQPRV - THIS IS THE ONLY ENTRY POINT IN THIS ROUTINE. 00017000
  18. * 00018000
  19. * 00019000
  20. * ENTRY CONDITIONS - 00020000
  21. * GPR6 - BRANCH TABLE INDEX VALUE 00021000
  22. * GPR9 - ADDRESS OF THE COMMAND LINE BUFFER 00022000
  23. * GPR11 - ADDRESS OF THE VMBLOK 00023000
  24. * GPR12 - ADDRESS OF THE ENTRY POINT 00024000
  25. * GPR13 - ADDRESS OF THE STANDARD SAVE AREA 00025000
  26. * 00026000
  27. * EXIT CONDITIONS - 00027000
  28. * NORMAL - 00028000
  29. * GPR2 = 0 00029000
  30. * 00030000
  31. * ERROR - 00031000
  32. * GPR2 = ERROR MESSAGE CODE NUMBER 00032000
  33. * 00033000
  34. * CALLS TO OTHER ROUTINES - 00034000
  35. * DMKSCNFD - TO LOCATE THE NEXT ARGUMENT IN THE COMMAND BUFFER 00035000
  36. * DMKSCNAU - TO FIND THE VMBLOK FOR A SPECFIC USERID 00036000
  37. * DMKSCNVU - TO FIND CONTROL BLOKS FOR A VIRTUAL DEVICE 00037000
  38. * DMKSCNRU - TO FIND CONTROL BLOKS FOR A REAL DEVICE 00038000
  39. * DMKSCNRD - GET ADDRESS OF REAL DEVICE. 00039000
  40. * DMKSCNRA - TO GET CCU ADDRESS OF REAL DEVICE 00039100
  41. * DMKSCNRN - TO GET THE NAME OF THE DEVICE. 00040000
  42. * DMKSCNVD - GET THE VIRTUAL DEVICE ADDRESS. 00041000
  43. * DMKCVTHB - TO CONVERT HEXADECIMAL ADDRESS TO BINARY 00042000
  44. * DMKCVTDB - TO CONVERT A DECIMAL NUMBER TO BINARY. 00043000
  45. * DMKCVTBD - TO CONVERT A BINARY NUMBER TO DECIMAL 00044000
  46. * DMKCVTBH - TO CONVERT A BINARY NUMBER TO HEXADECIMAL 00045000
  47. * DMKFREE - TO OBTAIN MEMORY FROM FREE STORAGE 00046000
  48. * DMKFRET - TO RETURN MEMORY TO FREE STORAGE 00047000
  49. * DMKQCNWT - TO OUTPUT MESSAGES TO THE TERMINAL 00048000
  50. * DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL. 00049000
  51. * DMKRSPUR - TO FORMAT ACTIVE FILE MESSAGE 00050000
  52. * DMKCFCSC - SCAN OPERAND FOR RANGE OF ADDRESSES 00050100
  53. * 00051000
  54. *EXTERNAL REFERENCES - 00052000
  55. * DMKSYSMA - MAXIMUM NUMBER USERS 00053000
  56. * DMKSCHPG - PAGE WAIT THRESHOLD 00054000
  57. * DMKSYSRM - REAL MEMORY SIZE 00055000
  58. * DMKRIORN - TABLE OF 370X CONTROL UNITS 00056000
  59. * 00057000
  60. * TABLES/WORKAREAS - 00058000
  61. * NONE 00059000
  62. * 00060000
  63. * REGISTER USAGE - 00061000
  64. * GPR0 - LENGTH OF ARGUMENT IN LINE BUFFER(RETURNED BY DMKSCNFD 00062000
  65. * GPR1 - ADDRESS OF NEXT ARGUMENT(RETURNED BY DMKSCNFD) 00063000
  66. * GPR2 - PARAMETERS PASSED TO CALLED ROUTINES 00064000
  67. * GPR3 - WORK REG AND INDEX FOR BXLE'S 00065000
  68. * GPR4 - WORK REG AND INCREMENT REG FOR BXLE'S 00066000
  69. * GPR5 - WORK REGISTER AND COMPARAND REGISTER FOR BXLE'S. 00067000
  70. * GPR6 - ADDRESS OF RCHBLOK OR VCUBLOK 00068000
  71. * GPR7 - ADDRESS OF RCUBLOK OR VCUBLOK 00069000
  72. * GPR8 - ADDRESS OF RDEVBLOK OR VDEVBLOK 00070000
  73. * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00071000
  74. * GPR10 - WORK REGISTER 00072000
  75. * GPR11 - ADDRESS OF THE VMBLOK 00073000
  76. * GPR12 - MODULE BASE REGISTER 00074000
  77. * GPR13 - SAVEAREA BASE 00075000
  78. * GPR14 - LINKAGE REGISTER 00076000
  79. * GPR15 - LINKAGE REGISTER 00077000
  80. * 00078000
  81. * 00079000
  82. EJECT 00082000
  83. * COMMAND FORMAT - 00083000
  84. * 00084000
  85. * CLASS B 00085000
  86. * +---------+---------------------+ 00086000
  87. * | QUERY | SYSTEM RADDR | 00087000
  88. * | Q | | 00088000
  89. * | | LINKS VADDR | 00089000
  90. * | | | 00090000
  91. * | | DASD VOLID | 00091000
  92. * | | TDSK | 00092000
  93. * | | | 00093000
  94. * | | DASD ACTIVE | 00094000
  95. * | | TAPE OFFLINE | 00095000
  96. * | | LINES FREE | 00096000
  97. * | | UR ATTACH | 00097000
  98. * | | ALL ALL | 00098000
  99. * | | GRAF | 00099000
  100. * | | STORAGE | 00100000
  101. * | | PROCESSOR | 00100100
  102. * | | RADDR | 00101000
  103. * | | RADDR1-RADDR2 | 00101100
  104. * +---------+---------------------+ 00102000
  105. * 00103000
  106. * 00104000
  107. * OPERATION - 00105000
  108. * 00106000
  109. * 1. ISSUE SVC 16 TO RETURN THE SAVEAREA, THUS, WHEN EXIT 00107000
  110. * WILL RETURN DIRECTLY TO DMKCFM COMMAND PROCESSING 00108000
  111. * INSTEAD OF DMKCFMQU. 00109000
  112. * 2. THE PROPER ROUTINE IS ENTERED VIA A BRANCH TABLE. 00110000
  113. * REGISTER 6 IS SET UP BY DMKCFMQU TO INDEX TO THE 00111000
  114. * PROPER BRANCH INSTRUCTION. 00112000
  115. * 3. EACH ROUTINE SCANS THE APPROPRIATE CONTROL BLOKS TO 00113000
  116. * PICK UP THE INFORMATION NEEDED FOR THE REQUEST AND FORMATS 00114000
  117. * THE MESSAGE TO BE RETURNED TO THE USER. 00115000
  118. * STEPS 4 AND 5 DELETED ... NO LONGER USED; PROCESSING 00116000
  119. * MOVED TO MODULE DMKCQR. 00116100
  120. * 6. SYSTEM - CALL DMKSCNFD TO LOCATE THE RADDR ARGUMENT. IF 00118000
  121. * NONE IS FOUND, CALL DMKERMSG TO SEND ERROR MESSAGE 00119000
  122. * DMKCQP021E. IF ONE FOUND, CALL DMKCVTHB TO CONVERT THIS 00120000
  123. * ADDRESS TO BINARY. IF THE CONVERT FAILS, CALL DMKERMSG 00121000
  124. * TO SEND ERROR MESSAGE DMKCQP021E. IF THE CONVERT WAS 00122000
  125. * GOOD, CALL DMKSCNRU TO LOCATE THE RDEVBLOK ADDRESS FOR 00123000
  126. * THIS DEVICE. IF THE RDEVBLOK CAN'T BE FOUND, CALL DMKERMSG 00124000
  127. * TO SEND ERROR MESSAGE DMKCQP040E. IF BLOCK IS FOUND AND IT 00125000
  128. * IS A DASDI DEVICE WHICH IS A CP-VOLUME CALL DMKFREE FOR 00126000
  129. * A MESSAGE BUFFER AREA. PROCEED TO GET THE NAMES OF ALL 00127000
  130. * USERS WHO ARE LINKED TO THIS VOLUME. AS THE MESSAGE 00128000
  131. * OUTPUT LINES FILL CALL DMKQCNWT TO WRITE THE LINE TO THE 00129000
  132. * USER. IF THE DEVICE IS NOT CP-OWNED TREAT THE REQUEST AS 00130000
  133. * IF IT WERE FOR A SINGLE DEVICE. 00131000
  134. * STEPS 7 AND 8 DELETED. MOVED TO DMKCQR. 00132000
  135. * 9. 'DEVICE CLASS' - SET A FLAG IN SAVEWRK1 TO INDICATE 00133000
  136. * WHICH TYPE OF REQUEST WAS RECEIVED. IF IT IS A STORAGE 00134000
  137. * REQUEST, OBTAIN THE REAL STORAGE SIZE AND CALL DMKCVTBD 00135000
  138. * TO CONVERT TO DECIMAL. PUT THIS IN THE MESSAGE AND CALL 00136000
  139. * DMKQCNWT TO OUTPUT IT. FOR DEVICE TYPE REQUEST, SCAN 00137000
  140. * THE REAL DEVICE BLOCKS AND WHEN A MATCH OCCURS ON THE 00138000
  141. * REQUESTED DEVICE CLASS BUILD THE MESSAGE ACCORDING TO THE 00139000
  142. * TYPE OF DEVICE AND ITS STATUS. THEN CALL DMKQCNWT TO 00140000
  143. * OUTPUT THE MESSAGE. CHECK RDEVNRDY FLAG. IF ON, CALL 00141000
  144. * DMKQCNWT AND OUTPUT INT REQ MESSAGE. CONTINUE DOING THIS 00142000
  145. * UNTIL ALL RDEVBLOKS HAVE BEEN SCANNED. 00143000
  146. * STEP 10 DELETED; PROCESSING MOVED TO DMKCQR. 00144000
  147. * 11. LINK - CALL DMKCVTHB TO CONVERT VADDR TO BINARY. IF 00145000
  148. * ERROR DURING CONVERT CALL DMKERMSG TO ISSUE ERROR 00146000
  149. * MESSAGE DMKCQP022E. IF VADDR IS VALID CALL DMKSCNVU TO 00147000
  150. * LOCATE THE VIRTUAL DEVICE BLOCK. IF THE DEVICE IS NOT 00148000
  151. * FOUND CALL DMKERMSG TO ISSUE ERROR MESSAGE DMKCQP040E. IF 00149000
  152. * ADDRESS IS CORRECT CHECK THAT DEVICE IS DASDI. IF NOT 00150000
  153. * DASDI ISSUE ERROR MESSAGE DMKCQP006E. IF ALL OF THE ABOVE 00151000
  154. * REQUIREMENTS ARE MET, PROCEED TO FIND EACH USER ON THE 00152000
  155. * SYSTEM THAT IS USING THE SAME DISK EXTENT, ON THE SAME 00153000
  156. * CP-VOLUME THAT THIS USER HAS. CALL DMKQCNWT TO OUTPUT 00154000
  157. * THE RESPONSE LINE. CONTINUE SCANNING ALL VDEVBLOKS IN THE 00155000
  158. * SYSTEM UNTIL THE VDEVBLOKS ARE EXHAUSTED. 00156000
  159. * 00157000
  160. * 12. TDSK - USE THE SAME LOOP AS QUERY LINKS ONLY PICK UP 00158000
  161. * THE VIRTUAL DISKS MARKED AS TDSK ALLOCATED. 00159000
  162. * THE VIRTUAL TDSKS INDICATE THE NUMBER OF CYLINDERS 00160000
  163. * THE STACK ROUTINE IS USED TO STACK THE OUTPUT LINE. 00161000
  164. * 00161010
  165. * 13. PROCESSOR - CALL DMKCVTBH TO CONVERT EACH ONLINE PROCESSOR 00161020
  166. * ADDRESS TO PRINTABLE HEXADECIMAL THEN BUILD PROCESSOR 00161030
  167. * ONLINE MESSAGE. IN AP MODE, THE MAIN PROCESSOR WILL BE 00161040
  168. * GIVEN FIRST. 00161050
  169. * RESPONSES - 00162000
  170. * 00163000
  171. * THE FOLLOWING ARE TYPICAL RESPONSES TO THE QUERY COMMAND. XXX 00164000
  172. * DENOTES A VIRTUAL ADDRESS AND YYY A REAL ADDRESS. 00165000
  173. * 00166000
  174. * QUERY SYSTEM RADDR 00167000
  175. * USERID XXX R/O, USERID XXX R/W, USERID XXX CCC, USERID.. 00168000
  176. * 00169000
  177. * QUERY LINKS VADDR 00170000
  178. * USERID XXX R/O, USERID XXX R/O, USERID XXX R/W, USERID... 00171000
  179. * 00172000
  180. * QUERY TDSK 00173000
  181. * USERID XXX CCC, USERID XXX CCC, USERID XXX CCC, USERID ... 00174000
  182. * 00175000
  183. * 00176000
  184. * 00177000
  185. * QUERY ALL 00178000
  186. * STORAGE = NNNNNK 00179000
  187. * PROCESSOR YY ONLINE, PROCESSOR ZZ ONLINE 00179100
  188. * TYPE YYY STARTED SYSTEM CLASS= ABCD SEP 00180000
  189. * TYPE YYY DRAINED SYSTEM CLASS= ABCD NOSEP 00181000
  190. * FOR A 3800 PRINTER 00181100
  191. * PRT YYY STARTED SYSTEM CLASS= ABCD SEP CHAR LPI 00181200
  192. * PRT YYY FLASH OVLY IMAGE IMAGELIB <PURGE|HOLD> 00181300
  193. * 00181400
  194. * DASD YYY CP OWNED VOLID NNN 00182000
  195. * DASD YYY CP SYSTEM VOLID NNN 00183000
  196. * LINE YYY LOGIN AS USERID 00184000
  197. * TYPE YYY ATTACH TO USERID XXX 00185000
  198. * CTLR YYY DEV 1000 NCP= NCPNAMEX DUMP AUTO 00186000
  199. * 00187000
  200. * TYPE YYY OFFLINE, TYPE YYY OFFLINE, TYPE YYY OFFLINE, TYPE 00188000
  201. * 00189000
  202. * TYPE YYY FREE , TYPE YYY DISABLE, TYPE YYY ENABLED, TYPE 00190000
  203. * TYPE YYY DRAINED, TYPE YYY VOLID , TYPE YYY FREE , TYPE 00191000
  204. * 00192000
  205. * 00193000
  206. * TYPE YYY INT REQ 00194000
  207. * 00195000
  208. * DMKCQP466I CTLR YYY IN BUFFER SLOWDOWN MODE 00196000
  209. * 00197000
  210. * 00198000
  211. * TYPE ACTIVE NOT FOUND 00199000
  212. * OFFLINE 00200000
  213. * FREE 00201000
  214. * DEVICES 00202000
  215. * 00203000
  216. * QUERY PAGING 00204000
  217. * 00205000
  218. * ERROR MESSAGES - 00206000
  219. * DMKCQP003E INVALID OPTION - (OPTION) 00207000
  220. * DMKCQP006E INVALID DEVICE TYPE - (ADDR) 00208000
  221. * DMKCQP021E RADDR MISSING OR INVALID 00210000
  222. * DMKCQP022E VADDR MISSING OR INVALID 00211000
  223. * DMKCQP023E VOLID MISSING OR INVALID 00212000
  224. * DMKCQP040E DEV (ADDR) DOES NOT EXIST 00213000
  225. * DMKCQP045E (USERID) NOT LOGGED ON 00214000
  226. * 00215000
  227. *. 00216000
  228. EJECT 00217000
  229. DMKCQP CSECT 00218000
  230. MODID DC CL8'DMKCQP' MODULE ID AND EYE CATCHER @V200930 00219000
  231. SPACE 3 00220000
  232. USING PSA,R0 00221000
  233. USING VMBLOK,R11 00222000
  234. USING SAVEAREA,R13 00223000
  235. SPACE 00224000
  236. EXTRN DMKRSPHQ,DMKRSPUR @V200820 00225000
  237. EXTRN DMKRIORN @V200820 00226000
  238. EXTRN DMKSCNVD 00227000
  239. EXTRN DMKSCNRN 00228000
  240. EXTRN DMKSCNRD 00229000
  241. EXTRN DMKSCNRA @V407438 00229100
  242. EXTRN DMKSYSRM 00230000
  243. EXTRN DMKSCNRU 00231000
  244. EXTRN DMKSCNVU 00232000
  245. EXTRN DMKCVTBD 00233000
  246. EXTRN DMKCVTBH 00234000
  247. EXTRN DMKSCNAU 00235000
  248. EXTRN DMKCVTHB 00236000
  249. EXTRN DMKSYSMA 00237000
  250. EXTRN DMKSYSNM 00238000
  251. EXTRN DMKSCNFD 00239000
  252. EXTRN DMKERMSG 00240000
  253. EXTRN DMKSYSRV 00241000
  254. EXTRN DMKCFCSC SCAN OPERAND FOR RANGE @V3E7466 00241100
  255. SPACE 3 00242000
  256. ENTRY DMKCQPRV 00243000
  257. EJECT 00244000
  258. * SINCE THE SAVEAREA CREATED ON THE CALL FROM CFMQU IS NOT USED 00245000
  259. * IT WILL BE RELEASED, THUS WHEN THIS ROUTINE RETURNS, IT 00246000
  260. * WILL GO BACK TO CFM INSTEAD OF CFMQU. CFM'S 00247000
  261. * REGISTERS ARE SAVED BY CFMQU 00248000
  262. * UPON ENTRY GPR6 WILL HAVE BEEN SET UP BY DMKCFMQU TO INDEX 00249000
  263. * TO THE PROPER BRANCH, THUS THE ORDER OF BRANCHES MUST 00250000
  264. * BE THE SAME AS THE LIST OF ARGUMENTS IN DMKCFMQU. 00251000
  265. * 00252000
  266. SPACE 00253000
  267. USING *,R12 00254000
  268. DMKCQPRV SVC 16 RELEASE SAVEAREA, USE DMKCFMQU @V200930 00255000
  269. SL R12,=A(DMKCQPRV-DMKCQP) ADJUST ADDRESSING @V200930 00256000
  270. USING DMKCQP,R12 BASE @V200930 00257000
  271. MVC SAVEWRK1(4),ZEROES ZERO FLAG AREA 00258000
  272. SLR R2,R2 INITIALIZE ZERO RETURN CODE @V3E7466 00258050
  273. STM R0,R11,SAVEREGS SAVE REGISTERS R0 THRU R11 00259000
  274. B PVVECTOR(R6) GPR6 USED TO INDEX INTO BRANCH TABLE 00260000
  275. PVVECTOR EQU * 00261000
  276. B QRYADDR Q RADDR/USERID @V200930 00262000
  277. B QRYSYS Q SYSTEM XXX 00263000
  278. B QRYDASD Q DASD 00264000
  279. B QRYTAPE Q TAPES 00265000
  280. B QRYLINE Q LINES 00266000
  281. B QRYUR Q UR 00267000
  282. B QRYSTG Q STORAGE 00268000
  283. B QRYALL Q ALL 00269000
  284. B QRYLINK Q LINKS XXX 00270000
  285. B QRYGRAF Q GRAF @V200930 00271000
  286. B QRYTDSK Q TDSK @V200930 00272000
  287. B QRYPROC Q PROCESSOR @V5BC0AB 00272010
  288. SPACE 3 00273000
  289. QRYWRIT CALL DMKQCNWT,PARM=NORET 00274000
  290. TM CQPBITS,RANGE RANGE BEING PROCESSED? @V3E7466 00274100
  291. BO NEXTADDR GET NEXT ADDR IN RANGE @V3E7466 00274200
  292. QRYEXIT EQU * 00275000
  293. EXIT RETURN 00280000
  294. NEXTADDR L R1,SAVEWRK4 RESTORE CURRENT RADDR @V3E7466 00280100
  295. LA R1,1(,R1) UP BY ONE TO NEXT RADDR @V3E7466 00280200
  296. ST R1,SAVEWRK4 STORE UPDATED ADDRESS @V3E7466 00280300
  297. CH R1,RADDR2 END OF RANGE @V3E7466 00280400
  298. BNH SCNRU GET REAL DEVICE BLOKS @V3E7466 00280500
  299. LA R0,FRBUFSIZ LOAD BUFFER SIZE @V3E7466 00280600
  300. LR R1,R9 POINT TO GOTTEN CORE @V3E7466 00280700
  301. LTR R9,R9 BUFFER TO FRET ?? @V407490 00280725
  302. BZ QRYEXIT NO, EXIT TO CFM @V407490 00280750
  303. CALL DMKFRET GO RELEASE CORE @V3E7466 00280800
  304. B QRYEXIT EXIT TO CFM @V3E7466 00280900
  305. EJECT 00281000
  306. * 00282000
  307. * ROUTINE TO PROVIDE REAL MACHINE INFO TO SYSTEMS OPERATOR 00283000
  308. * 00284000
  309. SPACE 00285000
  310. * 00286000
  311. * EQUATES FOR QRYREAL---FLAGS IN SAVEWRK1+3 00287000
  312. * 00288000
  313. SPACE 00289000
  314. DEVREQ EQU X'80' INDICATES OPERATOR REQUESTED SPECIFIC DEV 00290000
  315. FREEDEV EQU X'40' SEARCH FOR AVAILABLE DEVICES @V200930 00291000
  316. OFFDEV EQU X'20' SERACH ONLY FOR OFFLINE DEVICES @V200930 00292000
  317. ATTDEV EQU X'10' SERACH FOR ATTACHED (DEDICATED) @V200930 00293000
  318. * DEVS ONLY 00294000
  319. ACTDEV EQU X'04' OPERATOR ONLY WANTS ACTIVE DEVICES 00295000
  320. DASDVOL EQU X'02' SEARCH FOR DASD WITH VOLID ONLY @V200930 00296000
  321. REALFND EQU X'01' BIT TO INDICATE AT LEAST ONE DEVICE 00297000
  322. * WAS FOUND AND PRINTED 00298000
  323. RANGE EQU X'08' RANGE BEING PROCESSED? @V3E7466 00298100
  324. SPACE 00298200
  325. * EQUATES FOR SAVEWRK1+1 00298300
  326. PASS1 EQU X'80' FIRST PASS SWITCH @V3E7466 00298400
  327. SPACE 00298500
  328. * MISCELLANEOUS EQUATES 00298600
  329. BLANK EQU X'40' DELIMITER @V3E7466 00298700
  330. SPACE 3 00299000
  331. * EQUATES FOR SAVEWRK1 00300000
  332. QUERYALL EQU X'0F' FLAG IN TABLE OF QUERY ARGS TO = Q X ALL 00301000
  333. QUERYCOR EQU X'F0' FLAG IN TABLE OF QUERY ARGS TO = Q X MEMORY 00302000
  334. SPACE 2 00303000
  335. QRYDASD OI SAVEWRK1,CLASDASD SET DASD CLASS @V200930 00304000
  336. B QRYRSET GET NEXT ARG @V200930 00305000
  337. QRYTAPE OI SAVEWRK1,CLASTAPE SET TAPE CLASS @V200930 00306000
  338. B QRYRSET GET NEXT ARG @V200930 00307000
  339. QRYLINE OI SAVEWRK1,CLASTERM SET TERM CLASS @V200930 00308000
  340. B QRYRSET GET NEXT ARG @V200930 00309000
  341. QRYUR OI SAVEWRK1,CLASURO+CLASURI SET UR CLASS @V200930 00310000
  342. B QRYRSET GET NEXT ARG @V200930 00311000
  343. QRYGRAF OI SAVEWRK1,CLASGRAF SET GRAF CLASS @V200930 00312000
  344. B QRYRSET GET NEXT ARG @V200930 00313000
  345. QRYALL OI SAVEWRK1,QUERYALL SET FOR ALL @V200930 00314000
  346. B QRYRSET GET NEXT ARG @V200930 00315000
  347. QRYSTG OI SAVEWRK1,QUERYCOR SET FOR STORAGE @V200930 00316000
  348. B REALCORE QUERY STORAGE @V200930 00317000
  349. QRYADDR SR R9,R9 CLEAR BUFFER REG @V407490 00317500
  350. CL R0,F7 MORE THAN SEVEN CHARACTERS ?? @V407490 00318000
  351. BH QRYUSRID YES, TRY USERID @V3E7466 00318010
  352. LA R2,DASH PREPARE FOR RANGE SCAN @V3E7466 00318020
  353. CALL DMKCFCSC SEE IF RANGE SPECIFIED @V3E7466 00318030
  354. BZ NORANGE NO '-' FOUND IN OPERAND @V3E7466 00318040
  355. CR R1,R2 INVALID IF '-' FIRST CHAR. @V3E7466 00318050
  356. BNL QRYUSRID TREAT AS USERID @V3E7466 00318060
  357. LR R3,R2 ... @V3E7466 00318070
  358. SR R3,R1 LENGTH OF RADDR1 FIELD @V3E7466 00318080
  359. LR R4,R0 ENTIRE OPERAND LENGTH @V3E7466 00318090
  360. LR R0,R3 RADDR1 LENGTH @V3E7466 00318100
  361. MVI 0(R2),BLANK REPLACE '-' WITH BLANK @V3E7466 00318110
  362. CALL DMKCVTHB CONVERT TO BINARY @V3E7466 00318120
  363. LR R0,R4 OPERAND LENGTH @V3E7466 00318130
  364. MVI 0(R2),CHARDASH PUT DASH BACK IN OPERAND @V3E7466 00318140
  365. BNZ QRYUSRID TREAT AS USERID @V3E7466 00318150
  366. STH R1,RADDR1 SAVE FIRST ADDR IN RANGE @V3E7466 00318160
  367. LA R1,1(,R2) PT TO SECOND RADDR IN RANGE @V3E7466 00318170
  368. LR R6,R4 ENTIRE OPERAND LENGTH @V3E7466 00318180
  369. SR R6,R3 RADDR2 LENGTH @V3E7466 00318190
  370. BCTR R6,0 MINUS ONE FOR '-' @V3E7466 00318200
  371. CL R6,F3 SECOND OPERAND GT THREE @VA10292 00318203
  372. * CHARACTERS 00318206
  373. BH QRYUSRID YES, NOT A VALID ADDRESS @VA10292 00318209
  374. LR R0,R6 TO R0 @V3E7466 00318210
  375. CALL DMKCVTHB CONVERT SEC. ADDR IN RANGE @V3E7466 00318220
  376. LR R0,R4 ENTIRE OPERAND LENGTH @V3E7466 00318230
  377. MVI 0(R2),CHARDASH PUT '-' BACK IN OPERAND @V3E7466 00318240
  378. BNZ QRYUSRID TREAT AS USERID @V3E7466 00318250
  379. LH R4,RADDR1 FIRST ADD IN RANGE @V3E7466 00318260
  380. CR R1,R4 RADDR2 > RADDR1 @V3E7466 00318270
  381. BNH CQP021A ISSUE MSG 021E @V407490 00318280
  382. STH R1,RADDR2 STORE RADDR2 IN SAVEWRK7+2 @V3E7466 00318290
  383. OI CQPBITS,RANGE INDICATE PROCESSING RANGE @V3E7466 00318300
  384. LH R1,RADDR1 FIRST RADDR IN RANGE @V3E7466 00318310
  385. ST R1,SAVEWRK4 SAVE FOR LATER @V3E7466 00318320
  386. B SCNRU FIND REAL DEVICE BLOKS @V3E7466 00318330
  387. NORANGE CL R0,F3 ARG. TOO BIG FOR ADDR? @V3E7466 00318340
  388. BH QRYUSRID YES, TRY USERID. @VA01607 00319000
  389. CALL DMKCVTHB ATTEMPT CONVERSION TO BINARY @VA01607 00320000
  390. BNZ QRYUSRID ERROR IF ADDRESS INVALID 00321000
  391. SCNRU CALL DMKSCNRU GET REAL DEVICE BLOKS @V3E7466 00322000
  392. BNZ CHKRA DET. WHETHER TO ISSUE 040E MSG @V3E7466 00322100
  393. LNKERR OI SAVEWRK1+3,DEVREQ FLAG DEVICE REQUEST @V200930 00324000
  394. B TSTALL SET FLAGS, FIND DEVICE @V200930 00325000
  395. CHKRA TM CQPBITS,RANGE RANGE BEING PROCESSED @V3E7466 00325100
  396. BZ QRYUSRID TREAT AS USERID @V3E7466 00325200
  397. B CQP040A DEV ADDR DOES NOT EXIST @V3E7466 00325300
  398. SPACE 00325400
  399. CHARDASH EQU C'-' RANGE DELIMITER @V3E7466 00325500
  400. EJECT 00326000
  401. QRYUSRID L R0,SAVER0 LOAD LENGTH OF ARG. 00327000
  402. L R1,SAVER1 RESTORE ADDRESS OF ARG. 00328000
  403. MVC SAVEWRK2(8),BLANKS CLEAR WORK AREA. 00329000
  404. MVC SAVEWRK2+8(8),BLANKS " " " 00330000
  405. CALL DMKSCNAU IS USER LOGGED ON ? 00331000
  406. BNZ CQP045 IF NOT, PROVIDE AN ERROR MESSAGE. 00332000
  407. DROP R11 00333000
  408. LR R10,R1 LOAD ADDRESS OF VMBLOK INTO R-10. 00334000
  409. USING VMBLOK,R10 ADDRESSABILITY 00335000
  410. MVC SAVEWRK2(8),VMUSER MOVE IN USERID. 00336000
  411. MVI SAVEWRK2+9,C'-' PUT IN THE DASH. 00337000
  412. MVC SAVEWRK2+11(3),=C'DSC' PROBABLY NOT DISCONNECTED . 00338000
  413. TM VMOSTAT,VMDISC IS USER DISCONNECTED ? 00339000
  414. BO QRYDSC IF YES, BR. 00340000
  415. L R8,VMTERM LOAD ADDRESS OF USER'S TERMINAL RDEVBLOK. 00341000
  416. TM RDEVADD-RDEVBLOK(R8),RDEVLDEV Is this an LDEV? HRC065DK 00341100
  417. BO QRYLDEV Yes HRC065DK 00341200
  418. CLI RDEVTYPC-RDEVBLOK(R8),CLASTERM IS CLASS TERMINAL 00342000
  419. BNE *+12 NO, BYPASS TEST FOR BISYNC LINE 00343000
  420. CLI RDEVTYPE-RDEVBLOK(R8),TYPBSC IS THIS A LINE 00344000
  421. BE *+12 YES, GET RESOURCE ID. 00345000
  422. CLI RDEVTYPC-RDEVBLOK(R8),CLASSPEC 3705 TERM ? @V200820 00346000
  423. BNE QRYUSRT NO -- DIFFERENT @V200820 00347000
  424. LH R1,VMTRMID TERMINAL RESOURCE REFERENCE @V200820 00348000
  425. CALL DMKCVTBH @V200820 00349000
  426. STCM R1,15,SAVEWRK2+10 PUT FOUR-CHAR ID IN MSG @V200820 00350000
  427. B QRYDSC @V200820 00351000
  428. QRYLDEV EQU * HRC065DK 00351100
  429. LH R1,RDEVADD-RDEVBLOK(,R8) Get the LDEV address HRC065DK 00351200
  430. N R1,F4095 Keep only the dev num HRC065DK 00351300
  431. CALL DMKCVTBH Make it displayable HRC065DK 00351400
  432. STCM R1,7,SAVEWRK2+11 Put dev addr in message HRC065DK 00351500
  433. MVI SAVEWRK2+10,C'L' Move in LDEV indicator HRC065DK 00351600
  434. B QRYDSC Go display msg HRC065DK 00351700
  435. QRYUSRT EQU * FORMAT OUTPUT FOR NORMAL TERMINAL@V200820 00352000
  436. DROP R10 00353000
  437. USING VMBLOK,R11 RE-ESTABLISH ADDRESSABILITY 00354000
  438. CALL DMKSCNRD GET DEVICE ADDRESS INTO R1. 00355000
  439. CALL DMKCVTBH CONVERT TO PRINTABLE CHAR'S. 00356000
  440. STCM R1,7,SAVEWRK2+11 STORE DEVICE ADDRESS. 00357000
  441. QRYDSC LA R0,14 SET LENGTH OF PRINT LINE. 00358000
  442. LA R1,SAVEWRK2 AND ALSO ITS ADDRESS. 00359000
  443. B QRYWRIT GO OUTPUT THIS LINE. 00360000
  444. EJECT 00361000
  445. QRYRSET CALL DMKSCNFD GET NEXT FIELD IF ANY @V200930 00362000
  446. BNZ QRYSACT NO FIELD, DEFAULT TO ACTIVE @V200930 00363000
  447. LR R2,R0 SIZE @V200930 00364000
  448. BCTR R2,R0 LESS 1 @V200930 00365000
  449. * 00365100
  450. * TEST TO SEE IF THE 'VIRTUAL' OR 'SYSVIRT' 00365200
  451. * PARAMETER WAS SPECIFIED. 00365300
  452. * 00365400
  453. EX R2,VIRTCLC WAS 'VIRTUAL' SPECIFIED @V60B6B8 00365500
  454. BE SETVIRT YES @V60B6B8 00365600
  455. EX R2,SYSVCLC WAS 'SYSVIRT' SPECIFIED @V60B6B8 00365700
  456. BE SETSYSV YES @V60B6B8 00365800
  457. CL R0,F3 IS IT LESS THAN 3 ?? @V200930 00366000
  458. BL QRYTDAS YES, TEST FOR VOLID @V200930 00367000
  459. EX R2,CLCFRE SET FOR FREE @V200930 00368000
  460. BNE QRYTACT NO, TEST FOR ACTIVE @V200930 00369000
  461. OI SAVEWRK1+3,FREEDEV SET FOR FREE ONLY @V200930 00370000
  462. B QRYRSCAN GO FIND DEVICES @V200930 00371000
  463. SETVIRT EQU * Q DASD VIRTUAL COMMAND @V60B6B8 00371100
  464. OI SAVEWRK1+1,VIRTUAL SET FLAG @V60B6B8 00371200
  465. B QRYRSET GET NEXT OPTION @V60B6B8 00371300
  466. SETSYSV EQU * Q DASD SYSVIRT COMMAND @V60B6B8 00371400
  467. OI SAVEWRK1+1,SYSVIRT SET FLAG @V60B6B8 00371500
  468. B QRYRSET GET NEXT OPTION @V60B6B8 00371600
  469. QRYTACT EX R2,CLCACT TEST FOR ACTIVE @V200930 00372000
  470. BNE QRYTOFF TEST FOR OFFLINE @V200930 00373000
  471. QRYSACT OI SAVEWRK1+3,ACTDEV SET FOR ACTIVE @V200930 00374000
  472. B QRYRSCAN GO FIND DEVICES @V200930 00375000
  473. QRYTOFF EX R2,CLCOFF TEST FOR OFFLINE @V200930 00376000
  474. BNE QRYTALL TEST FOR ALL @V200930 00377000
  475. OI SAVEWRK1+3,OFFDEV SET FOR OFFLINE @V200930 00378000
  476. B QRYRSCAN GO FIND DEVICES @V200930 00379000
  477. QRYTALL EX R2,CLCALL TEST FOR ALL @V200930 00380000
  478. BE TSTALL YES, SET AND TEST @V200930 00381000
  479. EX R2,CLCATT TEST FOR ATTACH @V200930 00382000
  480. BNE QRYTDAS NO, TEST FOR VOLID @V200930 00383000
  481. OI SAVEWRK1+3,ATTDEV+ACTDEV SET FOR ATTACH DEVS @V200930 00384000
  482. * ONLY 00385000
  483. B QRYRSCAN GO FIND DEVICE @V200930 00386000
  484. QRYTDAS CLI SAVEWRK1,CLASDASD IS IT DASD SERACH ?? @V200930 00387000
  485. BNE CQP003 NO, ERROR @V200930 00388000
  486. CL R0,F6 BIGGER THAN 6 CHARACTERS ?? @V200930 00389000
  487. BH CQP023 YES, ERROR @V200930 00390000
  488. MVC SAVEWRK2(8),BLANKS PREP FIELD @V200930 00391000
  489. EX R2,MVCVOL MOVE VOLID FOR COMPARE @V200930 00392000
  490. OI SAVEWRK1+3,DASDVOL SET FOR VOLID SEARCH @V200930 00393000
  491. TSTALL OI SAVEWRK1+3,ACTDEV+FREEDEV+OFFDEV DO ALL @V200930 00394000
  492. TM SAVEWRK1,QUERYALL IS IT ALL REQUEST ?? @V200930 00395000
  493. BO REALCORE YES, DO STORAGE FIRST @V200930 00396000
  494. TM CQPBITS,RANGE RANGE BEING PROCESSED? @V3E7466 00397000
  495. BZ QRYRSCAN NO, SCAN FOR DEVICES @V3E7466 00397100
  496. TM SAVEWRK1+1,PASS1 IS THIS FIRST PASS? @V3E7466 00397200
  497. BO QRYLOOP NO, SKIP ACQUIRING STORAGE @V3E7466 00397300
  498. OI SAVEWRK1+1,PASS1 INDICATE FIRST PASS @V3E7466 00397400
  499. B QRYRSCAN SCAN DEVICES @V3E7466 00397500
  500. SPACE 00398000
  501. MVCVOL MVC SAVEWRK2(*-*),0(R1) EX FOR VOLID @V200930 00399000
  502. CLCFRE CLC 0(*-*,R1),=CL5'FREE ' EX FOR FREE @V200930 00400000
  503. CLCACT CLC 0(*-*,R1),=CL7'ACTIVE ' EX FOR ACTIVE @V200930 00401000
  504. CLCOFF CLC 0(*-*,R1),=CL8'OFFLINE ' EX FOR OFFLINE @V200930 00402000
  505. CLCALL CLC 0(*-*,R1),=CL4'ALL ' EX FOR ALL @V200930 00403000
  506. CLCATT CLC 0(*-*,R1),=CL7'ATTACH ' EX FOR ATTACH @V200930 00404000
  507. VIRTCLC CLC 0(*-*,R1),=CL7'VIRTUAL' CLC FOR Q DASD VIRTUAL @V60B6B8 00404100
  508. SYSVCLC CLC 0(*-*,R1),=CL7'SYSVIRT' CLC FOR Q DASD SYSVIRT @V60B6B8 00404200
  509. EJECT 00405000
  510. REALCORE L R1,=A(DMKSYSRM) LOAD REAL STORAGE SIZE ADDRESS 00406000
  511. L R1,0(,R1) LOAD REAL STORAGE SIZE 00407000
  512. L R2,=A(DMKSYSRV) NOW GET SIZE OF SYSGEN'D STORAGE 00408000
  513. L R2,0(,R2) . . . . 00409000
  514. CR R1,R2 WHICH ONE WILL WE USE ?? 00410000
  515. BNH MAKEK IF REAL IS EQUAL OR LESS USE IT 00411000
  516. LR R1,R2 ELSE USE THE SYSGEN'D VALUE 00412000
  517. MAKEK EQU * 00413000
  518. SRL R1,10 MAKE SIZE = K 00414000
  519. CALL DMKCVTBD CONVERT SIZE TO PRINT. FORM 00415000
  520. MVC SAVEWRK2(7),=C'STORAGE' SET "STORAGE" INTO MSG LINE 00416000
  521. MVC SAVEWRK2+7(3),=C' = ' SET "=" ALSO IN LINE 00417000
  522. STC R0,SAVEWRK2+10 00418000
  523. STCM R1,15,SAVEWRK2+11 PUT IN STORAGE SIZE 00419000
  524. MVI SAVEWRK2+15,C'K' THE "K" FINISH UP THE SIZE MSG. 00420000
  525. LA R0,16 MESSAGE LENGTH 00421000
  526. LA R1,SAVEWRK2 DATA ADDRESS @V200930 00422000
  527. BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00423000
  528. TM SAVEWRK1,QUERYALL QUERY ALL ?? @V200930 00424000
  529. BZ QRYEXIT NO, EXIT @V200930 00425000
  530. QRYPROC DS 0H @V5BC0AB 00426010
  531. LA R0,PROCBSIZ GET BUFFER SIZE IN DOUBLE-WORDS @V5BC0AB 00426020
  532. CALL DMKFREE GET BUFFER STORAGE @V5BC0AB 00426030
  533. LR R9,R1 PUT BUFFER ADDRESS IN R9 @V5BC0AB 00426040
  534. SPACE 00426050
  535. USING PROCBUF,R9 @V5BC0AB 00426060
  536. SPACE 00426070
  537. MVC PROCBUF(10),=C'PROCESSOR ' PROCESSOR INTO MSG @V5BC0AB 00426080
  538. SR R1,R1 CLEAR REGISTER 1 @V5BC0AB 00426090
  539. ICM R1,B'0011',IPUADDR PUT PROCESSOR ADDRESS IN R1 @V5BC0AB 00426100
  540. CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V5BC0AB 00426110
  541. STCM R1,B'0011',PROCBUF+10 SET PROCESSOR ADDRESS @V5BC0AB 00426120
  542. MVC PROCBUF+12(7),=C' ONLINE' MOVE IN ONLINE @V5BC0AB 00426130
  543. LA R0,19 GET MESSAGE LENGTH @V5BC0AB 00426140
  544. TM APSTAT1,APUOPER SYSTEM IN AP MODE? @V5BC0AB 00426150
  545. BZ MSGSTACK NO, BRANCH @V5BC0AB 00426160
  546. MVC PROCBUF+19(12),=C', PROCESSOR ' @V5BC0AB 00426170
  547. SR R1,R1 CLEAR REGISTER 1 @V5BC0AB 00426180
  548. ICM R1,B'0011',IPUADDRX GET ADDRESS OF OTHER PROC. @V5BC0AB 00426190
  549. CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V5BC0AB 00426200
  550. STCM R1,B'0011',PROCBUF+31 MOVE IN PROCESSOR ADDR. @V5BC0AB 00426210
  551. MVC PROCBUF+33(7),=C' ONLINE' MOVE IN ONLINE @V5BC0AB 00426220
  552. LA R0,40 GET MESSAGE LENGTH @V5BC0AB 00426230
  553. TM APSTAT1,PROCIO ON MAIN PROCESSOR? @V5BC0AB 00426240
  554. BO MSGSTACK YES, BRANCH @V5BC0AB 00426250
  555. SR R14,R14 CLEAR REGISTER 14 @V5BC0AB 00426260
  556. ICM R14,B'0011',PROCBUF+10 GET ATTACHED PROC. ADDR @V5BC0AB 00426270
  557. STCM R1,B'0011',PROCBUF+10 MOVE IN MAIN'S ADDRESS @V5BC0AB 00426280
  558. STCM R14,B'0011',PROCBUF+31 MOVE IN ATTACH. PROC ADR @V5BC0AB 00426290
  559. MSGSTACK DS 0H @V5BC0AB 00426300
  560. LA R1,PROCBUF GET DATA ADDRESS @V5BC0AB 00426310
  561. BAL R3,STACK STACK LINE FOR OUTPUT @V5BC0AB 00426320
  562. LR R1,R9 GET BUFFER ADDRESS IN R1 @V5BC0AB 00426330
  563. LA R0,PROCBSIZ GET BUFFER SIZE IN DOUBLE-WORDS @V5BC0AB 00426340
  564. CALL DMKFRET FREE THE BUFFER STORAGE @V5BC0AB 00426350
  565. TM SAVEWRK1,QUERYALL QUERY ALL? @V5BC0AB 00426360
  566. BZ QRYEXIT NO, EXIT @V5BC0AB 00426370
  567. B QRYRSCAN YES, GO SCAN DEVICES @V5BC0AB 00426380
  568. SPACE 00426390
  569. DROP R9 @V5BC0AB 00426400
  570. SPACE 00426410
  571. EJECT 00427000
  572. USING RCHBLOK,R6 00428000
  573. USING RCUBLOK,R7 00429000
  574. USING RDEVBLOK,R8 00430000
  575. USING FREEBUF,R9 00431000
  576. REALFMT MVC FREEMSG(8),BLANKS CLEAR MESSAGE AREA @V200930 00432000
  577. MVC FREEMSG+8(9*8),FREEMSG .. @V200930 00433000
  578. CALL DMKSCNRA GET 'CCU' FORM OF ADDRESS @V407438 00433400
  579. BZ CQP1OK OK THIS TIME, CONTINUE @V407438 00433800
  580. ABEND 1 BAD BLOCKS SENT TO DMKSCNRA @V407438 00434200
  581. CQP1OK EQU * CONTINUE @V407438 00434600
  582. LR R3,R1 SAVE THE ADDRESS FOR LATER USE @V200820 00435000
  583. CALL DMKCVTBH GET IN PRINTABLE FORM 00436000
  584. STCM R1,7,FREEMSG+5 SAVE ADDRESS @V200930 00437000
  585. CALL DMKSCNRN GET DEVICE NAME @V200930 00438000
  586. STCM R1,15,FREEMSG SET NAME @V200930 00439000
  587. TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 00439050
  588. BZ *+8 NOPE, SKIP @V407438 00439100
  589. L R7,RCUPRIME YES, GET PRIMARY BLOCK FOR STATUS@V407438 00439150
  590. STM R1,R3,TEMPR1 TEMPORARILY SAVE REGS @V407438 00439200
  591. LA R1,RCUCHA ADDRESS OF THE FIRST CHANNEL @V407438 00439250
  592. LA R2,4 INCREMENT @V407438 00439300
  593. LA R3,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 00439350
  594. NEXTCHA CL R6,0(R1) R6 REPRESENT THIS CU -> CH PATH? @V407438 00439400
  595. BE *+8 YES, PATH FOUND, BR. @V407438 00439450
  596. BXLE R1,R2,NEXTCHA NOPE, LOOK AT ALL CHANNEL PATHS @V407438 00439500
  597. LA R2,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 00439550
  598. SLR R1,R2 FIND HOW FAR DOWN WE FOUND IT @V407438 00439600
  599. SRL R1,2 CONVERT TO INDEX FROM 0 TO 3 @V407438 00439650
  600. IC R3,DISATBL(R1) GET CU->CH PTH BIT @V407438 00439700
  601. EX R3,CUCHENAB (TM RCUSTAT,RCUCHXOF) TEST PATH @V407438 00439750
  602. LM R1,R3,TEMPR1 RESTORE REGS @V407438 00439800
  603. BO REALCONT CHANNEL PATH OFFLINE, SKIP IT @V407438 00439850
  604. TM RCUSTAT,RCUDISA IS THE CONTROL UNIT OFFLINE? @V407438 00439900
  605. BO REALCONT YES, SKIP IT @V407438 00439950
  606. TM RDEVSTAT,RDEVDISA IS IT OFFLINE ?? @V200930 00440000
  607. BO REALCONT YES, SKIP IT @V200930 00441000
  608. TM RDEVSTAT,RDEVDED IS IT DEDICATED ?? @V200930 00442000
  609. BO RDEVATCH YES @V200930 00443000
  610. TM SAVEWRK1+3,ATTDEV SEARCH FOR ATTACHED ONLY ?? @V200930 00444000
  611. BO REALCONT YES, SKIP THIS ONE @V200930 00445000
  612. TM RDEVTYPC,CLASTERM+CLASGRAF IS IT A TERMINAL ?? @V200930 00446000
  613. BNZ LINESET YES @V200930 00447000
  614. TM RDEVTYPC,CLASURO+CLASURI IS IT UNIT RECORD ?? @V200930 00448000
  615. BNZ URSET YES @V200930 00449000
  616. CLI RDEVTYPC,CLASSPEC SPECIAL CLASS DEVICE ? @V200820 00450000
  617. BE SPECSET YES -- @V200820 00451000
  618. B NOTURIO TEST FOR OTHERS @V200930 00452000
  619. SPACE 00452200
  620. * RCU TO RCH BLOCK PATH AVAILABLE BITS IN RCUSTAT 00452400
  621. DISATBL DC AL1(RCUCHAOF,RCUCHBOF,RCUCHCOF,RCUCHDOF) @V407438 00452600
  622. CUCHENAB TM RCUSTAT,0 TEST PATH AVAILABILITY @V407438 00452800
  623. EJECT 00453000
  624. LINESET DS 0H @V200930 00454000
  625. L R2,RDEVUSER LOAD VMBLOK FOR THIS LINE 00455000
  626. C R2,ASYSVM SYSTEM STILL HAS IT ?? 00456000
  627. BE REALCONT YES, SKIP IT @V200930 00457000
  628. DROP R11 00458000
  629. USING VMBLOK,R2 00459000
  630. LA R0,27 SET UP LNG 00460000
  631. MVC FREEMSG+19(8),VMUSER SET USERID @V200930 00461000
  632. DROP R2 00462000
  633. USING VMBLOK,R11 00463000
  634. MVC FREEMSG+9(9),=CL9'LOGON AS' LINE LOGGED IN @V200930 00464000
  635. B REALWRIT GO PRINT IT NOW 00465000
  636. URSET MVC FREEMSG+9(7),=CL7'STARTED' SET MSG @V200930 00466000
  637. TM RDEVFLAG,RDEVDRAN IS IT DRAINED ?? @V200930 00467000
  638. BZ URSYS NO, DEV STARTED @V200930 00468000
  639. MVC FREEMSG+9(7),=CL7'DRAINED' SET MSG @V200930 00469000
  640. URSYS MVC FREEMSG+19(9),=CL9'SYSTEM' USER @V200930 00470000
  641. MVC FREEMSG+28(8),=CL8'CLASS = ' SET MSG @V200930 00471000
  642. MVC FREEMSG+36(4),RDEVCLAS SET CLASS @V200930 00472000
  643. OC FREEMSG+36(4),BLANKS EDIT LINE @V200930 00473000
  644. MVC FREEMSG+40(6),=CL6' NOSEP' SET NOSEP @V200930 00474000
  645. TM RDEVFLAG,RDEVSEP IS IT SEP ?? @V200930 00475000
  646. BZ *+10 NO, OK @V200930 00476000
  647. MVC FREEMSG+40(3),BLANKS SET SEP @V200930 00477000
  648. LA R0,46 SIZE @V200930 00478000
  649. TM RDEVTYPC,CLASURI IS IT A READER ?? @V200930 00479000
  650. BZ *+8 NO, SIZE IS 46 @V200930 00480000
  651. LA R0,27 SHORTER MSG FOR READERS @V200930 00481000
  652. CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 00481200
  653. BNE URSYS2 XFER IF NOT @V60B9BA 00481300
  654. MVC FREEMSG+47(4),RDEVXSEP CHAR FOR SEP PAGE @V60B9BA 00481400
  655. SR R1,R1 SET UP TO GET LPI FOR 3800 @V60B9BA 00481500
  656. IC R1,RDEVFSEP FCB LINES/INCH @V60B9BA 00481600
  657. CALL DMKCVTBD CONVERT TO EBCDIC @V60B9BA 00481700
  658. STCM R1,B'0011',FREEMSG+52 INSERT IN MSG @V60B9BA 00481800
  659. LA R0,55 EVEN LONGER LENGTH FOR 3800 @V60B9BA 00481900
  660. URSYS2 LA R1,FREEMSG DATA @V60B9BA 00482000
  661. BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00483000
  662. CLI RDEVTYPE,TYP3800 3800 PRINTER ? @V60B9BA 00483250
  663. BNE URSYS3 XFER IF NOT @V60B9BA 00483300
  664. MVI FREEMSG+9,C' ' CLEAR THE MESSAGE AREA @V60B9BA 00483350
  665. MVC FREEMSG+10(45),FREEMSG+9 ... @V60B9BA 00483400
  666. MVC FREEMSG+9(5),=C'FLASH' FLASH NAME @V60B9BA 00483450
  667. MVC FREEMSG+15(4),RDEVOVLY ... @V60B9BA 00483500
  668. MVC FREEMSG+21(5),=C'IMAGE' ACTIVE IMAGE LIBRARY @V60B9BA 00483550
  669. MVC FREEMSG+27(8),RDEVIMAG ... @V60B9BA 00483600
  670. MVC FREEMSG+37(4),=C'HOLD' ASSUME HOLD ON ERROR @V60B9BA 00483650
  671. TM RDEVSTA2,RDEVPURG IS IT REALLY PURGE ? @V60B9BA 00483700
  672. BZ *+10 XFER IF NOT @V60B9BA 00483750
  673. MVC FREEMSG+37(5),=C'PURGE' MOVE IN THE PURGE @V60B9BA 00483800
  674. LA R0,42 LENGTH OF LINE @V60B9BA 00483850
  675. LA R1,FREEMSG ADDRESS OF DATA @V60B9BA 00483900
  676. BAL R3,STACK STACK LINE FOR OUTPUT @V60B9BA 00483950
  677. URSYS3 TM RDEVFLAG,RDEVACNT DOING ACCOUNTING CARDS ?? @V60B9BA 00484000
  678. BO TESTINT YES, SKIP ACTIVE CHECK 00485000
  679. L R2,RDEVSPL GET ACTIVE FILE CONTROL POINTER @V200930 00486000
  680. LTR R2,R2 TEST FOR ACTIVE FILE @V200930 00487000
  681. BZ TESTINT TEST FOR INT REQ @V200930 00488000
  682. CLI 0(R2),X'FF' DOES REG 2 POINT TO SFBLOK ? @VA02207 00489000
  683. BE URSYS1 YES -- GO SET UP DMKRSP CALL @VA02207 00490000
  684. USING RSPLCTL,R2 @V200930 00491000
  685. L R2,RSPSFBLK GET POINTER TO SFBLOK @V200930 00492000
  686. DROP R2 @V200930 00493000
  687. URSYS1 LR R7,R2 R7 POINTS TO SFBLOK FOR CALL @VA02207 00494000
  688. CALL DMKRSPUR FORMAT MESSAGE FOR ACTIVE FILE @V200930 00495000
  689. BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00496000
  690. B TESTINT TEST FOR INT REQ @V200930 00497000
  691. EJECT 00498000
  692. NOTURIO EQU * 00499000
  693. SPACE 00500000
  694. * RDEVFLAG SYS OWN MOUT DASD TAPE MEANING 00501000
  695. * 0 0 1 X DEVICE FREE; VOLUME MOUNTED 00502000
  696. * AFTER IPL OR DEVICE DETACHED 00503000
  697. * 0 0 0 X DEVICE ATTACHED TO SYSTEM; NO LINES 00504000
  698. * EXCEPT WHEN RDEVSER = BLANKS; DEVICE IS FREE 00505000
  699. * 0 0 0 X DEVICE FREE 00506000
  700. * 1 0 0 X DEV ATTACHED TO SYSTEM; WITH LINKS 00507000
  701. * 1 0 0 X DEVICE ATTACHED TO SYSTEM 00508000
  702. * 1 1 0 X DEV ATTACHED TO SYSTEM AND CPOWNED 00509000
  703. SPACE 00510000
  704. TM RDEVFLAG,RDEVMOUT DEV MOUNTED ?? @V200930 00511000
  705. BO REALCONT NO - DEVICE IS FREE @V200820 00512000
  706. LA R0,19 SET LINE SIZE @V200930 00513000
  707. TM RDEVTYPC,CLASDASD IS IT DASD ?? @V200930 00514000
  708. BZ NOVOLSER NO, NO VOLID @V200930 00515000
  709. MVC FREEMSG+19(6),RDEVSER SET VOLID @V200930 00516000
  710. LH R1,RDEVLNKS GET NUMBER OF USERS ON THIS DEVICE 00517000
  711. CALL DMKCVTBD AND GO CONVERT IT. 00518000
  712. STCM R1,7,FREEMSG+28 SET LINK COUNT @V200930 00519000
  713. LA R0,31 LINE SIZE @V200930 00520000
  714. CLC RDEVSER,BLANKS IS IT FREE ?? @V200930 00521000
  715. BE REALCONT YES - SKIP IT @V200820 00522000
  716. NOVOLSER MVC FREEMSG+9(8),=CL8'CP OWNED' @V200930 00523000
  717. TM RDEVFLAG,RDEVOWN IS IT A CP OWNED VOLUME ? 00524000
  718. BO REALWRIT IF YES,, PRINT IT 00525000
  719. MVC FREEMSG+9(9),=CL9'CP SYSTEM' @V200930 00526000
  720. TM RDEVFLAG,RDEVSYS IS IT SYSTEM ?? @V200930 00527000
  721. BZ REALCONT NO -- CONTINUE TO NEXT DEVIC@V200820 00528000
  722. REALWRIT LA R1,FREEMSG SET DATA ADDRESS @V200930 00529000
  723. BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00530000
  724. TESTINT OI SAVEWRK1+3,REALFND FLAG DEVICE FOUND @V200930 00531000
  725. TM RDEVSTAT,RDEVNRDY TEST FOR DEVICE READY @V200930 00532000
  726. BZ REALCONT NO, GET NEXT DEVICE @V200930 00533000
  727. MVC FREEMSG+9(7),=C'INT REQ' FLAG INT REQ @V200930 00534000
  728. LA R0,16 SIZE @V200930 00535000
  729. LA R1,FREEMSG DATA ADDRESS @V200930 00536000
  730. CALL DMKQCNWT,PARM=NORET+ALARM INT REQ MSG @V200930 00537000
  731. B REALCONT DO NEXT DEVICE @V200930 00538000
  732. EJECT 00539000
  733. RDEVATCH MVC FREEMSG+9(9),=CL9'ATTACH TO' @V200930 00540000
  734. LH R1,RDEVATT LOAD VIRTUAL ADDRESS OF DEVICE 00541000
  735. CALL DMKCVTBH CONVERT. 00542000
  736. STCM R1,7,FREEMSG+28 VIRTUAL ADDRESS @V200930 00543000
  737. DROP R11 00544000
  738. L R2,RDEVUSER GET USERID FOR DEVICE 00545000
  739. USING VMBLOK,R2 00546000
  740. MVC FREEMSG+19(8),VMUSER ATTACHED USERID @V200930 00547000
  741. DROP R2 00548000
  742. USING VMBLOK,R11 00549000
  743. LA R0,31 SET LNG OF LINE 00550000
  744. LA R1,FREEMSG SET ADDRESS OF DATA @V200930 00551000
  745. B REALWRIT GO PRINT IT 00552000
  746. EJECT 00553000
  747. SPECSET EQU * FORMAT OUTPUT FOR SPECIAL 3705 DEVICE @V200820 00554000
  748. CLI RDEVTYPE,TYP3705 IS THIS A 3705 OR 3704 ? @V200820 00555000
  749. BNE REALCONT NO -- SYSTEM WILL NOT USE IT@V200820 00556000
  750. MVC FREEMSG+9(L'MSG3705),MSG3705 FORMAT THE OUTPUT @V200820 00557000
  751. L R2,=A(DMKRIORN) ADDRESS OF CONTROLLER TABLE @V200820 00558000
  752. L R14,0(0,R2) PICK UP COUNT OF ENTRIES @V200820 00559000
  753. SPECSTL EQU * FIND THIS 370X IN THE TABLE @V200820 00560000
  754. CH R3,6(0,R2) IS THIS THE ONE ? @V200820 00561000
  755. BE SPECSTF YES -- @V200820 00562000
  756. LA R2,4(0,R2) NEXT ENTRY @V200820 00563000
  757. BCT R14,SPECSTL CONTINUE @V200820 00564000
  758. B SPECSTN LEAVE FIELD BLANK IF NOT FOUND @V200820 00565000
  759. SPECSTF EQU * FIGURE OUT 370X DEVICE CODE @V200820 00566000
  760. SL R2,=A(DMKRIORN) COMPUTE DISPLACEMENT IN TABLE @V200820 00567000
  761. SLL R2,10(0) SHIFT FOR '0000', '1000', ETC. @V200820 00568000
  762. LR R1,R2 INTO GR1 FOR DMKCVT @V200820 00569000
  763. CALL DMKCVTBH CONVERT TO PRINTABLE HEX @V200820 00570000
  764. STCM R1,15,FREEMSG+13 SET IN THE OUTPUT LINE @V200820 00571000
  765. SPECSTN EQU * @V200820 00572000
  766. MVC FREEMSG+24(8),RDEVNCP MOVE IN RDEVBLOK NCPNAME@V200820 00573000
  767. TM RDEVFLAG,RDEVLNCP IS THIS AN NCP ? @V200820 00574000
  768. BZ SPECNCP NO -- LEAVE IT AS EMULATOR @V200820 00575000
  769. MVC FREEMSG+19(3),=C'NCP ' @V200820 00576000
  770. SPECNCP EQU * @V200820 00577000
  771. TM RDEVFLAG,RDEVLCEP EMULATOR PROGRAM ACTIVE ? @V200820 00578000
  772. BZ SPECCEP NO -- @V200820 00579000
  773. MVC FREEMSG+19(3),=C'EP ' @V200820 00580000
  774. SPECCEP EQU * @V200820 00581000
  775. TM RDEVFLAG,RDEVLNCP+RDEVLCEP PARTITIONED EMULATOR@V200820 00582000
  776. BNO SPECPEP NO --- @VM08589 00583000
  777. MVC FREEMSG+19(3),=C'PEP ' @V200820 00584000
  778. SPECPEP EQU * @V200820 00585000
  779. TM RDEVFLAG,RDEVAUTO AUTOMATIC DUMP / RESTART ? @V200820 00586000
  780. BO SPECWRT YES - O.K. AS IS @V200820 00587000
  781. MVC FREEMSG+39(4),=C'OFF ' DUMP OFF @V200820 00588000
  782. SPECWRT EQU * WRITE RESPONSE TO CONSOLE @V200820 00589000
  783. LA R0,43 MESSAGE LENGTH @V200820 00590000
  784. TM RDEVFLAG,RDEVSLOW NCP IN BUFFER SLOWDOWN MODE @V200820 00591000
  785. BZ REALWRIT NO -- STACK THE MSG AS IS @V200820 00592000
  786. LA R1,FREEMSG POINT TO THE MESSAGE DATA @V200820 00593000
  787. BAL R3,STACK STACK THE LINE FOR LATER OUTPUT @V200820 00594000
  788. L R1,FREEMSG+4 PICK UP 'CCU' FROM FIRST MESSAGE @V200820 00595000
  789. L R15,=A(MSGSLOW) -> message text HRC065DK 00595100
  790. MVC FREEMSG(L'MSGSLOW),0(R15) MOVE IN SLOWDOWN MSGHRC065DK 00596000
  791. STCM R1,7,FREEMSG+16 PUT 'CCU' ADDRESS IN NEW MSG@V200820 00597000
  792. LA R1,FREEMSG @V200820 00598000
  793. LA R0,L'MSGSLOW MESSAGE LENGTH @V200820 00599000
  794. CALL DMKQCNWT,PARM=NORET+ERRMSG+ALARM SEND THIS ONE@V200820 00600000
  795. MVC FREEMSG(9),FREEMSG+11 MOVE 'TYPE RADDR' BACK @V200820 00601000
  796. B TESTINT ...IN CASE OF 'INT REQ'@V200820 00602000
  797. EJECT 00603000
  798. QRYRSCAN LA R0,FRBUFSIZ BUFFER SIZE IN DOUBLE WORDS 00604000
  799. CALL DMKFREE GO GET CORE 00605000
  800. LR R9,R1 POINT R9 TO GOTTEN CORE 00606000
  801. QRYLOOP LA R3,FREEMSG START OF MESSAGE AREA @V200930 00607000
  802. LA R4,18 INCREMENT FOR FREE MSG @V200930 00608000
  803. LA R5,FRMSGEND LOAD ADDRESS OF LAST MSG IN BUFFER 00609000
  804. STM R3,R5,FRREGSAV SAVE FOR POSSIBLE LATER USE 00610000
  805. MVI CQPFLAG,BIN0 ZERO FLAG @V3E7466 00610100
  806. MVC FREEMSG(8),BLANKS CLEAR MSG AREA @V200930 00611000
  807. MVC FREEMSG+8(9*8),FREEMSG .. @V200930 00612000
  808. TM SAVEWRK1+3,DEVREQ SINGLE DEV REQUEST ?? @V200930 00613000
  809. BO REALSAVE YES, DONT SEARCH @V200930 00614000
  810. MVC CUINDSAV(2),FFS MOVE ALL ONES TO INDEX SAVE @V3E7466 00615000
  811. LA R4,2 LOAD INCREMENT COUNT 00616000
  812. SR R1,R1 ZERO INDEX FOR CHANNEL SEARCH 00617000
  813. QRYRNCH L R10,ARIOCT ADDRESS OF CHANNEL INDEX TABLE @V200930 00618000
  814. LA R5,30 LOAD END OF CHAN INDEX TABLE 00619000
  815. LH R6,0(R1,R10) LOAD INDEX TO NEXT CHANNEL @V200930 00620000
  816. LTR R6,R6 DOES CHAN EXIST ? 00621000
  817. BM QRYRCHI NO, TRY NEXT 00622000
  818. A R6,ARIOCH POINT R6 TO RCHBLOK 00623000
  819. USING RCHBLOK,R6 00624000
  820. MVC CUINDSAV(4),FFS ZIP LAST CU INDEX PROCESSED @V407438 00624500
  821. SR R2,R2 ZERO INDEX FOR CONTROL UNIT SEARCH 00625000
  822. QRYRNCU LA R5,62 POINT TO END OF CU INDEX @V200930 00626000
  823. LH R7,RCHCUTBL(R2) INDEX TO NEXT CONTROL UNIT @V200930 00627000
  824. LTR R7,R7 DOES CONTROL UNIT EXIST ? 00628000
  825. BM QRYRCUI NO, TRY NEXT 00629000
  826. CH R7,CUINDSAV IS THIS INDEX SAME AS LAST ONE ? 00630000
  827. BE QRYRCUI YES - BYPASS THIS ONE SINCE ALREADY DONE 00631000
  828. STH R7,CUINDSAV NO - SAVE FOR NEXT GO AROUND 00632000
  829. A R7,ARIOCU POINT R7 TO RCUBLOK 00633000
  830. USING RCUBLOK,R7 00634000
  831. SR R3,R3 ZERO INDEX FOR DEVICE TABLE INDEX 00635000
  832. QRYRNDV LA R5,30 SET R5 TO END OF DEVICE INDEX TABLE 00636000
  833. LH R8,RCUDVTBL(R3) LOAD NEXT DEVICE 00637000
  834. LTR R8,R8 DOES DEVICE EXIST ? 00638000
  835. BM QRYRDVI NO, TRY NEXT 00639000
  836. SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00640000
  837. A R8,ARIODV YES, POINT R8 TO RDEVBLOK 00641000
  838. USING RDEVBLOK,R8 00642000
  839. SPACE 00643000
  840. * FOLLOWING CODE TO CHEK IF UNIT IS OF PROPER CLASS 00644000
  841. SPACE 00645000
  842. LA R0,CLASDASD*256+TYP2305 CHECK FOR FIXED-HEAD @VM08747 00646000
  843. CH R0,RDEVTYPC . . .MULTIPLE-EXPOSURE DRUM @VM08747 00647000
  844. BNE CHKQRYT NO -- CONTINUE NORMALLY @VM08747 00648000
  845. TM RDEVADD+1,X'07' SUBSIDIARY EXPOSURE ? @VM08747 00649000
  846. BNZ QRYRDVI YES - SKIP OVER IT @VM08747 00650000
  847. CHKQRYT EQU * @VM08747 00651000
  848. TM SAVEWRK1,QUERYALL IS IT ALL ?? @V200930 00652000
  849. BO REALSAVE YES,, PROCESS IT 00653000
  850. TM SAVEWRK1,CLASURI+CLASURO IS THIS A UR REQUEST? 00654000
  851. BZ TYPCCHEK NO GO CHEK FOR OTHER MATCH 00655000
  852. TM RDEVTYPC,CLASURI+CLASURO IS THIS DEVICE UR ? 00656000
  853. BZ QRYRDVI NO - GO TRY NEXT DEVICE 00657000
  854. B REALSAVE UNIT RECORD DEV. HAS BEEN FOUND. 00658000
  855. TYPCCHEK CLC SAVEWRK1(1),RDEVTYPC PROPER CLAS OF DEVICE ? 00659000
  856. BNE QRYRDVI NOT PROPER CLASS GO TRY AGAIN 00660000
  857. TM SAVEWRK1+3,DASDVOL SEARCH BY VOLID ?? @V200930 00661000
  858. BZ REALSAVE NO, CONT @V200930 00662000
  859. CLC RDEVSER,SAVEWRK2 IS THIS IT ?? @V200930 00663000
  860. BNE QRYRDVI NO, CONT @V200930 00664000
  861. REALSAVE STM R1,R8,REGSAVE SAVE REGS FOR CALL @V200930 00665000
  862. TM SAVEWRK1+1,VIRTUAL+SYSVIRT 3330V QUERY @V60B6B8 00665010
  863. BZ REALSAV1 NO, CONTINUE @V60B6B8 00665020
  864. CLI RDEVTYPE,TYP3330 IS RDEVICE A 3330 @V60B6B8 00665030
  865. BNE QRYRDVI GET NEXT DEVICE @VMI2000 00665040
  866. TM RDEVFTR,SYSVIRT IS RDEV A SYSVIRT @V60B6B8 00665050
  867. BO TSTSYSV YES @V60B6B8 00665060
  868. TM RDEVFTR,VIRTUAL IS RDEV A VIRTUAL @V60B6B8 00665070
  869. BZ QRYRDVI NO, RDEV IS NOT A 3330V @V60B6B8 00665080
  870. TM SAVEWRK1+1,VIRTUAL WAS REQUEST FOR VIRTUAL @V60B6B8 00665090
  871. BZ QRYRDVI NO, GET NEXT DEVICE @V60B6B8 00665100
  872. B REALSAV1 DEV TYPE MATCH, CONTINUE @V60B6B8 00665110
  873. TSTSYSV EQU * @V60B6B8 00665120
  874. TM SAVEWRK1+1,SYSVIRT WAS REQUEST FOR SYSVIRT @V60B6B8 00665130
  875. BZ QRYRDVI NO, GET NEXT DEVICE @V60B6B8 00665140
  876. REALSAV1 EQU * GO PUT OUT MSG @V60B6B8 00665150
  877. TM SAVEWRK1+3,ACTDEV ACTIVE DEVICE ?? @V200930 00666000
  878. BO REALFMT YES, DO IT @V200930 00667000
  879. B FREEFMT DO OFFLINE AND FREE @V200930 00668000
  880. SPACE 00669000
  881. REALCONT LM R1,R8,REGSAVE RESTORE REGS FOR SEARCH @V200930 00670000
  882. TM SAVEWRK1+3,DEVREQ DEVICE REQUEST ?? @V200930 00671000
  883. BO TSTFROF YES, TEST FOR LOOP @V200930 00672000
  884. QRYRDVI BXLE R3,R4,QRYRNDV INCREMENT THRU DEVICES 00673000
  885. LA R5,62 POINT R5 TO END OF CU INDEX 00674000
  886. QRYRCUI BXLE R2,R4,QRYRNCU INCREMENT THRU CONTROL UNITS 00675000
  887. LA R5,30 POINT R5 TO END OF CH INDEX 00676000
  888. QRYRCHI BXLE R1,R4,QRYRNCH INCREMENT THRU CHANNELS 00677000
  889. SPACE 00678000
  890. * 00679000
  891. * WHEN FALL THRU HERE HAVE SCANNED ALL REAL DEVICES 00680000
  892. * 00681000
  893. * 00682000
  894. SPACE 00683000
  895. TSTFROF TM SAVEWRK1+3,FREEDEV+OFFDEV FREE OR OFF REQ ?? @V200930 00684000
  896. BZ QRYNXT NO, TEST FOR MORE @V200930 00685000
  897. LM R3,R5,FRREGSAV GET FREE MESSGAE REGISTERS 00686000
  898. LA R2,FREEMSG LOAD START OF MESSAGE AREA 00687000
  899. CR R2,R3 ANYTHING TO OUTPUT ? 00688000
  900. BE QRYNXT NO, TEST FOR MORE @V200930 00689000
  901. S R3,F2 BACK TO COMMA @V200930 00690000
  902. MVI 0(R3),C' ' EDIT OUT COMMA @V200930 00691000
  903. SR R3,R2 COMPUTE MESSAGE LENGTH 00692000
  904. LR R0,R3 MESSAGE LENGTH TO R0 00693000
  905. LA R1,FREEMSG ADDRESS OF MESSAGE 00694000
  906. BAL R3,STACK STACK OUTPUT LINE @V200930 00695000
  907. QRYNXT TM SAVEWRK1+3,ACTDEV DONE ACTIVE DEVS ?? @V200930 00696000
  908. BZ QRYN1 NO, TEST MORE @V200930 00697000
  909. TM SAVEWRK1+3,FREEDEV+OFFDEV MORE TO DO ?? @V200930 00698000
  910. BZ QRYRFRET NO, DONE @V200930 00699000
  911. NI SAVEWRK1+3,X'FF'-ACTDEV DONE THESE @V200930 00700000
  912. B TSTDFND TEST FOR DEV REQ FOUND @V200930 00701000
  913. QRYN1 TM SAVEWRK1+3,FREEDEV DONE FREE ?? @V200930 00702000
  914. BZ QRYRFRET NO, DONE @V200930 00703000
  915. TM SAVEWRK1+3,OFFDEV OFFLINE TO DO ?? @V200930 00704000
  916. BZ QRYRFRET NO, DONE @V200930 00705000
  917. NI SAVEWRK1+3,X'FF'-FREEDEV DONE THESE @V200930 00706000
  918. TSTDFND TM SAVEWRK1+3,DEVREQ+REALFND FOUND DEV REQ ?? @V200930 00707000
  919. BO QRYRFRET YES, LEAVE @V200930 00708000
  920. B QRYLOOP GO DO OFFLINE @V200930 00709000
  921. SPACE 00710000
  922. QRYRFRET TM CQPBITS,DEVREQ+RANGE RANGE? @V3E7466 00711000
  923. BZ FRETBUF NO, RELEASE STORAGE BUFFER @V3E7466 00711100
  924. NI SAVEWRK1+3,X'FF'-REALFND TURN OFF 'FOUND' BIT @V3E7466 00711200
  925. B NEXTADDR PROCESS NEXT ADDR IN RANGE @V3E7466 00711300
  926. FRETBUF LA R0,FRBUFSIZ LOAD BUFFER SIZE @V3E7466 00711400
  927. LR R1,R9 POINT TO GOTTEN CORE 00712000
  928. CALL DMKFRET GO RELEASE CORE 00713000
  929. TM SAVEWRK1+3,REALFND WAS ANY DEVICE FOUND ? 00714000
  930. BO QRYEXIT ALL FINISHED - RETURN @V3E7466 00715000
  931. LA R0,NFMSGL SIZE @V200930 00716000
  932. LA R1,NFMSG MESSAGE @V200930 00717000
  933. MVC NFSRCH,BLANKS CLEAR @V200930 00718000
  934. MVC NFSRCH(5),=CL5'FREE ' FREE SEARCH @V200930 00719000
  935. TM SAVEWRK1+3,FREEDEV FREE RQE ?? @V200930 00720000
  936. BO MVTAPES YES, CONT @V200930 00721000
  937. MVC NFSRCH(7),=CL7'ATTACH' ATTACH SEARCH @V200930 00722000
  938. TM SAVEWRK1+3,ATTDEV ATT REQ ?? @V200930 00723000
  939. BO MVTAPES YES @V200930 00724000
  940. MVC NFSRCH(7),=CL7'ACTIVE ' ACTIVE SEARCH @V200930 00725000
  941. TM SAVEWRK1+3,ACTDEV ACTIVE ?? @V200930 00726000
  942. BO MVTAPES YES, CONT @V200930 00727000
  943. MVC NFSRCH,=CL8'OFFLINE ' OFFLINE SEARCH @V200930 00728000
  944. TM SAVEWRK1+3,OFFDEV OFFLINE ?? @V200930 00729000
  945. BO MVTAPES YES, CONT @V200930 00730000
  946. MVC NFSRCH,=CL8'DEVICES' ALL SERACH @V200930 00731000
  947. MVTAPES MVC 0(5,R1),=C'TAPE ' ASSUME TAPES @V200930 00732000
  948. CLI SAVEWRK1,CLASTAPE TAPE ?? @V200930 00733000
  949. BE QRYWRIT @V200930 00734000
  950. MVC 0(5,R1),=CL5'DASD ' @V200930 00735000
  951. TM SAVEWRK1+3,DASDVOL IS IT VOLID SEARCH ?? @V200930 00736000
  952. BZ *+10 NO, CONT @V200930 00737000
  953. MVC NFSRCH,SAVEWRK2 GET VOLID @V200930 00738000
  954. CLI SAVEWRK1,CLASDASD DASD ?? @V200930 00739000
  955. BE QRYWRIT @V200930 00740000
  956. MVC 0(5,R1),=CL5'LINE ' @V200930 00741000
  957. CLI SAVEWRK1,CLASTERM LINE ?? @V200930 00742000
  958. BE QRYWRIT @V200930 00743000
  959. MVC 0(5,R1),=CL5'UR ' @V200930 00744000
  960. CLI SAVEWRK1,CLASURO+CLASURI UR ?? @V200930 00745000
  961. BE QRYWRIT @V200930 00746000
  962. MVC 0(5,R1),=CL5'GRAF ' ASSUME GRAF CLASS @V200930 00747000
  963. CLI SAVEWRK1,CLASGRAF IS IT GRAF ?? @V200930 00748000
  964. BE QRYWRIT YES @V200930 00749000
  965. MVC 0(5,R1),=CL5'ALL ' @V200930 00750000
  966. B QRYWRIT SEND MESSAGE AND RETURN 00751000
  967. SPACE 00752000
  968. QRYCOMP CLC 0(0,R3),0(R1) 00753000
  969. SPACE 00754000
  970. NFMSG DC CL5' ' @V200930 00755000
  971. NFSRCH DC CL8' ' @V200930 00756000
  972. DC C'NOT FOUND' @V200930 00757000
  973. NFMSGL EQU *-NFMSG @V200930 00758000
  974. EJECT 00759000
  975. FREEFMT TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE? @V407438 00759050
  976. BZ *+8 NOPE, SKIP @V407438 00759100
  977. L R7,RCUPRIME YES, GET PRIMARY BLOCK FOR STATUS@V407438 00759150
  978. LA R3,RCUCHA ADDRESS OF THE FIRST CHANNEL @V407438 00759200
  979. LA R4,4 INCREMENT @V407438 00759250
  980. LA R5,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 00759300
  981. NEXTCHB CL R6,0(R3) R6 REPRESENT THIS CU -> CH PATH? @V407438 00759350
  982. BE *+8 YES, PATH FOUND, BR. @V407438 00759400
  983. BXLE R3,R4,NEXTCHB NOPE, LOOK AT ALL CHANNEL PATHS @V407438 00759450
  984. LA R4,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 00759500
  985. SLR R3,R4 FIND HOW FAR DOWN WE FOUND IT @V407438 00759550
  986. SRL R3,2 CONVERT TO INDEX FROM 0 TO 3 @V407438 00759600
  987. IC R5,DISATBL(R3) GET CU->CH PTH BIT @V407438 00759650
  988. EX R5,CUCHENAB (TM RCUSTAT,RCUCHXOF) CH PTH OFF?@V407438 00759700
  989. LM R3,R5,FRREGSAV GET REGS SAVED @V407438 00759750
  990. BO FROFF YES, BR. CHECK FOR CONTINUATION @V407438 00759800
  991. TM RCUSTAT,RCUDISA IS THE CONTROL UNIT OFFLINE? @V407438 00759850
  992. BO FROFF YES, BR. CHECK FOR CONTINUATION @V407438 00759900
  993. TM RDEVSTAT,RDEVDISA IS THE DEVICE OFFLINE? @V407438 00759950
  994. BO FROFF YES, BR. CHECK FOR CONTINUATION @V407438 00760000
  995. TM RDEVSTAT,RDEVDED DEDICATED ?? @V200930 00761000
  996. BO REALCONT YES, SKIP @V200930 00762000
  997. TM SAVEWRK1+3,FREEDEV DOING FREE ?? @V200930 00765000
  998. BZ REALCONT NO, SKIP THIS ONE @V200930 00766000
  999. TM RDEVTYPC,CLASTERM+CLASGRAF IS IT A TERMINAL ?? @V200930 00767000
  1000. BNZ FRTERM YES, CHECK @V200930 00768000
  1001. TM RDEVTYPC,CLASURO+CLASURI IS IT UNIT RECORD ?? @V200930 00769000
  1002. BNZ FRUR YES, CHECK @V200930 00770000
  1003. TM RDEVFLAG,RDEVSYS+RDEVOWN SYSTEM OR OWNED ?? 00771000
  1004. BNZ REALCONT YES, SKIP @V200930 00772000
  1005. MVC 9(4,R3),=CL5'FREE ' FLAG FREE @V200930 00773000
  1006. TM RDEVTYPC,CLASDASD IS IT DASD ?? @V200930 00774000
  1007. BZ FRADD NO, CONT @V200930 00775000
  1008. CLC RDEVSER,BLANKS IS IT MOUNTED ?? @V200930 00776000
  1009. BE FRADD NO, CONT @V200930 00777000
  1010. MVC 9(6,R3),RDEVSER SET VOLID @V200930 00778000
  1011. B FRADD CONT @V200930 00779000
  1012. SPACE 00780000
  1013. FROFF TM SAVEWRK1+3,FREEDEV DOING FREE DEV ?? @V200930 00781000
  1014. BO REALCONT YES, SKIP THIS ONE @V200930 00782000
  1015. MVC 9(8,R3),=CL8'OFFLINE ' FLAG OFFLINE @V200930 00783000
  1016. B FRADD CONT @V200930 00784000
  1017. SPACE 00785000
  1018. FRTERM L R2,RDEVUSER GET USERID VMBLOK @V200930 00786000
  1019. C R2,ASYSVM IS IT SYSTEM OWNED ?? @V200930 00787000
  1020. BNE REALCONT NO, SKIP THIS ONE @V200930 00788000
  1021. MVC 9(8,R3),=CL8'ENABLED ' @V200930 00789000
  1022. TM RDEVFLAG,RDEVENAB IS IT ENABLED ?? @V200930 00790000
  1023. BNO FRDISB BRANCH TO DISABLE TEST @VA15324 00790100
  1024. TM RDEVFLAG,RDEVDISB DEVICE IS ENABLED, NOW @VA15324 00790200
  1025. * TEST FOR DISABLE PENDING 00790300
  1026. BNO FRADD DISABLE NOT PENDING, BRANCH @VA15324 00790400
  1027. MVC 9(8,R3),=CL8'DSBLPND ' DISABLE PENDING @VA15324 00790500
  1028. B FRADD BRANCH WITH DISABLE MESSAGE @VA15324 00790600
  1029. FRDISB EQU * DISABLE TEST @VA15324 00791100
  1030. MVC 9(8,R3),=CL8'DISABLED' @V200930 00792000
  1031. B FRADD CONT @V200930 00793000
  1032. SPACE 00794000
  1033. FRUR EQU * @VA03049 00795000
  1034. TM RDEVFLAG,RDEVDRAN IS IT DRAINED ?? @V200930 00796000
  1035. BZ REALCONT NO, NOT FREE @V200930 00797000
  1036. MVC 9(7,R3),=CL7'DRAINED' INDICATE DRAINED @VA03049 00798000
  1037. FRADD CALL DMKSCNRA GET CCU DEVICE ADDRESS @V407438 00799000
  1038. CALL DMKCVTBH CONVERT @V200930 00800000
  1039. STCM R1,7,5(R3) SET ADDRESS @V200930 00801000
  1040. CALL DMKSCNRN GET DEV NAME @V200930 00802000
  1041. STCM R1,15,0(R3) SET NAME @V200930 00803000
  1042. MVI 16(R3),C',' EDITING COMMA @V200930 00804000
  1043. LA R3,18(R3) BUMP POINTER @V200930 00805000
  1044. CLR R3,R5 AT END OF BUFFER ?? @V200930 00806000
  1045. BL FRST NO, CONT @V200930 00807000
  1046. S R3,F2 BACK TO COMMA @V200930 00808000
  1047. MVI 0(R3),C' ' EDIT OUT COMMA @V200930 00809000
  1048. LA R0,70 SIZE @V200930 00810000
  1049. LA R1,FREEMSG DATA ADDRESS @V200930 00811000
  1050. BAL R3,STACK STACK LINE FOR OUTPUT @V200930 00812000
  1051. MVC FREEMSG(8),BLANKS CLEAR FIELD @V200930 00813000
  1052. MVC FREEMSG+8(9*8),FREEMSG .. @V200930 00814000
  1053. LA R3,FREEMSG RE-INITIALIZE @V200930 00815000
  1054. LA R4,18 .. @V200930 00816000
  1055. LA R5,FRMSGEND .. @V200930 00817000
  1056. FRST STM R3,R5,FRREGSAV SAVE NEW VALUES @V200930 00818000
  1057. OI SAVEWRK1+3,REALFND FREE DEV FOUND @V200930 00819000
  1058. B REALCONT CONT @V200930 00820000
  1059. DROP R6,R7,R8 @V3E7466 00821000
  1060. EJECT 00822000
  1061. * 00823000
  1062. * ROUTINE TO STACK OUTPUT LINES ON VMBLOK 00824000
  1063. * THE LINES WILL BW PRINTED BY DMKCFM ON RETURN 00825000
  1064. * 00826000
  1065. STACK LR R4,R0 GET LINE LENGTH @V200930 00827000
  1066. LR R5,R1 GET BUFFER ADDRESS @V200930 00828000
  1067. LA R0,7(R4) ROUND UP TO DBL WORD @V200930 00829000
  1068. SRL R0,3 GET SIZE IN DBL WORDS @V200930 00830000
  1069. A R0,F1 ONE MORE FOR CHAINING @V200930 00831000
  1070. CALL DMKFREE GET STACK BUFFER @V200930 00832000
  1071. MVI 0(R1),BIN0 ZERO ERROR INDICATOR @V3E7466 00832100
  1072. STH R4,4(R1) SAVE LINE SIZE @V200930 00833000
  1073. STH R0,6(R1) SAVE BUFFER SIZE @V200930 00834000
  1074. BCTR R4,R0 DECREMENT FOR EXECUTE @V200930 00835000
  1075. TM CQPBITS,RANGE RANGE PROCESSING @V3E7466 00836000
  1076. BZ EXECUTE NO, NO CHANCE FOR ERROR MSG @V3E7466 00836100
  1077. TM CQPFLAG,CQPERR IS THIS ERROR MSG @V3E7466 00836200
  1078. BZ EXECUTE NO, NORMAL STACK @V3E7466 00836300
  1079. MVI 0(R1),CQPERR IND. ERR. MSG IN STACK BUFFER @V3E7466 00836400
  1080. EXECUTE EX R4,MVCSTK MOVE DATA TO STACK BUFFER @V3E7466 00836500
  1081. SR R0,R0 CLEAR @V200930 00837000
  1082. STCM R0,B'0111',1(R1) PRESERVE CQPERR FLAG @V3E7466 00838000
  1083. LA R2,VMSTKO GET OUTPUT STACK POINTER @V200930 00839000
  1084. STKLOOP EQU * @VA09404 00840000
  1085. ICM R4,B'0111',1(R2) GET PTR TO STACK BUFFER @V3E7466 00840100
  1086. BZ CHAIN FOUND END, CHAIN THIS BUFFER @V200930 00842000
  1087. LR R2,R4 POINT TO NEXT BUFFER @V200930 00843000
  1088. B STKLOOP GO FIND END OF STACK @V200930 00844000
  1089. CHAIN STCM R1,B'0111',1(R2) CHAIN AT END @V3E7466 00845000
  1090. BR R3 RETURN @V200930 00846000
  1091. * 00847000
  1092. MVCSTK MVC 8(*-*,R1),0(R5) EXECUTED FOR STACK BUFFER MOVE @V200930 00848000
  1093. EJECT 00849000
  1094. LNKREQ EQU X'80' INDICATES QUERY LINK REQUEST 00850000
  1095. SYSREQ EQU X'40' INDICATES QUERY SYSTEM REQUEST 00851000
  1096. LNKDONE EQU X'20' INDICAYES COMPLETION OF VDEVLINK CHAIN 00852000
  1097. LNKFND EQU X'10' INCATES AT LEAST 1 LINK TO DEVICE 00853000
  1098. TDSK EQU X'08' SEARCH FOR TDSK ALLOCATED @V200930 00854000
  1099. SPACE 2 00855000
  1100. QRYLINK OI SAVEWRK1,LNKREQ INDICATE A QUERY LINK REQUEST 00856000
  1101. B LNKDEV 00857000
  1102. QRYTDSK OI SAVEWRK1,TDSK FLAG TO SEARCH FOR TDSK ALLOCATED@V200930 00858000
  1103. B LNKPROC PROCESS @V200930 00859000
  1104. SPACE 00860000
  1105. QRYSYS OI SAVEWRK1,SYSREQ INDICATE A QUERY SYSTEM REQUEST 00861000
  1106. SPACE 00862000
  1107. LNKDEV CALL DMKSCNFD GET ARGUMENT 00863000
  1108. BNZ CHK022 ERROR, IF ARGUMENT MISSING 00864000
  1109. STM R0,R1,SAVEWRK8 SAVE LENGTH AND ADDRESS FOR LATER 00865000
  1110. CL R0,F3 CAN'T HAVE MORE THAN THREE DIGITS 00866000
  1111. BH CHK022 AND STILL BE A VALID ADDRESS 00867000
  1112. CALL DMKCVTHB CONVERT DEVICE ADDRESS TO BINARY 00868000
  1113. BNZ CHK022 ERROR, IF NOT VALID HEX CHARACTORS 00869000
  1114. TM SAVEWRK1,SYSREQ IS REQUEST FOR "SYSTEM" ? 00870000
  1115. BO SCANSYS YES, TAKE THE BRANCH 00871000
  1116. CALL DMKSCNVU IS THIS A VALID VIRTUAL DEVICE ? 00872000
  1117. BNZ CQP040 ERROR, IF NOT 00873000
  1118. USING VDEVBLOK,R8 ADDRESSABILITY 00874000
  1119. CLI VDEVTYPC,CLASDASD DEVICE MUST BE DASDI 00875000
  1120. BNE CQP006 ERROR, IF NOT A DASD DEVICE 00876000
  1121. L R3,VDEVREAL LOAD ADDRESS OF RDEVBLOK 00877000
  1122. ST R3,SAVEWRK3 SAVE RDEVBLOK ADDRESS @V200930 00878000
  1123. L R5,VDEVRELN GET DISK RELOCATION AND SIZE @VA07972 00879100
  1124. ST R5,SAVEWRK5 SAVE RELOCATION @V200930 00880000
  1125. B LNKPROC CONTINUE 00881000
  1126. SPACE 00882000
  1127. CHK022 TM SAVEWRK1,SYSREQ SYSTEM REQUEST ???? 00883000
  1128. BO CQP021 SEND 021E MESSAGE IF IT IS 00884000
  1129. B CQP022 ELSE - SEND 022 MESSAGE 00885000
  1130. SPACE 00886000
  1131. DROP R8 00887000
  1132. SPACE 00888000
  1133. SCANSYS CALL DMKSCNRU IS DEVICE VALID 00889000
  1134. BNZ CQP040 ERROR, IF CONTROL BLOCKS NOT FOUND 00890000
  1135. USING RDEVBLOK,R8 ADDRESSABILITY 00891000
  1136. CLI RDEVTYPC,CLASDASD DEVICE MUST BE DASD 00892000
  1137. BNE LNKERR ERROR, IF NOT. 00893000
  1138. TM RDEVFLAG,RDEVOWN+RDEVSYS ERROR IF NOT CP VOLUME. 00894000
  1139. BZ LNKERR BRANCH IF ERROR. 00895000
  1140. ST R8,SAVEWRK3 SAVE RDEVBLOK ADDRESS @V200930 00896000
  1141. SPACE 00897000
  1142. LNKPROC LA R0,LINKBSIZ GET SIZE OF BUFFER NEEDED. 00898000
  1143. CALL DMKFREE CALL DMKFREE 00899000
  1144. LR R6,R1 SAVE ADDRESS OF BUFFER IN GPR 6 00900000
  1145. ST R6,SAVEWRK8 REMEMBER BUFFER START @V200930 00901000
  1146. USING LINKBUF,R6 ADDRESSABAILITY 00902000
  1147. MVI LINKBUF,C' ' CLEAR FIRST POSITION OF BUFFER. 00903000
  1148. MVC LINKBUF+1(79),LINKBUF CLEAR BUFFER @V200930 00904000
  1149. ST R6,SAVEWRK6 SAVE BUFFER ADDRESS @V200930 00905000
  1150. LA R7,VDEVSIZE*8 R7 = SIZE IN BYTES OF 1 VDEVBLOK 00906000
  1151. LR R10,R11 LOAD ADDR. OF 1'ST VMBLOK TO CHECK 00907000
  1152. DROP R11 00908000
  1153. USING VMBLOK,R10 ADDRESSABILITY 00909000
  1154. LINKLCNT LH R9,VMDVCNT LOAD COUNT OF VDEVBLOKS 00910000
  1155. LTR R9,R9 ANY BLOCKS FOR THIS USER. 00911000
  1156. BNP LINKNUSR IF NOT, GET NEXT USER. 00912000
  1157. L R8,VMDVSTRT LOAD ADDRESS OF 1'ST VDEVBLOK. 00913000
  1158. USING VDEVBLOK,R8 ADDRESSABILITY 00914000
  1159. LINKCKAD TM VDEVADD,X'80' VALID VDEVBLOK ? 00915000
  1160. BO LINKNVDV IF INVALID, SKIP IT AND GET NEXT ONE. 00916000
  1161. TM VDEVTYPC,CLASDASD IS IT DASD ?? @V200930 00917000
  1162. BZ LINKNVDV NO, NEXT DEVICE @V200930 00918000
  1163. TM SAVEWRK1,TDSK LOOKING FOR TDSK ?? @V200930 00919000
  1164. BO LINKFIND YES, CHECK FURTHER @V200930 00920000
  1165. L R3,VDEVREAL GET RDEVBLOK ADDRESS @V200930 00921000
  1166. CL R3,SAVEWRK3 IS IT THE ONE WE ARE LOOKING @V200930 00922000
  1167. * FOR ?? 00923000
  1168. BE LINKFIND YES, PROCESS IT. 00924000
  1169. LINKNVDV AR R8,R7 ADD SIZE OF ONE VDEVBLOK 00925000
  1170. BCT R9,LINKCKAD ITERATE THRU ALL VDEVBLOKS 00926000
  1171. LINKNUSR L R10,VMPNT GET NEXT USER IN CHAIN OF VMBLOKS. 00927000
  1172. CR R10,R11 ARE WE AT THE END OF THE CHAIN ? 00928000
  1173. BNE LINKLCNT IF NOT, PROCESS NEXT DEVBLOK. 00929000
  1174. OI SAVEWRK1,LNKDONE INDICATE ALL VDEVBLOK HAVE BEEN USE 00930000
  1175. B LINKPRT PRINT THIS LINE AND EXIT. 00931000
  1176. SPACE 1 00932000
  1177. LINKFIND TM SAVEWRK1,SYSREQ IS REQUEST FOR QUERY SYSTEM ? 00933000
  1178. BO LINKEQAL IF YES, A MATCH HAS BEEN FOUND. 00934000
  1179. TM SAVEWRK1,TDSK SEARCH FOR TDSK ?? @V200930 00935000
  1180. BZ LINKREL NO, GET RELOCATION @V200930 00936000
  1181. TM VDEVFLAG,VDEVTDSK IS THIS A TDSK ?? @V200930 00937000
  1182. BZ LINKNVDV NO, GET NEXT DEVICE @V200930 00938000
  1183. B LINKEQAL YES, PROCESS IT @V200930 00939000
  1184. LINKREL DS 0H @V200930 00940000
  1185. L R2,VDEVRELN LOAD RELO FACTOR AND SIZE FOR @VA07972 00941100
  1186. * COMP 00941200
  1187. C R2,SAVEWRK5 DO RELO AMD SIZE MATCH? @VA07972 00942100
  1188. BE LINKEQAL IF YES, PROCESS IT. 00943000
  1189. B LINKNVDV 00944000
  1190. SPACE 2 00945000
  1191. LINKEQAL OI SAVEWRK1,LNKFND INDICATE A MATCH HAS BEEN FOUND 00946000
  1192. L R6,SAVEWRK6 SET BUFFER ADDRESS @V200930 00947000
  1193. MVC LINKBUF(8),VMUSER MOVE IN USERID 00948000
  1194. LR R11,R10 LOAD ADDRESS OF VMBLOK OF THIS DEV. 00949000
  1195. CALL DMKSCNVD GET VIRTUAL DEV ADDRESS IN GPR 1 00950000
  1196. L R11,SAVER11 RESTORE TRUE VMBLOK ADDRESS 00951000
  1197. L R6,SAVEWRK6 RESTORE BUFFER ADDRESS @V200930 00952000
  1198. CALL DMKCVTBH CONVERT TO PRINTABLE CHARS. 00953000
  1199. STCM R1,7,LINKBUF+9 DEV IN MSG @V200930 00954000
  1200. MVC LINKBUF+13(3),=CL3'R/O' ASSUME READ ONLY @V200930 00955000
  1201. TM VDEVFLAG,VDEVRDO IS IT A R/O DASD UNIT 00956000
  1202. BO *+8 IF YES BRANCH 00957000
  1203. MVI LINKBUF+15,C'W' FLAG WRITE STATUS @V200930 00958000
  1204. MVI LINKBUF+16,C',' EDIT COMMA @V200930 00959000
  1205. TM VDEVFLAG,VDEVTDSK IS THIS A TDSK ?? @V200930 00960000
  1206. BZ INDEX NO, INDEX REG @V200930 00961000
  1207. LH R1,VDEVBND GET NUMBER OF CYLINDERS @V200930 00962000
  1208. CALL DMKCVTBD CONVERT @V200930 00963000
  1209. STCM R1,7,LINKBUF+13 PUT IN MESSAGE @V200930 00964000
  1210. INDEX LA R6,18(R6) NEXT BUFFER POSITION @V200930 00965000
  1211. ST R6,SAVEWRK6 SAVE BUFFER ADDRESS @V200930 00966000
  1212. L R7,SAVEWRK8 GET BUFFER START ADDRESS @V200930 00967000
  1213. LA R7,72(R7) BUFFER END ADDRESS @V200930 00968000
  1214. CR R6,R7 AT END YET ?? @V200930 00969000
  1215. BNL LINKPRT YES, PRINT IT @V200930 00970000
  1216. LA R7,VDEVSIZE*8 SET INDEX @V200930 00971000
  1217. B LINKNVDV GET NEXT VDEVBLOK IN THE LIST 00972000
  1218. * 00973000
  1219. * ON ENTRY HERE GPR 7 = LENGTH OF PRINT LINE + 1. 00974000
  1220. * 00975000
  1221. LINKPRT L R0,SAVEWRK6 GET BUFFER ADDRESS @V200930 00976000
  1222. S R0,SAVEWRK8 MINUS BUFFER START @V200930 00977000
  1223. BZ LINKEXIT EXIT, IF NO LINE TO OUTPUT. 00978000
  1224. BCTR R0,R0 DECREMENT LINE LENGTH BY - 1. 00979000
  1225. L R3,SAVEWRK6 LAST BUFFER POSITION @V200930 00980000
  1226. S R3,F2 DECREMENT BUFFER POSITION BY TWO BYTES. 00981000
  1227. MVI 0(R3),C' ' REMOVE THE LAST COMMA INSERTED 00982000
  1228. L R1,SAVEWRK8 GET BUFFER ADDRESS @V200930 00983000
  1229. BAL R3,STACK STACK FOR OUTPUT @V200930 00984000
  1230. L R6,SAVEWRK8 GET BUFFER START @V200930 00985000
  1231. MVI LINKBUF,C' ' CLEAR FIRST BYTE OF BUFFER. 00986000
  1232. MVC LINKBUF+1(79),LINKBUF CLEAR @V200930 00987000
  1233. TM SAVEWRK1,LNKDONE HAVE ALL VDEVBLOKS BEEN SCANNED ? 00988000
  1234. BO LINKEXIT IF YES, EXIT. 00989000
  1235. ST R6,SAVEWRK6 SET BUFFER START ADDRESS @V200930 00990000
  1236. LA R7,VDEVSIZE*8 SET INDEX @V200930 00991000
  1237. B LINKNVDV LOOK FOR MORE VDEVBLOKS. 00992000
  1238. SPACE 00993000
  1239. LINKEXIT TM SAVEWRK1,LNKFND WERE ANY LINKS FOUND ? 00994000
  1240. BO LINKFRET IF YES, EXIT 00995000
  1241. LA R0,NFMSGL SET SIZE @V200930 00996000
  1242. LA R1,NFMSG MESSAGE ADDRESS @V200930 00997000
  1243. MVC NFMSG,=CL5'DASD ' DSAD DEVICE ONLY @V200930 00998000
  1244. MVC NFSRCH,BLANKS CLEAR @V200930 00999000
  1245. MVC NFSRCH(6),=CL6'LINKS' ASSUME LINKS @V200930 01000000
  1246. TM SAVEWRK1,LNKREQ LINK REQUEST ?? @V200930 01001000
  1247. BO LNKCALL YES @V200930 01002000
  1248. MVC NFSRCH(6),=CL6'MDISKS' ASSUME SYSTEM @V200930 01003000
  1249. TM SAVEWRK1,SYSREQ SYSTEM SEARCH ?? @V200930 01004000
  1250. BO LNKCALL YES @V200930 01005000
  1251. MVC NFSRCH(6),=CL6'TDSKS' TDSK SEARCH @V200930 01006000
  1252. LNKCALL DS 0H @V200930 01007000
  1253. CALL DMKQCNWT,PARM=NORET 01008000
  1254. SPACE 01009000
  1255. LINKFRET L R1,SAVEWRK8 GET BUFFER ADDRESS @V200930 01010000
  1256. LA R0,LINKBSIZ AND ALSO ITS SIZE 01011000
  1257. CALL DMKFRET FRET STORAGE. 01012000
  1258. B QRYEXIT EXIT 01013000
  1259. SPACE 2 01014000
  1260. DROP R6 01015000
  1261. DROP R10 01016000
  1262. USING VMBLOK,R11 01017000
  1263. EJECT 01018000
  1264. CQP003 LA R2,RC3 ERROR RETURN CODE = 3 @V3E7466 01019000
  1265. B CALLERM .... 01020000
  1266. SPACE 01021000
  1267. CQP006 LA R2,RC6 ERROR RETURN CODE = 6 @V3E7466 01022000
  1268. LM R0,R1,SAVEWRK8 LOAD LENGTH AND ADDRESS OF BAD ARG. 01023000
  1269. B CALLERM .... 01024000
  1270. SPACE 01025000
  1271. CQP021 LA R2,RC21 ERROR RETURN CODE = 21 @V3E7466 01026000
  1272. B NOVAR .... 01027000
  1273. SPACE 01028000
  1274. CQP021A LR R0,R6 GET COUNT OF INVALID PARM @V407490 01028100
  1275. LA R1,1(,R2) POINT TO INVALID PARM @V407490 01028200
  1276. LA R2,21 LOAD ERROR CODE @V407490 01028300
  1277. B CALLERM @V407490 01028400
  1278. SPACE 01028500
  1279. CQP022 LA R2,RC22 ERROR RETURN CODE = 22 @V3E7466 01029000
  1280. B NOVAR .... 01030000
  1281. SPACE 01031000
  1282. CQP023 LA R2,RC23 ERROR RETURN CODE = 23 @V3E7466 01032000
  1283. B NOVAR @V200930 01033000
  1284. CQP040A EQU * @VA08691 01033010
  1285. TM SAVEWRK1+1,PASS1 IS THIS THE FIRST MESSAGE? @VA08691 01033020
  1286. BO CQP040B NO - WE HAVE A MSG AREA @VA08691 01033030
  1287. OI SAVEWRK1+1,PASS1 SET MSG AREA FLAG @VA08691 01033040
  1288. LA R0,FRBUFSIZ GET BUFFER SIZE IN DOUBLE WORDS @VA08691 01033050
  1289. CALL DMKFREE GET MSG AREA @VA08691 01033060
  1290. LR R9,R1 PUT IT WHERE WE NEED IT @VA08691 01033070
  1291. CQP040B EQU * @VA08691 01033080
  1292. MVC FREEMSG(L'MSG40),MSG40 SUBSTITUTE MSG TEXT @VA08691 01033090
  1293. L R1,SAVEWRK4 ADDR @V3E7466 01033100
  1294. CALL DMKCVTBH CONVERT ADDR TO HEX FOR MSG @V3E7466 01033150
  1295. STCM R1,B'0111',FREEMSG+15 SUBSTITUTE IN MSG @V3E7466 01033200
  1296. OI CQPFLAG,CQPERR IND. ERROR MSG FOR STACK @V3E7466 01033250
  1297. LA R0,MSGSIZE SIZE OF MESSAGE @V3E7466 01033300
  1298. LA R1,FREEMSG DATA AREA ADDRESS @V3E7466 01033350
  1299. BAL R3,STACK GO STACK MESSAGE @V3E7466 01033400
  1300. MVI CQPFLAG,X'00' RESET MSG FLAG @V3E7466 01033450
  1301. LA R2,RC40 ERROR RETURN CODE = 40 @V3E7466 01033500
  1302. ST R2,SAVER2 SAVE TO RETURN TO CALLER @V3E7466 01033550
  1303. B NEXTADDR @V3E7466 01033600
  1304. SPACE 01034000
  1305. CQP040 LA R2,RC40 ERROR RETURN CODE = 40 @V3E7466 01035000
  1306. LM R0,R1,SAVEWRK8 ADDRESS AND LENGTH OF ARGUMENT 01036000
  1307. B CALLERM .... 01037000
  1308. SPACE 01038000
  1309. CQP045 LA R2,RC45 ERROR RETURN CODE = 45 @V3E7466 01039000
  1310. LM R0,R1,SAVER0 LENGTH AND ADDRESS OF BAD ARGUMENT 01040000
  1311. B CALLERM .... 01041000
  1312. SPACE 01042000
  1313. NOVAR SR R1,R1 ZERO PARM REG 01043000
  1314. CALLERM ICM R0,14,MODID+3 INSERT MODULE ID 01044000
  1315. CALL DMKERMSG GO SEND MESSAGE 01045000
  1316. * DMKERMSG WILL RETURN DIRECTLY TO DMKCFM 01046000
  1317. SPACE 01046100
  1318. RC3 EQU 3 ERROR RETURN CODE = 3 @V3E7466 01046150
  1319. RC6 EQU 6 ERROR RETURN CODE = 6 @V3E7466 01046200
  1320. RC21 EQU 21 ERROR RETURN CODE = 21 @V3E7466 01046250
  1321. RC22 EQU 22 ERROR RETURN CODE = 22 @V3E7466 01046300
  1322. RC23 EQU 23 ERROR RETURN CODE = 23 @V3E7466 01046350
  1323. RC40 EQU 40 ERROR RETURN CODE = 40 @V3E7466 01046400
  1324. RC45 EQU 45 ERROR RETURN CODE = 45 @V3E7466 01046450
  1325. * MESSAGES FOR 3705 RESPONSES 01048000
  1326. MSG3705 DC C'DEV XXXX PGM= ........ DUMP AUTO' @V200820 01049000
  1327. DASH DC C'-' RANGE DELIMITER? @V3E7466 01050100
  1328. SPACE 01050200
  1329. MSG40 DC CL33'DMKCQP040E DEV DOES NOT EXIST' @V3E7466 01050300
  1330. MSGSIZE EQU *-MSG40 DATA LENGTH @V3E7466 01050400
  1331. MVCADDR MVC MSG40+15,0(R1) MVC FOR MSG SUBSTITUTION @V3E7466 01050500
  1332. SPACE 01051000
  1333. EJECT 01052000
  1334. LTORG 01053000
  1335. MSGSLOW DC C'DMKCQP466I CTLR XXX IN BUFFER SLOWDOWN MODE' HRC065DK 01053100
  1336. EJECT 01054000
  1337. FREEBUF DSECT 01055000
  1338. REGSAVE DS 8F REGSAVE R1-R8 @V200930 01056000
  1339. CUINDSAV DS H CU INDEX SAVE @V3E7466 01057000
  1340. CQPFLAG DS X ERR. MSG IND. FOR STACK @V3E7466 01057100
  1341. DS X UNUSED @V3E7466 01057200
  1342. FRREGSAV DS 3F BXLE REG SAVE @V200930 01058000
  1343. FREEMSG DS 20F MESSAGE BUILDING AREA @V200930 01059000
  1344. FRMSGEND EQU FREEMSG+72 SIZE @V200930 01060000
  1345. DS 0D 01061000
  1346. FRBUFSIZ EQU (*-FREEBUF)/8 SIZE OF BUFFER IN DOUBLE WORDS 01062000
  1347. CQPERR EQU X'80' IND. ERROR MSG. FOR STACK @V3E7466 01062100
  1348. BIN0 EQU X'00' RESET FLAG INDICATOR @V3E7466 01062200
  1349. SPACE 6 01063000
  1350. SPACE 2 01064000
  1351. LINKBUF DSECT 01065000
  1352. DS CL80 OUTPUT BUFFER , LINKS, SYSTEM, @V200930 01066000
  1353. * TDSK 01067000
  1354. LINKBSIZ EQU (*-LINKBUF)/8 SIZE IN DBL WORDS 01068000
  1355. PROCBUF DSECT @V5BC0AB 01068010
  1356. DS CL40 PROCESSOR ONLINE MESSAGE BUFFER @V5BC0AB 01068012
  1357. PROCBSIZ EQU (*-PROCBUF)/8 SIZE IN DOUBLE-WORDS @V5BC0AB 01068014
  1358. SPACE 2 01069000
  1359. EJECT 01070000
  1360. PSA , @V306638 01071000
  1361. COPY DEVTYPES @V306638 01072000
  1362. COPY EQU @V306638 01073000
  1363. COPY RBLOKS @V306638 01074000
  1364. COPY SAVE @V306638 01075000
  1365. RADDR1 EQU SAVEWRK7 FIRST RADDR IN RANGE @V3E7466 01075100
  1366. RADDR2 EQU SAVEWRK7+2 SECOND RADDR IN RANGE @V3E7466 01075200
  1367. CQPBITS EQU SAVEWRK1+3 @V3E7466 01075300
  1368. COPY SPOOL @V306638 01076000
  1369. COPY VBLOKS @V306638 01077000
  1370. COPY VMBLOK @V306638 01078000
  1371. END 01079000