Table of Contents

DMKEIG Source

References

Source Listing

DMKEIG.ASSEMBLE.txt
  1. EIG TITLE 'DMKEIG (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE INPUT SEQUENCE FIELDS @V200820 00002000
  3. DMKEIG CSECT 00003000
  4. MODULEID DC CL8'DMKEIG' @VA01068 00004000
  5. ********************************************************************** 00005000
  6. * 00006000
  7. * MODULE NAME - DMKEIG 00007000
  8. * 00008000
  9. * FUNCTION 00009000
  10. * THIS ROUTINE WILL ANALYZE THE 2880 CHANNEL LOGOUT AND 00010000
  11. * SET APPROPRIATE BITS IN THE ECSW FIELD ACCORDING TO THE 00011000
  12. * RESULTS OF THIS ANALYSIS. IT WILL ALSO MOVE THE CHANNEL 00012000
  13. * LOGOUT TO THE CHANNEL CHECK RECORD. 00013000
  14. * 00014000
  15. * ENTRY POINTS 00015000
  16. * DMKEIG - FROM THE CHANNEL CONTROL ROUTINE 00016000
  17. * 00017000
  18. * INPUT 00018000
  19. * 1. CHANNEL LOGOUT DATA 00019000
  20. * 2. POINTER TO THE CHANNEL CHECK RECORD 00020000
  21. * 3. POINTER TO THE CCH SWITCH FIELD (ENTSW) 00021000
  22. * 00022000
  23. * OUTPUT 00023000
  24. * 1. APPROPRIATE BITS ARE SET IN THE CCH RECORD 00024000
  25. * FIELD (FAILECSW). 00025000
  26. * 2. THE CHANNEL LOGOUT IS MOVE TO THE CCH RECORD. 00026000
  27. * 00027000
  28. * EXTERNAL REFERENCES 00028000
  29. * THE POINTER AT LOCATION 172 POINTS TO THE CHANNEL LOGOUT. 00029000
  30. * 00030000
  31. * EXIT - NORMAL 00031000
  32. * RETURN TO THE CCH CONTROL ROUTINE VIA REGISTER 14. 00032000
  33. * 00033000
  34. * EXIT - ERROR 00034000
  35. * NONE 00035000
  36. * 00036000
  37. * TABLES / WORK AREA 00037000
  38. * THE CHANNEL CHECK RECORD 00038000
  39. * 00039000
  40. * ATTRIBUTES 00040000
  41. * DMKEIG IS PRIVILEGED AND REUSABLE 00041000
  42. * 00042000
  43. * CHARACTER CODE DEPENDENCIES 00043000
  44. * NONE 00044000
  45. * 00045000
  46. * NOTE 00046000
  47. * NONE 00047000
  48. * 00048000
  49. ********************************************************************** 00049000
  50. EJECT 00050000
  51. ********************************************************************** 00051000
  52. ********************************************************************** 00052000
  53. *********** 2880 LOGOUT INDICATORS *********************** 00053000
  54. ********************************************************************** 00054000
  55. CCHDCIN EQU X'01' DISCONNECT IN INDICATION 00055000
  56. SCANMAJR EQU X'80' SCAN MAJOR BIT 00056000
  57. UCWARCK EQU X'20' UCWAR UNIT ADDR CHECK 00057000
  58. PSEUDOCC EQU X'80' PSEUDO CONTROL CHECK 00058000
  59. SCSPCK EQU X'04' SCS PARITY CHECK 00059000
  60. PRIORCK EQU X'80' PRIORITY CHECK 00060000
  61. SIOMAJOR EQU X'20' SIO MAJOR OP 00061000
  62. IRPTRESP EQU X'20' INTERRUPT RESPONSE BIT 00062000
  63. CCRESELM EQU X'02' CC RESELECT MAJOR 00063000
  64. CCWLATCH EQU X'80' CCW LATCH BIT 00064000
  65. CMDADDRV EQU X'04' CMD ADDRESS VALID 00065000
  66. USVALID EQU X'08' UNIT STATUS VALID 00066000
  67. CMDOUT EQU X'80' CMD OUT SENT 00067000
  68. DATAXFER EQU X'40' DATA TRANSFER INDICATOR 00068000
  69. INITDATA EQU X'10' INITIAL DATA 00069000
  70. DATAXMAJ EQU X'04' DATA XFER MAJOR 00070000
  71. CURMAJOR EQU X'40' CUR MAJOR OP 00071000
  72. UCW0111 EQU X'18' UCW0 AND 1 OP 00072000
  73. ICBD EQU 10 ICB EQUAL 5 00073000
  74. UNITSEL EQU X'80' UNIT SELECT 00074000
  75. SHARSUBC EQU X'10' SHARED SUBCHANNEL BIT 00075000
  76. ********************************************************************** 00076000
  77. EJECT 00077000
  78. ********************************************************************** 00078000
  79. ENTRY DMKEIG80 00079000
  80. DMKEIG80 EQU * 00080000
  81. USING PSA,R0 SETUP ADDRESSABILITY FOR LOWCORE 00081000
  82. USING SAVEAREA,R13 SETUP ADDRESSABILITY FOR SAVE AREA 00082000
  83. USING *,R12 SETUP ADDRESSABILITY FOR MODULE 00083000
  84. USING CCHREC,R9 SETUP ADDRESSABILITY FOR CCH RECORD 00084000
  85. USING IOERBLOK,R4 SETUP ADDRESSABILITY FO I/O ERROR 00085000
  86. USING IOELOG,R1 SETUP ADDRESSABILITY FOR LOGOUT AREA 00086000
  87. * BLOCK 00087000
  88. LR R1,R12 SAVE THE BASE REG. TO AVIOD DESTROYING 00088000
  89. LR R12,R15 SETUP BASE ADDRESS 00089000
  90. STM R2,R0,CCHSAVE SAVE ALL REGS. EXECPT REGISTER 1 00090000
  91. ST R1,CCHSAVE+40 SAVE THE CONTENT OF REGISTER 12 00091000
  92. LA R2,6 SETUP COUNT VALUE FOR LOOP 00092000
  93. ICM R1,15,IOELPNTR GET THE I/O EXTENDED LOGOUT POINTER 00093000
  94. BZ CLEANUP IF ADDR IS ZERO, GO INDICATE TERMINATION 00094000
  95. * OPERATING SYSTEM 00095000
  96. CCHLOGU EQU * 00096000
  97. CLC 0(4,R1),FFS HAS CHANNEL LOGOUT ? 00097000
  98. BE SETRCINV NO, GO SET SYSTEM TERMINATION 00098000
  99. LA R1,4(R1) UPDATE THE I/O EXTENDED LOGOUT POINTER 00099000
  100. BCT R2,CCHLOGU GO TEST NEXT LOCATION 00100000
  101. ICM R1,15,IOELPNTR GET THE I/O EXTENDED LOGOUT POINTER 00101000
  102. TM CSW+5,CCC+IFCC IS INTERFACE OR CHANNEL CONTROL 00102000
  103. * CHECK SET ? 00103000
  104. BZ CKTIOADR NO, MUST BE CDC 00104000
  105. TM LW1,CCHDCIN WAS UNIT DISCONNECTED ? 00105000
  106. BZ ANALBEG NO, GO TEST MAJOR SCAN 00106000
  107. OI IGTERMSQ,CCHDI SET DISCONNECT IN FLAG 00107000
  108. ANALBEG EQU * 00108000
  109. TM LW3,SCANMAJR IS THIS A MAJOR SCAN ? 00109000
  110. BZ CHECKCLR NO, GO INDICATE UNIT ADDR IS VALID 00110000
  111. TM LW1,UCWARCK IS THIS CCWAR UA CHECK ? 00111000
  112. BO SET0303 YES, GO SET CODE @VA03071 00112000
  113. SET0301 EQU * 00113000
  114. OI IGTERMSQ,RTCODE3+COMPFES SET RETRY CODE TO 3,TERM TO 1 00114000
  115. B CCHRETRN GO INDICATE THE SOURCE OF THE ERROR 00115000
  116. SET0303 EQU * 00116000
  117. OI IGTERMSQ,RTCODE3+COMPSYS SET RETRY CODE TO 3, TERM TO 3 00117000
  118. B CLEANUP1 GO SET SYSTEM TERMINATION FLAG 00118000
  119. CHECKCLR EQU * 00119000
  120. TM ENTSW,INTERCCH WAS THIS ERROR ON AN INTERRUPT ? 00120000
  121. BO CKPSEUDO YES, GO SET UNIT ADDRESS VALID 00121000
  122. TM ENTSW,TIOCCH WAS THIS ON A TIO INSTRUCTION ? 00122000
  123. BO TIOSYNCH YES, GO TEST TIO FLAG 00123000
  124. TM LW3+3,X'02' WAS THIS ON A HIO INSTRUCTION ? 00124000
  125. BZ CKPSEUDO NO, GO SET UNIT ADDRESS VALID 00125000
  126. SETRCINV EQU * 00126000
  127. NI IGVALIDB,X'FF'-CCHRCV SET RETRY CODE INVALID 00127000
  128. B CLEANUP1 GO SET SYSTEM TERMINATION FLAG 00128000
  129. TIOSYNCH EQU * 00129000
  130. TM LW27,X'40' IS THE TIO SYNCH LATCH ON ? 00130000
  131. BO CKPSEUDO YES, GO SET UNIT ADDRESS VALID 00131000
  132. LH R2,LW2 GET THE TIO UNIT ADDRESS 00132000
  133. N R2,MASK1 CLEAR UNWANTED BITS 00133000
  134. LH R3,LW2+2 GET THE UCWAR AND IAB 00134000
  135. N R3,MASK1 CLEAR UNWANTED BITS 00135000
  136. CR R2,R3 ARE THE ADDRESSES EQUAL ? 00136000
  137. BNE HIONBCK NO, GO TEST FOR HIO 00137000
  138. CKPSEUDO EQU * 00138000
  139. OI IGVALIDB,CCHDAV SET UNIT ADDRESS VALID 00139000
  140. HIONBCK EQU * 00140000
  141. TM LW3,X'08' IS HIO BUSY STATE SET ? 00141000
  142. BZ TESTSIOM NO, GO TEST SIO FLAG 00142000
  143. TM LW7+1,X'20' IS THE OP-IN ON ? 00143000
  144. BZ SET0401 NO, GO SET RETRY CODE 00144000
  145. SET0410 EQU * 00145000
  146. OI IGTERMSQ,RTCODE4+COMPSEL SET RETRY CODE TO (4) AND 00146000
  147. * TERMINATION CODE TO (10) 00147000
  148. B LASTVAL GO CHECK LAST VALIDITY FLAG 00148000
  149. TESTSIOM EQU * 00149000
  150. TM LW3,SIOMAJOR IS THIS A SIO MAJOR OP 00150000
  151. BO CKCCWLCH YES, GO TEST CCW LCA 00151000
  152. TM LW3,CCRESELM IS THIS CC RESELECT MAJOR 00152000
  153. BNO CKDATATR NO, GO CHECK DATA XFER 00153000
  154. CKCCWLCH EQU * 00154000
  155. TM LW3+2,CCWLATCH IS CCW LATCH SET ? 00155000
  156. BO CKCMDOUT YES, GO SEE IF CMD OUT IS ON 00156000
  157. SET0401 EQU * 00157000
  158. OI IGTERMSQ,RTCODE4+COMPFES SET RETRY CODE TO 4 AND 00158000
  159. * TERMINATION CODE TO 01 00159000
  160. LASTVAL EQU * 00160000
  161. TM LW0+2,SCSPCK IS THIS A SCS P CHECK ? 00161000
  162. BO CLEANUP1 YES, GO SET SYSTEM TERMINATION 00162000
  163. TM LW2,CMDADDRV IS COMMAND ADDRESS VALID ? 00163000
  164. BNO CKUSVAL NO, GO CHECK US VALID FLAG 00164000
  165. OI IGVALIDB,CCHCMDV SET CMD ADDRESS VALID BIT 00165000
  166. CKUSVAL EQU * 00166000
  167. TM LW2,USVALID IS UNIT STATUS VALID FLAG ON ? 00167000
  168. BNO SETRCVAL NO, GO SET RC VALID FLAG 00168000
  169. OI IGVALIDB,CCHUSV SET UNIT STATUS VALIDITY FLAG 00169000
  170. SETRCVAL EQU * 00170000
  171. OI IGVALIDB,CCHRCV SET RETRY CODE VALIDITY FLAG 00171000
  172. CKDCIN EQU * 00172000
  173. TM LW1,CCHDCIN IS UNIT DISCONNECTED ? 00173000
  174. BZ CCHRETRN NO, GO INITIALIZE THE LOGOUT AREA 00174000
  175. NI IGTERMSQ,X'FF'-COMPSYS RESET TERMINATION CODE 00175000
  176. OI IGTERMSQ,COMPSEL SET SELECTIVE RESET FLAG 00176000
  177. B CCHRETRN GO INITIALIZE LOGOUT AREA 00177000
  178. CKCMDOUT EQU * 00178000
  179. TM LW3+3,CMDOUT HAS DATA BEEN XFERRED ? 00179000
  180. BNO SET0410 NO, GO SET THE RETRY CODE (4) AND 00180000
  181. * TERMINATION CODE (10) 00181000
  182. CKDATAXR EQU * 00182000
  183. TM LW9,DATAXFER HAS DATA BEEN XFERRED ? 00183000
  184. BO CKINDATA YES, GO TEST INITIAL DATA 00184000
  185. SET0110 EQU * 00185000
  186. OI IGTERMSQ,RTCODE1+COMPSEL SET RETRY CODE TO (1) AND 00186000
  187. * TERMINATION CODE TO (10) 00187000
  188. B LASTVAL GO CHECK LAST VALIDITY FLAG 00188000
  189. CKINDATA EQU * 00189000
  190. TM LW9,INITDATA IS THIS THE INITIAL DATA ? 00190000
  191. BO SET0210 YES, GO SET CODES 00191000
  192. SET0310 EQU * 00192000
  193. OI IGTERMSQ,RTCODE3+COMPSEL SET RETRY CODE TO (3) AND 00193000
  194. * TERMINATION CODE TO (10) 00194000
  195. B LASTVAL GO CHECK LAST VALIDITY FLAG 00195000
  196. SET0210 EQU * 00196000
  197. OI IGTERMSQ,RTCODE2+COMPSEL SET RETRY CODE TO (2) AND 00197000
  198. * TERMINATION CODE TO (10) 00198000
  199. B LASTVAL GO CHECK LAST VALIDITY FLAG 00199000
  200. CKDATATR EQU * 00200000
  201. TM LW3,DATAXMAJ IS THIS DATA XFER MAJOR 00201000
  202. BO CKINDATA YES, GO CHECK INITIAL DATA 00202000
  203. TM LW3,CURMAJOR IS CUR MAJOR UP ? 00203000
  204. BNO CKTIOMAJ NO, GO CHECK RESPONSE 00204000
  205. TM LW3+3,CMDOUT IS COMMAND OUT ? 00205000
  206. BNO SETUAINV NO, GO SET UA INVALID 00206000
  207. TM LW2+2,SHARSUBC IS THIS A SHARED SUBCHANNEL ? 00207000
  208. BNO SET0510 NO, GO SET RETRY CODE 00208000
  209. TM LW3+3,UCW0111 IS UCW 0 AND 1 SET TO ONE ? 00209000
  210. BO SET0510 YES, GO SET RETRY CODE 00210000
  211. SETUAINV EQU * 00211000
  212. NI IGVALIDB,X'FF'-CCHDAV SET UNIT ADDRESS INVALID 00212000
  213. SET0510 EQU * 00213000
  214. OI IGTERMSQ,RTCODE5+COMPSEL SET RETRY CODE TO (5) AND 00214000
  215. * TERMINATION CODE TO (10) 00215000
  216. B LASTVAL GO CHECK LAST VALIDITY FLAG 00216000
  217. SET0501 EQU * 00217000
  218. OI IGTERMSQ,RTCODE5+COMPFES SET RETRY CODE TO (5) AND 00218000
  219. * TERMINATION CODE TO (1) 00219000
  220. B LASTVAL GO CHECK VALIDITY FLAG 00220000
  221. CKTIOMAJ EQU * 00221000
  222. TM LW3,X'10' IS TIO MAJOR ON ? 00222000
  223. BO CKSCS YES, GO GET SCS INDICATORS 00223000
  224. TM LW3+1,IRPTRESP IRPT RESPONSE UP ? 00224000
  225. BNO CLEANUP1 NO, GO SET SYSTEM TERMINATION 00225000
  226. TM LW2+2,X'0E' DOES ICB EQUAL 7 ? 00226000
  227. BO SET0501 YES, GO SET RETRY CODE 00227000
  228. TM LW2+2,ICBD IS ICB EQUAL D ? 00228000
  229. BO SET0501 YES, GO SET CODE 00229000
  230. CKUNITSL EQU * 00230000
  231. TM LW9,UNITSEL IS UNIT SELECT ON ? 00231000
  232. BO SET0010 YES, GO SET RETRY CODE 00232000
  233. SET0001 EQU * 00233000
  234. OI IGTERMSQ,RTCODE0+COMPFES SET RETRY CODE TO (0) AND 00234000
  235. * TERMINATION CODE TO (01) 00235000
  236. B LASTVAL GO CHECK VALIDITY FLAG 00236000
  237. SET0010 EQU * 00237000
  238. OI IGTERMSQ,RTCODE0+COMPSEL SET RETRY CODE TO (0) AND 00238000
  239. * TERMINATION CODE TO (10) 00239000
  240. B LASTVAL GO CHECK VALIDITY FLAG 00240000
  241. CKSCS EQU * 00241000
  242. SR R2,R2 CLEAR REGISTER 2 00242000
  243. IC R2,LW22 GET THE SCS INDICATORS 00243000
  244. LA R3,14 GET THE MASK FLAGS 00244000
  245. NR R2,R3 CLEAR THE UNWANTED BITS 00245000
  246. IC R2,SCSLIST(R2) GET THE SCS INDICATOR 00246000
  247. CR R2,R3 IS THE INDICATOR EQUAL TO 14 ? 00247000
  248. BNE SET0001 NO, GO SET RETRY CODE 00248000
  249. B CKUNITSL GO TEST FOR UNIT SELECT 00249000
  250. CKTIOADR EQU * 00250000
  251. TM ENTSW,TIOCCH IS THIS ERROR ON A TIO ? 00251000
  252. BZ CCHRETRN NO, GO INITIALIZE THE LOGOUT 00252000
  253. CLC SIOADDR+1(1),LW2+3 IS THE UNIT ADDRESS SAME AS 00253000
  254. * IN THE LOGOUT ? 00254000
  255. BE CCHRETRN YES, GO INITIALIZE LOGOUT 00255000
  256. CLEANUP EQU * 00256000
  257. OI ENTSW,TERMSYS SET SYSTEM TERMINATION 00257000
  258. B CCHEXIT4 GO RESTORE REGISTERS 00258000
  259. CLEANUP1 EQU * 00259000
  260. OI ENTSW,TERMSYS SET SYSTEM TERMINATION 00260000
  261. CCHRETRN EQU * 00261000
  262. SR R2,R2 CLEAR REGISTER 2 00262000
  263. IC R2,BLAME GET SOURCE OF ERROR 00263000
  264. SLL R2,3 SETUP CORRECT FORMAT 00264000
  265. STC R2,IGBLAME SAVE IN CCH RECORD (ECSW) 00265000
  266. MVC CCHLOG80(112),0(R1) SAVE THE I/O EXTENDED LOGOUT 00266000
  267. MVI 0(R1),X'FF' INITIALIZE THE I/O EXTENDED LOGOUT 00267000
  268. MVC 1(111,R1),0(R1) TO ALL ONES 00268000
  269. MVI CCHSAVE+59,X'18' CHANGE THE LENGTH OF THE CCH @VA00881 00269000
  270. * RECORD 00270000
  271. CCHEXIT4 EQU * 00271000
  272. LM R2,R0,CCHSAVE RESTORE THE REGISTERS 00272000
  273. BR R14 RETURN TO CCH CONTROL ROUTINE 00273000
  274. ********************************************************************** 00274000
  275. SPACE 2 00275000
  276. ********************************************************************** 00276000
  277. ********************************************************************** 00277000
  278. EJECT 00278000
  279. ********************************************************************** 00279000
  280. CCHSAVE DS 16F 00280000
  281. MASK1 DC X'000001FF' CLEAR UNWANTED BITS WITH THIS MASK 00281000
  282. SCSLIST DC X'0E' SUBCHANNEL STATUS BITS 00282000
  283. DC 5X'00' 00283000
  284. DC X'0E000E' 00284000
  285. DC 6X'00' 00285000
  286. ******************************************************************** 00286000
  287. ********************************************************************** 00287000
  288. ********************************************************************** 00288000
  289. EJECT 00289000
  290. ********************************************************************** 00290000
  291. ********************************************************************** 00291000
  292. ******** DESECT FOR THE 2880 CHANNEL LOGOUT AREA 00292000
  293. ********************************************************************** 00293000
  294. IOELOG DSECT 00294000
  295. LW0 DS F I/O LOGOUT WORD 0 00295000
  296. LW1 DS F I/O LOGOUT WORD 1 00296000
  297. LW2 DS 0F I/O LOGOUT WORD 2 00297000
  298. CHANLID DS C CHANNEL NUMBER 00298000
  299. DS 3C PART OF WORD 2 00299000
  300. LW3 DS F I/O LOGOUT WORD 3 00300000
  301. LW4 DS F I/O LOGOUT WORD 4 00301000
  302. LW5 DS F I/O LOGOUT WORD 5 00302000
  303. LW6 DS F I/O LOGOUT WORD 6 00303000
  304. LW7 DS F I/O LOGOUT WORD 7 00304000
  305. LW8 DS F I/O LOGOUT WORD 8 00305000
  306. LW9 DS F I/O LOGOUT WORD 9 00306000
  307. LW10 DS F I/O LOGOUT WORD 10 00307000
  308. LW11 DS F I/O LOGOUT WORD 11 00308000
  309. LW12 DS F I/O LOGOUT WORD 12 00309000
  310. LW13 DS F I/O LOGOUT WORD 13 00310000
  311. LW14 DS F I/O LOGOUT WORD 14 00311000
  312. LW15 DS F I/O LOGOUT WORD 15 00312000
  313. LW16 DS F I/O LOGOUT WORD 16 00313000
  314. LW17 DS F I/O LOGOUT WORD 17 00314000
  315. LW18 DS F I/O LOGOUT WORD 18 00315000
  316. LW19 DS F I/O LOGOUT WORD 19 00316000
  317. LW20 DS F I/O LOGOUT WORD 20 00317000
  318. LW21 DS F I/O LOGOUT WORD 21 00318000
  319. LW22 DS F I/O LOGOUT WORD 22 00319000
  320. LW23 DS F I/O LOGOUT WORD 23 00320000
  321. LW24 DS F I/O LOGOUT WORD 24 00321000
  322. LW25 DS F I/O LOGOUT WORD 25 00322000
  323. LW26 DS F I/O LOGOUT WORD 26 00323000
  324. LW27 DS 0F I/O LOGOUT WORD 27 00324000
  325. OPERATN DS CL1 MAJOROPERATION INDICATOR 00325000
  326. BLAME DS CL1 SOURCE OF ERROR 00326000
  327. DS CL2 LAST TWO BYTES 00327000
  328. ********************************************************************** 00328000
  329. EJECT 00329000
  330. PSA 00330000
  331. COPY EQU 00331000
  332. COPY DEVTYPES 00332000
  333. COPY SAVE 00333000
  334. ENTSW EQU SAVEWRK1 @VA01638 00334000
  335. SIOADDR EQU SAVEWRK9 00335000
  336. COPY IOER 00336000
  337. COPY CCHREC 00337000
  338. END 00338000