Table of Contents

DMKCCH Source

References

Source Listing

DMKCCH.ASSEMBLE.txt
  1. CCH TITLE 'DMKCCH (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. *MODULE NAME 00004000
  5. * 00005000
  6. * DMKCCH 00006000
  7. * 00007000
  8. *FUNCTION - 00008000
  9. * 00009000
  10. * THE CHANNEL CHECK HANDLER FUNCTIONS WITH THE I/O INTERRUPT 00010000
  11. * HANDLER TO SCHEDULE A DEVICE DEPENDENT ERROR RECOVERY 00011000
  12. * PROCEDURE WHEN A CHANNEL DATA CHECK,A CHANNEL 00012000
  13. * CONTROL CHECK,OR AN INTERFACE CONTROL CHECK IS DETECTED. 00013000
  14. * 00014000
  15. *ATTRIBUTES- RESIDENT,SERIALLY REUSABLE,CALLED BY DMKIOS 00015000
  16. * 00016000
  17. * 00017000
  18. *ENTRY POINTS - 00018000
  19. * -DMKCCHNT-ENTRY POINT FROM DMKIOINT WHEN A CHANNEL CHECK IS 00019000
  20. * FOUND ON AN I/O INTERRUPT 00020000
  21. * 00021000
  22. * 00022000
  23. * -DMKCCHIS-ENTRY FROM DMKIOS WHEN A CHANNEL CHECK IS FOUND ON 00023000
  24. * A CSW STORED CONDITION AFTER A SIO 00024000
  25. * 00025000
  26. * -DMKCCHRT-ENTRY FROM DMKIOE TO ALLOW ERROR MESSAGES TO BE 00026000
  27. * PRINTED. 00027000
  28. * 00028000
  29. * -DMKCCHRF-ENTRY FROM DMKDSP, DMKVIO AND DMKVSI WHEN REFLECTING 00029000
  30. * A CHANNEL CHECK. 00030000
  31. * 00031000
  32. *ENTRY CONDITIONS- 00032000
  33. * 00033000
  34. * -FROM DMKIOECC-GPR 15 NOT ZERO IF ERROR WAS NOT RECORDED 00034000
  35. * 00035000
  36. * -FROM DMKINT GPR 7= ADDR OF RCUBLOK 00036000
  37. * 00037000
  38. * GPR 8= ADDR OF RDEVBLOK 00038000
  39. * 00039000
  40. * GRP 6= ADDR OF RCHBLOK 00040000
  41. * 00041000
  42. * GPR 4-5= CSW 00042000
  43. * 00043000
  44. * GPR 3= INTERRUPTING DEVICE ADDRESS 00044000
  45. * 00045000
  46. * -FROM DMKIOS GRP 10 = IOBLOK ADDRESS 00046000
  47. * 00047000
  48. * 00048000
  49. *EXIT CONDITIONS - 00049000
  50. * TO DMKIOSIN - IF CHANNEL ERROR IS RETRYABLE 00050000
  51. * 00051000
  52. * DISABLED WAIT STATE IF ERROR IS CATASTROPHIC 00052000
  53. * 00053000
  54. * 00054000
  55. *CALLS TO OTHER ROUTINES- 00055000
  56. * -DMKIOECC TO RECORD ERROR 00056000
  57. * -DMKFREE TO GET STORAGE FOR IOERBLOK AND ERROR RECORD. 00057000
  58. * -DMKSCNRU TO GET DEVICE BLOCKS. 00058000
  59. * -DMKQCNWT TO WRITE CONSOLE MESSAGES. 00059000
  60. * -DMKCVTBH TO CONVERT OPERATOR MESSAGES. 00060000
  61. * -DMKFRET TO RETURN ERROR RECORD TO FREE STORAGE 00061000
  62. * -DMKSCNRD TO GET REAL DEVICE ADDRESS (CCU) 00062000
  63. * 00063000
  64. * 00064000
  65. *EXTERNAL REFERENECS - 00065000
  66. * DMKSYSCK - ADDRESS OF TOD CLOCK FIELD 00066000
  67. * 00067000
  68. * 00068000
  69. *TABLES AND WORK AREAS - 00069000
  70. * MCHAREA, CCHREC, RCHBLOK, RCUBLOK AND RDEVBLOK 00070000
  71. * 00071000
  72. * 00072000
  73. *REGISTER USEAGE- 00073000
  74. * GPR 0= PSA BASE 00074000
  75. * GPR 0= LENGTH OF CHANNEL CHECK RECORD 00075000
  76. * GPR 1= PARAMETER 00076000
  77. * GPR 2=SCRATCH 00077000
  78. * GPR 3=INTERNAL SWITCHES 00078000
  79. * GPR 4= IOERBLOK BASE 00079000
  80. * GPR 5= SCRATCH 00080000
  81. * GPR 6= RCHBLOK BASE 00081000
  82. * GPR 7= RCUBLOK BASE 00082000
  83. * GPR 8= RDEVBLOK BASE 00083000
  84. * GPR 9= CHANNEL CHECK RECORD BASE 00084000
  85. * GPR 10= IOBLOK BASE 00085000
  86. * GPR 12= DMKCCH BASE 00086000
  87. * GPR 13= SAVEAREA BASE 00087000
  88. * GPR 14= SCRATCH 00088000
  89. * GPR 15= SCRATCH 00089000
  90. * 00090000
  91. * 00091000
  92. *NOTES- 00092000
  93. * WILL SUPPORT SYSTEM/370 MODEL 135, 138, 145, 148, 155-2, 00093000
  94. * 158, 158-2, 165-2, 168, 3033,3032 AND 3031. THERE IS ALSO 00094100
  95. * SUPPORT FOR THE 4331/4341 PROCESSORS. 00094200
  96. * 00095000
  97. * 00096000
  98. *OPERATION - DMKCCHNT AND DMKCCHIS. 00097000
  99. * 00098000
  100. * 1.CONTROL IS PASSED TO DMKCCH AFTER EITHER A SIO WITH FAILING 00099000
  101. * STATUS STORED, OR AN I/O INTERRUPT THAT REFLECTS CHANNEL 00100000
  102. * CONTROL CHECK,INTERFACE CONTROL CHECK, OR CHANNEL DATA 00101000
  103. * CHECK HAS OCCURED. 00102000
  104. * 00103000
  105. * 2.IF RDEVBLOK AND IOBLOK EXIST - 00104000
  106. * DMKCCH WILL BUILD AN IOERBLOK TO BE USED BY THE DEVICE 00105000
  107. * DEPENDENT ERP'S TO DETERMINE IF RECOVERY IS POSSIBLE FOR 00106000
  108. * CP INITIATED I/O EVENTS. I/O EVENTS ASSOCIATED WITH A VIRTUAL 00107000
  109. * USER THAT RESULT IN A CHANNEL ERROR WILL BE REFLECTED TO 00108000
  110. * THAT VIRTUAL MACHINE. THE WILL ENABLE THE VIRTUAL MACHINE 00109000
  111. * TO DO ITS OWN RECOVERY FROM CHANNEL CHECKS. 00110000
  112. * 00111000
  113. * 3 AN EXAMINATION OF THE CHANNEL STATUS WORD AND EXTENDED 00112000
  114. * CHANNEL STATUS WORD WILL BE PERFORMED TO DETERMINE IF THE 00113000
  115. * CHANNEL HAS BEEN RESET OR IF THE RESET CODES ARE INVALID; 00114000
  116. * THE CHANNEL STATUS WORD AND EXTENDED CHANNEL STATUS 00115000
  117. * WORD WILL ALSO BE EXAMINED TO SEE IF AN INTERFACE 00116000
  118. * HANG-UP (INTERFACE INOPERATIVE) HAS OCCURRED. 00117000
  119. * IF ANY OF THESE CONDITIONS IS PRESENT A MESSAGE IS 00118000
  120. * SENT TO THE OPERATOR AND A WAIT STATE IS PSW IS LOADED. IF 00119100
  121. * THIS IS A 4331/4341 PROCESSOR, THERE WILL NOT BE AN I/O FIXED 00119200
  122. * OR EXTENDED LOGOUT FOR A CHANNEL CHECK. THERE WILL BE A 00119300
  123. * LIMITED CHANNEL LOGOUT. THERE ALSO WILL NOT BE AN IOEL 00119400
  124. * POINTER(LOCATION 173-175). 00119500
  125. * 00120000
  126. * 4.AN ERROR RECORD WILL BE CONSTRUCTED WHICH WILL CONTAIN THE 00121000
  127. * EXTENDED CHANNEL STATUS WORD,THE CHANNEL LOGOUT,AND UP 00122000
  128. * TO EIGHT ACTIVE UNITS IN USE AT THE TIME OF ERROR ON THE 00123000
  129. * DAMAGED CHANNEL.DMKIOECC WILL USE THIS INFORMATION TO 00124000
  130. * BUILD THE CHANNEL CHECK RECORD. 00125000
  131. * 00126000
  132. * 5 THE DEVICE DEPENDENT ERP'S WILL USE THE SEQUENCE 00127000
  133. * CODE AND RETRY CODE PORTION OF THE ECSW IN THE IOERBLOK 00128000
  134. * TO DETERMINE CORRECT RETRY SEQUENCES. 00129000
  135. * 00130000
  136. * 00131000
  137. *OPERATION - DMKCCHRT. 00132000
  138. * 1. IF THE ERROR IS A CHANNEL CONTROL CHECK OR INTERFACE 00133000
  139. * CONTROL CHECK, CALL DMKQCNWT TO SEND ERROR MESSAGE 00134000
  140. * DMKCCH601I OR DMKCCH602I TO THE SYSTEM OPERATOR. 00135000
  141. * 2. IF THE ERROR WAS ASSOCIATED WITH A VIRTUAL MACHINE, AQUIRE 00136000
  142. * STORAGE FOR A NEW IOERBLOK, COPY THE OLD IOERBLOK TO THE NEW 00137000
  143. * IOERBLOK AND BUILD THE CCR EXTENTION. 00138000
  144. * 3. RETURN TO THE CALLER. 00139000
  145. * 00140000
  146. *MESSAGES- 00141000
  147. * DMKCCH601I CHANNEL CONTROL CHECK DEV XXX; USER USERID.. 00142000
  148. * DMKCCH602I INTERFACE CONTROL CHECK DEV XXX; USER USERID.. 00143000
  149. * DMKCCH603W CHANNEL ERROR; RUN SEREP, RESTART SYSTEM 00144000
  150. * DMKCCH604I CHANNEL ERROR DEV XXX ; USER XXXXXXXX MACHINE RESET 00145000
  151. * DMKCCH605I CHANNEL CHECK RECORDING FAILURE 00146000
  152. * 00147000
  153. ********************************************************************** 00148000
  154. EJECT 00149000
  155. COPY OPTIONS @VA01077 00150000
  156. EJECT 00151000
  157. COPY LOCAL @VA01077 00152000
  158. EJECT 00153000
  159. DMKCCH CSECT 00154000
  160. SPACE 00155000
  161. EXTRN DMKIOECC 00156000
  162. EXTRN DMKSCNRU 00157000
  163. EXTRN DMKCVTBH 00158000
  164. EXTRN DMKSYSCK 00159000
  165. ENTRY DMKCCHCF 00160000
  166. ENTRY DMKCCHMX 00161000
  167. ENTRY DMKCCHSZ 00162000
  168. EXTRN DMKSYSRM @VA01337 00163000
  169. ENTRY DMKCCH60 00164000
  170. EXTRN DMKSCNRD @VA01081 00165000
  171. EXTRN DMKQCNWT @V407510 00166000
  172. EXTRN DMKMCHST @V407510 00167000
  173. EXTRN DMKOPRWT @VA10837 00167010
  174. SPACE 3 00168000
  175. USING PSA,R0 00169000
  176. USING RCHBLOK,R6 00170000
  177. USING RCUBLOK,R7 00171000
  178. USING RDEVBLOK,R8 00172000
  179. USING IOBLOK,R10 00173000
  180. USING SAVEAREA,R13 00174000
  181. SPACE 00175000
  182. SPACE 00176000
  183. DMKCCHIS RELOC 00177000
  184. MVI ENTSW,SIOCCH SET ENTRY SWITCH FOR SIO ENTRY 00178000
  185. LM R4,R5,IOBCSW GET THE FAILING CSW @VA01068 00179000
  186. LH R3,IOBRADD GET THE DEVICE ADDRESS @VA01068 00180000
  187. B FINDBLOK GO STORE THE DEVICE ADDRESS 00181000
  188. DMKCCHNT RELOC 00182000
  189. MVI ENTSW,INTERCCH SET ENTRY SWITCH FOR INTERRUPT ENTRY 00183000
  190. SR R10,R10 CLEAR IOB POINTER @VA01337 00184000
  191. FINDBLOK EQU * 00185000
  192. STM R4,R5,CSW PUT BACK THE CSW @VA01068 00186000
  193. STH R3,SIOADDR SAVE THE DEVICE ADDRESS @VA01068 00187000
  194. TM CSW,X'04' IS LOGOUT PENDING ? 00188000
  195. BZ CCHSCAN NO, GO GET DEVICE BLOCKS 00189000
  196. OI ENTSW,TERMSYS SET SYSTEM TERMINATION FLAG 00190000
  197. CCHSCAN EQU * 00191000
  198. LR R1,R3 GET REAL DEVICE ADD. FOR DMKSCN @VA09029 00191500
  199. CALL DMKSCNRU GET THE REAL CHANNEL, CONTROL UNIT AND 00192000
  200. * DEVICE BLOCK ADDRESSES 00193000
  201. STM R6,R8,RCHSAVE SAVE THE RCHBLOK, RCUBLOK AND RDEVBLOK 00194000
  202. BNZ BULDREC GO BUILD RECORD IF ADDRESSES DON'T 00195000
  203. * EXIST 00196000
  204. OI ENTSW,DEVCCH INDICATE THE DEVICE BLOCK ADDRESS EXIST 00197000
  205. ICM R10,15,RDEVAIOB GET THE I/O BLOCK ADDRESS 00198000
  206. BZ BULDREC IF THE ADDRESS IS ZERO, GO BUILD 00199000
  207. * CCH RECORD 00200000
  208. OI ENTSW,IOBCCH INDICATE THE I/O BLOCK ADDRESS EXIST 00201000
  209. BULDREC EQU * 00202000
  210. SR R0,R0 CLEAR REGISTER @VA00881 00203000
  211. ICM R0,3,DMKCCHMX GET THE LENGTH OF CCH RECORD @V5088AA 00204000
  212. BZ CPTERM IF ZERO, GO TERMINATE SYSTEM 00205000
  213. A R0,F7 PUT LENGTH ON A DOUBLEWORD @VA00881 00206000
  214. * BOUNDARY 00207000
  215. SRL R0,3 DIVIDE BY 8 00208000
  216. ST R0,RECLENTH SAVE THE LENGTH OF THE CCH RECORD 00209000
  217. CALL DMKFREE GO GET STORAGE 00210000
  218. ST R1,RECADDR SAVE THE ADDRESS OF THE CCH RECORD 00211000
  219. STM R4,R5,CSW RESTORE THE CSW @VA01068 00212000
  220. LR R9,R1 SAVE THE CCH RECORD ADDRESS 00213000
  221. USING CCHREC,R9 SETUP ADDRESSABILITY FOR CCH RECORD 00214000
  222. XC CCRECTYP(CCHSIZE*8),CCRECTYP CLEAR CCH RECORD HEADER 00215000
  223. MVC CCHREC(8),CCHCONST MOVE RECORD HEADER INTO RECORD 00216000
  224. MVC CCCPUID(8),CPUID SAVE CPU ID NUMBER @V508690 00217000
  225. L R2,CAW GET CHANNEL ADDRESS WORD @VA01337 00218000
  226. LA R2,0(,R2) CLEAR HIGH ORDER BYTE @VA01337 00219000
  227. TM ENTSW,INTERCCH IS THIS AN I/O INTERRUPT @VA01337 00220000
  228. BZ CCHBYPAS NO, GO VALIDATE ADDRESS @VA01337 00221000
  229. ICM R2,C7,CSW+1 GET THE CCW ADDRESS 00222000
  230. BZ ADDMOVE IF ADDRESS IS ZERO, DON'T MOVE DATA 00223000
  231. LA R2,0(R2) GET THE ADDRESS OF THE LAST CCW PLUS 8 00224000
  232. S R2,F8 GET THE ADDRESS OF THE LAST CCW 00225000
  233. BM ADDMOVE IF ADDRESS IS NEGATIVE, DON'T MOVE CCW 00226000
  234. CCHBYPAS EQU * @VA01337 00227000
  235. L R5,=A(DMKSYSRM) GET ADDRESS OF MAX. STORAGE @VA01337 00228000
  236. L R5,0(,R5) GET MAX. SIZE OF REAL STORAGE @VA01337 00229000
  237. CR R2,R5 IS THIS ADDRESS IN REAL STORAGE @VA01337 00230000
  238. BNL ADDMOVE NO, GO MOVE IN FAILING CSW @VA01337 00231000
  239. STC R2,FAILCSW SAVE LOW ORDER BYTE @VA01337 00232000
  240. TM FAILCSW,X'07' IS THIS ADDR. ON DOUBLEWORD BDY @VA01337 00233000
  241. BNZ ADDMOVE NO, GO MOVE IN FAILING CSW @VA01337 00234000
  242. MVC FAILCCW,0(R2) SAVE FAILING CCW @VA01337 00235000
  243. ADDMOVE EQU * @VA01337 00236000
  244. MVC FAILCSW,CSW SAVE FAILING CSW @VA01337 00237000
  245. LH R2,SIOADDR GET THE FAILING DEVICE ADDRESS 00238000
  246. STCM R2,7,CCHCUA SAVE FAILING DEVICE ADDRESS @VA01068 00239000
  247. SRL R2,8 GET THE CHANNEL NUMBER 00240000
  248. IC R0,DMKCCHCF(R2) GET THE CHANNEL TYPE 00241000
  249. STC R0,CCHANID SAVE THE CHANNEL TYPE IN RECORD 00242000
  250. TM ENTSW,DEVCCH DOES THE REAL DEVICE BLOCK EXIST ? 00243000
  251. BZ CCHIO NO, GO CHECK FOR I/O BLOCK 00244000
  252. MVC CCDEVTYP(4),RDEVSTAT MOVE DEVICE DATA TO CCH @VA01068 00245000
  253. * RECORD 00246000
  254. CCHIO EQU * 00247000
  255. MVC CCPROGID,CPEYED MOVE IN CP/370 IDENTIFICATION @VA01068 00248000
  256. TM ENTSW,IOBCCH DOES THE I/O BLOCK EXIST ? 00249000
  257. BZ RDEVBSY NO, GO TEST FAILING DEVICE 00250000
  258. TM IOBFLAG,IOBCP WAS THIS A CP GENERATED @VA01077 00251000
  259. BNZ RDEVBSY YES, GO TEST FAILING DEVICE @VA00881 00252000
  260. L R14,IOBUSER GET THE USER'S VMBLOK ADDRESS 00253000
  261. MVC CCPROGID,VMUSER-VMBLOK(R14) SAVE THE USER'S ID. 00254000
  262. RDEVBSY EQU * 00255000
  263. SR R4,R4 CLEAR ADDRESSABILITY REGISTER FOR 00256000
  264. * THE I/O ERROR BLOCK 00257000
  265. TM ENTSW,DEVCCH+IOBCCH DOES THE BLOCKS EXIST ? 00258000
  266. BNO CCHDEPND NO, GO GET DEPENDENT ROUTINE 00259000
  267. TM IOBSPEC,IOBTIO WAS ERROR ON TIO INSTRUCTION ? 00260000
  268. BZ CCHHIOI NO, GO TEST FOR HIO INSTRUCTION 00261000
  269. OI ENTSW,TIOCCH SET TIO INDICATOR 00262000
  270. CCHHIOI EQU * 00263000
  271. TM IOBSPEC,IOBHIO WAS ERROR ON HIO INSTRUCTION ? 00264000
  272. BZ CCHIOERL NO, GO GET IOERBLOK LENGTH 00265000
  273. OI ENTSW,HIOCCH SET HIO INDICATOR 00266000
  274. CCHIOERL EQU * 00267000
  275. LA R0,IOERSIZE+1 GET THE DOUBLEWORD LENGTH OF THE I/O 00268000
  276. * ERROR BLOCK 00269000
  277. LM R4,R5,CSW GET THE CSW INFORMATION @VA01068 00270000
  278. CALL DMKFREE GO GET THE STORAGE 00271000
  279. STM R4,R5,CSW RESTORE THE CSW @VA01068 00272000
  280. LR R4,R1 SAVE THE I/O ERROR BLOCK ADDRESS 00273000
  281. ICM R1,15,IOBIOER GET IOERBLOK ADDRESS @VA01337 00274000
  282. ST R4,IOBIOER SAVE NEW IOERBLOK ADDRESS @VA01337 00275000
  283. BZ CCIOERBK IF ZERO, GO SET UP IOERBLOK @VA01337 00276000
  284. LA R0,IOERSIZE GET SIZE IN DOUBLEWORDS @VA01337 00277000
  285. AH R0,IOEREXT-IOERBLOK(R1) GET EXTENSION @VA01337 00278000
  286. CALL DMKFRET FRET IOERBLOK @VA01337 00279000
  287. CCIOERBK EQU * @VA01337 00280000
  288. USING IOERBLOK,R4 SETUP ADDRESSABILITY FOR I/O ERROR BLOCK 00281000
  289. XC IOERBLOK(IOERSIZE*8),IOERBLOK CLEAR THE I/O ERROR BLOCK 00282000
  290. MVI IOEREXT+1,X'01' PUT IN LENGTH OF EXTENSION 00283000
  291. MVC IOERCSW,FAILCSW SAVE CSW IN I/O ERROR BLOCK @VA01068 00284000
  292. MVC IOERCCRL(8),RECLENTH SAVE THE CCH RECORD LENGTH 00285000
  293. * AND ADDRESS 00286000
  294. CCHDEPND EQU * 00287000
  295. USING MCHAREA,R5 SETUP ADDRESSABILITY FOR MCH AREA 00288000
  296. L R5,AMCHAREA GET PTR TO MCH COMMON AREA @V407510 00289000
  297. L R15,DMK2880 GET THE ADDRESS OF THE 2880 MODULE 00290000
  298. LA R0,CCHSIZE GET THE SIZE OF THE CCH RECORD IN 00291000
  299. * DOUBLEWORDS 00292000
  300. MVC IGPRGFLG(1),ENTSW GET THE TYPE OF CONDITION @VA01068 00293000
  301. NI IGPRGFLG,CCHSIOB+CCHINTB+CCHTIO+CCHHIO CLEAR @VA01068 00294000
  302. * FLAGS 00295000
  303. TM IGPRGFLG,CCHTIO+CCHHIO IS TIO OR HIO INDICATED ?@VA01068 00296000
  304. BZ CCHBEGIN NO, GO TEST FOR CHANNEL TYPE @VA01068 00297000
  305. NI IGPRGFLG,X'FF'-CCHSIOB CLEAR THE SIO INDICATOR @VA01068 00298000
  306. CCHBEGIN EQU * @VA01068 00299000
  307. OI IGPRGFLG,CCHSNSB INDICATE THE SENSE DATA IS @VA01068 00300000
  308. * STORED 00301000
  309. OI IGVALIDB,CCHRCV+CCHCAV INDICATE THE RETRY CODE @VA01068 00302000
  310. * AND CHANNEL ADDRESS ARE VALID 00303000
  311. CLI CCHANID,X'08' IS THIS A 2880 CHANNEL TYPE ? 00304000
  312. MVI CCHCLOGL+1,X'70' SET UP LOG LENGTH @V508690 00305000
  313. BE CCHEXIT1 YES, GO GET DEPENDENT MODULE 00306000
  314. CLI CCHANID,X'07' IS THIS A 2880 CHANNEL TYPE ? 00307000
  315. BE CCHEXIT1 YES, GO GET DEPENDENT MODULE 00308000
  316. MVI CCHCLOGL+1,X'00' SET UP LOG LENGTH @V508690 00309000
  317. TM FAILCSW+5,IFCC+CCC IS THIS A CHANNEL DATA CHECK @VA01068 00310000
  318. BZ RCUSCN1 YES, GO GET EIGHT BUSY UNITS 00311000
  319. CLI MCHMODEL,MODEL165 IS THIS A MODEL 165 OR 168 ? 00312000
  320. BNE INTEGRAT NO, GO TO INTEGRATED CHANNEL SUPPORT 00313000
  321. MVI CCHCLOGL+1,X'18' SET UP LOG LENGTH @V508690 00314000
  322. L R15,DMKCCH60 GET THE ADDRESS OF THE 2880 MODULE 00315000
  323. CLI CCHANID,X'05' IS THIS A 2860 CHANNEL TYPE ? 00316000
  324. BE CCHEXIT1 YES, GO GET DEPENDENT MODULE 00317000
  325. L R15,DMK2870 GET THE ADDRESS OF THE 2870 MODULE 00318000
  326. CLI CCHANID,X'06' IS THIS A 2870 CHANNEL TYPE ? 00319000
  327. BNE CCHERROR NO, GO SET SYSTEM TERMINATION 00320000
  328. ********************************************************************** 00321000
  329. CCHEXIT1 EQU * 00322000
  330. LTR R15,R15 IS THERE AN ADDRESS FOR 00323000
  331. * THE DEPENDENT MODULE ? 00324000
  332. BZ CPTERM NO, GO TERMINATE THE OPERATING SYSTEM 00325000
  333. BALR R14,R15 GO TO DEPENDENT MODULE 00326000
  334. TM ENTSW,TERMSYS IS SYSTEM TERMINATION ON ? 00327000
  335. BO RCUSCN1 YES, GO GET EIGHT BUSY UNITS 00328000
  336. TM FAILCSW+5,CDC IS THIS A CHANNEL DATA CHECK ? @VA01068 00329000
  337. BO RCUSCN1 YES, GET EIGHT BUSY UNITS @VA01337 00330000
  338. TM IGTERMSQ,COMPSYS IS TERMINATION CODE = 3 FOR @VA01077 00331000
  339. * SYSTEM RESET 00332000
  340. BO CCHERROR YES, GO SET TERMINATION FLAG @VA01077 00333000
  341. LTR R4,R4 IS THERE AN IOERBLOK ADDRESS ? 00334000
  342. BZ RCUSCN1 NO, GO GET EIGHT BUSY UNITS 00335000
  343. MVC IOERECSW(4),FAILECSW MOVE FAILING ECSW INTO @VA01077 00336000
  344. * I/O ERROR BLOCK 00337000
  345. B RCUSCN1 GO GET EIGHT BUSY UNITS 00338000
  346. ********************************************************************** 00339000
  347. INTEGRAT EQU * 00340000
  348. SR R2,R2 CLEAR REG 2 TO USE AS INDICATOR @VA08513 00340100
  349. TM ECSWLOG,X'80' IS LIMITED CHANNEL LOGOUT VALID @VA01337 00341000
  350. BO CCHSYSM NO, SET SYSTEM TERMINATION FLAG @VA01337 00342000
  351. TM ECSWLOG+1,X'01' TEST THE 'LOG STORED' BIT IN LCL@VA08513 00342100
  352. BZ CCHRESET EITHER LOG WAS NOT STORED OR @VA08513 00342200
  353. * THIS CPU DOES NOT SET BIT 15 IN LCL 00342300
  354. LA R2,1 SET AN INDICATION OF LOG STORED @VA08513 00342400
  355. CCHRESET TM ECSWLOG+3,COMPSYS IS CHANNEL RESET? @VA08513 00343000
  356. BO CCHSYSM GO SET SYSTEM TERMINATION @V5088AA 00344000
  357. TM FAILCSW+5,IFCC INTERFACE CONTROL CHECK? @V5088AA 00345000
  358. BZ CCHIOER NO, TEST FOR IOERBLOK @V5088AA 00346000
  359. TM ECSWBYT3,CCHIOH I/O INTERFACE HANG-UP? @V5088AA 00347000
  360. BNO CCHIOER NO, TEST FOR IOERBLOK @V5088AA 00348000
  361. TM RCHSTAT,RCHDED IS THE CHANNEL DEDICATED ?? @V508690 00349000
  362. BO CCHIOER YES, THEN REFLECT ERROR TO USER @V508690 00350000
  363. CCHSYSM EQU * 00351000
  364. OI ENTSW,TERMSYS SET SYSTEM TERMINATION FLAG 00352000
  365. CCHIOER EQU * 00353000
  366. MVC FAILECSW+1(3),ECSWLOG+1 FAILING ECSW INTO @VA01337 00354000
  367. * CCH RECORD 00355000
  368. LTR R4,R4 IS THERE AN IOERBLOK ADDRESS 00356000
  369. BZ CCHFAIL NO, GO GET FAILING ECSW 00357000
  370. MVC IOERECSW(4),ECSWLOG MOVE IN ECSW @VA09068 00358100
  371. * CCH RECORD 00359000
  372. CCHFAIL EQU * 00360000
  373. LA R0,CCHSIZE1 GET THE SIZE OF CCH RECORD @VA01068 00361000
  374. A R0,F7 PUT LENGTH IN @VA01068 00362000
  375. SRL R0,3 DOUBLEWORDS @VA01068 00363000
  376. MVC CCHADDR+2(2),SIOADDR MOVE IN UNIT ADDRESS @VA01068 00364000
  377. * BY INTEGRATED CHANNEL 00365000
  378. MVI ECSWLOG,X'FF' INITIALIZE THE ECSW @VA01337 00366000
  379. CLI MCHMODEL,MOD4331 MODEL 4331/4341? @V60A6B6 00366100
  380. BE RCUSCN1 THEN IOELPNTR MAY BE INVALID. @V60A6B6 00366200
  381. ICM R1,15,IOELPNTR GET ADDRESS OF I/O EXTENDED LOGOUT 00367000
  382. * AREA 00368000
  383. BZ RCUSCN1 IF ADDRESS IS ZERO, GO INDICATE 00369000
  384. * SIZE OF CCH RECORD 00370000
  385. LTR R2,R2 WAS BIT 15 OF LCL (LOG STORED) =1@VA08513 00370100
  386. BNZ GOODIOEL IF SO, DONT CHECK IOEL FOR X'FF'S@VA08513 00370200
  387. CLC 0(4,R1),FFS IS THE LOGOUT AREA VALID ? 00371000
  388. BE RCUSCN1 NO, GO INDICATE SIZE OF CCH RECORD 00372000
  389. GOODIOEL SR R2,R2 CLEAR WORK REGISTER @VA08513 00373000
  390. ICM R2,3,DMKCCHSZ GET THE SIZES OF THE I/O EXT. @V5088AA 00374000
  391. * LOGOUT AREA 00375000
  392. BZ RCUSCN1 IF ZERO, GO INDICATE CCH RECORD SIZES 00376000
  393. CLI MCHMODEL,MODEL145 IS THIS A MODEL 145/148? @V386298 00377000
  394. BNE CCHMVC1 NO, GO MOVE LOGOUT AREA INTO RECORD 00378000
  395. CLI CCHANID,X'01' IS THIS A BYTE MPX CHANNEL ? 00379000
  396. BNE CCHMVC1 NO, GO MOVE LOGOUT AREA INTO RECORD 00380000
  397. TM 0(R1),X'80' DOES LOGOUT APPLIES TO THIS ERROR@VA01068 00381000
  398. BZ RCUSCN1 NO, GO SAVE CCH RECORD LENGTH @VA01068 00382000
  399. LA R2,76 GET SIZE OF I/O EXTENDED LOGOUT @VA01068 00383000
  400. * FOR CHANNEL CONTROL CHECK 00384000
  401. TM FAILCSW+5,IFCC IS THIS INTERFACE CONT CHECK ? @VA01068 00385000
  402. BZ CCHMVC1 NO, GO GET THE SIZES OF THE CCH RECORD 00386000
  403. LA R2,36 GET SIZE OF I/O EXTENDED LOGOUT @VA01068 00387000
  404. * FOR INTERFACE CONTROL CHECK 00388000
  405. CCHMVC1 EQU * 00389000
  406. LA R0,CCHSIZE1(R2) GET SIZE OF CCH RECORD @VA01068 00390000
  407. A R0,F7 PUT LENGTH IN @VA01068 00391000
  408. STCM R2,B'0011',CCHCLOGL SAVE SIZE OF LOGOUT @V508690 00392000
  409. SRL R0,3 DOUBLEWORDS @VA01068 00393000
  410. LR R14,R4 TEMPORARY SAVE OF IOERBLOK @ @V5088AA 00394000
  411. LR R15,R2 TEMPORARY SAVE OF IOEL LENGTH @V5088AA 00395000
  412. LR R3,R2 LENGTH TO MOVE @V5088AA 00396000
  413. LR R5,R3 LENGTH TO MOVE @V5088AA 00397000
  414. LR R4,R1 'FROM' ADDRESS (IOEL) @V5088AA 00398000
  415. LA R2,CCHLOG45 'TO' ADDRESS (CCH RECORD) @V5088AA 00399000
  416. MVCL R2,R4 MOVE IOEL TO CCH RECORD @V5088AA 00400000
  417. LR R2,R1 'TO' ADDRESS (IOEL) @V5088AA 00401000
  418. LR R3,R15 LENGTH OF IOEL FOR MOVE @V5088AA 00402000
  419. LR R4,R2 'FROM' ADDRESS @V5088AA 00403000
  420. L R5,F255 PAD CHARACTER @V5088AA 00404000
  421. SLL R5,24 PAD CHAR. OF X'FF', LENGTH=0 @V5088AA 00405000
  422. MVCL R2,R4 PROPAGATE FF'S THRUOUT IOEL @V5088AA 00406000
  423. LR R4,R14 RESTORE IOERBLOK BASE ADDRESS @V5088AA 00407000
  424. B RCUSCN1 GO SAVE THE CCH RECORD LENGTH 00408000
  425. ********************************************************************** 00409000
  426. CCHERROR EQU * 00410000
  427. OI ENTSW,TERMSYS SET SYSTEM TERMINATION FLAG 00411000
  428. ********************************************************************** 00412000
  429. RCUSCN1 EQU * 00413000
  430. CALL DMKFREE GET THE STORAGE FOR THE CCH @VA00881 00414000
  431. * RECORD 00415000
  432. LTR R4,R4 IS THERE AN IOERBLOK ? @VA00881 00416000
  433. BZ RMSREC NO, GO COPY CCH RECORD INTO NEW @VA00881 00417000
  434. * STORAGE 00418000
  435. STM R0,R1,IOERCCRL SAVE SIZE AND ADDRESS OF CCH @VA00881 00419000
  436. * RECORD 00420000
  437. RMSREC EQU * @VA00881 00421000
  438. LR R5,R0 GET THE SIZE OF THE CCH RECORD @VA00881 00422000
  439. SLL R5,3 GET THE LENGTH IN BYTES FOR CCH @VA00881 00423000
  440. * RECORD 00424000
  441. LR R3,R5 GET THE LENGTH OF CCH RECORD @VA00881 00425000
  442. LR R2,R1 GET THE ADDRESS OF THE NEW CCH @VA00881 00426000
  443. * RECORD 00427000
  444. L R4,RECADDR GET THE ADDRESS OF THE OLD CCH @VA00881 00428000
  445. * RECORD 00429000
  446. MVCL R2,R4 MOVE THE CCH RECORD TO NEW @VA00881 00430000
  447. * LOCATION 00431000
  448. LR R2,R0 GET THE SIZE OF THE NEW CCH @VA00881 00432000
  449. * RECORD 00433000
  450. LR R3,R1 GET THE ADDRESS OF THE NEW CCH @VA00881 00434000
  451. * RECORD 00435000
  452. LR R9,R3 GET THE ADDRESS OF THE NEW CCH @VA00881 00436000
  453. * RECORD 00437000
  454. LM R0,R1,RECLENTH GET THE SIZE AND ADDRESS OF @VA00881 00438000
  455. * THE OLD CCH RECORD 00439000
  456. CALL DMKFRET RELEASE STORAGE FOR OLD CCH @VA00881 00440000
  457. * RECORD 00441000
  458. STM R2,R3,RECLENTH SAVE THE SIZE AND ADDRESS OF THE @VA00881 00442000
  459. * NEW CCH RECORD 00443000
  460. RCUSCN2 EQU * 00444000
  461. SR R1,R1 CLEAR SWITCH REGISTER 00445000
  462. LTR R6,R6 IS THERE AN RCHBLOK ADDRESS ? 00446000
  463. BM SCNEND NO, GO TEST FOR SYSTEM TERMINATION 00447000
  464. TM ENTSW,DEVCCH DOES THE DEVICE ADDRESS EXIST ? 00448000
  465. BZ RCUSCN NO, GO SETUP FOR SCAN 00449000
  466. TM RDEVSTAT,RDEVBUSY WAS FAILING DEVICE ACTIVE ? 00450000
  467. BZ RCUSCN NO, GO SETUP FOR SCAN 00451000
  468. MVC FAILADD(2),SIOADDR SAVE THE FAILING DEVICE ADDRESS 00452000
  469. LA R1,2 UPDATE THE SAVE AREA FOR UNITS BY 1 00453000
  470. RCUSCN EQU * 00454000
  471. LA R2,2 INITIALIZE THE INCREMENT LENGTH 00455000
  472. LR R4,R2 UPDATE REGISTER 4 00456000
  473. LA R3,62 INITIALIZE THE COUNT 00457000
  474. ST R11,FALADDPT SAVE THE CONTENT OF REGISTER 11 00458000
  475. SR R11,R11 CLEAR REGISTER 11 00459000
  476. RCCUSCN EQU * 00460000
  477. LH R7,RCHCUTBL(R11) GET THE CONTROL UNIT ADDRESS 00461000
  478. LTR R7,R7 IS THERE A CONTROL UNIT ADDRESS ? 00462000
  479. BM RCUSCNI NO, GO GET NEXT CONTROL UNIT 00463000
  480. A R7,ARIOCU GET ADDRESS OF RCUBLOK 00464000
  481. SR R14,R14 CLEAR REGISTER 14 FOR INDEX 00465000
  482. LA R5,30 INITIALIZE COUNT REGISTER 00466000
  483. RDEVSCN EQU * 00467000
  484. LH R8,RCUDVTBL(R14) GET THE DEVICE ADDRESS 00468000
  485. LTR R8,R8 IS THERE A DEVICE ADDRESS ? 00469000
  486. BM RDVSCNI NO, GO GET NEXT DEVICE ADDRESS 00470000
  487. SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00471000
  488. A R8,ARIODV GET ADDRESS OF RDEVBLOK 00472000
  489. C R8,RDEVSAVE IS THIS THE FAILING DEVICE ADDRESS 00473000
  490. BE RDVSCNI YES, DON'T PUT ADDRESS IN RECORD 00474000
  491. TM RDEVSTAT,RDEVBUSY WAS THE DEVICE BUSY ? 00475000
  492. BZ RDVSCNI NO, GO GET NEXT DEVICE ADDRESS 00476000
  493. FOUNDUM EQU * 00477000
  494. C R1,F16 ARE THERE EIGHT CONTROL UNITS SAVE ? 00478000
  495. BE SCNEND1 YES, GO GET DEVICE ADDRESS 00479000
  496. LH R0,RDEVADD GET DEVICE ADDRESS 00480000
  497. LH R15,RCUADD GET CONTROL UNIT ADDRESS 00481000
  498. OR R15,R0 GET THE 00482000
  499. LH R0,RCHADD CONTROL UNIT ADDRESS 00483000
  500. OR R15,R0 * 00484000
  501. STH R15,FAILADD(R1) SAVE UNIT ADDRESS IN CCH RECORD 00485000
  502. LA R1,2(R1) UPDATE UNIT ADDRESS COUNT 00486000
  503. RDVSCNI EQU * 00487000
  504. BXLE R14,R4,RDEVSCN GET THE NEXT DEVICE ADDRESS AND BRANCH 00488000
  505. RCUSCNI EQU * 00489000
  506. BXLE R11,R2,RCCUSCN GET THE NEXT CONTROL UNIT AND BRANCH 00490000
  507. SCNEND1 EQU * 00491000
  508. L R11,FALADDPT RESTORE THE CONTENT OF REGISTER 11 00492000
  509. SCNEND EQU * 00493000
  510. TM ENTSW,TERMSYS IS SYSTEM TERMINATION INDICATED ? 00494000
  511. BO CCHRESTO YES, RESTORE I/O EXTENDED LOGOUT AREA 00495000
  512. * FOR SEREP 00496000
  513. LM R7,R8,RCUSAVE GET THE DEVICE AND CONTROL UNIT ADDRS. 00497000
  514. TM ENTSW,DEVCCH+IOBCCH DOES THE ADDRESSES EXIST ? 00498000
  515. BNO CCHIOE NO, GO PUT CCH RECORD OUT ON 00499000
  516. * LOGREC 00500000
  517. LM R4,R5,FAILCSW GET THE CSW FOR RESTORE @VA01068 00501000
  518. TM ENTSW,INTERCCH INTERRUPT ENTRY @VA01068 00502000
  519. BO RESTDEV YES, RESTORE DEVICE AND CSW @VA01068 00503000
  520. B RESTCSW @VA01068 00504000
  521. ********************************************************************* 00505000
  522. ********************************************************************* 00506000
  523. SPACE 2 00507000
  524. CCHIOE EQU * IF NO RDEV OR NO IOBLOK, COME HERE TO RECORD CHL CHK 00508000
  525. LM R4,R5,FAILCSW GET THE CSW FOR RESTORE @VA01068 00509000
  526. BAL R3,MESSAGE GO WRITE THE MESSAGE @VA01068 00510000
  527. L R7,RECLENTH GET CCH RECORD LENGTH 00511000
  528. L R6,RECADDR GET THE ADDRESS OF THE CCH RECORD AREA 00512000
  529. SR R0,R0 CLEAR RETURN CODE REGISTER @VA03358 00513000
  530. CALL DMKIOECC,AFFINITY @V407510 00514000
  531. LTR R0,R0 WAS THE RECORDING SUCCESSFUL 00515000
  532. BZ MSGGEN YES, GO PUT OUT MESSAGE 00516000
  533. LA R0,MSG15L GET THE LENGTH OF THE MESSAGE 00517000
  534. LA R1,MSG15M GET THE ADDRESS OF THE ERROR MESSAGE 00518000
  535. CALL DMKQCNWT,PARM=OPERATOR+ALARM+NORET,AFFINITY @V407510 00519000
  536. MSGGEN EQU * 00520000
  537. TM ENTSW,SIOCCH START I/O ENTRY @VA01068 00521000
  538. BO RESTCSW YES, JUST RESTORE THE CSW @VA01068 00522000
  539. RESTDEV LH R2,SIOADDR GET THE DEVICE ADDRESS @VA01068 00523000
  540. STH R2,INTTIO RESTORE IT @VA01068 00524000
  541. RESTCSW EQU * @VA01068 00525000
  542. STM R4,R5,CSW RESTORE THE CSW FOR IOS @VA01068 00526000
  543. EXIT RETURN TO IOS 00527000
  544. ********************************************************************* 00528000
  545. EJECT 00529000
  546. CCHRESTO EQU * 00530000
  547. MVC ECSWLOG(4),FAILECSW RESTORE ECSW INFORMATION @VA01337 00531000
  548. SR R2,R2 CLEAR REGISTER 2 00532000
  549. ICM R2,3,DMKCCHSZ GET THE I/O EXT. LOGOUT LENGTH @V5088AA 00533000
  550. BZ CPTERM IF ZERO, GO PUT SYSTEM DOWN 00534000
  551. BCTR R2,R0 SUBTRACT ONE FROM THE LENGTH 00535000
  552. ICM R1,15,IOELPNTR GET THE POINTER TO THE I/O 00536000
  553. * EXTENDED LOGOUT 00537000
  554. BZ CPTERM IF ZERO, GO PUT SYSTEM DOWN 00538000
  555. SR R3,R3 CLEAR REGISTER 3 FOR INDEX 00539000
  556. L R5,AMCHAREA GET PTR TO MCH COMMON AREA @V407510 00540000
  557. ICM R3,1,MCHMODEL GET THE MODEL ID. 00541000
  558. B CCHSEREP(R3) BRANCH TO THE CORRECT MODEL SUPPORT 00542000
  559. CCHSEREP EQU * 00543000
  560. B CPTERM GO PUT THE SYSTEM DOWN 00544000
  561. B LOGOUT RESTORE LOGOUT AREA 00545000
  562. B LOGOUT RESTORE LOGOUT AREA FOR 145 00546000
  563. B CPTERM GO PUT SYSTEM DOWN 00547000
  564. B CCHCHAN GO CHECK CHANNEL ID FOR 165/168 00548000
  565. B CPTERM GO PUT THE SYSTEM DOWN FOR 3031/ @V5088AA 00549000
  566. * 3032/3033 PROCESSORS 00550000
  567. LOGOUT EQU * 00551000
  568. EX R2,MVCLOG RESTORE I/O EXTENDED LOGOUT AREA 00552000
  569. B CPTERM GO PUT SYSTEM DOWN 00553000
  570. SPACE 2 00554000
  571. ********************************************************************* 00555000
  572. MVCLOG MVC 0(0,R1),CCHLOG45 MOVE I/O EXTENDED LOGOUT 00556000
  573. * INTO STORAGE 00557000
  574. MVCLOG1 MVC 0(0,R1),CCHLOG80 MOVE I/O EXTENDED LOGOUT 00558000
  575. * FOR STANDALONE CHANNEL INTO STORAGE 00559000
  576. ********************************************************************* 00560000
  577. SPACE 2 00561000
  578. CCHCHAN EQU * 00562000
  579. CLI RECLENTH+3,X'18' IS THIS A 2880 CHANNEL ? @VA00881 00563000
  580. BE LOGOUT1 YES, GO RESTORE I/O EXTENDED LOGOUT 00564000
  581. LA R1,304 ADDRESS OF THE I/O EXTENDED LOGOUT AREA 00565000
  582. LA R2,23 THE LENGTH OF THE I/O EXTENDED LOGOUT 00566000
  583. CLI RECLENTH+3,X'0D' IS THIS A 2860 OR 2870 @VA00881 00567000
  584. * CHANNEL ? 00568000
  585. BNE CPTERM NO, GO PUT SYSTEM DOWN 00569000
  586. LOGOUT1 EQU * 00570000
  587. EX R2,MVCLOG1 RESTORE I/O EXTENDED LOGOUT AREA 00571000
  588. EJECT 00572000
  589. ********************************************************************* 00573000
  590. * OPERATOR COMMUNICATION ROUTINE 00574000
  591. ********************************************************************* 00575000
  592. SPACE 2 00576000
  593. CPTERM EQU * 00577000
  594. LH R2,SIOADDR GET THE ADDRESS OF THE DEVICE 00578000
  595. STH R2,IOOPSW+2 SAVE THE DEVICE ADDRESS IN I/O OLD 00579000
  596. * PSW 00580000
  597. USING VMBLOK,R11 SETUP ADDRESSABILITY FOR VMBLOK 00582000
  598. AIF (NOT &AP).CCHWFD @VA10837 00585010
  599. SWTCH DS 0H SWITCH TO MAIN PROCESSOR @VA10837 00585020
  600. TM APSTAT1,PROCIO MAIN PROCESSOR? @VA10837 00585030
  601. BNO ATTTERM NO, BRANCH @VA10837 00585040
  602. SIGNAL SSS STOP & STORE STATUS TO AP @VA10837 00585050
  603. B CCHCONT @VA10837 00585060
  604. ATTTERM DS 0H @VA10837 00585070
  605. L R4,PREFIXA GET OWN PREFIX REG @VA10837 00585080
  606. STM R0,R15,DUMPSAVE-PSA(R4) SAVE REGS FOR RESTART @VA10837 00585090
  607. L R4,PREFIXB GET OTHER PREFIX REG @VA10837 00585100
  608. MVC RSRTNPSW-PSA(,R4),RSRTMAIN RESTART NEW PSW @VA10837 00585110
  609. SIGNAL SSS SIGNAL MAIN PROCESSOR TO STOP @VA10837 00585120
  610. SIGNAL RESTART SIGNAL MAIN PROCESSOR TO RESTART @VA10837 00585130
  611. SIGNAL STOP,CONTROL=AUTO SIGNAL SELF TO STOP @VA10837 00585140
  612. MAINRSRT DS 0H RESTART ON MAIN PROCESSOR @VA10837 00585150
  613. L R4,PREFIXA GET OWN PREFIX REGISTER @VA10837 00585160
  614. LM R0,R15,DUMPSAVE-PSA(R4) RESTORE REGS @VA10837 00585170
  615. CCHCONT DS 0H @VA10837 00585180
  616. .CCHWFD ANOP 00585190
  617. LA R1,CCMSG GET THE CHANNEL MESSAGE @VA13439 00585194
  618. LA R0,CCMSGL GET LENGTH OF MESSAGE @VA13439 00585198
  619. MVC SAVEWRK2(20),IOOPSW @VA10837 00585200
  620. CALL DMKOPRWT,PARM=ALARM WRITE TO OPERATOR @VA10837 00585210
  621. MVC IOOPSW(20),SAVEWRK2 NOW REINSTATE @VA10837 00585220
  622. L R14,PREFIXA GET OWN PREFIX REG @VA10837 00585230
  623. CLC CPID-PSA(4,R14),WARM WARM INDICATED IN ID @VA10837 00585240
  624. BNE CCHCKP NO,DONT CHANGE ID @VA10837 00585250
  625. MVC CPID-PSA(4,R14),CPCP MOVE ID FOR CHECKPOINT @VA10837 00585260
  626. CCHCKP DS 0H @VA10837 00585270
  627. MVI MCNPSW+3,X'0F' SET FOR SEREP @VA10837 00585280
  628. LPSW WAITCCH ENTER DISABLE WAIT @VA10837 00585290
  629. SPACE 00587000
  630. ********************************************************************* 00588000
  631. SPACE 00589000
  632. DROP R6 @VMD0144 00590000
  633. EJECT 00591000
  634. ******************************************************************* 00592000
  635. * PRINT THE CHANNEL ERROR MESSAGE FOR DMKIOE. 00593000
  636. ********************************************************************* 00594000
  637. SPACE 00595000
  638. DMKCCHRT RELOC 00596000
  639. LTR R10,R10 IS THERE AN IOBLOK ? @VA01077 00597000
  640. BNP CCHEND NO, DON'T LOOK FOR TROUBLE @VA01077 00598000
  641. L R4,IOBIOER GET IOERBLOK ADDRESS 00599000
  642. L R9,IOERCCRA GET RECORD ADDRESS 00600000
  643. BAL R3,MESSAGE GO SETUP CCH MESSAGE 00601000
  644. LTR R8,R8 WAS THERE A RDEVBLOK ? 00602000
  645. BNP CCHEND NO,EXIT GRACEFULLY 00603000
  646. SPACE 00604000
  647. TM IOBFLAG,IOBCP WAS THIS A CP GENERATED @VA01077 00605000
  648. * EVENT ? 00606000
  649. BNZ CCHEND YES, EXIT @VA00881 00607000
  650. LTR R4,R4 DO WE HAVE AN IOERBLOK ? @V508690 00608000
  651. BZ CCHEND NO,LETS RETURN @V508690 00609000
  652. LH R2,CCHCLOGL GET THE LENGTH OF LOGOUT @V508690 00610000
  653. LA R2,CCHADDR-CCCPUID(R2) LENGTH OF IOERCCR EXT @V508690 00611000
  654. CLI CCHANID,X'08' CHECK FOR STANDALONE CHANNEL @V508690 00612000
  655. BE LNTHOK IT IS, DO NOT INCREMENT COUNT @V508690 00613000
  656. TM CCHANID,X'04' ONE OF THE OTHER STANDALONES ? @V508690 00614000
  657. BO LNTHOK YES, DO NOT INCREMENT COUNT @V508690 00615000
  658. LA R2,4(,R2) INCREMENT COUNT,INTEGRAT ADDR @V508690 00616000
  659. LNTHOK A R2,F7 ROUND UP @V508690 00617000
  660. SRL R2,3 CONVERT TO DOUBLEWORDS @V508690 00618000
  661. STH R2,IOERCCH SAVE SIZE OF CCH RECORD @V508690 00619000
  662. LA R0,IOERSIZE(R2) ADD IN THE IOERBLOK SIZE @V508690 00620000
  663. AH R0,IOEREXT ADD IOEREXT SIZE (SHOULD BE 1) @V508690 00621000
  664. CALL DMKFREE GET STORAGE FOR NEW IOERBLOK @V508690 00622000
  665. ST R1,IOBIOER CHAIN NEW IOERBLOK @V508690 00623000
  666. ST R1,SAVER4 PASS BACK TO DMKIOE THE NEW @V508690 00624000
  667. * IOERBLOK ADDRESS. 00625000
  668. LR R2,R1 ADDRESS OF NEW IOERBLOK @V508690 00626000
  669. LA R3,IOERSIZE+1 SIZE OF OLD IOERBLOK @V508690 00627000
  670. SLL R3,3 CONVERT TO BYTES @V508690 00628000
  671. LR R7,R3 MAKE COUNT REGS EQUAL @V508690 00629000
  672. LR R6,R4 ADDRESS OF OLD IOERBLOK @V508690 00630000
  673. MVCL R2,R6 MOVE IT @V508690 00631000
  674. LH R3,IOERCCH LENGTH OF CCH RECORD @V508690 00632000
  675. SLL R3,3 CONVERT TO BYTES @V508690 00633000
  676. LR R7,R3 MAKE COUNT REGS EQUAL @V508690 00634000
  677. LA R6,CCCPUID ADDR OF CCHREC TO BE COPIED @V508690 00635000
  678. MVCL R2,R6 MOVE CCHREC PORTION TO IOERBLOK @V508690 00636000
  679. * R2 SET FROM PREVIOUS MVCL 00637000
  680. LH R0,IOERCCH CCR EXT. SIZE @VMD0114 00638000
  681. AH R0,IOEREXT ADD SIZE OF OLD IOERBLOK EXT. @VMD0114 00639000
  682. STH R0,IOEREXT-IOERBLOK(R1) SIZE OF NEW IOERBLOK @VMD0114 00640000
  683. * EXT. GETS PUT INTO NEW IOERBLOK 00641000
  684. LA R0,IOERSIZE SET UP TO FRET OLD IOERBLOK @V508690 00642000
  685. AH R0,IOEREXT ADD THE EXTENTION SIZE @V508690 00643000
  686. LR R1,R4 ADDRESS OF OLD IOERBLOK TO FRET @V508690 00644000
  687. CALL DMKFRET FRET THE OLD IOERBLOK @V508690 00645000
  688. SPACE 00646000
  689. CCHEND EQU * 00647000
  690. EXIT RETURN TO THE RECORDER (DMKIOE) 00648000
  691. SPACE 00649000
  692. ********************************************************************* 00650000
  693. EJECT 00651000
  694. ********************************************************************* 00652000
  695. MESSAGE EQU * 00653000
  696. SR R1,R1 CLEAR REGISTER 1 @VA01068 00654000
  697. ICM R1,7,CCHCUA GET FAILING DEVICE ADDRESS @VA01068 00655000
  698. CALL DMKCVTBH CONVERT TO PRINT FORM 00656000
  699. LA R0,CCCMSGL INSERT MSG LENGTH 00657000
  700. STCM R1,C7,CCCADDR MOVE FAILING ADDRESS IN MESSAGE 00658000
  701. MVC CCCUSID(8),CCPROGID MOVE USERID TO MSG 00659000
  702. TM FAILCSW+5,CCC+IFCC WAS IT A CHANNEL CONTROL 00660000
  703. * CHECK OR INTERFACE CONTROL CHECK ? 00661000
  704. BZ MSGEXIT NO, RETURN TO IN LINE CODE 00662000
  705. LA R1,CCCMSG GET THE BEGINNING ADDRESS OF THE MESSAGE 00663000
  706. MVC CCCMSID(12),CCCCONST MOVE IN CHANNEL CONTROL CHECK ID. 00664000
  707. TM FAILCSW+5,IFCC IS THIS INTERFACE CONTROL CHECK @VA01068 00665000
  708. BZ MSGOPERA NO, GO PUT MESSAGE OUT @VA01068 00666000
  709. MVC CCCMSID(12),ICCCONST MOVE IN INTERFACE CONTROL CHECK 00667000
  710. * IDENTIFICATION 00668000
  711. MSGOPERA EQU * 00669000
  712. CALL DMKQCNWT,PARM=OPERATOR+NORET,AFFINITY @V407510 00670000
  713. MSGEXIT EQU * 00671000
  714. BR R3 RETURN TO IN LINE CODE 00672000
  715. ******************************************************************** 00673000
  716. ******************************************************************* 00674000
  717. EJECT 00675000
  718. ******************************************************************** 00676000
  719. * 00677000
  720. * SUBROUTINE NAME 00678000
  721. * 00679000
  722. * DMKCCHRF 00680000
  723. * 00681000
  724. * FUNCTION - 00682000
  725. * 00683000
  726. * THIS SUBROUTINE WILL REFLECT CHANNEL LOGOUT INFORMATION 00684000
  727. * TO A USERS VIRTUAL MACHINE PAGE ZERO .. 00685000
  728. * 00686000
  729. * ATTRIBUTES - 00687000
  730. * 00688000
  731. * RESIDENT,SERIALLY REUSABLE, ENTERED VIA SVC 00689000
  732. * 00690000
  733. * ENTRY CONDITIONS - 00691000
  734. * 00692000
  735. * GR 2 = ADDRESSABILITY FOR USER PAGE ZERO 00693000
  736. * GR 8 = ADDRESS OF VDEVBLOK 00694000
  737. * GR 11 = ADDRESS OF VMBLOK 00695000
  738. * 00696000
  739. * EXIT CONDITIONS - 00697000
  740. * 00698000
  741. * THE CHANNEL CHECK INFORMATION WILL HAVE BEEN REFLECTED 00699000
  742. * TO THE USERS PAGE ZERO AND USERS CHANNEL LOGOUT AREA. 00700000
  743. * 00701000
  744. * CALLS TO OTHER ROUTINES - 00702000
  745. * 00703000
  746. * DMKFRET - TO FRET THE IOERBLOK ASSOCIATED WITH THE 00704000
  747. * CHANNEL CHECK. 00705000
  748. * 00706000
  749. * EXTERNAL REFERENCES - 00707000
  750. * 00708000
  751. * NONE 00709000
  752. * 00710000
  753. * TABLES/WORK AREAS - 00711000
  754. * 00712000
  755. * IOERBLOK EXTENTION CONTAINS THE CHANNEL CHECK 00713000
  756. * INFORMATION TO BE REFLECTED. 00714000
  757. * 00715000
  758. * NOTES - 00716000
  759. * THE ONLY TIME THIS ROUTINE GETS CONTROL IS WHEN A 00717000
  760. * CHANNEL CHECK IS DETECTED WHILE TRYING TO REFLECT 00718000
  761. * STATUS TO THE VIRTUAL MACHINE. 00719000
  762. * THIS ROUTINE IS CALLED BY: 00720000
  763. * 00721000
  764. * DMKVIO 00722000
  765. * DMKVSI 00723000
  766. * DMKDSP 00724000
  767. * 00725000
  768. * REGISTER USAGE - 00726000
  769. * 00727000
  770. * GR 14,15 LINKAGE REGISTERS 00728000
  771. * GR 12 = MODULE BASE REGISTER 00729000
  772. * GR 11 = VMBLOK ADDRESSABILITY 00730000
  773. * GR 9 = IOERBLOK ADDRESSABILITY 00731000
  774. * GR 8 = VDEVBLOK ADDRESSABILITY 00732000
  775. * GR 2 = ADDRESSABILITY FOR USER PAGE ZERO AND LOGOUT AREA 00733000
  776. * GR 1,3,4,5 AND 7 = WORK REGISTERS 00734000
  777. * 00735000
  778. * OPERATION - 00736000
  779. * 00737000
  780. * 1. FOR ALL CHANNELS EXCEPT STANDALONE CHANNELS (2860,2870 00738000
  781. * 2880) MOVE THE ECSW FROM THE IOERBLOK EXTENTION TO USERS 00739000
  782. * PAGE ZERO. 00740000
  783. * 00741000
  784. * 2. DETERMINE THE CPU TYPE. 00742000
  785. * 00743000
  786. * 3. FOR ALL CPU'S EXCEPT 155/158 OBTAIN THE ADDRESS OF THE 00744000
  787. * LOGOUT AREA, IF NECESSARY BRING USER'S PAGE INTO CORE THEN 00745000
  788. * MOVE THE CHANNEL LOGOUT INFORMATION FROM THE IOERBLOK 00746000
  789. * EXTENTION TO THE VIRTUAL MACHINES LOGOUT AREA. 00747000
  790. * BUT FOR CPU'S WITH CHANNELS THAT ALLOW C-REG 14 TO MASK 00748000
  791. * OFF THE LOGOUT AND WHICH USE THE LOGOUT POINTER IN LOW 00749000
  792. * CORE AT X'AC', WE FIRST CHECK THE USERS C-REG 14 TO SEE 00750000
  793. * IF LOGOUT IS PERMITTED. IF IT IS WE THEN MAKE ONE 00751000
  794. * ADDITIONAL CHECK (NOT WANTED BY S/370 ARCHITECTURE, BUT 00752000
  795. * IT MAY PREVENT SOMEONE'S LOW CORE FROM BEING WIPED OUT) 00753000
  796. * BEFORE PROCEEDING: IF HIS LOGOUT POINTER (AT LOCATION 00754000
  797. * X'AC') POINTS TO 0 WE WILL NOT LOGOUT. 00755000
  798. * 00756000
  799. * 4. FRET THE IOERBLOK. 00757000
  800. * 00758000
  801. * ERROR MESSAGES - 00759000
  802. * 00760000
  803. * NONE 00761000
  804. * 00762000
  805. ********************************************************************* 00763000
  806. SPACE 3 00764000
  807. DMKCCHRF RELOC @V508690 00765000
  808. USING VDEVBLOK,R8 @V508690 00766000
  809. USING IOERBLOK,R9 @V508690 00767000
  810. SPACE 00768000
  811. L R9,VDEVIOER PICK UP IOERBLOK ADDR @V508690 00769000
  812. CLI IOERCCH+1,X'00' DO WE HAVE A CCR EXTENTION @V508690 00770000
  813. BE FRETCCR NO,FRET IOERBLOK AND EXIT @V508690 00771000
  814. SLR R1,R1 SET UP FOR USER PAGE ZERO @V508690 00772000
  815. SL R8,VMDVSTRT DEVICE DISPLACEMENT @V508690 00773000
  816. TRANS 2,1,OPT=(BRING,DEFER) GET USER PAGE ZERO @V508690 00774000
  817. AL R8,VMDVSTRT RESTORE VDEVBLOK PNTR @V508690 00775000
  818. CLI IOERCHID,IOER2860 TEST FOR STANDALONE CHANNELS @V508690 00776000
  819. BL MVECSW NOT STANDALONE,GO MOVE ECSW @V508690 00777000
  820. CLI IOERCHID,IOERS80 CHECK HI END OF RANGE @V508690 00778000
  821. BNH CPUTYP YES, A STANDALONE , BYPASS MOVE @V508690 00779000
  822. MVECSW EQU * @VA09068 00780100
  823. MVC ECSWLOG-PSA(4,R2),IOERECSW ECSW TO USER @VA09068 00780400
  824. SPACE 00781000
  825. CPUTYP EQU * @V508690 00782000
  826. L R5,AMCHAREA GET MCH AREA POINTER @V508690 00783000
  827. CLI MCHMODEL,MODEL155 IS THIS A 155/158 ? @V508690 00784000
  828. BE FRETCCR YES,ALL DONE,155/158 DO NOT LOG @V508690 00785000
  829. SPACE 00786000
  830. * DETERMINE WHETHER THE CHANNEL IS ONE THAT LOGS OUT IN THE 00787000
  831. * FIXED LOGOUT AREA IN LOW CORE AND IGNORES THE LOGOUT MASK IN 00788000
  832. * C-REG 14, OR ONE THAT USES THE IOEL POINTER (AT X'AC' IN LOW 00789000
  833. * CORE) AND HEEDS THE MASK IN C-REG 14. 00790000
  834. TM IOERCHID,X'04' 2860/2870 CHANNEL? @VMD0151 00791000
  835. BZ TRY135 NO, DEFINITELY NOT 2860/2870. @VMD0151 00792000
  836. LA R1,FXDLOG+48 2860/2870 LOW CORE LOGOUT AREA. @VMD0151 00793000
  837. CLI IOERCHID,IOERB80 2880 SLIPPED THRU ABOVE TEST? @VMD0151 00794000
  838. BNE GETLOGA NO, SO IT IS TRULY 2860/2870. @VMD0151 00795000
  839. TRY135 LA R1,FXDLOG 135/138 LOW CORE LOGOUT AREA. @VMD0151 00796000
  840. CLI MCHMODEL,MODEL135 IS IT REALLY 135/138? @VMD0151 00797000
  841. BE GETLOGA YES, 135/138. @VMD0151 00798000
  842. SPACE 00799000
  843. * THE CHANNEL USES IOEL POINTER. (INTEGRATED CHNL OR 2880 CHNL) 00800000
  844. L R1,IOELPNTR(R2) POINTER TO LOGOUT AREA. @VMD0151 00801000
  845. TM VMVCR14,VMIOLOG TEST USERS C-REG 14 I/O LOGOUT @VMD0103 00802000
  846. * MASK. 00803000
  847. BNO FRETCCR DO NOT LOGOUT, C-REG 14 PREVENTS.@VMD0103 00804000
  848. LTR R1,R1 IS HIS LOGOUT POINTER A 0? @VMD0103 00805000
  849. BZ FRETCCR DO NOT LOGOUT, IT WOULD KILL HIM.@VMD0103 00806000
  850. GETLOGA DS 0H TRANSLATE VIRT. LOG ADDR (R1) TO REAL (R2). @VMD0151 00807000
  851. SL R8,VMDVSTRT DEVICE DISPLACEMENT. @VMD0103 00808000
  852. TRANS 2,1,OPT=(BRING,DEFER) GET USER LOG AREA @V508690 00809000
  853. AL R8,VMDVSTRT RESTORE DEVICE BLOK PNTR @V508690 00810000
  854. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00811000
  855. * FROM HERE TO NEXT DASHED COMMENT SEPARATOR WE ARE COMPUTING: 00812000
  856. * R4 GETS ADDRESS OF LOGOUT DATA IN IOERBLOK. 00813000
  857. * R5 GETS LENGTH OF THIS LOGOUT DATA. LENGTH IS LESSER OF: 00814000
  858. * (1) LENGTH FOUND IN IOERLOGL (=CCHCLOGL); (2) STIDC LENGTH; 00815000
  859. * (3) LENGTH OF DATA AFTER X'FF' PAD BYTES HAVE BEEN STRIPPED 00816000
  860. * FROM FAR END. 00817000
  861. SR R5,R5 @VMD0135 00818000
  862. IC R5,IOERCCUA+1 CHANNEL NUMBER OF FAILING REAL @VMD0135 00819000
  863. * CHANNEL (2ND BYTE OF 3 BYTE UNITADDR). 00820000
  864. AR R5,R5 DOUBLE IT TO INDEX HALFWORDS. @VMD0135 00821000
  865. A R5,ARIOCT ADD ADDR OF CHNL TABLE (HALFWDS).@VMD0135 00822000
  866. LH R5,0(0,R5) LOAD HALFWD INDEX TO RCHBLOK. @VMD0135 00823000
  867. * AT THIS POINT WE WOULD NORMALLY CHECK FOR MINUS INDEX TO SEE 00824000
  868. * IF CHANNEL WAS 'GEN'ED OR NOT, BUT THAT SHOULD NOT BE 00825000
  869. * NECESSARY HERE AS WE WOULD NOT BE REFLECTING INTERRUPT IF 00826000
  870. * CHANNEL WAS NOT 'GEN'ED. 00827000
  871. A R5,ARIOCH INDEX+BASE GIVES RCHBLOK ADDRESS.@VMD0135 00828000
  872. USING RCHBLOK,R5 @VMD0135 00829000
  873. LH R5,RCHSTIDC+2 LOAD LENGTH OF LOGOUT. THIS IS @VMD0135 00830000
  874. * WHAT REAL CHANNEL SAID IN RESPONSE TO 00831000
  875. * STIDC INSTRUCTION AT CP IPL TIME. 00832000
  876. DROP R5 @VMD0135 00833000
  877. LTR R5,R5 IF MINUS, REAL CHNL GAVE CC=3. @VMD0151 00834000
  878. * IF 0, CHNL GAVE FALSE LENGTH OF 0 TO 00835000
  879. * STIDC. CHNLS USING FIX-LOG-AREA DO THIS. 00836000
  880. BNP COMPUTLN USE COMPUTED LENGTH, NOT STIDC. @VMD0151 00837000
  881. CH R5,IOERLOGL COMPARE STIDC LENGTH WITH LENGTH @VMD0151 00838000
  882. * COMPUTED FOR THIS PARTICULAR LOGOUT. 00839000
  883. BNH KEEPSTID USE WHICHEVER LENGTH IS SMALLER. @VMD0151 00840000
  884. * NOTE: FOR THE NEW PROCESSORS, 3031 ETC, 00841000
  885. * COMPUTED LENGTH MAY BE LARGER THAN ACTUAL 00842000
  886. * STIDC LENGTH. 00843000
  887. COMPUTLN LH R5,IOERLOGL COMPUTED LENGTH IS SMALLER. ONE @VMD0151 00844000
  888. * EXAMPLE OF THIS IS WHERE THE CHANNEL IS 00845000
  889. * ONE THAT DOES NOT LOGOUT FOR CHANNEL DATA 00846000
  890. * CHECK; THAT WOULD GIVE 0 HERE. 00847000
  891. KEEPSTID DS 0H @VMD0151 00848000
  892. LA R4,IOERCLOG ADDRESS OF LOG OUT INFO @V508690 00849000
  893. CLI IOERCHID,IOERB80 CHECK FOR 2880 @V508690 00850000
  894. BE ADDROK YES,DO NOT INCREMENT ADDRESS @V508690 00851000
  895. CLI IOERCHID,IOERS80 CHECK FOR OTHER 2880 @V508690 00852000
  896. BE ADDROK YES, DO NOT INCREMENT ADDRESS @V508690 00853000
  897. CLI IOERCHID,IOER2860 CHECK FOR 2860. @VMD0151 00854000
  898. BE ADDROK YES,KEEP NON-INTEGRATED LOG ADDR.@VMD0151 00855000
  899. CLI IOERCHID,IOER2870 CHECK FOR 2870. @VMD0151 00856000
  900. BE ADDROK YES,KEEP NON-INTEGRATED LOG ADDR.@VMD0151 00857000
  901. LA R4,IOERLG45 ADDR OF INTEGRATED LOGOUT DATA. @VMD0151 00858000
  902. ADDROK DS 0H @VMD0151 00859000
  903. SLR R0,R0 @VMD0151 00860000
  904. LA R5,1(0,R5) +1 TO COMPENSATE FOR INITL BCT. @VMD0151 00861000
  905. LR R3,R4 ADDR OF LOGOUT DATA IN IOERBLOK. @VMD0151 00862000
  906. BCT R3,FCHKLPZ COMPUTE ADDR OF LOGOUT -1. @VMD0151 00863000
  907. SPACE 00864000
  908. * LOOK FOR FF BYTES AT THE FAR END OF THE LOGOUT AREA, WHICH 00865000
  909. * WILL INDICATE THE LOGOUT WAS SHORTER THAN WE THOUGHT. 00866000
  910. FCHKLOOP IC R0,0(R5,R3) LOAD BYTE FROM END OF LOGOUT. @VMD0151 00867000
  911. C R0,F255 IS IT X'FF' ? @VMD0151 00868000
  912. BNE NOMOREFF NO,SO IT'S THE TOP OF THE LOGOUT.@VMD0151 00869000
  913. FCHKLPZ BCT R5,FCHKLOOP STILL FINDING FFS AT END, SO BCT @VMD0151 00870000
  914. * DECREMENTS LOGOUT LENGTH. 00871000
  915. NOMOREFF DS 0H @VMD0151 00872000
  916. * R4 NOW HAS ADDR OF LOGOUT DATA IN IOERBLOK. 00873000
  917. * R5 NOW HAS LENGTH OF LOGOUT DATA (POSSIBLY 0). 00874000
  918. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00875000
  919. LR R3,R5 SAVE COPY OF LENGTH IN R3. @VMD0151 00876000
  920. LR R7,R2 LOAD WORK REG, IOEL POINTER. @VMD0151 00877000
  921. SRL R7,12 CLEAR OUT LOW ORDER ADDRESS @V508690 00878000
  922. A R7,F1 ROUND UP TO NEXT PAGE @V508690 00879000
  923. SLL R7,12 MOVE IT BACK @V508690 00880000
  924. SR R7,R2 SUB THE IOEL PNT FROM NEXT PAGE @V508690 00881000
  925. CR R7,R3 COMPARE REMAINDER W/ IOEL LENGTH.@VMD0135 00882000
  926. BNL MOVELOG IT WILL FIT, SO MOVE IT @V508690 00883000
  927. LR R3,R7 LOAD WHAT WILL FIT @V508690 00884000
  928. AR R1,R7 SET UP LOG OUT AREA POINTER FOR @V508690 00885000
  929. * THE NEXT TRANS (ROUND UP) 00886000
  930. MOVELOG MVCL R2,R4 MOVE LOG INFO TO USER @V508690 00887000
  931. BE FRETCCR COUNTERS EQUAL, WE ARE FINISHED @V508690 00888000
  932. SL R8,VMDVSTRT DEVICE DISPLACEMENT @V508690 00889000
  933. TRANS 2,1,OPT=(BRING,DEFER) GET NEXT LOGOUT PAGE @V508690 00890000
  934. AL R8,VMDVSTRT RESTORE DEVICE BLOK PNTER @V508690 00891000
  935. LR R3,R5 COUNTERS EQUAL RESIDUAL COUNT @V508690 00892000
  936. B MOVELOG FINISH MOVING LOG INFO @V508690 00893000
  937. SPACE 3 00894000
  938. FRETCCR LA R0,IOERSIZE LETS FRET THE IOERBLOK @V508690 00895000
  939. AH R0,IOEREXT ADD THE EXTENTION SIZE @V508690 00896000
  940. LR R1,R9 THE ADDRESS TO FRET @V508690 00897000
  941. CALL DMKFRET @V508690 00898000
  942. MVC VDEVIOER,ZEROES CLEAR THE POINTER @V508690 00899000
  943. NI VDEVFLAG,255-VDEVUC TURN OFF UC FLAG @VA08976 00899500
  944. EXIT @V508690 00900000
  945. EJECT 00901000
  946. WAITCCH DS 0D @VA10837 00902010
  947. DC X'0002',X'0000' @VA10837 00902020
  948. DC X'00000002' @VA10837 00902030
  949. WARM DC C'WARM' @VA10837 00902040
  950. CPCP DC C'CPCP' @VA10837 00902050
  951. AIF (NOT &AP).CCHWFD2 @VA10837 00902060
  952. RSRTMAIN DS 0D @VA10837 00902070
  953. DC X'00080000' @VA10837 00902080
  954. DC A(MAINRSRT) @VA10837 00902090
  955. .CCHWFD2 ANOP 00902100
  956. SPACE 00903000
  957. SPACE 00904000
  958. CCMSG DC X'151515' 00905000
  959. DC C'DMKCCH603W CHANNEL ERROR; RUN SEREP, RESTART SYSTEM' 00906000
  960. DC X'1515' 00907000
  961. CCMSGL EQU (*-CCMSG) LENGTH OF MESSAGE 00908000
  962. SPACE 00909000
  963. CCCMSG DC X'151515' 00910000
  964. DC C'DMKCCH60' 00911000
  965. CCCMSID DC C'1I ' 00912000
  966. CCCTYPE DC C' CHANNEL ' 00913000
  967. DC C' CONTROL CHECK DEV ' 00914000
  968. CCCADDR DC C'XXX' 00915000
  969. DC C'; USER ' 00916000
  970. CCCUSID DC C'XXXXXXXX' 00917000
  971. DC X'1515' 00918000
  972. CCCMSGL EQU (*-CCCMSG) 00919000
  973. SPACE 00920000
  974. MSG15M DC X'1515' 00921000
  975. DC C'DMKCCH605I CHANNEL CHECK RECORDING FAILURE',X'1515' 00922000
  976. MSG15L EQU *-MSG15M 00923000
  977. CCCCONST DC C'1I CHANNEL ' @VA01337 00924000
  978. ICCCONST DC C'2I INTERFACE' @VA01337 00925000
  979. ************************************************************ 00926000
  980. SPACE 00927000
  981. CCHCONST DC X'20' REC. TYPE 00928000
  982. DC X'66' OPERATING SYSTEM AND RELEASE @VA10800 00929500
  983. DC X'40' CONVERT THE TOD FIELD @VM08856 00930000
  984. DC XL5'00' MISC. SWITCHES 00931000
  985. SPACE 00932000
  986. CPEYED DC C' CP/370' 00933000
  987. DMKCCHCF DC XL16'00' CHANNEL TYPE TABLE 00934000
  988. DMKCCH60 DC F'0' ADDRESS OF THE 2860 CHANNEL MODULE 00935000
  989. DMK2870 DC F'0' ADDRESS OF THE 2870 CHANNEL MODULE 00936000
  990. DMK2880 DC F'0' ADDRESS OF THE 2880 CHANNEL MODULE 00937000
  991. DMKCCHSZ DC H'0000' SAVE THE SIZES OF THE IOEL @V5088AA 00938000
  992. DMKCCHMX DC H'0000' SAVE MAX. SIZE OF CCH RECORD @V5088AA 00939000
  993. ********************************************************************* 00940000
  994. EJECT 00941000
  995. LTORG 00942000
  996. EJECT 00943000
  997. PSA , @V306638 00944000
  998. COPY CCHREC @V306638 00945000
  999. COPY EQU @V306638 00946000
  1000. COPY DEVTYPES @V306638 00947000
  1001. COPY VBLOKS @V508690 00948000
  1002. COPY IOBLOKS @V306638 00949000
  1003. COPY IOER @V306638 00950000
  1004. COPY MCHAREA @V306638 00951000
  1005. COPY RBLOKS @V306638 00952000
  1006. COPY SAVE @V306638 00953000
  1007. COPY VMBLOK @V306638 00954000
  1008. EJECT 00955000
  1009. ENTSW EQU SAVEWRK1 00956000
  1010. RCHSAVE EQU SAVEWRK2 00957000
  1011. RCUSAVE EQU SAVEWRK3 00958000
  1012. RDEVSAVE EQU SAVEWRK4 00959000
  1013. FALADDPT EQU SAVEWRK5 00960000
  1014. RECLENTH EQU SAVEWRK6 00961000
  1015. RECADDR EQU SAVEWRK7 00962000
  1016. ADDSAVE EQU SAVEWRK8 00963000
  1017. SIOADDR EQU SAVEWRK9 00964000
  1018. END 00965000