Table of Contents

DMKSIX Source

References

Source Listing

DMKSIX.ASSEMBLE.txt
  1. SIX TITLE 'DMKSIX (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE INPUT SEQUENCE FIELDS @V200820 00002000
  3. DMKSIX CSECT 00003000
  4. MODULEID DC CL8'DMKSIX' @VA01068 00004000
  5. ********************************************************************** 00005000
  6. * 00006000
  7. * MODULE NAME - DMKSIX 00007000
  8. * 00008000
  9. * FUNCTION 00009000
  10. * THIS ROUTINE WILL ANALYZE THE 2860 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. * DMKSIX - 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. * CHANNEL LOGOUT (LOCATION X'130') 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. * DMKSIX 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. LOGWD1A EQU 304 1ST HALF OF LOGOUT WORD 1 00053000
  54. LOGWD1B EQU 308 2ND HALF OF LOGOUT WORD 1 00054000
  55. LOGWD2A EQU 312 1ST HALF OF LOGOUT WORD 2 00055000
  56. LOGWD2B EQU 316 12ND HALF OF LOGOUT WORD 2 00056000
  57. LOGWD3A EQU 320 1ST HALF OF LOGOUT WORD 3 00057000
  58. LOGWD3B EQU 324 2ND HALF OF LOGOUT WORD 3 00058000
  59. CCHOPIN EQU X'80' TEST FOR OPERATION IN 00059000
  60. CCHPIT EQU X'02' POLLING INTERRUPT BIT 00060000
  61. CCHSIOLH EQU X'02' SIO LATCH 00061000
  62. CCHSTGCK EQU X'04' STORAGE CHECK BIT 00062000
  63. CCHSETUP EQU X'10' SET UP BIT IN LOG 00063000
  64. CCHCMDRG EQU X'20' COMMAND REGISTER PARITY VALID @VA01068 00064000
  65. ********************************************************************** 00065000
  66. EJECT 00066000
  67. ********************************************************************** 00067000
  68. ENTRY DMKSIX60 00068000
  69. DMKSIX60 EQU * 00069000
  70. USING PSA,R0 SETUP ADDRESSABILITY FOR LOWCORE 00070000
  71. USING SAVEAREA,R13 SETUP ADDRESSABILITY FOR SAVE AREA 00071000
  72. USING *,R12 SETUP ADDRESSABILITY FOR MODULE 00072000
  73. USING CCHREC,R9 SETUP ADDRESSABILITY FOR CCH RECORD 00073000
  74. USING IOERBLOK,R4 SETUP ADDRESSABILITY FO I/O ERROR 00074000
  75. * BLOCK 00075000
  76. LR R1,R12 SAVE THE BASE REG. TO AVIOD DESTROYING 00076000
  77. LR R12,R15 SETUP BASE ADDRESS 00077000
  78. STM R2,R0,CCHSAVE SAVE ALL REGS. EXECPT REGISTER 1 00078000
  79. ST R1,CCHSAVE+40 SAVE THE CONTENT OF REGISTER 12 00079000
  80. LA R2,6 SETUP COUNT VALUE FOR LOOP 00080000
  81. LA R1,X'130' GET THE ADDRESS OF THE I/O EXTENDED 00081000
  82. * LOGOUT 00082000
  83. CCHLOGU EQU * 00083000
  84. CLC 0(4,R1),FFS HAS CHANNEL LOGOUT ? 00084000
  85. BE CLEANUP NO, GO SET SYSTEM TERMINATION 00085000
  86. LA R1,4(R1) UPDATE THE I/O EXTENDED LOGOUT POINTER 00086000
  87. BCT R2,CCHLOGU GO TEST NEXT LOCATION 00087000
  88. IC R2,LOGWD3B+3 GET UNIT ADDRESS PARITY BIT 00088000
  89. SRL R2,7 ISOLATE PARITY BIT 00089000
  90. STC R2,PARIT SETUP PARITY TEST PARAMETER 00090000
  91. BAL R14,LOGPAR GO TEST PARITY BYTE 00091000
  92. DC AL2(LOGWD2A+3) LOCATION OF BYTE TO BE TESTED 00092000
  93. DC X'01' NUMBER OF BYTES TO BE TESTED 00093000
  94. PARIT DS X PARITY BYTE 00094000
  95. BNE CCH109A BAD PARITY IS INDICATED 00095000
  96. TM ENTSW,TIOCCH IS THIS AN ERROR ON A TIO ? 00096000
  97. BZ VALIDCCH NO, GO SET UNIT ADDRESS VALID 00097000
  98. CLC SIOADDR+1(1),LOGWD2A+3 IS THE UNIT ADDRESS EQUAL THE 00098000
  99. * UNIT ADDRESS IN THE LOGOUT 00099000
  100. BNE CCH109A NO, GO TEST PARITY BYTE 00100000
  101. VALIDCCH EQU * 00101000
  102. OI IGVALIDB,CCHDAV SET UNIT ADDRESS VALID FLAG 00102000
  103. CCH109A EQU * 00103000
  104. IC R2,LOGWD3B+3 GET PARITY BYTE FOR COMMAND REG 00104000
  105. SRL R2,2 ISOLATE PARITY BIT 00105000
  106. STC R2,PARIT1 SETUP PARITY TEST PARAMETER 00106000
  107. BAL R14,LOGPAR GO TEST PARITY BYTE 00107000
  108. DC AL2(LOGWD2A+1) LOCATION OF BYTE TO BE TESTED 00108000
  109. DC X'01' NUMBER OF BYTES TO BE TESTED 00109000
  110. PARIT1 DS X PARITY BYTE 00110000
  111. BNE CCH109D BAD PARITY IS INDICATED 00111000
  112. OI ENTSW,CCHCMDRG SET COMMAND REG VALID FLAG 00112000
  113. CCH109D EQU * 00113000
  114. TM CSW+5,IFCC IS THIS AN INTERFACE CONTROL CHECK ? 00114000
  115. BO CCH110 YES, GO INDICATE TERMINATION CODE 00115000
  116. OI IGTERMSQ,COMPFES SET FES TERMINATION CODE 00116000
  117. TM LOGWD3B,X'80' IS OP-IN UP ? 00117000
  118. BZ CCH109B NO, GET PARITY BYTE FOR COMMAND ADDR. 00118000
  119. OI IGVALIDB,CCHUSV SET VALID UNIT STATUS FLAG 00119000
  120. CCH109B EQU * 00120000
  121. IC R2,LOGWD3B+2 GET PARITY BYTE FOR COMMAND ADDRESS 00121000
  122. SRL R2,4 ISOLATE PARITY BIT 00122000
  123. STC R2,PARIT2 SETUP PARITY TEST PARAMETER 00123000
  124. BAL R14,LOGPAR GO TEST PARITY BYTE 00124000
  125. DC AL2(LOGWD1A+1) LOCATION OF BYTE TO BE TESTED 00125000
  126. DC X'03' NUMBER OF BYTES TO BE TESTED 00126000
  127. PARIT2 DS X PARITY BYTE 00127000
  128. BNE CCH112 BAD PARITY IS INDICATED 00128000
  129. CLC LOGWD1A+1(3),CSW+1 IS THE CSW ADDRESS THE SAME AS 00129000
  130. * IN THE LOGOUT 00130000
  131. BL CCH112 NO, COMMAND ADDRESS IS INVALID 00131000
  132. OI IGVALIDB,CCHCMDV SET COMMAND ADDRESS VALID FLAG 00132000
  133. CCH112 EQU * 00133000
  134. TM ENTSW,TIOCCH+HIOCCH IS THIS AN ERROR ON A TIO OR HIO ? 00134000
  135. BNZ CCH128 YES, GO CHECK COMMAND CHAIN 00135000
  136. CCH112G EQU * 00136000
  137. TM LOGWD3A+1,CCHSETUP IS SET UP ON IN LOGOUT ? 00137000
  138. BO CCH113 YES, GO SET RETRY CODE 00138000
  139. TM ENTSW,CCHCMDRG IS COMMAND REG PARITY VALID ? 00139000
  140. BZ CCH113 NO, GO SET RETRY CODE 00140000
  141. TM LOGWD3B,CCHOPIN IS OP-IN UP ? 00141000
  142. BO CCH112H YES, GO TEST LOGOUT 00142000
  143. NI IGTERMSQ,X'FF'-COMPFES SET TERMINATION CODE TO (00) 00143000
  144. CCH112H EQU * 00144000
  145. TM ENTSW,TIOCCH IS THIS AN ERROR ON A TIO ? 00145000
  146. BO CCH114 YES, GO CHECK SEQ. TRIGER 00146000
  147. TM LOGWD3A,X'08' IS SEQ TWO TRIGER ON ? 00147000
  148. BO CCH115 YES, GO CHECK DATA TRANFER 00148000
  149. TM LOGWD3B+1,CCHSTGCK IS THIS A STORAGE ERROR ? 00149000
  150. BO CCH112D YES, GO TEST COMMAND ADDRESS FLAG 00150000
  151. CCH112A EQU * 00151000
  152. OI IGBLAME,CCHCHNL INTERNAL CHANNEL ERROR 00152000
  153. CCH112B EQU * 00153000
  154. OI IGTERMSQ,RTCODE4 SET RETRY CODE TO (01) 00154000
  155. TM LOGWD3B,CCHSIOLH IS SIO LATCH ON ? 00155000
  156. BZ CCHRETRN NO, GO INITIALIZE THE LOGOUT AREA 00156000
  157. CCH112C EQU * 00157000
  158. OI IGVALIDB,CCHUSV SET UNIT STATUS VALID FLAG 00158000
  159. B CCHRETRN GO INITIALIZE THE LOGOUT AREA 00159000
  160. CCH112D EQU * 00160000
  161. TM IGVALIDB,CCHCMDV IS THE COMMAND ADDRESS VALID F? 00161000
  162. BZ CCH112A NO, GO INDICATE CHANNEL ERROR 00162000
  163. OI IGBLAME,CCHSTG INDICATE STORAGE IS THE SOURCE OF THE 00163000
  164. * ERROR 00164000
  165. B CCH112B GO SET THE RETRY CODE 00165000
  166. CCH110 EQU * 00166000
  167. OI IGTERMSQ,COMPSEL SET THE TERMINATION CODE FOR THE 00167000
  168. * SELECTOR RESET 00168000
  169. OI IGVALIDB,CCHCMDV SET THE COMMAND ADDRESS VALID FLAG 00169000
  170. TM LOGWD3B+1,X'20' IS DISCONNECT SET ? 00170000
  171. BZ CCH110D NO, GO TEST FOR POLLING INTERUPT 00171000
  172. OI IGTERMSQ,CCHDI SET THE DISCONNECT FLAG 00172000
  173. CCH110D EQU * 00173000
  174. TM LOGWD3A+1,CCHPIT IS POLLING INTERUPT FLAG SET ? 00174000
  175. BZ CCH110A NO, GO TEST INDICATOR IN LOGUT 00175000
  176. OI IGBLAME,CCHINTFC INDICATE INTERFACE IS THE SOURCE 00176000
  177. * OF THE ERROR 00177000
  178. OI IGTERMSQ,RTCODE3 SET THE RETRY CODE TO (011) 00178000
  179. B CCHRETRN GO INITIALIZE THE LOGOUT AREA 00179000
  180. CCH110A EQU * 00180000
  181. TM ENTSW,TIOCCH+HIOCCH IS THIS AN ERROR ON A TIO OR HIO ? 00181000
  182. BNZ CCH123 YES, GO CHECK COMMAND CHAIN 00182000
  183. CCH110B EQU * 00183000
  184. TM LOGWD3A+1,CCHSETUP IS SET UP BIT ON IN LOGOUT 00184000
  185. BO CCH116 YES, GO SET THE RETRY CODE 00185000
  186. TM ENTSW,CCHCMDRG DOES THE COMMAND REG HAVE VALID 00186000
  187. * PARITY ? 00187000
  188. BZ CCH116 NO, GO SET RETRY CODE 00188000
  189. TM LOGWD3A,X'20' IS COMMAND CHAINING INDICATED ? 00189000
  190. BO CCH110C YES, GO SET INTERFACE ERROR 00190000
  191. TM LOGWD3B,CCHSIOLH IS THE SIO LATCH ON ? 00191000
  192. BO CCH110C YES, GO SET INTERFACE ERROR 00192000
  193. TM LOGWD3A,X'08' IS SEQ TWO TRIGER ON ? 00193000
  194. BO CCH115 YES, GO CHECK FOR DATA TRANSFER 00194000
  195. CCH110C EQU * 00195000
  196. OI IGBLAME,CCHINTFC INDICATE INTERFACE IS THE SOURCE OF 00196000
  197. * THE ERROR 00197000
  198. OI IGTERMSQ,RTCODE1 SET RETRY CODE TO (001) 00198000
  199. B CCHRETRN GO INITIALIZE LOGOUT AREA 00199000
  200. CCH113 EQU * 00200000
  201. OI IGTERMSQ,RTCODE4 SET THE RETRY CODE TO (100) 00201000
  202. TM IGVALIDB,CCHDAV IS THE UNIT ADDRESS VALID ? 00202000
  203. BO CCH113A YES, GO TEST FOR STORAGE CHECK 00203000
  204. TM LOGWD3B,CCHSIOLH IS SIO LATCH ON ? 00204000
  205. BZ CCH113B NO, GO SET INTERNAL CHANNEL ERRO FLAG 00205000
  206. OI IGBLAME,CCHCPU INDICATE THAT CPU WAS THE SOURCE OF THE 00206000
  207. * ERROR 00207000
  208. B CCH113C GO TEST THE LOGOUT AREA 00208000
  209. CCH113A EQU * 00209000
  210. TM LOGWD3B+1,CCHSTGCK IS STORAGE ERROR INDICATED IN 00210000
  211. * LOGOUT ? 00211000
  212. BZ CCH113B NO, INDICATE CHANNEL ERROR IN ECSW 00212000
  213. OI IGBLAME,CCHSTG INDICATE SOURCE OF ERROR IS STORAGE 00213000
  214. B CCH113C GO TO STORAGE ERROR SECTION 00214000
  215. CCH113B EQU * 00215000
  216. OI IGBLAME,CCHCHNL CHANNEL IS THE SOURCE OF THE ERROR 00216000
  217. CCH113C EQU * 00217000
  218. TM LOGWD3B,CCHSIOLH IS SIO LATCH ON ? 00218000
  219. BZ CCHRETRN NO, GO INITIALIZE LOGOUT AREA 00219000
  220. NI IGVALIDB,X'FF'-CCHCMDV TURN OFF COMMAND ADDRESS VALID 00220000
  221. * FLAG 00221000
  222. B CCHRETRN GO INITIALIZE LOGOUT AREA 00222000
  223. CCH114 EQU * 00223000
  224. TM LOGWD3A,X'0E' ANY SEQ. TRIGERS ? 00224000
  225. BNZ CCH115 YES, GO CHECK DATA TRANFER 00225000
  226. TM LOGWD3A,X'20' IS THE COMMAND CHAINING BIT ON ? 00226000
  227. BZ CCH114B NO, GO SET THE RETRY CODE 00227000
  228. TM LOGWD3B,CCHOPIN IS OP-IN UP ? 00228000
  229. BO CCH115 YES, GO CHECK FOR DATA TRANFER 00229000
  230. OI IGBLAME,CCHCHNL INDICATE CHANNEL IS THE SOURCE OF 00230000
  231. * ERROR 00231000
  232. OI IGTERMSQ,RTCODE1 SET RETRY CODE TO (001) 00232000
  233. B CCHRETRN GO INITIALIZE LOGOUT 00233000
  234. CCH114B EQU * 00234000
  235. OI IGTERMSQ,RTCODE4 SET THE RETRY CODE TO (100) 00235000
  236. OI IGBLAME,CCHCHNL INDICATE CHANNEL IS THE SOURCE 00236000
  237. * OF THE ERROR 00237000
  238. B CCH117 GO CHECK FOR ICC ERROR 00238000
  239. CCH115 EQU * 00239000
  240. TM LOGWD3B,X'80' IS OP-IN UP ? 00240000
  241. BO CCH115B NO, GO TEST FOR INTERFACE CONTROL CHECK 00241000
  242. TM CSW+5,IFCC IS THIS AN INTERFACE CONTROL @VA01068 00242000
  243. * CHECK 00243000
  244. BZ CCH115C NO, SET CHANNEL ERROR FLAG @VA01068 00244000
  245. CCH115A EQU * 00245000
  246. OI IGBLAME,CCHINTFC ERROR WAS DUE TO INTERFACE 00246000
  247. B CCH118 GO SET RETRY CODE 00247000
  248. CCH115B EQU * 00248000
  249. TM CSW+5,IFCC IS THIS AN INTERFACE CONTROL CHECK ? 00249000
  250. BO CCH115A YES, GO SET INTERFACE AS BEING THE 00250000
  251. * SOURCE OF THE ERROR 00251000
  252. TM LOGWD3B+1,CCHSTGCK IS THIS A STORAGE CHECK ? 00252000
  253. BO CCH115D YES, GO INDICATE STORAGE ERROR 00253000
  254. CCH115C EQU * 00254000
  255. OI IGBLAME,CCHCHNL INDICATE CHANNEL ERROR AS SOURCE 00255000
  256. * OF ERROR 00256000
  257. B CCH115E GO CHECK THE COMMAND VALID FLAG 00257000
  258. CCH115D EQU * 00258000
  259. OI IGBLAME,CCHSTG INDICATE THAT STORAGE WAS THE SOURCE OF 00259000
  260. * THE ERROR 00260000
  261. CCH115E EQU * 00261000
  262. TM IGVALIDB,CCHCMDV IS THE COMMAND VALID BIT ON IN LOGOUT 00262000
  263. BZ CCH118 NO, GO SET RETRY CODE 00263000
  264. MVC PARIT3(1),LOGWD3B+2 MOVE PARITY BYTE INTO PARAMETER 00264000
  265. BAL R14,LOGPAR GO TEST PARITY BYTE 00265000
  266. DC AL2(LOGWD1B+2) LOCATION OF BYTE TO BE TESTED IN LOGOUT 00266000
  267. DC X'02' NUMBER OF BYTES TO BE TESTED 00267000
  268. PARIT3 DS X PARITY BYTE 00268000
  269. BNE CCH118 BAD PARITY WAS INDICATED 00269000
  270. NI LOGWD3A+2,X'0F' CLEAR UNWANTED BITS 00270000
  271. BAL R14,LOGPAR GO TEST PARITY BYTE 00271000
  272. DC AL2(LOGWD3A+2) LOCATION OF BYTE TO BE TESTED IN LOGOUT 00272000
  273. DC X'01' NUMBER OF BYTES TO BE TESTED 00273000
  274. DC X'00' PARITY BYTE 00274000
  275. BE CCH120 GOOD PARITY INDICATED 00275000
  276. CCH118 EQU * 00276000
  277. OI IGTERMSQ,RTCODE5 SET THE RETRY CODE TO (101) 00277000
  278. B CCHRETRN GO INITIALIZE LOGOUT AREA 00278000
  279. CCH120 EQU * 00279000
  280. L R2,CSW GET THE CSW ADDRESS 00280000
  281. LA R2,0(R2) CLEAR THE HIGH ORDER BYTE 00281000
  282. S R2,F8 GET THE ADDRESS OF THE LAST CCW 00282000
  283. BM CCH118 NEGATIVE VALUE , GO INDICATE THAT 00283000
  284. * IT IS INVALID 00284000
  285. LH R3,6(R2) GET COUNT FROM CCW 00285000
  286. N R3,XRIGHT16 CLEAR LOW ORDER BITS 00286000
  287. IC R2,3(R2) GET LOW ORDER BYTE OF DATA ADDRESS 00287000
  288. N R2,F7 CLEAR LOW ORDER BITS 00288000
  289. CH R3,CSW+6 IS CCW COUNT LOWER THAN CSW COUNT ? 00289000
  290. BL CCH122 YES, GO GET COUNT 00290000
  291. CCH120A EQU * 00291000
  292. AR R3,R2 ADD THE COUNTS TOGETHER 00292000
  293. CH R3,LOGWD1B+2 DOES COUNT EQUAL LOGOUT COUNT ? 00293000
  294. BNE CCH121 NO, GO SET RETRY CODE 00294000
  295. IC R3,LOGWD3A+2 GET BYTE COUNT REGISTER 00295000
  296. N R3,F7 CLEAR UNWANTED BITS 00296000
  297. CR R2,R3 ARE THE COUNTS EQUAL ? 00297000
  298. BNE CCH121 NO, GO SET CONDITION CODE 00298000
  299. OI IGTERMSQ,RTCODE2 SET RETRY CODE TO (010) 00299000
  300. B CCH117 GO SET COUNT VALID BIT 00300000
  301. CCH121 EQU * 00301000
  302. OI IGTERMSQ,RTCODE3 SET RETRY CODE TO (011) 00302000
  303. CCH117 EQU * 00303000
  304. TM CSW+5,IFCC IS THIS AN INTERFACE CONTROL CHECK ? 00304000
  305. BO CCHRETRN YES, GO INITIALIZE LOGOUT AREA 00305000
  306. OI IGPRGFLG,CCHCNTB SET COUNT VALID FLAG 00306000
  307. B CCHRETRN GO INITIALIZE LOGOUT AREA 00307000
  308. CCH122 EQU * 00308000
  309. LH R1,CSW+6 GET CSW BYTE COUNT 00309000
  310. N R1,XRIGHT16 CLEAR UNWANTED BITS 00310000
  311. SR R1,R2 SUBTRACT DAB FROM COUNT 00311000
  312. CR R1,R3 IS CSW COUNT HIGHER THAN CCW COUNT 00312000
  313. BH CCH118 YES, GO SET THE RETRY CODE 00313000
  314. B CCH120A GO CHECK FOR DATA TRANFER 00314000
  315. CCH123 EQU * 00315000
  316. TM LOGWD3A,X'2E' IS COMMAND CHAIN OR SEQ. TRIGERS ON ? 00316000
  317. BNZ CCH110B YES, GO CHECK FOR SETUP BIT 00317000
  318. TM LOGWD3A+1,CCHSETUP IS SETUP ON IN LOGOUT ? 00318000
  319. BO CCH125 YES, GO CHECK FOR SELECT OUT 00319000
  320. TM ENTSW,HIOCCH IS THIS AN ERROR ON A HIO ? 00320000
  321. BO CCH126 YES, GO INDICATE TYPE OF ERROR 00321000
  322. CCH116 EQU * 00322000
  323. OI IGTERMSQ,RTCODE4 SET THE RETRY CODE TO (100) 00323000
  324. OI IGBLAME,CCHINTFC INDICATE THAT INTERFACE IS THE 00324000
  325. * SOURCE OF THE ERROR 00325000
  326. B CCHRETRN GO INITIALIZE THE LOGOUT AREA 00326000
  327. CCH125 EQU * 00327000
  328. TM LOGWD3B,X'10' IS SELECT OUT ON ? 00328000
  329. BO CCH116 YES, GO SET RETRY CODE 00329000
  330. CCH126 EQU * 00330000
  331. OI IGBLAME,CCHCHNL INDICATE CHANNEL IS THE SOURCE OF 00331000
  332. * THE ERROR 00332000
  333. CCH130 EQU * 00333000
  334. OI IGTERMSQ,RTCODE4 SET RETRY CODE TO (100) 00334000
  335. B CCHRETRN GO INITIALIZE THE LOGOUT 00335000
  336. CCH128 EQU * 00336000
  337. TM LOGWD3A,X'2E' IS COMMAND CHAIN OR SEQ. TRIGGERS ON 00337000
  338. BNZ CCH112G YES, GO TEST FOR SETUP 00338000
  339. TM ENTSW,TIOCCH IS THIS AN ERROR ON A TIO ? 00339000
  340. BO CCH114B YES, GO SET RETRY CODE 00340000
  341. TM IGVALIDB,CCHDAV IS THE UNIT ADDRESS VALID ? 00341000
  342. BO CCH126 YES, GO SET RETRY CODE 00342000
  343. OI IGBLAME,CCHCPU SET CPU AS SOURCE OF ERROR 00343000
  344. B CCH130 GO INDICATE THE RETRY CODE 00344000
  345. CLEANUP EQU * 00345000
  346. OI ENTSW,TERMSYS SET SYSTEM TERMINATION 00346000
  347. B CCHEXIT4 GO RESTORE REGISTERS 00347000
  348. CCHRETRN EQU * 00348000
  349. LA R1,X'130' GET THE ADDRESS OF THE I/O EXTENDED 00349000
  350. * LOGOUT 00350000
  351. MVC CCHLOG60(24),0(R1) SAVE THE I/O EXTENDED LOGOUT 00351000
  352. MVI 0(R1),X'FF' INITIALIZE THE I/O EXTENDED LOGOUT 00352000
  353. MVC 1(23,R1),0(R1) TO ALL ONES 00353000
  354. MVI CCHSAVE+59,X'0D' CHANGE THE LENGTH OF THE CCH @VA00881 00354000
  355. * RECORD 00355000
  356. CCHEXIT4 EQU * 00356000
  357. LM R2,R0,CCHSAVE RESTORE THE REGISTERS 00357000
  358. BR R14 RETURN TO CCH CONTROL ROUTINE 00358000
  359. ********************************************************************** 00359000
  360. SPACE 2 00360000
  361. ********************************************************************** 00361000
  362. LOGPAR EQU * 00362000
  363. LH R1,0(R14) GET ADDRESS OF BYTE TO BE CHECKED 00363000
  364. SR R2,R2 CLEAR REGISTER 2 00364000
  365. IC R2,2(R14) GET COUNT OF NUMBER OF BYTES 00365000
  366. CCH202 EQU * 00366000
  367. MVI CCHPARBT,X'01' CLEAR PARITY BYTE 00367000
  368. SR R3,R3 CLEAR REGISTER 00368000
  369. IC R3,0(R1) GET BYTE TO BE CHECKED 00369000
  370. CCH201 EQU * 00370000
  371. LTR R3,R3 IS CONTENT OF REGISTER 3 ZERO ? 00371000
  372. BZ CCH200 YES, GO COMPARE PARITY BIT 00372000
  373. EX R3,CCHXOR CALCULATE PARITY 00373000
  374. SRL R3,1 GET NEXT BIT 00374000
  375. B CCH201 GO TEST NEXT BIT 00375000
  376. CCH200 EQU * 00376000
  377. NI CCHPARBT,X'01' REMOVE UNWANTED BITS 00377000
  378. IC R3,3(R14) GET PARITY BITS 00378000
  379. BCTR R2,R0 REDUCE THE NUMBER OF BYTES 00379000
  380. SRL R3,0(R2) ISOLATE PARITY BIT TO BE CHECKED 00380000
  381. N R3,F1 REMOVE UNWANTED BITS 00381000
  382. EX R3,CCHCLI TEST FOR PARITY BIT 00382000
  383. BNE 4(R14) RETURN TO IN LINE CODE - BAD PARITY 00383000
  384. LTR R2,R2 IS THIS LAST TEST ? 00384000
  385. BE 4(R14) YES, RETURN TO IN LINE CODE - GOOD 00385000
  386. * PARITY 00386000
  387. LA R1,1(R1) UPDATE ADDRESS POINTER BY ONE 00387000
  388. B CCH202 GO TEST FOR PARITY AGAIN 00388000
  389. ********************************************************************** 00389000
  390. EJECT 00390000
  391. ********************************************************************** 00391000
  392. CCHSAVE DS 16F 00392000
  393. CCHPARBT DC X'00' PARITY CHECK BYTE 00393000
  394. ******************************************************************** 00394000
  395. CCHXOR XI CCHPARBT,X'00' 00395000
  396. CCHCLI CLI CCHPARBT,X'00' 00396000
  397. ********************************************************************** 00397000
  398. ********************************************************************** 00398000
  399. EJECT 00399000
  400. ********************************************************************** 00400000
  401. PSA 00401000
  402. COPY EQU 00402000
  403. COPY DEVTYPES 00403000
  404. COPY SAVE 00404000
  405. ENTSW EQU SAVEWRK1 @VA01638 00405000
  406. SIOADDR EQU SAVEWRK9 SAVE THE DEVICE ADDRESS 00406000
  407. EJECT 00407000
  408. COPY IOER 00408000
  409. COPY CCHREC 00409000
  410. END 00410000