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