Table of Contents

DMKDAS Source

References

Source Listing

DMKDAS.ASSEMBLE.txt
  1. DAS TITLE 'DMKDAS (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE INPUT SERIALIZATION @V200820 00002000
  3. *. 00003000
  4. * 00004000
  5. * MODULE NAME : DMKDAS 00005000
  6. * 00006000
  7. * 00007000
  8. * 00008000
  9. * FUNCTION : TO EXAMINE THE ERROR CONDITION RESULTING FROM A UNIT CHECK 00009000
  10. * WHILE EXECUTING A CP GENERATED DASD CHANNEL PROGRAM. 00010000
  11. * THE ORIGINAL CHANNEL PROGRAM WILL BE RETRIED WHEN POSSIBLE 00011000
  12. * TO CORRECT THE FAILING CONDITION. IF THE ERROR CONDITION 00012000
  13. * IS UNCORRECTABLE CONTROL WILL BE PASSED TO THE MESSAGE 00013000
  14. * WRITER (DMKMSW) FOR OPERATOR AWARENESS. UPON RETURNING 00014000
  15. * FROM MESSAGE WRITER THE ORIGINAL CHANNEL PROGRAM MAY BE 00015000
  16. * RE-EXECUTED OR TERMINATED. ALSO STATISTICAL COUNTERS 00016000
  17. * FOR 2314 TYPE DEVICE WILL BE UPDATED. 00016100
  18. * 00017000
  19. * 00018000
  20. * 00019000
  21. * ATTRIBUTES : REENTRANT,RESIDENT,CALLED VIA SVC. 00020000
  22. * 00021000
  23. * 00022000
  24. * ENTRY POINT : DMKDASER - TO RETRY THE FAILING DASDI CHANNEL PROGRAM 00023000
  25. * 00026000
  26. * 00027000
  27. * ENTRY CONDITIONS : GPR8=ADDRESS OF RDEVBLOK 00028000
  28. * GPR10=ADDRESS OF IOBLOK 00029000
  29. * GPR12=BASE ADDRESS 00030000
  30. * GPR13=ADDRESS OF SAVE AREA 00031000
  31. * 00032000
  32. * 00033000
  33. * EXIT CONDITIONS : 1. WHEN RETRY IS POSSIBLE. 00034000
  34. * IOBFLAG=IOBRSTRT 00035000
  35. * IOBRCAW=ADDRESS OF RESTART CCW STRING. 00036000
  36. * 2. WHEN RETRY IS NOT POSSIBLE. 00037000
  37. * IOBSTAT=IOBFATAL 00038000
  38. * 00039000
  39. * 00040000
  40. * CALLS TO OTHER ROUTINES : 00041000
  41. * 1. DMKMSW - TO PROVIDE OPERATOR COMMUNICATION 00042000
  42. * IN ATTEMPTING TO CORRECT THE 00043000
  43. * ERROR CONDITION. 00044000
  44. * 2. DMKFREE - TO OBTAIN STORAGE FOR DASD 00045000
  45. * ENVIRONMENTAL SENSE DATA. THIS 00046000
  46. * CONDITION OCCURS WHEN THE CONTROL 00047000
  47. * UNIT INDICATES AN OVERFLOW OF THE 00048000
  48. * USAGE COUNTER. 00049000
  49. * 3. DMKFRET - TO RETURN STORAGE OBTAINED BY DMKFRE 00050000
  50. * 4. DMKQCNWT - TO WRITE MSG DAS956A TO OPERATOR 00051000
  51. * 5. DMKCVTBH - TO CONVERT REAL DEVICE ADDRESS 00052000
  52. * 6. DMKIOEST - TO UPDATE STATISTICAL DATA COUNTERS 00053000
  53. * 7. DMKTRKIN - TO HANDLE TRACK CONDITION CHECKS 00053100
  54. * 00056000
  55. * 00057000
  56. * EXTERNAL REFERENCES : 00058000
  57. * DMKMSW 00060000
  58. * DMKIOEST 00060100
  59. * 00061000
  60. * 00062000
  61. * TABLES AND WORKAREAS: BUFFER TO CONTAIN CHANNEL PROGRAM 00063000
  62. * & LABEL READ FROM DASD VOLUME. 00064000
  63. * 00065000
  64. * REGISTER USAGE : 00066000
  65. * GPR 0=PSA ADDRESSABILITY 00067000
  66. * GPR 1=SCRATCH 00067100
  67. * GPR 2=SCRATCH 00067200
  68. * GPR 3=USED FOR TESTING RE-OCCURRING ERRORS 00067300
  69. * GPR 4=SCRATCH 00068000
  70. * GPR 5=GENERAL USAGE IS FOR BAL REGISTER 00069000
  71. * GPR 6=SCRATCH 00070000
  72. * GPR 7=IOERBLOK ADDRESS 00071000
  73. * GPR 8=RDEVBLOK ADDRESS. 00072000
  74. * GPR 9=SCRATCH 00073000
  75. * GPR 10=IOBLOK ADDRESS. 00074000
  76. * GPR 11=VMBLOK ADDRESS. 00075000
  77. * GPR 12=BASE ADDRESS. 00076000
  78. * GPR 13=SAVE AREA ADDRESS. 00077000
  79. * GPR 14=EXTERNAL LINKAGE REGISTER. 00078000
  80. * GPR 15=EXTERNAL LINKAGE REGISTER. 00079000
  81. * 00080000
  82. * 00081000
  83. * NOTES : NONE. 00082000
  84. * 00083000
  85. * 00084000
  86. * 00085000
  87. * OPERATION : A. IF THE RETRY COUNT IN THE IOBLOK IS ZERO, STORE 00086000
  88. * THE ADDRESS OF THE IOERBLOK IN THE RDEVBLOK. 00087000
  89. * B. TEST FOR CHANNEL ERRORS. 00088000
  90. * 1. CHANNEL DATA CHECKS ARE RETRIED 10 TIMES. 00089000
  91. * 2. INTERFACE AND CHANNEL CONTROL CHECKS ARE 00090000
  92. * RETRIED 10 TIMES. 00091000
  93. * C. TEST FOR THE SPECIFIC TYPE OF ERROR. 00092000
  94. * 1. EQUIPMENT CHECK - THE OPERATION IS RETRIED 10 TIMES 00093000
  95. * 2. NO RECORD FOUND (NRF) CONDITION (2314/2319) A READ 00094000
  96. * HOME ADDRESS IS EXECUTED AND THE DATA IS COMPARED 00095000
  97. * TO THE SEEK ADDRESS. IF THE COMPARISON IS UNEQUAL 00096000
  98. * A RECALIBRATE IS EXECUTED AND THE ORIGINAL CHANNEL 00097000
  99. * PROGRAM IS RETRIED FOR A MAXIMUM OF 10 TIMES. IF 00098000
  100. * THE COMPARISON IS EQUAL RETURN TO THE CALLER. 00099000
  101. * NO RECORD FOUND CONDITION (2305/3330/3340) RETURN 00100000
  102. * TO CALLER 00101000
  103. * 3. SEEK CHECKS ARE RETRIED 10 TIMES, EXCEPT THE 00102000
  104. * 3330/50/80 HAVE BEEN RETRIED ALREADY. HRC011DK 00103490
  105. * 4. INTERVENTION REQUIRED - READ THE VOLID; IF PACK 00104000
  106. * WAS CHANGED UNLOAD THE ENVIRONMENTAL BUFFER 00105000
  107. * (3330/40/50/80) AND IF THE VOLUME WAS USED HRC011DK 00106490
  108. * SYSTEM MARK DEVICE OFFLINE (MSG DMKDAS956). 00107000
  109. * IN ANY CASE RESTART THE OPERATION. 00108000
  110. * 5. BUS-OUT CHECK - RETRY THE OPERATION ONCE. 00109000
  111. * 6. DATA CHECKS (2314/2319) ARE RETRIED 256 TIMES WITH 00110000
  112. * RECALIBRATIONS BEING EXECUTED EVERY 16 TIMES. 00111000
  113. * EXCEPTIONS ARE : (A) THE 3330/50/80 HAVE HRC011DK 00112490
  114. * BEEN RETRIED BY THE HARDWARE. (B). 3340 AND 2305 00113000
  115. * WILL BE RETRIED 10 TIMES. 00114000
  116. * 7. OVERRUN - THE OPERATION IS RETRIED 10 TIMES. 00115000
  117. * 8. MISSING ADDRESS MARKER-THE OPERATION IS RETRIED 00116000
  118. * 10 TIMES. 00117000
  119. * 9. COMMAND REJECT - RETURN TO THE CALLER 00118000
  120. * 10. TRACK CONDITION CHECK - IF THIS IS A DEFECTIVE 00119000
  121. * TRACK CALL DMKTRKIN FOR 3340/3344 DISKS. FOR OTHER 00120100
  122. * TYPES, AN OPERATOR MESSAGE IS ISSUED. 00120200
  123. * 11. END-OF CYL,TRACK OVERFLOW,AND FILE PROTECT 00122000
  124. * CONDITIONS- RETURN TO CALLER. 00123000
  125. * 12. CHAINING CHECK- TEST FOR COMMAND REJECT. 00124000
  126. * IF NOT PRESENT RETRY THE OPERATION 10 TIMES. 00125000
  127. * 13. ENVIRONMENTAL DATA PRESENT HRC011DK 00126290
  128. * (3330/3340/3350/3380/2305) HRC011DK 00126580
  129. * RE-EXECUTE THE ORIGINAL CHANNEL PROGRAM. 00127000
  130. * 00128000
  131. * 00129000
  132. * D. IF THE RETRY PROCEDURE HAS BEEN EXHAUSTED AND 00130000
  133. * UNSUCCESSFUL CALL DMKMSW FOR OPERATION OPTIONS. 00131000
  134. * (I.E. CANCEL,RETRY,IGNORE) THE RESPONSES ALLOWED 00132000
  135. * WILL BE BASED ON THE CONDITION CAUSING THIS ERROR. 00133000
  136. * 00134000
  137. * E. WHEN THE RETRY PROCEDURE IS FINISHED (EITHER CORRECTED 00135000
  138. * OR UNCORRECTABLE), CALL DMKIOEST TO CAUSE STATISTICAL 00135100
  139. * COUNTERS FOR 2314 TYPE DEVICES TO BE UPDATED. 00135200
  140. * 00135300
  141. * F. CYL POSITION VERIFICATION WILL ONLY BE 00135400
  142. * PERFORMED IF THE FIRST CCW IN THE CHANNEL PROGRAM 00136000
  143. * IS A SEEK AND THE SEEK COMMAND IS VALID. 00137000
  144. * 00138000
  145. * ERROR MESSAGES: 00139000
  146. * 00140000
  147. * DMKDAS956A DASD CCU VOLID VOLID NOT MOUNTED; NOW OFFLINE 00141000
  148. *. 00142000
  149. EJECT 00143000
  150. COPY OPTIONS 00144000
  151. DMKDAS CSECT 00145000
  152. ENTRY DMKDASER HANDLE ERRORS FOR DASD DEVICES 00148000
  153. SPACE 00149000
  154. EXTRN DMKMSWR 00150000
  155. EXTRN DMKCVTBH 00152000
  156. EXTRN DMKIOEST @VA03757 00153100
  157. EXTRN DMKTRKIN @V56BDA8 00153200
  158. EXTRN DMKSTKCP @VA12941 00153400
  159. USING SAVEAREA,R13 00154000
  160. USING PSA,R0 00155000
  161. USING IOERBLOK,R7 ADDRESSABILITY FOR IOERBLOK @VA08187 00156000
  162. USING STATDASD,R4 ADDRESSABILITY FOR STATISICAL DATA 00157000
  163. USING RDEVBLOK,R8 00158000
  164. USING IOBLOK,R10 00159000
  165. USING DMKDAS,R12,R6 ADDRESSABILITY @VA08187 00160000
  166. EJECT 00387000
  167. DMKDASER ENTER HANDLE ERRORS FOR DASD DEVICES: 00388000
  168. LA R6,4095(R12) ADDRESSABILITY FOR 2ND BASE @VA08187 00389000
  169. LA R6,1(,R6) ... @VA08187 00390000
  170. SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00391100
  171. ICM R7,15,RDEVIOER GET THE FIRST IOERBLOK, IF ANY. 00392000
  172. BP NOTFIRST IF NONE THIS IS THE FIRST TIME IN 00393000
  173. L R7,IOBIOER LOAD IOERBLOK IN REG.7 00394000
  174. ST R7,RDEVIOER STORE ADDR IOERBLOK IN RDEVBLOK 00395000
  175. SR R3,R3 CLEAR ADDR. FOR SECOND ERROR 00396000
  176. ST R3,IOBIOER 00397000
  177. STH R3,IOBRCNT ZERO THE IOBRCNT FOR THE FIRST TIME IN 00398000
  178. NI IOBSTAT,X'FF'-IOBFATAL INSURE BIT IS OFF 00399000
  179. NI IOBFLAG,X'FF'-(IOBRSTRT+IOBERP) MASK OFF BITS @VM08912 00400000
  180. LTR R7,R7 IS THERE AN IOERBLOK @VM08912 00401000
  181. BZ CORRECT1 NO, GO TO EXIT @VM08912 00402000
  182. BAL R5,SKLOOP NORMALLY, THIS GETS USER'S SEEK @V56BDA8 00403000
  183. * ADDRESS INTO IOERADDR & SETS IOERDASD ON. 00403010
  184. OI IOBFLAG,IOBERP INDICATE ERP IN CONTROL 00404000
  185. NI IOERFLG2,X'FF'-IOERMSW CLEAR MSG. WRITER FLAG @VM08912 00405000
  186. NI IOERFLG3,X'FF'-IOERREAD RESET FLAG @VA03757 00405100
  187. TM IOERDATA,X'08' DATA CHECK PRESENT ?? @VA03757 00405200
  188. BZ NOTFIRST NO, CONTINUE @VA03757 00405300
  189. BAL R5,RDOPCK GO CHECK IF FAILING COMMAND WAS @V56BDA8 00405400
  190. * A READ OPERATION. IF SO, SET IOERREAD ON. 00405410
  191. NOTFIRST EQU * R7 WILL POINT TO THE FIRST IOERBLOK 00406000
  192. TM IOERIND3,IOERDEC IS MSG WTR WAITING FOR OPER RESP? 00407000
  193. BNO NOTMSW NO- BRANCH MSG WTR (DMKMSWR) NOT WAITING*00408000
  194. YES- IGNORE INT(S) UNTIL OPER RESPONDES 00409000
  195. EXIT5 EQU * @VM08912 00410000
  196. BAL R5,CKIOB RETURN ANY IOERBLOK 00411000
  197. NI IOBFLAG,X'FF'-IOBRSTRT INSURE NO RESTART @VA00881 00412000
  198. EXIT @VA00881 00413000
  199. NOTMSW EQU * 00414000
  200. LH R4,IOBRCNT INSERT I/O ERROR CTR. 00415000
  201. A R4,F1 INCREASE COUNT BY 1 00416000
  202. STH R4,IOBRCNT STORE NEW VALUE 00417000
  203. L R3,IOBIOER GET THE ADDRESS OF THE SECOND @VA01254 00418000
  204. * IOERBLOK 00419000
  205. TM IOERCSW+5,IFCC+CCC+CDC IS THIS A CHANNEL ERROR ?@VA01254 00420000
  206. BNZ DASCOUNT YES, GO TEST FOR VOL1 @VA01254 00421000
  207. LTR R3,R3 DOES SECOND IOERBLOK EXIST ? @VA01254 00422000
  208. BZ DASCOUNT NO, GO TEST FOR VOL1 @VA01254 00423000
  209. TM IOERCSW+5-IOERBLOK(R3),IFCC+CCC+CDC IS CHANNEL @VA01254 00424000
  210. * ERROR 00425000
  211. * INDICATED ? 00426000
  212. BZ DASCOUNT NO, GO INCREMENT COUNT @VA01254 00427000
  213. BAL R5,FRETPTR RELEASE RECOVERY CCW WORK AREA. @V56BDA8 00428000
  214. ST R3,RDEVIOER SAVE 2ND IOERBLOK ADDR (THAT HAD @V56BDA8 00429000
  215. * CHANNEL CHECK) AS IF IT WAS THE FIRST. 00429050
  216. MVC IOERPNT-IOERBLOK(L4,R3),IOERPNT-IOERBLOK(R7) @V56BDA8 00429100
  217. * KEEPS PTR TO POSSIBLE CHAIN OF SDR BLOCKS 00429150
  218. ST R7,IOBIOER SAVE ORIGINAL IOERBLOK ADDR @VM08849 00430000
  219. LR R7,R3 GET CURRENT IOERBLOK ADDRESS @VM08849 00431000
  220. B CHANPRG GO PRINT CHANNEL MESSAGE @VA01254 00432000
  221. DASCOUNT EQU * @VA01254 00433000
  222. TM IOERFLG2,IOERVOL1 READING THE VOL1 LABEL 00434000
  223. BO VOLREAD YES- BRANCH 00435000
  224. TM IOERFLG1,IOERPEND IS D.E. INTERRUPT EXPECTED 00436000
  225. BO PENDING BRANCH IF YES. 00437000
  226. TM IOERFLG2,IOERMSW IS THE MESSAGE WRITER ACTIVE @VM08912 00438000
  227. BO EXIT5 YES, GO FRET IOERBLOK @VM08912 00439000
  228. TM IOERFLG3,IOERALTR+IOERRDR0 ALT TRACK SUPPORT? @V56BDA8 00439020
  229. BNZ CKALTERR ALTERNATE TRACK SUPPORT ACTIVE @V56BDA8 00439025
  230. MVC SAVEWRK2(L'IOERLOC+L'IOERDW),IOERLOC SAVE START @V56BDA8 00439030
  231. * AND LENGTH OF WORK AREA WHERE RECOVERY 00439035
  232. * CCWS JUST EXECUTED WERE LOCATED. THEN 00439040
  233. * CALL FRETPTR (BELOW) TO FREE THE WORK 00439045
  234. * AREA. OBVIOUSLY WE CAN'T USE WORK AREA 00439050
  235. * AFTER THAT,BUT WE STILL NEED TO KNOW 00439055
  236. * WHERE IT WAS SO THE ADDRESS IN IOERCSW 00439060
  237. * CAN BE CHECKED LATER TO SEE IF FAILURE 00439065
  238. * OCCURRED ON ONE OF THE RECOVERY CCWS. 00439070
  239. DC 0AL4(SAVEWRK3) PUT SYMB IN XREF FOR ABOVE INSTR @V56BDA8 00439075
  240. LTR R3,R3 CLEAR IT @VA07807 00439100
  241. BZ FRETBYP BRANCH FOR FRET @VA07807 00439200
  242. TM IOERDATA+2-IOERBLOK(R3),X'10' TEST FOR ERROR @VA07807 00439300
  243. BO *+8 @VA07807 00439400
  244. FRETBYP DS 0H @VA07807 00439500
  245. BAL R5,FRETPTR RELEASE RECOVERY CCW WORK AREA. @V56BDA8 00440000
  246. TM IOERFLG2,IOERSTAT+IOERHA+IOERCAL+IOERECF 00441000
  247. BNZ TSTERR BRANCH IF ENTRY FROM RECOVERY ACTION 00442000
  248. CLC IOBRCNT,F1+2 TEST FOR FIRST TIME 00443000
  249. BNE RECUR BRANCH IF NOT 1ST, KEEPING ADDR @V56BDA8 00444000
  250. * OF 2ND IOERBLOK IN R3. 00444010
  251. LR R3,R7 R3 GETS ADDR OF ORIGINAL IOERBLOK@V56BDA8 00445000
  252. RECUR LTR R3,R3 DID OPERATION FINISH CORRECTLY 00446000
  253. BZ SDRCORR BRANCH IF YES @VA03757 00447100
  254. CLI RDEVTYPE,TYP3340 3340/3344? @V56BDA8 00447150
  255. BNE NOT3340A NO SPECIAL HANDLING @V56BDA8 00447160
  256. CLC IOERCSW+1(L3),IOERCSW+1-IOERBLOK(R3) SAME @V56BDA8 00447170
  257. * FAILING CCW? 00447180
  258. BE NOT3340A YES, NORMAL RETRY PATH @V56BDA8 00447190
  259. SECNDERR ST R3,RDEVIOER SAVE CURRENT IOERBLOK ADDR @V56BDA8 00447200
  260. MVC IOERPNT-IOERBLOK(L4,R3),IOERPNT-IOERBLOK(R7) @V56BDA8 00447210
  261. * KEEPS PTR TO POSSIBLE CHAIN OF SDR BLOCKS 00447220
  262. ST R7,IOBIOER SAVE ORIGINAL IOERBLOK ADDR @V56BDA8 00447230
  263. LR R7,R3 GET CURRENT IOERBLOK ADDR @V56BDA8 00447240
  264. RECURALT BAL R5,UPSK3340 MAKE SURE SEEK ADDR IS CURRENT. @V56BDA8 00447250
  265. * THIS GETS SEEK ADDR FROM SENSE, 00447260
  266. * AND SETS IOERDASD FLAG ON. 00447270
  267. NOT3340A DS 0H @V56BDA8 00447280
  268. TM IOERCSW+5,X'0F' TEST FOR CHANNEL ERROR'S 00448000
  269. BNZ CHANCK BRANCH ON CHANNEL ERROR. @V56BDA8 00449000
  270. TM IOERCSW+5,PRGC+PRTC IS THIS A CHANNEL PROG. CHECK ? 00450000
  271. BNZ CHANPRG IF SO ,,BRANCH 00451000
  272. B UNITCK BRANCH . MUST BE A UNIT CHECK. 00452000
  273. CORRECT1 EQU * @VM08912 00455000
  274. NI IOBFLAG,X'FF'-(IOBERP+IOBRSTRT) TURN OFF FLAGS @VM08912 00456000
  275. EXIT 00457000
  276. SPACE 00457910
  277. * THIS ROUTINE FRETS ANY CCW WORK AREA HANGING OFF THE IOERBLOK 00457920
  278. * POINTED TO BY R7. 00457930
  279. FRETPTR SR R0,R0 CLEAR REG.0 00458000
  280. LH R0,IOERDW LOAD REG.0 WITH CT OF DW'S 00459000
  281. L R1,IOERLOC LOAD REG.1 OF ADDR. OF STORAGE OBTAINED 00460000
  282. LTR R1,R1 WAS CORE REALLY GOTTEN 00461000
  283. BCR 8,R5 BRANCH IF NO. 00462000
  284. MVC IOERDW,ZEROES CLEAR OLD DATA. 00463000
  285. MVC IOERLOC,ZEROES CLEAR OLD DATA. 00464000
  286. CALL DMKFRET FREE CORE 00465000
  287. BR R5 RETURN TO CALLER 00466000
  288. SPACE 1 00467000
  289. * THIS ROUTINE WILL ALLOW A MAXIMUN 00468000
  290. * OF 10 RETRIES FOR CHANNEL ERROR'S 00469000
  291. * 00470000
  292. CHANCK CLC IOBRCNT,F10+2 HAVE 10 CHANNEL ERRORS OCCURRED ? 00471000
  293. BNH CHANRTY BRANCH IF NO @VA01254 00472000
  294. CHANPRG MVI IOERNUM,20 SET CHANNEL ERROR MESSAGE. 00473000
  295. OI IOERIND3,IOERCAN+IOERINFO SET INDICATOR'S 00474000
  296. TM IOBFLAG,IOBCP CP ERROR ? 00475000
  297. BO *+8 IF YES, BRANCH 00476000
  298. OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00477000
  299. B CALLWTR 00478000
  300. CHANRTY BAL R5,CKIOB TEST FOR 2'ND IOERBLOK 00479000
  301. OI IOBFLAG,IOBRSTRT TELL IOS TO RETRY 00480000
  302. MVC IOBRCAW(4),IOBCAW SET RESTART CAW ADDRESS @VA01254 00481000
  303. EXIT EXIT TO IOS 00482000
  304. * 00483000
  305. * ENTRY WILL BE MADED HERE WHEN A PENDING D.E. INT. OCCUR'S 00484000
  306. * 00485000
  307. PENDING TM IOERFLG2,IOERMSW MESSAGE WRITER IN PROGRESS @VA12941 00486000
  308. BO BLDCPEX WAIT FOR MSW TO FINISH @VA12941 00486100
  309. NI IOERFLG1,X'FF'-IOERPEND TURN OFF PEND DE BIT @VA12941 00486200
  310. BAL R5,FRETPTR RELEASE ALLOCATED STORAGE @VM08912 00487000
  311. BAL R5,GETSTBUF GET A BUFFER TO READ THE VOL1 LABEL 00488000
  312. STH R0,IOERDW SAVE THE SIZE OF THE STAT BUFFER (DW) 00489000
  313. ST R4,IOERLOC AND IT'S LOCATION ALSO 00490000
  314. ST R4,IOBRCAW SET UP THE RESTART CAW (TO READ VOLID) 00491000
  315. OI IOERFLG2,IOERVOL1 TURN ON THE READING VOLID FLAG 00492000
  316. XC IOBRCNT,IOBRCNT INSURE 10 RETRIES FOR VOLREAD @VA08413 00492100
  317. B RETRYK00 READ THE VOLID. @V56BDA8 00493100
  318. SPACE 1 00493150
  319. BLDCPEX LA R0,CPEXSIZE SIZE OF CPEXBLOK @VA12941 00493200
  320. CALL DMKFREE GET STORAGE FOR CPEXBLOK @VA12941 00493250
  321. USING CPEXBLOK,R1 CPEXBLOK ADDRESSABILIY @VA12941 00493300
  322. XC CPEXBLOK(CPEXSIZE*8),CPEXBLOK CLEAR BLOCK @VA12941 00493350
  323. MVC CPEXR0(CPEXR12-CPEXR0),SAVER0 SETUP CPEXBLOK @VA12941 00493400
  324. STM R12,R13,CPEXR12 ... @VA12941 00493450
  325. L R15,=A(DMKDASER) CPEXBLOK WILL RETURN TO DASER @VA12941 00493500
  326. ST R15,CPEXADD CPEXBLOK RETURN ADDRESS @VA12941 00493550
  327. DROP R1 ... @VA12941 00493600
  328. L R5,IOERCPEX ANCHOR FOR CPEXBLOKS @VA12941 00493650
  329. USING CPEXBLOK,R5 ADDRESSABILITY @VA12941 00493700
  330. LTR R5,R5 ANY CPEXBLOKS ON QUEUE @VA12941 00493750
  331. BNZ NEXTCPEX YES, FIND END OF CHAIN @VA12941 00493800
  332. ST R1,IOERCPEX ADD TO THE CHAIN @VA12941 00493850
  333. B GOTODSP GOTO THE DISPATCHER @VA12941 00493900
  334. SPACE 1 00493950
  335. NEXTCPEX L R14,CPEXFPNT GET POINTER TO NEXT ONE ON CHAIN @VA12941 00494000
  336. LTR R14,R14 END OF QUEUE @VA12941 00494050
  337. BZ QUEUE END OF QUEUE - ADD CPEXBLOK @VA12941 00494100
  338. LR R5,R14 CONTINUE TO LOOK FOR END @VA12941 00494150
  339. B NEXTCPEX ... @VA12941 00494200
  340. SPACE 2 ... @VA12941 00494250
  341. QUEUE ST R1,CPEXFPNT ADD CPEXBLOK TO QUEUE AT END @VA12941 00494300
  342. GOTODSP GOTO DMKDSPCH EXIT TO DISPATCHER FOR NOW @VA12941 00494350
  343. DROP R5 DROP CPEXBLOK ADDRESSABILITY @VA12941 00494400
  344. SPACE 1 00494450
  345. VOLREAD L R4,IOERLOC POINT TO CHANNEL PGM @VA07801 00495000
  346. ICM R1,15,IOBIOER DID OPERATION FINISH CORRECTLY @VA07801 00495200
  347. BNP READOK YES - BRANCH @VA07801 00495400
  348. LA R15,STATREL+8 VERIFY IF RELEASE CCW FAILED @VA07801 00495600
  349. L R5,IOBCSW LAST CCW EXECUTED + 8 @VA07801 00495800
  350. LA R5,0(R5) CLEAR GARBAGE @VA07801 00496000
  351. CLR R5,R15 WHERE DID CHANNEL PGM END @VA07801 00496200
  352. BL TRY10 ERROR, RETRY 10 TIMES @VA07801 00496400
  353. BH IOERCLR SENSE AFTER REL. FAILED, CONT. @VA07801 00496600
  354. BAL R5,CKIOB FRET IOERBLOK IF REL. FAILED @VA07801 00496800
  355. B LABRED LABEL READ, CONTINUE @VA07801 00497000
  356. TRY10 CLC IOBRCNT,F10+2 TEN ERRORS? @VA07801 00497200
  357. BNH RETRYK00 NO- RETRY @V56BDA8 00498100
  358. LA R4,IOERPNT POINT TO THE ERROR POINTER 00499000
  359. BAL R5,NXTPTR CHAIN IN THE ERROR BLOCK 00500000
  360. L R4,IOERLOC POINT TO THE STATDASD BUFFER @VA04703 00500500
  361. LA R5,CLEANUP SET UP THE RETURN POINTER 00501000
  362. B ERROR95F MARK OFFLINE AND GIVE MESSAGE @V4075A0 00502100
  363. SPACE 00503000
  364. IOERCLR BAL R5,CKIOB FRET 2ND IOERBLOK @VA07801 00504000
  365. READOK L R5,RDEVCUB CHECK FOR ALTERNATE CONTROL UNIT @VA07801 00504100
  366. LTR R5,R5 ALTERNATE CONTROL UNIT? @VA07801 00504200
  367. BNZ LABRED YES, DO NOT IND. 2/4 CHANSW @VA07801 00504300
  368. * IN CASE ALTCU HAS NO FEATURE 00504400
  369. OI RDEVFTR,FTRRSRL 2/4 CHANSW FEATURE PRESENT @VA07801 00504500
  370. LABRED TM IOERFLG2,IOERSTAT STATISTICAL DATA UNLOADED @VA07801 00504600
  371. BO STATIN YES- BRANCH 00506000
  372. BAL R5,COMPVOL1 COMPARE THE VOL1 LABEL 00507000
  373. BE STATIN IF THIS THE SAME VOLUME; BRANCH 00508000
  374. TM RDEVTYPE,TYP3330+TYP3340+TYP3350+TYP3380 HRC011DK 00509490
  375. BZ STATIN NO - SKIP THE UNLOAD @V2A2029 00510000
  376. LA R0,IOERSIZE GET AN IOERBLOK FOR THE STAT DATA 00511000
  377. CALL DMKFREE 00512000
  378. MVC 0(IOERSIZE*8,R1),IOERBLOK COPY THE IOER BLOCK 00513000
  379. MVC IOERVSER-IOERBLOK(6,R1),RDEVSER MOVE IN THE VOLID 00514000
  380. LA R4,IOERPNT POINT TO THE IOERBLOK POINTER 00515000
  381. BAL R5,NXTPTR CHAIN IN THE IOERBLOK 00516000
  382. L R4,IOERLOC POINT TO THE STATDASD BUFFER @VA04703 00516500
  383. ST R4,IOBRCAW INITIALIZE THE RESTART CAW @VA13424 00516700
  384. LM R15,R0,PACKCHG * BUILD THE BUFFER UNLOAD CCW 00517000
  385. ALR R15,R1 * TO READ THE ENVIRONMENTAL DATA 00518000
  386. STM R15,R0,STATSNS * INTO THE IOERBLOK. 00519000
  387. OI IOERFLG2,IOERSTAT TURN ON THE STATISTICAL DATA FLAG 00520000
  388. B RETRYK00 AND GO READ THE DATA. @V56BDA8 00521100
  389. SPACE 00522000
  390. STATIN BAL R5,TESTVOL TEST IF THE VOLUME WAS SWAPPED OR IN USE *00523000
  391. BY THE SYSTEM, IF YES MARK OFFLINE. 00524000
  392. CLEANUP NI IOERFLG2,X'FF'-(IOERSTAT+IOERVOL1) TURN FLAG'S @VA02256 00525000
  393. * OFF 00526000
  394. BAL R5,FRETPTR RETURN THE STAT BUFFER 00527000
  395. SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00527100
  396. NI IOBFLAG,X'FF'-IOBERP TURN OFF EREP BIT 00528000
  397. NI RDEVSTAT,X'FF'-RDEVNRDY RESET INTERVENTION REQUIRED 00529000
  398. OI IOBFLAG,IOBRSTRT TURN ON RESTART BIT 00530000
  399. SLR R3,R3 @V56BDA8 00530900
  400. STH R3,IOBRCNT RESET RETRY COUNT 00531000
  401. MVC IOBRCAW,IOBCAW SET RESTART CAW ADDR. 00532000
  402. EXIT GO BACK TO IOS 00533000
  403. * 00534000
  404. * MORE ERROR TESTING IS REQUIRED 00535000
  405. * 00536000
  406. UNITCK TM RDEVFTR,FTREXTSN EXTENDED SENSE TYPE DASD ? @V304498 00537000
  407. BNZ HISPEED BRANCH IF YES 00538000
  408. * 00539000
  409. * MUST BE A 2319 OR 2314 TO ENTER AT THIS POINT 00540000
  410. * 00541000
  411. TSTEQUIP TM IOERDATA,X'10' EQUIPMENT CHECK ERROR ? 00542000
  412. BZ TSTNRF BRANCH IF NOT. 00543000
  413. MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00544000
  414. CLC IOBRCNT,F2+2 IS THIS THE THIRD ERROR ? 00545000
  415. BNH RETRY BRANCH NO. 00546000
  416. EQCK MVI IOERNUM,EQUIP INDICATE EQUIPMENT CHECK ERROR 00547000
  417. OI IOERIND3,IOERCAN+IOERINFO @VA01426 00548000
  418. * DISPLAY INFORMATION MSG 503I 00549000
  419. B CALLWTR 00550000
  420. TSTNRF TM IOERDATA+1,X'08' NRF ERROR 00551000
  421. BZ TSTSEEK BRANCH NO 00552000
  422. TM IOERDATA+1,X'02' MISSING ADDRESS MARKER ? 00553000
  423. BZ READHA BRANCH NO. 00554000
  424. CLC IOBRCNT,F10+2 HAS ERROR HAPPENED 11 TIMES ? 00555000
  425. BNH RECAL BRANCH NO TO RECALIBRATE. 00556000
  426. MVI IOERNUM,MADM SET MESSAGE NUMBER. 00557000
  427. OI IOERIND3,IOERINFO+IOERCAN SET INDICATES @VA07665 00558100
  428. B CALLWTR CALL WRITTER 00559000
  429. RECAL LA R0,2 GET 2 DW'S FROM STORAGE 00560000
  430. CALL DMKFREE 00561000
  431. ST R1,IOERLOC 00562000
  432. STH R0,IOERDW 00563000
  433. MVC 0(16,R1),RESTORE MOVE IN RESTORE AND TIC COMMAND 00564000
  434. ST R1,IOBRCAW SET UP RESTART CAW 00565000
  435. L R5,IOBCAW CHAIN ORIGINAL CCW'S @VA08187 00566000
  436. ST R5,8(0,R1) MOVE IN TIC COMMAND CODE AND @VA08187 00567000
  437. MVI 8(R1),X'08' RESTORE CCW. 00568000
  438. B RETRY BRANCH TO RETRY OPERATION. 00569000
  439. SPACE 1 00570000
  440. READHA LA R0,1 00571000
  441. CALL DMKFREE CONSTRUCT READ HOME ADDR. CCW 00572000
  442. ST R1,IOERLOC STORE ADDR. OF CCW 00573000
  443. STH R0,IOERDW STORE SIZE OF STORAGE OBTAINED 00574000
  444. ST R1,IOBRCAW SET RESTART ADDR. 00575000
  445. MVC 0(8,R1),HACCW MOVE IN RD HA COMMAND 00576000
  446. OI IOERFLG2,IOERHA SET ON TO INDICATE OPERATION IN PROG 00577000
  447. LA R5,IOERADR+3 SET READIN AREA TO IOERBLOK @VA08187 00578000
  448. ST R5,0(R1) ... @VA08187 00578100
  449. MVI 0(R1),X'1A' SET COMMAND CODE TO READ HA 00580000
  450. B RETRY 00581000
  451. * 00582000
  452. * WHEN THE INTERRUPT OCCUR'S FROM THIS CHANNEL PROGRAM 00583000
  453. * THE HOME ADDRESS READ WILL BE COMPARED AGAINST THE 00584000
  454. * INITIAL SEEK ADDR. IF EQUAL CONTROL WILL PASS TO IOS 00585000
  455. * OTHERWISE IT WILL BE TREATED AS A SEEK CHECK AND THE 00586000
  456. * OPERATION RETRIED. 00587000
  457. * 00588000
  458. TSTSEEK TM IOERDATA,X'01' IS ERROR BECAUSE OF A SEEK CHECK ? 00589000
  459. BZ TSTINT BRANCH IF NOT SEEK CHECK 00590000
  460. SEEKCK TM IOERDATA,X'80' COMMAND REJECT ERROR ? @V2A2029 00591000
  461. BO COMREJ BRANCH IF YES 00592000
  462. CLC IOBRCNT,F10+2 00593000
  463. BNH RECAL BRANCH TO EXECUTE A RESTORE COMMAND 00594000
  464. MVI IOERNUM,SKCK 00595000
  465. OI IOERIND3,IOERINFO+IOERCAN SET INDICATES @VA07665 00600100
  466. B CALLWTR 00601000
  467. COMREJ MVI IOERNUM,REJ MOVE IN REJECT MESSAGE 00602000
  468. OI IOERIND3,IOERCAN+IOERINFO 00603000
  469. TM IOBFLAG,IOBCP CP ERROR ? 00604000
  470. BO *+8 IF YES, BRANCH 00605000
  471. OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00606000
  472. B CALLWTR 00607000
  473. TSTINT TM IOERDATA,X'40' INTERVENTION REQUIRED 00608000
  474. BZ BUSCK BRANCH IF NO 00609000
  475. MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00610000
  476. PENDE OI IOERFLG1,IOERPEND TURN ON D.E. BIT 00611000
  477. MVI IOERNUM,INTREQU SET MSG. NUMBER 00612000
  478. OI IOERIND3,IOERACT TURN ON ACTION BIT 00613000
  479. SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00613100
  480. OI RDEVSTAT,RDEVNRDY INDICATE INTERVENTION REQUIRED 00614000
  481. B CALLWTR 00615000
  482. BUSCK TM IOERDATA,X'20' IS THIS A BUS OUT ERROR 00616000
  483. BZ DATACK BRANCH IF NO 00617000
  484. MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00618000
  485. CLC IOBRCNT,F1+2 IS THIS THE SECOND ERROR ? @VM01012 00619000
  486. BH BUSMSG BRANCH YES 00620000
  487. B RETRY 00621000
  488. BUSMSG MVI IOERNUM,BUSOUTCK SET BUSOUT MESSAGE UP. 00622000
  489. OI IOERIND3,IOERINFO+IOERCAN TURN ON INDICATOR'S 00623000
  490. B CALLWTR 00624000
  491. DATACK TM IOERDATA,X'08' TEST FOR DATA CHECK 00625000
  492. BZ OVERRUN BRANCH IF NOT DATA CHECK 00626000
  493. MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00627000
  494. CLC IOBRCNT,F256+2 HAS ERROR HAPPENED 256 TIMES ? 00628000
  495. BH DATAMSG BRANCH IF YES 00629000
  496. TM IOBRCNT+1,X'0F' IS THIS MULTI OF 16 TIMES ? 00630000
  497. BO RECAL BRANCH EVERY 16 TIMES. 00631000
  498. B RETRY 00632000
  499. DATAMSG MVI IOERNUM,DATAER 00633000
  500. OI IOERIND3,IOERINFO+IOERCAN SET INDICATES @VA07665 00638100
  501. B CALLWTR 00639000
  502. SPACE 1 00640000
  503. OVERRUN TM IOERDATA,X'04' 00641000
  504. BZ MISSMRK 00642000
  505. B OVERRUN1 @VA08385 00642250
  506. OVERRUN2 L R11,ECFREG11-ECFDSECT(R9) SAVE REG11 @VA08385 00642500
  507. OVERRUN1 MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00643000
  508. CLC IOBRCNT,F10+2 00644000
  509. BH OVERMSG 00645000
  510. B RETRY 00646000
  511. OVERMSG MVI IOERNUM,OVERERR INDICATE OVERRUN MESSAGE 00647000
  512. OI IOERIND3,IOERDEC+IOERCAN+IOERETRY 00648000
  513. B CALLWTR CALL MESSAGE WRITTER. 00649000
  514. SPACE 1 00650000
  515. MISSMRK TM IOERDATA+1,X'02' TEST FOR MISSING ADDRESS MARKER 00651000
  516. BZ REJECT BRANCH IF NO. 00652000
  517. CLC IOBRCNT,F10+2 IS COUNTER > 10 ? 00653000
  518. BH MRKMSG BRANCH IF YES. 00654000
  519. MVC IOBRCAW,IOBCAW SET RESTART ADDR. 00655000
  520. B RETRY 00656000
  521. MRKMSG MVI IOERNUM,MADM INDICATE MISSING ADDRESS MARKER 00657000
  522. OI IOERIND3,IOERINFO+IOERCAN 00658000
  523. B CALLWTR 00659000
  524. REJECT TM IOERDATA,X'80' IS IT A COMMAND REJECT ? 00660000
  525. BZ BDTRK BRANCH IF NO. 00661000
  526. TM IOERDATA+1,X'04' FILE PROTECT ERROR 00662000
  527. BO FILPROT BRANCH ON PROTECT ERROR. 00663000
  528. CHKREL TM IOBSPEC2,IOBREL IS THIS SPECIAL DMKDSB CH PGM @VA07801 00663100
  529. BO FINISH YES, THEN LEAVE IT ALONE @VA07801 00663200
  530. L R2,IOERCSW FAILING CSW+8 @VA14597 00663400
  531. LA R2,0(,R2) CLEAR HIGH ORDER BYTE @VA14597 00663500
  532. S R2,F8 FAILING CCW @VA14597 00663600
  533. CLI 0(R2),X'FE' WRITE WITH R/O DASD @VA14597 00663700
  534. BNE COMREJ INVALID CMND @VA14597 00663800
  535. MVI IOERDATA+1,X'02' TURN ON WRITE INHIBIT SW. @VA14597 00663900
  536. B COMREJ MUST BE INVALID COMMAND 00664000
  537. BDTRK TM IOERDATA,X'02' IS THIS A TRACK CONDITION CHECK ? 00665000
  538. BZ TRKOV BRANCH NO. 00666000
  539. MVI IOERNUM,TRKCOND SET TRACK CONDITION 00667000
  540. OI IOERIND3,IOERCAN+IOERINFO 00668000
  541. TM IOBFLAG,IOBCP CP ERROR ? 00669000
  542. BO *+8 IF YES, BRANCH 00670000
  543. OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00671000
  544. B CALLWTR CALL MESSAGE WRITTER 00672000
  545. SPACE 1 00673000
  546. TRKOV TM IOERDATA+1,X'40' TRACK OVERRUN ERROR ? 00674000
  547. BZ ENDCYL BRANCH IF NO 00675000
  548. MVI IOERNUM,TKOVER MESSAGE FOR WRITTER 00676000
  549. OI IOERIND3,IOERINFO+IOERCAN 00677000
  550. TM IOBFLAG,IOBCP CP ERROR ? 00678000
  551. BO *+8 IF YES, BRANCH 00679000
  552. OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00680000
  553. B CALLWTR 00681000
  554. SPACE 1 00682000
  555. ENDCYL TM IOERDATA+1,X'20' IS THIS AN EOC CONDITION 00683000
  556. BZ FILPROT BRANCH IF NOT 00684000
  557. EOCERR OI IOERFLG2,IOERCEMD DO NOT RECORD PROG ERROR @VA02358 00685000
  558. B FATAL 00686000
  559. FILPROT TM IOERDATA+1,X'04' FILE PROTECT ERROR ? 00687000
  560. BZ SHDNOT BRANCH IF NO. 00688000
  561. MVI IOERNUM,PROTECT SET MESSAGE NUMBER 00689000
  562. TM IOBFLAG,IOBCP CP ERROR ? 00690000
  563. BO *+8 IF YES, BRANCH 00691000
  564. OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00692000
  565. OI IOERIND3,IOERCAN+IOERINFO 00693000
  566. B CALLWTR 00694000
  567. SPACE 1 00695000
  568. SHDNOT MVI IOERNUM,BDSNS 00696000
  569. OI IOERIND3,IOERCAN+IOERINFO 00697000
  570. B CALLWTR 00698000
  571. SPACE 1 00699000
  572. TSTERR TM IOERFLG2,IOERSTAT 00700000
  573. BZ NOTSTAT 00701000
  574. NI IOERFLG2,X'FF'-IOERSTAT 00702000
  575. LTR R3,R3 00703000
  576. BZ SDRCORR BRANCH IF NO IOERBLOK @VA03757 00704000
  577. L R4,IOERPNT 00705000
  578. MVC IOERBLOK(IOERSIZE*8),0(R3) 00706000
  579. ST R4,IOERPNT 00707000
  580. MVC IOERVSER-IOERBLOK(6,R7),RDEVSER RESTORE VOLID @VA02536 00708000
  581. B RECUR 00709000
  582. NOTSTAT LTR R3,R3 00710000
  583. BZ NOIOER NO IOERBLOK @VA01094 00711000
  584. CLC IOBRCNT,F10+2 10 ERRORS YET? @VA01094 00712000
  585. BH RECFAIL YES--FATAL @VA01094 00713000
  586. TM IOBCSW+4,UC IS THERE UNIT CHECK? @VA01094 00714000
  587. BZ RECFAIL RECOVERY FAILURE @V56BDA8 00715050
  588. CLI RDEVTYPE,TYP3340 3340/3344? @V56BDA8 00715100
  589. BNE UNITCK NO, PROCESS SECOND FAILURE @V56BDA8 00715150
  590. L R1,SAVEWRK2 RECOVERY WORKAREA ADDRESS @V56BDA8 00715200
  591. LH R0,SAVEWRK3 LENGTH IN DBLEWRDS @V56BDA8 00715250
  592. SLL R0,3 LENGTH IN BYTES @V56BDA8 00715300
  593. AR R0,R1 END OF RECOVERY WORKAREA @V56BDA8 00715350
  594. CLM R1,7,IOERCSW+1-IOERBLOK(R3) BELOW OUR AREA? @V56BDA8 00715400
  595. BNL SECNDERR YES, A NEW ERROR @V56BDA8 00715450
  596. CLM R0,7,IOERCSW+1-IOERBLOK(R3) ABOVE US? @V56BDA8 00715500
  597. BL SECNDERR YES, A NEW ERROR @V56BDA8 00715550
  598. B HISPEED ELSE TAKE MORMAL RETRY PATH @V56BDA8 00715600
  599. NOIOER EQU * @VA01094 00717000
  600. TM IOERFLG2,IOERCAL 00718000
  601. BO DSKCAL 00719000
  602. SR R5,R5 CLEAR REG.5 00720000
  603. TM IOERFLG2,IOERHA 00721000
  604. BO FINHA 00722000
  605. TM IOERFLG2,IOERECF ERROR CORRECTION FUNCTION FINISHED 00723000
  606. BO FINISH YES - ERROR WAS FULLY CORRECTED 00724000
  607. MVI IOERNUM,FALSE 00725000
  608. OI IOERIND3,IOERINFO+IOERCAN 00726000
  609. B CALLWTR 00727000
  610. SPACE 1 00728000
  611. RECFAIL MVI IOERNUM,RECERR INDICATE ERROR WHILE RECOVERING 00729000
  612. OI IOERIND3,IOERINFO+IOERCAN 00730000
  613. B CALLWTR 00731000
  614. FINHA NI IOERFLG2,X'FF'-IOERHA TURN OFF HOME ADDRESS BIT 00732000
  615. CLC IOBRCNT,F10+2 10 ERRORS YET ? 00733000
  616. BNH SKLOOP IF NOT ,TAKE THE BRANCH 00734000
  617. MVI IOERNUM,SKCK SET MESSAGE FOR SEEK CHECK 00735000
  618. OI IOERIND3,IOERCAN+IOERINFO TURN ON CANCEL BIT 00736000
  619. B CALLWTR ISSUE MESSAGE TO OPERATOR 00737000
  620. SPACE 1 00738000
  621. SKLOOP L R4,IOBCAW LOAD REG.4 WITH ADDR OF 1'ST CCW. 00739000
  622. LTR R4,R4 IS IOBLOK ACTIVE ? 00740000
  623. BZ FATAL EXIT IF NON-ACTIVE IOBLOK. 00741000
  624. SPACE 00742000
  625. CLI 0(R4),X'0B' IS FIRST CMD A SEEK? @VA00684 00743000
  626. BE SKADCK YES, CHECK IF THIS ONE FAILED @VA00684 00744000
  627. CLI 0(R4),X'07' TRY OTHER SEEK @VA00684 00745000
  628. BNE SKRET NOPE, THEN CAN'T USE IT FOR CYL @VA00684 00746000
  629. SKADCK LA R1,8(,R4) POINT TO END OF SEEK... @VA00684 00747000
  630. CLM R1,B'0111',IOERCSW+1 AND SEE IF WE FAILED ON IT?@VA00684 00748000
  631. BE SKRET YUP, THEN IT WOULD FAIL AGAIN. @VA00684 00749000
  632. FULLSEEK L R4,0(R4) PICK UP ADDR. OF 00750000
  633. LA R4,0(R4) SEEK DATA AND 00751000
  634. MVC IOERADR(4),2(R4) MOVE IT INTO IOERADR 00752000
  635. OI IOERIND3,IOERDASD INDICATE HOME ADDRESS 00754000
  636. SKRET EQU * @VA00684 00755000
  637. LTR R5,R5 TEST FOR 1'ST ENTRY INTO THIS MODULE 00756000
  638. BCR 7,R5 BRANCH IF 1'ST TIME 00757000
  639. TM IOERIND3,IOERDASD IS HA COMPARAND VALID? @VA00684 00758000
  640. BZ PROGERR NOPE, DON'T BOTHER TO CHECK IT @VA00684 00759000
  641. CLC IOERADR(4),IOERADR+4 ENTRY MUST BE RESULT OF 00760000
  642. BNE RECAL A READ HOME ADDRESS BECAUSE OF 00761000
  643. PROGERR OI IOERFLG2,IOERCEMD DO NOT RECORD PROGRAMING ERRORS. 00762000
  644. B FATAL A NO RECORD FOUND CONDITION. 00763000
  645. SPACE 1 00764000
  646. SPACE 1 00765000
  647. DSKCAL NI IOERFLG2,X'FF'-IOERCAL TURN OFF RECALIBRATE BIT 00766000
  648. MVC IOBRCAW,IOBCAW IN IOERBLOK AND RETRY OPERATION. 00767000
  649. SPACE 1 00768000
  650. RETRY MVC IOBRCAW(L1),IOBCAW GET ORIGINAL KEY FOR RESTART @V56BDA8 00769100
  651. RETRYK00 OI IOBFLAG,IOBRSTRT TURN ON RESTART FLAG @V56BDA8 00769200
  652. NI IOERMSG,0 RESET MSG CODE. 00770000
  653. NI IOERIND3,IOERDASD RESET ALL BUT HOME ADDR. INDICATOR. 00771000
  654. NI IOERIND4,0 RESET OPERATOR FLAGS. 00772000
  655. BAL R5,CKIOB MAKE SURE THAT STORAGE IS 00773000
  656. EXIT IOS WILL RETRY OPERATION 00776000
  657. * THIS ROUTINE WILL CHECK FOR A SECOND IOERBLOK . IF ONE WAS 00777000
  658. * OBTAINED STORAGE WILL BE GIVEN BACK TO THE SYSTEM. 00778000
  659. * 00779000
  660. CKIOB L R1,IOBIOER GET ADDR. OF 2ND IOERBLOK @VA08187 00780000
  661. LA R1,0(R1) CLEAR HI BYTE 00781000
  662. LTR R1,R1 WAS BLOCK REALY OBTAINED ? 00782000
  663. BZ NOTUSED BRANCH IF NO. 00783000
  664. TM IOERCSW+5-IOERBLOK(R1),IFCC+CCC+CDC IS CHANNEL @VA01254 00784000
  665. * ERROR 00785000
  666. * INDICATED ? 00786000
  667. BZ CKEND NO, GO FRET IOERBLOK @VA01254 00787000
  668. LR R3,R1 SAVE THE IOERBLOK POINTER @VA01254 00788000
  669. L R1,IOERCCRA-IOERBLOK(R3) CHANNEL REC ADDR @V508690 00789500
  670. L R0,IOERCCRL-IOERBLOK(R3) CHANNEL REC LENGTH @V508690 00790500
  671. CALL DMKFRET RELEASE STORAGE @VA01254 00793000
  672. LR R1,R3 GET IOERBLOK POINTER @VA01254 00794000
  673. CKEND EQU * @VA01254 00795000
  674. LA R0,IOERSIZE LOAD IOERBLOK SIZE. 00796000
  675. AH R0,IOEREXT-IOERBLOK(,R1) INCLUDE EXTRA SIZE (IF ANY) 00797000
  676. CALL DMKFRET 00798000
  677. NOTUSED MVC IOBIOER,ZEROES CLEAR ADDRESS IN IOBLOK IN CASE 00799000
  678. BR R5 RETURN TO CALLER. 00800000
  679. SPACE 1 00801000
  680. CALLWTR EQU * CALL MSG WRITTER 00802000
  681. TM IOERFLG2,IOERCEMD ERROR FROM DIAG INTERFACE 00803000
  682. BO FATAL EXIT IF DIAG ERROR 00804000
  683. BAL R5,CKIOB RETURN ANY IOERBLOK 00805000
  684. L R0,=C'DAS ' IDENT INFO FOR MSG WRITTER 00806000
  685. OI IOERFLG2,IOERMSW SET MESSAGE WRITER INDICATOR @VM08912 00807000
  686. MVI SAVEWRK2+2,X'00' CLEAR SP CON INDICATOR FOR @VA07193 00807020
  687. * MVI BELOW 00807040
  688. ST R9,SAVEWRK3 SAVE REG 9 @VA05482 00807050
  689. TM RDEVFLAG,RDEVOWN SYSTEM PACK? @VA05483 00807070
  690. BNO CALLMSW NO. CONSOLE SPOOLING OK @VA05483 00807090
  691. TM RDEVFLAG,RDEVPREF IS IT PREFERRED FOR PAGING? @VA11702 00807092
  692. BO CALLMSW YES,CONSOLE SPOOLING OK @VA11702 00807094
  693. L R11,ASYSOP GET VMBLOK OF SYSTEM OPERATOR @VA04231 00807300
  694. LTR R11,R11 SYSTEM OPERATOR LOGGED ON? @VA04231 00807400
  695. BNP CALLMSW NO, NO PROBLEM @VA04231 00807500
  696. USING VMBLOK,R11 @VA04231 00807700
  697. LH R9,VMVTERM LOCATE VIRTUAL CONSOLE @VA04231 00807800
  698. LTR R9,R9 IS THERE ONE? @VA04231 00807900
  699. BM CALLMSW NO, GO PUT OUT MSG @VA04231 00808000
  700. AL R9,VMDVSTRT INDEX TO THE VDEVBLOK @VA04231 00808100
  701. USING VDEVBLOK,R9 @VA04231 00808200
  702. TM VDEVFLAG,VDEVCSPL OPER SPOOLED HIS CONSOLE? @VA04231 00808300
  703. BZ CALLMSW NO, CONTINUE @VA04231 00808400
  704. MVI SAVEWRK2+2,X'E2' REMEMBER THAT HE DID @VA04231 00808500
  705. NI VDEVFLAG,X'FF'-VDEVCSPL TURN OFF CONS SPOOLING @VA04231 00808600
  706. DROP R11 @VA04231 00808700
  707. CALLMSW L R11,SAVER11 RELOAD VMBLOK PTR @VA03414 00808800
  708. CALL DMKMSWR GO TO MSG WTR MODULE @VA03414 00808900
  709. CLI SAVEWRK2+2,X'E2' DID WE TURN OFF CONS SPOOLING? @VA04231 00809000
  710. BNE CLEARMWR NO, CONTINUE @VA04231 00809100
  711. OI VDEVFLAG,VDEVCSPL PUT HIS FLAG BACK ON @VA04231 00809200
  712. DROP R9 @VA04231 00809300
  713. CLEARMWR L R9,SAVEWRK3 RESTORE R9 @VA04231 00809400
  714. NI IOERFLG2,X'FF'-IOERMSW CLEAR MESSAGE WRITER FLAG@VM08912 00810000
  715. TM IOERFLG1,IOERPEND CHECK FOR INT. REQ. 00811000
  716. BZ NOTINT IF SO EXIT BACK TO IOS WITH 00812000
  717. NI IOBFLAG,X'FF'-IOBRSTRT NO RESTART INDICATED 00813000
  718. L R1,IOERCPEX SEE IF DEVICE END I/O TO REDRIVE @VA12941 00814000
  719. LTR R1,R1 ANY CPEXBLOKS ON QUEUE @VA12941 00814050
  720. BZ DASSDR NO DE I/O TO REDRIVE @VA12941 00814100
  721. UNSTKNXT L R5,CPEXFPNT-CPEXBLOK(R1) NEXT CPEX ON CHAIN @VA12941 00814150
  722. CALL DMKSTKCP STACK CPEXBLOK @VA12941 00814200
  723. LTR R5,R5 ANY MORE ON CHAIN @VA12941 00814250
  724. BZ CLEARPNT NO, ZERO ANCHOR AND EXIT @VA12941 00814300
  725. LR R1,R5 CPEXBLOK ADDRESS TO R5 @VA12941 00814350
  726. B UNSTKNXT STACK THEM ALL @VA12941 00814400
  727. CLEARPNT ST R5,IOERCPEX CLEAR ANCHOR @VA12941 00814450
  728. DASSDR B SDRCOUNT GO UPDATE COUNTERS, THEN EXIT @VA12941 00814500
  729. NOTINT TM IOERIND4,IOERSTRT CHECK MESSAGE RESPONSE FOR RESTART 00815000
  730. BZ IGNORE BRANCH IF NO RESTART 00816000
  731. MVC IOBRCNT,F1+2 RESET ERROR COUNTER TO 1 00817000
  732. MVC IOBRCAW,IOBCAW AND SET RESTART CAW 00818000
  733. B RETRY TO RE-EXECUTE ORIGINAL CHANNEL PROGRAM 00819000
  734. IGNORE TM IOERIND4,IOERIGNR TEST FOR OPERATOR IGNORE RESPONSE 00820000
  735. BO FINISH BRANCH IF YES 00821000
  736. SPACE 1 00822000
  737. FATAL EQU * @VA03757 00822100
  738. BAL R5,CKIOB CONDITION MUST BE FATAL... @VA03757 00822200
  739. OI IOBSTAT,IOBFATAL EXIT WITH FATAL BIT ON @VA03757 00822300
  740. SPACE 1 00822400
  741. SDRCORR EQU * HERE IF ERROR WAS CORRECTED.... @VA03757 00822500
  742. BAL R5,FRETPTR RELEASES RECOVERY CCW WORK AREA @V56BDA8 00823010
  743. * THAT IS HANGING OFF OF THE IOERBLOK THAT 00823020
  744. * IS POINTED TO BY R7. 00823030
  745. NI IOBFLAG,X'FF'-IOBERP-IOBRSTRT 00824000
  746. SDRCOUNT CLI RDEVTYPE,TYP2314 SDR TYPE ?? @VA03757 00825000
  747. BNE NOCALL NO, DONT CALL UPDATE @VA03757 00825100
  748. SR R1,R1 ZERO PARAMETER REG @VA03757 00825200
  749. CALL DMKIOEST GO TO STATISTICAL COUNTER UPDATE @VA03757 00825300
  750. NOCALL EQU * @VA03757 00825400
  751. EXIT 00826000
  752. SPACE 1 00827000
  753. FINISH BAL R5,CKIOB OPERATOR ANSWERED WITH IGNORE OPTION. 00828000
  754. BAL R5,FRETPTR RELEASE STORAGE USED AND EXIT. 00829000
  755. NI IOBFLAG,X'FF'-IOBERP-IOBRSTRT 00830000
  756. NI IOBSTAT,X'FF'-IOBFATAL 00831000
  757. EXIT 00832000
  758. SPACE 1 00833000
  759. HISPEED MVC IOERVSER-IOERBLOK(6,R7),RDEVSER RESTORE VOLID @VA02536 00834000
  760. CLC IOBRCNT,F1+2 @VA02536 00835000
  761. BNE TESTSTAT 00836000
  762. TM RDEVTYPE,TYP2305 00837000
  763. BO T2305 00838000
  764. TM IOERDATA+2,X'10' 00839000
  765. BZ TESTPERM 00840000
  766. LA R0,IOERSIZE 00841000
  767. CALL DMKFREE 00842000
  768. MVC 0(IOERSIZE*8,R1),IOERBLOK 00843000
  769. MVC IOERVSER-IOERBLOK(6,R1),RDEVSER MOVE IN THE OLD VOLID 00844000
  770. ST R1,IOERPNT 00845000
  771. OI IOERFLG2,IOERSTAT 00846000
  772. MVC IOBRCAW,IOBCAW 00847000
  773. B RETRY 00848000
  774. T2305 TM IOERDATA+2,X'80' 00849000
  775. BZ TESTPERM 00850000
  776. *********************************************************************** 00851010
  777. * FOR CLARITY... SIZE OF THE EXTENSION HAS TO BE CALCULATED AS WHATS 00851020
  778. * LEFT OF THE BUFFERED DATA SIZE (E.G. 128 FOR THIS 2305) AFTER TAKING 00851030
  779. * OUT THAT PORTION PLACED FROM IOERDATA TO THE END OF THE IOERBLOK. 00851040
  780. * AS THIS IS VARIABLE IT SHOULD BE CALCULATED AS THE OVERALL SIZE LESS 00851050
  781. * THE AREA PRECEDING IOERDATA... ALL OF COURSE IN NUMBER OF DOUBLEWORDS 00851060
  782. *********************************************************************** 00851070
  783. LA R0,IOERSIZE+(128/8-(IOERSIZE-(IOERDATA-IOERBLOK)/8)) 00851080
  784. * PUT IN THE SIZE PLUS EXTENSION RESIDUAL @VA09736 00851090
  785. CALL DMKFREE 00852000
  786. MVI 0(R1),X'00' INIT TO ZERO @VA09736 00852010
  787. *********************************************************************** 00852020
  788. * NOW TO CLEAR THE IOERBLOK PLUS THE RESIDUAL EXTENSION OF THE 2305'S 00852030
  789. * 128 BYTES OF BUFFER DATA 00852040
  790. *********************************************************************** 00852050
  791. MVC 1(((IOERSIZE*8)+(128-((IOERSIZE*8)-(IOERDATA-IOERBLOK)))*00852060
  792. -1),R1),0(R1) CLEAR IT OUT @VA09736 00852070
  793. MVC 0(IOERSIZE*8,R1),IOERBLOK 00853000
  794. MVI IOEREXT+1-IOERBLOK(R1),128/8-(IOERSIZE-(IOERDATA-IOERBLO*00854010
  795. K)/8) PUT IN THE SIZE OF THE EXTENSION @VA09736 00854020
  796. ST R1,IOERPNT 00856000
  797. OI IOERFLG2,IOERSTAT 00857000
  798. B CLRUNIT 00858000
  799. SPACE 1 00859000
  800. TESTSTAT TM RDEVTYPE,TYP2305 00860000
  801. BO STAT2305 00861000
  802. DROP R7 00862000
  803. USING IOERBLOK,R3 00863000
  804. TM IOERDATA+2,X'10' 00864000
  805. BZ TESTPERM 00865000
  806. LA R0,IOERSIZE 00866000
  807. CALL DMKFREE 00867000
  808. MVC 0(IOERSIZE*8,R1),IOERBLOK 00868000
  809. MVC IOERVSER-IOERBLOK(6,R1),RDEVSER MOVE IN THE OLD VOLID 00869000
  810. DROP R3 00870000
  811. USING IOERBLOK,R7 00871000
  812. L R4,IOBRCAW LOOK FOR ZERO RESTART CAW @VA13021 00871100
  813. LTR R4,R4 TEST FOR IT @VA13021 00871300
  814. BNZ BYMVCAW NON-ZERO ... O.K. @VA13021 00871500
  815. MVC IOBRCAW,IOBCAW ZERO ... USE THE ORIGINAL CAW @VA13021 00871700
  816. BYMVCAW DS 0H @VA07807 00872100
  817. LA R4,IOERPNT 00873000
  818. BAL R5,NXTPTR 00874000
  819. OI IOBFLAG,IOBRSTRT TURN ON RESTART FLAG @VA07807 00874100
  820. NI IOERMSG,0 RESET MSG CODE @VA07807 00874200
  821. NI IOERIND3,IOERDASD RESET ALL BUT HOME ADDR IND @VA07807 00874300
  822. NI IOERIND4,0 RESET OPERATOR FLAGS @VA07807 00874400
  823. LR R4,R15 SAVE R15 ACROSS FRET @VA07807 00874500
  824. BAL R5,CKIOB MAKE SURE THAT STORAGE IS @VA07807 00874600
  825. IC R1,IOBCAW GET ORIGINAL KEY @VA07807 00874800
  826. STC R1,IOBRCAW STORE IN RESTART CAW @VA07807 00874900
  827. EXIT IOS WILL RETRY OPERATION @VA07807 00875000
  828. SPACE 1 00876000
  829. STAT2305 EQU * 00877000
  830. DROP R7 00878000
  831. USING IOERBLOK,R3 00879000
  832. TM IOERDATA+2,X'80' 00880000
  833. BZ TESTPERM 00881000
  834. *********************************************************************** 00882010
  835. * FOR CLARITY... SIZE OF THE EXTENSION HAS TO BE CALCULATED AS WHATS 00882020
  836. * LEFT OF THE BUFFERED DATA SIZE (E.G. 128 FOR THIS 2305) AFTER TAKING 00882030
  837. * OUT THAT PORTION PLACED FROM IOERDATA TO THE END OF THE IOERBLOK. 00882040
  838. * AS THIS IS VARIABLE IT SHOULD BE CALCULATED AS THE OVERALL SIZE LESS 00882050
  839. * THE AREA PRECEDING IOERDATA... ALL OF COURSE IN NUMBER OF DOUBLEWORDS 00882060
  840. *********************************************************************** 00882070
  841. LA R0,IOERSIZE+(128/8-(IOERSIZE-(IOERDATA-IOERBLOK)/8)) 00882080
  842. * PUT IN THE SIZE PLUS EXTENSION RESIDUAL @VA09736 00882090
  843. CALL DMKFREE 00883000
  844. MVI 0(R1),X'00' INIT TO ZERO @VA09736 00883010
  845. *********************************************************************** 00883020
  846. * NOW TO CLEAR THE IOERBLOK PLUS THE RESIDUAL EXTENSION OF THE 2305'S 00883030
  847. * 128 BYTES OF BUFFER DATA 00883040
  848. *********************************************************************** 00883050
  849. MVC 1(((IOERSIZE*8)+(128-((IOERSIZE*8)-(IOERDATA-IOERBLOK)))*00883060
  850. -1),R1),0(R1) CLEAR IT OUT @VA09736 00883070
  851. MVC 0(IOERSIZE*8,R1),IOERBLOK 00884000
  852. MVI IOEREXT+1-IOERBLOK(R1),128/8-(IOERSIZE-(IOERDATA-IOERBLO*00885010
  853. K)/8) PUT IN THE SIZE OF THE EXTENSION @VA09736 00885020
  854. DROP R3 00887000
  855. USING IOERBLOK,R7 00888000
  856. LA R4,IOERPNT 00889000
  857. BAL R5,NXTPTR 00890000
  858. CLRUNIT LR R4,R1 00891000
  859. MVC IOERVSER-IOERBLOK(6,R1),RDEVSER MOVE IN THE OLD VOLID 00892000
  860. LA R0,2 00893000
  861. CALL DMKFREE 00894000
  862. STH R0,IOERDW 00895000
  863. ST R1,IOERLOC 00896000
  864. ST R1,IOBRCAW 00897000
  865. MVC 0(8,R1),UNLOAD 00898000
  866. MVC 8(8,R1),TICCW 00899000
  867. SPACE 1 00900000
  868. LA R4,IOERDATA-IOERBLOK(R4) PUT IT WHERE IT GOES @VA09736 00901010
  869. AL R4,UNLOAD 00902000
  870. ST R4,0(R1) 00903000
  871. L R4,IOBCAW CHAIN A TIC COMD. TO USERS CCW STRING. 00904000
  872. LA R4,0(R4) 00905000
  873. AL R4,TICCW 00906000
  874. ST R4,8(R1) 00907000
  875. B RETRY 00908000
  876. NXTPTR LR R15,R4 SAVE IOERPNT @VA08187 00909000
  877. L R4,0(R4) 00910000
  878. LTR R4,R4 00911000
  879. BNZ NXTPTR 00912000
  880. ST R1,0(R15) CHAIN BLOK IN @VA08187 00913000
  881. BR R5 00914000
  882. SPACE 1 00915000
  883. TESTPERM TM IOERDATA+1,X'80' PERMANENT ERROR CONDITION ? 00916000
  884. BZ NOTPERM BRANCH NO 00917000
  885. MVI IOERNUM,PERM SET UP MESSAGE NUMBER. 00918000
  886. OI IOERIND3,IOERCAN+IOERINFO 00919000
  887. B CALLWTR 00920000
  888. SPACE 1 00921000
  889. NOTPERM TM IOERDATA,X'10' IS THIS AN EQUIP CHECK ERROR 00922000
  890. BZ NOTEQIP 00923000
  891. MVC IOBRCAW,IOBCAW SET UP CAW. 00924000
  892. CLC IOBRCNT,F10+2 HAS THIS ERROR OCCURRED 10 TIMES ? 00925000
  893. BH EQCK IF YES BRANCH 00926000
  894. B RETRY 00927000
  895. SPACE 1 00928000
  896. NOTEQIP TM IOERDATA,X'20' BUSOUT CHECK ? 00929000
  897. BO BUSCK BRANCH IF YES 00930000
  898. TM IOERDATA,X'40' INT. REQ. CONDITION ? 00931000
  899. BO TSTINT BRANCH IF YES 00932000
  900. CLI RDEVTYPE,TYP3340 3340 DEVICE TYPE ? @V2A2029 00933000
  901. BNE NOSEEK NO - DO NOT TEST FOR SEEK CHECK @V2A2029 00934000
  902. TM IOERDATA,X'01' SEEK CHECK ERROR ? @V2A2029 00935000
  903. BO SEEKCK YES --BRANCH @V2A2029 00936000
  904. NOSEEK EQU * @V2A2029 00937000
  905. TM IOERDATA,X'80' COMMAND REJECT ERROR ? 00938000
  906. BZ NOTCOMRJ NO, DO NEXT TEST @V56BDA8 00939100
  907. * NOTE: THE IOBALTSK FLAG, TESTED BELOW, CAUSES US TO CALL DMKTRKIN, 00939110
  908. * SO IT HAD BETTER NOT GET SET FOR DEVICES NOT HANDLED BY DMKTRKIN. 00939120
  909. * PRESENTLY DMKTRKIN IS LIMITED TO HANDLING 3340/3344. 00939130
  910. TM IOBSTAT,IOBALTSK IS THERE A SEEK TO AN @V56BDA8 00939140
  911. * ALTERNATE? 00939150
  912. BO CKALTERR YES, CALL ALTERNATE TRACK ROUTINE@V56BDA8 00939160
  913. B CHKREL ELSE, TREAT AS COMMAND REJECT @V56BDA8 00939170
  914. NOTCOMRJ EQU * @V56BDA8 00939180
  915. TM IOERDATA+1,X'08' NO RECORD FOUND ERROR ? 00940000
  916. BO PROGERR YES- BRANCH 00941000
  917. TM IOERDATA,X'04' OVERRUN ERROR ? 00942000
  918. BO OVERRUN BRANCH YES 00943000
  919. CLI RDEVTYPE,TYP3340 3340 DEVICE TYPE ? @V2A2029 00944000
  920. BNE NOTRKC NO - DO NOT TEST FOR TRK COND. @V2A2029 00945000
  921. TM IOERDATA,X'02' TRACK CONDITION ERROR ? @V2A2029 00946000
  922. BZ NOTRKC NO, BRANCH TO CHECK NEXT @V56BDA8 00947050
  923. CKALTERR CALL DMKTRKIN CALL ALTERNATE TRACK ROUTINE @V56BDA8 00947100
  924. SWITCH @V56BDA8 00947150
  925. B *+4(R1) BRANCH ON RETURN VECTOR @V56BDA8 00947200
  926. B FINISH 0 - RECOVERY COMPLETE @V56BDA8 00947250
  927. B RETRYK00 4 - DO AN IO OPERATION @V56BDA8 00947300
  928. B EOCERR 8 - END OF CYLINDER CONDITION @V56BDA8 00947350
  929. B RECURALT 12 - ANOTHER ERROR @V56BDA8 00947400
  930. B RECFAIL 16 - RECOVERY FAILURE @V56BDA8 00947450
  931. B FILPROT 20 - FILE PROTECT EXCEPTION @V56BDA8 00947500
  932. B BDTRK 24 - PERMANENT TRACK CONDITION @V56BDA8 00947550
  933. B CHKREL 28 - COMMAND REJECT @V56BDA8 00947600
  934. SPACE 2 00947650
  935. NOTRKC EQU * @V2A2029 00948000
  936. TM IOERDATA+1,X'40' IS THIS A TRACK OVERFLOW 00949000
  937. BO TRKOV BRANCH YES. 00950000
  938. * 00951000
  939. TM IOERDATA,X'08' DATA CHECK ERROR ? 00952000
  940. BO DATCHECK BRANCH IF YES 00953000
  941. TM IOERDATA+1,X'20' EOC CONDITION 00954000
  942. BO EOCERR YES--DO NOT RECORD @VA02358 00955000
  943. TM IOERDATA+1,X'04' FILE PROTECT ERROR ? 00956000
  944. BO FILPROT BRANCH IF YES. 00957000
  945. B SHDNOT 00958000
  946. DATCHECK TM IOERDATA+2,X'40' CORRECTABLE ERROR ? 00959000
  947. BO CORRERR YES -- @V2A2029 00960000
  948. TM RDEVTYPE,TYP2305+TYP3340 3340 OR 2305 ? @V2A2029 00961000
  949. BZ DATAMSG NO, BRANCH-GIVE ERROR MSG @V2A2029 00962000
  950. CLC IOBRCNT(2),F10+2 OVER 10 RETRIES ? @V2A2029 00963000
  951. BH DATAMSG YES, BRANCH- GIVE ERROR MSG @V2A2029 00964000
  952. MVC IOBRCAW,IOBCAW SET UP RESTART ADDRESS @V2A2029 00965000
  953. B RETRY RETRY THE OPERATION @V2A2029 00966000
  954. CORRERR LA R0,20 GET FREE STORAGE @V2A2029 00967000
  955. CALL DMKFREE 00968000
  956. ST R1,IOERLOC STORE STORAGE LOCATION 00969000
  957. STH R0,IOERDW STORE SIZE OF STORAGE . 00970000
  958. LR R9,R1 SET BUFFER ADDRESS 00971000
  959. XC 0(160,R9),0(R9) CLEAR BUFFER 00972000
  960. USING ECFDSECT,R9 00973000
  961. STM R2,R5,ECFREG2 SAVE REGS 2-5 @VA08187 00974000
  962. ST R11,ECFREG11 SAVE REG.11 00975000
  963. LH ERREG2,IOERDATA+18 LOAD BACKWARD DISP. 00976000
  964. N ERREG2,XRIGHT16 CLEAR HI ORDER BYTES 00977000
  965. L CCWREG,IOERCSW PICK UP CCW ADDR. FROM CSW 00978000
  966. LA CCWREG,0(CCWREG) CLEAR HI ORDER BYTE 00979000
  967. LTR CCWREG,CCWREG IS CCW ADDR. PRESENT 00980000
  968. BZ EQCK IF NOT TREAR AS EQUIP CHECK 00981000
  969. S CCWREG,F8 SUBTRACT 8 GIVING TRUE CCW ADDRESS 00982000
  970. BM EQCK IF NEGATIVE, INDICATE EQUIPMENT @VM08849 00983000
  971. * CHECK 00984000
  972. L R1,IOBCAW POINT AT FIRST CCW @VA04842 00984575
  973. LA R1,0(,R1) CLEAR KEY @VA04842 00985150
  974. SLR R15,R15 CLEAR RESTART REGISTER @VA08187 00986300
  975. CHKZERO CLI 0(CCWREG),X'00' IS THIS A DATA CHAIN CCW? @VA04842 00986875
  976. BNE CHKCD FIND VALID RESTART CCW @VA12071 00988050
  977. SPACE , @VA04842 00990900
  978. CHKFIRST S CCWREG,F8 BACK UP TO PREVIOUS CCW @VA04842 00991475
  979. B CHKZERO KEEP LOOKING... @VA04842 00992050
  980. SPACE , @VA04842 00992625
  981. CHKCD S R1,F16 BEGINNING OF FIRST RCWTASK @VA04842 00993200
  982. L R0,FFS FOR RCWHEAD COMPARE @VA12071 00993250
  983. CH R0,12(,R1) CCWREG REALLY FIRST IN RCWTASK? @VA12071 00993300
  984. BNE BYPASSW NO... FIND VALID RESTART CCW @VA12071 00993350
  985. CHKCD1 LH R0,10(,R1) GET COUNT OF CCWS @VA04842 00993775
  986. LR R2,R1 R2 = RCWTASK NOW UNDER SCRUTINY @VA04842 00994350
  987. LA R1,8(,R1) POINT TO FIRST CCW-8 @VA04842 00994925
  988. NEXTCCW LA R1,8(,R1) POINT AT NEXT CCW @VA04842 00995500
  989. CLI 0(R1),X'0B' IS CMD A SEEK? @VA12071 00995550
  990. BE UPDTSEEK YES, REMEMBER IT @VA12071 00995600
  991. CLI 0(R1),X'07' IS IT THIS SEEK? @VA12071 00995650
  992. BNE NOTSEEK CARRY ON @VA12071 00995700
  993. UPDTSEEK EQU * @VA12071 00995750
  994. ST R3,SAVEWRK4 SAVE R3 @VA12071 00995800
  995. L R3,0(R1) PICK UP ADDR. OF @VA12071 00995850
  996. LA R3,0(R3) SEEK DATA AND @VA12071 00995900
  997. MVC IOERADR(4),2(R3) SAVE THE LAST SEEK DONE @VA12071 00995950
  998. L R3,SAVEWRK4 RESTORE R3 @VA12071 00996000
  999. NOTSEEK EQU * @VA12071 00996050
  1000. CLR R1,CCWREG IS IT 'OUR' CCW? @VA04842 00996075
  1001. BE CHKCCW2 IF SO, LOOK NO FURTHER @VA04842 00996650
  1002. CLI 0(R1),CDTIC CHAIN DATA TIC CCW? @VA04842 00997225
  1003. BE CHKCCW YES...SEE WHERE IT GOES @VA04842 00997800
  1004. CLI 0(R1),X'08' ORDINARY TIC? @VA04842 00998375
  1005. BE NEXTCCW1 FORGET IT...TRY AGAIN @VA04842 00998950
  1006. TM 4(R1),CD START OF CD CHAIN? @VA04842 00999525
  1007. BO MAYBE LET'S SEE @VA04842 01000100
  1008. NEXTCCW1 SLR R15,R15 CLEAR REG15 @VA08187 01000675
  1009. B CHKCCW1 CONTINUE LOOKING... @VA04842 01001250
  1010. SPACE , @VA04842 01001825
  1011. CHKCCW CLM CCWREG,B'0111',1(R1) IS IT THE ONE WE WANT? @VA04842 01002400
  1012. BE DATACCW YES...THEN R6 IS THE RESTART CCW @VA04842 01002975
  1013. B CHKCCW1 NO...KEEP LOOKING @VA04842 01003550
  1014. SPACE , @VA04842 01004125
  1015. MAYBE LTR R15,R15 IS REG15 VALID @VA08187 01004700
  1016. BNZ CHKCCW1 YES...SAVE IT @VA04842 01005275
  1017. LR R15,R1 REMEMBER POSSIBLE RESTART ADDRESS@VA08187 01005850
  1018. CHKCCW1 BCT R0,NEXTCCW CHECK ENTIRE RCWTASK? @VA04842 01006425
  1019. L R1,0(,R2) POINT AT NEXT RCWTASK @VA04842 01007000
  1020. LTR R1,R1 IS THERE ONE? @VA04842 01007575
  1021. BNZ CHKCD1 YES...KEEP LOOKING @VA04842 01008150
  1022. CHKCCW2 LTR R15,R15 IS REG15 VALID @VA08187 01008725
  1023. BZ BYPASSW THEN USE CCWREG TO RESTART @VA04842 01009300
  1024. DATACCW LR CCWREG,R15 GET ADDRESS OF CHAINING CCW @VA08187 01009875
  1025. BYPASSW EQU * @VA04842 01010450
  1026. ST R11,ECFREG11 SAVE IT @VA08385 01010500
  1027. MVC ECFCNT+2(2),6(CCWREG) MOVE IN CCW CNT. 01012000
  1028. CLI RDEVTYPE,TYP2305 2305 TYPE ECF CORRECTION ? @V304498 01013000
  1029. BE DISPZ YES, APPLY 2305 ECF @V304498 01014000
  1030. MVC TOTALCNT+1(3),IOERDATA+15 FETCH RESTART DISP. 01015000
  1031. L ERREG1,TOTALCNT LOAD NUMBER READ BY C.U. 01016000
  1032. SR ERREG1,ERREG2 CALC FORWARD DISP. 01017000
  1033. * ERROR DISP OF 3 OR MORE USE SENSE BYTES 20,21,22 01018000
  1034. * ERROR DISP OF 2 USE SENSE BYTES 21,22 01019000
  1035. * ERROR DISP OF 1 USE SENSE BYTE 22 01020000
  1036. C ERREG2,F2 BACKWARD DISP OF 2 @VM08849 01021000
  1037. BH ECCNT NO - USE 3 BYTE ECC COUNT @VM08849 01022000
  1038. LR ERREG3,ERREG2 SET UP FOR COUNT OF TWO @VM08849 01023000
  1039. BE ECADDR YES - COUNT EQUALS 2 @VM08849 01024000
  1040. BCT ERREG2,LENCHK DISP EQUAL ZERO--BRANCH @VA02257 01025000
  1041. B ECADDR ERREG3 EQUALS 1 @VM08849 01026000
  1042. * 01027000
  1043. * CALCULATE FORWARD DISPLACEMENT FOR 2305 01028000
  1044. * 01029000
  1045. DISPZ DS 0H CONNECTOR 01030000
  1046. L ERREG1,ECFCNT GET CCW CNT. 01031000
  1047. SR ERREG1,ERREG2 DECR BY ECC DISP. 01032000
  1048. LH ERREG2,IOERCSW+6 LOAD RESIDUAL CNT. 01033000
  1049. N ERREG2,XRIGHT16 CLEAR HI ORDER BYTES 01034000
  1050. SR ERREG1,ERREG2 DECR BY RESIDUAL CNT. 01035000
  1051. BM OVERRUN2 BRANCH ON NEGATIVE DISP. @VA08385 01036100
  1052. * 01037000
  1053. ECCNT LA ERREG3,3 SET LOOP TO 3 @VM08849 01038000
  1054. ECADDR LA ERREG2,IOERDATA+23 POINT TO ECC BYTE+3 @VM08849 01039000
  1055. SR ERREG2,ERREG3 POINT TO CORRECT ECC BYTE @VM08849 01040000
  1056. ECFLOOP1 CL ERREG1,ECFCNT IS ERROR IN THIS SEG ? 01041000
  1057. BNL ENDSEG BRANCH IF NO 01042000
  1058. * 01043000
  1059. * CALCULATE FORWARD ERROR DISPLACEMENT FOR 3330/40/50/80 HRC011DK 01044490
  1060. * @VA00922 01045000
  1061. ST ERREG1,IDALCNT SAVE FWD DISP IN CASE IDAL @VA03061 01046000
  1062. TM 4(CCWREG),SKIP SUPPRESS DATA FLG. ON ? @VA00922 01047000
  1063. BO ECFINCR YES - @VA00922 01048000
  1064. L R15,0(CCWREG) GET DATA ADDR. FROM CCW @VA08187 01049000
  1065. LA R15,0(,R15) REMOVE CMD. CODE @VA08187 01050000
  1066. TM 4(CCWREG),IDA IS IDAL FLG. ON ? @VA00922 01051000
  1067. BO IDALIST YES - GO FIND RIGHT IDA WORD @VA00922 01052000
  1068. AR R15,R1 NO - ADD FWD DISP. VALUE @VA08187 01053000
  1069. B ECFBYTE OR' IN CORRECTION BYTES @VA00922 01054000
  1070. SPACE 1 @VA00922 01055000
  1071. * HERE TO PROCESS ERROR'S IN IDAL CCW STRINGS @VA00922 01056000
  1072. * @VA00922 01057000
  1073. IDALIST L R2,0(,R15) GET ENTRY WITHIN IDAL LIST @VA08187 01058000
  1074. L R3,F4096 CHECK BOTH HALFS OF PAGE @VA00922 01059000
  1075. O R2,=X'00000800' FORCE TO 2'ND HALF OF PAGE @VA00922 01060000
  1076. N R2,F4095 ONLY LEAVE DISP. OF IDAL WORD @VA00922 01061000
  1077. SLR R3,R2 SUBTRACT OUT DISP. VALUE @VA00922 01062000
  1078. CL R3,IDALCNT IS ERROR IN THIS IDA WORD ? @VA00922 01063000
  1079. BH FNDIDAW YES - @VA03061 01064000
  1080. L R2,IDALCNT NO - GET REMAINING BYTE COUNT @VA00922 01065000
  1081. SLR R2,R3 REDUCE COUNT BY THIS IDA WORD @VA00922 01066000
  1082. ST R2,IDALCNT SAVE NEW RESULT @VA00922 01067000
  1083. LA R15,4(,R15) POINT TO NEXT IDA WORD @VA08187 01068000
  1084. B IDALIST KEEP LOOKING FOR CORRECT IDA WORD@VA00922 01069000
  1085. FNDIDAW L R2,0(,R15) LOAD ADDRESS FROM IDA WORD @VA08187 01070000
  1086. AL R2,IDALCNT ADD IN RECOMPUTED DISP. @VA00922 01071000
  1087. NXTBYTE EQU * @VA09106 01072100
  1088. XC 0(1,R2),0(ERREG2) OR IN CORRECTION BYTE @VA09106 01072200
  1089. B ECFINCR GO INCREMENT FOR NEXT BYTE @VA03061 01073000
  1090. * @VA00922 01074000
  1091. * HERE TO EXCLUSIVE OR ECC BYTE INTO STORAGE FOR CHANNEL @VA00922 01075000
  1092. * PROGRAMS THAT DO NOT CONTAIN AN IDAL LIST @VA00922 01076000
  1093. * @VA00922 01077000
  1094. ECFBYTE XC 0(1,R15),0(ERREG2) APPLY CORRECTION TO CORE @VA08187 01078000
  1095. ECFINCR DS 0H CONNECTOR 01079000
  1096. LA ERREG2,1(ERREG2) POINT TO NEXT ECC BYTE 01080000
  1097. ECFINCR1 LA ERREG1,1(ERREG1) INCR DISP. VALUE 01081000
  1098. BCT ERREG3,ECFLOOP1 DECR LOOP CTR. 01082000
  1099. L R11,ECFREG11 MAKE SURE IT'S SAVED @VA08385 01082500
  1100. SPACE 1 01083000
  1101. CLI RDEVTYPE,TYP2305 PROCESS 2305 CHAN PROGRAM @V304498 01084000
  1102. BE ECFOVCK YES, TEST FOR CMD CHAINING @V304498 01085000
  1103. B LENCHK CORRECTION DONE -- GO CHECK LEN @VA03061 01086000
  1104. SPACE 1 01087000
  1105. ENDSEG EQU * 01088000
  1106. CLI RDEVTYPE,TYP2305 PROCESS 2305 CHAN PROGRAM ? @V304498 01089000
  1107. BE ECFOVCK YES, CHECK COMMAND CHAINING ? @V304498 01090000
  1108. TM 4(CCWREG),X'80' IS THIS CCW DOING ANY DATA CHAINING 01091000
  1109. BZ LENCHK BRANCH IF NO. 01092000
  1110. L R15,TOTALCNT LOAD TOTAL BYTES TRANSFERRED @VA08187 01093000
  1111. S R15,ECFCNT DECREASE BY CCW CNT @VA08187 01094000
  1112. ST R15,TOTALCNT STORE NEW RESULT @VA08187 01095000
  1113. S ERREG1,ECFCNT DECR DISP BY CCW CNT. 01096000
  1114. BM SETLEN BRANCH IF DISP. NEGATIVE 01097000
  1115. LA CCWREG,8(CCWREG) INCR TO NEXT CCW 01098000
  1116. TM 0(CCWREG),X'08' IS THIS A TIC CCW @VA00669 01099000
  1117. BZ SETECNT NO @VA00669 01100000
  1118. TM 0(CCWREG),X'07' TRY OTHER BITS @VA00669 01101000
  1119. BNZ SETECNT NOT A TIC CCW @VA00669 01102000
  1120. L CCWREG,0(CCWREG) PICK UP NEXT CCW ADDR. 01103000
  1121. SETECNT MVC ECFCNT+2(2),6(CCWREG) UPDATE COUNT AREA 01104000
  1122. B ECFLOOP1 01105000
  1123. SPACE 1 01106000
  1124. LENCHK TM IOERDATA+23,X'01' DID CONTROL UNIT INDICATE INCORRECT 01107000
  1125. BZ MER210 BRANCH IF NO 01108000
  1126. CLC TOTALCNT(4),ECFCNT COMPARE COUNT 01109000
  1127. BNE MER210 BRANCH ON INCORRECT LEN. 01110000
  1128. * IF NO INCORRECT LENGTH TREAT THIS ERROR AS A EQUIP. CHECK 01111000
  1129. * 01112000
  1130. * 01113000
  1131. MVC IOBRCAW,IOBCAW SET UP RESTART CAW 01114000
  1132. CLC IOBRCNT,F10+2 HAS ERROR OCCURRED 10 TIMES ? 01115000
  1133. BNH RETRY BRANCH IF NO 01116000
  1134. B EQCK CALL MESSAGE WRITTER 01117000
  1135. SPACE 1 01118000
  1136. MER210 EQU * 01119000
  1137. XC IOBCSW+6(2),IOBCSW+6 CLEAR CSW RESIDUAL COUNT @VA09516 01120100
  1138. NI IOBCSW+5,255-IL TURN OFF INCORRECT LENGTH @VA09516 01120300
  1139. CLC TOTALCNT(4),ECFCNT WAS FULL BLOCK TRANSFERRED @VA09516 01120500
  1140. BE ECFOVCK YES, LENGTH OK @VA09516 01120700
  1141. L ERREG2,ECFCNT GET ORIGINAL LENGTH @VA09516 01120900
  1142. S ERREG2,TOTALCNT SUBTRACT ACTUAL BYTES READ @VA09516 01121100
  1143. BM SETLEN INCORRECT LENGTH IF NEGATIVE @VA09516 01121300
  1144. STH ERREG2,IOBCSW+6 UPDATE CSW @VA09516 01121500
  1145. SETLEN EQU * @VA02277 01122000
  1146. TM 4(CCWREG),X'20' SUPPRESS LEN. BIT ON ? 01123000
  1147. BO ECFOVCK BRANCH IF YES 01124000
  1148. OI IOBCSW+5,IL SET INCORRECT LENGTH BIT IN CSW @VA09516 01125100
  1149. B NOERROR 01126000
  1150. SPACE 1 01127000
  1151. ECFOVCK EQU * 01128000
  1152. TM 4(CCWREG),X'40' IS COMMAND CHAINING BIT ON ? 01129000
  1153. BZ NOERROR BRANCH IF LAST CCW IN CHAIN 01130000
  1154. MVC SECTVAL+1(1),IOERDATA+13 GET SECTOR POINTER 01131000
  1155. LA ERREG2,8(CCWREG) POINT AT NEXT CCW 01132000
  1156. TM 0(ERREG2),X'08' IS THIS CCW A TIC @VA00669 01133000
  1157. BZ NOTIC NO @VA00669 01134000
  1158. TM 0(ERREG2),X'07' TRY OTHER BITS @VA00669 01135000
  1159. BNZ NOTIC NOT A TIC, SKIP @VA00669 01136000
  1160. L ERREG2,0(ERREG2) IF YES POINT TO NEXT CCW 01137000
  1161. ECFBLD EQU * 01138000
  1162. NOTIC CLI RDEVTYPE,TYP3340 3340/3344? @V56BDA8 01139100
  1163. BNE NOTICA NO, SKIP CALL @V56BDA8 01139200
  1164. BAL ERREG4,UPSK3340 ENSURE CORRECT RESTART CCHH @V56BDA8 01139300
  1165. NOTICA TM IOERIND3,IOERDASD IS SEEK ADDR PRESENT? @V56BDA8 01139400
  1166. BO SEEKBLD BRANCH IF YES. 01140000
  1167. B DATAMSG IF SEEK ADDR. NOT PRESENT TREAT AS ERROR 01141000
  1168. * 01142000
  1169. * 01143000
  1170. ********************* 01144000
  1171. SEEKBLD XC CCW1(48),CCW1 CLEAR STORAGE FOR CCW BUILDING.. 01145000
  1172. MVC SEEKADR+2(4),IOERADR MOVE IN SEEK AUG. 01146000
  1173. MVC SEEKADR+5(1),IOERDATA+6 CHANGE LOW ORDER HEAD ADDR. 01147000
  1174. NI SEEKADR+5,X'1F' RESET BIT'S 0-1-2- 01148000
  1175. MVC CCW1,SEEK BUILD MODEL SEEK CCW 01149000
  1176. LA ERREG4,SEEKADR GET ADDR. OF SEEK AUG. 01150000
  1177. AL ERREG4,SEEK AND ADD COMMAND CODE 01151000
  1178. ST ERREG4,CCW1 STORE RESULT IN CCW1 01152000
  1179. CLI RDEVTYPE,TYP2305 USE 2305 CYL/HEAD ADDRESS ? @V304498 01153000
  1180. BNE SECTOR NO, SKIP 2305 CCHH ADDRESS @V304498 01154000
  1181. L2305 MVC SEEKADR+3(1),IOERDATA+5 MOVE IN CYL. ADDR. FOR 2305 01155000
  1182. MVC SEEKADR+5(1),IOERDATA+6 MOVE IN HEAD NUM. FOR 2305 01156000
  1183. SECTOR MVC CCW2,SETSECT BUILD MODEL SECTORE CCW 01157000
  1184. LA ERREG4,IOERDATA+13 RESOLVE ADDRESS FOR CCW 01158000
  1185. AL ERREG4,SETSECT STORE REAL ADDR. 01159000
  1186. ST ERREG4,CCW2 IN CCW 2 01160000
  1187. MVC CCW3,SRCHEQ BUILD MODEL SEARCH CCW 01161000
  1188. LA ERREG4,IOERDATA+8 GET THE ADDRESS OF SRID DATA 01162000
  1189. AL ERREG4,SRCHEQ GET COMMAND CODE 01163000
  1190. ST ERREG4,CCW3 STORE ADDR. AND CC OF CCW 01164000
  1191. MVC CCW4,TICCW BUILD MODEL TIC CCW. 01165000
  1192. LA ERREG4,CCW3 PICK UP ADDR OF SEARCH CCW. 01166000
  1193. AL ERREG4,TICCW INSERT COMMAND CODE 01167000
  1194. ST ERREG4,CCW4 STORE TIC COMMAND AND ADDR. 01168000
  1195. TM 0(ERREG2),X'10' DOES CCW OPERATE ON COUNT FIELD ? 01169000
  1196. BNO BLDCNT IF THERE IS NO COUNT CODE, INCLUDE READ @VA03438 01170000
  1197. * COUNT COMMAND IN CCW CHAIN @VA03438 01171000
  1198. MVC CCW5,TICCW BUILD MODEL TIC CCW 01172000
  1199. LR ERREG4,ERREG2 LOAD CCW ADDR @VA00669 01173000
  1200. LA ERREG4,0(ERREG4) CLEAR OUT PROTECT KEY 01174000
  1201. AL ERREG4,TICCW INSERT TIC COMMAND CODE 01175000
  1202. ST ERREG4,CCW5 STORE COMPLETED CCW 01176000
  1203. B LOADREGS 01177000
  1204. BLDCNT MVC CCW5,RDCOUNT BUILD READ COUNT CCW 01178000
  1205. TM 0(ERREG2),X'80' IS IT A MULTI-TRACK COMMAND @VA03438 01179000
  1206. BNO NOMT IF NOT, BRANCH @VA03438 01180000
  1207. OI CCW5,X'80' ISSUE A MULTI-TRACK READ COUNT @VA03438 01181000
  1208. * COMMAND @VA03438 01182000
  1209. NOMT MVC CCW6,TICCW BUILD TIC CCW @VA03438 01183000
  1210. LR ERREG4,ERREG2 LOAD CCW ADDR @VA00669 01184000
  1211. LA ERREG4,0(ERREG4) CLEAR OUT PROTECT KEY. 01185000
  1212. AL ERREG4,TICCW INSERT 08 COMMAND FOR TIC 01186000
  1213. ST ERREG4,CCW6 STORE COMPLETED CCW 01187000
  1214. LOADREGS LA ERREG4,CCW1 LOAD THE ADDRESS OF THE FIRST CCW 01188000
  1215. ST ERREG4,IOBRCAW SET UP RESTATR CAW ADDRESS. 01189000
  1216. LM R2,R5,ECFREG2 RESTORE REGS 2-5 @VA08187 01190000
  1217. L R11,ECFREG11 01191000
  1218. OI IOERFLG2,IOERECF 01192000
  1219. B RETRY 01193000
  1220. ***** RESTORE ALL REGISTER'S 01194000
  1221. ****** 01195000
  1222. * 01196000
  1223. NOERROR MVI IOBCSW+4,X'0C' SET ON C.E. + D.E. 01197000
  1224. B FINISH 01198000
  1225. SPACE 1 01198050
  1226. RDOPCK EQU * HERE ON FIRST ERROR & DATA CK @VA03757 01198100
  1227. L R3,IOERCSW GET FAILING CCW ADDRESS PLUS 8 @VA03757 01198150
  1228. LA R3,0(,R3) CLEAR HI-ORDER BYTE @VA03757 01198200
  1229. S R3,F8 GET FAILING CCW ADDRESS @VA03757 01198250
  1230. BM NOREAD NO CCW @VA03757 01198300
  1231. TM 0(R3),X'01' WRITE OR CONTROL OP ??? @VA03757 01198350
  1232. BO NOREAD YES, FORGET READ FLAG @VA03757 01198400
  1233. TM 0(R3),X'02' IS IT A READ OP ?? @VA03757 01198450
  1234. BZ NOREAD NO, FORGET READ FLAG @VA03757 01198500
  1235. OI IOERFLG3,IOERREAD TURN ON READ FLAG FOR SDR @VA03757 01198550
  1236. NOREAD EQU * @VA03757 01198600
  1237. BR R5 RETURN TO IN LINE CODE @VA03757 01198650
  1238. SPACE 2 01198672
  1239. UPSK3340 IC R0,IOERDATA+6 XCCXHHHH @V56BDA8 01198674
  1240. SRL R0,5 XXXXXCC @V56BDA8 01198676
  1241. STC R0,IOERADR STORE HIGH CC @V56BDA8 01198678
  1242. NI IOERADR,X'03' CLEAR UNUSED BITS @V56BDA8 01198680
  1243. MVC IOERADR+1(L1),IOERDATA+5 STORE LOW CC @V56BDA8 01198682
  1244. MVC IOERADR+2(L2),ZEROES CLEAR HH FIELD @V56BDA8 01198684
  1245. MVN IOERADR+3(L1),IOERDATA+6 COPY HH @V56BDA8 01198686
  1246. OI IOERIND3,IOERDASD INDICATE GOOD SEEK ADDRESS @V56BDA8 01198688
  1247. BR R5 RETURN TO CALLER @V56BDA8 01198690
  1248. EJECT 01198700
  1249. SPACE 3 01199000
  1250. * BUILD A BUFFER TO READ THE VOLID OF PACK 01199050
  1251. SPACE 01199100
  1252. GETSTBUF LA R0,STATSIZE GET A BUFFER TO READ THE VOL1 @VA08187 01199150
  1253. * LABEL 01199200
  1254. CALL DMKFREE @VA08187 01199250
  1255. LR R4,R1 SAVE THE POINTER TO THE BUFFER @VA08187 01199300
  1256. XC STATDASD(STATSIZE*8),STATDASD ZERO OUT THE @VA08187 01199350
  1257. * BUFFER 01199400
  1258. MVC STATVOL1(6),BLANKS INITIALIZE LABL AND VOL1 @VA08187 01199450
  1259. MVC STATDASD(RDVOLEND-RDVOLID),RDVOLID MOVE MDL CCWS@VA08187 01199500
  1260. LA R14,((RDVOLEND-8)-RDVOLID)/8 GET LOOP COUNT @VA08187 01199550
  1261. LA R1,STATSEEK ADDR OF THE FIRST TO DO @VA08187 01199600
  1262. RESOLVAD L R15,0(R1) GET THE CURRENT ADDRESS @VA08187 01199650
  1263. ALR R15,R4 ADJUST BY BEGINNING OF GOTTEN STG@VA08187 01199700
  1264. ST R15,0(R1) AND RESTORE @VA08187 01199750
  1265. LA R1,8(R1) BUMP TO NEXT CCW @VA08187 01199800
  1266. BCT R14,RESOLVAD CONTINUE UNTIL ALL CCW'S ARE DONE@VA08187 01199850
  1267. BR R5 RETURN TO THE CALLING ROUTINE @VA08187 01199900
  1268. SPACE 3 01199950
  1269. * COMPARE THE VOLID READ TO THE VOLID IN THE REAL DEVICE BLOCK 01200000
  1270. SPACE 01200050
  1271. COMPVOL1 CLC STATVOL1,=C'VOL1' STANDARD VOL 1 LABEL @VA08187 01200100
  1272. BE STANDLBL YES - @VA08187 01200150
  1273. CLC STATVOL1,=C'CMS=' PACK HAVE CMS TYPE LABEL @VA08187 01200200
  1274. BE STANDLBL YES - @VA08187 01200250
  1275. CLC STATVOL1,=C'CMS1' PACK HAVE CMS TYPE LABEL HRC011DK 01200260
  1276. BE STANDLBL YES - HRC011DK 01200270
  1277. MVC STATLABL+4(2),STATLABL MOVE LABEL IN PIECES @VA08187 01200300
  1278. MVC STATLABL(4),STATVOL1 PREVENT OVERLAP @VA08187 01200350
  1279. STANDLBL EQU * HERE FOR STANDARD LABEL @VA08187 01200400
  1280. CLC STATLABL,RDEVSER WAS THE PACK CHANGED ? @VA08187 01200450
  1281. BCR 8,R5 RETURN WITH THE CONDITION CODE @VA08187 01200500
  1282. * SET 01200550
  1283. MVI STATPACK,X'FF' INDICATE PACK WAS CHANGED @VA08187 01200600
  1284. BR R5 RETURN WITH THE CONDITION CODE @VA08187 01200650
  1285. * SET 01200700
  1286. SPACE 3 01200750
  1287. * TEST IF PACK WAS CHANGED AND IN USE BY THE SYSTEM 01200800
  1288. SPACE 01200850
  1289. TESTVOL CLI STATPACK,X'FF' WAS THE PACK CHANGE @VA08187 01200900
  1290. BCR 7,R5 NO- RETURN TO THE CALLER @VA08187 01200950
  1291. SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @VA08187 01201000
  1292. TM RDEVFLAG,RDEVSYS+RDEVOWN WAS PACK IN USE BY @VA08187 01201050
  1293. * SYSTEM 01201100
  1294. BNZ ERROR956 DO NOT MOVE IN NEW VOLID; VARY @VA08187 01201150
  1295. * OFFLINE 01201200
  1296. MVC RDEVSER,STATLABL MOVE IN THE NEW VOLID @VA08187 01201250
  1297. TM RDEVSTAT,RDEVDED DEVICE DEDICATED ? @VA08187 01201300
  1298. BO *+8 YES -- @VA08187 01201350
  1299. OI RDEVFLAG,RDEVMOUT INDICATE VOLUME MOUNTED; NOT @VA08187 01201400
  1300. * ATTACHED 01201450
  1301. CLI RDEVTYPE,TYP3340 3340 TYPE ? @VA08187 01201500
  1302. BCR 7,R5 NO - RETURN TO CALLER @VA08187 01201550
  1303. NI RDEVFTR,X'FF'-(FTRRPS+FTR70MB+FTR35MB) RESET @VA08187 01201600
  1304. TM STATSDAT+2,X'80' RPS FEATURE PRESENT ? @VA08187 01201650
  1305. BZ *+8 NO - @VA08187 01201700
  1306. OI RDEVFTR,FTRRPS INDICATE RPS FEATURE @VA08187 01201750
  1307. TM STATSDAT+2,X'02' 3340 70MB PACK MOUNTED ? @VA08187 01201800
  1308. BZ SET35MB NO -- MUST BE 35MB PACK @VA08187 01201850
  1309. OI RDEVFTR,FTR70MB INDICATE 70MB PACK MOUNTED @VA08187 01201900
  1310. BR R5 RETURN TO CALLER @VA08187 01201950
  1311. SET35MB OI RDEVFTR,FTR35MB INDICATE 35MB PACK MOUNTED @VA08187 01202000
  1312. BR R5 RETURN TO CALLER IF NOT IN USE @VA08187 01202050
  1313. * BY SYSTEM 01202100
  1314. SPACE 1 01202150
  1315. ERROR95F SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @VA08187 01202200
  1316. ERROR956 OI RDEVSTAT,RDEVDISA MARK THE DEVICE OFFLINE @VA08187 01202250
  1317. LH R1,IOBRADD GET THE REAL DEVICE ADDRESS @VA08187 01202300
  1318. CALL DMKCVTBH AND CONVERT IT @VA08187 01202350
  1319. LR R3,R1 SAVE CONVERTED ADDRESS @VA08187 01202400
  1320. LA R0,(L'DAS956+7)/8 GET A MSG BUFFER @VA08187 01202450
  1321. CALL DMKFREE @VA08187 01202500
  1322. MVC 0(L'DAS956,R1),DAS956 MOVE IN THE MSG @VA08187 01202550
  1323. STCM R3,7,DAS956AD(R1) FILL IN THE CONVERTED ADDRESS @VA08187 01202600
  1324. MVC DAS956VS(6,R1),STATLABL THE VOLID ALSO @VA08187 01202650
  1325. LR R3,R0 SAVE THE BUFFER LENGTH (DW) @VA08187 01202700
  1326. LA R0,L'DAS956 SET UP THE MSG LENGTH @VA08187 01202750
  1327. LA R2,DFRET+NORET+OPERATOR+ALARM PARM REG @VA08187 01202800
  1328. CALL DMKQCNWT TELL THE OPERATOR @VA08187 01202850
  1329. BR R5 RETURN TO THE CALLER @VA08187 01202900
  1330. EJECT 01202950
  1331. * 01203000
  1332. * 01203050
  1333. * 01203100
  1334. EQUIP EQU 3 EQUIPMENT CHECK MESSAGE @VA08187 01203150
  1335. MADM EQU 14 MISSING ADDRESS MARKER MESSAGE @VA08187 01203200
  1336. SKCK EQU 7 SEEK CHECK MESSAGE @VA08187 01203250
  1337. INTREQU EQU 1 INTERVENTION REQUIRED MESSA @VA08187 01203300
  1338. PERM EQU 8 @VA08187 01203350
  1339. RECERR EQU 18 @VA08187 01203400
  1340. FALSE EQU 17 @VA08187 01203450
  1341. BDSNS EQU 16 @VA08187 01203500
  1342. PROTECT EQU 13 @VA08187 01203550
  1343. TKOVER EQU 9 @VA08187 01203600
  1344. BUSOUTCK EQU 2 @VA08187 01203650
  1345. DATAER EQU 4 @VA08187 01203700
  1346. OVERERR EQU 5 @VA08187 01203750
  1347. TRKCOND EQU 6 @VA08187 01203800
  1348. REJ EQU 0 @VA08187 01203850
  1349. DAS956 DC C'DMKDAS956A DASD XXX VOLID XXXXXX not mounted; now OFFL*01217490
  1350. INE' 01218000
  1351. DAS956AD EQU 16 DISP OF THE UNIT ADDRESS 01219000
  1352. DAS956VS EQU 26 DISP OF THE VOL SER NO 01220000
  1353. SPACE 01221000
  1354. RDVOLID CCW X'07',STATCCHH-STATDASD,CC+SILI,6 SEEK 01222000
  1355. CCW X'08',STATSRCH-STATDASD,CC+SILI,1 @V407438 01222250
  1356. CCW X'03',0,SILI,1 TIC/NOP FOR 3330V'S @V407438 01222500
  1357. CCW X'31',STATCCHH+2-STATDASD,CC+SILI,5 SRCHID 01223000
  1358. CCW X'08',STATSRCH-STATDASD,CC+SILI,1 TIC 01224000
  1359. CCW X'06',STATVOL1-STATDASD,CC+SILI,10 READ DATA @V2A2029 01225000
  1360. CCW X'04',STATSDAT-STATDASD,SILI+CC,IOERSNSZ SENSE @VA07801 01225500
  1361. CCW X'94',STATSDAT-STATDASD,SILI+CC,IOERSNSZ RELSE @VA07801 01226000
  1362. CCW X'04',STATSDAT-STATDASD,SILI,IOERSNSZ SENSE @VA07801 01226500
  1363. VOL1CCHH DC X'0000000000000300' SEARCH AURGUMENT 01227000
  1364. RDVOLEND EQU * END OF CH PGMS + SEEK/SRCH ARG @V407438 01227250
  1365. SPACE 01227500
  1366. PACKCHG CCW X'A4',IOERDATA-IOERBLOK,SILI,24 BUFFER UNLOAD COMMAND 01228000
  1367. UNLD2305 CCW X'24',IOERDATA-IOERBLOK,SILI,128 DITTO FOR 2305 ONLY 01229000
  1368. SPACE 01230000
  1369. DS 0D 01231000
  1370. RESTORE DC X'1300000060000001' RECALIBRATE CCW 01232000
  1371. TICCCW DC X'0800000020000005' 01233000
  1372. HACCW DC X'1A00000020000005' READ HOME ADDR. CCW 01234000
  1373. SEEK DC X'07' 01235000
  1374. DC AL3(0) 01236000
  1375. DC X'60' 01237000
  1376. DC X'00' 01238000
  1377. DC X'0006' 01239000
  1378. SETSECT DC X'23' SET SECTOR COMMAND 01240000
  1379. DC AL3(0) 01241000
  1380. DC X'60' 01242000
  1381. DC X'00' 01243000
  1382. DC X'0001' 01244000
  1383. SRCHEQ DC X'31' SEARCH ID EQUAL COMMAND 01245000
  1384. DC AL3(0) 01246000
  1385. DC X'60' 01247000
  1386. DC X'00' 01248000
  1387. DC X'0005' 01249000
  1388. TICCW DC X'08' TIC COMMAND CODE 01250000
  1389. DC AL3(0) 01251000
  1390. DC X'60' 01252000
  1391. DC X'00' 01253000
  1392. DC X'0001' 01254000
  1393. RDCOUNT DC X'12' READ COUNT COMMAND CODE 01255000
  1394. DC AL3(0) 01256000
  1395. DC X'70' 01257000
  1396. DC X'00' 01258000
  1397. DC X'0001' 01259000
  1398. UNLOAD DC X'24' BUFFER OFFLINE UNLOAD COMMAND CODE 01260000
  1399. DC AL3(0) 01261000
  1400. DC X'60' 01262000
  1401. DC X'00' 01263000
  1402. DC X'0080' 01264000
  1403. ERREG2 EQU 4 @VA08385 01265100
  1404. CCWREG EQU 5 01266000
  1405. ERREG1 EQU 1 01267000
  1406. ERREG3 EQU 11 @VA08385 01268100
  1407. ERREG4 EQU 5 01269000
  1408. CDTIC EQU X'18' CHAIN DATA TIC OP-CODE @VA04842 01270500
  1409. L1 EQU 1 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 01270610
  1410. L2 EQU 2 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 01270620
  1411. L3 EQU 3 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 01270630
  1412. L4 EQU 4 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 01270640
  1413. LTORG @V407438 01270750
  1414. EJECT 01271000
  1415. COPY IOER GET IOERSNSZ DEFINED @V407438 01271250
  1416. EJECT 01271500
  1417. STATDASD DSECT 01273000
  1418. STATSEEK DS D SEEK CCW 01274000
  1419. STATTIC1 DS D TIC TO "STATSRCH" @V407438 01274250
  1420. STATNOP DS D NOP, END HERE FOR 3330V CYL FAULT@V407438 01274500
  1421. STATSRCH DS D SEARCH ID EQUAL CCW 01275000
  1422. STATTIC DS D TIC CCW 01276000
  1423. STATREAD DS D READ DATA CCW 01277000
  1424. STATSCCW DS D SENSE CCW (3340) @VA07801 01277500
  1425. STATREL DS D RELEASE CCW @VA07801 01278000
  1426. STATSEN DS D SENSE FOR DETECTING RELEASE @VA07801 01278500
  1427. STATCCHH DS D SEARCH AURGUMENT (BBCCHHR) 01279000
  1428. STATVOL1 DS CL4 (VOL1) 01280000
  1429. STATLABL DS CL6 VOLUME SERIAL NUMBER. 01281000
  1430. DS CL4 01282000
  1431. STATPACK DS CL1 PACK CHANGE SWITCH 01283000
  1432. STATCALL DS CL1 CALLED FROM SHUTDOWN 01284000
  1433. STATSDAT DS CL(IOERSNSZ) SENSE INFORMATION @V407438 01285000
  1434. STATREGS DS D GPR7-8 SAVE AREA 01286000
  1435. STATGR13 DS F USED TO SAVE GPR-13 01287000
  1436. DS F 01288000
  1437. ORG STATSEEK 01289000
  1438. STATSNS DS D BUFFER UNLOAD CCW 01290000
  1439. ORG 01291000
  1440. STATSIZE EQU (*-STATDASD)/8 SIZE OF DSECT IN DOUBLE WORDS 01293000
  1441. ECFDSECT DSECT 01294000
  1442. CCW1 DS D 01295000
  1443. CCW2 DS D 01296000
  1444. CCW3 DS D 01297000
  1445. CCW4 DS D 01298000
  1446. CCW5 DS D 01299000
  1447. CCW6 DS D 01300000
  1448. ECFCSW DS D 01301000
  1449. ECFCCW DS D 01302000
  1450. ECFCNT DS F CSW BYTE COUNT @VA09516 01303100
  1451. ECFREG2 DS F 01304000
  1452. ECFREG3 DS F 01305000
  1453. ECFREG4 DS F 01306000
  1454. ECFREG5 DS F 01307000
  1455. ECFREG15 DS F @VA08187 01308000
  1456. ECFBWK DS F 01309000
  1457. ECFFWD DS F 01310000
  1458. ECFCCWRD DS F 01311000
  1459. TOTALCNT DS F NUMBER OF BYTES PROCESSED @VA09516 01312100
  1460. IDALCNT DS F @VA00922 01313000
  1461. ECFREG11 DS F 01314000
  1462. SECTVAL DS H 01315000
  1463. * 01316000
  1464. SEEKADR DS CL6 01317000
  1465. EJECT 01318000
  1466. COPY RBLOKS @V200820 01319000
  1467. COPY VBLOKS @VA04231 01319400
  1468. COPY VMBLOK @VA04231 01319800
  1469. COPY IOBLOKS @V200820 01320000
  1470. COPY DEVTYPES @V200820 01321000
  1471. COPY EQU @V200820 01322000
  1472. COPY SAVE @V200820 01324000
  1473. PSA @V200820 01325000
  1474. END DMKDAS @V200820 01326000