Table of Contents

DMKMSW Source

References

Source Listing

DMKMSW.ASSEMBLE.txt
  1. MSW TITLE 'DMKMSW (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME - DMKMSW 00005000
  6. * 00006000
  7. * 00007000
  8. * 00008000
  9. * FUNCTION - TO PROVIDE A FACILITY WHICH WILL ALLOW THE SYSTEM 00009000
  10. * TO COMMUNICATE WITH THE OPERATOR FOR THE 00010000
  11. * ENHANCEMENT OF ERROR RECOVERY PROCEDURES. 00011000
  12. * 00012000
  13. * 00013000
  14. * ATTRIBUTES - REENTRANT,RESIDENT,CALLED VIA SVC. 00014000
  15. * 00015000
  16. * 00016000
  17. * ENTRY POINTS - DMKMSWR 00017000
  18. * 00018000
  19. * 00019000
  20. * ENTRY CONDITIONS - GPR8 =RDEVBLOK ADDRESS 00020000
  21. * GPR10=IOBLOK ADDRESS 00021000
  22. * GPR11=VMBLOK ADDRESS 00022000
  23. * GPR12=BASE ADDRESS 00023000
  24. * GPR13=SAVE AREA ADDRESS 00024000
  25. * 00025000
  26. * 00026000
  27. * EXIT CONDITIONS - RETURN THE OPERATOR'S RESPONSE TO THE 00027000
  28. * CALLER IN THE IOERBLOK MESSAGE PARM 00028000
  29. * FIELD. 00029000
  30. * 00030000
  31. * 00031000
  32. * 00032000
  33. * CALLS TO OTHER ROUTINES - 00033000
  34. * DMKCVTBH - TO CONVERT BINARY TO UNPACKED DECIMAL. 00034000
  35. * DMKQCNWT - TO ISSUE MESSAGES ON OPERATORS CONSOLE. 00035000
  36. * DMKQCNRD - TO READ OPERATOR'S RESPONSE. 00036000
  37. * DMKFREE - TO OBTAIN STORAGE FOR A MESSAGE BUFFER. 00037000
  38. * DMKFRET - TO RETURN STORAGE OBTAINED BY DMKFREE. 00038000
  39. * DMKSCNRN - TO OBTAIN 'TYPE' DEVICE FOR MSG LINE 00039000
  40. * 00040000
  41. * 00041000
  42. * EXTERNAL REFERENCES - NONE 00042000
  43. * 00043000
  44. * 00044000
  45. * TABLES AND WORK AREAS - IOBLOK,IOERBLOK,RDEVBLOK,VMBLOK, 00045000
  46. * MSGBUF,AND MSGPARM 00046000
  47. * 00047000
  48. * 00048000
  49. * REGISTER USAGE - GPR0-6=SCRATCH 00049000
  50. * GPR 7=IOERBLOK ADDRESS 00050000
  51. * GPR 8=RDEVBLOK ADDRESS 00051000
  52. * GPR 9=MSGPARM ADDRESS 00052000
  53. * GPR 10=IOBLOK ADDRESS 00053000
  54. * GPR 11=VMBLOK ADDRESS 00054000
  55. * GPR 12=BASE ADDRESS 00055000
  56. * GPR 13=SAVE AREA ADDRESS 00056000
  57. * GPR 14=EXTERNAL LINKAGE REGISTER 00057000
  58. * GPR 15=EXTERNAL LINKAGE REGISTER 00058000
  59. * 00059000
  60. * 00060000
  61. * NOTES - A. THE FORMAT OF THE MESSAGES WILL CONTAIN THE 00061000
  62. * FOLLOWING: 00062000
  63. * 1. A UNIQUE MESSAGE NUMBER. 00063000
  64. * 2. THE CHANNEL,CONTROL UNIT AND DEVICE ADDRESS. 00064000
  65. * 3. THE USERID. 00065000
  66. * 4. SENSE INFORMATION. 00066000
  67. * 5. CSW INFORMATION. 00067000
  68. * 6. THE COMMAND CODE OF THE FAILING CCW. 00068000
  69. * 7. THE HOME ADDRESS FOR DASDI DEVICES. 00069000
  70. * B. IF THE DEVICE IS FOUND TO BE NOT READY A SHORT 00070000
  71. * FORM OF THE MESSAGE WILL BE ISSUED WITH THE 00071000
  72. * FOLLOWING INFORMATION. 00072000
  73. * 1. A UNIQUE MESSAGE NUMBER. 00073000
  74. * 2. TEXT (INDICATING INTERVENTION REQUIRED) 00074000
  75. * 3. THE CHANNEL,CONTROL UNIT AND DEVICE ADDRESS. 00075000
  76. * 00076000
  77. * 00077000
  78. * 00078000
  79. * OPERATION - A. THIS MODULE WILL BE CALLED BY ERP ROUTINES 00079000
  80. * WHEN IT IS NECESSARY THAT THE OPERATOR BE 00080000
  81. * INFORMED OF AN ERROR CONDITION. 00081000
  82. * B. THE 'MSGPARM' FIELD WHICH WAS CONSTRUCTED BY 00082000
  83. * THE ERP ROUTINE CONTAINS A 'MESSAGE INDEX 00083000
  84. * POINTER' AND FLAG SETTINGS FOR VALIDATING THE 00084000
  85. * OPERATOR'S RESPONSE. THE INFORMATION TO BE 00085000
  86. * DISPLAYED MAY BE AN ACTION,DECISION,OR 00086000
  87. * INFORMATIONAL MESSAGE WITH OR WITHOUT AN 00087000
  88. * OPERATOR REPLY. 00088000
  89. * C. THE CONTENTS OF THE MESSAGE WILL BE EXTRACTED 00089000
  90. * FROM THE FOLLOWING : 00090000
  91. * IOERBLOK - CSW, SENSE DATA, AND COMMAND CODE. 00091000
  92. * RDEVBLOK - CHANNEL,CONTROL UNIT AND DEVICE 00092000
  93. * VMBLOK - USERID. 00093000
  94. * MSGPARM - INDICATOR BYTE AND VALID RESPONSES. 00094000
  95. * MSGPARM - - INDEX BYTE TO MESSAGE TEXT TABLE. 00095000
  96. * 00096000
  97. *. 00097000
  98. EJECT 00098000
  99. COPY OPTIONS @V200820 00099000
  100. COPY LOCAL @V200820 00100000
  101. SPACE 3 00101000
  102. DMKMSW START 00102000
  103. SPACE 3 00103000
  104. USING PSA,R0 00104000
  105. USING IOERBLOK,R7 00105000
  106. USING RDEVBLOK,R8 00106000
  107. USING MSGAREA,R9 00107000
  108. USING IOBLOK,R10 00108000
  109. USING VMBLOK,R11 00109000
  110. USING SAVEAREA,R13 00110000
  111. SPACE 1 00111000
  112. EXTRN DMKSCNRN,DMKQCNRD,DMKCVTBH 00112000
  113. EJECT 00113000
  114. ENTRY DMKMSWR 00114000
  115. USING *,R12 00115000
  116. DMKMSWR ENTER , 00116000
  117. SPACE 1 00117000
  118. LA R0,MSGSIZE GET STORAGE FOR MSG BUFFER @V2B3729 00118000
  119. CALL DMKFREE 00119000
  120. LR R9,R1 SAVE ADDR. OF BUFFER IN REG.9 00120000
  121. MVI MSGAREA,C' ' BLANK OUT ENTIRE BUFFER @VM01120 00121000
  122. MVC MSGAREA+1(MSGLNG-1),MSGAREA ... @VM01120 00122000
  123. MVC MSGPREX(6),SP3DMK SPACE PAPER AND CP PREFIHRC202DK 00123490
  124. SPACE 1 00124000
  125. L R0,SAVER0 PICK UP NAME OF ROUTINE THAT CALLED US 00125000
  126. STCM R0,14,MSGIDENT STORE IT IN THE LINE TO PRINT. 00126000
  127. CALL DMKSCNRN CALL SCAN FOR TYPE DEV 00127000
  128. STCM R1,15,DEVHDR STORE 4-CHAR IN PRINT LINE 00128000
  129. MVC USERHDR,=C'USERID=' MOVE IN USERID HDR 00129000
  130. MVC SNSHDR,=C'SNS=' * 00130000
  131. MVC CMDHDR,=C'CMD=' * 00131000
  132. MVC CSWHDR,=C'CSW=' * 00132000
  133. MVC HAHDR,=C'BBCCHH=' * 00133000
  134. SPACE 1 00134000
  135. L R7,RDEVIOER LOAD ADDRESS OF THE IOERBLOK. 00135000
  136. SR R5,R5 CLEAR REG.5 00136000
  137. IC R5,IOERNUM INSERT MESSAGE NUMBER FROM IOERBLOK 00137000
  138. MH R5,F10+2 MULTIPLY BY CONSTANT OF 10 00138000
  139. LA R5,MSGTABLE(R5) ADD TO BASE ADDR. OF TABLE 00139000
  140. MVC MSGTEXT,0(R5) MOVE TEXT INTO BUFFER AREA. 00140000
  141. SPACE 1 00141000
  142. LM R0,R1,ZEROES CLEAR REG0 AND REG1 00142000
  143. LA R6,MSGNUM GET ADDRESS OF MESSAGE NUMBER. 00143000
  144. LA R2,L'MSGNUM GET LENGHT OF MESSAGE 00144000
  145. IC R1,IOERNUM INSERT ACTUAL MESSAGE NUMBER. 00145000
  146. CH R1,F9+2 IS MESSAGE > 9 ? 00146000
  147. BNH ADD256 BRANCH NO 00147000
  148. CH R1,F20+2 IS MESSAGE < 20 ? 00148000
  149. BL ADD6 BRANCH IF YES. 00149000
  150. CH R1,F30+2 @VA09494 00149100
  151. BL ADD12 @VA09494 00149500
  152. AH R1,=H'18' @VA09494 00149900
  153. B ADD256 @VA09494 00150300
  154. ADD12 AH R1,=H'12' @VA09494 00150700
  155. B ADD256 00151000
  156. ADD6 A R1,F6 ADD 6 TO MESSAGE NUMBER 00152000
  157. ADD256 AH R1,=H'1280' MAKE MESSAGES START AT X'500'. 00153000
  158. BAL R5,CONVERT BRANCH TO CONVERT ROUTINE. 00154000
  159. SPACE 1 00155000
  160. SLR R0,R0 CLEAR REG0 00156000
  161. LA R6,MSGDEV GET DEVICE ADDRESS. 00157000
  162. LA R2,L'MSGDEV PICK UP LENGTH ATTRIB. 00158000
  163. LH R1,IOBRADD LOAD R1 WITH ADDRESS OF DEVICE. 00159000
  164. BAL R5,CONVERT CONVERT DEVICE ADDR. 00160000
  165. SPACE 1 00161000
  166. SLR R0,R0 CLEAR REG0 00162000
  167. TM IOERCSW+5,CCC+CDC+IFCC IS THIS A CHANNEL ERROR @VA03358 00163000
  168. BNZ BDSNS YES, BYPASS SENSE SUPPORT @VA03358 00164000
  169. ICM R2,B'0011',IOERLEN ACTUAL LENGTH OF SENSE BYTES @V2B3729 00165000
  170. BZ BDSNS BRANCH IF NO SENSE INFORMATION @V2B3729 00166000
  171. LA R3,3(,R2) ROUND LENGTH TO MULTIPLE OF 4 @V2B3729 00167000
  172. SRL R3,2 DIVIDE BY 4 - LOOP COUNTER @V2B3729 00168000
  173. LA R4,IOERDATA ADDRESS OF SENSE DATA @V2B3729 00169000
  174. LA R6,MSGSNS ADDRESS OF MSG SENSE AREA @V2B3729 00170000
  175. SNSLOOP LA R2,8 INDICATE A LEN OF 8 PRINTABLE @V2B3729 00171000
  176. * CHAR'S 00172000
  177. L R1,0(,R4) GET 4 SENSE BYTES @V2B3729 00173000
  178. BAL R5,CONVERT CONVERT TO PRINTABLE CHAR'S @V2B3729 00174000
  179. LA R4,4(,R4) UPDATE TO NEXT 4 SENSE BYTES @V2B3729 00175000
  180. LA R6,9(,R6) UPDATE MSG SENSE OUTPUT ADDRESS @V2B3729 00176000
  181. BCT R3,SNSLOOP BRANCH TILL ALL BYTES DONE @V2B3729 00177000
  182. B MSGCCW SET CCW AREA @V2B3729 00178000
  183. SPACE 00179000
  184. BDSNS MVC MSGSNS(4),=C'XXXX' SENSE NOT PRESENT @V2B3729 00180000
  185. MSGCCW EQU * @V2B3729 00181000
  186. SLR R0,R0 CLEAR REG0 00182000
  187. LA R6,MSGCMD SET ADDR. OF COMMAND POSITION. 00183000
  188. LA R2,L'MSGCMD SET LNG. OF FIELD 00184000
  189. L R4,IOERCSW PICK UP ADDR. OF CCW + 8 00185000
  190. LA R4,0(R4) CLEAR OUT HIGH ORDER BYTE 00186000
  191. LTR R4,R4 CHECK FOR ZERO CSW ADDR. 00187000
  192. BNZ GDCCW BRANCH IF VALID 00188000
  193. L R4,IOBCAW GET CCW ADDRESS @VA10771 00188100
  194. LA R4,0(R4) CLEAR HIGH ORDER BYTE @VA10771 00188200
  195. LTR R4,R4 IS ADDRESS VALID? @VA10771 00188300
  196. BNZ CAWCCW YES, GO GET CCW @VA10771 00188400
  197. MVC 0(2,R6),=C'XXXX' MOVE IN INVALID CCW MESSAGE 00189000
  198. B BDCCW 00190000
  199. SPACE 1 00191000
  200. GDCCW EQU * 00192000
  201. S R4,F8 - 8 00193000
  202. CAWCCW DS 0H @VA10771 00193100
  203. SLR R1,R1 CLEAR FOR IC 00194000
  204. IC R1,0(0,R4) CCW IN ERROR 00195000
  205. BAL R5,CONVERT GO CONVERT THIS DATA 00196000
  206. SPACE 1 00197000
  207. BDCCW EQU * 00198000
  208. LA R6,MSGCSW SET BUFFER ADR. TO CSW 00199000
  209. LA R2,8 SET PRINT LNG. TO 8 00200000
  210. L R1,IOERCSW GET FIRST 4 POSITION OF CSW 00201000
  211. BAL R5,CONVERT AND CONVERT TO PRINTABLE 00202000
  212. SPACE 1 00203000
  213. SLR R0,R0 CLEAR REG0 00204000
  214. LA R6,MSGCSW+9 POINT TO PRINT LINE TARGET 00205000
  215. LA R2,8 SET LNG. TO 8 00206000
  216. L R1,IOERCSW+4 SET REG.1 TO SECOND HALF OF CSW 00207000
  217. BAL R5,CONVERT NOW CONVERT THIS DATA 00208000
  218. SPACE 1 00209000
  219. MVC MSGHA(4),=4C'0' ZERO OUT BBBB OF DASDI ADDRESS. 00210000
  220. SPACE 1 00211000
  221. SLR R0,R0 CLEAR REG0 00212000
  222. LA R6,MSGHA+4 00213000
  223. LA R2,8 SET LEN. TO 8 00214000
  224. L R1,IOERADR GET DASDI SEEK ADDR. 00215000
  225. BAL R5,CONVERT CONVERT SEEK ADDRESS 00216000
  226. SPACE 1 00217000
  227. MVC MSGUSER,VMUSER GET NAME OF USER CHARGED TO THIS ERR 00218000
  228. SPACE 1 00219000
  229. TM IOERIND3,IOERDEC IS THIS A DECISION MESSAGE ? 00220000
  230. BZ ACTMSG BRANCH IF NO. 00221000
  231. MVI MSGIND,X'C4' SET DEC. INDICATOR IN BUFFER POSITION. 00222000
  232. B PRTLINE 00223000
  233. SPACE 1 00224000
  234. ACTMSG TM IOERIND3,IOERACT IS THIS AN ACTION MESSAGE ? 00225000
  235. BZ INFMSG BRANCH IF NO. 00226000
  236. MVI MSGIND,X'C1' SET 'A' INTO MESSAGE TEXT 00227000
  237. B PRTLINE 00228000
  238. SPACE 1 00229000
  239. INFMSG EQU * 00230000
  240. MVI MSGIND,C'I' SET "I" INTO MESSAGE TEXT 00231000
  241. SPACE 1 00232000
  242. PRTLINE CLI IOERDATA,INTREQ INTERVENTION REQUIRED ALONE ? @V2B3729 00233000
  243. BNE WTRBUF NO, USE LONG FORMAT @V2B3729 00234000
  244. TM IOERFLG1,IOERPEND IS THIS AN INT. REQ. MESSAGE ?@V2B3729 00235000
  245. BZ WTRBUF BRANCH IF NO @V2B3729 00236000
  246. CLI RDEVTYPC,CLASDASD IS CLASS DASD @VA05142 00237100
  247. BNE SHORTMSG NO @VA05142 00237200
  248. TM RDEVTYPE,TYP3340+TYP3350 IS DASD 3340, 3344 @VA05142 00237300
  249. * OR 3350? 00237400
  250. BM DASDMSG YES, MAKE TEST FOR PSEUDO EC @VA05142 00237500
  251. TM IOERDATA+2,X'08' TEST 3330 COPMAT. BIT @VA05142 00237600
  252. * (SNS BYTE 2, BIT 4) 00237700
  253. BZ SHORTMSG NO, IT'S A REAL 3330 @VA05142 00237800
  254. DASDMSG EQU * TEST FOR PSEUDO EQU. CHECK @VA05142 00237900
  255. * (SNS BYTE 10, BITS 4 AND/OR 5) 00238000
  256. TM IOERDATA+10,X'18' BITS 4 AND/OR 5 ? @V2B3729 00239000
  257. BNZ WTRBUF BRANCH IF NON-ZERO @V2B3729 00240000
  258. SHORTMSG LR R1,R9 POINT TO PRINT LINE @V2B3729 00241000
  259. LA R0,33 SET MSG LENGTH 00242000
  260. CALL DMKQCNWT,PARM=OPERATOR+ALARM+NORET 00243000
  261. SPACE 1 00244000
  262. USERMSG L R6,ASYSOP GET OPERATOR'S VMBLOK 00245000
  263. CR R11,R6 WAS THIS MESSAGE SENT TO OPERATOR 00246000
  264. BE EXITOUT IF YES, DON'T REPEAT IT 00247000
  265. TM RDEVSTAT,RDEVDED IS DEVICE ATTACHED ? 00248000
  266. BNO EXITOUT EXIT IF NOT ATTACHED 00249000
  267. MVC MSGAREA(42),MSGUSTXT 00250000
  268. LH R1,IOBRADD PICK UP DEV ADDRESS 00251000
  269. LA R6,MSGAREA+7 BUFFER PTR +7 00252000
  270. SR R0,R0 CLEAR PARM REG 00253000
  271. LA R2,3 LENGTH PARM 00254000
  272. BAL R5,CONVERT GO CONVERT THE ADDRESS 00255000
  273. LR R1,R9 POINT TO START OF PRINT LINE. 00256000
  274. LA R0,42 00257000
  275. CALL DMKQCNWT,PARM=NORET WRITE MESSAGE TO VIRTUAL TERM. 00258000
  276. SPACE 1 00259000
  277. EXITOUT LA R0,MSGSIZE SIZE OF MESSAGE BUFFER @V2B3729 00260000
  278. LR R1,R9 LOAD REG.1 OF ADDR. TO FRET 00261000
  279. CALL DMKFRET 00262000
  280. EXIT RETURN WILL BE MADE BACK TO ERP ROUTINE 00263000
  281. SPACE 3 00264000
  282. WTRBUF LR R1,R9 ADDRESS OF FIRST MESSAGE @V2B3729 00265000
  283. SLR R2,R2 CLEAR REGISTER 2 @VA03358 00266000
  284. TM IOERCSW+5,CCC+CDC+IFCC IS THIS A CHANNEL ERROR @VA03358 00267000
  285. BNZ BYPMSG YES, DON'T GET SENSE BYTES @VA03358 00268000
  286. LH R2,IOERLEN ACTUAL LENGTH OF SENSE @V2B3729 00269000
  287. C R2,F6 GREATER THAN 6 SENSE BYTES ? @V2B3729 00270000
  288. BH LONGMSG YES, LONG SENSE MSG @V2B3729 00271000
  289. BYPMSG EQU * @VA03358 00272000
  290. SLL R2,1 SENSE BYTE COUNT TIME 2 @V2B3729 00273000
  291. LA R0,MSG1SNSL(,R2) LENGTH OF MSG WITH SENSE BYTES @V2B3729 00274000
  292. LTR R2,R2 CHECK FOR ZERO SENSE BYTE COUNT @V2B3729 00275000
  293. BNZ *+8 NO, MSG LENGTH COUNT OK @V2B3729 00276000
  294. A R0,F4 ADD COUNT FOR XXXX @V2B3729 00277000
  295. CALL DMKQCNWT,PARM=OPERATOR+NORET+ALARM 00278000
  296. B RTN WRITE NEXT LINE @V2B3729 00279000
  297. SPACE 00280000
  298. LONGMSG LA R0,MSG1L LENGTH OF MESSAGE WITH SENSE @V2B3729 00281000
  299. CALL DMKQCNWT,PARM=OPERATOR+NORET+ALARM @V2B3729 00282000
  300. MVC SNSMSG(11),NXTLINE BLANK 11 POSITIONS @V2B3729 00283000
  301. LA R0,MSG2SNSL LENGTH OF LONG SENSE MESSAGE @V2B3729 00284000
  302. LH R2,IOERLEN GET THE NUMBER OF SENSE BYTES @V2B3729 00285000
  303. SLL R2,1 TIMES 2 FOR PRINT COUNT @V2B3729 00286000
  304. ALR R0,R2 TOTAL MSG LENGTH @V2B3729 00287000
  305. LA R1,SNSMSG ADDRESS OF SENSE MESSAGE @V2B3729 00288000
  306. CALL DMKQCNWT,PARM=OPERATOR+NORET+NOTIME @V2B3729 00289000
  307. RTN TM IOERIND3,IOERDASD IS THIS MSG FOR A DASDI DEVICE 00290000
  308. BZ NOTDASD BRANCH IF NO. 00291000
  309. LA R0,MSG3L LENGTH OF THIRD MESSAGE @V2B3729 00292000
  310. LA R1,NXTLINE POINT TO PRINT LINE 00293000
  311. CALL DMKQCNWT,PARM=OPERATOR+NORET+NOTIME 00294000
  312. SPACE 1 00295000
  313. TM IOERIND3,IOERINFO INFO MSG 00296000
  314. BZ RTNA NO 00297000
  315. LA R0,3 LENGTH 00298000
  316. LA R1,SP3DMK CARRIAGE RET 00299000
  317. CALL DMKQCNWT,PARM=NORET+NOTIME+OPERATOR 00300000
  318. B RTNA 00301000
  319. SPACE 1 00302000
  320. NOTDASD EQU * 00303000
  321. LA R0,HAHDR-NXTLINE-1(R0) SET LNG. OF PRINT LINE 00304000
  322. LA R1,NXTLINE POINT TO PRINT LINE 00305000
  323. CALL DMKQCNWT,PARM=OPERATOR+NORET+NOTIME 00306000
  324. SPACE 1 00307000
  325. TM IOERIND3,IOERINFO INFO MSG 00308000
  326. BZ RTNA NO 00309000
  327. LA R0,3 00310000
  328. LA R1,SP3DMK 00311000
  329. CALL DMKQCNWT,PARM=OPERATOR+NORET+NOTIME 00312000
  330. SPACE 1 00313000
  331. RTNA TM IOERIND3,IOERDEC IS THIS A DECISION MSG ? 00314000
  332. BZ NOTDEC BRANCH IF NO 00315000
  333. SPACE 1 00316000
  334. REISSUE TM IOERIND3,IOERETRY+IOERIGN RETRY OR IGNORE 00317000
  335. BO BOTH YES 00318000
  336. BZ CNLOPT NEITHER ONE 00319000
  337. TM IOERIND3,IOERETRY RETRY ONLY 00320000
  338. BO RTRYONLY YES 00321000
  339. MVC MSGAREA(15),REPLY MOVE IN PROMPTING MSG 00322000
  340. MVC MSGAREA+15(10),OR MOVE IN THE REMAINDER 00323000
  341. LA R0,25 MSG LENGTH 00324000
  342. SNDMSG LR R1,R9 POINT R1 AT MSG BUFFER 00325000
  343. CALL DMKQCNWT,PARM=OPERATOR+ALARM+NORET+NOTIME 00326000
  344. B READRESP 00327000
  345. SPACE 1 00328000
  346. RTRYONLY MVC MSGAREA(15),REPLY MOVE IN PROMPTING MSG 00329000
  347. MVC MSGAREA+15(4),OR CONTINUE MSG MAKEUP 00330000
  348. MVC MSGAREA+19(5),RETRY FINISH UP 00331000
  349. LA R0,24 MSG LENGTH 00332000
  350. B SNDMSG GO SEND MSG 00333000
  351. SPACE 1 00334000
  352. BOTH MVC MSGAREA(34),REPLY MOVE IN PROMPTING MSG 00335000
  353. LA R0,34 MSG LENGTH 00336000
  354. B SNDMSG GO SEND MSG 00337000
  355. SPACE 1 00338000
  356. READRESP EQU * READ OPERATOR RESPONSE @V200820 00339000
  357. L R1,ASYSOP GET SYSTEM OPERATOR VMBLOK @V407510 00340100
  358. TM VMOSTAT-VMBLOK(R1),VMDISC DISCONNECTED? @V407510 00340200
  359. BO CNLOPT YES, ASSUME CANCEL @V407510 00340300
  360. L R3,VMTERM-VMBLOK(,R1) CHECK OPERATOR CONSOLE @V407510 00340400
  361. LTR R3,R3 DOES HE HAVE ONE ? @V200820 00348000
  362. BZ CNLOPT NO, ASSUME CANCEL @V407510 00349100
  363. SWTCHVM SWITCH TO SYSTEM OPERATOR @V407510 00349200
  364. LA R0,MAXINPUT SET MAXIMUM INPUT COUNT @V407510 00349300
  365. LR R1,R9 POINT TO PRINT LINE @V407510 00349400
  366. CALL DMKQCNRD,PARM=EDIT+UCASE 00350000
  367. LR R3,R0 PUT LENGTH OF RESPONSE IN R3 @V407510 00350100
  368. L R1,SAVER11 RESTORE VMBLOK ADDRESS @V407510 00351100
  369. SWTCHVM SWITCH BACK TO CALLER @V407510 00351200
  370. LTR R2,R2 ANY ATTENTION OR LINE FAILURE ? @V200820 00354000
  371. BNZ CNLOPT YES - ASSUME 'CANCEL' @V200820 00355000
  372. BCTR R3,R0 REDUCE IT BY 1 00357000
  373. TM IOERIND3,IOERETRY IS RETRY ALLOWED ? 00358000
  374. BZ OPRIGN BRANCH IF NO . 00359000
  375. EX R3,OPRET IS THIS RESPONSE FOR RETRY ? 00360000
  376. BE RETOPT BRANCH IF YES. 00361000
  377. SPACE 1 00362000
  378. OPRIGN TM IOERIND3,IOERIGN IS IGNORE ALLOWED ? 00363000
  379. BZ OPRCAN BRANCH IF NO. 00364000
  380. EX R3,OPIGN IS RESPONSE FOR IGNORE ? 00365000
  381. BE IGNOPT BRANCHNIF YES 00366000
  382. SPACE 1 00367000
  383. OPRCAN EX R3,OPCNL IS RESPONSE FOR CANCEL ? 00368000
  384. BE CNLOPT BRANCH IF YES. 00369000
  385. MVC MSGAREA(17),=C' Invalid response' HRC202DK 00370490
  386. LA R0,17 SET MSG LEN. TO 17 00371000
  387. LR R1,R9 SET UP BUFFER ADDRESS 00372000
  388. CALL DMKQCNWT,PARM=OPERATOR+NORET 00373000
  389. B REISSUE REISSUE THE READ COMMAND. 00374000
  390. SPACE 1 00375000
  391. RETOPT OI IOERIND4,IOERSTRT INDICATE RETRY 00376000
  392. B EXITOUT 00377000
  393. SPACE 1 00378000
  394. IGNOPT OI IOERIND4,IOERIGNR INDICATE IGNORE 00379000
  395. B EXITOUT 00380000
  396. SPACE 1 00381000
  397. SPACE 00382000
  398. CNLOPT OI IOERIND4,IOERCNCL INDICATE CANCEL 00386000
  399. B EXITOUT 00387000
  400. SPACE 1 00388000
  401. NOTDEC TM IOERIND3,IOERACT IS THIS AN ACTION MESSAGE ? 00389000
  402. BO EXITOUT BRANCH IF YES. 00390000
  403. OI IOERIND4,IOERCNCL IF NOT SET CANCEL BIT FOR ERP 00391000
  404. B EXITOUT 00392000
  405. SPACE 1 00393000
  406. CONVERT AR R6,R2 R2 CONTAINS LEN. AND R6 ADDRESS. 00394000
  407. BCTR R6,R0 DECR. ADDRESS BY 1 00395000
  408. CALL DMKCVTBH REG.0 AND 1 ARE ALREADY SET BY CALLER 00396000
  409. SPACE 1 00397000
  410. NXTCHAR STC R1,0(R6) STORE FIRST CONVERTED CHARACTER 00398000
  411. SRDL R0,8 SHIFT THIS CHAR. OUT OF REG. 00399000
  412. BCTR R6,R0 DECREMENT ADDRESS BY 1 00400000
  413. BCT R2,NXTCHAR STORE NEXT CHAR. OR EXIT BACK 00401000
  414. BR R5 RETURN TO CALLER 00402000
  415. SPACE 1 00403000
  416. OPRET CLC MSGRSP(0),RETRY RETRY RESPONSE ? 00404000
  417. OPIGN CLC MSGRSP(0),IGNORE IGNORE RESPONSE 00405000
  418. OPCNL CLC MSGRSP(0),CANCEL CANCEL RESPONSE ? 00406000
  419. EJECT 00407000
  420. MSGTABLE EQU * 00408000
  421. DC CL10'CMD REJECT' 0 00409000
  422. DC CL10'INT REQ' 1 00410000
  423. DC CL10'BUSOUT CK' 2 00411000
  424. DC CL10'EQUIP CK' 3 00412000
  425. DC CL10'DATA CK' 4 00413000
  426. DC CL10'OVERRUN CK' 5 00414000
  427. DC CL10'TRKCOND CK' 6 00415000
  428. DC CL10'SEEK CK' 7 00416000
  429. DC CL10'PERM ERROR' 8 00417000
  430. DC CL10'TRK OVERUN' 9 00418000
  431. DC CL10'CONVERT CK' 10 00419000
  432. DC CL10'COMPAT CK' 11 00420000
  433. DC CL10'LOAD POINT' 12 00421000
  434. DC CL10'FILE PROT' 13 00422000
  435. DC CL10'ADDMRK CK' 14 00423000
  436. DC CL10'DENSITY CK' 15 00424000
  437. DC CL10'BAD SENSE' 16 00425000
  438. DC CL10'NOT/KNOWN' 17 00426000
  439. DC CL10'RECV ERROR' 18 00427000
  440. DC CL10'PE BURST' 19 00428000
  441. DC CL10'CHAN ERROR' 20 00429000
  442. DC CL10'NO DEVICE' 21 00430000
  443. DC CL10'ERASE CK' 22 00431000
  444. DC CL10'CONTROL CK' 23 00432000
  445. DC CL10'LOAD CK' 24 00433000
  446. DC CL10'FORMAT CK' 25 00434000
  447. DC CL10'CMD SUPP' 26 00435000
  448. DC CL10'LOST DATA' 27 00436000
  449. DC CL10'TIMEOUT' 28 00437000
  450. DC CL10'PARITY CK' 29 00438000
  451. DC CL10'UNIT SPEC' ....30 @VA08135 00438100
  452. DC CL10'CTRL CHECK' ....31 @VA08135 00438200
  453. DC CL10'OP CHECK' ....32 @VA08135 00438300
  454. SPACE 1 00439000
  455. REPLY DC X'15',C'Reply ' HRC202DK 00440490
  456. CANCEL DC C'CANCEL' 00441000
  457. DC C', ' 00442000
  458. RETRY DC C'RETRY' 00443000
  459. DC C', ' 00444000
  460. OR DC C' or ' HRC202DK 00445490
  461. IGNORE DC C'IGNORE' 00446000
  462. SPACE 1 00447000
  463. SP3DMK DC X'000000',C'DMK' HRC202DK 00448490
  464. SPACE 1 00449000
  465. MSGUSTXT DC C'Device XXX not Ready, CP-Operator notified' HRC202DK 00450040
  466. MAXINPUT EQU 132 MAXIMUM INPUT COUNT @V407510 00450100
  467. F30 DC F'30' @VA09494 00450200
  468. EJECT 00451000
  469. LTORG 00452000
  470. EJECT 00453000
  471. MSGAREA DSECT 00454000
  472. MSGRSP DS 0XL1 @V2B3729 00455000
  473. MSGPREX DS XL6 00456000
  474. MSGIDENT DS XL3 00457000
  475. MSGNUM DS XL3 00458000
  476. MSGIND DS 1X 00459000
  477. DS 1X 00460000
  478. DEVHDR DS XL4 00461000
  479. DS 1X 00462000
  480. MSGDEV DS XL3 00463000
  481. DS 1X 00464000
  482. MSGTEXT DS XL10 00465000
  483. DS 2X 00466000
  484. CMDHDR DS XL4 00467000
  485. DS 1X 00468000
  486. MSGCMD DS XL2 00469000
  487. DS 2X 00470000
  488. ORG *-11 @V2B3729 00471000
  489. SNSMSG DS XL11 @V2B3729 00472000
  490. SNSHDR DS XL4 00473000
  491. DS 1X 00474000
  492. MSGSNS DS XL48 AREA FOR SENSE BYTES @V2B3729 00475000
  493. DS 19X 00476000
  494. NXTLINE DS XL11 00477000
  495. CSWHDR DS XL4 00478000
  496. DS 1X 00479000
  497. MSGCSW DS XL17 00480000
  498. DS 1X 00481000
  499. USERHDR DS XL7 00482000
  500. DS 1X 00483000
  501. MSGUSER DS XL8 00484000
  502. DS 1X 00485000
  503. HAHDR DS XL7 00486000
  504. DS 1X 00487000
  505. MSGHA DS XL12 00488000
  506. DS 3X 00489000
  507. MSGSIZE EQU (*-MSGAREA+7)/8 LENGTH OF MESSAGE BUFFER @V2B3729 00490000
  508. MSGLNG EQU (*-MSGAREA) @V2B3729 00491000
  509. MSG1L EQU (SNSHDR-MSGAREA-2) @V2B3729 00492000
  510. MSG1SNSL EQU (SNSHDR+5-MSGAREA) @V2B3729 00493000
  511. MSG2SNSL EQU (SNSHDR+5-SNSMSG) @V2B3729 00494000
  512. MSG3L EQU (*-NXTLINE) @V2B3729 00495000
  513. EJECT 00496000
  514. COPY IOBLOKS 00497000
  515. COPY VMBLOK 00498000
  516. COPY DEVTYPES 00499000
  517. COPY EQU 00500000
  518. COPY IOER 00501000
  519. COPY SAVE 00502000
  520. COPY RBLOKS 00503000
  521. PSA 00504000
  522. END 00505000