TAP TITLE 'DMKTAP (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE INPUT SERIALIZATION 00002000 *. 00003000 * MODULE NAME : DMKTAP 00004000 * 00005000 * 00006000 * 00007000 * FUNCTION : TO EXAMINE THE ERROR CONDITION RESULTING FROM A UNIT CHECK 00008000 * WHILE EXECUTING A CP GENERATED TAPE CHANNEL PROGRAM. 00009000 * POSITIONING OF THE TAPE WILL BE REQUIRED ON READ/WRITE 00010000 * COMMANDS AND THE CHANNEL PROGRAM RE-EXECUTED. 00011000 * IF THE ERROR CONDITION IS UNCORRECTABLE A CALL WILL BE 00012000 * ISSUED TO THE MESSAGE WRITER (DMKMSW) FOR OPERATOR 00013000 * AWARENESS. ON REGAINING CONTROL FROM DMKMSW THE ORIGINAL 00014000 * CHANNEL PROGRAM MAY BE RE-EXECUTED OR TERMINATED. 00015000 * 00016000 * TO ISSUE A RELEASE CCW TO TAPE DEVICE TO DETERMINE 00017000 * IF HARDWARE HAS 2/4 CHANNEL SWITCH. 00018000 * 00019000 * 00020000 * 00021000 * ATTRIBUTES : REENTRANT,PAGEABLE,CALLED VIA SVC. 00022000 * 00023000 * 00024000 * ENTRY POINTS : DMKTAPER - TO RETRY THE FAILING TAPE CHANNEL PROGRAM. 00025000 * - ENTRY AFTER A TAPE POSITIONING COMMAND HAS 00026000 * BEEN EXECUTED. 00027000 * DMKTAPRL - TO ISSUE RELEASE CCW TO TAPE DEVICE 00028000 * TO DETERMINE IF 2/4 CHANNEL SWITCH 00029000 * FEATURE IS ON THE HARDWARE. 00030000 * 00031000 * ENTRY CONDITIONS: 00032000 * DMKTAPER - 00033000 * GPR8=ADDRESS OF RDEVBLOK 00034000 * GPR10=ADDRESS OF IOBLOK 00035000 * GPR12=BASE ADDRESS 00036000 * GPR13=ADDRESS OF SAVE AREA 00037000 * 00038000 * DMKTAPRL - 00039000 * GPR2=DEVICE ADDRESS 00040000 * GPR6=RCHBLOK ADDRESS 00041000 * GPR7=RCUBLOK ADDRESS 00042000 * GPR8=RDEVBLOK ADDRESS 00043000 * 00044000 * 00045000 * EXIT CONDITIONS: 00046000 * DMKTAPER - 00047000 * 1. WHEN RETRY IS POSSIBLE. 00048000 * IOBFLAG=IOBRSTRT 00049000 * IOBRCAW=ADDRESS OF RESTART CCW STRING OR 00050000 * ADDRESS OF REPOSITIONING COMMAND. 00051000 * 2. WHEN RETRY IS NOT POSSIBLE. 00052000 * IOBFLAG=IOBFATAL 00053000 * 00054000 * DMKTAPRL - 00055000 * RETURN TO THE DISPATCHER. 00056000 * 00057000 * 00058000 * CALLS TO OTHER ROUTINES : 00059000 * DMKTAPER - 00060000 * 1. DMKMSW - TO PROVIDE OPERATOR COMMUNICATION 00061000 * IN ATTEMPTING TO CORRECT THE ERROR 00062000 * CONDITION. 00063000 * 2. DMKIOEST - TO UPDATE STATISTICAL COUNTERS 00064000 * 00065000 * DMKTAPRL - 00066000 * 1. DMKIOSQR - PERFORM TIO/REL 00067000 * 2. DMKPTRUL - UNLOCK DMKTAP PAGE 00068000 * 00069000 * DMKTAPER/DMKTAPRL 00070000 * 1. DMKFREE - TO OBTAIN STORAGE FOR WORK AREAS 00071000 * 2. DMKFRET - TO RETURN STORAGE WORK AREAS. 00072000 * 4. DMKIOEST - TO UPDATE STATISTICAL COUNTERS 00073000 * 00074000 * 00075000 * 00076000 * EXTERNAL REFERENCES : NONE 00077000 * 00078000 * 00079000 * 00080000 * TABLES AND WORK AREAS : IOBLOK,IOERBLOK,RDEVBLOK. 00081000 * INTERNAL WORK AREA - TAPREL (2 DWDS.) 00082000 * 00083000 * 00084000 * 00085000 * REGISTER USAGE : 00086000 * GPR0-6=SCRATCH 00087000 * GPR 7=IOERBLOK ADDRESS. 00088000 * GPR 8=RDEVBLOK ADDRESS. 00089000 * GPR 9=SCRATCH 00090000 * GPR 10=IOBLOK ADDRESS. 00091000 * GPR 11=VMBLOK ADDRESS. 00092000 * GPR 12=BASE ADDRESS. 00093000 * GPR 13=SAVE AREA ADDRESS. 00094000 * GPR 14=EXTERNAL LINKAGE REGISTER. 00095000 * GPR 15=EXTERNAL LINKAGE REGISTER. 00096000 * 00097000 * 00098000 * NOTES : NONE 00099000 * 00100000 * 00101000 * 00102000 * DMKTAPER - 00103000 * 00104000 * OPERATION : A. IF THE RETRY COUNT IN THE IOBLOK IS ZERO, STORE THE 00105000 * ADDRESS OF THE IOERBLOK IN THE RDEVBLOK. 00106000 * B. TEST FOR CHANNEL ERROR. 00107000 * 1. INTERFACE AND CHANNEL CONTROL CHECKS ARE RETURNED 00108000 * TO THE CALLER WITH IOBSTAT=IOBFATAL. 00109000 * C. TEST FOR OTHER TYPE ERROR. 00110000 * DESIGNATION OF COMMAND BEING EXECUTED 00111000 * C=CONTROL 00112000 * R=READ 00113000 * W=WRITE 00114000 * 1. EQUIPMENT CHECK (C,R,W) PERFORM ACTION 10. 00115000 * 2. BUS-OUT CHECK (C,R,W) PERFORM ACTION 4. 00116000 * 3. INTERVENTION REQUIRED (C,R,W) PERFORM ACTION 3. 00117000 * 4. COMMAND REJECT (C,R,W) PERFORM ACTION 13. 00118000 * 5. OVERRUN (R,W) PERFORM ACTION 7. 00119000 * 6. LOAD POINT (C,R) PERFORM ACTION 12. 00120000 * 7. DATA CHECK (R) PERFORM ACTION 5. 00121000 * 8. DATA CHECK (W) PERFORM ACTION 6. 00122000 * 9. DATA CHECK (C) PERFORM ACTION 8. 00123000 * 10. CHANNEL DATA CHECK (R,W) PERFORM ACTION 7. 00124000 * 11. CHANNEL DATA CHECK WITH DATA CONV ON (R) PERFORM 00125000 * ACTION 13. 00126000 * 12. CHANNEL DATA CHECK AND NOT CAPABLE ON (R) PERFORM 00127000 * ACTION 9. 00128000 * 13. CHANNEL DATA CHECK AND NO PREVIOUS SENSE BITS ON 00129000 * (R,W,C) PERFORM ACTION 10. 00130000 * 14. CHAINING CHECK (R) PERFORM ACTION 7. 00131000 * 15. PROGRAM CHECK (R,W) PERFORM ACTION 12. 00132000 * 16. PROTECTION CHECK (R,W) PERFORM ACTION 12. 00133000 * 17. INCORRECT LENGTH (R,W) PERFORM ACTION 12. 00134000 * 00135000 * **************** 00136000 * * ACTION LIST * 00137000 * **************** 00138000 * 00139000 * 3. CHECK TO SEE IF TAPE DRIVE IS EXISTENT. IF 00140000 * NON-EXISTENT ISSUE OPERATOR MESSAGE. 00141000 * IF THE COMMAND WAS A REWIND-UNLOAD EXIT. OTHERWISE 00142000 * SET INTERVENTION REQUIRED FLAGS AND WAIT FOR THE 00143000 * DEVICE END INTERRUPT. WHEN THE DEVICE END 00144000 * INTERRUPT OCCURS RE-ISSUE THE ORGINAL CCW STRING. 00145000 * 4. RE-ISSUE THE COMMAND IF 'DEVICE END' STATUS IS 00146000 * NOT PRESENT. IF 'DEVICE END' IS PRESENT DURING A 00147000 * WRITE, REPOSITION THE TAPE AND RE-ISSUE THE 00148000 * COMMAND. ALLOW A MAXIMUM OF 5 RETRIES. 00149000 * 5. RETRY ORIGINAL CCW STRING 40 TIMES WITH TAPE 00150000 * CLEANING ACTION PERFORMED EVERY 4'TH TIME. IF THE 00151000 * ERROR STILL PERSISTS READ OPPOSITE RECOVERY WILL 00152000 * BE ATTEMPTED. 00153000 * 6. REPOSITION TAPE AND ISSUE AN ERASE COMMAND, THEN 00154000 * FOLLOW WITH THE ORIGINAL CCW STRING FOR A MAXIMUM 00155000 * OF 15 RETRIES. 00156000 * 7. REPOSITION TAPE AND RE-ISSUE COMMAND FOR A MAXIMUM 00157000 * OF 5 RETRIES. 00158000 * 8. IF COMMAND IS A 'WTM', EXECUTE ACTION 6. IF THE 00159000 * COMMAND IS AN 'ERASE GAP' RETRY THE COMMAND FOR 3 00160000 * RETRIES. 00161000 * 9. REPOSITION TAPE TO LOAD POINT AND ISSUE OPERATOR 00162000 * MESSAGE. 00163000 * 10. CALL DMKMSW. 00164000 * 12. SET IOBSTAT=IOBFATAL AND RETURN TO CALLER. 00165000 * 13. CALL DMKMSW. 00166000 * 00167000 * 00168000 * 00169000 * D. IF THE RETRY PROCEDURE HAS BEEN EXHAUSTED AND 00170000 * UNSUCCESSFUL CALL DMKMSW FOR OPERATOR OPTIONS. 00171000 * (CANCEL,RETRY,IGNORE) 00172000 * THE RESPONSES ALLOWED WILL BE BASED ON THE CONDITION 00173000 * CAUSING THIS ERROR. 00174000 * 00175000 *. 00176000 * E. WHEN THE ERROR IS EITHER CORRECTED OR IS FATAL, 00177000 * CALL DMKIOEST PASSING A PARAMETER STRING TO UPDATE 00178000 * THE STATISTICAL COUNTERS. THE PARAMETER STRING IS 00179000 * PASSED ONLY FOR 2400'S, REG 1 WILL CONTAIN ZEROES 00180000 * FOR OTHER DRIVES. 00181000 EJECT @V4075A0 00182000 COPY OPTIONS @V4075A0 00183000 EJECT @V4075A0 00184000 EJECT 00185000 PUNCH 'SPB' FORCE PAGE BOUNDARY ALIGNMENT @VM08783 00186000 DMKTAP CSECT 00187000 EXTRN DMKFREE,DMKFRET,DMKMSWR 00188000 EXTRN DMKIOEST STATISTICAL COUNTER UPDATE @VA03757 00189000 EXTRN DMKIOSQR @V407466 00190000 EXTRN DMKPTRUL @V407466 00191000 EXTRN DMKSTKCP @VA12941 00191100 USING SAVEAREA,R13 00192000 USING PSA,R0 00193000 USING RDEVBLOK,R8 00194000 USING IOBLOK,R10 00195000 DC CL8'DMKTAP' 00196000 DMKTAPER RELOC 00197000 SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00198000 ICM R7,15,RDEVIOER GET THE FIRST IOERBLOK, IF ANY. 00199000 BP NOTFIRST IF NONE THIS IS THE FIRST TIME IN 00200000 L R7,IOBIOER LOAD IOERBLOK IN REG.7 00201000 USING IOERBLOK,R7 ESTABLISH ADDRESSABILTY. 00202000 ST R7,RDEVIOER STORE ADDRESS IN RDEVBLOK. 00203000 SR R3,R3 CLEAR REG.3 00204000 ST R3,IOBIOER CLEAR ADDR. OF IOERBLOK IN IOBLOK. 00205000 STH R3,IOBRCNT ZERO THE IOBRCNT FOR THE FIRST TIME IN 00206000 NI IOBSTAT,X'FF'-IOBFATAL INSURE BIT IS OFF. 00207000 NI IOBFLAG,X'FF'-(IOBRSTRT+IOBERP) MASK OFF BITS @VM08912 00208000 NI IOERFLG2,X'FF'-IOERMSW CLEAR MSG. WRITER FLAG @VM08912 00209000 SPACE 00210000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00211000 * NOTE: NEXT FEW LINES DETERMINE WHETHER CALL TO DMKTAPER CAUSED BY * 00212000 * CALL FROM DMKTAPRL (PERFORM TAPE REL. CCW TO DETERMINE 2/4 * 00213000 * CHANNEL SWITCH CAPABILITY. IF SO, DON'T WANT TO CALL DMKMSW. * 00214000 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 00215000 SPACE 2 00216000 LA R3,RELDONE RETURN ADDR IN 'TAPRL' AFTER REL.@V407466 00217000 C R3,IOBIRA IS THIS ENTRY FROM DMKTAPRL @V407466 00218000 BNE CONTINUE NO, CONTINUE TO PROCESS ERRORS @V407466 00219000 OI IOBSTAT,IOBFATAL INDICATE FATAL, OMIT MESSAGE @V407466 00220000 B EXIT4 EXIT TO DMKIOS @V407466 00221000 CONTINUE LTR R7,R7 IS THERE AN IOERBLOK @V407466 00222000 BZ EXIT4 NO, GO EXIT @VM08912 00223000 OI IOBFLAG,IOBERP SET ERP IN CONTROL. 00224000 NI IOERFLG3,X'FF'-IOERREAD RESET FLAG @VA03757 00225000 LA R0,CCWAREA GET AREA OF FREE STORAGE 00226000 CALL DMKFREE 00227000 STH R0,IOERDW REMEMBER AMOUNT OF STORAGE ASKED FOR. 00228000 ST R1,IOERLOC ALSO REMEMBER AT WHAT ADDRESS. 00229000 XC 0(CCWAREA*8,R1),0(R1) CLEAR THE CCW AREA 00230000 NOTFIRST EQU * R7 WILL POINT TO THE FIRST IOERBLOK 00231000 TM IOERFLG1,IOERCLN+IOERBSR+IOERFSR+IOERERG 00232000 BNZ DONTCNT BRANCH ON ANY MOTION CONTROL CMD. 00233000 LH R4,IOBRCNT LOAD ERROR COUNT. 00234000 A R4,F1 AND INCREASE BY 1 @VM08812 00235000 STH R4,IOBRCNT STORE RESULT IN IOBRCNT. 00236000 DONTCNT XC IOERMSG,IOERMSG CLEAR MESSAGE AREA. 00237000 L R3,IOBIOER GET ADDRESS OF SECOND IOERBLOK @VA01254 00238000 TM IOERCSW+5,IFCC+CCC IS THIS A CHANNEL ERROR @VM08812 00239000 BNZ CHANICCC YES, INDICATE CHANNEL ERROR @VM08812 00240000 LTR R3,R3 IS THERE A SECOND IOERBLOK ? @VA01254 00241000 BZ TAPDEND NO, GO TEST FOR DEVICE END @VA01254 00242000 TM IOERCSW+5-IOERBLOK(R3),IFCC+CCC IS CHANNEL @VM08812 00243000 BNZ CHANICCC YES, INDICATE CHANNEL ERROR @VM08812 00244000 TAPDEND EQU * @VA01254 00245000 TM IOERFLG1,IOERPEND IS A DEVICE END PENDING? 00246000 BO PENDING BRANCH IF YES. 00247000 TM IOERFLG2,IOERMSW IS THE MSG WRITER ACTIVE? @VA04628 00248000 BZ TAPBYPAS NO, CHECK FOR REWIND CONDITION @VA04628 00249000 NI IOBFLAG,X'FF'-IOBRSTRT CLEAR RESTART FLAG @VA04628 00250000 BAL R9,CKIOB FRET THE IOERBLOK @VA04628 00251000 B EXIT4 GO EXIT @VA04628 00252000 TAPBYPAS EQU * @VA04628 00253000 TM IOERFLG1,X'FF' IS INT. FROM RECOVERY ACTION? 00254000 BNZ REENTRY BRANCH ON YES. 00255000 MVI IOERNUM,COMPAT SET ERROR MSG FOR REWIND @VM08812 00256000 TM IOERFLG2,IOERREW WAS REWIND COMMAND ISSUE @VM08812 00257000 BO CALLWTR1 GO WRITE ERROR MESSAGE TO CONSOLE@VM08812 00258000 CLC IOBRCNT,F1+2 IS THIS THE FIRST ERROR ? @VM08812 00259000 BNE RECUR NO, CHECK FOR IOERBLOK @VM08812 00260000 LR R3,R7 GET THE FIRST IOERBLOK ADDR @VM08812 00261000 RECUR EQU * @VM08812 00262000 LTR R3,R3 DOES AN IOERBLOK EXIST ? @VM08812 00263000 BZ SDREXIT2 NO, ERROR CORRECTED @VA03757 00264000 TM IOERCSW+5-IOERBLOK(R3),CDC IS CHANNEL DATA @VM08812 00265000 * CHECK PRESENT 00266000 BO BADCHAN YES, CHECK RETRY COUNT @VM08812 00267000 MVC IOERCSW,IOERCSW-IOERBLOK(R3) SAVE CSW IN FIRST @VM08812 00268000 * IOERBLOK 00269000 UNITCK EQU * @VM08812 00270000 MVI IOERNUM,EQUIP INDICATE EQUIPMENT CHECK MSG @VM08812 00271000 TM IOERDATA,EQUI1 IS THIS AN EQUIPMENT CHECK @VM08812 00272000 BO CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00273000 BUSCK EQU * @VM08812 00274000 TM IOERDATA,BUSCE IS THIS A BUS OUT CHECK @VM08812 00275000 BZ INTREQID NO, CHECK FOR INTERVENTION @VM08812 00276000 MVI IOERNUM,BUSOUTCK INDICATE BUS OUT CHECK MSG @VM08812 00277000 CLC IOBRCNT,F5+2 IS THIS THE 6TH ERROR @VM08812 00278000 BH CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00279000 TM IOERCSW+4,DE IS DEVICE END PRESENT @VM08812 00280000 BZ TRYAGAIN NO, GO RETRY ERROR @VM08812 00281000 BAL R5,GETCUCCW GET FAILING CCW ADDR IN R4 @VM08812 00282000 BAL R5,DATCHAIN @VA04842 00283000 LR R4,R2 @VA04842 00284000 BAL R5,CTLWRTRD CHECK FOR WRITE AND CONTROL CMD @VM08812 00285000 B TRYAGAIN GO RETRY ERROR @VM08812 00286000 INTREQID EQU * @VM08812 00287000 TM IOERDATA,INTRV IS THIS AN INTERVENTION CONDITION@VM08812 00288000 BZ TRYREJ NO, GO CHECK COMMAND REJECT @VM08812 00289000 TM IOERCSW+4,DE IS DEVICE END PRESENT @VM08812 00290000 BO TRYREW YES, GO RETRY ERROR @VM08812 00291000 MVI IOERNUM,NODEV INDICATE NO DEVICE MESSAGE @VM08812 00292000 TM IOERDATA+1,TAUST IS TAU UNIT STATUS 'B' ON @VM08812 00293000 * INDICATE DEVICE EXIST 00294000 BZ CALLWTR1 NO, GO WRITE ERROR MESSAGE @VM08812 00295000 L R4,IOBCAW GET STARTING ADDRESS OF CCWS @VM08812 00296000 CLI 0(R4),X'0F' IS THIS A REWIND-UNLOAD CMD @VM08812 00297000 BE FINISH YES, THIS IS A NORMAL CONDITION @VM08812 00298000 OI IOERFLG1,IOERPEND SET DEVICE END PENDING FLAG @VM08812 00299000 OI RDEVSTAT,RDEVNRDY MARK DEVICE NOT READY @VA12941 00299100 OI IOERIND3,IOERACT TURN ON ACTION FLAG FOR @VM08812 00300000 * OPERATOR 00301000 MVI IOERNUM,INTREQU INDICATE INTERV. REQUEST MSG. @VM08812 00302000 B CALLWTR GO CALL MESSAGE WRITER @VM08812 00303000 PENDING TM IOERFLG2,IOERMSW MESSAGE WRITER IN PROGRESS @VA12941 00304000 BO BLDCPEX WAIT FOR MSW TO FINISH @VA12941 00304100 NI IOERFLG1,X'FF'-IOERPEND TURN OFF D.E. PENDING @VM08812 00305000 NI RDEVSTAT,X'FF'-RDEVNRDY RESET NOT READY FLAG @VM08812 00306000 BAL R9,CKIOB FRET IOERBLOK @VA04628 00309000 NI IOBFLAG,X'FF'-IOBERP CLEAR ERP IN CONTROL FLAG @VA04628 00310000 OI IOBFLAG,IOBRSTRT SET IOS RESTART FLAG @VM08812 00311000 SR R2,R2 CLEAR REGISTER 2 @VM08812 00312000 STH R2,IOBRCNT CLEAR ERROR COUNT @VM08812 00313000 MVC IOBRCAW,IOBCAW SET UP I/O RESTART ADDRESS @VM08812 00314000 B EXIT3 GO RETURN TO IOS FOR RESTART @VM08812 00315000 TRYREW EQU * @VM08812 00316000 CLI IOERCSW+4,CUE+DE+UC IS THIS A REWIND UNLOAD @VM08812 00317000 * INTERRUPT 00318000 BE FINISH YES, GO TO NORMAL EXIT @VM08812 00319000 TRYREJ EQU * @VM08812 00320000 MVI IOERNUM,REJ INDICATE COMMAND REJECT MESSAGE @VM08812 00321000 TM IOERDATA,COMRJ IS THIS A COMMAND REJECT @VM08812 00322000 BO CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00323000 MVI IOERNUM,OVERERR INDICATE OVERRUN MESSAGE @VM08812 00324000 TM IOERDATA,OVERN IS THIS A OVERRUN CONDITION @VM08812 00325000 BZ TRYLDPNT NO, GO CHECK FOR LOAD POINT @VM08812 00326000 CLC IOBRCNT,F6+2 HAS OVERRUN OCCURRED 6 TIMES @VM08812 00327000 BH CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00328000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS IN REG 4 @VM08812 00329000 BAL R5,DATCHAIN REALLY POINT AT FAILING CCW @VA04842 00330000 LR R4,R2 WITH REG 4, PLEASE @VA04842 00331000 BAL R5,CTLWRTRD CHECK FOR WRITE & CONTROL CCW @VM08812 00332000 B RDREP GO TO READ REPOSITION SECTION @VM08812 00333000 SPACE 1 00333025 BLDCPEX LA R0,CPEXSIZE SIZE OF CPEXBLOK @VA12941 00333050 CALL DMKFREE GET STORAGE FOR CPEXBLOK @VA12941 00333075 USING CPEXBLOK,R1 CPEXBLOK ADDRESSABILIY @VA12941 00333100 XC CPEXBLOK(CPEXSIZE*8),CPEXBLOK CLEAR BLOCK @VA12941 00333125 MVC CPEXR0(CPEXR12-CPEXR0),SAVER0 SETUP CPEXBLOK @VA12941 00333150 LR R15,R12 INCREM R12 BY 8 FOR TAPER REENTRY@VA12941 00333175 A R15,F8 ... @VA12941 00333200 ST R15,CPEXR12 SAVE NEW R12 IN CPEXBLOK @VA12941 00333225 ST R13,CPEXR13 R13 AS WELL @VA12941 00333250 ST R15,CPEXADD CPEXBLOK RETURN ADDRESS @VA12941 00333300 DROP R1 ... @VA12941 00333325 L R5,IOERCPEX ANCHOR FOR CPEXBLOKS @VA12941 00333350 USING CPEXBLOK,R5 ADDRESSABILITY @VA12941 00333375 LTR R5,R5 ANY CPEXBLOKS ON QUEUE @VA12941 00333400 BNZ NEXTCPEX YES, FIND END OF CHAIN @VA12941 00333425 ST R1,IOERCPEX ADD TO THE CHAIN @VA12941 00333450 B GOTODSP GOTO THE DISPATCHER @VA12941 00333475 SPACE 1 00333500 NEXTCPEX L R14,CPEXFPNT GET POINTER TO NEXT ONE ON CHAIN @VA12941 00333525 LTR R14,R14 END OF QUEUE @VA12941 00333550 BZ QUEUE END OF QUEUE - ADD CPEXBLOK @VA12941 00333575 LR R5,R14 CONTINUE TO LOOK FOR END @VA12941 00333600 B NEXTCPEX ... @VA12941 00333625 SPACE 2 ... @VA12941 00333650 QUEUE ST R1,CPEXFPNT ADD CPEXBLOK TO QUEUE AT END @VA12941 00333675 GOTODSP GOTO DMKDSPCH EXIT TO DISPATCHER FOR NOW @VA12941 00333700 DROP R5 DROP CPEXBLOK ADDRESSABILITY @VA12941 00333725 TRYLDPNT EQU * @VM08812 00334000 MVI IOERNUM,LDPNT INDICATE LOAD POINT ERROR MESSAGE@VM08812 00335000 TM IOERDATA+1,LDPONT IS THIS AT LOAD POINT @VM08812 00336000 BO CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00337000 TM IOERDATA,DATACK IS THIS A DATA CHECK ERROR @VM08812 00338000 BZ TRYSEC NO, GO CHECK DEVICE TYPE @VM08812 00339000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS IN REG4 @VM08812 00340000 BAL R5,DATCHAIN @VA04842 00341000 LR R4,R2 @VA04842 00342000 TM 0(R4),X'03' IS THIS A CONTROL CMD CCW @VM08812 00343000 BNO TSTWRT NO, GO CHECK FOR READ CMD @VM08812 00344000 MVI IOERNUM,CTLCMD INDICATE CONTROL COMMAND MESSAGE @VM08812 00345000 CLI 0(R4),X'1F' IS THIS A WRITE TAPE MARK CMD @VM08812 00346000 BE WRTERR YES, GO TO WRITE SECTION @VM08812 00347000 CLI 0(R4),X'17' IS THIS A ERASE GAP CMD @VM08812 00348000 BNE CALLWTR1 NO, GO WRITE ERROR MESSAGE @VM08812 00349000 LR R1,R4 GET THE RESTART ADDRESS @VM08812 00350000 CLC IOBRCNT,F3+2 HAS ERROR OCCURRED 3 TIMES @VM08812 00351000 BNH RETRY1 NO, GO RETRY OPERATION @VM08812 00352000 MVI IOERNUM,ERGFAIL INDICATE ERROR CONDITION MSG @VM08812 00353000 B CALLWTR1 GO WRITE ERROR MESSAGE @VM08812 00354000 TSTWRT EQU * @VM08812 00355000 TM 0(R4),X'02' IS THIS A READ COMMAND CCW @VM08812 00356000 BO RDERR YES, GO TO READ SECTION @VM08812 00357000 TM 0(R4),X'0C' IS THIS A READ BACKWARD CMD @VM08812 00358000 BO RDERR1 YES, GO SET READ BACKWARD CMD @VM08812 00359000 CLI 0(R4),X'04' IS THIS A SENSE OP-CODE @VA01599 00360000 BNE WRTERR NO, GO TO WRITE SECTION @VA01599 00361000 MVI IOERNUM,DATAER INDICATE DATA CHECK MESSAGE @VA01599 00362000 CLC IOBRCNT,F5+2 HAS ERROR OCCURRED 6 TIMES @VA01599 00363000 BH CALLWTR1 YES, GO WRITE ERROR MESSAGE @VA01599 00364000 B TRYAGAIN GO RETRY OPERATION @VA01599 00365000 WRTERR EQU * @VM08812 00366000 MVI IOERNUM,DATAER INDICATE DATA CHECK MESSAGE @VM08812 00367000 CLC IOBRCNT,F15+2 HAS ERROR OCCURRED 15 TIMES @VM08812 00368000 BH CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00369000 BAL R5,CTLWRTRD CHECK FOR WRITE & CONTROL CCW @VA08511 00369500 WRTREP EQU * @VM08812 00370000 L R1,IOERLOC GET ADDRESS OF ALLOCATED STORAGE @VM08812 00371000 MVC 0(8,R1),BKSPACE MOVE BACKSPACE CMD IN AREA @VM08812 00372000 MVC 8(8,R1),ERASE MOVE ERASE GAP CMD IN AREA @VM08812 00373000 MVC 16(8,R1),NOP MOVE NO-OP CMD IN AREA @VM08812 00374000 OI IOERFLG1,IOERBSR+IOERERG SET ERG & BSR FLAG'S ON@VM08812 00375000 B RETRY1 GO RETRY OPERATION @VM08812 00376000 RDERR1 EQU * @VM08812 00377000 OI IOERFLG2,IOERRBK INDICATE READ BACKWARD CMD @VM08812 00378000 RDERR EQU * @VM08812 00379000 CLC IOBRCNT,F1+2 IS THIS THE FIRST ERROR ?? @VA03757 00380000 BNE NOTREAD NO, FORGET READ FLAG @VA03757 00381000 OI IOERFLG3,IOERREAD TURN ON READ FLAG @VA03757 00382000 NOTREAD EQU * @VA03757 00383000 TM IOERDATA+1-IOERBLOK(R3),NOISRECD IS THIS A @VM08812 00384000 * NOISE RECORD 00385000 BO RDREP YES, GO CHECK FOR SECOND IOERBLOK@VM08812 00386000 BAL R5,GETCUCCW POINT AT CCW THAT FAILED WITH R4 @VA04842 00387000 BAL R5,DATCHAIN POINT AT FIRST CCW IN DATA CHAIN @VA04842 00388000 * WITH R2 @VA04842 00389000 LR R1,R2 MOVE WORKING COPY TO R1 @VA04842 00390000 SLR R0,R0 CLEAR REG TO ACCUMULATE LENGTH @VA04842 00391000 CNTBLOCK L R5,4(,R1) GET 2ND WORD OF CCW @VA04842 00392000 N R5,XRIGHT16 MASK ALL BUT CCW COUNT FIELD @VA04842 00393000 ALR R0,R5 ADD IT IN @VA04842 00394000 CLR R1,R4 REACHED FAILING CCW YET? @VA04842 00395000 BE CNTDONE YES, DONE COUNTING UP @VA04842 00396000 LA R1,8(,R1) POINT AT NEXT CCW @VA04842 00397000 CLI 0(R1),CDTIC IS IT A TIC? @VA04842 00398000 * (NOTE MUST BE DATA CHAINING VARIETY IF IT IS ANYTHING) @VA04842 00399000 BNE CNTBLOCK NO, GO ADD IN THIS LENGTH @VA04842 00400000 ICM R1,B'0111',1(R1) FOLLOW THE TIC @VA04842 00401000 B CNTBLOCK AND KEEP GOING @VA04842 00402000 CNTDONE L R5,IOERCSW+4 GET 2ND WORD OF CSW @VA04842 00403000 N R5,XRIGHT16 CLEAR ALL BUT RESIDUAL COUNT @VA04842 00404000 SR R0,R5 SUBTRACT THAT FROM TOTAL LENGTH @VA04842 00405000 BM NOCCW HMMM...SOMETHING WRONG WITH CSW @VA04842 00406000 CH R0,=H'12' NOISE RECORD OR NOT? @VA04842 00407000 BNL RDREP NOT NOISE, BACKSPACE AND REREAD @VA04842 00408000 LR R1,R2 RESTART AT START OF DATA CHAIN @VA04842 00409000 * ENCOUNTERED NOISE RECORD ... JUST REISSUE READ (NO REPOSITION) 00410000 CLC IOBRCNT,=H'80' HAS RETRY COUNT EXCEEDED 80 @VA03463 00411000 BNH RETRY1 NOT YET...CONTINUE @VA03463 00412000 MVI IOERNUM,DATAER INDICATE DATA CHECK MSG @VA03463 00413000 B CALLWTR1 GO WRITE ERROR MSG @VA03463 00414000 RDREP EQU * @VM08812 00415000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS IN REG 4 @VM08812 00416000 BAL R5,DATCHAIN POINT AT START OF DATA CHAIN @VA04842 00417000 LR R4,R2 WITH R4 @VA04842 00418000 TM 0(R4),X'0C' IS THIS A READ BACKWARD CMD CCW @VM08812 00419000 BZ TESTIOB NO, TEST FOR SECOND IOERBLOK @VM08812 00420000 OI IOERFLG2,IOERRBK INDICATE READ BACKWARD CMD @VM08812 00421000 TESTIOB EQU * @VM08812 00422000 ICM R3,15,IOBIOER IS THERE A SECOND IOERBLOK @VM08812 00423000 BZ *+10 NO, GO CHECK MAXIMUN RETRY COUNT @VM08812 00424000 MVC IOERADR-IOERBLOK(1,R7),IOERDATA-IOERBLOK+2(R3) @VM08812 00425000 * GET TRACK-IN-ERROR DATA 00426000 CLC IOBRCNT,=H'40' HAS RETRY EXCEEDED 40 @VM08812 00427000 BH OPPREV40 YES, CHECK FLAG FOR OPPOSITE @VM08812 00428000 * RECOVERY 00429000 SR R4,R4 CLEAR REGISTER 4 @VM08812 00430000 LH R5,IOBRCNT GET THE ERROR COUNT @VM08812 00431000 D R4,F4 DIVIDE BY 4 @VM08812 00432000 LTR R4,R4 IS THIS A MULTIPLE OF 4 @VM08812 00433000 BNZ CHANPRG GO BUILD CHANNEL PROGRAM & RETRY @VM08812 00434000 CLNFWD EQU * @VM08812 00435000 MVI IOERWRK,5 NUMBER OF BACKSPACES @VM08812 00436000 TM IOERFLG2,IOERRBK IS THIS A READ BACKWARD CMD @VM08812 00437000 BZ *+8 NO, BYPASS CHANGING COUNT @VM08812 00438000 MVI IOERWRK,4 NUMBER OF BACKSPACES @VM08812 00439000 BAL R5,CHANBSR GO BUILD CHANNEL PROGRAM & RETRY @VM08812 00440000 OI IOERFLG1,IOERCLN SET TAPE CLEANING FLAG @VM08812 00441000 B RETRY1 GO RETRY OPERATION @VM08812 00442000 OPPREV40 EQU * @VM08812 00443000 TM IOERFLG1,IOERORA IS OPPOSITE RECOVERY ACTIVE @VM08812 00444000 BO NOT7TRK YES, CHECK ERROR COUNT @VM08812 00445000 MVI IOERNUM,DATAER INDICATE DATA CHECK MESSAGE @VM08812 00446000 CLC IOBRCNT,=H'80' HAS ERROR EXCEEDED 80 TIMES @VM08812 00447000 BH CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00448000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS IN REG4 @VM08812 00449000 BAL R5,DATCHAIN AND POINT AT START OF DATA CHAIN @VA04842 00450000 CLR R2,R4 ARE THEY ONE AND THE SAME? @VA04842 00451000 BNE CALLWTR1 NO - DATA CHAINING IN EFFECT - @VA04842 00452000 * READ OPPOSITE RECOVERY NOT ALLOWED 00453000 TM 4(R4),IDA+SKIP+CD IF ANY OF THESE ON, @VA04842 00454000 * THAT'S A NO-NO FOR R.O.R. @VA04842 00455000 BNZ CALLWTR1 TOO BAD, TELL USER THE NEWS @VA04842 00456000 TM IOERDATA+1,TRACK7 IS THIS A 7 TRACK DRIVE @VM08812 00457000 BZ NOT7TRK NO, CHECK ERROR COUNT @VM08812 00458000 L R5,IOBCAW GET ADDRESS OF CCW STRING @VM08812 00459000 TM 0(R5),DCMODE IS DRIVE IN DC MODE @VM08812 00460000 BO CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00461000 NOT7TRK EQU * @VM08812 00462000 SR R4,R4 CLEAR REGISTER 4 @VM08812 00463000 LH R5,IOBRCNT GET THE ERROR COUNT @VM08812 00464000 D R4,F4 DIVIDE BY 4 @VM08812 00465000 LTR R4,R4 IS THIS A MULTIPLE OF 4 @VM08812 00466000 BZ CLNFWD YES, GO TO TAPE CLEANING SECTION @VM08812 00467000 ENTRYORA EQU * @VM08812 00468000 TM IOERFLG1,IOERORA IS OPPOSITE RECOVERY ACTIVE @VM08812 00469000 BO COPYCCW YES, GO BUILD CHANNEL PROGRAM @VM08812 00470000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS @VM08812 00471000 L R1,IOERLOC GET ALLOCATED STORAGE ADDRESS @VM08812 00472000 MVC 0(8,R1),TIE MOVE REQUEST TRACK-IN-ERROR CCW @VM08812 00473000 MVC 8(8,R1),0(R4) MOVE FAILING CCW IN AREA @VM08812 00474000 TM 4(R4),CC ARE WE COMMAND CHAINING @VA06204 00475000 BZ NOTCC NO LEAVE AS IS @VA06204 00476000 TM 8(R4),X'08' NEXT COMMAND A TIC @VA06204 00477000 BNO NOTTIC NO THATS OK @VA06204 00478000 TM 8(R4),X'07' IF THESE BITS ON THIS @VA07177 00479000 BNZ NOTTIC IS NOT A TIC @VA07177 00480000 SR R5,R5 @VA06204 00481000 ICM R5,7,9(R4) GET THE TIC TO ADDRESS @VA06204 00482000 BZ CALLWTR1 MIGHTY STRANGE IF ITS ZERO @VA06204 00483000 ST R5,40(R1) @VA06204 00484000 B NOTCC RETURN TO INLINE CODE @VA06204 00485000 NOTTIC EQU * @VA06204 00486000 MVC 41(3,R1),IOERCSW+1 @VA06204 00487000 NOTCC EQU * @VA06204 00488000 MVI 8(R1),X'0C' CHANGE COMMAND CODE TO READ @VM08812 00489000 * BACKWARD 00490000 OI 12(R1),SKIP TURN ON SUPPRESS DATA FLAG @VM08812 00491000 NI 12(R1),X'FF'-(SILI+CC) RESET SILI AND CC' @VA06204 00492000 * LENGTH 00493000 TM IOERFLG2,IOERRBK IS READ BACKWARD CMD INDICATED @VM08812 00494000 BZ *+8 NO, DON'T CHANGE COMMAND CODE @VM08812 00495000 MVI 8(R1),X'02' CHANGE COMMAND CODE TO A READ @VM08812 00496000 MVC 24(8,R1),8(R1) SAVE CHANGED CCW @VM08812 00497000 LA R5,IOERADR GET ADDRESS OF TRACK-IN-ERROR @VM08812 00498000 * DATA 00499000 STCM R5,7,1(R1) SAVE TIE DATA ADDRESS @VM08812 00500000 OI IOERFLG1,IOERORA+IOERSUPP SET OPPOSITE @VM08812 00501000 * RECOVERY & SUPPRESS DATA FLAG 00502000 LTR R3,R3 IS THERE A SECOND IOERBLOK @VM08812 00503000 BZ RETRY1 NO, GO RETRY OPERATION @VM08812 00504000 MVC IOERADR-IOERBLOK(1,R7),IOERDATA-IOERBLOK+2(R3) @VM08812 00505000 * GET TRACK-IN-ERROR DATA 00506000 B RETRY1 GO RETRY OPERATION @VM08812 00507000 COPYCCW EQU * @VM08812 00508000 BAL R5,CHANCOPY GET THE CHANGE CCW AND STORAGE @VM08812 00509000 LA R5,IOERADR GET ADDRESS OF TRACK-IN-ERROR @VM08812 00510000 * DATA 00511000 STCM R5,7,1(R1) PUT DATA ADDRESS IN TIE CCW @VM08812 00512000 B RETRY1 GO RETRY OPERATION @VM08812 00513000 TRYSEC EQU * @VM08812 00514000 BAL R5,DEVRTN CHECK FOR 3410/3420 DEVICES @VM08812 00515000 B TRYCONV DEVICES DOESN'T EXIST @VM08812 00516000 TESTDSE EQU * @VM08812 00517000 MVI IOERNUM,PROTECT INDICATE SECURITY MESSAGE @VM08812 00518000 TM IOERDATA+7,SECESE IS THIS SECURITY ERASE CMDE @VM08812 00519000 BO CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00520000 TRYCONV EQU * @VM08812 00521000 MVI IOERNUM,CONV INDICATE DATA CONVERT MESSAGE @VM08812 00522000 TM IOERDATA,DATACONV IS THIS A DATA CONVERTOR ERROR@VM08812 00523000 BO CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00524000 TM IOERDATA+1,NOTCAPA IS 'NOT CAPABLE' FLAG ON @VM08812 00525000 BZ TRYPE NO, GO CHECK FOR DEVICES @VM08812 00526000 L R1,IOERLOC GET ADDRESS OF ALLOCATED STORAGE @VM08812 00527000 MVC 0(8,R1),REWIND MOVE REWIND CCW IN AREA @VM08812 00528000 MVC 8(8,R1),NOP MOVE NO-OP CCW IN AREA @VM08812 00529000 OI IOERFLG2,IOERREW TURN ON REWIND FLAG @VM08812 00530000 B RETRY1 GO RETRY OPERATION @VM08812 00531000 TRYPE EQU * @VM08812 00532000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS IN REG4 @VM08812 00533000 BAL R5,DATCHAIN @VA04842 00534000 LR R4,R2 @VA04842 00535000 BAL R5,DEVRTN GO CHECK FOR 3410/3420 DEVICES @VM08812 00536000 B TRYCHAIN DEVICES DOESN'T EXIST @VM08812 00537000 TM IOERDATA+5,PEBURST1 IS THIS A P.E. BURST CHECK @VM08812 00538000 BZ TRYCHAIN NO, TEST FOR CHANNEL CHAINING @VM08812 00539000 * CHECK 00540000 MVI IOERNUM,PEBURST INDICATE P.E. BURST MESSAGE @VM08812 00541000 CLC IOBRCNT,=H'14' HAS ERROR OCCURRED 14 TIMES @VM08812 00542000 BNL CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00543000 BAL R5,CTLWRTRD CHECK FOR WRITE & CONTROL CCW @VM08812 00544000 B CALLWTR1 GO WRITE ERROR MESSAGE @VM08812 00545000 TRYCHAIN EQU * @VM08812 00546000 MVI IOERNUM,BDSNS INDICATE INVALID SENSE MESSAGE @VA03892 00547000 TM IOERCSW+5,PRGC+PRTC+CHC IS THIS CHAINING CHECK,@VA02055 00548000 * CHANNEL PROGRAM CHECK, PROTECTION CHECK @VA02055 00549000 BZ NOSTAT BRANCH IF NOT @VA02055 00550000 MVI IOERNUM,CHANERR INDICATE CHANNEL ERROR MESSAGE @VA02055 00551000 TM IOERCSW+5,CHC IS CHANNEL CHAINING ON @VA02055 00552000 BO CHANERRR @VA02055 00553000 NOSTAT EQU * @VA02055 00554000 TM IOBFLAG,IOBCP IS THIS CP GENERATED @VA02055 00555000 BZ IGNORE NO, BYPASS ERROR MESSAGE @VA02055 00556000 B CALLWTR1 GO WRITE ERROR MESSAGE @VA02055 00557000 CHANERRR EQU * @VA02055 00558000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS @VA02055 00559000 BAL R5,DATCHAIN @VA04842 00560000 LR R4,R2 @VA04842 00561000 CLC IOBRCNT,F5+2 IS COUNT GREATER THAN 5 @VM08812 00562000 BH CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00563000 BAL R5,CTLWRTRD CHECK FOR CONTROL & WRITE CMD @VM08812 00564000 B RDREP GO TO READ SECTION @VM08812 00565000 BADCHAN EQU * @VM08812 00566000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS @VM08812 00567000 BAL R5,DATCHAIN @VA04842 00568000 LR R4,R2 @VA04842 00569000 CLC IOBRCNT,F5+2 IS COUNT GREATER THAN 5 @VM08812 00570000 BH CHANICCC YES, INDICATE CHANNEL ERROR MSG @VM08812 00571000 TM 0(R4),X'03' IS THIS A CONTROL CMD CCW @VM08812 00572000 BNO TRYAGAIN NO - RETRY @VA04287 00573000 CHANICCC EQU * @VM08812 00574000 MVI IOERNUM,CHANERR INDICATE CHANNEL ERROR MESSAGE @VM08812 00575000 BAL R9,FRETPTR RELEASE ALLOCATED STORAGE @VM08812 00576000 ICM R3,15,IOBIOER IS THIS A SECOND IOERBLOK @VM08812 00577000 BZ CALLWTR1 NO, GO WRITE ERROR MESSAGE @VM08812 00578000 TM IOERCSW+5,CDC+CCC+IFCC IS THIS A CHANNEL ERROR @VM08812 00579000 BNZ CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00580000 ST R3,RDEVIOER SAVE CURRENT IOERBLOK ADDRESS @VM08812 00581000 ST R7,IOBIOER SAVE ORIGINAL IOERBLOK ADDRESS @VM08812 00582000 LR R7,R3 GET CURRENT IOERBLOK ADDRESS @VM08812 00583000 BAL R9,CKIOB RELEASE SECOND IOERBLOK @VM08812 00584000 MVI IOERNUM,CHANERR INDICATE CHANNEL ERROR MSG. @VM08812 00585000 B CALLWTR1 GO WRITE ERROR MESSAGE @VM08812 00586000 REENTRY EQU * @VM08812 00587000 TM IOERFLG1,IOERERG IS RE-ENTRY FROM WRITE @VM08812 00588000 BZ READING NO, GO TO RE-ENTRY READ SECTION @VM08812 00589000 WRITING EQU * @VM08812 00590000 ICM R3,15,IOBIOER IS THERE A SECOND IOERBLOK @VM08812 00591000 BZ GDBSR NO, GO SET UP A RETRY OPERATION @VM08812 00592000 L R4,IOERCSW-IOERBLOK(R3) GET FAILING CCW ADDR+8 @VM08812 00593000 MVI IOERNUM,RECERR INDICATE RECOVERY ERROR MESSAGE @VM08812 00594000 S R4,F8 GET FAILING CCW ADDRESS @VM08812 00595000 BM CALLWTR1 IF INVALID, WRITE ERROR MESSAGE @VM08812 00596000 CLI 0(R4),X'17' IS THIS A ERASE GAP COMMAND @VM08812 00597000 BNE CALLWTR1 NO, GO WRITE ERROR MESSAGE @VM08812 00598000 L R1,IOERLOC GET ALLOCATED STORAGE ADDRESS @VM08812 00599000 MVC 0(8,R1),ERASE MOVE ERASE GAP CMD IN AREA @VM08812 00600000 MVC 8(8,R1),NOP MOVE NO-OP CCW IN AREA @VM08812 00601000 NI IOERFLG1,X'FF'-IOERBSR CLEAR BACKSPACE FLAG @VM08812 00602000 B RETRY1 GO RETRY OPERATION @VM08812 00603000 GDBSR EQU * @VM08812 00604000 NI IOERFLG1,X'FF'-(IOERBSR+IOERERG) CLEAR BSR & @VM08812 00605000 * ERG FLAG 00606000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS IN REG 4 @VM08812 00607000 BAL R5,DATCHAIN GET ADDRESS OF DATA CHAINING CCW @VM08812 00608000 LR R1,R2 GET RESTART ADDRESS @VM08812 00609000 B RETRY1 GO RETRY OPERATION @VM08812 00610000 READING EQU * @VM08812 00611000 TM IOERFLG1,IOERCLN IS TAPE CLEANING ACTIVE @VM08812 00612000 BO CLNINT YES, GET NUMBER OF REPOSITIONS @VM08812 00613000 * REMAINING 00614000 TM IOERFLG1,IOERORA IS OPPOSITE RECOVERY ACTIVE @VM08812 00615000 BO ENTRYRTY YES, GO CHECK SUPPRESS FLAG @VM08812 00616000 MVI IOERNUM,RECERR INDICATE RECOVERY ERROR MESSAGE @VM08812 00617000 ICM R3,15,IOBIOER IS THERE A SECOND IOERBLOK @VM08812 00618000 BNZ CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00619000 NI IOERFLG1,X'FF'-(IOERBSR+IOERFSR) RESET FORWARD @VM08812 00620000 * SPACE AND BACKSPACING 00621000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS IN REG 4 @VM08812 00622000 BAL R5,CHANTIC SET UP TIC CCW WITH RESTART ADDR @VM08812 00623000 BAL R5,DATCHAIN GET DATA CHAINING CCW @VM08812 00624000 LR R4,R2 GET THE RESTART CCW ADDRESS @VM08812 00625000 STCM R4,7,9(R1) PUT RESTART ADDRESS IN TIC CCW @VM08812 00626000 LA R4,IOERADR GET ADDRESS OF TRACK-IN-ERROR @VM08812 00627000 * DATA 00628000 STCM R4,7,1(R1) PUT TRACK-IN-ERROR ADDRESS IN CCW@VM08812 00629000 B RETRY1 GO RETRY OPERATION @VM08812 00630000 CLNINT EQU * @VM08812 00631000 SR R5,R5 CLEAR REGISTER 5 @VM08812 00632000 IC R5,IOERWRK GET NUMBER OF REPOSITIONS @VM08812 00633000 * REMAINING 00634000 S R5,F1 SUBTRACT 1 AND @VM08812 00635000 STC R5,IOERWRK SAVE RESULT @VM08812 00636000 ICM R3,15,IOBIOER IS THERE A SECOND IOERBLOK @VM08812 00637000 BZ GDCLN NO, GET NUMBER OF REPOSITIONS @VM08812 00638000 MVI IOERNUM,RECERR INDICATE RECOVERY ERROR MESSAGE @VM08812 00639000 TM IOERDATA-IOERBLOK+1(R3),LDPONT IS THIS LOAD @VM08812 00640000 * POINT 00641000 BZ CALLWTR1 NO, GO WRITE ERROR MESSAGE @VM08812 00642000 TM IOERDATA-IOERBLOK(R3),X'FF' ANY OTHER ERRORS ? @VA03468 00643000 BNZ CALLWTR1 YES, GO WRITE ERROR MESSAGE @VA03468 00644000 SR R6,R6 CLEAR REGISTER 6 @VM08812 00645000 LA R5,5 GET MAXIMUN REPOSITION COUNT @VM08812 00646000 TM IOERFLG2,IOERRBK IS THIS A READ BACKWARD CMD @VM08812 00647000 BZ *+8 NO, BYPASS @VM08812 00648000 LA R5,4 GET MAX. COUNT FOR READ BACKWARD @VM08812 00649000 IC R6,IOERWRK GET NUMBER OF REPOSITIONS @VM08812 00650000 SR R5,R6 SUBTRACT NUMBER OF REPOSITIONS @VM08812 00651000 * REMAINING FROM MAXIMUN 00652000 TM IOERFLG1,IOERORA IS OPPOSITE RECOVERY ACTIVE @VM08812 00653000 BO ENTRYINT YES, REDUCE REPOSITION COUNT BY 1@VM08812 00654000 TM IOERFLG2,IOERRBK IS THIS A READ BACKWARD CCW @VM08812 00655000 BO ENTRYINS YES, SAVE REPOSITION COUNT @VM08812 00656000 S R5,F2 REDUCE REPOSITION COUNT BY 2 @VM08812 00657000 B ENTRYINS GO SAVE REPOSITION COUNT @VM08812 00658000 ENTRYINT EQU * @VM08812 00659000 S R5,F1 REDUCE REPOSITION COUNT BY 1 @VM08812 00660000 ENTRYINS EQU * @VM08812 00661000 STC R5,IOERWRK SAVE REPOSITION COUNT @VM08812 00662000 BAL R5,CHANFSR GO BUILD CHANNEL PROGRAM & RETRY @VM08812 00663000 B RETRY1 GO RETRY OPERATION @VM08812 00664000 GDCLN EQU * @VM08812 00665000 ICM R5,1,IOERWRK GET REPOSITION COUNT @VM08812 00666000 BNZ RETRY IF NOT ZERO, GO RETRY OPERATION @VM08812 00667000 TM IOERFLG1,IOERORA IS OPPOSITE RECOVERY ACTIVE @VM08812 00668000 BO ENTRYCLN YES, GO MOVE TAPE FORWARD @VM08812 00669000 TM IOERFLG1,IOERBSR WAS TAPE DRIVE BACKSPACING @VM08812 00670000 BZ ENTRYFSR NO, GO BUILD CCWS FOR RESTART @VM08812 00671000 MVI IOERWRK,4 SET UP 4 SPACES FORWARD @VM08812 00672000 TM IOERFLG2,IOERRBK IS THIS A READ BACKWARD CMD @VM08812 00673000 BZ *+8 NO, BYPASS @VM08812 00674000 MVI IOERWRK,5 SET UP 5 SPACES FORWARD @VM08812 00675000 BAL R5,CHANFSR GO BUILD CHANNEL PROGRAM & RETRY @VM08812 00676000 B RETRY1 GO RETRY OPERATION @VM08812 00677000 ENTRYFSR EQU * @VM08812 00678000 NI IOERFLG1,X'FF'-(IOERFSR+IOERCLN) RESET FLAGS @VM08812 00679000 BAL R5,CHANTIC SET UP TIC CCW WITH RESTART ADDR @VM08812 00680000 LA R5,IOERADR GET ADDR OF TRACK-IN-ERROR DATA @VM08812 00681000 STCM R5,7,1(R1) PUT DATA ADDRESS IN TIE CCW @VM08812 00682000 L R5,IOBCAW GET ADDRESS OF CCW STRING @VM08812 00683000 STCM R5,7,9(R1) PUT CCW STRING ADDRESS IN TIC CCW@VM08812 00684000 B RETRY1 GO RETRY OPERATION @VM08812 00685000 ENTRYCLN EQU * @VM08812 00686000 TM IOERFLG1,IOERBSR IS TAPE DRIVE BACKSPACING @VM08812 00687000 BZ ENTRYRDR NO, CHECK DATA SUPPRESS FLAG @VM08812 00688000 MVI IOERWRK,5 SET UP 5 SPACES FORWARD @VM08812 00689000 TM IOERFLG2,IOERRBK IS THIS A READ BACKWARD CMD @VM08812 00690000 BZ *+8 NO, BYPASS @VM08812 00691000 MVI IOERWRK,4 SET UP 4 SPACES FORWARD @VM08812 00692000 BAL R5,CHANFSR GO BUILD CHANNEL PROGRAM & RETRY @VM08812 00693000 B RETRY1 GO RETRY OPERATION @VM08812 00694000 ENTRYRDR EQU * @VM08812 00695000 NI IOERFLG1,X'FF'-(IOERFSR+IOERBSR+IOERCLN) RESET @VM08812 00696000 * FLAGS 00697000 TM IOERFLG1,IOERSUPP IS IT A READ WITH SUPPRESS @VM08812 00698000 * DATA 00699000 BO ENTRYORA YES, CHECK FOR OPPOSITE RECOVERY @VM08812 00700000 BAL R5,CHANCOPY BUILD CHANNEL PROGRAM WITH SAVE @VM08812 00701000 * CCW 00702000 LA R5,IOERADR GET TRACK-IN-ERROR DATA ADDRESS @VM08812 00703000 STCM R5,7,1(R1) PUT TIE DATA ADDRESS IN CCW @VM08812 00704000 ICM R3,15,IOBIOER IS THIS A SECOND IOERBLOK @VM08812 00705000 BZ RETRY1 NO, GO RETRY OPERATION @VM08812 00706000 MVC IOERADR-IOERBLOK(1,R7),IOERDATA-IOERBLOK+2(R3) @VM08812 00707000 * GET TRACK-IN-ERROR DATA 00708000 B RETRY1 GO RETRY OPERATION @VM08812 00709000 ENTRYRTY EQU * @VM08812 00710000 TM IOERFLG1,IOERORA+IOERSUPP @VM08812 00711000 BNO ENTRYNSK NO, CHECK OPPOSITE RECOVERY @VM08812 00712000 * ACTIVE 00713000 TM IOERFLG2,IOERRBK IS THIS A READ BACKWARD CMD @VM08812 00714000 BZ TSTROBS NO, CHECK OPPOSITE RECOVERY @VM08812 00715000 * ACTIVE 00716000 TM IOERFLG1,IOERORA+IOERSUPP+IOERBSR @VM08812 00717000 BNO TSTUNIT NO, CHECK FOR SECOND IOERBLOK @VM08812 00718000 LABELIOB EQU * @VM08812 00719000 MVI IOERNUM,RECERR INDICATE RECOVERY ERROR MESSAGE @VM08812 00720000 ICM R3,15,IOBIOER IS THERE A SECOND IOERBLOK @VM08812 00721000 BNZ CALLWTR1 NO, GO WRITE ERROR MESSAGE @VM08812 00722000 NI IOERFLG1,X'FF'-(IOERFSR+IOERBSR) RESET FLAGS @VM08812 00723000 B OPPREV40 GO CHECK FOR OPPOSITE RECOVERY @VM08812 00724000 TSTROBS EQU * @VM08812 00725000 TM IOERFLG1,IOERORA+IOERSUPP+IOERFSR @VM08812 00726000 BO LABELIOB YES, CHECK FOR SECOND IOERBLOK @VM08812 00727000 TSTUNIT EQU * @VM08812 00728000 ICM R3,15,IOBIOER IS THERE A SECOND IOERBLOK @VM08812 00729000 BNZ SPFWD YES, GO CHECK ERROR COUNT @VM08812 00730000 LH R5,IOBCSW+6 GET RESIDUAL COUNT @VM08812 00731000 LTR R5,R5 IS RESIDUAL COUNT ZERO @VM08812 00732000 BNZ TSTWLR NO, GET FAILING CCW ADDRESS @VM08812 00733000 MVI IOERNUM,DATAER INDICATE DATA CHECK MESSAGE @VM08812 00734000 TM IOBCSW+5,IL IS INCORRECT LENGTH ACTIVE @VM08812 00735000 BO CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00736000 TSTWLR EQU * @VM08812 00737000 BAL R5,GETCUCCW GET FAILING CCW ADDRESS @VM08812 00738000 LH R5,6(R4) GET CCW COUNT @VM08812 00739000 S R5,F1 SUBTRACT ONE FROM CCW COUNT @VM08812 00740000 SH R5,IOBCSW+6 SUBTRACT RESIDUAL COUNT FROM @VM08812 00741000 * CCW COUNT 00742000 L R1,IOERLOC GET ALLOCATED STORAGE ADDRESS @VM08812 00743000 MVC 28(1,R1),4(R4) RESTORE CCW FLAGS @VM08812 00744000 L R4,24(R1) GET DATA ADDRESS FROM CCW @VM08812 00745000 AR R4,R5 ADD COUNT TO DATA ADDRESS @VM08812 00746000 ST R4,24(R1) PUT DATA ADDRESS IN CCW @VM08812 00747000 NI IOERFLG1,X'FF'-IOERSUPP RESET SUPPRESS FLAG @VM08812 00748000 SPFWD EQU * @VM08812 00749000 MVI IOERNUM,DATAER INDICATE DATA CHECK MESSAGE @VM08812 00750000 CLC IOBRCNT,=H'81' ERROR COUNT REACH 81 @VA13107 00751100 BE FORWARD IF OVER 81, GO FORWARD ONE RECORD@VA13107 00751200 BH CALLWTR1 IF OVER 81, WRITE ERROR RECORD @VA13107 00751300 ICM R3,15,IOBIOER IS THERE A SECOND IOERBLOK @VM08812 00753000 BZ CHANPRG1 NO, BUILD CHANNEL PROG. & RETRY @VM08812 00754000 MVC IOERADR-IOERBLOK(1,R7),IOERDATA-IOERBLOK+2(R3) @VM08812 00755000 * GET TRACK-IN-ERROR DATA 00756000 B CHANPRG1 GO BUILD CHANNEL PROGRAM & RETRY @VM08812 00757000 FORWARD DS 0H @VA13107 00757100 LH R4,IOBRCNT LOAD ERROR COUNT @VA13107 00757200 LA R4,1(R4) AND INCREASE BY 1 @VA13107 00757300 STH R4,IOBRCNT STORE RESULT IN IOBRCNT @VA13107 00757400 BAL R5,CHANFSR SET UP FORWARD SPACE CCW @VA13107 00757500 NI IOERFLG1,X'FF'-IOERFSR NO FORWARD FLAG @VA13107 00757600 B RETRY1 GO RERTY OPERATION @VA13107 00757700 ENTRYNSK EQU * @VM08812 00758000 TM IOERFLG2,IOERRBK IS THIS A READ BACKWARD CMD @VM08812 00759000 BZ TSTFLAG1 NO, CHECK FOR OPPOSITE RECOVERY @VM08812 00760000 TM IOERFLG1,IOERORA+IOERBSR IS OPPOSITE RECOVERY @VM08812 00761000 * & BACKSPACING ACTIVE 00762000 BO ENTRNSK1 YES, CLEAR SPACE FLAGS @VM08812 00763000 TSTORA EQU * @VM08812 00764000 ICM R3,15,IOBIOER IS THERE A SECOND IOERBLOK @VM08812 00765000 BNZ *+8 YES, GET TRACK-IN-ERROR DATA @VM08812 00766000 OI IOERFLG1,IOERVLD SET RECORD VALID FLAG @VM08812 00767000 B SPFWD GO RESTORE TRACK-IN-ERROR DATA @VM08812 00768000 * & RETRY OPERATION 00769000 TSTFLAG1 EQU * @VM08812 00770000 TM IOERFLG1,IOERORA+IOERFSR IS OPPOSITE RECOVERY @VM08812 00771000 * & FORWARD SPACE ACTIVE 00772000 BNO TSTORA NO, CHECK FOR SECOND IOERBLOK @VM08812 00773000 ENTRNSK1 EQU * @VM08812 00774000 NI IOERFLG1,X'FF'-(IOERFSR+IOERBSR) RESET FLAGS @VM08812 00775000 MVI IOERNUM,RECERR INDICATE RECOVERY ERROR MESSAGE @VM08812 00776000 ICM R3,15,IOBIOER IS THER A SECOND IOERBLOK @VM08812 00777000 BNZ CALLWTR1 YES, GO WRITE ERROR MESSAGE @VM08812 00778000 TM IOERFLG1,IOERVLD IS THIS A VALID RECORD @VM08812 00779000 BO CCTEST CHECK FOR COMMAND CHAIN @VA06204 00780000 L R1,IOERLOC GET ALLOCATED STORAGE ADDRESS @VM08812 00781000 MVC 0(8,R1),24(R1) RESTORE SAVE CCW @VM08812 00782000 B RETRY1 GO RETRY OPERATION @VM08812 00783000 CCTEST EQU * @VA06204 00784000 L R1,IOERLOC GET AUX STORAGE ADDRESS @VA06204 00785000 SR R9,R9 @VA06204 00786000 ICM R9,7,41(R1) WAS THIS R.O.R. WITH CC ?? @VA06204 00787000 BZ FINISH NO THATS FINE @VA06204 00788000 NI IOERFLG1,255-(IOERORA+IOERFSR+IOERBSR+IOERCLN+IOERVLD) 00789000 * RESET THE FLAGS 00790000 XC 40(4,R1),40(R1) CLEAR R.O.R. AND CC @VA06204 00791000 LR R1,R9 @VA06204 00792000 B RETRY1 @VA06204 00793000 CHANPRG EQU * @VM08812 00794000 BAL R5,CHANFSR SET UP FORWARD SPACE CCW @VM08812 00795000 TM IOERFLG2,IOERRBK IS THIE A READ BACKWARD CMD @VM08812 00796000 BO RETRY1 YES, GO RETRY OPERATION @VM08812 00797000 BAL R5,CHANBSR SET UP BACKSPACING CCW @VM08812 00798000 B RETRY1 GO RETRY OPERATION @VM08812 00799000 CHANPRG1 EQU * @VM08812 00800000 BAL R5,CHANBSR SET UP BACKSPACING CCW @VM08812 00801000 TM IOERFLG2,IOERRBK IS THIS A READ BACKWARD CMD @VM08812 00802000 BO RETRY1 YES, GO RETRY OPERATION @VM08812 00803000 BAL R5,CHANFSR SET UP FORWARD SPACE CCW @VM08812 00804000 RETRY1 EQU * @VM08812 00805000 MVC IOBRCAW(1),IOBCAW GET PROTECTION KEY @VA01599 00806000 STCM R1,7,IOBRCAW+1 SAVE RESTART CCW ADDRESS @VA01599 00807000 RETRY EQU * @VM08812 00808000 OI IOBFLAG,IOBRSTRT TURN ON RESTART FLAG FOR IOS @VM08812 00809000 BAL R9,CKIOB FRET SECOND IOERBLOK @VM08812 00810000 B EXIT4 GO RETURN TO IOS @VM08812 00811000 NOCCW EQU * @VM08812 00812000 MVI IOERNUM,FALSE INDICATE NOT/KNOWN MESSAGE @VA03892 00813000 B NOSTAT CHECK FOR PRINTING ERROR MESSAGE @VA02055 00814000 CALLWTR1 EQU * @VM08812 00815000 OI IOERIND3,IOERCAN+IOERINFO TURN ON CANCEL & @VM08812 00816000 * INFORMATION FLAG 00817000 CALLWTR EQU * @VM08812 00818000 BAL R9,CKIOB FRET SECOND IOERBLOK @VM08812 00819000 L R0,=C'TAP ' IDENTIFICATION OF MODULE @VM08812 00820000 OI IOERFLG2,IOERMSW SET MSG WRITER ACTIVE @VA04628 00821000 CALL DMKMSWR,AFFINITY @V4075A0 00822000 NI IOERFLG2,X'FF'-IOERMSW CLEAR MSG WRITER FLAG @VA04628 00823000 TM IOERFLG1,IOERPEND WAS INTERVENTION REQUEST SET @VM08812 00824000 BZ NOTINT NO, CHECK OPERATOR RESPONSE @VM08812 00825000 NI IOBFLAG,X'FF'-IOBRSTRT TURN OFF RESTART FLAG @VM08812 00826000 L R1,IOERCPEX SEE IF DEVICE END I/O TO REDRIVE @VA12941 00827000 LTR R1,R1 ANY CPEXBLOKS ON QUEUE @VA12941 00827100 BZ TAPEXIT4 NO DE I/O TO REDRIVE @VA12941 00827200 UNSTKNXT L R5,CPEXFPNT-CPEXBLOK(R1) NEXT CPEX ON CHAIN @VA12941 00827300 CALL DMKSTKCP STACK CPEXBLOK @VA12941 00827400 LTR R5,R5 ANY MORE ON CHAIN @VA12941 00827500 BZ CLEARPNT NO, ZERO ANCHOR AND EXIT @VA12941 00827600 LR R1,R5 CPEXBLOK ADDRESS TO R5 @VA12941 00827700 B UNSTKNXT STACK THEM ALL @VA12941 00827800 CLEARPNT ST R5,IOERCPEX CLEAR ANCHOR @VA12941 00827900 TAPEXIT4 B EXIT4 EXIT @VA12941 00828000 NOTINT EQU * @VM08812 00830000 TM IOERIND4,IOERSTRT WAS OPERATOR RESPONSE (RETRY) @VM08812 00831000 BZ IGNORE NO, CHECK FOR IGNORE AND CANCEL @VM08812 00832000 MVC IOBRCNT,F1+2 SET ERROR COUNT TO ONE @VM08812 00833000 TRYAGAIN EQU * @VM08812 00834000 MVC IOBRCAW,IOBCAW SET UP RESTART CAW @VM08812 00835000 B RETRY GO RETRY OPERATION 00836000 IGNORE EQU * @VM08812 00837000 OI IOBSTAT,IOBFATAL SET I/O FATAL FLAG @VM08812 00838000 TM IOBFLAG,IOBCP IS THIS CP GENERATED ?? @VA03757 00839000 BO SDREXIT YES, BRANCH @VA03757 00840000 TM IOERIND4,IOERIGNR WAS OPERATOR RESPONSE (IGNORE)@VM08812 00841000 BZ EXIT1 NO, GO FRET SECOND IOERBLOK @VM08812 00842000 FINISH EQU * @VM08812 00843000 NI IOBSTAT,X'FF'-IOBFATAL RESET I/O FATAL FLAG @VM08812 00844000 EXIT1 EQU * @VM08812 00845000 BAL R9,CKIOB FRET SECOND IOERBLOK @VM08812 00846000 EXIT2 EQU * @VM08812 00847000 NI IOBFLAG,X'FF'-(IOBRSTRT+IOBERP) RESET ERP & @VM08812 00848000 * RESTART FLAG 00849000 EXIT3 EQU * @VM08812 00850000 BAL R9,FRETPTR FRET ALLOCATED STORAGE @VM08812 00851000 EXIT4 EQU * @VM08812 00852000 EXIT RETURN TO IOS @VM08812 00853000 SPACE 4 00854000 CKIOB EQU * @VM08812 00855000 ICM R1,15,IOBIOER IS THERE A SECOND IOERBLOK @VM08812 00856000 BZ NOTUSED NO, RETURN TO IN LINE CODE @VM08812 00857000 TM IOERCSW+5-IOERBLOK(R1),IFCC+CCC+CDC IS CHANNEL @VM08812 00858000 * ERROR INDICATED 00859000 BZ CKEND NO, GO FRET IOERBLOK @VM08812 00860000 LR R3,R1 SAVE SECOND IOERBLOK ADDRESS @VM08812 00861000 L R1,IOERCCRA-IOERBLOK(R3) CHANNEL REC ADDR @V508690 00862000 L R0,IOERCCRL-IOERBLOK(R3) CHANNEL REC LENGTH @V508690 00863000 CALL DMKFRET RELEASE STORAGE FOR RECORD @VM08812 00864000 LR R1,R3 RESTORE SECOND IOERBLOK ADDRESS @VM08812 00865000 CKEND EQU * @VM08812 00866000 LA R0,IOERSIZE GET SIZE IN DOUBLEWORDS FOR @VM08812 00867000 * IOERBLOK 00868000 AH R0,IOEREXT-IOERBLOK(,R1) ADD EXTRA LENGTH @VM08812 00869000 CALL DMKFRET RELEASE STORAGE FOR IOERBLOK @VM08812 00870000 NOTUSED EQU * @VM08812 00871000 MVC IOBIOER,ZEROES CLEAR POINTER TO IOERBLOK @VM08812 00872000 BR R9 RETURN TO IN LINE CODE @VM08812 00873000 ********************************************************* 00874000 SPACE 4 00875000 FRETPTR EQU * @VM08812 00876000 SR R0,R0 CLEAR REGISTER ZERO @VM08812 00877000 ICM R0,3,IOERDW GET ALLOCATED SIZE IN DOUBLEWORDS@VM08812 00878000 BCR 8,R9 IF ZERO, DON'T FRET STORAGE @VM08812 00879000 L R1,IOERLOC GET ADDRESS OF ALLOCATED STORAGE @VM08812 00880000 CALL DMKFRET RELEASE STORAGE @VM08812 00881000 SR R0,R0 CLEAR REGISTER 0 @VM08812 00882000 ST R0,IOERLOC CLEAR ADDR OF ALLOCATED STORAGE @VM08812 00883000 STH R0,IOERDW CLEAR SIZE AREA @VM08812 00884000 BR R9 RETURN TO IN LINE CODE @VM08812 00885000 ****************************************************************** 00886000 SPACE 4 00887000 GETCUCCW EQU * @VM08812 00888000 L R4,IOERCSW GET FAILING CCW ADDRESS PLUS 8 @VM08812 00889000 LA R4,0(R4) CLEAR HIGH ORDER BYTE @VM08812 00890000 S R4,F8 GET FAILING CCW ADDRESS @VM08812 00891000 BM TESTCCW TEST CCW ADDRESS @VA12173 00892100 BR R5 RETURN TO INLINE CODE @VA12173 00892200 TESTCCW DS 0H @VA12173 00892300 L R4,IOBMISC2 GET SAVE AREA BASE ADDRESS @VA12173 00892400 L R4,SAVEWRK8-SAVERETN(R4) GET SAVED CSW @VA12173 00892500 LA R4,0(R4) CLEAR HIGH ORDER BYTE @VA12173 00892600 S R4,F8 GET FAILING CCW ADDRESS @VA12173 00892700 BM NOCCW IF STILL NEG WRITE ERR. MSG. @VA12173 00892800 BR R5 RETURN TO INLINE CODE @VA12173 00892900 ****************************************************************** 00894000 SPACE 4 00895000 CTLWRTRD EQU * @VM08812 00896000 TM 0(R4),X'03' IS THIS A CONTROL CMD CCW @VM08812 00897000 BO TRYAGAIN YES, GO RETRY OPERATION @VM08812 00898000 CLI 0(R4),X'04' IS THIS A SENSE CMD CCW @VA01599 00899000 BE TRYAGAIN YES, GO RETRY OPERATION @VA01599 00900000 TM 0(R4),X'01' IS THIS A WRITE CMD CCW @VM08812 00901000 BO WRTREP YES, GO REPOSITION TAPE DRIVE @VM08812 00902000 BR R5 RETURN TO IN LINE CODE @VM08812 00903000 ***************************************************************** 00904000 SPACE 4 00905000 DATCHAIN EQU * @VM08812 00906000 L R2,IOBCAW GET BEGINNING OF CCW STRING @VM08812 00907000 LA R2,0(,R2) CLEAR HIGH ORDER BYTE (KEY) @VA03809 00908000 L R0,FFS FOR RCWHEAD COMPARE @VA04842 00909000 SLR R9,R9 CLEAR RESTART REGISTER @VA04842 00910000 ST R1,SAVEWRK1 SAVE REG 1 @VA04842 00911000 ST R4,SAVEWRK4 AND REG 4 @VA04842 00912000 LA CCWREG,0(,CCWREG) MAKE SURE HI-ORDER IS ZERO @VA04842 00913000 CHKZERO CLI 0(CCWREG),X'00' CHECK CCW OPCODE FOR ZERO @VA04842 00914000 BE CHKFIRST IT IS...BACK UP TO FIND NON-ZERO @VA04842 00915000 LR R1,CCWREG LOOK AT ... @VA04842 00916000 S R1,F8 PREVIOUS CCW @VA04842 00917000 CH R0,4(,R1) IS THIS HEAD OF RCWTASK? @VA04842 00918000 BE CHKCD IF SO, WE MAY BE IN TROUBLE @VA04842 00919000 B BYPASSW NOT HEAD, VALID RESTART CCW @VA04842 00920000 SPACE , @VA04842 00921000 CHKFIRST S CCWREG,F8 BACK UP TO PREVIOUS CCW @VA04842 00922000 B CHKZERO KEEP LOOKING FOR NON-ZERO OPCODE @VA04842 00923000 SPACE , @VA04842 00924000 CHKCD S R2,F16 POINT AT VERY FIRST RCWTASK @VA04842 00925000 CHKCD1 LH R0,10(,R2) GET NUMBER OF CCWS IN RCWTASK @VA04842 00926000 LR R1,R2 SAVE ADDR OF RCWTASK IN R1 @VA04842 00927000 LA R2,8(,R2) READY FOR FIRST CCW IN RCWTASK @VA04842 00928000 NEXTCCW LA R2,8(,R2) LOOK AT NEXT CCW @VA04842 00929000 CLR R2,CCWREG HAVE WE REACHED OUR ORIGINAL CCW?@VA04842 00930000 BE CHKCCW2 YES, THAT'S ALL WE NEED TO DO @VA04842 00931000 CLI 0(R2),CDTIC IS IT A DATA CHAINING TIC? @VA04842 00932000 BE CHKCCW YES, SEE IF IT'S GOING TO OUR CCW@VA04842 00933000 CLI 0(R2),X'08' MAYBE A REGULAR TIC @VA04842 00934000 BE NEXTCCW1 YES, GO CLEAR RESTART REG @VA04842 00935000 TM 4(R2),CD DATA CHAINING? @VA04842 00936000 BO MAYBE YES, GO SEE IF START OF NEW CHAIN@VA04842 00937000 NEXTCCW1 SLR R9,R9 CLEAR R9 TO SAY NOT IN DATA CHAIN@VA04842 00938000 B CHKCCW1 KEEP SCANNING RCWTASK @VA04842 00939000 SPACE , @VA04842 00940000 CHKCCW CLM CCWREG,B'0111',1(R2) CDTIC TO OUR CCW? @VA04842 00941000 BE DATACCW YES, WE HAVE START OF CHAIN IN R9@VA04842 00942000 B CHKCCW1 NO, KEEP SCANNING RCWTASK @VA04842 00943000 SPACE , @VA04842 00944000 MAYBE LTR R9,R9 SEE IF A CHAIN ALREADY STARTED @VA04842 00945000 BNZ CHKCCW1 YES, KEEP START ADDR IN R9 @VA04842 00946000 LR R9,R2 NO, START NEW CHAIN @VA04842 00947000 CHKCCW1 BCT R0,NEXTCCW LOOP THROUGH RCWTASK @VA04842 00948000 L R2,0(,R1) WHEN DONE WITH THIS, GO TO NEXT @VA04842 00949000 LTR R2,R2 IS THERE ANOTHER RCWTASK? @VA04842 00950000 BNZ CHKCD1 YES, GO EXAMINE IT @VA04842 00951000 CHKCCW2 LTR R9,R9 EXAMINE START-OF-CHAIN POINTER @VA04842 00952000 BZ BYPASSW WE WEREN'T DATA CHAINING - SKIP @VA04842 00953000 DATACCW LR CCWREG,R9 PUT START OF CHAIN IN CCWREG @VA04842 00954000 BYPASSW LR R2,CCWREG ADDR OF START OF DATA CHAIN IN R2@VA04842 00955000 L R1,SAVEWRK1 RESTORE REG 1 @VA04842 00956000 L R4,SAVEWRK4 AND REG 4 @VA04842 00957000 BR R5 RETURN TO IN LINE CODE @VM08812 00958000 ************************************************************ 00959000 SPACE 4 00960000 CHANFSR EQU * @VM08812 00961000 L R1,IOERLOC GET ALLOCATED STORAGE ADDRESS @VM08812 00962000 MVC 0(8,R1),FWDSPACE MOVE FORWARD SPACE CCW IN AREA @VM08812 00963000 MVC 8(8,R1),NOP MOVE NO-OP CCW IN AREA @VM08812 00964000 NI IOERFLG1,X'FF'-IOERBSR RESET BACKSPACING FLAG @VM08812 00965000 OI IOERFLG1,IOERFSR SET FORWARD SPACE FLAG @VM08812 00966000 BR R5 RETURN TO IN LINE CODE @VM08812 00967000 ***************************************************************** 00968000 SPACE 4 00969000 CHANBSR EQU * @VM08812 00970000 L R1,IOERLOC GET ALLOCATED STORAGE ADDRESS @VM08812 00971000 MVC 0(8,R1),BKSPACE MOVE BACKSPACING CCW IN AREA @VM08812 00972000 MVC 8(8,R1),NOP MOVE NO-OP CCW IN AREA @VM08812 00973000 NI IOERFLG1,X'FF'-IOERFSR RESET FORWARD FLAG @VM08812 00974000 OI IOERFLG1,IOERBSR SET BACKSPACING FLAG @VM08812 00975000 BR R5 RETURN TO IN LINE CODE @VM08812 00976000 **************************************************************** 00977000 SPACE 4 00978000 DEVRTN EQU * @VM08812 00979000 CLI RDEVTYPE,TYP3410 IS THIS A 3410 DEVICE @VM08812 00980000 BE 4(R5) YES, RETURN TO IN LINE CODE @VM08812 00981000 CLI RDEVTYPE,TYP3420 IS THIS A 3420 DEVICE @VM08812 00982000 BE 4(R5) YES, RETURN TO IN LINE CODE @VM08812 00983000 BR R5 RETURN TO IN LINE CODE @VM08812 00984000 ***************************************************************** 00985000 SPACE 4 00986000 CHANTIC EQU * @VM08812 00987000 L R1,IOERLOC GET ADDRESS OF ALLOCATED AREA @VM08812 00988000 MVC 0(8,R1),TIE TRACK-IN-ERROR CCW IN AREA @VM08812 00989000 MVC 8(8,R1),TIC MOVE TIC CCW IN AREA @VM08812 00990000 BR R5 RETURN TO IN LINE CODE @VM08812 00991000 ***************************************************************** 00992000 SPACE 4 00993000 CHANCOPY EQU * @VM08812 00994000 L R1,IOERLOC GET ADDRESS OF ALLOCATED AREA @VM08812 00995000 MVC 0(8,R1),TIE MOVE TRACK-IN-ERROR CCW IN AREA @VM08812 00996000 MVC 8(8,R1),24(R1) MOVE SAVE CCW IN AREA @VM08812 00997000 BR R5 RETURN TO IN LINE CODE @VM08812 00998000 ***************************************************************** 00999000 SPACE 1 01000000 SDREXIT EQU * @VA03757 01001000 TM IOERIND4,IOERIGNR WAS OPERATOR RESPONSE(IGNORE) @VA03757 01002000 BZ SDREXIT1 NO, GO FRET SECOND IOERBLOK @VA03757 01003000 NI IOBSTAT,X'FF'-IOBFATAL RESET I/O FATAL FLAG @VA03757 01004000 SDREXIT1 EQU * @VA03757 01005000 BAL R9,CKIOB FRET SECOND IOERBLOK @VA03757 01006000 SDREXIT2 EQU * @VA03757 01007000 NI IOBFLAG,X'FF'-(IOBRSTRT+IOBERP) RESET FLAGS @VA03757 01008000 BAL R9,FRETPTR FRET ALLOCATED STORAGE @VA03757 01009000 SDRPROC EQU * @VA03757 01010000 SLR R1,R1 CLEAR PARAMETER REG @VA03757 01011000 TM RDEVTYPE,TYP2401+TYP2415+TYP2420 2400 ?? @VA03757 01012000 BZ GOCOUNT NO, NOT 2400 @VA03757 01013000 LA R0,PARMLEN GET LENGTH OF PARAMETER LIST @VA03757 01014000 CALL DMKFREE GET STORAGE FOR PARAMETER LIST @VA03757 01015000 MVC 0(16,R1),PARM2400 GET PARM LIST FOR UPDATE @VA03757 01016000 TM IOERFLG3,IOERREAD ERROR ON READ ?? @VA03757 01017000 BZ GOCOUNT NO, GO TO STATISTICAL UPDATE @VA03757 01018000 TM IOERFLG1,IOERORA OPPOSITE RECOVERY ACTION @VA03757 01019000 BZ GOCOUNT NO, GO TO STATISTICAL UPDATE @VA03757 01020000 MVI 14(R1),X'2F' TURN ON DEVICE DEPENDENT COUNTER @VA03757 01021000 GOCOUNT EQU * @VA03757 01022000 CALL DMKIOEST GO TO STATISTICAL COUNTER UPDATE @VA03757 01023000 LTR R1,R1 WAS A PARAMETER LIST PASSED ?? @VA03757 01024000 BZ NOPARM NO @VA03757 01025000 LA R0,PARMLEN GET PARAMETER LIST LENGTH @VA03757 01026000 CALL DMKFRET GO RELEASE STORAGE USED FOR LIST @VA03757 01027000 NOPARM EQU * @VA03757 01028000 B EXIT4 EXIT TO IOS @VA03757 01029000 EJECT 01030000 **************************************************************** 01031000 EQUI1 EQU X'10' EQUIPMENT CHECK @VM08812 01032000 BUSCE EQU X'20' BUS OUT CHECK @VM08812 01033000 INTRV EQU X'40' INTERVENTION CONDITION @VM08812 01034000 TAUST EQU X'20' TAU UNIT STATUS 'B' INDICATOR @VM08812 01035000 COMRJ EQU X'80' COMMAND REJECT @VM08812 01036000 OVERN EQU X'04' OVERRUN CONDITION @VM08812 01037000 LDPONT EQU X'08' BACKSPACE AT LOAD POINT @VM08812 01038000 DATACK EQU X'08' DATA CHECK ERROR @VM08812 01039000 NOISRECD EQU X'80' NOISE RECORD @VM08812 01040000 TRACK7 EQU X'10' 7 TRACK TAPE DRIVE @VM08812 01041000 DCMODE EQU X'10' DRIVE IN DC MODE @VM08812 01042000 SECESE EQU X'08' SECURITY ERASE COMMAND @VM08812 01043000 DATACONV EQU X'01' DATA CONVERTOR @VM08812 01044000 NOTCAPA EQU X'01' NOT CAPABLE FLAG @VM08812 01045000 PEBURST1 EQU X'10' P. E. BURST CHECK @VM08812 01046000 ***************************************************************** 01047000 SPACE 4 01048000 ***************************************************************** 01049000 REJ EQU 0 COMMAND REJECT @VM08812 01050000 INTREQU EQU 1 INTERVENTION REQUEST @VM08812 01051000 BUSOUTCK EQU 2 BUSOUT CHECK @VM08812 01052000 EQUIP EQU 3 EQUIPMENT CHECK @VM08812 01053000 DATAER EQU 4 DATA CHECK @VM08812 01054000 OVERERR EQU 5 OVERRUN CHECK @VM08812 01055000 PERM EQU 8 PERMANENT ERROR @VM08812 01056000 CONV EQU 10 CONVERT CHECK @VM08812 01057000 COMPAT EQU 11 COMPAT CHECK @VM08812 01058000 LDPNT EQU 12 LOAD POINT @VM08812 01059000 PROTECT EQU 13 FILE PROTECT @VM08812 01060000 BDSNS EQU 16 BAD SENSE INFORMATION @VM08812 01061000 FALSE EQU 17 NOT/KNOWN @VM08812 01062000 RECERR EQU 18 RECOVERY ERROR @VM08812 01063000 PEBURST EQU 19 P.E. BURST @VM08812 01064000 CHANERR EQU 20 CHANNEL ERROR @VM08812 01065000 NODEV EQU 21 NO DEVICE @VM08812 01066000 ERGFAIL EQU 22 ERASE CHECK @VM08812 01067000 CTLCMD EQU 23 CONTROL CHECK @VM08812 01068000 CCWAREA EQU 6 NUMBER OF DOUBLE WORDS FOR @VA06204 01069000 * ALLOCATED STORAGE 01070000 PARMLEN EQU 2 NO OF DOUBLEWORDS IN PARM LIST @VA03757 01071000 CDTIC EQU X'18' DATA-CHAINING TIC OPCODE @VA04842 01072000 CCWREG EQU 4 NO COMMENT @VA04842 01073000 *************************************************************** 01074000 ******* THE ABOVE CODES MUST BE IDENTICAL TO THE **************** 01075000 ******* CODES IN THE MESSAGE WRITER (DMKMSW) **************** 01076000 **************************************************************** 01077000 EJECT 01078000 **************************************************************** 01079000 DS 0D @VM08812 01080000 REWIND DC X'07',AL3(0),X'60',AL3(1) REWIND CCW @VM08812 01081000 NOP DC X'03',AL3(0),X'20',AL3(1) NO-OPERATION CCW @VM08812 01082000 ERASE DC X'17',AL3(0),X'60',AL3(1) ERASE GAP CCW @VM08812 01083000 BKSPACE DC X'27',AL3(0),X'60',AL3(1) BACKSPACING CCW @VM08812 01084000 TIE DC X'1B',AL3(0),X'60',AL3(1) TRACK-IN-ERRO CCW @VM08812 01085000 TIC DC X'08',AL3(0),X'60',AL3(0) TRANFER IN CONTROL CCW@VM08812 01086000 FWDSPACE DC X'37',AL3(0),X'60',AL3(1) FORWARD SPACE CCW @VM08812 01087000 PARM2400 DC X'04040102030506073031323334100F3F' @VA03757 01088000 SPACE 2 01089000 ******************************************************************** 01090000 *. 01091000 * SUBROUTINE NAME - 01092000 * 01093000 * DMKTAPRL 01094000 * 01095000 * FUNCTION - 01096000 * 01097000 * TO ISSUE RELEASE CCW TO TAPE DEVICE TO DETERMINE IF 01098000 * HARDWARE HAS 2/4 CHANNEL SWITCH FEATURE. 01099000 * 01100000 * DMKTAPRL IS CALLED FROM DMKCPS (VARY) WHEN DEVICE IS VARIED 01101000 * ONLINE. 01102000 * 01103000 * OPERATION - 01104000 * 01105000 * 1. ACQUIRE WORK AREA (2 DWDS.). 01106000 * 2. ACQUIRE IOBLOK 01107000 * 3. ACQUIRE CPEXBLOK 01108000 * 4. ISSUE TIO TO TAPE DEVICE. 01109000 * 5. ISSUE RELEASE CCW TO TAPE DEVICE. 01110000 * 6. IF TAPE HAS 2/4 CHANNEL SWITCH FEATURE, TURN ON 01111000 * FTRRSRL BIT IN THE RDEVFTR FIELD. 01112000 * 7. RELEASE ALL ACQUIRED STORAGE. 01113000 * 8. GO OFF TO THE DISPATCHER. 01114000 * 01115000 * MESSAGES - 01116000 * 01117000 * NONE 01118000 EJECT 01119000 ENTRY DMKTAPRL @VA07763 01120000 DMKTAPRL DS 0H @VA07763 01121000 USING *,12 @VA07763 01122000 SL R12,=A(DMKTAPRL-DMKTAP) @VA07763 01123000 USING DMKTAP,R12 @VA07763 01124000 * DMKTAPRL WILL PERFORM RELEASE CCW TO TAPE FOR PURPOSES 01125000 * OF DETERMINING WHEN HARDWARE HAS 2/4 CHANNEL SWITCH. 01126000 * R2 CONTAINS DEVICE ADDRESS 01127000 * R6, R7, R8 CONTAIN ADDRESS OF RCHBLOK, RCUBLOK, RDEVBLOK, 01128000 * RESPECTIVELY. 01129000 SPACE 01130000 USING RDEVBLOK,R8 @V407466 01131000 LA R0,TAPRLSZ SIZE OF RELEASE DATA FIELD IN @V407466 01132000 * DWDS. 01133000 CALL DMKFREE ACQUIRE 2 DOUBLEWORDS @V407466 01134000 LR R9,R1 ADDRESS OF STORAGE TO R9 @V407466 01135000 USING TAPREL,R9 ADDRESSABILITY @V407466 01136000 XC TAPREL(TAPRLSZ*8),TAPREL CLEAR BLOCK @V407466 01137000 MVC RELCCW(TAPEND-TAPCCWRL),TAPCCWRL MOVE RELEASE @V407466 01138000 * CCW 01139000 LA R1,RELCCW POINT TO REL. CCW @V407466 01140000 L R15,0(R1) RESOLVE CCW ADDRESS IN WORK AREA @V407466 01141000 ALR R15,R9 PLUS WORK AREA ADDRESS @V407466 01142000 ST R15,0(R1) RESTORE ADDRESS @V407466 01143000 SPACE 01144000 * ACQUIRE IOBLOK FOR CALL TO DMKIOSQR 01145000 LA R0,IOBSIZE SIZE OF IOBLOK @V407466 01146000 CALL DMKFREE ACQUIRE BLOCK @V407466 01147000 LR R10,R1 ADDRESS TO R10 @V407466 01148000 USING IOBLOK,R10 @V407466 01149000 XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR BLOCK @V407466 01150000 ST R10,IOBLINK LINK TO ITSELF @V407466 01151000 ST R11,IOBUSER STORE VMBLOK @VA10443 01152500 STH R2,IOBRADD STORE ADDR PASSED FROM DMKCPS @V407466 01154000 * ACQUIRE CPEXBLOK TO STORE CALLER'S REGISTERS 01155000 LA R0,CPEXSIZE SIZE OF CPEXBLOK IN DWDS. @V407466 01156000 CALL DMKFREE ACQUIRE BLOCK @V407466 01157000 LR R5,R1 ADDR TO R5 @V407466 01158000 USING CPEXBLOK,R5 @V407466 01159000 ST R5,IOBMISC CPEXBLOK ADDR IN IOBLOK @V407466 01160000 OI IOBSPEC,IOBTIO REQUEST FOR TIO @V407466 01161000 OI IOBSPEC,IOBUNSL FLAG AS UNSOLICITED INT. @V407466 01162000 LA R2,TIODONE RETURN ADDRESS AFTER TIO @V407466 01163000 ST R2,IOBIRA STORE IN IOBLOK @V407466 01164000 STM R0,R15,CPEXREGS STORE CALLER'S REGISTERS @V407466 01165000 CALL DMKIOSQR ISSUE I/O REQUEST @V407466 01166000 GOTO DMKDSPCH WAIT FOR I/O TO COMPLETE @V407466 01167000 SPACE 01168000 DROP R7 @V407466 01169000 TIODONE EQU * @V407466 01170000 L R5,IOBMISC CPEXBLOK ADDR @V407466 01171000 LM R0,R15,CPEXR0 REGAIN REGISTERS @V407466 01172000 TM IOBSTAT,IOBCC3 DID WE GET CC=3?? @V407466 01173000 BO TAPCC3 YES, BRANCH @V407466 01174000 BZ TAPCC0 NO, CC=0, BRANCH @V407466 01175000 L R1,IOBIOER GET IOERBLOK @V407466 01176000 LTR R1,R1 IS THERE ONE? @V407466 01177000 BZ TAPCC3 NO, JUST EXIT @V407466 01178000 USING IOERBLOK,R1 @V407466 01179000 TM IOERDATA,X'40' INT. REQ. @V407466 01180000 BZ TAPCC0 NOT FATAL @V407466 01181000 TM IOERDATA+1,X'60' STATUS A & B ON @V407466 01182000 BNZ TAPCC0 NOT FATAL @V407466 01183000 SPACE 01184000 TAPCC3 EQU * @V407466 01185000 FRETBLKS EQU * @V407466 01186000 LR R1,R9 ADDRESS OF DMKTAP WORK AREA @V407466 01187000 LA R0,TAPRLSZ SIZE OF WORK AREA IN DWDS. @V407466 01188000 CALL DMKFRET RELEASE STORAGE @V407466 01189000 LR R1,R10 IOBLOK ADDRESS @V407466 01190000 LA R0,IOBSIZE SIZE OF IOBLOK @V407466 01191000 CALL DMKFRET RELEASE IOBLOK @V407466 01192000 LR R1,R5 CPEXBLOK ADDRESS @V407466 01193000 LA R0,CPEXSIZE SIZE OF CPEXBLOK @V407466 01194000 CALL DMKFRET RELEASE STORAGE @V407466 01195000 LR R2,R12 PREPARE TO UNLOCK DMKTAP @V407466 01196000 CALL DMKPTRUL UNLOCK THIS PAGE @V407466 01197000 GOTO DMKDSPCH RETURN TO DMKDSPCH @V407466 01198000 SPACE 01199000 TAPCC0 EQU * @V407466 01200000 ST R9,IOBCAW PREPARE FOR ISSUING RELEASE @V407466 01201000 NI IOBSPEC,X'FF'-IOBTIO RESET IOBTIO FLAG @V407466 01202000 LA R2,RELDONE RETURN ADDR AFTER RELEASE @V407466 01203000 ST R2,IOBIRA STORE IN IOBLOK @V407466 01204000 STM R0,R15,CPEXREGS STORE REGISTERS FOR RETURN @V407466 01205000 CALL DMKIOSQR ISSUE I/O REQUEST @V407466 01206000 GOTO DMKDSPCH GO TO DISPATCHER TO WAIT FOR @V407466 01207000 * AWHILE 01208000 SPACE 01209000 RELDONE EQU * @V407466 01210000 L R5,IOBMISC CPEXBLOK ADDR @V407466 01211000 LM R0,R15,CPEXREGS RESTORE REGISTERS @V407466 01212000 TM IOBSTAT,IOBFATAL+IOBCC3 REQUEST FATAL? @V407466 01213000 BNZ TAPCC3 YES @V407466 01214000 LA R14,RELCCW+8 ADDR OF REL. CCW PLUS 8 @V407466 01215000 L R1,IOBCSW GET ENDING CSW ADDRESS @V407466 01216000 LA R1,0(,R1) CLEAR OUT THE GARBAGE @V407466 01217000 CLR R1,R14 DID THE RELEASE GET PERFORMED? @V407466 01218000 BL FRETBLKS NO @V407466 01219000 L R14,RDEVCUB GET ADDRESS OF ALTCU @VA07875 01219200 LTR R14,R14 IS THERE ALTCU ? @VA07875 01219400 BNZ FRETBLKS YES, CAN NOT ALLOW RES/REL @VA07875 01219600 OI RDEVFTR,FTRRSRL R/R CCWS VALID ON THIS DEVICE @V407466 01220000 B FRETBLKS RELEASE STORAGE ACQUIRED & EXIT @V407466 01221000 SPACE 01222000 TAPCCWRL CCW X'D4',TAPRL-TAPREL,SILI,6 TAPE RELEASE CCW @V407466 01223000 TAPEND EQU * @V407466 01224000 SPACE 01225000 EJECT 01226000 LTORG 01227000 TAPREL DSECT WORK AREA DSECT @V407466 01228000 RELCCW DS D RELEASE CCW @V407466 01229000 TAPRL DS D SENSE BYTES ASSOCIATED WITH @V407466 01230000 * RELEASE 01231000 TAPRLSZ EQU (*-TAPREL)/8 SIZE OF RELEASE DATA FIELD IN @V407466 01232000 * DWDS. 01233000 EJECT 01234000 COPY CCHREC @VM08812 01235000 EJECT 01236000 COPY IOER 01237000 COPY RBLOKS 01238000 COPY IOBLOKS 01239000 COPY CONBUF 01240000 COPY DEVTYPES 01241000 COPY EQU 01242000 COPY SAVE 01243000 PSA 01244000 END 01245000