User Tools

Site Tools


ibm:vm370-lib:cp:dmkcps.assemble_src

โˆ’Table of Contents

DMKCPS Source

References

Source Listing

DMKCPS.ASSEMBLE.txt
  1. CPS TITLE 'DMKCPS (CP) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME - 00003000
  4. * 00004000
  5. * DMKCPS 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * 00008000
  9. * TO HANDLE A, B, AND C PRIVILEGE CLASS COMMANDS THAT ARE NOT 00009000
  10. * SUBSETS OF NON-PRIVILEGED COMMANDS 00010000
  11. * 00011000
  12. * ATTRIBUTES - 00012000
  13. * 00013000
  14. * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
  15. * 00015000
  16. * ENTRY POINTS 00016000
  17. * 00017000
  18. * DMKCPSH - DO A HALT DEVICE TO THE SPECIFIED UNIT 00020000
  19. * DMKCPSRY - TO MARK A SYSTEM DEVICE OFFLINE OR ONLINE. 00021000
  20. * 00022000
  21. * ENTRY CONDITIONS - 00023000
  22. * 00024000
  23. * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00025000
  24. * GPR11 = ADDRESS OF CALLER'S VMBLOK 00026000
  25. * GPR12 = ADDRESS OF ENTRY POINT 00027000
  26. * GPR13 = ADDRESS OF SAVEAREA 00028000
  27. * 00029000
  28. * EXIT CONDITIONS - 00030000
  29. * 00031000
  30. * NORMAL - 00032000
  31. * GPR2 = 0 00033000
  32. * 00034000
  33. * ERROR - 00035000
  34. * GPR2 = ERROR MESSAGE CODE NUMBER 00036000
  35. * 00037000
  36. * CALLS TO OTHER ROUTINES - 00038000
  37. * 00039000
  38. * DMKQCNWT - TO WRITE MESSAGE TO CONSOLE 00040000
  39. * DMKFREE - TO OBTAIN STORAGE 00041000
  40. * DMKIOSQR - TO QUE I/O REQUEST 00042000
  41. * DMKPTRUL - TO UNLOCK A PAGE 00043000
  42. * DMKSCNVU - TO FIND A VIRTUAL UNIT 00044000
  43. * DMKFRET - TO RETURN A BLOCK OF STORAGE 00045000
  44. * DMKCVTBH - TO CONVERT BINARY TO HEX 00046000
  45. * DMKCVTBD - TO CONVET BINARY TO DECIMAL 00046500
  46. * DMKIOSHA - HALT AN ACTIVE DEVICE 00047000
  47. * DMKCFPRD - RESET A VIRTUAL DEVICE 00048000
  48. * DMKSCNVD - FIND A VIRTUAL DEVICE ADDRESS 00049000
  49. * DMKSCNVN - GET THE VIRTUAL DEVICE TYPE 00050000
  50. * DMKSCNRN - GET THE REAL DEVICE TYPE 00051000
  51. * DMKCFMBK - PUT A USER IN CF MODE 00052000
  52. * DMKSCNFD - LOCATE THE NEXT ARGUMENT ON THE COMMAND LINE 00053000
  53. * DMKCVTHB - CONVERT HEXADECIMAL ADDRESSES TO BINARY 00054000
  54. * DMKSCNRU -LOCATE THE RDEVBLOK FOR THE SPECIFIED REAL DEVICE 00055000
  55. * DMKERMSG - TO SEND ERROR MESSAGES TO TERMINAL 00057000
  56. * DMKRSESD - RECORD 3800 STATISTICAL DATA 00059000
  57. * DMKSTKCP - STACK A CPEXBLOK 00059500
  58. * DMKSTKIO - STACK IOBLOK TO READ DASD VOLID. 00060000
  59. * DMKDSBRD - IOBIRA TO READ LABEL 00061000
  60. * DMKIOESR - SYNCHRONOUS OBR PROCESSING 00063000
  61. * DMKSCNRA - COMPUTE FULL REAL DEVICE ADDRESS 00064000
  62. * DMKSCNNP - GET RCUBLOK & RCHBLOK FOR NEXT PATH TO DEVICE 00065000
  63. * DMKCFCSC - SCAN OPERAND FOR RANGE OF ADDRESSES 00067000
  64. * DMKSPLDL - DELETE SPOOL FILES ON THE 3800 DELAY QUEUE 00071000
  65. * DMKSSSDE - DEMOUNT V3330 VOLUME 00071300
  66. * DMKTAPRL - TAPE RELEASE EPA 00071600
  67. * DMKTBLLC - TRANSLATE TABLE TO TRANSLATE TO LOWERCASE HRC010DK 00071800
  68. * 00072000
  69. * EXTERNAL REFERENCES - 00073000
  70. * 00074000
  71. * NONE 00075000
  72. * 00076000
  73. * TABLES / WORKAREAS - 00077000
  74. * 00078000
  75. * CORTABLE 00079000
  76. * 00080000
  77. * REGISTER USAGE - 00081000
  78. * 00082000
  79. * GPR0 = LENGTH OF ARGUMENT (RETURNED BY DMKSCNFD) 00083000
  80. * GPR1 = ADDRESS OF ARGUMENT (RETURNED BY DMKSCNFD) 00084000
  81. * GPR2 = PARMS PASSED TO CALLED ROUTINES 00085000
  82. * GPR3 = LENGTH FOR EXECUTED MOVES AND COMPARES 00086000
  83. * GPR4 = INTERNAL LINKAGE (2ND LEVEL) 00087000
  84. * GPR5 = INTERNAL LINKAGE (2ND LEVEL) 00088000
  85. * GPR6-8 NOT USED 00089000
  86. * GPR9 = ADDRESS OF COMMAND LINE BUFFER 00090000
  87. * GPR10 = IOBLOK BASE 00091000
  88. * GPR11 = VMBLOK BASE 00092000
  89. * GPR12 = MODULE BASE 00093000
  90. * GPR13 = SAVEAREA BASE 00094000
  91. * GPR14 = EXTERNAL LINKAGE 00095000
  92. * GPR15 = EXTERNAL LINKAGE 00096000
  93. * 00097000
  94. * OPERATION - 00098000
  95. * 00099000
  96. * THE COMMAND HANDLING ROUTINES IN DMKCPS ARE CALLED FROM DMKCFM 00100000
  97. * AFTER THEIR PRIVILEGE CLASS HAS BEEN VERIFIED 00101000
  98. * THE FORMAT AND OPERATION OF EACH COMMAND IS DESCRIBED IN 00102000
  99. * SEPARATE COMMAND PROLOGUES BELOW 00103000
  100. *. 00104000
  101. EJECT 00105000
  102. COPY OPTIONS @VA03757 00106000
  103. COPY LOCAL @VA03757 00107000
  104. SPACE 3 00108000
  105. PUNCH 'SPB' @VA03757 00109000
  106. DMKCPS CSECT @VA03757 00110000
  107. MODID DC CL8'DMKCPS' @VA03757 00111000
  108. SPACE 3 00112000
  109. USING PSA,R0 @VA03757 00113000
  110. USING VMBLOK,R11 @VA03757 00114000
  111. USING SAVEAREA,R13 @VA03757 00115000
  112. SPACE 2 00116000
  113. EXTRN DMKSCNFD @VA03757 00117000
  114. AIF (NOT &AP).SKIPCP1 **AIF*** 00118000
  115. EXTRN DMKCPUVY VARY PROCESSOR ROUTINE @V5BC0AB 00119000
  116. .SKIPCP1 ANOP **ANOP** 00120000
  117. EXTRN DMKIOSQR @VA03757 00121000
  118. EXTRN DMKCVTHB @VA03757 00123000
  119. EXTRN DMKSCNRA @V407438 00125000
  120. EXTRN DMKSCNNP @V407438 00126000
  121. EXTRN DMKSTKCP @V407466 00127000
  122. EXTRN DMKTAPRL TAPE RELEASE EPA @V407466 00128000
  123. EXTRN DMKCVTBD @VA03757 00129000
  124. EXTRN DMKSCNRU @VA03757 00130000
  125. EXTRN DMKPTRUL @VA03757 00131000
  126. EXTRN DMKCVTBH @VA03757 00132000
  127. EXTRN DMKSCNVU @VA03757 00134000
  128. EXTRN DMKIOSHA @VA03757 00135000
  129. EXTRN DMKCFPRD @VA03757 00136000
  130. EXTRN DMKSCNVD @VA03757 00137000
  131. EXTRN DMKSCNVN @VA03757 00138000
  132. EXTRN DMKSCNRN @VA03757 00139000
  133. EXTRN DMKCFMBK @VA03757 00140000
  134. EXTRN DMKERMSG @VA03757 00141000
  135. EXTRN DMKSTKIO @VA03757 00144000
  136. EXTRN DMKDSBRD @VA08187 00145000
  137. EXTRN DMKIOESR SYCHRONOUS OBR PROCESSING @VA03757 00147000
  138. EXTRN DMKCFCSC SCAN FOR RANGE OPERAND @V407466 00148000
  139. EXTRN DMKSPLDL,DMKRSESD 3800 SUPPORT @VA13648 00149000
  140. EXTRN DMKSSSDE TO DEMOUNT VOLUME @VA10877 00149100
  141. EXTRN DMKTBLLC TRANSLATE TO LOWER CASE HRC010DK 00249100
  142. EJECT 00356000
  143. *. 00357000
  144. * SUBROUTINE NAME - 00358000
  145. * 00359000
  146. * DMKCPSRY 00360000
  147. * 00361000
  148. * FUNCTION - 00362000
  149. * 00363000
  150. * TO MAKE A DEVICE AVAILABLE/UNAVAILABLE FOR USE BY A USER 00364000
  151. * OR BY THE CONTROL PROGRAM. 00365000
  152. * 00366000
  153. * COMMAND LINE FORMAT - 00367000
  154. * 00368000
  155. * +------+---------------------------------+ 00369000
  156. * | VARY | ONLINE RADDR . . . | 00370000
  157. * | | OFFLINE RADDR1-RADDR2 | 00371000
  158. * | VARY | ONLINE PROCESSOR RADDR | 00372000
  159. * | | OFFLINE PROCESSOR RADDR | 00373000
  160. * +------+---------------------------------+ 00374000
  161. * 00375000
  162. * OPERATION - 00376000
  163. * 00377000
  164. * 1. CALL DMKSCNFD TO GET THE ONLINE OR OFFLINE PARAMETER; 00378000
  165. * IF NO PARAMETER, ISSUE ERROR MESSAGE DMKCPS026E. 00379000
  166. * 2. CALL DMKSCNFD TO GET DEVICE ADDRESS, RANGE OPERAND OR 00380000
  167. * PROC OPERAND. IF THE VARY IS FOR A PROCESSOR, CALL 00381000
  168. * DMKSCNFD TO GET THE PROCESSOR ADDRESS. IF NO ADDRESS, 00382000
  169. * ISSUE ERROR MESSAGE DMKCPS021E. OTHERWISE, CALL 00383000
  170. * DMKCPUVY TO VARY THE PROCESSOR ONLINE OR OFFLINE. 00384000
  171. * UPON RETURN FROM DMKCPUVY, EXIT. IF THE VARY IS FOR 00385000
  172. * A DEVICE, AND THERE IS NO DEVICE ADDRESS OR IF ADDRESS 00386000
  173. * IS INVALID AFTER CONVERSION ISSUE ERROR MESSAGE 00387000
  174. * DMKCPS021E. ALSO ISSUE THE MSG IF TARGET IS A 2305 AND 00388000
  175. * THE ADDRESS IS NOT THAT OF EXPOSURE 0, I.E. 'XX0' 00389000
  176. * 'XX8'. 00390000
  177. * 3. ACQUIRE FREE STORAGE FOR MESSAGE BUFFER; THIS 00391000
  178. * BUFFER WILL BE USED TO BUILD SUCCESSFUL VARY ONLINE/ 00392000
  179. * OFFLINE MESSAGE. 00393000
  180. * 4. CALL DMKCFCSC TO DETERMINE IF RANGE OPERAND HAS 00394000
  181. * BEEN SPECIFIED; VALIDITY CHECK RANGE OPERAND AND 00395000
  182. * CONVERT FIRST AND SECOND ADDRESS IN RANGE TO BINARY. 00396000
  183. * IF VALIDITY CHECK FAILS, ISSUE ERROR MESSAGE DMKCPS026E. 00397000
  184. * IF CONVERSION FAILS, ISSUE ERROR MESSAGE DMKCPS021E. 00398000
  185. * 5. CALL DMKSCNRU TO LOCATE THE DEVICE TO BE VARIED. 00399000
  186. * IF THE DEVICE DOES NOT EXIST, ISSUE ERROR MSG DMKCPS040E. 00400000
  187. * IF A SDRBLOK EXISTS, CALL DMKIOESR FOR SYNCHRONOUS 00401000
  188. * OBR PROCESSING (STATISTICAL DATA RECORDING). 00402000
  189. * 6. RESET THE DISABLE FLAGS FOR THIS DEVICE. 00403000
  190. * FOR VARY OFFLINE, SKIP TO STEP 8. BUILD AN IOB 00404000
  191. * FOR A TEST I/O REQUEST AND CALL DMKIOSQR TO TEST THE 00405000
  192. * AVAILABILITY OF THE PATH TO THE DEVICE. IF THERE ARE 00406000
  193. * ALTERNATE PATHS TO THE DEVICE, SCHEDULE A TIO ON EACH 00407000
  194. * PATH. IF IT IS A DASD DEVICE 00408000
  195. * DMKSTKIO TO STACK A DEVICE END INTERRUPT FOR DMKDASRD 00409000
  196. * TO READ THE REAL VOLID. IF THE DEVICE IS A 2305, VARY ALL 00410000
  197. * EIGHT EXPOSURES ONLINE. THEN CALL DMKQCNWT TO 00411000
  198. * ISSUE SUCCESSFUL MESSAGE. 00412000
  199. * 7. WHEN ALL DEVICES HAVE BEEN PROCESSED, EXIT. 00413000
  200. * AN INVALID DEVICE IN THE COMMAND LINE DOES NOT TERMINATE 00414000
  201. * COMMAND PROCESSING. AN ERROR MESSAGE WILL BE ISSUED FOR 00415000
  202. * THE DEVICE IN ERROR AND PROCESSING WILL CONTINUE WITH THE 00416000
  203. * NEXT ADDRESS. 00417000
  204. * 00418000
  205. * THE FOLLOWING STEPS ARE FOR VARY OFFLINE PROCESSING 00419000
  206. * 00420000
  207. * 8. IF THE DEVICE IS DEDICATED, CALL DMKERMSG TO SEND ERROR 00421000
  208. * MESSAGE DMKCPS140E. IF THE DEVICE IS AN ENABLED TP LINE, 00422000
  209. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPS049E. IF 00423000
  210. * NONACTIVE TP LINE, GO TO STEP 9. IF NOT A TPLINE, CHECK 00424000
  211. * FOR A SPOOL DEVICE. IF NOT A SPOOL DEVICE, GO TO STEP 8. 00425000
  212. * FOR A SPOOL DEVICE THAT IS NOT DRAINED, CALL DMKERMSG TO 00426000
  213. * SEND ERROR MESSAGE DMKCPS142E. IF DRAINED, GO TO STEP 9. 00427000
  214. * 9. IF THIS IS NOT A TAPE DEVICE, GO TO STEP 10-ELSE CONTINUE. 00428000
  215. * 10. SET THE RDEVDISA FLAG IN THE RDEVBLOK. CALL DMKQCNWT TO 00429000
  216. * ISSUE THE SUCCESSFUL MESSAGE AND CONTINUE. 00430000
  217. * NOTE THAT IF THE DEVICE IS A 2305, ALL EIGHT EXPOSURES WILL 00431000
  218. * BE VARIED OFFLINE. 00432000
  219. * IF THIS IS A 3800, DMKRSESD WILL BE CALLED TO 00433000
  220. * UNLOAD THE ERROR LOG BUFFER, AND THEN EACH FILE 00434000
  221. * ON ITS DELAYED PURGE QUEUE WILL BE PURGED VIA 00435000
  222. * A CALL TO DMKSPLDL. 00436000
  223. * 11. IF THIS IS A CP-OWNED DASD, CALL DMKERMSG TO SEND ERROR 00437000
  224. * MESSAGE DMKCPS123E. IF IT IS A SYSTEM DASD THAT IS BUSY, 00438000
  225. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPS124E. IF NOT ONE 00439000
  226. * OF THESE, GO TO STEP 9. 00440000
  227. * 00441000
  228. * RESPONSES - 00442000
  229. * +----------------------------------------+ 00443000
  230. * | RADDR ... VARIED ONLINE | 00444000
  231. * | RADDR-RADDR OFFLINE | 00445000
  232. * +----------------------------------------+ 00446000
  233. * 00447000
  234. * ERROR MESSAGES - 00448000
  235. * DMKCPS003E INVALID OPTION - (OPTION) 00449000
  236. * DMKCPS021E RADDR MISSING OR INVALID 00450000
  237. * DMKCPS026E OPERAND MISSING OR INVALID 00451000
  238. * DMKCPS040E DEV (ADDR) DOES NOT EXIST 00452000
  239. * DMKCPS049E (TYPE RADDR) IN USE 00453000
  240. * DMKCPS123E DASD (RADDR) CP OWNED 00454000
  241. * DMKCPS124E DASD (RADDR) IN USE BY (NNN) USERS 00455000
  242. * DMKCPS140E (TYPE RADDR) ATTACHED TO (USERID) 00456000
  243. * DMKCPS142E (TYPE RADDR) NOT DRAINED 00457000
  244. * 00458000
  245. *. 00459000
  246. EJECT 00460000
  247. DMKCPSRY RELOC VARY ENTRY @VA03757 00461000
  248. USING RCHBLOK,R6 @VA03757 00462000
  249. USING RCUBLOK,R7 @VA03757 00463000
  250. USING RDEVBLOK,R8 @VA03757 00464000
  251. XC SAVEWRK1(4),SAVEWRK1 CLEAR FLAG BITS @V407466 00465000
  252. MVC SAVEWRK6(4),BUFCNT-BUFFER(R9) SAVE CNT AT ENTRY @VA15100 00465100
  253. CALL DMKSCNFD GET ON OR OFF @VA03757 00466000
  254. BNZ CPS026 NONE, ERROR @VA03757 00467000
  255. LR R2,R0 GET DATA COUNT @VA03757 00468000
  256. BCTR R2,R0 MINUS ONE @VA03757 00469000
  257. CL R0,F2 LESS THAN TWO ?? @VA03757 00470000
  258. BL CPS003A YES, ERROR @V407466 00471000
  259. EX R2,COMPON IS IT ONLINE ?? @VA03757 00472000
  260. BE VARYONS YES @VA03757 00473000
  261. EX R2,COMPOFF IS IT OFFLINE ?? @VA03757 00474000
  262. BNE CPS003A NO, ERROR @V407466 00475000
  263. B VARYDGET GO GET DEVICES TO VARY @VA03757 00476000
  264. VARYONS OI CPSBITS,ON VARY ONLINE REQUEST @V407466 00477000
  265. SR R10,R10 INDICATE NO IOB YET @VA03757 00478000
  266. VARYDGET LA R0,MSGSIZE ACQ. STORAGE FOR SUCCESS MSG @V407466 00479000
  267. CALL DMKFREE ... @V407466 00480000
  268. ST R1,SAVEWRK7 SAVE MSG AREA ADDRESS @V407466 00481000
  269. CALL DMKSCNFD FIND SECOND OPERAND @V407466 00482000
  270. BNZ CPS021C NONE, ERROR @V407490 00483000
  271. CLC 0(4,R1),=C'PROC' A VARY PROC COMMAND? @V5BC0AB 00485000
  272. BNE MSGBUFF NO, CONTINUE @V5BC0AB 00486000
  273. AIF (NOT &AP).SKIPCP2 00487000
  274. CALL DMKSCNFD GET PROCESSOR ADDRESS @V5BC0AB 00489000
  275. BNZ CPS021B GO ISSUE ERROR MESSAGE @VA09324 00490100
  276. CL R0,F2 IS OPERAND LENGTH = 2? @VA09324 00491100
  277. BNE CPS021B NO, BRANCH @VA09324 00491200
  278. CALL DMKCVTHB CONVERT TO BINARY @V5BC0AB 00492000
  279. BNZ CPS021B GO ISSUE ERROR MESSAGE @VA09324 00493100
  280. TM CPSBITS,ON IS THIS AN ONLINE REQUEST? @V5BC0AB 00494000
  281. BO VARYPROC YES, CONTINUE @V5BC0AB 00495000
  282. O R1,NOADD INDICATE THIS IS AN OFFLINE REQ. @V5BC0AB 00496000
  283. * I.E. PUT X'FF' IN BYTE 0 OF REGISTER 1 00497000
  284. VARYPROC DS 0H @V5BC0AB 00498000
  285. CALL DMKCPUVY CALL THE VARY PROCESSOR ROUTINE @V5BC0AB 00499000
  286. STC R1,LASTRC STORE RETURN CODE @V5BC0AB 00500000
  287. B CPSEXIT GO RETURN TO CALLER @V5BC0AB 00501000
  288. .SKIPCP2 ANOP 00502000
  289. L R1,SAVEWRK7 GET ADDR OF MESSAGE AREA @VMH0011 00503000
  290. LA R0,MSGSIZE GET MESSAGE AREA SIZE @VMH0011 00504000
  291. CALL DMKFRET FREE THE MESSAGE AREA @VMH0011 00505000
  292. SLR R0,R0 NO MESSAGE TEXT INSERT LENGTH @VMH0011 00506000
  293. SLR R1,R1 NO MESSAGE TEXT INSERT ADDRESS @VMH0011 00507000
  294. LA R2,192 ERROR MESSAGE NUMBER FOR MSG, @VMH0011 00508000
  295. * VARY PROCESSOR COMMAND FAILED 00509000
  296. B CALLERM ISSUE MESSAGE, RETURN TO DMKCFM @VMH0011 00510000
  297. MSGBUFF DS 0H @VMH0011 00511000
  298. USING MSG,R9 ADDRESSABILITY FOR MSG @V407466 00512000
  299. L R9,SAVEWRK7 R9 ADDRESSES MSG AREA @V407466 00513000
  300. XC CPSADD1(MSGSIZE*8),CPSADD1 CLEAR MSG AREA @V407466 00514000
  301. CL R0,F7 MORE THAN 7 CHARACTERS? @V407466 00515000
  302. BH CPS021D YES, ERROR @V407490 00516000
  303. LA R2,DASH '-' FOR RANGE SCAN @V407466 00517000
  304. CALL DMKCFCSC SEE IF RANGE SPECIFIED @V407466 00518000
  305. BZ VARYDEV NO, RANGE, CONTINUE BELOW @V407466 00519000
  306. CR R1,R2 INVALID IF '-' FIRST CHARACTER @V407466 00520000
  307. BNL CPS021D ERROR @V407490 00521000
  308. CL R0,F3 RANGE < 3? @V407466 00522000
  309. BL CPS021D ERROR @V407490 00523000
  310. LR R3,R2 ... @V407466 00524000
  311. SR R3,R1 LENGTH OF RADDR1 FIELD @V407466 00525000
  312. LR R4,R0 ENTIRE OPERAND LENGTH @V407466 00526000
  313. LR R0,R3 RADDR1 LENGTH @V407466 00527000
  314. MVI 0(R2),BLANK REPLACE '-' WITH BLANK @V407466 00528000
  315. CALL DMKCVTHB CONVERT FIRST RADDR IN RANGE @V407466 00529000
  316. BNZ CPS021A ERROR IF BAD CONVERT @V407466 00530000
  317. STH R1,RADDR1 STORE RADDR1 IN SAVEWRK8 @V407466 00531000
  318. LA R1,1(,R2) POINT TO SECOND RADDR IN RANGE @V407466 00532000
  319. SR R4,R3 RADDR2 LENGTH @V407466 00533000
  320. BCTR R4,0 MINUS ONE FOR '-' @V407466 00534000
  321. LR R0,R4 TO R0 @V407466 00535000
  322. CALL DMKCVTHB CONVERT SECOND RADDR IN RANGE @V407466 00536000
  323. BNZ CPS021B BAD CONVERT ON SECOND ADDRESS @V407490 00537000
  324. LH R4,RADDR1 FIRST ADDRESS IN RANGE @V407466 00538000
  325. CR R1,R4 RADDR2 MUST BE > RADDR1 @V407466 00539000
  326. BNH CPS021B INVALID OPERAND @V407490 00540000
  327. STH R1,RADDR2 STORE RADDR2 IN SAVEWRK8+2 @V407466 00541000
  328. OI CPSBITS,RANGE INDICATE RANGE PROCESSING @V407466 00542000
  329. CALL DMKSCNFD BETTER NOT BE MORE OPERANDS @V407466 00543000
  330. BZ CPS026A ERROR @V407466 00544000
  331. LH R1,RADDR1 NEXT ADDRESS @V407466 00545000
  332. B CONTINUE PROCESS ADDRESS @V407466 00546000
  333. VARYDEV CL R0,F3 MORE THAN 3 CHARACTERS ?? @VA03757 00547000
  334. BH CPS021 YES, RADDR ERROR @V407490 00548000
  335. CALL DMKCVTHB CONVERT TO DEVICE ADDRESS @VA03757 00549000
  336. BNZ CPS021 BAD CONVERT @VA03757 00550000
  337. CONTINUE ST R1,SAVEWRK9 SAVE FOR POSSIBLE ERROR MSG @V407466 00551000
  338. CALL DMKSCNRU FIND DEVICE CONTROL BLOKS @VA03757 00552000
  339. BNZ CPS040 CANT FIND THE DEVICE @VA03757 00553000
  340. TM RDEVSTA3,RDEVPEND IS VARY IN PROCESS FOR THIS @VA12646 00553100
  341. * DEVICE? 00553200
  342. BO CPSVPEND YES, ISSUE ERROR MESSAGE @VA12646 00553300
  343. OI RDEVSTA3,RDEVPEND TURN ON VARY PENDING FLAG @VA12646 00553400
  344. TM RDEVTYPC,CLASDASD+CLASTAPE TAPE OR DASD? @V407438 00554000
  345. BZ CKON NOPE, CONTINUE WITH OTHERS @V407438 00555000
  346. L R7,RDEVCUA GET FIRST DEFINED PATH TO DEVICE @V407438 00556000
  347. TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE CTL UNIT? @V407438 00557000
  348. BZ *+8 NOPE, GOT PRIMARY, BR. @V407438 00558000
  349. L R7,RCUPRIME GET PRIMARY RCUBLOK @V407438 00559000
  350. L R6,RCUCHA GET FIRST CHANNEL BLOCK @V407438 00560000
  351. CLI RDEVTYPC,CLASDASD THIS A DASD DEVICE? @VA03757 00561000
  352. BNE CKON NOPE @VA03757 00562000
  353. CLI RDEVTYPE,TYP2305 YES - MULT. EXPOSURE DEVICE? @VA03757 00563000
  354. BNE CKON NO - NORMAL PROCESSING @VA03757 00564000
  355. TM RDEVADD+1,X'07' IS THIS EXPOSURE 0?? @VA03757 00565000
  356. BNZ CPS021 NOPE, BAD STUFF, BR. @V407466 00566000
  357. CKON EQU * @VA03757 00567000
  358. TM CPSBITS,ON VARY 'ONLINE' REQUEST @V407466 00568000
  359. BO VARYON YES, DO IT @V407466 00569000
  360. B VARYOFF VARY OFFLINE @VA03757 00570000
  361. SPACE 00571000
  362. VARYNDEV L R1,SAVEWRK9 CURRENT ADDRESS @V407466 00572000
  363. CLI RDEVTYPC,CLASDASD DASD DEVICE TYPE @V407466 00573000
  364. BNE CONVERT NOT 2305, CONVERT ADDR @V407466 00574000
  365. CLI RDEVTYPE,TYP2305 2305 DRUM? @V407466 00575000
  366. BNE CONVERT NOT 2305, CONVERT CURRENT ADDR @V407466 00576000
  367. LA R7,7(,R1) BUMP FOR 8 EXPOSURES @V407466 00577000
  368. ST R7,SAVEWRK9 SAVE FOR LATER @V407466 00578000
  369. CONVERT CALL DMKCVTBH CONVERT ADDRESS TO HEX @V407466 00579000
  370. TM CPSBITS,RANGE PROCESSING A RANGE? @V407466 00580000
  371. BO MSGRANGE YES, FILL IN SUCCESS MSG @V407466 00581000
  372. L R9,SAVEWRK7 BEGINNING MSG BUFFER @V407466 00582000
  373. SLR R7,R7 CLEAR R7 @V407466 00583000
  374. IC R7,MULTCUU COUNT OF NUMBER OF MULTIPLES @V407466 00584000
  375. LA R8,1(,R7) INCREMENT BY 1 @V407466 00585000
  376. STCM R8,B'0001',MULTCUU STORE UPDATED COUNT @V407466 00586000
  377. LA R8,4 L'CUU + L'DELIMITER @V407466 00587000
  378. MR R6,R8 R7*R8 INTO R6-R7 @V407466 00588000
  379. AR R9,R7 ADJUSTED MSG BUFFER PTR @V407466 00589000
  380. STCM R1,B'0111',CPSMULT1 STORE ADDRESS IN MSG @V407466 00590000
  381. MVI CPSDEL4,BLANK MSG DELIMITER @V407466 00591000
  382. ST R9,SAVEWRK8 SAVE MSG BUFF PTR IN CASE MULTS @V407490 00592000
  383. L R9,SAVER9 GET COMMAND LINE POINTER @VA15100 00593100
  384. CALL DMKSCNFD FIND NEXT ADDR, IF ANY @V407466 00594000
  385. BNZ FINMSG NO MORE ADDRS TO PROCESS @V407466 00595000
  386. B VARYDEV VARY NEXT DEVICE @V407466 00597000
  387. FINMSG L R9,SAVEWRK7 BEGINNING MSG BUFFER @V407466 00598000
  388. CLC CPSADD1,=XL3'000000' ANY MSG SUBST. @V407466 00599000
  389. BE SKIPMSG NO, SKIP MSG @V407466 00600000
  390. L R9,SAVEWRK8 RESTORE MSG BUFFER PTR. @V407490 00601000
  391. MVC CPSCON3(L'CPSCON3+1),=CL7'VARIED ' SUBT. CONS. @V407466 00602000
  392. TM CPSBITS,ON VARY ONLINE @V407466 00603000
  393. BO ONLINE YES, SUBSTITUE CONS 'ONLINE' @V407466 00604000
  394. MVC CPSCON4,=CL7'OFFLINE' CONSTANT 'OFFLINE' @V407466 00605000
  395. MSGLEN LA R0,CPSSIZE2 LENGTH OF SINGLE MSG @V407466 00606000
  396. L R1,SAVEWRK7 ORIG. PTR TO WORK AREA @V407466 00607000
  397. SR R9,R1 ACCOUNT FOR MULT ADDR MSG @V407466 00608000
  398. AR R0,R9 ADD TO LENGTH @V407466 00609000
  399. B SENDMSG SEND MSG @V407466 00610000
  400. ONLINE MVC CPSCON4,=CL7'ONLINE ' SHOW ONLINE @VA10053 00611010
  401. B MSGLEN ISSUE MESSAGE @V407466 00612000
  402. MSGRANGE CLC CPSADD1,=XL3'000' FIRST ADDR ALREADY FILLED IN @V407466 00613000
  403. BE FSTRADD STORE IN FIRST ADDRESS FIELD @V407466 00614000
  404. STCM R1,B'0111',CPSADD2 STORE IN 2ND ADDRESS FIELD @V407466 00615000
  405. NEXTRADD L R1,SAVEWRK9 LAST ADDR PROCESSED @V407466 00616000
  406. NEXTRAD2 LA R3,IOBFRET BR ADDR IF NOT ISSUING MSG @V407466 00617000
  407. CH R1,RADDR2 END OF RANGE PROCESSING @V407466 00618000
  408. BNL CHKADDRS YES, END OF RANGE @V407490 00619000
  409. LA R1,1(,R1) UP ADDRESS BY ONE @V407466 00620000
  410. B CONTINUE PROCESS NEXT ADDRESS @V407466 00621000
  411. FSTRADD STCM R1,B'0111',CPSADD1 FIRST ADDR IN RANGE @V407466 00622000
  412. B NEXTRADD SEE IF END OF RANGE PROCESSING @V407466 00623000
  413. ENDRADDR MVI CPSDEL1,CHARDASH MSG DELIMITER @V407466 00624000
  414. SINGMSG MVC CPSCON1(L'CPSCON1+1),=CL7'VARIED ' SUB. CONSTANT@VA08438 00625000
  415. MVI CPSDEL2,BLANK MSG DELIMITER @V407466 00626000
  416. TM CPSBITS,ON VARY ONLINE REQUEST? @V407466 00627000
  417. BO ONLINE2 YES @V407466 00628000
  418. MVC CPSCON2,=CL7'OFFLINE' SUBSTITUTE OFFLINE @V407466 00629000
  419. MSGSEND LA R0,CPSSIZE1 MSG LENGTH @V407466 00630000
  420. LR R1,R9 MSG POINTER @V407466 00631000
  421. B SENDMSG ISSUE MSG @V407466 00632000
  422. ONLINE2 MVC CPSCON2,=CL7'ONLINE ' SHOW ONLINE @VA10053 00633010
  423. B MSGSEND ISSUE MSG @V407466 00634000
  424. SPACE 2 00635000
  425. TSTRANGE TM CPSBITS,RANGE RANGE BEING PROCESSED? @V407466 00636000
  426. BCR 14,R3 NO, NO PENDING SUCCESSFUL MSG @V407466 00637000
  427. OI CPSBITS,VARYERR INDICATE PENDING ERROR MSG @V407466 00638000
  428. CHKADDRS CLC CPSADD1,=XL3'000' FIRST ADDR ALREADY FILLED IN @V407466 00639000
  429. BCR 8,R3 NO SUCCESSFUL RANGE MSG PENDING @V407466 00640000
  430. CLC CPSADD2,=XL3'000' FULL RANGE MSG PENDING? @V407466 00641000
  431. BNE ENDRADDR YES, FORMAT REST RANGE MSG @V407466 00642000
  432. * SINGLE RADDR IN MESSAGE 00643000
  433. MVC CPSDEL1(L'CPSDEL1+L'CPSADD2),=CL4' ' BL RADD2@V407466 00644000
  434. B SINGMSG FORMAT REST OF SINGLE MSG @V407466 00645000
  435. SPACE 00646000
  436. VARYON EQU * @VA03757 00647000
  437. SWITCH ENSURE RUNNING ON MAIN PROCESSOR @V407595 00648000
  438. TM RDEVSTAT,RDEVDED IS THE DEVICE DEDICATED? @VA03757 00649000
  439. BO DEVDED YES, CAN'T VARY ON THEN. @VA03757 00650000
  440. TM RDEVTYPC,CLASDASD+CLASTAPE ALT PATH TYPE DEVICE?@V407438 00651000
  441. BZ FINDEX NOPE, SKIP THE USE CHECK. @V407438 00652000
  442. TM RDEVFLAG,RDEVSYS+RDEVOWN SYSTEM USE NOW @V407438 00653000
  443. * CAN'T AFFORD TO ENABLE ONE PATH IF ANOTHER IS IN USE. 00654000
  444. * IT COULD RESULT IN CC3 ON NON-VARY RELATED I/O. 00655000
  445. BNZ CPS143 YES, CAN'T DO I/O TO IT. @V407438 00656000
  446. FINDEX LA R1,RCUCHA ADDRESS OF THE FIRST CHANNEL @V407438 00657000
  447. LA R2,4 INCREMENT @V407438 00658000
  448. LA R3,RCUCHD ADDRESS OF THE LAST CHANNEL @V407438 00659000
  449. NEXTCH CL R6,0(R1) R6 REPRESENT THIS CU -> CH PATH? @V407438 00660000
  450. BE *+8 YES, PATH FOUND, BR. @V407438 00661000
  451. BXLE R1,R2,NEXTCH NOPE, LOOK AT ALL CHANNEL PATHS @V407438 00662000
  452. LA R2,RCUCHA ADDRESS OF THE BEGINNING AGAIN @V407438 00663000
  453. SLR R1,R2 FIND HOW FAR DOWN WE FOUND IT @V407438 00664000
  454. SRL R1,2 CONVERT TO INDEX FROM 0 TO 3 @V407438 00665000
  455. IC R3,DISATBL(R1) GET CORRECT PATH OFFLINE BIT @V407438 00666000
  456. EX R3,CUCHDISA (TM RCUSTAT,RCUCHXOF) PTH AVAIL? @V407438 00667000
  457. BO GRADDR PATH IS OFFLINE, WORK TO DO @V407438 00668000
  458. TM RCUSTAT,RCUDISA IS THE CONTROL UNIT OFFLINE? @V407438 00669000
  459. BO GRADDR YES, WORK TO DO, BR. @V407438 00670000
  460. TM RDEVSTAT,RDEVDISA DEVICE OFFLINE? @V407438 00671000
  461. BZ FNDNPTH THIS PATH ON, CONTINUE WITH NEXT @V407438 00672000
  462. GRADDR CALL DMKSCNRA GET RADDR IN CCU FORM @V407438 00673000
  463. LA R6,256 TIO RETRY COUNT IS 256 @VA12448 00673100
  464. LR R2,R1 SAVE THE DEVICE ADDR @VA03757 00674000
  465. LTR R10,R10 DO WE HAVE A TIO IOBLOK? @VA03757 00675000
  466. BNZ HAVEIOB YUP, SKIP FREE CALL @VA03757 00676000
  467. LA R0,IOBSIZE SET SIZE OF BLOCK @VA03757 00677000
  468. CALL DMKFREE AND GO GET IT @VA03757 00678000
  469. LR R10,R1 ADDRESS THE BLOCK @VA03757 00679000
  470. USING IOBLOK,R10 AS AN IOB @VA03757 00680000
  471. LA R0,CPEXSIZE GET A CPEXBLOK TOO... @VA03757 00681000
  472. CALL DMKFREE ... @VA03757 00682000
  473. LR R5,R1 ADDRESS IT @VA03757 00683000
  474. USING CPEXBLOK,R5 @VA03757 00684000
  475. HAVEIOB XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IT OUT @VA03757 00685000
  476. ST R5,IOBMISC SAVE THE CPEXBLOK ADDR @VA03757 00686000
  477. ST R11,IOBUSER ... @VA03757 00687000
  478. OI IOBSTAT,IOBPATHF FLAG THIS AS FIXED PATH FOR IOS@V407438 00688000
  479. OI IOBSPEC,IOBTIO FLAG THIS AS A TIO REQUEST @V407438 00689000
  480. STH R2,IOBRADD STUFF PATH ADDRESS IN THE IOB @V407438 00690000
  481. LA R15,10 COUNT FOR CHANNEL ERRORS @VA12977 00690500
  482. LA R2,TIODONE SET UP RETURN ADDRESS @V407438 00691000
  483. ST R2,IOBIRA ... @V407438 00692000
  484. IC R2,RCUSTAT CTLUNIT & CTL->CH ON/OFF STATUS @V407438 00693000
  485. * R3 CONTAINS 1 BIT: RCUCHAOF, BOF, COF, OR DOF FROM ABOVE 00694000
  486. ICM R2,B'0010',RDEVSTAT GET DEVICE ON/OFF STATUS @V407438 00695000
  487. N R2,=AL1(0,0,RDEVDISA,RCUDISA+RCUCHAOF+RCUCHBOF+RCUCHCOF+X00696000
  488. RCUCHDOF) PRESERVE ONLY PATH STATUS BITS 00697000
  489. ST R2,IOBMISC2 SAVE FOR LATER @V407438 00698000
  490. X R3,FFS FLIP/FLOP FOR PATH ENABLE @V407438 00699000
  491. NI RDEVSTAT,X'FF'-RDEVDISA ENABLE THE DEVICE PATH @V407438 00700000
  492. RETRYCH EQU * @VA12977 00700500
  493. STM R0,R15,CPEXR0 SAVE THE REGS @VA03757 00701000
  494. CALL DMKIOSQR GO QUEUE UP THE TIO REQUEST @VA03757 00702000
  495. GOTO DMKDSPCH AND BEATIT FOR AWHILE @VA03757 00703000
  496. SPACE 00704000
  497. * RCU TO RCH BLOCK PATH AVAILABLE BITS IN RCUSTAT 00705000
  498. DISATBL DC AL1(RCUCHAOF,RCUCHBOF,RCUCHCOF,RCUCHDOF) @V407438 00706000
  499. CUCHDISA TM RCUSTAT,0 CHECK RCU -> RCH PATH AVAILBILITY@V407438 00707000
  500. CUCHENAB NI RCUSTAT,0 ENABLE RCU -> RCH PATH @V407438 00708000
  501. SPACE 00709000
  502. TIODONE EQU * HERE WHEN TIO IS DONE @VA03757 00710000
  503. L R5,IOBMISC ADDR OF CPEXBLOK @VA03757 00711000
  504. LM R0,R15,CPEXR0 REGAIN ADDRESSABILITY, QUICK @VA03757 00712000
  505. EX R3,CUCHENAB (NI RCUSTAT,X'FF'-RCUCHXOF) ENAB @VA08547 00713000
  506. NI RCUSTAT,X'FF'-RCUDISA ENAB CTL UNIT @VA08547 00714000
  507. TM IOBSTAT,IOBCC3 DID WE GET CC=3? @VA03757 00715000
  508. BO CPSCC3 YES, BR @VA03757 00716000
  509. BZ CPSCC0 NO, CC=0, BR @VA03757 00717000
  510. TM IOBCSW+5,IFCC+CCC IFCC OR CCC ? @VA12977 00717300
  511. BNZ ERRORCH YES, CHECK COUNT @VA12977 00717600
  512. CLI RDEVTYPC,CLASTAPE IS THIS A TAPE? @VA09038 00718100
  513. BE CKTAPE YES, BRANCH OUT @VA09038 00718110
  514. CLI RDEVTYPC,CLASDASD IS THIS A DASD @VA09038 00718120
  515. BNE CPSCC0 NO, ASSUME DEVICE THERE @VA09038 00718130
  516. LH R2,IOBRADD LOAD REAL ADDRESS @VA09038 00718140
  517. L R1,IOBIOER GET IOERBLOK POINTER @VA09038 00718150
  518. LTR R1,R1 IOERBLOK PRESENT? @VA09038 00718160
  519. BNZ CHKINT YES CHECK INT REQUIRED @VA12448 00718171
  520. BCT R6,HAVEIOB RETRY UNTIL RETRY COUNT REACHED @VA12448 00718172
  521. L R1,SAVEWRK9 GET DEV ADDR @VA12448 00718173
  522. CALL DMKCVTBH CONVERT ADDR BACK TO HEX @VA12448 00718174
  523. ST R1,SAVEWRK3 SAVE DEV ADDR @VA12448 00718175
  524. LA R1,SAVEWRK3+1 POINT AT ADDR @VA12448 00718176
  525. LA R0,3 LENGTH OF 3 @VA12448 00718177
  526. B CPS149 GO SEND RESERVED MSG @VA12448 00718178
  527. CHKINT EQU * @VA12448 00718179
  528. USING IOERBLOK,R1 @VA09038 00718180
  529. TM IOERDATA,X'40' INTERVENTION REQUIRED? @VA09038 00718190
  530. BNO CPSCC3 YES, BRANCH OUT @VA09038 00718200
  531. B CPSCC0 NO, ASSUME DEVICE THERE @VA09038 00718210
  532. DROP R1 @VA09038 00718220
  533. CKTAPE EQU * @VA09038 00718230
  534. L R1,IOBIOER GET THE IOERBLOK @VA03757 00720000
  535. LTR R1,R1 IS THERE ONE? @VA03757 00721000
  536. BZ FNDNPTH FIND NEXT PATH @V407438 00722000
  537. USING IOERBLOK,R1 ADDRESS IT @VA03757 00723000
  538. TM IOERDATA,X'40' INT REQ? @VA03757 00724000
  539. BZ FRETIOE2 NOPE, AGAIN NOT SERIOUS @VA03757 00725000
  540. TM IOERDATA+1,X'60' STATUS A & B ON? @VA03757 00726000
  541. BNZ FRETIOE2 SOMETHING ON, DEVICE THERE @VA03757 00727000
  542. CPSCC3 EQU * DEVICE DOES NOT EXIST @VA03757 00728000
  543. OI IOBSTAT,IOBCC3 MAKE SURE BOTH BITS ARE ON @VA03757 00729000
  544. OC RCUSTAT(1),IOBMISC2+3 RESET CU & CU -> CH STATUS@V407438 00730000
  545. OC RDEVSTAT(1),IOBMISC2+2 RESET THE DEVICE STATUS @V407438 00731000
  546. B FRETIOER AND RETURN THE IOERBLOK @VA03757 00732000
  547. SPACE 3 00733000
  548. ERRORCH EQU * @VA12977 00733050
  549. L R1,IOBIOER IOER BLOCK @VA12977 00733100
  550. LTR R1,R1 IOERBLOK ? @VA12977 00733150
  551. BZ NOIOER NO @VA12977 00733200
  552. LA R0,IOERSIZE @VA12977 00733250
  553. AH R0,IOEREXT-IOERBLOK(,R1) . . .PLUS EXTENSION @VA15139 00733260
  554. * SIZE 00733261
  555. CALL DMKFRET @VA12977 00733300
  556. L R15,CPEXR15 RESTORE COUNT @VA12977 00733350
  557. NOIOER EQU * @VA12977 00733400
  558. BCTR R15,0 DECREMENT @VA12977 00733450
  559. LTR R15,R15 10 CHANNEL ERRORS ? @VA12977 00733500
  560. BZ CPS60X YES, SEND MESSAGE @VA12977 00733550
  561. XC IOBCSW(8),IOBCSW CLEAR CSW @VA12977 00733600
  562. NI IOBSTAT,X'FF'-IOBCC3 CCODE OFF @VA12977 00733650
  563. B RETRYCH @VA12977 00733700
  564. SPACE 00733750
  565. CPSCC0 EQU * HERE IF DEVICE EXISTS @VA03757 00734000
  566. SWITCH ENSURE RUNNING ON MAIN PROCESSOR @V407595 00735000
  567. CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS @VA03757 00736000
  568. BNE CONT9 NO, CONTINUE @VA03757 00737000
  569. TM RDEVTYPE,TYPBSC IS THIS A BISYNC LINE ? @VA03757 00738000
  570. BZ CONT9 NO, CONTINUE @VA03757 00739000
  571. NI RDEVSTAT,X'FF'-RDEVNRDY CLEAR THE NOT READY FLAG@VA03757 00740000
  572. CONT9 EQU * @VA03757 00741000
  573. CLI RDEVTYPC,CLASTAPE TAPE DEVICE? @V407466 00742000
  574. BNE CONT10 NO, LOOK FOR DASD @V407466 00743000
  575. TM CPSBITS,LBLREAD TAPE REL. BY DIFF. CCU @V407466 00744000
  576. BO FRETIOER YES, NO NEED TO DO AGAIN @V407466 00745000
  577. OI CPSBITS,LBLREAD IND. RELEASE CCW @V407466 00746000
  578. LA R0,CPEXSIZE ACQUIRE CPEXBLOK TO GIVE @V407466 00747000
  579. CALL DMKFREE CONTROL TO DMKTAPRL TO @V407466 00748000
  580. LR R5,R1 PERFORM TAPE 'RELEASE' @V407466 00749000
  581. XC CPEXBLOK(16),CPEXBLOK CLEAR BLOCK @V407466 00750000
  582. L R1,=A(DMKTAPRL) ENTRY POINT TO PERFORM REL. @V407466 00751000
  583. TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK) ENSURE DMKTAP @V407466 00752000
  584. * IS IN STORAGE AND LOCKED FOR DURATION OF 'RELEASE' 00753000
  585. LR R1,R2 SAVE REAL ADDR OF DMKTAPRL @VA07358 00754000
  586. LH R2,IOBRADD DEVICE ADDRESS @V407466 00755000
  587. STM R0,R15,CPEXREGS STORE CALLER'S REGISTERS @V407466 00756000
  588. ST R1,CPEXADD EXECUTION ADDR IN CPEXBLOK @V407466 00757000
  589. ST R1,CPEXR12 AND AS MODULE BASE ADDRESS @V407466 00758000
  590. MVC CPEXR11,ASYSVM STACK CPEXBLOK FOR SYSTEM @VA11960 00758100
  591. LR R1,R5 CPEXBLOK ADDR TO R1 FOR CALL @V407466 00759000
  592. L R5,IOBMISC RESTORE ORIG. CPEXBLOK ADDR @V407466 00760000
  593. CALL DMKSTKCP STACK CPEXBLOK @V407466 00761000
  594. B FRETIOER RELEASE IOERBLOK @V407466 00762000
  595. CONT10 CLI RDEVTYPC,CLASDASD DASD DEVICE? @V407466 00763000
  596. BNE FRETIOER NOPE, SKIP THE DUMMY INT @VA03757 00764000
  597. TM CPSBITS,LBLREAD LABEL PROCESSED BY DIFF CCU? @V407466 00765000
  598. BO FRETIOER YUP, BR. @V407438 00766000
  599. TM IOERDATA,X'40' INT REQUIRED? @VA12965 00766100
  600. BO FRETIOER YES, THEN LET ATTACH READ LABEL @VA12965 00766200
  601. OI CPSBITS,LBLREAD INDICATE LABEL PROCESSED @V407466 00767000
  602. TM RDEVFLAG,RDEVSYS+RDEVOWN PREVIOUSLY MOUNTED ? @VA03757 00768000
  603. BNZ *+8 YES - DON'T RESET FLAG @VA03757 00769000
  604. OI RDEVFLAG,RDEVMOUT MOUNT THE DEVICE @VA03757 00770000
  605. LA R0,IOBSIZE GET AN IOB FOR THE DUMMY @VA03757 00771000
  606. CALL DMKFREE DEV END I/O INTERRUPT @VA03757 00772000
  607. LR R3,R10 SAVE THE ADDR OF THE TIO IOB @VA03757 00773000
  608. LR R10,R1 ADDRESS THE DE IOB @VA03757 00774000
  609. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IT OUT @VA03757 00775000
  610. ST R10,IOBLINK LINK TO SELF @VA03757 00776000
  611. MVC IOBRADD(2),IOBRADD-IOBLOK(R3) SETUP DEV ADD @VA03757 00777000
  612. L R2,ASYSVM SET USER TO SYSTEM @VA03757 00778000
  613. ST R2,IOBUSER ... @VA03757 00779000
  614. L R2,=A(DMKDSBRD) AIM AT DASD FOR LABEL @VA08187 00780000
  615. ST R2,IOBIRA READING @VA03757 00781000
  616. MVI IOBCSW+4,DE INDICATE AN UNSOL INT. @VA03757 00782000
  617. OI IOBSPEC,IOBUNSL FLAG AS UNSOLICITED INT @VA03757 00783000
  618. CALL DMKSTKIO GO STACK THE DE IOB @VA03757 00784000
  619. LR R10,R3 RE-ADDRESS THE TIO IOB @VA03757 00785000
  620. CLI RDEVTYPE,TYP2305 SPECIAL HANDLING NEEDED? @VA03757 00786000
  621. BE VRY2305 YES - GO TO IT @VA03757 00787000
  622. FRETIOER EQU * @VA03757 00788000
  623. L R1,IOBIOER GET THE IOERBLOK @VA03757 00789000
  624. LTR R1,R1 IS THERE ONE? @VA03757 00790000
  625. BZ TESTCC3 NOPE, THEN DON'T FRET @VA03757 00791000
  626. FRETIOE2 EQU * RELEASE THE IOERBLOK @VA03757 00792000
  627. LA R0,IOERSIZE BASIC SIZE IN DBL-WDS @VA03757 00793000
  628. AH R0,IOEREXT . . .PLUS EXTENSION SIZE @VA03757 00794000
  629. CALL DMKFRET AND RETURN IT @VA03757 00795000
  630. DROP R1 @VA03757 00796000
  631. TESTCC3 TM IOBSTAT,IOBCC3 IS THE DEVICE THERE? @VA03757 00797000
  632. BO NOCCU NOT BY THAT PATH NAME, BR. @V407438 00798000
  633. TM RDEVTYPC,CLASDASD+CLASTAPE IS IT DASD OR TAPE? @V407438 00799000
  634. BZ VARYNDEV NOPE, CONTINUE WITH NEXT DEVICE @V407438 00800000
  635. FNDNPTH CALL DMKSCNNP YUP, THEN FIND THE NEXT PATH @V407438 00801000
  636. BZ VARYON GOT NEXT PATH, GO PROCESS IT @V407438 00802000
  637. NI CPSBITS,X'FF'-LBLREAD DONE WITH THIS DEVICE @V407466 00803000
  638. TM RDEVSTAT,RDEVDISA DEVICE ONLINE BY ANOTHER PATH?@V407438 00804000
  639. BZ VARYNDEV YES, GO PROCESS NEXT DEVICE @V407438 00805000
  640. B CPS040 NOPE, SEND MSG AND CONTINUE @V407438 00806000
  641. SPACE 00807000
  642. NOCCU TM RDEVTYPC,CLASDASD+CLASTAPE IS IT DASD OR TAPE? @V407438 00808000
  643. BNZ FNDNPTH YES, GO FIND NEXT PATH TO DEVICE @V407438 00809000
  644. B CPS040 SEND MSG AND CONTINUE @V407438 00810000
  645. SPACE 00811000
  646. FRETIOB LA R0,IOBSIZE . . . @VA03757 00812000
  647. CALL DMKFRET . . . @VA03757 00813000
  648. DROP R10 @VA03757 00814000
  649. SLR R10,R10 CLEAR R10 TO IND. NO IOBLOK @V407466 00815000
  650. LA R0,CPEXSIZE GET SIZE OF CPEXBLOK @VA03757 00816000
  651. LR R1,R5 GET ADDR OF CPEXBLOK @VA03757 00817000
  652. CALL DMKFRET GET RID OF IT @VA03757 00818000
  653. DROP R5 @VA03757 00819000
  654. LR R1,R2 @VA03757 00820000
  655. BR R3 FIRE OFF TO DESTINATION @VA03757 00821000
  656. SPACE 2 00822000
  657. VRY2305 EQU * @VA03757 00823000
  658. L R1,SAVEWRK9 GET 'CUU' FORM ADDRESS @VA04578 00824000
  659. LA R4,7 NUMBER OF REMAINING ADDRS @VA03757 00825000
  660. VON2305 EQU * @VA03757 00826000
  661. LA R1,1(,R1) ADD 1 FOR NEXT ADDRESS @VA03757 00827000
  662. CALL DMKSCNRU GO GET THE CTL BLOKS @VA03757 00828000
  663. NI RDEVSTAT,255-RDEVDISA MARK DEVICE ONLINE @VA03757 00829000
  664. BCT R4,VON2305 DO ALL REMAINING EXPOSURES @VA03757 00830000
  665. NI CPSBITS,X'FF'-LBLREAD DONE WITH THIS DEVICE @VA11530 00831100
  666. USING IOBLOK,R10 IOB ADDRESSABILITY @V407466 00832000
  667. TM CPSBITS,RANGE RANGE PROCESSING @V407466 00833000
  668. BO UPADDR INCREM PAST EXPOSURE 0 @V407466 00834000
  669. L R1,SAVEWRK9 GET ADDR OF EXPOSURE 0 @VA04578 00835000
  670. SCNRU CALL DMKSCNRU GET THE BLOKS BACK @VA07283 00836000
  671. LR R4,R1 SAVE DEVICE ADDRESS TEMPORARILY @VA07283 00837000
  672. USING IOERBLOK,R1 ADDRESSABILITY 00838000
  673. L R1,IOBIOER GET THE IOERBLOK ADDRESS @VA07283 00839000
  674. LTR R1,R1 IS THERE ONE? @VA07283 00840000
  675. BZ CC3TST NOPE, THEN DON'T FRET @V407466 00841000
  676. LA R0,IOERSIZE BASIC SIZE IN DBL-WDS @V407466 00842000
  677. AH R0,IOEREXT ... PLUS EXTENSION SIZE @V407466 00843000
  678. CALL DMKFRET AND RETURN IT @V407466 00844000
  679. CC3TST LR R1,R4 RESTORE DEVICE ADDRESS @VA07283 00845000
  680. TM IOBSTAT,IOBCC3 IS THE DEVICE THERE? @VA07283 00846000
  681. BO CPS040 DEVICE DOES NOT EXIST MESSAGE @V407466 00847000
  682. B CONVERT OTHERWISE CONVERT ADDRESS @V407466 00848000
  683. DROP R10 @V407466 00849000
  684. DROP R1 @V407466 00850000
  685. UPADDR LR R4,R1 SAVE LAST EXP. ADDR @V407466 00851000
  686. L R1,SAVEWRK9 EXP. 0 ADDR @V407466 00852000
  687. ST R4,SAVEWRK9 RANGE PROC. ON EXP. 0 ADDR ONLY @V407466 00853000
  688. B SCNRU GET BLOKS BACK @V407466 00854000
  689. EJECT 00855000
  690. VARYOFF EQU * @V407595 00856000
  691. SWITCH ENSURE RUNNING ON MAIN PROCESSOR @V407595 00857000
  692. TM RDEVSTAT,RDEVDED DEDICATED DEVICE ? @V407595 00858000
  693. BO DEVDED YES, CAN'T FIDDLE WITH IT @VA03757 00859000
  694. TM RDEVSTAT,RDEVDISA OFFLINE ALREADY? @VA03757 00860000
  695. BO VARYNDEV YES, DONE HERE, GET NEXT @VA03757 00861000
  696. TM RDEVSTAT,RDEVBUSY+RDEVSCED BUSY OR SCHEDULED? @VA03757 00862000
  697. BNZ CPS143 YES, CANT TAKE IT THEN... @VA03757 00863000
  698. TM RDEVTYPC,CLASTERM+CLASGRAF MAYBE VIRT CON? @VA03757 00864000
  699. BZ CHEKUR NO - CHECK UR @VA03757 00865000
  700. TM RDEVTYPE,TYPBSC IS THIS A BISYNC LINE ? @VA03757 00866000
  701. BZ CONTN NO, BYPASS @VA03757 00867000
  702. TM RDEVSTAT,RDEVRSVD IS BISYNC LINE IN USE BY @VA03757 00868000
  703. * SYSTEM 00869000
  704. BO ENABERR YES, ... @VA03757 00870000
  705. B TURNOFF GO VARY OFFLINE @VA03757 00871000
  706. CONTN EQU * @VA03757 00872000
  707. TM RDEVFLAG,RDEVENAB ENABLED ???? @VA03757 00873000
  708. BO ENABERR YES - CAN'T VARY OFF @VA03757 00874000
  709. B TURNOFF OK TO VARY OFF -- @VA03757 00875000
  710. SPACE 00876000
  711. CHEKUR EQU * @VA03757 00877000
  712. TM RDEVTYPC,CLASURI+CLASURO IS THIS SPOOL DEVICE @VA03757 00878000
  713. BZ CHEKTAPE NO, GO CHECK FOR TAPE DEVICE @VA03757 00879000
  714. TM RDEVFLAG,RDEVDRAN DRAIN FLAG ON ???? @VA03757 00880000
  715. BZ NOTDRAN NO - CAN'T VARY ACTIVE SPOOLING @VA03757 00881000
  716. * DEV. OFF 00882000
  717. L R0,RDEVSPL MAY BE DRAINED BUT STILL ACTIVE @VA03757 00883000
  718. LTR R0,R0 IS IT ???? @VA03757 00884000
  719. BZ TURNOFF NO - GO AHEAD AND VARY IT OFF @VA03757 00885000
  720. EJECT 00886000
  721. NOTDRAN BAL R3,TSTRANGE RANGE BEING PROCESSED? @V407466 00887000
  722. L R1,SAVEWRK9 LOAD DEVICE ADDR FOR ERROR @V407466 00888000
  723. BAL R3,GETYPE GET TYPE AND ADDR IN SAVEWRK2 @V407466 00889000
  724. LA R0,8 FIELD LENGTH @VA03757 00890000
  725. LA R1,SAVEWRK2 FIELD ADDRESS @VA03757 00891000
  726. B CPS142 GO SEND ERROR MESSAGE @VA03757 00892000
  727. SPACE 3 00893000
  728. CHEKTAPE CLI RDEVTYPC,CLASTAPE IS THIS A TAPE DEVICE ? @VA03757 00894000
  729. BNE CHEKDASD NO - TRY DASD DEVICE @VA03757 00895000
  730. TM RDEVFLAG,RDEVSYS IS THIS TAPE IN USE ? @VA03757 00896000
  731. BO CPS143 YES - ERROR MESSAGE @VA03757 00897000
  732. TURNOFF CLC RDEVTYPC(2),P3800 IS IT A 3800 ? @V60B9BA 00898000
  733. BNE TURNOFF2 I GUESS IT ISN'T @V60B9BA 00899000
  734. * UNLOAD THE ERROR LOG BUFFER @V60B9BA 00900000
  735. LA R0,IOBSIZE GET A DUMMY IOB @V60B9BA 00901000
  736. CALL DMKFREE GO GET IT @V60B9BA 00902000
  737. XC 0(IOBSIZE*8,R1),0(R1) GO AND CLEAR IT @V60B9BA 00903000
  738. LR R10,R1 INTO R10 FOR DMKRSESD @V60B9BA 00904000
  739. CALL DMKRSESD UNLOAD THE ERROR LOG @V60B9BA 00905000
  740. CALL DMKFRET FRET THE DUMMY IOBLOK @V60B9BA 00906000
  741. * CLEAR THE DELAYED PURGE QUEUE @V60B9BA 00907000
  742. TRYNXTF L R7,RDEVDELP GET THE DELAYED PURGE ANCHOR @V60B9BA 00908000
  743. LTR R7,R7 ANY FILES LEFT TO PURGE? @V60B9BA 00909000
  744. BZ TURNOFF2 NOTHING TO PURGE IF ZERO @V60B9BA 00910000
  745. MVC RDEVDELP,0(R7) NEXT IS NOW FIRST @V60B9BA 00911000
  746. CALL DMKSPLDL GO AND DELETE THE SPOOL FILE @V60B9BA 00912000
  747. B TRYNXTF TRY THE NEXT ONE @V60B9BA 00913000
  748. SPACE 3 @V60B9BA 00914000
  749. TURNOFF2 OI RDEVSTAT,RDEVDISA MAKE DEVICE UNAVAILABLE @V60B9BA 00915000
  750. TESTSDR1 ICM R15,15,RDEVCTRS PICK UP ADDRESS OF SDRBLOK @VA03757 00916000
  751. BNP VARYNDEV NO SDRBLOK, GET NEXT DEVICE @VA03757 00917000
  752. CALL DMKIOESR GO RECORD OBR SYNCHRONOUSLY @VA03757 00918000
  753. B VARYNDEV GET NEXT DEVICE @VA09265 00918100
  754. SPACE 3 00918200
  755. CHEKDASD EQU * CHECK FOR DASD DEVICES @VA03757 00919000
  756. CLI RDEVTYPC,CLASDASD IS THIS A DASD DEVICE ? @VA03757 00920000
  757. BNE CHEKSPEC NO -- @VA03757 00921000
  758. TM RDEVFLAG,RDEVOWN CP-OWNED DEVICE ? @VA03757 00922000
  759. BO CPOWNERR IF IT IS, CAN'T VARY OFF @VA03757 00923000
  760. TM RDEVFLAG,RDEVSYS SYSTEM DEVICE ????? @VA03757 00924000
  761. BZ CKMULT NO - CHECK FOR 2305 @VA03757 00925000
  762. LH R4,RDEVLNKS ANY LINKS TO DASD ???? @VA03757 00926000
  763. LTR R4,R4 ....... @VA03757 00927000
  764. BNZ LINKERR CAN'T VARY OFF IF USERS LINKED @VA03757 00928000
  765. * TO IT 00929000
  766. B CPS143 Leave alone - attached to system HRC039DK 00929100
  767. CKMULT L R1,SAVEWRK9 GET 'CUU' FORM ADDR @VA04578 00930000
  768. LA R4,1 ASSUME SINGLE EXPOSURE DEVICE @VA04578 00931000
  769. CLI RDEVTYPE,TYP2305 IS THIS A 2305? @VA04578 00932000
  770. BNE DASDOFF NO. LOOP COUNTER IS CORRECT @VA04578 00933000
  771. LA R4,8 NUMBER OF EXPOSURES TO VARY IS 8 @VA04578 00934000
  772. LA R1,7(,R1) CONTRUCT HIGHEST EXPOSURE ADDRESS@VA04578 00935000
  773. OFFLOOP CALL DMKSCNRU GO GET THE CONTROL BLOKS @VA04578 00936000
  774. TM RDEVSTAT,RDEVBUSY+RDEVSCED IS EXPOSURE BUSY? @VA04578 00937000
  775. BNZ BCK2305 YES. CAN'T VARY DEVICE OFF @VA04578 00938000
  776. BCTR R1,0 SUBTRACT 1 TO DERIVE NEXT ADDRESS@VA04578 00939000
  777. DASDOFF OI RDEVSTAT,RDEVDISA MARK DEVICE OFFLINE @VA04578 00940000
  778. TM RDEVFTR,SYSVIRT+VIRTUAL IS THIS MSS? @VA10877 00940100
  779. BZ N3330V NO DEMOUNT NECESSARY @VA10877 00940150
  780. TM RDEVFLAG,RDEVSEL SELECTED FOR MOUNT? @VA10877 00940200
  781. BO N3330V DO NOT DEMOUNT @VA10877 00940250
  782. CLC RDEVSER(6),BLANKS IS A VOL. MOUNTED @VA10877 00940300
  783. BE N3330V NOTHING TO DEMOUNT @VA10877 00940350
  784. TM PSAMSS,MSSPRES IS THE CPSERVER THERE? @VA10877 00940400
  785. BZ DMNTFAIL CAN'T BLANK THE VOLSER @VA10877 00940450
  786. CALL DMKSSSDE GO TO DEMOUNT VOLUME @VA10877 00940500
  787. LTR R0,R0 DEMOUNT GO OK? @VA10877 00940550
  788. BNZ DMNTFAIL LEAVE VOLSER IN RDEVBLOK FOR @VA10877 00940600
  789. * RECOVERY 00940650
  790. N3330V EQU * @VA10877 00940700
  791. BCT R4,OFFLOOP PROCESS THE REMAINING EXPOSURES @VA04578 00941000
  792. MVC RDEVSER(6),BLANKS BLANKOUT VOLUME SERIAL FIELD @VA04578 00942000
  793. DMNTFAIL EQU * @VA10877 00942100
  794. B VARYNDEV SEE IF THERE'S MORE WORK @VA03757 00943000
  795. SPACE 00944000
  796. BCK2305 EQU * BACK OUT OF 2305 VARY OFF @VA03757 00945000
  797. L R1,SAVEWRK9 GET ADDRESS OF EXPOSURE 0 @VA04719 00946000
  798. LA R4,8 AND NUMBER OF EXPOSURES @VA03757 00947000
  799. BOF2305 EQU * @VA03757 00948000
  800. CALL DMKSCNRU GO FIND THE CTL BLOKS @VA03757 00949000
  801. NI RDEVSTAT,255-RDEVDISA BRING BACK THE DEVICE @VA03757 00950000
  802. LA R1,1(,R1) ADD 1 FOR NEXT ADDRESS @VA03757 00951000
  803. BCT R4,BOF2305 DO 'EM ALL @VA03757 00952000
  804. L R1,SAVEWRK9 GET EXPOSURE 0 AGAIN @VA04578 00953000
  805. CALL DMKSCNRU AND THEN THE BLOKS @VA03757 00954000
  806. B CPS143 GO TELL HIM THE BOX IS BUSY @VA03757 00955000
  807. SPACE 00956000
  808. CHEKSPEC EQU * CHECK FOR SPECIAL-CLASS DEVICES @VA03757 00957000
  809. CLI RDEVTYPE,TYP3705 REAL 370X ? @VA03757 00958000
  810. BNE TURNOFF NO -- JUST VARY IT OFFLINE @VA03757 00959000
  811. TM RDEVSTAT,RDEVRSVD IN USE BY SYSTEM? @VA03757 00960000
  812. BO CPS143 YES, SO INFORM USER @VA03757 00961000
  813. TM RDEVFLAG,RDEVRCVY+RDEVEPLN CHECK FURTHER @VA03757 00962000
  814. BNZ CPS143 SYSTEM HAS IT @VA03757 00963000
  815. TM RDEVFLAG,RDEVLNCP LOADED WITH NCP? @VA03757 00964000
  816. BZ NONCPEP NOPE @VA03757 00965000
  817. LH R0,RDEVMAX MAX RESOURCE ID @VA03757 00966000
  818. MH R0,=AL2(NICSIZE) SIZE IN DOUBLE WORDS @VA03757 00967000
  819. AH R0,=AL2(NICSIZE) PLUS ONE FOR NO. OF NICBLOKS @VA03757 00968000
  820. L R1,RDEVNICL ADDRESS OF THE LIST @VA03757 00969000
  821. CALL DMKFRET RETURN THE STORAGE @VA03757 00970000
  822. MVC RDEVNICL(4),ZEROES NO MORE ACTIVE @VA03757 00971000
  823. NONCPEP NI RDEVFLAG,255-(RDEVLNCP+RDEVLCEP) ... @VA03757 00972000
  824. B TURNOFF @VA03757 00973000
  825. EJECT 00974000
  826. SPACE 00975000
  827. DEVDED BAL R3,TSTRANGE RANGE BEING PROCESSED? @V407466 00976000
  828. L R1,SAVEWRK9 LOAD DEVICE ADDR FOR ERROR MSG @V407466 00977000
  829. BAL R3,GETYPE GET TYPE AND ADDR IN SAVEWRK2 @V407466 00978000
  830. MVI SAVEWRK4,X'00' INSERT SEPARATER @VA03757 00979000
  831. L R1,RDEVUSER LOAD USERS VMBLOK ADDRESS @VA03757 00980000
  832. DROP R11 @VA03757 00981000
  833. USING VMBLOK,R1 @VA03757 00982000
  834. MVC SAVEWRK4+1(8),VMUSER USERID TO MESSAGE @VA03757 00983000
  835. DROP R1 @VA03757 00984000
  836. USING VMBLOK,R11 @VA03757 00985000
  837. LA R0,17 FIELD LENGTH @VA03757 00986000
  838. LA R1,SAVEWRK2 ADDRESS OF FIELD @VA03757 00987000
  839. B CPS140 SEND ATT ERROR MESSAGE @VA03757 00988000
  840. SPACE 00989000
  841. LINKERR EQU * SET UP FOR CPS124 ERROR @VA03757 00990000
  842. BAL R3,TSTRANGE RANGE BEING PROCESSED? @V407466 00991000
  843. BAL R3,BLDADR GET REAL ADDRESS @V407466 00992000
  844. N R1,X40FFS BLANK HIGH BYTE @VA03757 00993000
  845. ST R1,SAVEWRK2 STASH IT @VA03757 00994000
  846. LR R1,R4 NUMBER OF USER LINKED @VA03757 00995000
  847. CALL DMKCVTBD CONVERT THE NUMBER @VA03757 00996000
  848. STCM R1,7,SAVEWRK3+1 SHOULD ONLY REQUIRE THREE DIGITS@VA03757 00997000
  849. MVI SAVEWRK3,X'00' INSERT SEP. @VA03757 00998000
  850. LA R2,2 BLANK OUT HIGH ORDER ZEROS @VA03757 00999000
  851. CLI SAVEWRK3+1,X'F0' EBCDIC ZERO ??? @VA03757 01000000
  852. BNE SEND124 NO - GO SEND ERROR @VA03757 01001000
  853. MVI SAVEWRK3+1,X'40' BLANK IT @VA03757 01002000
  854. CLI SAVEWRK3+2,X'F0' NEXT ONE ??? @VA03757 01003000
  855. BNE SEND124 ... @VA03757 01004000
  856. MVI SAVEWRK3+2,X'40' ... @VA03757 01005000
  857. SEND124 LA R1,SAVEWRK2 @VA03757 01006000
  858. LA R0,8 FIELD LENGTH @VA03757 01007000
  859. B CPS124 SEND THE ERROR MESSAGE @VA03757 01008000
  860. SPACE 01009000
  861. CPOWNERR EQU * SET UP FOR CPS123 ERROR MESSAGE @VA03757 01010000
  862. BAL R3,TSTRANGE RANGE BEING PROCESSED? @V407466 01011000
  863. BAL R3,BLDADR GET REAL ADDRESS @V407466 01012000
  864. STCM R1,7,SAVEWRK2 STORE THE ADDRESS @VA03757 01013000
  865. LA R0,3 FIELD LENGTH @VA03757 01014000
  866. LA R1,SAVEWRK2 ADDRESS @VA03757 01015000
  867. B CPS123 SEND IT @VA03757 01016000
  868. SPACE 01017000
  869. ENABERR EQU * @VA03757 01018000
  870. BAL R3,TSTRANGE RANGE BEING PROCESSED? @V407466 01019000
  871. L R1,SAVEWRK9 RETRIEVE DEV. ADDR @VA03757 01020000
  872. BAL R3,GETYPE GET TYPE AND ADDR IN SAVEWRK2 @V407466 01021000
  873. LA R0,8 FIELD LENGTH @VA03757 01022000
  874. LA R1,SAVEWRK2 FIELD ADDRESS @VA03757 01023000
  875. B CPS049 SEND THE ERROR MESSAGE @VA03757 01024000
  876. SPACE 01025000
  877. BLDADR L R1,SAVEWRK9 GET THE CMD LINE ADDRESS (CCU) @V407438 01026000
  878. CALL DMKCVTBH CONVERT IT TO HEX @VA03757 01027000
  879. BR R3 RETURN @V407466 01028000
  880. SPACE 01029000
  881. GETYPE EQU * DEVELOP TYPE AND RADDR @VA03757 01030000
  882. CALL DMKCVTBH GET DEVICE ADDRESS IN HEX @VA03757 01031000
  883. ST R1,SAVEWRK3 SAVE ADDRESS IN MESSAGE @VA03757 01032000
  884. MVI SAVEWRK3,X'00' PUT IN SEPARATER @VA03757 01033000
  885. CALL DMKSCNRN GET REAL NAME @VA03757 01034000
  886. ST R1,SAVEWRK2 SAVE NAME IN MESSAGE AREA @VA03757 01035000
  887. BR R3 RETURN @V407466 01036000
  888. SPACE 1 01037000
  889. SENDMSG EQU * @VA03757 01038000
  890. CALL DMKQCNWT,PARM=NORET SEND THE MESSAGE @VA03757 01039000
  891. L R9,SAVEWRK7 MSG AREA ADDR @V407466 01040000
  892. XC CPSADD1(MSGSIZE*8),CPSADD1 CLEAR MSG AREA @V407466 01041000
  893. SKIPMSG TM CPSBITS,VARYERR ERROR MESSAGE PENDING ? @V407466 01042000
  894. BCR 1,R3 YES, RETURN TO ISSUE ERROR MSG @V407466 01043000
  895. IOBFRET TM CPSBITS,ON VARY ONLINE REQUEST @V407466 01044000
  896. BO IOBADDR REL. IOBLOK IF NECESSARY @V407466 01045000
  897. CPSEXIT L R1,SAVEWRK7 ADDR OF MSG BUFFER @V407466 01046000
  898. LA R0,MSGSIZE SIZE OF BUFFER @V407466 01047000
  899. CALL DMKFRET RELEASE STORAGE @V407466 01048000
  900. TM CPSBITS,RANGE PROCESSING A RANGE? @VA12646 01048040
  901. BNO ONEDEV NO, CONTINUE @VA12646 01048080
  902. LH R1,RADDR1 GET STARTING ADDRESS OF RANGE @VA12646 01048120
  903. LH R4,RADDR2 GET ENDING ADDRESS OF RANGE @VA12646 01048160
  904. B GETBLOKS @VA12646 01048200
  905. ONEDEV DS 0H @VA12646 01048240
  906. L R9,SAVER9 GET COMMAND LINE POINTER @VA15100 01048260
  907. USING BUFFER,R9 @VA15100 01048280
  908. L R14,BUFNXT GET COMMAND POINTER @VA15100 01048300
  909. L R15,SAVEWRK6 GET CNT AT ENTRY @VA15100 01048320
  910. LA R15,0(,R15) Strip top byte HRC041DK 01048330
  911. A R14,BUFCNT ADD RESIDUAL COUNT @VA15100 01048340
  912. SR R14,R15 SUB COUNT AT ENTRY @VA15100 01048360
  913. STM R14,R15,BUFNXT STORE CMD AND COUNT @VA15100 01048380
  914. DROP R9 @VA15100 01048400
  915. CALL DMKSCNFD POINT TO ON OFF OPTION @VA15100 01048420
  916. TESTMULT DS 0H @VA15100 01048440
  917. L R9,SAVER9 LOAD SAVED CMD POINTER @VA15100 01048460
  918. CALL DMKSCNFD FIND NEXT PARM @VA15100 01048480
  919. BNZ PNDRESET NO MORE TO RESET @VA15100 01048500
  920. CALL DMKCVTHB CONVERT TO DEVICE ADDRESS @VA15100 01048520
  921. ST R1,SAVEWRK9 SAVE FOR POSS ERROR MSG @VA15100 01048540
  922. GETBLOKS DS 0H @VA15100 01048560
  923. CALL DMKSCNRU FIND DEV CONTROL BLOCKS @VA15100 01048580
  924. BNZ TESTFINI BRANCH IF NONE FOUND @VA15100 01048600
  925. TM RDEVSTA3,RDEVPBYP MULT VARY FOR SAME DEV ? @VA15100 01048620
  926. BO RESETBYP YES, DON'T RESET PENDING @VA15100 01048640
  927. NI RDEVSTA3,X'FF'-RDEVPEND RESET VARY PENDING @VA15100 01048660
  928. RESETBYP DS 0H @VA15100 01048680
  929. NI RDEVSTA3,X'FF'-RDEVPBYP TURN OFF VARY BYPASS @VA15100 01048700
  930. TESTFINI DS 0H @VA15100 01048720
  931. TM CPSBITS,RANGE PROCESSING A RANGE ? @VA15100 01048740
  932. BNO TESTMULT NO, SEE IF MULT DEVICES @VA15100 01048760
  933. CLR R1,R4 LAST DEVICE ? @VA15100 01048780
  934. BNL PNDRESET YES, BRANCH @VA15100 01048800
  935. LA R1,1(0,R1) GET NEXT DEVICE ADDRESS @VA15100 01048820
  936. B GETBLOKS GO FIND BLOCKS FOR DEV @VA15100 01048840
  937. PNDRESET DS 0H @VA15100 01048860
  938. SLR R2,R2 CLEAR R2 @V407466 01049000
  939. IC R2,LASTRC ERROR NUMBER OF LAST MSG @V407466 01050000
  940. ST R2,SAVER2 RETURN CODE IN USER'S R2 @V407466 01051000
  941. EXIT RETURN TO DMKCFM @V407466 01052000
  942. DROP R6,R7,R8 @VA03757 01053000
  943. IOBADDR LTR R1,R10 ANY IOBLOK REMAINING @V407466 01054000
  944. BZ CPSEXIT NO, JUST EXIT @V407466 01055000
  945. LA R3,CPSEXIT EXIT ADDRESS @V407466 01056000
  946. B FRETIOB RELEASE IOBLOK @V407466 01057000
  947. SPACE 01058000
  948. COMPOFF CLC 0(0,R1),=C'OFFLINE ' EXECUTED COMPARE @VA03757 01059000
  949. COMPON CLC 0(0,R1),=C'ONLINE ' @VA03757 01060000
  950. DASH DC C'-' RANGE SCAN CHARACTER @V407466 01061000
  951. P3800 DC AL1(CLASURO,TYP3800) FOR COMPARISONS @V60B9BA 01062000
  952. SPACE 01063000
  953. BLANK EQU X'40' @V407466 01064000
  954. CHARDASH EQU C'-' REANGE DELIMITER @V407466 01065000
  955. BIN0 EQU X'00' RESET SWITCH @V407466 01066000
  956. SPACE 2 01067000
  957. MSG DSECT @V407466 01068000
  958. CPSADD1 DS XL3 FIRST ADDRESS IN RANGE @V407466 01069000
  959. CPSDEL1 DS CL1 RANGE DELIMITER '-' @V407466 01070000
  960. CPSADD2 DS XL3 SECOND ADDR IN RANGE @V407466 01071000
  961. CPSDEL2 DS CL1 MSG DELIMITER @V407466 01072000
  962. CPSCON1 DS CL6 'VARIED' CONSTANT @V407466 01073000
  963. CPSDEL3 DS CL1 MSG DELIMITER @V407466 01074000
  964. CPSCON2 DS CL7 CONSTANT 'ONLINE/OFFLINE' @V407466 01075000
  965. CPSSIZE1 EQU *-CPSADD1 MSG LENGTH @V407466 01076000
  966. ORG CPSADD1 @V407466 01077000
  967. CPSMULT1 DS CL3 FIRST MULTIPLE ADDRESS @V407466 01078000
  968. CPSDEL4 DS CL1 MSG DELIMITER @V407466 01079000
  969. CPSCON3 DS CL6 CONSTANT 'VARIED' @V407466 01080000
  970. CPSDEL5 DS CL1 MSG DELIMITER @V407466 01081000
  971. CPSCON4 DS CL7 CONSTANT 'ONLINE/OFFLINE' @V407466 01082000
  972. CPSSIZE2 EQU *-CPSMULT1 MSG LENGTH @V407466 01083000
  973. DS 24D UP TO 47 MULTIPLE ADDRESSES @V407466 01084000
  974. MSGSIZE EQU (*-CPSMULT1+7)/8 BUFFER SIZE IN DBL. WORDS @V407466 01085000
  975. SPACE 2 01086000
  976. DMKCPS CSECT , RE-ENTER MAIN CSECT @V407466 01087000
  977. EJECT 01088000
  978. *. 01089000
  979. * 01090000
  980. * SUBROUTINE NAME - 01091000
  981. * 01092000
  982. * DMKCPSH 01093000
  983. * 01094000
  984. * 01095000
  985. * FUNCTION - 01096000
  986. * 01097000
  987. * TO ISSUE A HIO TO THE SPECIFIED REAL DEVICE. 01098000
  988. * 01099000
  989. * 01100000
  990. * COMMAND FORMAT - 01101000
  991. * 01102000
  992. * +--------+---------+ 01103000
  993. * | HALT | RADDR | 01104000
  994. * | HALT | | 01105000
  995. * +--------+---------+ 01106000
  996. * 01107000
  997. * 01108000
  998. * OPERATION - 01109000
  999. * 01110000
  1000. * 1. CALL DMKSCNFD TO GET RADDR ARGUMENT. IF NONE IS FOUND, 01111000
  1001. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPS021E. 01112000
  1002. * 2. CALL DMKCVTHB TO CONVERT THE ADDRESS TO BINARY. IF THE 01113000
  1003. * CONVERT FAILS, CALL DMKERMSG TO SEND ERROR MESSAGE 01114000
  1004. * DMKCPS021E. 01115000
  1005. * 3. CALL DMKSCNRU TO LOCATE THE DEVICE BLOKS. IF NOT FOUND, 01116000
  1006. * CALL DMKERMSG TO SEND ERROR MESSAGE DMKCPS040E. 01117000
  1007. * 4. IF NO ACTIVE IOBLOK IS FOUND CALL DMKIOSQR TO 01118000
  1008. * SCHEDULE A HALT DEVICE. 01119000
  1009. * 5. IF THA ACTIVE IOBLOK IS CP GENERATED CALL 01120000
  1010. * DMKIOSHA TO HALT THE DEVICE. 01121000
  1011. * 6. IF NOT CP GENERATED CALL DMKCFPRD TO RESET THE VIRTUAL 01122000
  1012. * DEVICE AND SEND MSG DMKCPS114 TO THE VIRTUAL USER. 01123000
  1013. * 7. CALL DMKCFMBK TO PUT THE VIRTUAL USER IN CF MODE AND EXIT. 01124000
  1014. * 01125000
  1015. * RESPONSES - 01126000
  1016. * DEVICE HALTED 01127000
  1017. * 01128000
  1018. * ERROR MESSAGES - 01129000
  1019. * DMKCPS021E RADDR MISSING OR INVALID 01130000
  1020. * DMKCPS040E DEV (ADDR) DOES NOT EXIST 01131000
  1021. * DMKCPS144W (TYPE) (VADD) RESET BY (USERID) 01132000
  1022. * 01133000
  1023. *. 01134000
  1024. EJECT 01135000
  1025. DMKCPSH RELOC ISSUE HALT TO REAL DEVICE @VA03757 01136000
  1026. CALL DMKSCNFD GET REAL DEVICE ADDRESS @VA03757 01137000
  1027. BNZ CPS021NR NO ARGUMENTS, MSG021 W/ NO RETURN@V407466 01138000
  1028. CL R0,F3 CAN'T HAVE OVER THREE DIGIT @VA03757 01139000
  1029. * ADDRESS 01140000
  1030. BH CPS021NR BR IF IT IS, MSG021 W/ NO RETURN @V407466 01141000
  1031. CALL DMKCVTHB CONVERT ADDRESS @VA03757 01142000
  1032. BNZ CPS021NR INVALID ADDR, MSG021 W/ NO RETURN@V407466 01143000
  1033. CALL DMKSCNRU GET REAL DEVICE BLOKS @VA03757 01144000
  1034. BNZ CPS040NR NONEXIST. UNIT, MSG040 W/ NO RET.@V407466 01145000
  1035. USING RCHBLOK,R6 @VA03757 01146000
  1036. USING RCUBLOK,R7 @VA03757 01147000
  1037. USING RDEVBLOK,R8 @VA03757 01148000
  1038. USING IOBLOK,R10 @VA03757 01149000
  1039. SWITCH ENSURE RUNNING ON MAIN PROCESSOR @V407595 01150000
  1040. L R10,RDEVAIOB POINT TO THE ACTIVE IOB @VA03757 01151000
  1041. LTR R10,R10 ANY ACTIVE IOB ? @VA03757 01152000
  1042. BP TSTCPGEN YES- BRANCH @VA04182 01153000
  1043. CL R8,RDEVFIOB ANY IOB'S QUEUED (DEVICE BUSY) @VA04182 01154000
  1044. BE SCHEDULE NO- BRANCH @VA04182 01155000
  1045. L R10,RDEVFIOB GET FIRST QUEUED IOBLOK @VA04182 01156000
  1046. TM IOBFLAG,IOBCP CP GENERATED I/O? @V407438 01157000
  1047. BZ HALTVIRT NOPE, GO RESET THE VIRT DEVICE @V407438 01158000
  1048. TM IOBSTAT,IOBPATHF IS IT FIXED PATH ALREADY? @V407438 01159000
  1049. BO *+8 YES, THEN DONT CHANGE THE PATH @V407438 01160000
  1050. STH R1,IOBRADD SET PATH ADDR TO THAT OF COMMAND @V407438 01161000
  1051. SETPATHF OI IOBSTAT,IOBPATHF INDICATE FIXED PATH @V407438 01162000
  1052. CALL DMKIOSHA GO HALT THE ACTIVE DEVICE @V407438 01163000
  1053. B HALTEXIT AND RETURN TO THE CALLER @V407438 01164000
  1054. SPACE 01165000
  1055. TSTCPGEN TM IOBFLAG,IOBCP CP GENERATED I/O? @V407438 01166000
  1056. BO SETPATHF YES, FREEZE THE PATH & HALT I/O @V407438 01167000
  1057. SPACE 01168000
  1058. HALTVIRT EQU * @V407595 01169000
  1059. L R1,IOBUSER OBTAIN ADDRESS OF DEVICE OWNER @V407595 01170000
  1060. SWTCHVM SWAP ACCOUNTING TO DEVICE OWNER @V407595 01171000
  1061. XC RDEVIOER(4),RDEVIOER CLEAR IOERBLOK POINTER @VA03757 01172000
  1062. TM IOBFLAG,IOBHVC DIAG IO? (DMKDGD OR DMKGEN) @VA03757 01173000
  1063. BZ LOADVADD NOPE, BR. I/O STARTED VIA 'SIO' @V407438 01174000
  1064. L R8,VMDVSTRT POINT TO THE VIRT DEVICE BLOCK OF@VA03757 01175000
  1065. AL R8,IOBMISC THE DEVICE TO BE RESET @VA03757 01176000
  1066. CALL DMKSCNVD FIND THE VCU+VCH+DEVICE ADDRESS @VA03757 01177000
  1067. B SAVEVADD AND GO SAVE THE DEVICE ADDRESS @VA03757 01178000
  1068. LOADVADD LH R1,IOBVADD GET THE VIRT DEVICE ADD SAVED @VA03757 01179000
  1069. * BY VIO 01180000
  1070. CALL DMKSCNVU FIND THE VCH+VCU+VDEV BLOCKS @VA03757 01181000
  1071. BNZ CPS040NR NOT FOUND - GIVE MSG AND NORETURN@VA08979 01182100
  1072. SPACE 1 01183000
  1073. SAVEVADD CALL DMKCVTBH CONVERT THE VIRT DEVICE ADDRESS @VA03757 01184000
  1074. ST R1,SAVEWRK1 AND SAVE IT FOR THE MSG @VA03757 01185000
  1075. SPACE 1 01186000
  1076. CALL DMKCFPRD RESET THE VIRTUAL DEVICE @VA03757 01187000
  1077. LA R0,(L'CPS144+7)/8 GET A BUFFER FOR MSG CPS144 @VA03757 01188000
  1078. LR R3,R0 AND REMEMBER THE LENGTH FOR QCNWT@VA03757 01189000
  1079. CALL DMKFREE GET THE MSG BUFFER @VA03757 01190000
  1080. LR R5,R1 POINT TO THE BUFFER WITH R5 @VA03757 01191000
  1081. MVC 0(L'CPS144,R5),CPS144 MOVE THE MSG INTO THE BUFFER 01192000
  1082. CALL DMKSCNVN GET THE VIRT DEVICE TYPE @VA03757 01193000
  1083. ST R1,TYPE144(0,R5) AND SAVE IT IN THE MSG @VA03757 01194000
  1084. MVC VADD144(3,R5),SAVEWRK1+1 MOVE IN THE VIRT @VA03757 01195000
  1085. * DEVICE ADD 01196000
  1086. L R1,SAVER11 POINT TO THE CALLERS VM BLOCK AND@VA03757 01197000
  1087. MVC USER144(8,R5),VMUSER-VMBLOK(R1) MOVE IN THE @VA03757 01198000
  1088. * USER ID 01199000
  1089. LA R0,L'CPS144 LENGTH OF THE MSG @VA03757 01200000
  1090. LR R1,R5 POINTER TO THE MSG @VA03757 01201000
  1091. LA R2,DFRET+NORET+PRIORITY SET UP THE PARM FIELD @VA03757 01202000
  1092. CALL DMKQCNWT TYPE THE MSG (R3 IS SET) @VA03757 01203000
  1093. CALL DMKCFMBK PUT THE USER IN CF MODE @VA03757 01204000
  1094. L R1,SAVER11 OBTAIN ADDRESS OF CALLER @V407595 01205000
  1095. SWTCHVM SWAP ACCOUNTING BACK TO CALLER @V407595 01206000
  1096. B HALTEXIT RETURN TO THE CALLER @VA03757 01207000
  1097. SPACE 1 01208000
  1098. SCHEDULE LR R4,R1 SAVE PATH ADDRESS @VA14036 01209100
  1099. TM RDEVSTAT,RDEVDISA DEVICE OFFLINE ? @VA12963 01209140
  1100. BO FATAL YES, CANNOT PERFORM HALT @VA12963 01209190
  1101. TM RCUSTAT,RCUDISA CONTROL UNIT OFFLINE @VA12963 01209240
  1102. BO FATAL YES, CANNOT PERFORM HALT @VA12963 01209290
  1103. LA R1,RCUCHA ADDRESS OF FIRST CHANNEL @VA12963 01209340
  1104. LA R2,4 INDEX @VA12963 01209390
  1105. LA R3,RCUCHD ADDRESS OF LAST RCHBLOK @VA12963 01209440
  1106. NEXTCHA CL R6,0(R1) CHANNEL MATCH ? @VA12963 01209490
  1107. BE *+8 YES, CONTINUE @VA12963 01209540
  1108. BXLE R1,R2,NEXTCHA KEEP LOOKING @VA12963 01209590
  1109. LA R2,RCUCHA FIND CHANNEL INDEX @VA12963 01209640
  1110. SLR R1,R2 RELATIVE CHANNEL @VA12963 01209690
  1111. SRL R1,2 INDEX @VA12963 01209740
  1112. IC R1,DISATBL(R1) GET CU TO CH PATH @VA12963 01209790
  1113. EX R1,CUCHPTH AVAILABLE ? @VA12963 01209840
  1114. BO FATAL NO, CANNOT PERFORM HALT @VA12963 01209890
  1115. LA R0,IOBSIZE GET AN IOB FOR THIS OPERATION @V407438 01210000
  1116. CALL DMKFREE * @VA03757 01211000
  1117. LR R10,R1 POINT TO THE IOB @VA03757 01212000
  1118. XC IOBLOK(IOBSIZE*8),IOBLOK ZERO IT @VA03757 01213000
  1119. * (NOTE: "IOBLINK" FILLED IN BY DMKIOSQR) 01214000
  1120. STH R4,IOBRADD SET DEVICE PATH @VA14036 01215100
  1121. OI IOBSTAT,IOBPATHF INHIBIT ALTERNATE PATH @V407438 01216000
  1122. ST R11,IOBUSER * BUILD AN IOB TO SCHEDULE A @VA03757 01217000
  1123. LA R2,HALTRET * HALT DEVICE SO THAT THE DEVICE@VA03757 01218000
  1124. ST R2,IOBIRA * IS RESET. @VA03757 01219000
  1125. MVI IOBSPEC,IOBHIO * @VA03757 01220000
  1126. CALL DMKIOSQR GO HALT THE DEVICE @VA03757 01221000
  1127. LR R2,R12 REAL ADDRESS OF THIS PAGE TO GR2 @VA03757 01222000
  1128. CALL DMKPTRLK LOCK THE PAGE DURING I/O @VA03757 01223000
  1129. SPACE 1 01224000
  1130. HALTEXIT DS 0H @VA11399 01225010
  1131. TM IOBSTAT,IOBFATAL DID HALT GET THROUGH?? @VA11399 01225020
  1132. BZ HALTOK YES, ISSUE NORMAL MSG @VA11399 01225030
  1133. FATAL MSG 'FATAL IO ERROR-HALT ABORTED' @VA12963 01225040
  1134. B HALTQCN GO PRINT ABORT MSG @VA11399 01225050
  1135. HALTOK DS 0H @VA11399 01225060
  1136. MSG 'DEVICE HALTED' @VA11399 01225070
  1137. HALTQCN DS 0H @VA11399 01225080
  1138. CALL DMKQCNWT,PARM=NORET WRITE MSG @V407466 01226000
  1139. EXIT RETURN TO CALLER @V407466 01227000
  1140. CUCHPTH TM RCUSTAT,0 CHANNEL PATH OFFLINE TEST @VA12963 01227100
  1141. SPACE 1 01228000
  1142. USING HALTRET,R12 ADDRESSABILITY FROM DMKDSPCH @VA03757 01229000
  1143. HALTRET EQU * HERE AFTER THE IOBLOK HAS BEEN @VA03757 01230000
  1144. * UNSTACKED 01231000
  1145. LR R1,R10 POINT TO THE IOBLOK @VA03757 01232000
  1146. LA R0,IOBSIZE AND ITS SIZE @VA03757 01233000
  1147. CALL DMKFRET RETURN THE IOBLOK @VA03757 01234000
  1148. LR R2,R12 REAL ADDRESS OF THIS PAGE @VA03757 01235000
  1149. CALL DMKPTRUL UNLOCK THE PAGE BEFORE EXITING @VA03757 01236000
  1150. GOTO DMKDSPCH RETURN @VA03757 01237000
  1151. SPACE 2 01238000
  1152. CPS144 DC C'DMKCPS144W TYPE ADD RESET BY (USERID)' @VA03757 01239000
  1153. TYPE144 EQU 11 @VA03757 01240000
  1154. VADD144 EQU 16 @VA03757 01241000
  1155. USER144 EQU 29 @VA03757 01242000
  1156. DROP R6,R7,R8 @VA03757 01243000
  1157. USING DMKCPS,R12 NORMAL ADDRESSABILITY AGAIN @VA03757 01244000
  1158. USING RDEVBLOK,R8 RDEVBLOK ADDRESSABILITY @V407466 01245000
  1159. EJECT 01246000
  1160. CPS003 LA R2,3 ERROR CODE @VA03757 01247000
  1161. B SETRET INVALID OPTION - OPTN @V407466 01248000
  1162. SPACE 01249000
  1163. CPS003A LA R2,3 ERROR CODE @V407466 01250000
  1164. B CALLERM ISSUE ERROR MESSAGE @V407466 01251000
  1165. SPACE 01252000
  1166. CPS021A EQU * INVALID RADDR @V407490 01253000
  1167. USING BUFFER,R1 @V407490 01254000
  1168. L R1,SAVER9 GET COMMAND LINE POINTER @VA15100 01255100
  1169. L R1,BUFNXT ADDRESS OF NEXT PARAMETER @V407490 01256000
  1170. SR R1,R4 POINT TO INVALID FIELD @V407490 01257000
  1171. B CPS021D GO LOAD ERROR CODE @V407490 01258000
  1172. SPACE 01259000
  1173. CPS021B DS 0H @VA15100 01260100
  1174. L R1,SAVER9 GET COMMAND LINE POINTER @VA15100 01260200
  1175. L R1,BUFNXT ADDRESS OF NEXT PARAMETER @V407490 01261000
  1176. SR R1,R0 POINT TO INVALID FIELD @V407490 01262000
  1177. B CPS021D GO LOAD ERROR CODE @V407490 01263000
  1178. SPACE 01264000
  1179. CPS021C SLR R1,R1 ZIP DATA REG @V407490 01265000
  1180. CPS021D LA R2,21 LOAD ERROR CODE @V407490 01266000
  1181. LTR R0,R0 IS COUNT ZERO OR MINUS ?? @V407490 01267000
  1182. BP CKSIZE BR IF NOT @V407490 01268000
  1183. SLR R1,R1 ZIP DATA REG @V407490 01269000
  1184. CKSIZE CL R0,F8 SIZE > 8 CHAR ???? @V407490 01270000
  1185. BNH NORTN NO, GO TO NO RETURN @V407490 01271000
  1186. L R0,F8 MAKE IT EIGHT(MAX) @V407490 01272000
  1187. B NORTN GO TO NO RETURN @V407490 01273000
  1188. SPACE 01274000
  1189. CPS021 EQU * INVALID RADDR @V407490 01275000
  1190. ST R0,SAVEWRK2 TUCK IT AWAY @V407490 01276000
  1191. ST R2,SAVEWRK3 CONTINUE SAVING ALL NEEDED INFO @V407490 01277000
  1192. ST R3,SAVEWRK4 SAVE ONE MORE THING @V407490 01278000
  1193. BAL R3,TSTRANGE RANGE BEING PROCESSED ?? @V407490 01279000
  1194. LA R2,21 LOAD ERROR CODE @V407490 01280000
  1195. TM CPSBITS,RANGE PROCESSING A RANGE @V407490 01281000
  1196. BZ CPS021E NO , BR @V407490 01282000
  1197. L R0,SAVEWRK4 LOAD COUNT OF FIRST RADDR @V407490 01283000
  1198. L R1,SAVEWRK3 POINTER TO THE DASH @V407490 01284000
  1199. SR R1,R0 POINT TO INVALID PARAMETER @V407490 01285000
  1200. CL R0,F8 SIZE > 8 ??? @V407490 01286000
  1201. BNH NORTN NO,DRUM RADDR MISSING OR INVALID @V407490 01287000
  1202. L R0,F8 THEN MAKE IT EIGHT (MAX) @V407490 01288000
  1203. B NORTN DRUM RADDR INVALID , NO RETURN @V407490 01289000
  1204. SPACE 01290000
  1205. CPS021E L R0,SAVEWRK2 FETCH COUNT REG @V407490 01291000
  1206. L R1,SAVER9 GET COMMAND LINE POINTER @VA15100 01292100
  1207. L R1,BUFNXT POINTER TO NEXT PARAMETER @V407490 01293000
  1208. SR R1,R0 POINT TO INVALID PARAMETER @V407490 01294000
  1209. CL R0,F8 SIZE > 8 ?? @V407490 01295000
  1210. BNH SETRET BR IF 8 OR LESS, RETURN @V407490 01296000
  1211. L R0,F8 THEN MAKE IT EIGHT (MAX) @V407490 01297000
  1212. B SETRET NO, RADDR MISSING OR INVALID, RTN@V407490 01298000
  1213. SPACE 01299000
  1214. DROP R1 @V407490 01300000
  1215. SPACE 01301000
  1216. CPS021NR SLR R1,R1 NO SUBSTITUTABLE DATA, NO RETURN @V407466 01302000
  1217. LA R2,21 MESSAGE NUMBER 21 @V407466 01303000
  1218. B CALLERM WRITE MSG WITHOUT RETURN @V4M0014 01304000
  1219. CPS026 LA R2,26 ERROR CODE @VA03757 01305000
  1220. SLR R1,R1 NO SUBSTITUTABLE DATA, NO RETURN @V407466 01306000
  1221. B CALLERM OPERAND MISSING OR INVALID @V407466 01307000
  1222. SPACE 01308000
  1223. CPS026A LA R2,26 ERROR CODE @V407466 01309000
  1224. SLR R1,R1 NO DATA TO PASS @V407466 01310000
  1225. ICM R2,B'1000',=X'40' RETURN STORAGE @V407466 01311000
  1226. B CALLERM OPERAND MISSING OR INVALID @V407466 01312000
  1227. SPACE 01313000
  1228. CPS040 EQU * HERE FOR RETURN @V407466 01314000
  1229. BAL R3,TSTRANGE RANGE BEING PROCESSED? @V407466 01315000
  1230. L R1,SAVEWRK9 RESTORE ADDRESS @V407466 01316000
  1231. SLR R2,R2 CLEAR FOR LATER @V407466 01317000
  1232. ICM R2,B'1000',=X'80' SET FOR RETURN TO CPS @V407466 01318000
  1233. B CPS040B AND CONTINUE @V407466 01319000
  1234. CPS040NR SLR R2,R2 CLEAR... @V407466 01320000
  1235. CPS040B CALL DMKCVTBH CONVERT ADDR BACK TO HEX @V407466 01321000
  1236. N R1,X40FFS BLANK HIGH BYTE @VA03757 01322000
  1237. SLR R0,R0 ZERO GPR0 @VA03757 01323000
  1238. IC R2,=AL1(40) ERROR CODE @V407466 01324000
  1239. B CALLERM DEV RADDR DOES NOT EXIST @V407466 01325000
  1240. SPACE 01325100
  1241. CPSVPEND DS 0H @VA12646 01325200
  1242. OI RDEVSTA3,RDEVPBYP RESET PENDING BYPASS BIT @VA14349 01325250
  1243. BAL R3,TSTRANGE RANGE BEING PROCESSED? @VA12646 01325300
  1244. BAL R3,BLDADR GET REAL ADDRESS @VA12646 01325400
  1245. N R1,X40FFS CLEAR HIGH ORDER BYTE @VA12646 01325500
  1246. ST R1,SAVEWRK2 SAVE FOR DMKERMSG @VA12646 01325600
  1247. LA R0,4 GET FIELD LENGTH @VA12646 01325700
  1248. LA R1,SAVEWRK2 ADDRESS OF FIELD @VA12646 01325800
  1249. LA R2,154 ERROR CODE @VA12646 01325900
  1250. B SETRET GO ISSUE DMKCPS154E @VA12646 01326000
  1251. CPS049 LA R2,49 ERROR CODE @VA03757 01327000
  1252. B SETRET TYPE RADDR IN USE @V407466 01328000
  1253. SPACE 01329000
  1254. CPS123 LA R2,123 ERROR CODE @VA03757 01330000
  1255. B SETRET DASD RADDR CP OWNED @V407466 01331000
  1256. SPACE 01332000
  1257. CPS124 LA R2,124 ERROR CODE @VA03757 01333000
  1258. B SETRET DASD RADDR IN USE BY NN USERS @V407466 01334000
  1259. SPACE 01335000
  1260. CPS140 LA R2,140 ERROR CODE @VA03757 01336000
  1261. B SETRET TYPE RADDR ATTACHED TO USERID @V407466 01337000
  1262. SPACE 01338000
  1263. CPS142 LA R2,142 ERROR CODE @VA03757 01339000
  1264. B SETRET TYPE RADDR NOT DRAINED @V407466 01340000
  1265. SPACE 01341000
  1266. CPS60X EQU * @VA12977 01341050
  1267. LH R1,IOBRADD DEVICE ADDRESS @VA12977 01341100
  1268. CALL DMKCVTBH @VA12977 01341150
  1269. ICM R1,B'1000',=X'40' INSERT BLANK @VA12977 01341200
  1270. SR R0,R0 LENGTH @VA12977 01341250
  1271. TM IOBCSW+5,IFCC IFCC ? @VA12977 01341300
  1272. BO CPTIFCC YES, IFCC MSG @VA12977 01341350
  1273. LA R2,601 IFCC MSG @VA12977 01341400
  1274. B SETRET @VA12977 01341450
  1275. CPTIFCC EQU * @VA12977 01341500
  1276. LA R2,602 CCC MSG @VA12977 01341550
  1277. B SETRET @VA12977 01341600
  1278. SPACE 01341650
  1279. CPS143 EQU * DMKCPS143E TYPE RADDR IN USE BY @VA03757 01342000
  1280. * SYSTEM 01343000
  1281. BAL R3,TSTRANGE RANGE BEING PROCESSED? @V407466 01344000
  1282. BAL R3,BLDADR GET REAL ADDRESS @V407466 01345000
  1283. ST R1,SAVEWRK3 SET IN SAVEAREA FOR DMKERM @VA03757 01346000
  1284. MVI SAVEWRK3,X'00' DELIMITER @VA03757 01347000
  1285. CALL DMKSCNRN GET A TYPE NAME FOR THE DEVICE @VA03757 01348000
  1286. ST R1,SAVEWRK2 @VA03757 01349000
  1287. LA R1,SAVEWRK2 @VA03757 01350000
  1288. LA R0,8 LENGTH OF VARIABLE DATA FIELDS @VA03757 01351000
  1289. LA R2,143(0) MESSAGE NUMBER @VA03757 01352000
  1290. B SETRET TYPE RADDR IN USE BY SYSTEM @V407466 01353000
  1291. CPS149 LA R2,149 ERROR CODE 149 @VA12448 01353010
  1292. B SETRET TYPE DASD ADDR BUSY OR RESERVED @VA12448 01353020
  1293. SPACE 01354000
  1294. NORTN ICM R2,B'1000',=X'40' RETURN STORAGE @V407490 01355000
  1295. LA R3,MSGSIZE GET SIZE OF BUFFER @V407490 01356000
  1296. SLL R3,24 MOVE IT TO HI ORDER BYTE @V407490 01357000
  1297. ICM R3,B'0111',SAVEWRK7+1 BUFFER ADDRESS @V407490 01358000
  1298. B CALLERM ISSUE ERROR MSG @V407490 01359000
  1299. SETRET ICM R2,B'1000',=X'80' SET FOR RETURN TO CPS @V407466 01360000
  1300. CALLERM ICM R0,14,MODID+3 INSERT THE MODULE INDENT. @VA03757 01361000
  1301. STC R2,LASTRC SAVE ERROR @V407466 01362000
  1302. CALL DMKERMSG SEND THE MESSAGE @VA03757 01363000
  1303. * 01364000
  1304. * IF DMKERMSG RETURNS, IT IS FOR 'VARY' IN WHICH CASE 01365000
  1305. * WE CONTINUE WITH THE NEXT DEVICE. IF NO RETURN HAS 01366000
  1306. * BEEN REQUESTED, THEN DMKERM WILL RETURN DIRECTLY TO 01367000
  1307. * DMKCFM WITHOUT COMING THROUGH HERE. 01368000
  1308. SPACE 01369000
  1309. NI CPSBITS,X'FF'-VARYERR RESET ERROR FLAG @V407466 01370000
  1310. TM CPSBITS,RANGE IS RANGE BEING PROCESSED? @V407466 01371000
  1311. BO NEXTRADD YES, PROCESS NEXT ADDRESS @V407490 01372000
  1312. L R9,SAVER9 GET COMMAND LINE POINTER @VA15100 01373100
  1313. CALL DMKSCNFD FIND NEXT ADDR @V407466 01374000
  1314. BNZ FINMSG NO MORE TO PROCESS @V407466 01375000
  1315. B VARYDEV VARY THE DEVICE @V407466 01377000
  1316. EJECT 01378000
  1317. * HRC010DK 01378010
  1318. * DMKCPSCP: ISSUE COMMAND TO HOST HRC010DK 01378020
  1319. * HRC010DK 01378030
  1320. DMKCPSCP RELOC PASS COMMAND TO HOST HRC010DK 01378040
  1321. USING BUFFER,R9 HRC010DK 01378050
  1322. CLI CPUID,X'FF' HRC010DK 01378060
  1323. BZ DIAG8OK HRC010DK 01378070
  1324. CLI CPUID,X'FD' HERCULES HRC010DK 01378080
  1325. BZ DIAG8OKH HRC010DK 01378090
  1326. LA R1,MSG182E HRC010DK 01378100
  1327. LA R0,LMSG182E HRC010DK 01378110
  1328. CALL DMKQCNWT,PARM=NORET+ERRMSG HRC010DK 01378120
  1329. LA R6,182 HRC010DK 01378130
  1330. B NOCOMMD HRC010DK 01378140
  1331. DIAG8OKH EQU * HRC010DK 01378150
  1332. * TRANSLATE HERCULES COMMANDS TO LOWERCASE HRC010DK 01378160
  1333. LM R2,R3,BUFNXT HRC010DK 01378170
  1334. LTR R3,R3 HRC010DK 01378180
  1335. BZ NOCOMMD HRC010DK 01378190
  1336. BCTR R3,0 HRC010DK 01378200
  1337. L R6,=V(DMKTBLLC) HRC010DK 01378210
  1338. EX R3,TRANLC HRC010DK 01378220
  1339. B DIAG8OK HRC010DK 01378230
  1340. TRANLC TR 0(0,R2),0(R6) HRC010DK 01378240
  1341. DIAG8OK EQU * HRC010DK 01378250
  1342. XR R6,R6 DEFAULT RETCODE HRC010DK 01378260
  1343. LM R2,R3,BUFNXT GET COMMAND BUFFER LOCS HRC010DK 01378270
  1344. LTR R3,R3 ZERO LENGTH ? HRC010DK 01378280
  1345. BZ NOCOMMD YES - NO COMMAND HRC010DK 01378290
  1346. LOOPSCN4 EQU * HRC010DK 01378300
  1347. CLI 0(R2),C' ' HRC010DK 01378310
  1348. BNZ GOTCOMM HRC010DK 01378320
  1349. LA R2,1(R2) HRC010DK 01378330
  1350. BCT R3,LOOPSCN4 HRC010DK 01378340
  1351. B NOCOMMD HRC010DK 01378350
  1352. GOTCOMM EQU * HRC010DK 01378360
  1353. LA R0,512 GET 1 FULL PAGE OF STORAGE HRC010DK 01378370
  1354. CALL DMKFREE ... HRC010DK 01378380
  1355. LR R4,R2 SAVE COMMAND HRC010DK 01378390
  1356. LR R5,R1 AND RESP BUFFER HRC010DK 01378400
  1357. LR R6,R3 AND COMMAND LENGTH HRC010DK 01378410
  1358. LA R7,512 AND RESP BFR LENGTH HRC010DK 01378420
  1359. SLL R7,3 512*8=4096 HRC010DK 01378430
  1360. ICM R6,B'1000',=X'E0' SET DIAG 8 FLAGS HRC010DK 01378440
  1361. DC X'83460008' ISSUE DIAGNOSE HRC010DK 01378450
  1362. BNZ TOOSHORT HRC010DK 01378460
  1363. LTR R7,R7 ENSURE VALID LENGTH HRC010DK 01378470
  1364. BNP TOOSHORT BAD LENGTH, NO RESPONSE HRC010DK 01378480
  1365. LR R1,R5 REFETCH CMD RESP HRC010DK 01378490
  1366. LA R0,0(R7) GET RESP LENGTH HRC010DK 01378500
  1367. LR R8,R5 HRC010DK 01378510
  1368. XR R3,R3 HRC010DK 01378520
  1369. LOOPSCN1 EQU * HRC010DK 01378530
  1370. LR R4,R8 HRC010DK 01378540
  1371. ALR R4,R3 HRC010DK 01378550
  1372. CLI 0(R4),X'15' HRC010DK 01378560
  1373. BZ GOWRITE HRC010DK 01378570
  1374. CLI 0(R4),X'0D' HRC010DK 01378580
  1375. BZ GOWRITE HRC010DK 01378590
  1376. CLI 0(R4),X'25' HRC010DK 01378600
  1377. BZ GOWRITE HRC010DK 01378610
  1378. LA R3,1(R3) HRC010DK 01378620
  1379. LOOPSCN2 EQU * HRC010DK 01378630
  1380. BCT R7,LOOPSCN1 HRC010DK 01378640
  1381. GOWRITE EQU * HRC010DK 01378650
  1382. LR R1,R8 HRC010DK 01378660
  1383. ALR R8,R3 HRC010DK 01378670
  1384. LR R0,R3 HRC010DK 01378680
  1385. CALL DMKQCNWT,PARM=NORET HRC010DK 01378690
  1386. XR R3,R3 HRC010DK 01378700
  1387. LTR R7,R7 HRC010DK 01378710
  1388. BZ TOOSHORT HRC010DK 01378720
  1389. LA R8,1(R8) HRC010DK 01378730
  1390. BCT R7,LOOPSCN1 HRC010DK 01378740
  1391. TOOSHORT EQU * HRC010DK 01378750
  1392. LR R1,R5 HRC010DK 01378760
  1393. LA R0,512 HRC010DK 01378770
  1394. CALL DMKFRET HRC010DK 01378780
  1395. NOCOMMD DS 0H HRC010DK 01378790
  1396. ST R6,SAVER2 HRC010DK 01378800
  1397. EXIT HRC010DK 01378810
  1398. MSG182E DC C'DMKCPS182E The host system cannot proc' HRC010DK 01378820
  1399. DC C'ess host commands' HRC010DK 01378830
  1400. LMSG182E EQU *-MSG182E HRC010DK 01378840
  1401. LTORG @VA03757 01379000
  1402. EJECT 01380000
  1403. PSA @VA03757 01381000
  1404. COPY CORE @VA03757 01382000
  1405. COPY CONBUF @V407490 01383000
  1406. COPY DEVTYPES @VA03757 01384000
  1407. COPY EQU @VA03757 01385000
  1408. COPY IOBLOKS @VA03757 01386000
  1409. COPY IOER @VA03757 01387000
  1410. COPY MONBLOKS @VA03757 01388000
  1411. COPY NETWORK @VA03757 01389000
  1412. COPY RBLOKS @VA03757 01390000
  1413. COPY SAVE @VA03757 01391000
  1414. SPACE 2 01392000
  1415. CPSBITS EQU SAVEWRK1 @V407466 01393000
  1416. LASTRC EQU SAVEWRK1+1 ERROR NUMBER OF LAST MSG ISSUED @V407466 01394000
  1417. MULTCUU EQU SAVEWRK1+2 COUNT OF NO. OF MULTIPLES @V407466 01395000
  1418. SPACE 01396000
  1419. * 01397000
  1420. * BITS DEFINED IN CPSBITS 01398000
  1421. * 01399000
  1422. SPACE 01400000
  1423. LBLREAD EQU X'20' DASD LABEL READ PROCESS INITIATED @V407466 01401000
  1424. RANGE EQU X'04' RANGE INDICATOR @V407466 01402000
  1425. ON EQU X'80' VARY ONLINE REQUEST @V407466 01403000
  1426. VARYERR EQU X'40' PENDING VARY ERROR MESSAGE @V407466 01404000
  1427. SPACE 01405000
  1428. RADDR1 EQU SAVEWRK8 RADDR1 IN RANGE @V407466 01406000
  1429. RADDR2 EQU SAVEWRK8+2 SECOND RANGE ADDRESS @V407466 01407000
  1430. COPY SAVTABLE @VA03757 01408000
  1431. COPY SYSTBL @VA03757 01409000
  1432. COPY VBLOKS @VA03757 01410000
  1433. COPY VMBLOK @VA03757 01411000
  1434. END 01412000
ibm/vm370-lib/cp/dmkcps.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator