ibm:vm370-lib:cp:dmkdas.assemble_src
Table of Contents
DMKDAS Source
References
- Fixes Applied : 13
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC202DK]
Source Listing
- DMKDAS.ASSEMBLE.txt
- DAS TITLE 'DMKDAS (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE INPUT SERIALIZATION @V200820 00002000
- *. 00003000
- * 00004000
- * MODULE NAME : DMKDAS 00005000
- * 00006000
- * 00007000
- * 00008000
- * FUNCTION : TO EXAMINE THE ERROR CONDITION RESULTING FROM A UNIT CHECK 00009000
- * WHILE EXECUTING A CP GENERATED DASD CHANNEL PROGRAM. 00010000
- * THE ORIGINAL CHANNEL PROGRAM WILL BE RETRIED WHEN POSSIBLE 00011000
- * TO CORRECT THE FAILING CONDITION. IF THE ERROR CONDITION 00012000
- * IS UNCORRECTABLE CONTROL WILL BE PASSED TO THE MESSAGE 00013000
- * WRITER (DMKMSW) FOR OPERATOR AWARENESS. UPON RETURNING 00014000
- * FROM MESSAGE WRITER THE ORIGINAL CHANNEL PROGRAM MAY BE 00015000
- * RE-EXECUTED OR TERMINATED. ALSO STATISTICAL COUNTERS 00016000
- * FOR 2314 TYPE DEVICE WILL BE UPDATED. 00016100
- * 00017000
- * 00018000
- * 00019000
- * ATTRIBUTES : REENTRANT,RESIDENT,CALLED VIA SVC. 00020000
- * 00021000
- * 00022000
- * ENTRY POINT : DMKDASER - TO RETRY THE FAILING DASDI CHANNEL PROGRAM 00023000
- * 00026000
- * 00027000
- * ENTRY CONDITIONS : GPR8=ADDRESS OF RDEVBLOK 00028000
- * GPR10=ADDRESS OF IOBLOK 00029000
- * GPR12=BASE ADDRESS 00030000
- * GPR13=ADDRESS OF SAVE AREA 00031000
- * 00032000
- * 00033000
- * EXIT CONDITIONS : 1. WHEN RETRY IS POSSIBLE. 00034000
- * IOBFLAG=IOBRSTRT 00035000
- * IOBRCAW=ADDRESS OF RESTART CCW STRING. 00036000
- * 2. WHEN RETRY IS NOT POSSIBLE. 00037000
- * IOBSTAT=IOBFATAL 00038000
- * 00039000
- * 00040000
- * CALLS TO OTHER ROUTINES : 00041000
- * 1. DMKMSW - TO PROVIDE OPERATOR COMMUNICATION 00042000
- * IN ATTEMPTING TO CORRECT THE 00043000
- * ERROR CONDITION. 00044000
- * 2. DMKFREE - TO OBTAIN STORAGE FOR DASD 00045000
- * ENVIRONMENTAL SENSE DATA. THIS 00046000
- * CONDITION OCCURS WHEN THE CONTROL 00047000
- * UNIT INDICATES AN OVERFLOW OF THE 00048000
- * USAGE COUNTER. 00049000
- * 3. DMKFRET - TO RETURN STORAGE OBTAINED BY DMKFRE 00050000
- * 4. DMKQCNWT - TO WRITE MSG DAS956A TO OPERATOR 00051000
- * 5. DMKCVTBH - TO CONVERT REAL DEVICE ADDRESS 00052000
- * 6. DMKIOEST - TO UPDATE STATISTICAL DATA COUNTERS 00053000
- * 7. DMKTRKIN - TO HANDLE TRACK CONDITION CHECKS 00053100
- * 00056000
- * 00057000
- * EXTERNAL REFERENCES : 00058000
- * DMKMSW 00060000
- * DMKIOEST 00060100
- * 00061000
- * 00062000
- * TABLES AND WORKAREAS: BUFFER TO CONTAIN CHANNEL PROGRAM 00063000
- * & LABEL READ FROM DASD VOLUME. 00064000
- * 00065000
- * REGISTER USAGE : 00066000
- * GPR 0=PSA ADDRESSABILITY 00067000
- * GPR 1=SCRATCH 00067100
- * GPR 2=SCRATCH 00067200
- * GPR 3=USED FOR TESTING RE-OCCURRING ERRORS 00067300
- * GPR 4=SCRATCH 00068000
- * GPR 5=GENERAL USAGE IS FOR BAL REGISTER 00069000
- * GPR 6=SCRATCH 00070000
- * GPR 7=IOERBLOK ADDRESS 00071000
- * GPR 8=RDEVBLOK ADDRESS. 00072000
- * GPR 9=SCRATCH 00073000
- * GPR 10=IOBLOK ADDRESS. 00074000
- * GPR 11=VMBLOK ADDRESS. 00075000
- * GPR 12=BASE ADDRESS. 00076000
- * GPR 13=SAVE AREA ADDRESS. 00077000
- * GPR 14=EXTERNAL LINKAGE REGISTER. 00078000
- * GPR 15=EXTERNAL LINKAGE REGISTER. 00079000
- * 00080000
- * 00081000
- * NOTES : NONE. 00082000
- * 00083000
- * 00084000
- * 00085000
- * OPERATION : A. IF THE RETRY COUNT IN THE IOBLOK IS ZERO, STORE 00086000
- * THE ADDRESS OF THE IOERBLOK IN THE RDEVBLOK. 00087000
- * B. TEST FOR CHANNEL ERRORS. 00088000
- * 1. CHANNEL DATA CHECKS ARE RETRIED 10 TIMES. 00089000
- * 2. INTERFACE AND CHANNEL CONTROL CHECKS ARE 00090000
- * RETRIED 10 TIMES. 00091000
- * C. TEST FOR THE SPECIFIC TYPE OF ERROR. 00092000
- * 1. EQUIPMENT CHECK - THE OPERATION IS RETRIED 10 TIMES 00093000
- * 2. NO RECORD FOUND (NRF) CONDITION (2314/2319) A READ 00094000
- * HOME ADDRESS IS EXECUTED AND THE DATA IS COMPARED 00095000
- * TO THE SEEK ADDRESS. IF THE COMPARISON IS UNEQUAL 00096000
- * A RECALIBRATE IS EXECUTED AND THE ORIGINAL CHANNEL 00097000
- * PROGRAM IS RETRIED FOR A MAXIMUM OF 10 TIMES. IF 00098000
- * THE COMPARISON IS EQUAL RETURN TO THE CALLER. 00099000
- * NO RECORD FOUND CONDITION (2305/3330/3340) RETURN 00100000
- * TO CALLER 00101000
- * 3. SEEK CHECKS ARE RETRIED 10 TIMES, EXCEPT THE 00102000
- * 3330/50/80 HAVE BEEN RETRIED ALREADY. HRC011DK 00103490
- * 4. INTERVENTION REQUIRED - READ THE VOLID; IF PACK 00104000
- * WAS CHANGED UNLOAD THE ENVIRONMENTAL BUFFER 00105000
- * (3330/40/50/80) AND IF THE VOLUME WAS USED HRC011DK 00106490
- * SYSTEM MARK DEVICE OFFLINE (MSG DMKDAS956). 00107000
- * IN ANY CASE RESTART THE OPERATION. 00108000
- * 5. BUS-OUT CHECK - RETRY THE OPERATION ONCE. 00109000
- * 6. DATA CHECKS (2314/2319) ARE RETRIED 256 TIMES WITH 00110000
- * RECALIBRATIONS BEING EXECUTED EVERY 16 TIMES. 00111000
- * EXCEPTIONS ARE : (A) THE 3330/50/80 HAVE HRC011DK 00112490
- * BEEN RETRIED BY THE HARDWARE. (B). 3340 AND 2305 00113000
- * WILL BE RETRIED 10 TIMES. 00114000
- * 7. OVERRUN - THE OPERATION IS RETRIED 10 TIMES. 00115000
- * 8. MISSING ADDRESS MARKER-THE OPERATION IS RETRIED 00116000
- * 10 TIMES. 00117000
- * 9. COMMAND REJECT - RETURN TO THE CALLER 00118000
- * 10. TRACK CONDITION CHECK - IF THIS IS A DEFECTIVE 00119000
- * TRACK CALL DMKTRKIN FOR 3340/3344 DISKS. FOR OTHER 00120100
- * TYPES, AN OPERATOR MESSAGE IS ISSUED. 00120200
- * 11. END-OF CYL,TRACK OVERFLOW,AND FILE PROTECT 00122000
- * CONDITIONS- RETURN TO CALLER. 00123000
- * 12. CHAINING CHECK- TEST FOR COMMAND REJECT. 00124000
- * IF NOT PRESENT RETRY THE OPERATION 10 TIMES. 00125000
- * 13. ENVIRONMENTAL DATA PRESENT HRC011DK 00126290
- * (3330/3340/3350/3380/2305) HRC011DK 00126580
- * RE-EXECUTE THE ORIGINAL CHANNEL PROGRAM. 00127000
- * 00128000
- * 00129000
- * D. IF THE RETRY PROCEDURE HAS BEEN EXHAUSTED AND 00130000
- * UNSUCCESSFUL CALL DMKMSW FOR OPERATION OPTIONS. 00131000
- * (I.E. CANCEL,RETRY,IGNORE) THE RESPONSES ALLOWED 00132000
- * WILL BE BASED ON THE CONDITION CAUSING THIS ERROR. 00133000
- * 00134000
- * E. WHEN THE RETRY PROCEDURE IS FINISHED (EITHER CORRECTED 00135000
- * OR UNCORRECTABLE), CALL DMKIOEST TO CAUSE STATISTICAL 00135100
- * COUNTERS FOR 2314 TYPE DEVICES TO BE UPDATED. 00135200
- * 00135300
- * F. CYL POSITION VERIFICATION WILL ONLY BE 00135400
- * PERFORMED IF THE FIRST CCW IN THE CHANNEL PROGRAM 00136000
- * IS A SEEK AND THE SEEK COMMAND IS VALID. 00137000
- * 00138000
- * ERROR MESSAGES: 00139000
- * 00140000
- * DMKDAS956A DASD CCU VOLID VOLID NOT MOUNTED; NOW OFFLINE 00141000
- *. 00142000
- EJECT 00143000
- COPY OPTIONS 00144000
- DMKDAS CSECT 00145000
- ENTRY DMKDASER HANDLE ERRORS FOR DASD DEVICES 00148000
- SPACE 00149000
- EXTRN DMKMSWR 00150000
- EXTRN DMKCVTBH 00152000
- EXTRN DMKIOEST @VA03757 00153100
- EXTRN DMKTRKIN @V56BDA8 00153200
- EXTRN DMKSTKCP @VA12941 00153400
- USING SAVEAREA,R13 00154000
- USING PSA,R0 00155000
- USING IOERBLOK,R7 ADDRESSABILITY FOR IOERBLOK @VA08187 00156000
- USING STATDASD,R4 ADDRESSABILITY FOR STATISICAL DATA 00157000
- USING RDEVBLOK,R8 00158000
- USING IOBLOK,R10 00159000
- USING DMKDAS,R12,R6 ADDRESSABILITY @VA08187 00160000
- EJECT 00387000
- DMKDASER ENTER HANDLE ERRORS FOR DASD DEVICES: 00388000
- LA R6,4095(R12) ADDRESSABILITY FOR 2ND BASE @VA08187 00389000
- LA R6,1(,R6) ... @VA08187 00390000
- SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00391100
- ICM R7,15,RDEVIOER GET THE FIRST IOERBLOK, IF ANY. 00392000
- BP NOTFIRST IF NONE THIS IS THE FIRST TIME IN 00393000
- L R7,IOBIOER LOAD IOERBLOK IN REG.7 00394000
- ST R7,RDEVIOER STORE ADDR IOERBLOK IN RDEVBLOK 00395000
- SR R3,R3 CLEAR ADDR. FOR SECOND ERROR 00396000
- ST R3,IOBIOER 00397000
- STH R3,IOBRCNT ZERO THE IOBRCNT FOR THE FIRST TIME IN 00398000
- NI IOBSTAT,X'FF'-IOBFATAL INSURE BIT IS OFF 00399000
- NI IOBFLAG,X'FF'-(IOBRSTRT+IOBERP) MASK OFF BITS @VM08912 00400000
- LTR R7,R7 IS THERE AN IOERBLOK @VM08912 00401000
- BZ CORRECT1 NO, GO TO EXIT @VM08912 00402000
- BAL R5,SKLOOP NORMALLY, THIS GETS USER'S SEEK @V56BDA8 00403000
- * ADDRESS INTO IOERADDR & SETS IOERDASD ON. 00403010
- OI IOBFLAG,IOBERP INDICATE ERP IN CONTROL 00404000
- NI IOERFLG2,X'FF'-IOERMSW CLEAR MSG. WRITER FLAG @VM08912 00405000
- NI IOERFLG3,X'FF'-IOERREAD RESET FLAG @VA03757 00405100
- TM IOERDATA,X'08' DATA CHECK PRESENT ?? @VA03757 00405200
- BZ NOTFIRST NO, CONTINUE @VA03757 00405300
- BAL R5,RDOPCK GO CHECK IF FAILING COMMAND WAS @V56BDA8 00405400
- * A READ OPERATION. IF SO, SET IOERREAD ON. 00405410
- NOTFIRST EQU * R7 WILL POINT TO THE FIRST IOERBLOK 00406000
- TM IOERIND3,IOERDEC IS MSG WTR WAITING FOR OPER RESP? 00407000
- BNO NOTMSW NO- BRANCH MSG WTR (DMKMSWR) NOT WAITING*00408000
- YES- IGNORE INT(S) UNTIL OPER RESPONDES 00409000
- EXIT5 EQU * @VM08912 00410000
- BAL R5,CKIOB RETURN ANY IOERBLOK 00411000
- NI IOBFLAG,X'FF'-IOBRSTRT INSURE NO RESTART @VA00881 00412000
- EXIT @VA00881 00413000
- NOTMSW EQU * 00414000
- LH R4,IOBRCNT INSERT I/O ERROR CTR. 00415000
- A R4,F1 INCREASE COUNT BY 1 00416000
- STH R4,IOBRCNT STORE NEW VALUE 00417000
- L R3,IOBIOER GET THE ADDRESS OF THE SECOND @VA01254 00418000
- * IOERBLOK 00419000
- TM IOERCSW+5,IFCC+CCC+CDC IS THIS A CHANNEL ERROR ?@VA01254 00420000
- BNZ DASCOUNT YES, GO TEST FOR VOL1 @VA01254 00421000
- LTR R3,R3 DOES SECOND IOERBLOK EXIST ? @VA01254 00422000
- BZ DASCOUNT NO, GO TEST FOR VOL1 @VA01254 00423000
- TM IOERCSW+5-IOERBLOK(R3),IFCC+CCC+CDC IS CHANNEL @VA01254 00424000
- * ERROR 00425000
- * INDICATED ? 00426000
- BZ DASCOUNT NO, GO INCREMENT COUNT @VA01254 00427000
- BAL R5,FRETPTR RELEASE RECOVERY CCW WORK AREA. @V56BDA8 00428000
- ST R3,RDEVIOER SAVE 2ND IOERBLOK ADDR (THAT HAD @V56BDA8 00429000
- * CHANNEL CHECK) AS IF IT WAS THE FIRST. 00429050
- MVC IOERPNT-IOERBLOK(L4,R3),IOERPNT-IOERBLOK(R7) @V56BDA8 00429100
- * KEEPS PTR TO POSSIBLE CHAIN OF SDR BLOCKS 00429150
- ST R7,IOBIOER SAVE ORIGINAL IOERBLOK ADDR @VM08849 00430000
- LR R7,R3 GET CURRENT IOERBLOK ADDRESS @VM08849 00431000
- B CHANPRG GO PRINT CHANNEL MESSAGE @VA01254 00432000
- DASCOUNT EQU * @VA01254 00433000
- TM IOERFLG2,IOERVOL1 READING THE VOL1 LABEL 00434000
- BO VOLREAD YES- BRANCH 00435000
- TM IOERFLG1,IOERPEND IS D.E. INTERRUPT EXPECTED 00436000
- BO PENDING BRANCH IF YES. 00437000
- TM IOERFLG2,IOERMSW IS THE MESSAGE WRITER ACTIVE @VM08912 00438000
- BO EXIT5 YES, GO FRET IOERBLOK @VM08912 00439000
- TM IOERFLG3,IOERALTR+IOERRDR0 ALT TRACK SUPPORT? @V56BDA8 00439020
- BNZ CKALTERR ALTERNATE TRACK SUPPORT ACTIVE @V56BDA8 00439025
- MVC SAVEWRK2(L'IOERLOC+L'IOERDW),IOERLOC SAVE START @V56BDA8 00439030
- * AND LENGTH OF WORK AREA WHERE RECOVERY 00439035
- * CCWS JUST EXECUTED WERE LOCATED. THEN 00439040
- * CALL FRETPTR (BELOW) TO FREE THE WORK 00439045
- * AREA. OBVIOUSLY WE CAN'T USE WORK AREA 00439050
- * AFTER THAT,BUT WE STILL NEED TO KNOW 00439055
- * WHERE IT WAS SO THE ADDRESS IN IOERCSW 00439060
- * CAN BE CHECKED LATER TO SEE IF FAILURE 00439065
- * OCCURRED ON ONE OF THE RECOVERY CCWS. 00439070
- DC 0AL4(SAVEWRK3) PUT SYMB IN XREF FOR ABOVE INSTR @V56BDA8 00439075
- LTR R3,R3 CLEAR IT @VA07807 00439100
- BZ FRETBYP BRANCH FOR FRET @VA07807 00439200
- TM IOERDATA+2-IOERBLOK(R3),X'10' TEST FOR ERROR @VA07807 00439300
- BO *+8 @VA07807 00439400
- FRETBYP DS 0H @VA07807 00439500
- BAL R5,FRETPTR RELEASE RECOVERY CCW WORK AREA. @V56BDA8 00440000
- TM IOERFLG2,IOERSTAT+IOERHA+IOERCAL+IOERECF 00441000
- BNZ TSTERR BRANCH IF ENTRY FROM RECOVERY ACTION 00442000
- CLC IOBRCNT,F1+2 TEST FOR FIRST TIME 00443000
- BNE RECUR BRANCH IF NOT 1ST, KEEPING ADDR @V56BDA8 00444000
- * OF 2ND IOERBLOK IN R3. 00444010
- LR R3,R7 R3 GETS ADDR OF ORIGINAL IOERBLOK@V56BDA8 00445000
- RECUR LTR R3,R3 DID OPERATION FINISH CORRECTLY 00446000
- BZ SDRCORR BRANCH IF YES @VA03757 00447100
- CLI RDEVTYPE,TYP3340 3340/3344? @V56BDA8 00447150
- BNE NOT3340A NO SPECIAL HANDLING @V56BDA8 00447160
- CLC IOERCSW+1(L3),IOERCSW+1-IOERBLOK(R3) SAME @V56BDA8 00447170
- * FAILING CCW? 00447180
- BE NOT3340A YES, NORMAL RETRY PATH @V56BDA8 00447190
- SECNDERR ST R3,RDEVIOER SAVE CURRENT IOERBLOK ADDR @V56BDA8 00447200
- MVC IOERPNT-IOERBLOK(L4,R3),IOERPNT-IOERBLOK(R7) @V56BDA8 00447210
- * KEEPS PTR TO POSSIBLE CHAIN OF SDR BLOCKS 00447220
- ST R7,IOBIOER SAVE ORIGINAL IOERBLOK ADDR @V56BDA8 00447230
- LR R7,R3 GET CURRENT IOERBLOK ADDR @V56BDA8 00447240
- RECURALT BAL R5,UPSK3340 MAKE SURE SEEK ADDR IS CURRENT. @V56BDA8 00447250
- * THIS GETS SEEK ADDR FROM SENSE, 00447260
- * AND SETS IOERDASD FLAG ON. 00447270
- NOT3340A DS 0H @V56BDA8 00447280
- TM IOERCSW+5,X'0F' TEST FOR CHANNEL ERROR'S 00448000
- BNZ CHANCK BRANCH ON CHANNEL ERROR. @V56BDA8 00449000
- TM IOERCSW+5,PRGC+PRTC IS THIS A CHANNEL PROG. CHECK ? 00450000
- BNZ CHANPRG IF SO ,,BRANCH 00451000
- B UNITCK BRANCH . MUST BE A UNIT CHECK. 00452000
- CORRECT1 EQU * @VM08912 00455000
- NI IOBFLAG,X'FF'-(IOBERP+IOBRSTRT) TURN OFF FLAGS @VM08912 00456000
- EXIT 00457000
- SPACE 00457910
- * THIS ROUTINE FRETS ANY CCW WORK AREA HANGING OFF THE IOERBLOK 00457920
- * POINTED TO BY R7. 00457930
- FRETPTR SR R0,R0 CLEAR REG.0 00458000
- LH R0,IOERDW LOAD REG.0 WITH CT OF DW'S 00459000
- L R1,IOERLOC LOAD REG.1 OF ADDR. OF STORAGE OBTAINED 00460000
- LTR R1,R1 WAS CORE REALLY GOTTEN 00461000
- BCR 8,R5 BRANCH IF NO. 00462000
- MVC IOERDW,ZEROES CLEAR OLD DATA. 00463000
- MVC IOERLOC,ZEROES CLEAR OLD DATA. 00464000
- CALL DMKFRET FREE CORE 00465000
- BR R5 RETURN TO CALLER 00466000
- SPACE 1 00467000
- * THIS ROUTINE WILL ALLOW A MAXIMUN 00468000
- * OF 10 RETRIES FOR CHANNEL ERROR'S 00469000
- * 00470000
- CHANCK CLC IOBRCNT,F10+2 HAVE 10 CHANNEL ERRORS OCCURRED ? 00471000
- BNH CHANRTY BRANCH IF NO @VA01254 00472000
- CHANPRG MVI IOERNUM,20 SET CHANNEL ERROR MESSAGE. 00473000
- OI IOERIND3,IOERCAN+IOERINFO SET INDICATOR'S 00474000
- TM IOBFLAG,IOBCP CP ERROR ? 00475000
- BO *+8 IF YES, BRANCH 00476000
- OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00477000
- B CALLWTR 00478000
- CHANRTY BAL R5,CKIOB TEST FOR 2'ND IOERBLOK 00479000
- OI IOBFLAG,IOBRSTRT TELL IOS TO RETRY 00480000
- MVC IOBRCAW(4),IOBCAW SET RESTART CAW ADDRESS @VA01254 00481000
- EXIT EXIT TO IOS 00482000
- * 00483000
- * ENTRY WILL BE MADED HERE WHEN A PENDING D.E. INT. OCCUR'S 00484000
- * 00485000
- PENDING TM IOERFLG2,IOERMSW MESSAGE WRITER IN PROGRESS @VA12941 00486000
- BO BLDCPEX WAIT FOR MSW TO FINISH @VA12941 00486100
- NI IOERFLG1,X'FF'-IOERPEND TURN OFF PEND DE BIT @VA12941 00486200
- BAL R5,FRETPTR RELEASE ALLOCATED STORAGE @VM08912 00487000
- BAL R5,GETSTBUF GET A BUFFER TO READ THE VOL1 LABEL 00488000
- STH R0,IOERDW SAVE THE SIZE OF THE STAT BUFFER (DW) 00489000
- ST R4,IOERLOC AND IT'S LOCATION ALSO 00490000
- ST R4,IOBRCAW SET UP THE RESTART CAW (TO READ VOLID) 00491000
- OI IOERFLG2,IOERVOL1 TURN ON THE READING VOLID FLAG 00492000
- XC IOBRCNT,IOBRCNT INSURE 10 RETRIES FOR VOLREAD @VA08413 00492100
- B RETRYK00 READ THE VOLID. @V56BDA8 00493100
- SPACE 1 00493150
- BLDCPEX LA R0,CPEXSIZE SIZE OF CPEXBLOK @VA12941 00493200
- CALL DMKFREE GET STORAGE FOR CPEXBLOK @VA12941 00493250
- USING CPEXBLOK,R1 CPEXBLOK ADDRESSABILIY @VA12941 00493300
- XC CPEXBLOK(CPEXSIZE*8),CPEXBLOK CLEAR BLOCK @VA12941 00493350
- MVC CPEXR0(CPEXR12-CPEXR0),SAVER0 SETUP CPEXBLOK @VA12941 00493400
- STM R12,R13,CPEXR12 ... @VA12941 00493450
- L R15,=A(DMKDASER) CPEXBLOK WILL RETURN TO DASER @VA12941 00493500
- ST R15,CPEXADD CPEXBLOK RETURN ADDRESS @VA12941 00493550
- DROP R1 ... @VA12941 00493600
- L R5,IOERCPEX ANCHOR FOR CPEXBLOKS @VA12941 00493650
- USING CPEXBLOK,R5 ADDRESSABILITY @VA12941 00493700
- LTR R5,R5 ANY CPEXBLOKS ON QUEUE @VA12941 00493750
- BNZ NEXTCPEX YES, FIND END OF CHAIN @VA12941 00493800
- ST R1,IOERCPEX ADD TO THE CHAIN @VA12941 00493850
- B GOTODSP GOTO THE DISPATCHER @VA12941 00493900
- SPACE 1 00493950
- NEXTCPEX L R14,CPEXFPNT GET POINTER TO NEXT ONE ON CHAIN @VA12941 00494000
- LTR R14,R14 END OF QUEUE @VA12941 00494050
- BZ QUEUE END OF QUEUE - ADD CPEXBLOK @VA12941 00494100
- LR R5,R14 CONTINUE TO LOOK FOR END @VA12941 00494150
- B NEXTCPEX ... @VA12941 00494200
- SPACE 2 ... @VA12941 00494250
- QUEUE ST R1,CPEXFPNT ADD CPEXBLOK TO QUEUE AT END @VA12941 00494300
- GOTODSP GOTO DMKDSPCH EXIT TO DISPATCHER FOR NOW @VA12941 00494350
- DROP R5 DROP CPEXBLOK ADDRESSABILITY @VA12941 00494400
- SPACE 1 00494450
- VOLREAD L R4,IOERLOC POINT TO CHANNEL PGM @VA07801 00495000
- ICM R1,15,IOBIOER DID OPERATION FINISH CORRECTLY @VA07801 00495200
- BNP READOK YES - BRANCH @VA07801 00495400
- LA R15,STATREL+8 VERIFY IF RELEASE CCW FAILED @VA07801 00495600
- L R5,IOBCSW LAST CCW EXECUTED + 8 @VA07801 00495800
- LA R5,0(R5) CLEAR GARBAGE @VA07801 00496000
- CLR R5,R15 WHERE DID CHANNEL PGM END @VA07801 00496200
- BL TRY10 ERROR, RETRY 10 TIMES @VA07801 00496400
- BH IOERCLR SENSE AFTER REL. FAILED, CONT. @VA07801 00496600
- BAL R5,CKIOB FRET IOERBLOK IF REL. FAILED @VA07801 00496800
- B LABRED LABEL READ, CONTINUE @VA07801 00497000
- TRY10 CLC IOBRCNT,F10+2 TEN ERRORS? @VA07801 00497200
- BNH RETRYK00 NO- RETRY @V56BDA8 00498100
- LA R4,IOERPNT POINT TO THE ERROR POINTER 00499000
- BAL R5,NXTPTR CHAIN IN THE ERROR BLOCK 00500000
- L R4,IOERLOC POINT TO THE STATDASD BUFFER @VA04703 00500500
- LA R5,CLEANUP SET UP THE RETURN POINTER 00501000
- B ERROR95F MARK OFFLINE AND GIVE MESSAGE @V4075A0 00502100
- SPACE 00503000
- IOERCLR BAL R5,CKIOB FRET 2ND IOERBLOK @VA07801 00504000
- READOK L R5,RDEVCUB CHECK FOR ALTERNATE CONTROL UNIT @VA07801 00504100
- LTR R5,R5 ALTERNATE CONTROL UNIT? @VA07801 00504200
- BNZ LABRED YES, DO NOT IND. 2/4 CHANSW @VA07801 00504300
- * IN CASE ALTCU HAS NO FEATURE 00504400
- OI RDEVFTR,FTRRSRL 2/4 CHANSW FEATURE PRESENT @VA07801 00504500
- LABRED TM IOERFLG2,IOERSTAT STATISTICAL DATA UNLOADED @VA07801 00504600
- BO STATIN YES- BRANCH 00506000
- BAL R5,COMPVOL1 COMPARE THE VOL1 LABEL 00507000
- BE STATIN IF THIS THE SAME VOLUME; BRANCH 00508000
- TM RDEVTYPE,TYP3330+TYP3340+TYP3350+TYP3380 HRC011DK 00509490
- BZ STATIN NO - SKIP THE UNLOAD @V2A2029 00510000
- LA R0,IOERSIZE GET AN IOERBLOK FOR THE STAT DATA 00511000
- CALL DMKFREE 00512000
- MVC 0(IOERSIZE*8,R1),IOERBLOK COPY THE IOER BLOCK 00513000
- MVC IOERVSER-IOERBLOK(6,R1),RDEVSER MOVE IN THE VOLID 00514000
- LA R4,IOERPNT POINT TO THE IOERBLOK POINTER 00515000
- BAL R5,NXTPTR CHAIN IN THE IOERBLOK 00516000
- L R4,IOERLOC POINT TO THE STATDASD BUFFER @VA04703 00516500
- ST R4,IOBRCAW INITIALIZE THE RESTART CAW @VA13424 00516700
- LM R15,R0,PACKCHG * BUILD THE BUFFER UNLOAD CCW 00517000
- ALR R15,R1 * TO READ THE ENVIRONMENTAL DATA 00518000
- STM R15,R0,STATSNS * INTO THE IOERBLOK. 00519000
- OI IOERFLG2,IOERSTAT TURN ON THE STATISTICAL DATA FLAG 00520000
- B RETRYK00 AND GO READ THE DATA. @V56BDA8 00521100
- SPACE 00522000
- STATIN BAL R5,TESTVOL TEST IF THE VOLUME WAS SWAPPED OR IN USE *00523000
- BY THE SYSTEM, IF YES MARK OFFLINE. 00524000
- CLEANUP NI IOERFLG2,X'FF'-(IOERSTAT+IOERVOL1) TURN FLAG'S @VA02256 00525000
- * OFF 00526000
- BAL R5,FRETPTR RETURN THE STAT BUFFER 00527000
- SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00527100
- NI IOBFLAG,X'FF'-IOBERP TURN OFF EREP BIT 00528000
- NI RDEVSTAT,X'FF'-RDEVNRDY RESET INTERVENTION REQUIRED 00529000
- OI IOBFLAG,IOBRSTRT TURN ON RESTART BIT 00530000
- SLR R3,R3 @V56BDA8 00530900
- STH R3,IOBRCNT RESET RETRY COUNT 00531000
- MVC IOBRCAW,IOBCAW SET RESTART CAW ADDR. 00532000
- EXIT GO BACK TO IOS 00533000
- * 00534000
- * MORE ERROR TESTING IS REQUIRED 00535000
- * 00536000
- UNITCK TM RDEVFTR,FTREXTSN EXTENDED SENSE TYPE DASD ? @V304498 00537000
- BNZ HISPEED BRANCH IF YES 00538000
- * 00539000
- * MUST BE A 2319 OR 2314 TO ENTER AT THIS POINT 00540000
- * 00541000
- TSTEQUIP TM IOERDATA,X'10' EQUIPMENT CHECK ERROR ? 00542000
- BZ TSTNRF BRANCH IF NOT. 00543000
- MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00544000
- CLC IOBRCNT,F2+2 IS THIS THE THIRD ERROR ? 00545000
- BNH RETRY BRANCH NO. 00546000
- EQCK MVI IOERNUM,EQUIP INDICATE EQUIPMENT CHECK ERROR 00547000
- OI IOERIND3,IOERCAN+IOERINFO @VA01426 00548000
- * DISPLAY INFORMATION MSG 503I 00549000
- B CALLWTR 00550000
- TSTNRF TM IOERDATA+1,X'08' NRF ERROR 00551000
- BZ TSTSEEK BRANCH NO 00552000
- TM IOERDATA+1,X'02' MISSING ADDRESS MARKER ? 00553000
- BZ READHA BRANCH NO. 00554000
- CLC IOBRCNT,F10+2 HAS ERROR HAPPENED 11 TIMES ? 00555000
- BNH RECAL BRANCH NO TO RECALIBRATE. 00556000
- MVI IOERNUM,MADM SET MESSAGE NUMBER. 00557000
- OI IOERIND3,IOERINFO+IOERCAN SET INDICATES @VA07665 00558100
- B CALLWTR CALL WRITTER 00559000
- RECAL LA R0,2 GET 2 DW'S FROM STORAGE 00560000
- CALL DMKFREE 00561000
- ST R1,IOERLOC 00562000
- STH R0,IOERDW 00563000
- MVC 0(16,R1),RESTORE MOVE IN RESTORE AND TIC COMMAND 00564000
- ST R1,IOBRCAW SET UP RESTART CAW 00565000
- L R5,IOBCAW CHAIN ORIGINAL CCW'S @VA08187 00566000
- ST R5,8(0,R1) MOVE IN TIC COMMAND CODE AND @VA08187 00567000
- MVI 8(R1),X'08' RESTORE CCW. 00568000
- B RETRY BRANCH TO RETRY OPERATION. 00569000
- SPACE 1 00570000
- READHA LA R0,1 00571000
- CALL DMKFREE CONSTRUCT READ HOME ADDR. CCW 00572000
- ST R1,IOERLOC STORE ADDR. OF CCW 00573000
- STH R0,IOERDW STORE SIZE OF STORAGE OBTAINED 00574000
- ST R1,IOBRCAW SET RESTART ADDR. 00575000
- MVC 0(8,R1),HACCW MOVE IN RD HA COMMAND 00576000
- OI IOERFLG2,IOERHA SET ON TO INDICATE OPERATION IN PROG 00577000
- LA R5,IOERADR+3 SET READIN AREA TO IOERBLOK @VA08187 00578000
- ST R5,0(R1) ... @VA08187 00578100
- MVI 0(R1),X'1A' SET COMMAND CODE TO READ HA 00580000
- B RETRY 00581000
- * 00582000
- * WHEN THE INTERRUPT OCCUR'S FROM THIS CHANNEL PROGRAM 00583000
- * THE HOME ADDRESS READ WILL BE COMPARED AGAINST THE 00584000
- * INITIAL SEEK ADDR. IF EQUAL CONTROL WILL PASS TO IOS 00585000
- * OTHERWISE IT WILL BE TREATED AS A SEEK CHECK AND THE 00586000
- * OPERATION RETRIED. 00587000
- * 00588000
- TSTSEEK TM IOERDATA,X'01' IS ERROR BECAUSE OF A SEEK CHECK ? 00589000
- BZ TSTINT BRANCH IF NOT SEEK CHECK 00590000
- SEEKCK TM IOERDATA,X'80' COMMAND REJECT ERROR ? @V2A2029 00591000
- BO COMREJ BRANCH IF YES 00592000
- CLC IOBRCNT,F10+2 00593000
- BNH RECAL BRANCH TO EXECUTE A RESTORE COMMAND 00594000
- MVI IOERNUM,SKCK 00595000
- OI IOERIND3,IOERINFO+IOERCAN SET INDICATES @VA07665 00600100
- B CALLWTR 00601000
- COMREJ MVI IOERNUM,REJ MOVE IN REJECT MESSAGE 00602000
- OI IOERIND3,IOERCAN+IOERINFO 00603000
- TM IOBFLAG,IOBCP CP ERROR ? 00604000
- BO *+8 IF YES, BRANCH 00605000
- OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00606000
- B CALLWTR 00607000
- TSTINT TM IOERDATA,X'40' INTERVENTION REQUIRED 00608000
- BZ BUSCK BRANCH IF NO 00609000
- MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00610000
- PENDE OI IOERFLG1,IOERPEND TURN ON D.E. BIT 00611000
- MVI IOERNUM,INTREQU SET MSG. NUMBER 00612000
- OI IOERIND3,IOERACT TURN ON ACTION BIT 00613000
- SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00613100
- OI RDEVSTAT,RDEVNRDY INDICATE INTERVENTION REQUIRED 00614000
- B CALLWTR 00615000
- BUSCK TM IOERDATA,X'20' IS THIS A BUS OUT ERROR 00616000
- BZ DATACK BRANCH IF NO 00617000
- MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00618000
- CLC IOBRCNT,F1+2 IS THIS THE SECOND ERROR ? @VM01012 00619000
- BH BUSMSG BRANCH YES 00620000
- B RETRY 00621000
- BUSMSG MVI IOERNUM,BUSOUTCK SET BUSOUT MESSAGE UP. 00622000
- OI IOERIND3,IOERINFO+IOERCAN TURN ON INDICATOR'S 00623000
- B CALLWTR 00624000
- DATACK TM IOERDATA,X'08' TEST FOR DATA CHECK 00625000
- BZ OVERRUN BRANCH IF NOT DATA CHECK 00626000
- MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00627000
- CLC IOBRCNT,F256+2 HAS ERROR HAPPENED 256 TIMES ? 00628000
- BH DATAMSG BRANCH IF YES 00629000
- TM IOBRCNT+1,X'0F' IS THIS MULTI OF 16 TIMES ? 00630000
- BO RECAL BRANCH EVERY 16 TIMES. 00631000
- B RETRY 00632000
- DATAMSG MVI IOERNUM,DATAER 00633000
- OI IOERIND3,IOERINFO+IOERCAN SET INDICATES @VA07665 00638100
- B CALLWTR 00639000
- SPACE 1 00640000
- OVERRUN TM IOERDATA,X'04' 00641000
- BZ MISSMRK 00642000
- B OVERRUN1 @VA08385 00642250
- OVERRUN2 L R11,ECFREG11-ECFDSECT(R9) SAVE REG11 @VA08385 00642500
- OVERRUN1 MVC IOBRCAW,IOBCAW SET UP RESTART CAW. 00643000
- CLC IOBRCNT,F10+2 00644000
- BH OVERMSG 00645000
- B RETRY 00646000
- OVERMSG MVI IOERNUM,OVERERR INDICATE OVERRUN MESSAGE 00647000
- OI IOERIND3,IOERDEC+IOERCAN+IOERETRY 00648000
- B CALLWTR CALL MESSAGE WRITTER. 00649000
- SPACE 1 00650000
- MISSMRK TM IOERDATA+1,X'02' TEST FOR MISSING ADDRESS MARKER 00651000
- BZ REJECT BRANCH IF NO. 00652000
- CLC IOBRCNT,F10+2 IS COUNTER > 10 ? 00653000
- BH MRKMSG BRANCH IF YES. 00654000
- MVC IOBRCAW,IOBCAW SET RESTART ADDR. 00655000
- B RETRY 00656000
- MRKMSG MVI IOERNUM,MADM INDICATE MISSING ADDRESS MARKER 00657000
- OI IOERIND3,IOERINFO+IOERCAN 00658000
- B CALLWTR 00659000
- REJECT TM IOERDATA,X'80' IS IT A COMMAND REJECT ? 00660000
- BZ BDTRK BRANCH IF NO. 00661000
- TM IOERDATA+1,X'04' FILE PROTECT ERROR 00662000
- BO FILPROT BRANCH ON PROTECT ERROR. 00663000
- CHKREL TM IOBSPEC2,IOBREL IS THIS SPECIAL DMKDSB CH PGM @VA07801 00663100
- BO FINISH YES, THEN LEAVE IT ALONE @VA07801 00663200
- L R2,IOERCSW FAILING CSW+8 @VA14597 00663400
- LA R2,0(,R2) CLEAR HIGH ORDER BYTE @VA14597 00663500
- S R2,F8 FAILING CCW @VA14597 00663600
- CLI 0(R2),X'FE' WRITE WITH R/O DASD @VA14597 00663700
- BNE COMREJ INVALID CMND @VA14597 00663800
- MVI IOERDATA+1,X'02' TURN ON WRITE INHIBIT SW. @VA14597 00663900
- B COMREJ MUST BE INVALID COMMAND 00664000
- BDTRK TM IOERDATA,X'02' IS THIS A TRACK CONDITION CHECK ? 00665000
- BZ TRKOV BRANCH NO. 00666000
- MVI IOERNUM,TRKCOND SET TRACK CONDITION 00667000
- OI IOERIND3,IOERCAN+IOERINFO 00668000
- TM IOBFLAG,IOBCP CP ERROR ? 00669000
- BO *+8 IF YES, BRANCH 00670000
- OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00671000
- B CALLWTR CALL MESSAGE WRITTER 00672000
- SPACE 1 00673000
- TRKOV TM IOERDATA+1,X'40' TRACK OVERRUN ERROR ? 00674000
- BZ ENDCYL BRANCH IF NO 00675000
- MVI IOERNUM,TKOVER MESSAGE FOR WRITTER 00676000
- OI IOERIND3,IOERINFO+IOERCAN 00677000
- TM IOBFLAG,IOBCP CP ERROR ? 00678000
- BO *+8 IF YES, BRANCH 00679000
- OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00680000
- B CALLWTR 00681000
- SPACE 1 00682000
- ENDCYL TM IOERDATA+1,X'20' IS THIS AN EOC CONDITION 00683000
- BZ FILPROT BRANCH IF NOT 00684000
- EOCERR OI IOERFLG2,IOERCEMD DO NOT RECORD PROG ERROR @VA02358 00685000
- B FATAL 00686000
- FILPROT TM IOERDATA+1,X'04' FILE PROTECT ERROR ? 00687000
- BZ SHDNOT BRANCH IF NO. 00688000
- MVI IOERNUM,PROTECT SET MESSAGE NUMBER 00689000
- TM IOBFLAG,IOBCP CP ERROR ? 00690000
- BO *+8 IF YES, BRANCH 00691000
- OI IOERFLG2,IOERCEMD NO DIAG RECORDING 00692000
- OI IOERIND3,IOERCAN+IOERINFO 00693000
- B CALLWTR 00694000
- SPACE 1 00695000
- SHDNOT MVI IOERNUM,BDSNS 00696000
- OI IOERIND3,IOERCAN+IOERINFO 00697000
- B CALLWTR 00698000
- SPACE 1 00699000
- TSTERR TM IOERFLG2,IOERSTAT 00700000
- BZ NOTSTAT 00701000
- NI IOERFLG2,X'FF'-IOERSTAT 00702000
- LTR R3,R3 00703000
- BZ SDRCORR BRANCH IF NO IOERBLOK @VA03757 00704000
- L R4,IOERPNT 00705000
- MVC IOERBLOK(IOERSIZE*8),0(R3) 00706000
- ST R4,IOERPNT 00707000
- MVC IOERVSER-IOERBLOK(6,R7),RDEVSER RESTORE VOLID @VA02536 00708000
- B RECUR 00709000
- NOTSTAT LTR R3,R3 00710000
- BZ NOIOER NO IOERBLOK @VA01094 00711000
- CLC IOBRCNT,F10+2 10 ERRORS YET? @VA01094 00712000
- BH RECFAIL YES--FATAL @VA01094 00713000
- TM IOBCSW+4,UC IS THERE UNIT CHECK? @VA01094 00714000
- BZ RECFAIL RECOVERY FAILURE @V56BDA8 00715050
- CLI RDEVTYPE,TYP3340 3340/3344? @V56BDA8 00715100
- BNE UNITCK NO, PROCESS SECOND FAILURE @V56BDA8 00715150
- L R1,SAVEWRK2 RECOVERY WORKAREA ADDRESS @V56BDA8 00715200
- LH R0,SAVEWRK3 LENGTH IN DBLEWRDS @V56BDA8 00715250
- SLL R0,3 LENGTH IN BYTES @V56BDA8 00715300
- AR R0,R1 END OF RECOVERY WORKAREA @V56BDA8 00715350
- CLM R1,7,IOERCSW+1-IOERBLOK(R3) BELOW OUR AREA? @V56BDA8 00715400
- BNL SECNDERR YES, A NEW ERROR @V56BDA8 00715450
- CLM R0,7,IOERCSW+1-IOERBLOK(R3) ABOVE US? @V56BDA8 00715500
- BL SECNDERR YES, A NEW ERROR @V56BDA8 00715550
- B HISPEED ELSE TAKE MORMAL RETRY PATH @V56BDA8 00715600
- NOIOER EQU * @VA01094 00717000
- TM IOERFLG2,IOERCAL 00718000
- BO DSKCAL 00719000
- SR R5,R5 CLEAR REG.5 00720000
- TM IOERFLG2,IOERHA 00721000
- BO FINHA 00722000
- TM IOERFLG2,IOERECF ERROR CORRECTION FUNCTION FINISHED 00723000
- BO FINISH YES - ERROR WAS FULLY CORRECTED 00724000
- MVI IOERNUM,FALSE 00725000
- OI IOERIND3,IOERINFO+IOERCAN 00726000
- B CALLWTR 00727000
- SPACE 1 00728000
- RECFAIL MVI IOERNUM,RECERR INDICATE ERROR WHILE RECOVERING 00729000
- OI IOERIND3,IOERINFO+IOERCAN 00730000
- B CALLWTR 00731000
- FINHA NI IOERFLG2,X'FF'-IOERHA TURN OFF HOME ADDRESS BIT 00732000
- CLC IOBRCNT,F10+2 10 ERRORS YET ? 00733000
- BNH SKLOOP IF NOT ,TAKE THE BRANCH 00734000
- MVI IOERNUM,SKCK SET MESSAGE FOR SEEK CHECK 00735000
- OI IOERIND3,IOERCAN+IOERINFO TURN ON CANCEL BIT 00736000
- B CALLWTR ISSUE MESSAGE TO OPERATOR 00737000
- SPACE 1 00738000
- SKLOOP L R4,IOBCAW LOAD REG.4 WITH ADDR OF 1'ST CCW. 00739000
- LTR R4,R4 IS IOBLOK ACTIVE ? 00740000
- BZ FATAL EXIT IF NON-ACTIVE IOBLOK. 00741000
- SPACE 00742000
- CLI 0(R4),X'0B' IS FIRST CMD A SEEK? @VA00684 00743000
- BE SKADCK YES, CHECK IF THIS ONE FAILED @VA00684 00744000
- CLI 0(R4),X'07' TRY OTHER SEEK @VA00684 00745000
- BNE SKRET NOPE, THEN CAN'T USE IT FOR CYL @VA00684 00746000
- SKADCK LA R1,8(,R4) POINT TO END OF SEEK... @VA00684 00747000
- CLM R1,B'0111',IOERCSW+1 AND SEE IF WE FAILED ON IT?@VA00684 00748000
- BE SKRET YUP, THEN IT WOULD FAIL AGAIN. @VA00684 00749000
- FULLSEEK L R4,0(R4) PICK UP ADDR. OF 00750000
- LA R4,0(R4) SEEK DATA AND 00751000
- MVC IOERADR(4),2(R4) MOVE IT INTO IOERADR 00752000
- OI IOERIND3,IOERDASD INDICATE HOME ADDRESS 00754000
- SKRET EQU * @VA00684 00755000
- LTR R5,R5 TEST FOR 1'ST ENTRY INTO THIS MODULE 00756000
- BCR 7,R5 BRANCH IF 1'ST TIME 00757000
- TM IOERIND3,IOERDASD IS HA COMPARAND VALID? @VA00684 00758000
- BZ PROGERR NOPE, DON'T BOTHER TO CHECK IT @VA00684 00759000
- CLC IOERADR(4),IOERADR+4 ENTRY MUST BE RESULT OF 00760000
- BNE RECAL A READ HOME ADDRESS BECAUSE OF 00761000
- PROGERR OI IOERFLG2,IOERCEMD DO NOT RECORD PROGRAMING ERRORS. 00762000
- B FATAL A NO RECORD FOUND CONDITION. 00763000
- SPACE 1 00764000
- SPACE 1 00765000
- DSKCAL NI IOERFLG2,X'FF'-IOERCAL TURN OFF RECALIBRATE BIT 00766000
- MVC IOBRCAW,IOBCAW IN IOERBLOK AND RETRY OPERATION. 00767000
- SPACE 1 00768000
- RETRY MVC IOBRCAW(L1),IOBCAW GET ORIGINAL KEY FOR RESTART @V56BDA8 00769100
- RETRYK00 OI IOBFLAG,IOBRSTRT TURN ON RESTART FLAG @V56BDA8 00769200
- NI IOERMSG,0 RESET MSG CODE. 00770000
- NI IOERIND3,IOERDASD RESET ALL BUT HOME ADDR. INDICATOR. 00771000
- NI IOERIND4,0 RESET OPERATOR FLAGS. 00772000
- BAL R5,CKIOB MAKE SURE THAT STORAGE IS 00773000
- EXIT IOS WILL RETRY OPERATION 00776000
- * THIS ROUTINE WILL CHECK FOR A SECOND IOERBLOK . IF ONE WAS 00777000
- * OBTAINED STORAGE WILL BE GIVEN BACK TO THE SYSTEM. 00778000
- * 00779000
- CKIOB L R1,IOBIOER GET ADDR. OF 2ND IOERBLOK @VA08187 00780000
- LA R1,0(R1) CLEAR HI BYTE 00781000
- LTR R1,R1 WAS BLOCK REALY OBTAINED ? 00782000
- BZ NOTUSED BRANCH IF NO. 00783000
- TM IOERCSW+5-IOERBLOK(R1),IFCC+CCC+CDC IS CHANNEL @VA01254 00784000
- * ERROR 00785000
- * INDICATED ? 00786000
- BZ CKEND NO, GO FRET IOERBLOK @VA01254 00787000
- LR R3,R1 SAVE THE IOERBLOK POINTER @VA01254 00788000
- L R1,IOERCCRA-IOERBLOK(R3) CHANNEL REC ADDR @V508690 00789500
- L R0,IOERCCRL-IOERBLOK(R3) CHANNEL REC LENGTH @V508690 00790500
- CALL DMKFRET RELEASE STORAGE @VA01254 00793000
- LR R1,R3 GET IOERBLOK POINTER @VA01254 00794000
- CKEND EQU * @VA01254 00795000
- LA R0,IOERSIZE LOAD IOERBLOK SIZE. 00796000
- AH R0,IOEREXT-IOERBLOK(,R1) INCLUDE EXTRA SIZE (IF ANY) 00797000
- CALL DMKFRET 00798000
- NOTUSED MVC IOBIOER,ZEROES CLEAR ADDRESS IN IOBLOK IN CASE 00799000
- BR R5 RETURN TO CALLER. 00800000
- SPACE 1 00801000
- CALLWTR EQU * CALL MSG WRITTER 00802000
- TM IOERFLG2,IOERCEMD ERROR FROM DIAG INTERFACE 00803000
- BO FATAL EXIT IF DIAG ERROR 00804000
- BAL R5,CKIOB RETURN ANY IOERBLOK 00805000
- L R0,=C'DAS ' IDENT INFO FOR MSG WRITTER 00806000
- OI IOERFLG2,IOERMSW SET MESSAGE WRITER INDICATOR @VM08912 00807000
- MVI SAVEWRK2+2,X'00' CLEAR SP CON INDICATOR FOR @VA07193 00807020
- * MVI BELOW 00807040
- ST R9,SAVEWRK3 SAVE REG 9 @VA05482 00807050
- TM RDEVFLAG,RDEVOWN SYSTEM PACK? @VA05483 00807070
- BNO CALLMSW NO. CONSOLE SPOOLING OK @VA05483 00807090
- TM RDEVFLAG,RDEVPREF IS IT PREFERRED FOR PAGING? @VA11702 00807092
- BO CALLMSW YES,CONSOLE SPOOLING OK @VA11702 00807094
- L R11,ASYSOP GET VMBLOK OF SYSTEM OPERATOR @VA04231 00807300
- LTR R11,R11 SYSTEM OPERATOR LOGGED ON? @VA04231 00807400
- BNP CALLMSW NO, NO PROBLEM @VA04231 00807500
- USING VMBLOK,R11 @VA04231 00807700
- LH R9,VMVTERM LOCATE VIRTUAL CONSOLE @VA04231 00807800
- LTR R9,R9 IS THERE ONE? @VA04231 00807900
- BM CALLMSW NO, GO PUT OUT MSG @VA04231 00808000
- AL R9,VMDVSTRT INDEX TO THE VDEVBLOK @VA04231 00808100
- USING VDEVBLOK,R9 @VA04231 00808200
- TM VDEVFLAG,VDEVCSPL OPER SPOOLED HIS CONSOLE? @VA04231 00808300
- BZ CALLMSW NO, CONTINUE @VA04231 00808400
- MVI SAVEWRK2+2,X'E2' REMEMBER THAT HE DID @VA04231 00808500
- NI VDEVFLAG,X'FF'-VDEVCSPL TURN OFF CONS SPOOLING @VA04231 00808600
- DROP R11 @VA04231 00808700
- CALLMSW L R11,SAVER11 RELOAD VMBLOK PTR @VA03414 00808800
- CALL DMKMSWR GO TO MSG WTR MODULE @VA03414 00808900
- CLI SAVEWRK2+2,X'E2' DID WE TURN OFF CONS SPOOLING? @VA04231 00809000
- BNE CLEARMWR NO, CONTINUE @VA04231 00809100
- OI VDEVFLAG,VDEVCSPL PUT HIS FLAG BACK ON @VA04231 00809200
- DROP R9 @VA04231 00809300
- CLEARMWR L R9,SAVEWRK3 RESTORE R9 @VA04231 00809400
- NI IOERFLG2,X'FF'-IOERMSW CLEAR MESSAGE WRITER FLAG@VM08912 00810000
- TM IOERFLG1,IOERPEND CHECK FOR INT. REQ. 00811000
- BZ NOTINT IF SO EXIT BACK TO IOS WITH 00812000
- NI IOBFLAG,X'FF'-IOBRSTRT NO RESTART INDICATED 00813000
- L R1,IOERCPEX SEE IF DEVICE END I/O TO REDRIVE @VA12941 00814000
- LTR R1,R1 ANY CPEXBLOKS ON QUEUE @VA12941 00814050
- BZ DASSDR NO DE I/O TO REDRIVE @VA12941 00814100
- UNSTKNXT L R5,CPEXFPNT-CPEXBLOK(R1) NEXT CPEX ON CHAIN @VA12941 00814150
- CALL DMKSTKCP STACK CPEXBLOK @VA12941 00814200
- LTR R5,R5 ANY MORE ON CHAIN @VA12941 00814250
- BZ CLEARPNT NO, ZERO ANCHOR AND EXIT @VA12941 00814300
- LR R1,R5 CPEXBLOK ADDRESS TO R5 @VA12941 00814350
- B UNSTKNXT STACK THEM ALL @VA12941 00814400
- CLEARPNT ST R5,IOERCPEX CLEAR ANCHOR @VA12941 00814450
- DASSDR B SDRCOUNT GO UPDATE COUNTERS, THEN EXIT @VA12941 00814500
- NOTINT TM IOERIND4,IOERSTRT CHECK MESSAGE RESPONSE FOR RESTART 00815000
- BZ IGNORE BRANCH IF NO RESTART 00816000
- MVC IOBRCNT,F1+2 RESET ERROR COUNTER TO 1 00817000
- MVC IOBRCAW,IOBCAW AND SET RESTART CAW 00818000
- B RETRY TO RE-EXECUTE ORIGINAL CHANNEL PROGRAM 00819000
- IGNORE TM IOERIND4,IOERIGNR TEST FOR OPERATOR IGNORE RESPONSE 00820000
- BO FINISH BRANCH IF YES 00821000
- SPACE 1 00822000
- FATAL EQU * @VA03757 00822100
- BAL R5,CKIOB CONDITION MUST BE FATAL... @VA03757 00822200
- OI IOBSTAT,IOBFATAL EXIT WITH FATAL BIT ON @VA03757 00822300
- SPACE 1 00822400
- SDRCORR EQU * HERE IF ERROR WAS CORRECTED.... @VA03757 00822500
- BAL R5,FRETPTR RELEASES RECOVERY CCW WORK AREA @V56BDA8 00823010
- * THAT IS HANGING OFF OF THE IOERBLOK THAT 00823020
- * IS POINTED TO BY R7. 00823030
- NI IOBFLAG,X'FF'-IOBERP-IOBRSTRT 00824000
- SDRCOUNT CLI RDEVTYPE,TYP2314 SDR TYPE ?? @VA03757 00825000
- BNE NOCALL NO, DONT CALL UPDATE @VA03757 00825100
- SR R1,R1 ZERO PARAMETER REG @VA03757 00825200
- CALL DMKIOEST GO TO STATISTICAL COUNTER UPDATE @VA03757 00825300
- NOCALL EQU * @VA03757 00825400
- EXIT 00826000
- SPACE 1 00827000
- FINISH BAL R5,CKIOB OPERATOR ANSWERED WITH IGNORE OPTION. 00828000
- BAL R5,FRETPTR RELEASE STORAGE USED AND EXIT. 00829000
- NI IOBFLAG,X'FF'-IOBERP-IOBRSTRT 00830000
- NI IOBSTAT,X'FF'-IOBFATAL 00831000
- EXIT 00832000
- SPACE 1 00833000
- HISPEED MVC IOERVSER-IOERBLOK(6,R7),RDEVSER RESTORE VOLID @VA02536 00834000
- CLC IOBRCNT,F1+2 @VA02536 00835000
- BNE TESTSTAT 00836000
- TM RDEVTYPE,TYP2305 00837000
- BO T2305 00838000
- TM IOERDATA+2,X'10' 00839000
- BZ TESTPERM 00840000
- LA R0,IOERSIZE 00841000
- CALL DMKFREE 00842000
- MVC 0(IOERSIZE*8,R1),IOERBLOK 00843000
- MVC IOERVSER-IOERBLOK(6,R1),RDEVSER MOVE IN THE OLD VOLID 00844000
- ST R1,IOERPNT 00845000
- OI IOERFLG2,IOERSTAT 00846000
- MVC IOBRCAW,IOBCAW 00847000
- B RETRY 00848000
- T2305 TM IOERDATA+2,X'80' 00849000
- BZ TESTPERM 00850000
- *********************************************************************** 00851010
- * FOR CLARITY... SIZE OF THE EXTENSION HAS TO BE CALCULATED AS WHATS 00851020
- * LEFT OF THE BUFFERED DATA SIZE (E.G. 128 FOR THIS 2305) AFTER TAKING 00851030
- * OUT THAT PORTION PLACED FROM IOERDATA TO THE END OF THE IOERBLOK. 00851040
- * AS THIS IS VARIABLE IT SHOULD BE CALCULATED AS THE OVERALL SIZE LESS 00851050
- * THE AREA PRECEDING IOERDATA... ALL OF COURSE IN NUMBER OF DOUBLEWORDS 00851060
- *********************************************************************** 00851070
- LA R0,IOERSIZE+(128/8-(IOERSIZE-(IOERDATA-IOERBLOK)/8)) 00851080
- * PUT IN THE SIZE PLUS EXTENSION RESIDUAL @VA09736 00851090
- CALL DMKFREE 00852000
- MVI 0(R1),X'00' INIT TO ZERO @VA09736 00852010
- *********************************************************************** 00852020
- * NOW TO CLEAR THE IOERBLOK PLUS THE RESIDUAL EXTENSION OF THE 2305'S 00852030
- * 128 BYTES OF BUFFER DATA 00852040
- *********************************************************************** 00852050
- MVC 1(((IOERSIZE*8)+(128-((IOERSIZE*8)-(IOERDATA-IOERBLOK)))*00852060
- -1),R1),0(R1) CLEAR IT OUT @VA09736 00852070
- MVC 0(IOERSIZE*8,R1),IOERBLOK 00853000
- MVI IOEREXT+1-IOERBLOK(R1),128/8-(IOERSIZE-(IOERDATA-IOERBLO*00854010
- K)/8) PUT IN THE SIZE OF THE EXTENSION @VA09736 00854020
- ST R1,IOERPNT 00856000
- OI IOERFLG2,IOERSTAT 00857000
- B CLRUNIT 00858000
- SPACE 1 00859000
- TESTSTAT TM RDEVTYPE,TYP2305 00860000
- BO STAT2305 00861000
- DROP R7 00862000
- USING IOERBLOK,R3 00863000
- TM IOERDATA+2,X'10' 00864000
- BZ TESTPERM 00865000
- LA R0,IOERSIZE 00866000
- CALL DMKFREE 00867000
- MVC 0(IOERSIZE*8,R1),IOERBLOK 00868000
- MVC IOERVSER-IOERBLOK(6,R1),RDEVSER MOVE IN THE OLD VOLID 00869000
- DROP R3 00870000
- USING IOERBLOK,R7 00871000
- L R4,IOBRCAW LOOK FOR ZERO RESTART CAW @VA13021 00871100
- LTR R4,R4 TEST FOR IT @VA13021 00871300
- BNZ BYMVCAW NON-ZERO ... O.K. @VA13021 00871500
- MVC IOBRCAW,IOBCAW ZERO ... USE THE ORIGINAL CAW @VA13021 00871700
- BYMVCAW DS 0H @VA07807 00872100
- LA R4,IOERPNT 00873000
- BAL R5,NXTPTR 00874000
- OI IOBFLAG,IOBRSTRT TURN ON RESTART FLAG @VA07807 00874100
- NI IOERMSG,0 RESET MSG CODE @VA07807 00874200
- NI IOERIND3,IOERDASD RESET ALL BUT HOME ADDR IND @VA07807 00874300
- NI IOERIND4,0 RESET OPERATOR FLAGS @VA07807 00874400
- LR R4,R15 SAVE R15 ACROSS FRET @VA07807 00874500
- BAL R5,CKIOB MAKE SURE THAT STORAGE IS @VA07807 00874600
- IC R1,IOBCAW GET ORIGINAL KEY @VA07807 00874800
- STC R1,IOBRCAW STORE IN RESTART CAW @VA07807 00874900
- EXIT IOS WILL RETRY OPERATION @VA07807 00875000
- SPACE 1 00876000
- STAT2305 EQU * 00877000
- DROP R7 00878000
- USING IOERBLOK,R3 00879000
- TM IOERDATA+2,X'80' 00880000
- BZ TESTPERM 00881000
- *********************************************************************** 00882010
- * FOR CLARITY... SIZE OF THE EXTENSION HAS TO BE CALCULATED AS WHATS 00882020
- * LEFT OF THE BUFFERED DATA SIZE (E.G. 128 FOR THIS 2305) AFTER TAKING 00882030
- * OUT THAT PORTION PLACED FROM IOERDATA TO THE END OF THE IOERBLOK. 00882040
- * AS THIS IS VARIABLE IT SHOULD BE CALCULATED AS THE OVERALL SIZE LESS 00882050
- * THE AREA PRECEDING IOERDATA... ALL OF COURSE IN NUMBER OF DOUBLEWORDS 00882060
- *********************************************************************** 00882070
- LA R0,IOERSIZE+(128/8-(IOERSIZE-(IOERDATA-IOERBLOK)/8)) 00882080
- * PUT IN THE SIZE PLUS EXTENSION RESIDUAL @VA09736 00882090
- CALL DMKFREE 00883000
- MVI 0(R1),X'00' INIT TO ZERO @VA09736 00883010
- *********************************************************************** 00883020
- * NOW TO CLEAR THE IOERBLOK PLUS THE RESIDUAL EXTENSION OF THE 2305'S 00883030
- * 128 BYTES OF BUFFER DATA 00883040
- *********************************************************************** 00883050
- MVC 1(((IOERSIZE*8)+(128-((IOERSIZE*8)-(IOERDATA-IOERBLOK)))*00883060
- -1),R1),0(R1) CLEAR IT OUT @VA09736 00883070
- MVC 0(IOERSIZE*8,R1),IOERBLOK 00884000
- MVI IOEREXT+1-IOERBLOK(R1),128/8-(IOERSIZE-(IOERDATA-IOERBLO*00885010
- K)/8) PUT IN THE SIZE OF THE EXTENSION @VA09736 00885020
- DROP R3 00887000
- USING IOERBLOK,R7 00888000
- LA R4,IOERPNT 00889000
- BAL R5,NXTPTR 00890000
- CLRUNIT LR R4,R1 00891000
- MVC IOERVSER-IOERBLOK(6,R1),RDEVSER MOVE IN THE OLD VOLID 00892000
- LA R0,2 00893000
- CALL DMKFREE 00894000
- STH R0,IOERDW 00895000
- ST R1,IOERLOC 00896000
- ST R1,IOBRCAW 00897000
- MVC 0(8,R1),UNLOAD 00898000
- MVC 8(8,R1),TICCW 00899000
- SPACE 1 00900000
- LA R4,IOERDATA-IOERBLOK(R4) PUT IT WHERE IT GOES @VA09736 00901010
- AL R4,UNLOAD 00902000
- ST R4,0(R1) 00903000
- L R4,IOBCAW CHAIN A TIC COMD. TO USERS CCW STRING. 00904000
- LA R4,0(R4) 00905000
- AL R4,TICCW 00906000
- ST R4,8(R1) 00907000
- B RETRY 00908000
- NXTPTR LR R15,R4 SAVE IOERPNT @VA08187 00909000
- L R4,0(R4) 00910000
- LTR R4,R4 00911000
- BNZ NXTPTR 00912000
- ST R1,0(R15) CHAIN BLOK IN @VA08187 00913000
- BR R5 00914000
- SPACE 1 00915000
- TESTPERM TM IOERDATA+1,X'80' PERMANENT ERROR CONDITION ? 00916000
- BZ NOTPERM BRANCH NO 00917000
- MVI IOERNUM,PERM SET UP MESSAGE NUMBER. 00918000
- OI IOERIND3,IOERCAN+IOERINFO 00919000
- B CALLWTR 00920000
- SPACE 1 00921000
- NOTPERM TM IOERDATA,X'10' IS THIS AN EQUIP CHECK ERROR 00922000
- BZ NOTEQIP 00923000
- MVC IOBRCAW,IOBCAW SET UP CAW. 00924000
- CLC IOBRCNT,F10+2 HAS THIS ERROR OCCURRED 10 TIMES ? 00925000
- BH EQCK IF YES BRANCH 00926000
- B RETRY 00927000
- SPACE 1 00928000
- NOTEQIP TM IOERDATA,X'20' BUSOUT CHECK ? 00929000
- BO BUSCK BRANCH IF YES 00930000
- TM IOERDATA,X'40' INT. REQ. CONDITION ? 00931000
- BO TSTINT BRANCH IF YES 00932000
- CLI RDEVTYPE,TYP3340 3340 DEVICE TYPE ? @V2A2029 00933000
- BNE NOSEEK NO - DO NOT TEST FOR SEEK CHECK @V2A2029 00934000
- TM IOERDATA,X'01' SEEK CHECK ERROR ? @V2A2029 00935000
- BO SEEKCK YES --BRANCH @V2A2029 00936000
- NOSEEK EQU * @V2A2029 00937000
- TM IOERDATA,X'80' COMMAND REJECT ERROR ? 00938000
- BZ NOTCOMRJ NO, DO NEXT TEST @V56BDA8 00939100
- * NOTE: THE IOBALTSK FLAG, TESTED BELOW, CAUSES US TO CALL DMKTRKIN, 00939110
- * SO IT HAD BETTER NOT GET SET FOR DEVICES NOT HANDLED BY DMKTRKIN. 00939120
- * PRESENTLY DMKTRKIN IS LIMITED TO HANDLING 3340/3344. 00939130
- TM IOBSTAT,IOBALTSK IS THERE A SEEK TO AN @V56BDA8 00939140
- * ALTERNATE? 00939150
- BO CKALTERR YES, CALL ALTERNATE TRACK ROUTINE@V56BDA8 00939160
- B CHKREL ELSE, TREAT AS COMMAND REJECT @V56BDA8 00939170
- NOTCOMRJ EQU * @V56BDA8 00939180
- TM IOERDATA+1,X'08' NO RECORD FOUND ERROR ? 00940000
- BO PROGERR YES- BRANCH 00941000
- TM IOERDATA,X'04' OVERRUN ERROR ? 00942000
- BO OVERRUN BRANCH YES 00943000
- CLI RDEVTYPE,TYP3340 3340 DEVICE TYPE ? @V2A2029 00944000
- BNE NOTRKC NO - DO NOT TEST FOR TRK COND. @V2A2029 00945000
- TM IOERDATA,X'02' TRACK CONDITION ERROR ? @V2A2029 00946000
- BZ NOTRKC NO, BRANCH TO CHECK NEXT @V56BDA8 00947050
- CKALTERR CALL DMKTRKIN CALL ALTERNATE TRACK ROUTINE @V56BDA8 00947100
- SWITCH @V56BDA8 00947150
- B *+4(R1) BRANCH ON RETURN VECTOR @V56BDA8 00947200
- B FINISH 0 - RECOVERY COMPLETE @V56BDA8 00947250
- B RETRYK00 4 - DO AN IO OPERATION @V56BDA8 00947300
- B EOCERR 8 - END OF CYLINDER CONDITION @V56BDA8 00947350
- B RECURALT 12 - ANOTHER ERROR @V56BDA8 00947400
- B RECFAIL 16 - RECOVERY FAILURE @V56BDA8 00947450
- B FILPROT 20 - FILE PROTECT EXCEPTION @V56BDA8 00947500
- B BDTRK 24 - PERMANENT TRACK CONDITION @V56BDA8 00947550
- B CHKREL 28 - COMMAND REJECT @V56BDA8 00947600
- SPACE 2 00947650
- NOTRKC EQU * @V2A2029 00948000
- TM IOERDATA+1,X'40' IS THIS A TRACK OVERFLOW 00949000
- BO TRKOV BRANCH YES. 00950000
- * 00951000
- TM IOERDATA,X'08' DATA CHECK ERROR ? 00952000
- BO DATCHECK BRANCH IF YES 00953000
- TM IOERDATA+1,X'20' EOC CONDITION 00954000
- BO EOCERR YES--DO NOT RECORD @VA02358 00955000
- TM IOERDATA+1,X'04' FILE PROTECT ERROR ? 00956000
- BO FILPROT BRANCH IF YES. 00957000
- B SHDNOT 00958000
- DATCHECK TM IOERDATA+2,X'40' CORRECTABLE ERROR ? 00959000
- BO CORRERR YES -- @V2A2029 00960000
- TM RDEVTYPE,TYP2305+TYP3340 3340 OR 2305 ? @V2A2029 00961000
- BZ DATAMSG NO, BRANCH-GIVE ERROR MSG @V2A2029 00962000
- CLC IOBRCNT(2),F10+2 OVER 10 RETRIES ? @V2A2029 00963000
- BH DATAMSG YES, BRANCH- GIVE ERROR MSG @V2A2029 00964000
- MVC IOBRCAW,IOBCAW SET UP RESTART ADDRESS @V2A2029 00965000
- B RETRY RETRY THE OPERATION @V2A2029 00966000
- CORRERR LA R0,20 GET FREE STORAGE @V2A2029 00967000
- CALL DMKFREE 00968000
- ST R1,IOERLOC STORE STORAGE LOCATION 00969000
- STH R0,IOERDW STORE SIZE OF STORAGE . 00970000
- LR R9,R1 SET BUFFER ADDRESS 00971000
- XC 0(160,R9),0(R9) CLEAR BUFFER 00972000
- USING ECFDSECT,R9 00973000
- STM R2,R5,ECFREG2 SAVE REGS 2-5 @VA08187 00974000
- ST R11,ECFREG11 SAVE REG.11 00975000
- LH ERREG2,IOERDATA+18 LOAD BACKWARD DISP. 00976000
- N ERREG2,XRIGHT16 CLEAR HI ORDER BYTES 00977000
- L CCWREG,IOERCSW PICK UP CCW ADDR. FROM CSW 00978000
- LA CCWREG,0(CCWREG) CLEAR HI ORDER BYTE 00979000
- LTR CCWREG,CCWREG IS CCW ADDR. PRESENT 00980000
- BZ EQCK IF NOT TREAR AS EQUIP CHECK 00981000
- S CCWREG,F8 SUBTRACT 8 GIVING TRUE CCW ADDRESS 00982000
- BM EQCK IF NEGATIVE, INDICATE EQUIPMENT @VM08849 00983000
- * CHECK 00984000
- L R1,IOBCAW POINT AT FIRST CCW @VA04842 00984575
- LA R1,0(,R1) CLEAR KEY @VA04842 00985150
- SLR R15,R15 CLEAR RESTART REGISTER @VA08187 00986300
- CHKZERO CLI 0(CCWREG),X'00' IS THIS A DATA CHAIN CCW? @VA04842 00986875
- BNE CHKCD FIND VALID RESTART CCW @VA12071 00988050
- SPACE , @VA04842 00990900
- CHKFIRST S CCWREG,F8 BACK UP TO PREVIOUS CCW @VA04842 00991475
- B CHKZERO KEEP LOOKING... @VA04842 00992050
- SPACE , @VA04842 00992625
- CHKCD S R1,F16 BEGINNING OF FIRST RCWTASK @VA04842 00993200
- L R0,FFS FOR RCWHEAD COMPARE @VA12071 00993250
- CH R0,12(,R1) CCWREG REALLY FIRST IN RCWTASK? @VA12071 00993300
- BNE BYPASSW NO... FIND VALID RESTART CCW @VA12071 00993350
- CHKCD1 LH R0,10(,R1) GET COUNT OF CCWS @VA04842 00993775
- LR R2,R1 R2 = RCWTASK NOW UNDER SCRUTINY @VA04842 00994350
- LA R1,8(,R1) POINT TO FIRST CCW-8 @VA04842 00994925
- NEXTCCW LA R1,8(,R1) POINT AT NEXT CCW @VA04842 00995500
- CLI 0(R1),X'0B' IS CMD A SEEK? @VA12071 00995550
- BE UPDTSEEK YES, REMEMBER IT @VA12071 00995600
- CLI 0(R1),X'07' IS IT THIS SEEK? @VA12071 00995650
- BNE NOTSEEK CARRY ON @VA12071 00995700
- UPDTSEEK EQU * @VA12071 00995750
- ST R3,SAVEWRK4 SAVE R3 @VA12071 00995800
- L R3,0(R1) PICK UP ADDR. OF @VA12071 00995850
- LA R3,0(R3) SEEK DATA AND @VA12071 00995900
- MVC IOERADR(4),2(R3) SAVE THE LAST SEEK DONE @VA12071 00995950
- L R3,SAVEWRK4 RESTORE R3 @VA12071 00996000
- NOTSEEK EQU * @VA12071 00996050
- CLR R1,CCWREG IS IT 'OUR' CCW? @VA04842 00996075
- BE CHKCCW2 IF SO, LOOK NO FURTHER @VA04842 00996650
- CLI 0(R1),CDTIC CHAIN DATA TIC CCW? @VA04842 00997225
- BE CHKCCW YES...SEE WHERE IT GOES @VA04842 00997800
- CLI 0(R1),X'08' ORDINARY TIC? @VA04842 00998375
- BE NEXTCCW1 FORGET IT...TRY AGAIN @VA04842 00998950
- TM 4(R1),CD START OF CD CHAIN? @VA04842 00999525
- BO MAYBE LET'S SEE @VA04842 01000100
- NEXTCCW1 SLR R15,R15 CLEAR REG15 @VA08187 01000675
- B CHKCCW1 CONTINUE LOOKING... @VA04842 01001250
- SPACE , @VA04842 01001825
- CHKCCW CLM CCWREG,B'0111',1(R1) IS IT THE ONE WE WANT? @VA04842 01002400
- BE DATACCW YES...THEN R6 IS THE RESTART CCW @VA04842 01002975
- B CHKCCW1 NO...KEEP LOOKING @VA04842 01003550
- SPACE , @VA04842 01004125
- MAYBE LTR R15,R15 IS REG15 VALID @VA08187 01004700
- BNZ CHKCCW1 YES...SAVE IT @VA04842 01005275
- LR R15,R1 REMEMBER POSSIBLE RESTART ADDRESS@VA08187 01005850
- CHKCCW1 BCT R0,NEXTCCW CHECK ENTIRE RCWTASK? @VA04842 01006425
- L R1,0(,R2) POINT AT NEXT RCWTASK @VA04842 01007000
- LTR R1,R1 IS THERE ONE? @VA04842 01007575
- BNZ CHKCD1 YES...KEEP LOOKING @VA04842 01008150
- CHKCCW2 LTR R15,R15 IS REG15 VALID @VA08187 01008725
- BZ BYPASSW THEN USE CCWREG TO RESTART @VA04842 01009300
- DATACCW LR CCWREG,R15 GET ADDRESS OF CHAINING CCW @VA08187 01009875
- BYPASSW EQU * @VA04842 01010450
- ST R11,ECFREG11 SAVE IT @VA08385 01010500
- MVC ECFCNT+2(2),6(CCWREG) MOVE IN CCW CNT. 01012000
- CLI RDEVTYPE,TYP2305 2305 TYPE ECF CORRECTION ? @V304498 01013000
- BE DISPZ YES, APPLY 2305 ECF @V304498 01014000
- MVC TOTALCNT+1(3),IOERDATA+15 FETCH RESTART DISP. 01015000
- L ERREG1,TOTALCNT LOAD NUMBER READ BY C.U. 01016000
- SR ERREG1,ERREG2 CALC FORWARD DISP. 01017000
- * ERROR DISP OF 3 OR MORE USE SENSE BYTES 20,21,22 01018000
- * ERROR DISP OF 2 USE SENSE BYTES 21,22 01019000
- * ERROR DISP OF 1 USE SENSE BYTE 22 01020000
- C ERREG2,F2 BACKWARD DISP OF 2 @VM08849 01021000
- BH ECCNT NO - USE 3 BYTE ECC COUNT @VM08849 01022000
- LR ERREG3,ERREG2 SET UP FOR COUNT OF TWO @VM08849 01023000
- BE ECADDR YES - COUNT EQUALS 2 @VM08849 01024000
- BCT ERREG2,LENCHK DISP EQUAL ZERO--BRANCH @VA02257 01025000
- B ECADDR ERREG3 EQUALS 1 @VM08849 01026000
- * 01027000
- * CALCULATE FORWARD DISPLACEMENT FOR 2305 01028000
- * 01029000
- DISPZ DS 0H CONNECTOR 01030000
- L ERREG1,ECFCNT GET CCW CNT. 01031000
- SR ERREG1,ERREG2 DECR BY ECC DISP. 01032000
- LH ERREG2,IOERCSW+6 LOAD RESIDUAL CNT. 01033000
- N ERREG2,XRIGHT16 CLEAR HI ORDER BYTES 01034000
- SR ERREG1,ERREG2 DECR BY RESIDUAL CNT. 01035000
- BM OVERRUN2 BRANCH ON NEGATIVE DISP. @VA08385 01036100
- * 01037000
- ECCNT LA ERREG3,3 SET LOOP TO 3 @VM08849 01038000
- ECADDR LA ERREG2,IOERDATA+23 POINT TO ECC BYTE+3 @VM08849 01039000
- SR ERREG2,ERREG3 POINT TO CORRECT ECC BYTE @VM08849 01040000
- ECFLOOP1 CL ERREG1,ECFCNT IS ERROR IN THIS SEG ? 01041000
- BNL ENDSEG BRANCH IF NO 01042000
- * 01043000
- * CALCULATE FORWARD ERROR DISPLACEMENT FOR 3330/40/50/80 HRC011DK 01044490
- * @VA00922 01045000
- ST ERREG1,IDALCNT SAVE FWD DISP IN CASE IDAL @VA03061 01046000
- TM 4(CCWREG),SKIP SUPPRESS DATA FLG. ON ? @VA00922 01047000
- BO ECFINCR YES - @VA00922 01048000
- L R15,0(CCWREG) GET DATA ADDR. FROM CCW @VA08187 01049000
- LA R15,0(,R15) REMOVE CMD. CODE @VA08187 01050000
- TM 4(CCWREG),IDA IS IDAL FLG. ON ? @VA00922 01051000
- BO IDALIST YES - GO FIND RIGHT IDA WORD @VA00922 01052000
- AR R15,R1 NO - ADD FWD DISP. VALUE @VA08187 01053000
- B ECFBYTE OR' IN CORRECTION BYTES @VA00922 01054000
- SPACE 1 @VA00922 01055000
- * HERE TO PROCESS ERROR'S IN IDAL CCW STRINGS @VA00922 01056000
- * @VA00922 01057000
- IDALIST L R2,0(,R15) GET ENTRY WITHIN IDAL LIST @VA08187 01058000
- L R3,F4096 CHECK BOTH HALFS OF PAGE @VA00922 01059000
- O R2,=X'00000800' FORCE TO 2'ND HALF OF PAGE @VA00922 01060000
- N R2,F4095 ONLY LEAVE DISP. OF IDAL WORD @VA00922 01061000
- SLR R3,R2 SUBTRACT OUT DISP. VALUE @VA00922 01062000
- CL R3,IDALCNT IS ERROR IN THIS IDA WORD ? @VA00922 01063000
- BH FNDIDAW YES - @VA03061 01064000
- L R2,IDALCNT NO - GET REMAINING BYTE COUNT @VA00922 01065000
- SLR R2,R3 REDUCE COUNT BY THIS IDA WORD @VA00922 01066000
- ST R2,IDALCNT SAVE NEW RESULT @VA00922 01067000
- LA R15,4(,R15) POINT TO NEXT IDA WORD @VA08187 01068000
- B IDALIST KEEP LOOKING FOR CORRECT IDA WORD@VA00922 01069000
- FNDIDAW L R2,0(,R15) LOAD ADDRESS FROM IDA WORD @VA08187 01070000
- AL R2,IDALCNT ADD IN RECOMPUTED DISP. @VA00922 01071000
- NXTBYTE EQU * @VA09106 01072100
- XC 0(1,R2),0(ERREG2) OR IN CORRECTION BYTE @VA09106 01072200
- B ECFINCR GO INCREMENT FOR NEXT BYTE @VA03061 01073000
- * @VA00922 01074000
- * HERE TO EXCLUSIVE OR ECC BYTE INTO STORAGE FOR CHANNEL @VA00922 01075000
- * PROGRAMS THAT DO NOT CONTAIN AN IDAL LIST @VA00922 01076000
- * @VA00922 01077000
- ECFBYTE XC 0(1,R15),0(ERREG2) APPLY CORRECTION TO CORE @VA08187 01078000
- ECFINCR DS 0H CONNECTOR 01079000
- LA ERREG2,1(ERREG2) POINT TO NEXT ECC BYTE 01080000
- ECFINCR1 LA ERREG1,1(ERREG1) INCR DISP. VALUE 01081000
- BCT ERREG3,ECFLOOP1 DECR LOOP CTR. 01082000
- L R11,ECFREG11 MAKE SURE IT'S SAVED @VA08385 01082500
- SPACE 1 01083000
- CLI RDEVTYPE,TYP2305 PROCESS 2305 CHAN PROGRAM @V304498 01084000
- BE ECFOVCK YES, TEST FOR CMD CHAINING @V304498 01085000
- B LENCHK CORRECTION DONE -- GO CHECK LEN @VA03061 01086000
- SPACE 1 01087000
- ENDSEG EQU * 01088000
- CLI RDEVTYPE,TYP2305 PROCESS 2305 CHAN PROGRAM ? @V304498 01089000
- BE ECFOVCK YES, CHECK COMMAND CHAINING ? @V304498 01090000
- TM 4(CCWREG),X'80' IS THIS CCW DOING ANY DATA CHAINING 01091000
- BZ LENCHK BRANCH IF NO. 01092000
- L R15,TOTALCNT LOAD TOTAL BYTES TRANSFERRED @VA08187 01093000
- S R15,ECFCNT DECREASE BY CCW CNT @VA08187 01094000
- ST R15,TOTALCNT STORE NEW RESULT @VA08187 01095000
- S ERREG1,ECFCNT DECR DISP BY CCW CNT. 01096000
- BM SETLEN BRANCH IF DISP. NEGATIVE 01097000
- LA CCWREG,8(CCWREG) INCR TO NEXT CCW 01098000
- TM 0(CCWREG),X'08' IS THIS A TIC CCW @VA00669 01099000
- BZ SETECNT NO @VA00669 01100000
- TM 0(CCWREG),X'07' TRY OTHER BITS @VA00669 01101000
- BNZ SETECNT NOT A TIC CCW @VA00669 01102000
- L CCWREG,0(CCWREG) PICK UP NEXT CCW ADDR. 01103000
- SETECNT MVC ECFCNT+2(2),6(CCWREG) UPDATE COUNT AREA 01104000
- B ECFLOOP1 01105000
- SPACE 1 01106000
- LENCHK TM IOERDATA+23,X'01' DID CONTROL UNIT INDICATE INCORRECT 01107000
- BZ MER210 BRANCH IF NO 01108000
- CLC TOTALCNT(4),ECFCNT COMPARE COUNT 01109000
- BNE MER210 BRANCH ON INCORRECT LEN. 01110000
- * IF NO INCORRECT LENGTH TREAT THIS ERROR AS A EQUIP. CHECK 01111000
- * 01112000
- * 01113000
- MVC IOBRCAW,IOBCAW SET UP RESTART CAW 01114000
- CLC IOBRCNT,F10+2 HAS ERROR OCCURRED 10 TIMES ? 01115000
- BNH RETRY BRANCH IF NO 01116000
- B EQCK CALL MESSAGE WRITTER 01117000
- SPACE 1 01118000
- MER210 EQU * 01119000
- XC IOBCSW+6(2),IOBCSW+6 CLEAR CSW RESIDUAL COUNT @VA09516 01120100
- NI IOBCSW+5,255-IL TURN OFF INCORRECT LENGTH @VA09516 01120300
- CLC TOTALCNT(4),ECFCNT WAS FULL BLOCK TRANSFERRED @VA09516 01120500
- BE ECFOVCK YES, LENGTH OK @VA09516 01120700
- L ERREG2,ECFCNT GET ORIGINAL LENGTH @VA09516 01120900
- S ERREG2,TOTALCNT SUBTRACT ACTUAL BYTES READ @VA09516 01121100
- BM SETLEN INCORRECT LENGTH IF NEGATIVE @VA09516 01121300
- STH ERREG2,IOBCSW+6 UPDATE CSW @VA09516 01121500
- SETLEN EQU * @VA02277 01122000
- TM 4(CCWREG),X'20' SUPPRESS LEN. BIT ON ? 01123000
- BO ECFOVCK BRANCH IF YES 01124000
- OI IOBCSW+5,IL SET INCORRECT LENGTH BIT IN CSW @VA09516 01125100
- B NOERROR 01126000
- SPACE 1 01127000
- ECFOVCK EQU * 01128000
- TM 4(CCWREG),X'40' IS COMMAND CHAINING BIT ON ? 01129000
- BZ NOERROR BRANCH IF LAST CCW IN CHAIN 01130000
- MVC SECTVAL+1(1),IOERDATA+13 GET SECTOR POINTER 01131000
- LA ERREG2,8(CCWREG) POINT AT NEXT CCW 01132000
- TM 0(ERREG2),X'08' IS THIS CCW A TIC @VA00669 01133000
- BZ NOTIC NO @VA00669 01134000
- TM 0(ERREG2),X'07' TRY OTHER BITS @VA00669 01135000
- BNZ NOTIC NOT A TIC, SKIP @VA00669 01136000
- L ERREG2,0(ERREG2) IF YES POINT TO NEXT CCW 01137000
- ECFBLD EQU * 01138000
- NOTIC CLI RDEVTYPE,TYP3340 3340/3344? @V56BDA8 01139100
- BNE NOTICA NO, SKIP CALL @V56BDA8 01139200
- BAL ERREG4,UPSK3340 ENSURE CORRECT RESTART CCHH @V56BDA8 01139300
- NOTICA TM IOERIND3,IOERDASD IS SEEK ADDR PRESENT? @V56BDA8 01139400
- BO SEEKBLD BRANCH IF YES. 01140000
- B DATAMSG IF SEEK ADDR. NOT PRESENT TREAT AS ERROR 01141000
- * 01142000
- * 01143000
- ********************* 01144000
- SEEKBLD XC CCW1(48),CCW1 CLEAR STORAGE FOR CCW BUILDING.. 01145000
- MVC SEEKADR+2(4),IOERADR MOVE IN SEEK AUG. 01146000
- MVC SEEKADR+5(1),IOERDATA+6 CHANGE LOW ORDER HEAD ADDR. 01147000
- NI SEEKADR+5,X'1F' RESET BIT'S 0-1-2- 01148000
- MVC CCW1,SEEK BUILD MODEL SEEK CCW 01149000
- LA ERREG4,SEEKADR GET ADDR. OF SEEK AUG. 01150000
- AL ERREG4,SEEK AND ADD COMMAND CODE 01151000
- ST ERREG4,CCW1 STORE RESULT IN CCW1 01152000
- CLI RDEVTYPE,TYP2305 USE 2305 CYL/HEAD ADDRESS ? @V304498 01153000
- BNE SECTOR NO, SKIP 2305 CCHH ADDRESS @V304498 01154000
- L2305 MVC SEEKADR+3(1),IOERDATA+5 MOVE IN CYL. ADDR. FOR 2305 01155000
- MVC SEEKADR+5(1),IOERDATA+6 MOVE IN HEAD NUM. FOR 2305 01156000
- SECTOR MVC CCW2,SETSECT BUILD MODEL SECTORE CCW 01157000
- LA ERREG4,IOERDATA+13 RESOLVE ADDRESS FOR CCW 01158000
- AL ERREG4,SETSECT STORE REAL ADDR. 01159000
- ST ERREG4,CCW2 IN CCW 2 01160000
- MVC CCW3,SRCHEQ BUILD MODEL SEARCH CCW 01161000
- LA ERREG4,IOERDATA+8 GET THE ADDRESS OF SRID DATA 01162000
- AL ERREG4,SRCHEQ GET COMMAND CODE 01163000
- ST ERREG4,CCW3 STORE ADDR. AND CC OF CCW 01164000
- MVC CCW4,TICCW BUILD MODEL TIC CCW. 01165000
- LA ERREG4,CCW3 PICK UP ADDR OF SEARCH CCW. 01166000
- AL ERREG4,TICCW INSERT COMMAND CODE 01167000
- ST ERREG4,CCW4 STORE TIC COMMAND AND ADDR. 01168000
- TM 0(ERREG2),X'10' DOES CCW OPERATE ON COUNT FIELD ? 01169000
- BNO BLDCNT IF THERE IS NO COUNT CODE, INCLUDE READ @VA03438 01170000
- * COUNT COMMAND IN CCW CHAIN @VA03438 01171000
- MVC CCW5,TICCW BUILD MODEL TIC CCW 01172000
- LR ERREG4,ERREG2 LOAD CCW ADDR @VA00669 01173000
- LA ERREG4,0(ERREG4) CLEAR OUT PROTECT KEY 01174000
- AL ERREG4,TICCW INSERT TIC COMMAND CODE 01175000
- ST ERREG4,CCW5 STORE COMPLETED CCW 01176000
- B LOADREGS 01177000
- BLDCNT MVC CCW5,RDCOUNT BUILD READ COUNT CCW 01178000
- TM 0(ERREG2),X'80' IS IT A MULTI-TRACK COMMAND @VA03438 01179000
- BNO NOMT IF NOT, BRANCH @VA03438 01180000
- OI CCW5,X'80' ISSUE A MULTI-TRACK READ COUNT @VA03438 01181000
- * COMMAND @VA03438 01182000
- NOMT MVC CCW6,TICCW BUILD TIC CCW @VA03438 01183000
- LR ERREG4,ERREG2 LOAD CCW ADDR @VA00669 01184000
- LA ERREG4,0(ERREG4) CLEAR OUT PROTECT KEY. 01185000
- AL ERREG4,TICCW INSERT 08 COMMAND FOR TIC 01186000
- ST ERREG4,CCW6 STORE COMPLETED CCW 01187000
- LOADREGS LA ERREG4,CCW1 LOAD THE ADDRESS OF THE FIRST CCW 01188000
- ST ERREG4,IOBRCAW SET UP RESTATR CAW ADDRESS. 01189000
- LM R2,R5,ECFREG2 RESTORE REGS 2-5 @VA08187 01190000
- L R11,ECFREG11 01191000
- OI IOERFLG2,IOERECF 01192000
- B RETRY 01193000
- ***** RESTORE ALL REGISTER'S 01194000
- ****** 01195000
- * 01196000
- NOERROR MVI IOBCSW+4,X'0C' SET ON C.E. + D.E. 01197000
- B FINISH 01198000
- SPACE 1 01198050
- RDOPCK EQU * HERE ON FIRST ERROR & DATA CK @VA03757 01198100
- L R3,IOERCSW GET FAILING CCW ADDRESS PLUS 8 @VA03757 01198150
- LA R3,0(,R3) CLEAR HI-ORDER BYTE @VA03757 01198200
- S R3,F8 GET FAILING CCW ADDRESS @VA03757 01198250
- BM NOREAD NO CCW @VA03757 01198300
- TM 0(R3),X'01' WRITE OR CONTROL OP ??? @VA03757 01198350
- BO NOREAD YES, FORGET READ FLAG @VA03757 01198400
- TM 0(R3),X'02' IS IT A READ OP ?? @VA03757 01198450
- BZ NOREAD NO, FORGET READ FLAG @VA03757 01198500
- OI IOERFLG3,IOERREAD TURN ON READ FLAG FOR SDR @VA03757 01198550
- NOREAD EQU * @VA03757 01198600
- BR R5 RETURN TO IN LINE CODE @VA03757 01198650
- SPACE 2 01198672
- UPSK3340 IC R0,IOERDATA+6 XCCXHHHH @V56BDA8 01198674
- SRL R0,5 XXXXXCC @V56BDA8 01198676
- STC R0,IOERADR STORE HIGH CC @V56BDA8 01198678
- NI IOERADR,X'03' CLEAR UNUSED BITS @V56BDA8 01198680
- MVC IOERADR+1(L1),IOERDATA+5 STORE LOW CC @V56BDA8 01198682
- MVC IOERADR+2(L2),ZEROES CLEAR HH FIELD @V56BDA8 01198684
- MVN IOERADR+3(L1),IOERDATA+6 COPY HH @V56BDA8 01198686
- OI IOERIND3,IOERDASD INDICATE GOOD SEEK ADDRESS @V56BDA8 01198688
- BR R5 RETURN TO CALLER @V56BDA8 01198690
- EJECT 01198700
- SPACE 3 01199000
- * BUILD A BUFFER TO READ THE VOLID OF PACK 01199050
- SPACE 01199100
- GETSTBUF LA R0,STATSIZE GET A BUFFER TO READ THE VOL1 @VA08187 01199150
- * LABEL 01199200
- CALL DMKFREE @VA08187 01199250
- LR R4,R1 SAVE THE POINTER TO THE BUFFER @VA08187 01199300
- XC STATDASD(STATSIZE*8),STATDASD ZERO OUT THE @VA08187 01199350
- * BUFFER 01199400
- MVC STATVOL1(6),BLANKS INITIALIZE LABL AND VOL1 @VA08187 01199450
- MVC STATDASD(RDVOLEND-RDVOLID),RDVOLID MOVE MDL CCWS@VA08187 01199500
- LA R14,((RDVOLEND-8)-RDVOLID)/8 GET LOOP COUNT @VA08187 01199550
- LA R1,STATSEEK ADDR OF THE FIRST TO DO @VA08187 01199600
- RESOLVAD L R15,0(R1) GET THE CURRENT ADDRESS @VA08187 01199650
- ALR R15,R4 ADJUST BY BEGINNING OF GOTTEN STG@VA08187 01199700
- ST R15,0(R1) AND RESTORE @VA08187 01199750
- LA R1,8(R1) BUMP TO NEXT CCW @VA08187 01199800
- BCT R14,RESOLVAD CONTINUE UNTIL ALL CCW'S ARE DONE@VA08187 01199850
- BR R5 RETURN TO THE CALLING ROUTINE @VA08187 01199900
- SPACE 3 01199950
- * COMPARE THE VOLID READ TO THE VOLID IN THE REAL DEVICE BLOCK 01200000
- SPACE 01200050
- COMPVOL1 CLC STATVOL1,=C'VOL1' STANDARD VOL 1 LABEL @VA08187 01200100
- BE STANDLBL YES - @VA08187 01200150
- CLC STATVOL1,=C'CMS=' PACK HAVE CMS TYPE LABEL @VA08187 01200200
- BE STANDLBL YES - @VA08187 01200250
- CLC STATVOL1,=C'CMS1' PACK HAVE CMS TYPE LABEL HRC011DK 01200260
- BE STANDLBL YES - HRC011DK 01200270
- MVC STATLABL+4(2),STATLABL MOVE LABEL IN PIECES @VA08187 01200300
- MVC STATLABL(4),STATVOL1 PREVENT OVERLAP @VA08187 01200350
- STANDLBL EQU * HERE FOR STANDARD LABEL @VA08187 01200400
- CLC STATLABL,RDEVSER WAS THE PACK CHANGED ? @VA08187 01200450
- BCR 8,R5 RETURN WITH THE CONDITION CODE @VA08187 01200500
- * SET 01200550
- MVI STATPACK,X'FF' INDICATE PACK WAS CHANGED @VA08187 01200600
- BR R5 RETURN WITH THE CONDITION CODE @VA08187 01200650
- * SET 01200700
- SPACE 3 01200750
- * TEST IF PACK WAS CHANGED AND IN USE BY THE SYSTEM 01200800
- SPACE 01200850
- TESTVOL CLI STATPACK,X'FF' WAS THE PACK CHANGE @VA08187 01200900
- BCR 7,R5 NO- RETURN TO THE CALLER @VA08187 01200950
- SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @VA08187 01201000
- TM RDEVFLAG,RDEVSYS+RDEVOWN WAS PACK IN USE BY @VA08187 01201050
- * SYSTEM 01201100
- BNZ ERROR956 DO NOT MOVE IN NEW VOLID; VARY @VA08187 01201150
- * OFFLINE 01201200
- MVC RDEVSER,STATLABL MOVE IN THE NEW VOLID @VA08187 01201250
- TM RDEVSTAT,RDEVDED DEVICE DEDICATED ? @VA08187 01201300
- BO *+8 YES -- @VA08187 01201350
- OI RDEVFLAG,RDEVMOUT INDICATE VOLUME MOUNTED; NOT @VA08187 01201400
- * ATTACHED 01201450
- CLI RDEVTYPE,TYP3340 3340 TYPE ? @VA08187 01201500
- BCR 7,R5 NO - RETURN TO CALLER @VA08187 01201550
- NI RDEVFTR,X'FF'-(FTRRPS+FTR70MB+FTR35MB) RESET @VA08187 01201600
- TM STATSDAT+2,X'80' RPS FEATURE PRESENT ? @VA08187 01201650
- BZ *+8 NO - @VA08187 01201700
- OI RDEVFTR,FTRRPS INDICATE RPS FEATURE @VA08187 01201750
- TM STATSDAT+2,X'02' 3340 70MB PACK MOUNTED ? @VA08187 01201800
- BZ SET35MB NO -- MUST BE 35MB PACK @VA08187 01201850
- OI RDEVFTR,FTR70MB INDICATE 70MB PACK MOUNTED @VA08187 01201900
- BR R5 RETURN TO CALLER @VA08187 01201950
- SET35MB OI RDEVFTR,FTR35MB INDICATE 35MB PACK MOUNTED @VA08187 01202000
- BR R5 RETURN TO CALLER IF NOT IN USE @VA08187 01202050
- * BY SYSTEM 01202100
- SPACE 1 01202150
- ERROR95F SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @VA08187 01202200
- ERROR956 OI RDEVSTAT,RDEVDISA MARK THE DEVICE OFFLINE @VA08187 01202250
- LH R1,IOBRADD GET THE REAL DEVICE ADDRESS @VA08187 01202300
- CALL DMKCVTBH AND CONVERT IT @VA08187 01202350
- LR R3,R1 SAVE CONVERTED ADDRESS @VA08187 01202400
- LA R0,(L'DAS956+7)/8 GET A MSG BUFFER @VA08187 01202450
- CALL DMKFREE @VA08187 01202500
- MVC 0(L'DAS956,R1),DAS956 MOVE IN THE MSG @VA08187 01202550
- STCM R3,7,DAS956AD(R1) FILL IN THE CONVERTED ADDRESS @VA08187 01202600
- MVC DAS956VS(6,R1),STATLABL THE VOLID ALSO @VA08187 01202650
- LR R3,R0 SAVE THE BUFFER LENGTH (DW) @VA08187 01202700
- LA R0,L'DAS956 SET UP THE MSG LENGTH @VA08187 01202750
- LA R2,DFRET+NORET+OPERATOR+ALARM PARM REG @VA08187 01202800
- CALL DMKQCNWT TELL THE OPERATOR @VA08187 01202850
- BR R5 RETURN TO THE CALLER @VA08187 01202900
- EJECT 01202950
- * 01203000
- * 01203050
- * 01203100
- EQUIP EQU 3 EQUIPMENT CHECK MESSAGE @VA08187 01203150
- MADM EQU 14 MISSING ADDRESS MARKER MESSAGE @VA08187 01203200
- SKCK EQU 7 SEEK CHECK MESSAGE @VA08187 01203250
- INTREQU EQU 1 INTERVENTION REQUIRED MESSA @VA08187 01203300
- PERM EQU 8 @VA08187 01203350
- RECERR EQU 18 @VA08187 01203400
- FALSE EQU 17 @VA08187 01203450
- BDSNS EQU 16 @VA08187 01203500
- PROTECT EQU 13 @VA08187 01203550
- TKOVER EQU 9 @VA08187 01203600
- BUSOUTCK EQU 2 @VA08187 01203650
- DATAER EQU 4 @VA08187 01203700
- OVERERR EQU 5 @VA08187 01203750
- TRKCOND EQU 6 @VA08187 01203800
- REJ EQU 0 @VA08187 01203850
- DAS956 DC C'DMKDAS956A DASD XXX VOLID XXXXXX not mounted; now OFFL*01217490
- INE' 01218000
- DAS956AD EQU 16 DISP OF THE UNIT ADDRESS 01219000
- DAS956VS EQU 26 DISP OF THE VOL SER NO 01220000
- SPACE 01221000
- RDVOLID CCW X'07',STATCCHH-STATDASD,CC+SILI,6 SEEK 01222000
- CCW X'08',STATSRCH-STATDASD,CC+SILI,1 @V407438 01222250
- CCW X'03',0,SILI,1 TIC/NOP FOR 3330V'S @V407438 01222500
- CCW X'31',STATCCHH+2-STATDASD,CC+SILI,5 SRCHID 01223000
- CCW X'08',STATSRCH-STATDASD,CC+SILI,1 TIC 01224000
- CCW X'06',STATVOL1-STATDASD,CC+SILI,10 READ DATA @V2A2029 01225000
- CCW X'04',STATSDAT-STATDASD,SILI+CC,IOERSNSZ SENSE @VA07801 01225500
- CCW X'94',STATSDAT-STATDASD,SILI+CC,IOERSNSZ RELSE @VA07801 01226000
- CCW X'04',STATSDAT-STATDASD,SILI,IOERSNSZ SENSE @VA07801 01226500
- VOL1CCHH DC X'0000000000000300' SEARCH AURGUMENT 01227000
- RDVOLEND EQU * END OF CH PGMS + SEEK/SRCH ARG @V407438 01227250
- SPACE 01227500
- PACKCHG CCW X'A4',IOERDATA-IOERBLOK,SILI,24 BUFFER UNLOAD COMMAND 01228000
- UNLD2305 CCW X'24',IOERDATA-IOERBLOK,SILI,128 DITTO FOR 2305 ONLY 01229000
- SPACE 01230000
- DS 0D 01231000
- RESTORE DC X'1300000060000001' RECALIBRATE CCW 01232000
- TICCCW DC X'0800000020000005' 01233000
- HACCW DC X'1A00000020000005' READ HOME ADDR. CCW 01234000
- SEEK DC X'07' 01235000
- DC AL3(0) 01236000
- DC X'60' 01237000
- DC X'00' 01238000
- DC X'0006' 01239000
- SETSECT DC X'23' SET SECTOR COMMAND 01240000
- DC AL3(0) 01241000
- DC X'60' 01242000
- DC X'00' 01243000
- DC X'0001' 01244000
- SRCHEQ DC X'31' SEARCH ID EQUAL COMMAND 01245000
- DC AL3(0) 01246000
- DC X'60' 01247000
- DC X'00' 01248000
- DC X'0005' 01249000
- TICCW DC X'08' TIC COMMAND CODE 01250000
- DC AL3(0) 01251000
- DC X'60' 01252000
- DC X'00' 01253000
- DC X'0001' 01254000
- RDCOUNT DC X'12' READ COUNT COMMAND CODE 01255000
- DC AL3(0) 01256000
- DC X'70' 01257000
- DC X'00' 01258000
- DC X'0001' 01259000
- UNLOAD DC X'24' BUFFER OFFLINE UNLOAD COMMAND CODE 01260000
- DC AL3(0) 01261000
- DC X'60' 01262000
- DC X'00' 01263000
- DC X'0080' 01264000
- ERREG2 EQU 4 @VA08385 01265100
- CCWREG EQU 5 01266000
- ERREG1 EQU 1 01267000
- ERREG3 EQU 11 @VA08385 01268100
- ERREG4 EQU 5 01269000
- CDTIC EQU X'18' CHAIN DATA TIC OP-CODE @VA04842 01270500
- L1 EQU 1 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 01270610
- L2 EQU 2 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 01270620
- L3 EQU 3 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 01270630
- L4 EQU 4 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 01270640
- LTORG @V407438 01270750
- EJECT 01271000
- COPY IOER GET IOERSNSZ DEFINED @V407438 01271250
- EJECT 01271500
- STATDASD DSECT 01273000
- STATSEEK DS D SEEK CCW 01274000
- STATTIC1 DS D TIC TO "STATSRCH" @V407438 01274250
- STATNOP DS D NOP, END HERE FOR 3330V CYL FAULT@V407438 01274500
- STATSRCH DS D SEARCH ID EQUAL CCW 01275000
- STATTIC DS D TIC CCW 01276000
- STATREAD DS D READ DATA CCW 01277000
- STATSCCW DS D SENSE CCW (3340) @VA07801 01277500
- STATREL DS D RELEASE CCW @VA07801 01278000
- STATSEN DS D SENSE FOR DETECTING RELEASE @VA07801 01278500
- STATCCHH DS D SEARCH AURGUMENT (BBCCHHR) 01279000
- STATVOL1 DS CL4 (VOL1) 01280000
- STATLABL DS CL6 VOLUME SERIAL NUMBER. 01281000
- DS CL4 01282000
- STATPACK DS CL1 PACK CHANGE SWITCH 01283000
- STATCALL DS CL1 CALLED FROM SHUTDOWN 01284000
- STATSDAT DS CL(IOERSNSZ) SENSE INFORMATION @V407438 01285000
- STATREGS DS D GPR7-8 SAVE AREA 01286000
- STATGR13 DS F USED TO SAVE GPR-13 01287000
- DS F 01288000
- ORG STATSEEK 01289000
- STATSNS DS D BUFFER UNLOAD CCW 01290000
- ORG 01291000
- STATSIZE EQU (*-STATDASD)/8 SIZE OF DSECT IN DOUBLE WORDS 01293000
- ECFDSECT DSECT 01294000
- CCW1 DS D 01295000
- CCW2 DS D 01296000
- CCW3 DS D 01297000
- CCW4 DS D 01298000
- CCW5 DS D 01299000
- CCW6 DS D 01300000
- ECFCSW DS D 01301000
- ECFCCW DS D 01302000
- ECFCNT DS F CSW BYTE COUNT @VA09516 01303100
- ECFREG2 DS F 01304000
- ECFREG3 DS F 01305000
- ECFREG4 DS F 01306000
- ECFREG5 DS F 01307000
- ECFREG15 DS F @VA08187 01308000
- ECFBWK DS F 01309000
- ECFFWD DS F 01310000
- ECFCCWRD DS F 01311000
- TOTALCNT DS F NUMBER OF BYTES PROCESSED @VA09516 01312100
- IDALCNT DS F @VA00922 01313000
- ECFREG11 DS F 01314000
- SECTVAL DS H 01315000
- * 01316000
- SEEKADR DS CL6 01317000
- EJECT 01318000
- COPY RBLOKS @V200820 01319000
- COPY VBLOKS @VA04231 01319400
- COPY VMBLOK @VA04231 01319800
- COPY IOBLOKS @V200820 01320000
- COPY DEVTYPES @V200820 01321000
- COPY EQU @V200820 01322000
- COPY SAVE @V200820 01324000
- PSA @V200820 01325000
- END DMKDAS @V200820 01326000
ibm/vm370-lib/cp/dmkdas.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator