EIG TITLE 'DMKEIG (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE INPUT SEQUENCE FIELDS @V200820 00002000 DMKEIG CSECT 00003000 MODULEID DC CL8'DMKEIG' @VA01068 00004000 ********************************************************************** 00005000 * 00006000 * MODULE NAME - DMKEIG 00007000 * 00008000 * FUNCTION 00009000 * THIS ROUTINE WILL ANALYZE THE 2880 CHANNEL LOGOUT AND 00010000 * SET APPROPRIATE BITS IN THE ECSW FIELD ACCORDING TO THE 00011000 * RESULTS OF THIS ANALYSIS. IT WILL ALSO MOVE THE CHANNEL 00012000 * LOGOUT TO THE CHANNEL CHECK RECORD. 00013000 * 00014000 * ENTRY POINTS 00015000 * DMKEIG - FROM THE CHANNEL CONTROL ROUTINE 00016000 * 00017000 * INPUT 00018000 * 1. CHANNEL LOGOUT DATA 00019000 * 2. POINTER TO THE CHANNEL CHECK RECORD 00020000 * 3. POINTER TO THE CCH SWITCH FIELD (ENTSW) 00021000 * 00022000 * OUTPUT 00023000 * 1. APPROPRIATE BITS ARE SET IN THE CCH RECORD 00024000 * FIELD (FAILECSW). 00025000 * 2. THE CHANNEL LOGOUT IS MOVE TO THE CCH RECORD. 00026000 * 00027000 * EXTERNAL REFERENCES 00028000 * THE POINTER AT LOCATION 172 POINTS TO THE CHANNEL LOGOUT. 00029000 * 00030000 * EXIT - NORMAL 00031000 * RETURN TO THE CCH CONTROL ROUTINE VIA REGISTER 14. 00032000 * 00033000 * EXIT - ERROR 00034000 * NONE 00035000 * 00036000 * TABLES / WORK AREA 00037000 * THE CHANNEL CHECK RECORD 00038000 * 00039000 * ATTRIBUTES 00040000 * DMKEIG IS PRIVILEGED AND REUSABLE 00041000 * 00042000 * CHARACTER CODE DEPENDENCIES 00043000 * NONE 00044000 * 00045000 * NOTE 00046000 * NONE 00047000 * 00048000 ********************************************************************** 00049000 EJECT 00050000 ********************************************************************** 00051000 ********************************************************************** 00052000 *********** 2880 LOGOUT INDICATORS *********************** 00053000 ********************************************************************** 00054000 CCHDCIN EQU X'01' DISCONNECT IN INDICATION 00055000 SCANMAJR EQU X'80' SCAN MAJOR BIT 00056000 UCWARCK EQU X'20' UCWAR UNIT ADDR CHECK 00057000 PSEUDOCC EQU X'80' PSEUDO CONTROL CHECK 00058000 SCSPCK EQU X'04' SCS PARITY CHECK 00059000 PRIORCK EQU X'80' PRIORITY CHECK 00060000 SIOMAJOR EQU X'20' SIO MAJOR OP 00061000 IRPTRESP EQU X'20' INTERRUPT RESPONSE BIT 00062000 CCRESELM EQU X'02' CC RESELECT MAJOR 00063000 CCWLATCH EQU X'80' CCW LATCH BIT 00064000 CMDADDRV EQU X'04' CMD ADDRESS VALID 00065000 USVALID EQU X'08' UNIT STATUS VALID 00066000 CMDOUT EQU X'80' CMD OUT SENT 00067000 DATAXFER EQU X'40' DATA TRANSFER INDICATOR 00068000 INITDATA EQU X'10' INITIAL DATA 00069000 DATAXMAJ EQU X'04' DATA XFER MAJOR 00070000 CURMAJOR EQU X'40' CUR MAJOR OP 00071000 UCW0111 EQU X'18' UCW0 AND 1 OP 00072000 ICBD EQU 10 ICB EQUAL 5 00073000 UNITSEL EQU X'80' UNIT SELECT 00074000 SHARSUBC EQU X'10' SHARED SUBCHANNEL BIT 00075000 ********************************************************************** 00076000 EJECT 00077000 ********************************************************************** 00078000 ENTRY DMKEIG80 00079000 DMKEIG80 EQU * 00080000 USING PSA,R0 SETUP ADDRESSABILITY FOR LOWCORE 00081000 USING SAVEAREA,R13 SETUP ADDRESSABILITY FOR SAVE AREA 00082000 USING *,R12 SETUP ADDRESSABILITY FOR MODULE 00083000 USING CCHREC,R9 SETUP ADDRESSABILITY FOR CCH RECORD 00084000 USING IOERBLOK,R4 SETUP ADDRESSABILITY FO I/O ERROR 00085000 USING IOELOG,R1 SETUP ADDRESSABILITY FOR LOGOUT AREA 00086000 * BLOCK 00087000 LR R1,R12 SAVE THE BASE REG. TO AVIOD DESTROYING 00088000 LR R12,R15 SETUP BASE ADDRESS 00089000 STM R2,R0,CCHSAVE SAVE ALL REGS. EXECPT REGISTER 1 00090000 ST R1,CCHSAVE+40 SAVE THE CONTENT OF REGISTER 12 00091000 LA R2,6 SETUP COUNT VALUE FOR LOOP 00092000 ICM R1,15,IOELPNTR GET THE I/O EXTENDED LOGOUT POINTER 00093000 BZ CLEANUP IF ADDR IS ZERO, GO INDICATE TERMINATION 00094000 * OPERATING SYSTEM 00095000 CCHLOGU EQU * 00096000 CLC 0(4,R1),FFS HAS CHANNEL LOGOUT ? 00097000 BE SETRCINV NO, GO SET SYSTEM TERMINATION 00098000 LA R1,4(R1) UPDATE THE I/O EXTENDED LOGOUT POINTER 00099000 BCT R2,CCHLOGU GO TEST NEXT LOCATION 00100000 ICM R1,15,IOELPNTR GET THE I/O EXTENDED LOGOUT POINTER 00101000 TM CSW+5,CCC+IFCC IS INTERFACE OR CHANNEL CONTROL 00102000 * CHECK SET ? 00103000 BZ CKTIOADR NO, MUST BE CDC 00104000 TM LW1,CCHDCIN WAS UNIT DISCONNECTED ? 00105000 BZ ANALBEG NO, GO TEST MAJOR SCAN 00106000 OI IGTERMSQ,CCHDI SET DISCONNECT IN FLAG 00107000 ANALBEG EQU * 00108000 TM LW3,SCANMAJR IS THIS A MAJOR SCAN ? 00109000 BZ CHECKCLR NO, GO INDICATE UNIT ADDR IS VALID 00110000 TM LW1,UCWARCK IS THIS CCWAR UA CHECK ? 00111000 BO SET0303 YES, GO SET CODE @VA03071 00112000 SET0301 EQU * 00113000 OI IGTERMSQ,RTCODE3+COMPFES SET RETRY CODE TO 3,TERM TO 1 00114000 B CCHRETRN GO INDICATE THE SOURCE OF THE ERROR 00115000 SET0303 EQU * 00116000 OI IGTERMSQ,RTCODE3+COMPSYS SET RETRY CODE TO 3, TERM TO 3 00117000 B CLEANUP1 GO SET SYSTEM TERMINATION FLAG 00118000 CHECKCLR EQU * 00119000 TM ENTSW,INTERCCH WAS THIS ERROR ON AN INTERRUPT ? 00120000 BO CKPSEUDO YES, GO SET UNIT ADDRESS VALID 00121000 TM ENTSW,TIOCCH WAS THIS ON A TIO INSTRUCTION ? 00122000 BO TIOSYNCH YES, GO TEST TIO FLAG 00123000 TM LW3+3,X'02' WAS THIS ON A HIO INSTRUCTION ? 00124000 BZ CKPSEUDO NO, GO SET UNIT ADDRESS VALID 00125000 SETRCINV EQU * 00126000 NI IGVALIDB,X'FF'-CCHRCV SET RETRY CODE INVALID 00127000 B CLEANUP1 GO SET SYSTEM TERMINATION FLAG 00128000 TIOSYNCH EQU * 00129000 TM LW27,X'40' IS THE TIO SYNCH LATCH ON ? 00130000 BO CKPSEUDO YES, GO SET UNIT ADDRESS VALID 00131000 LH R2,LW2 GET THE TIO UNIT ADDRESS 00132000 N R2,MASK1 CLEAR UNWANTED BITS 00133000 LH R3,LW2+2 GET THE UCWAR AND IAB 00134000 N R3,MASK1 CLEAR UNWANTED BITS 00135000 CR R2,R3 ARE THE ADDRESSES EQUAL ? 00136000 BNE HIONBCK NO, GO TEST FOR HIO 00137000 CKPSEUDO EQU * 00138000 OI IGVALIDB,CCHDAV SET UNIT ADDRESS VALID 00139000 HIONBCK EQU * 00140000 TM LW3,X'08' IS HIO BUSY STATE SET ? 00141000 BZ TESTSIOM NO, GO TEST SIO FLAG 00142000 TM LW7+1,X'20' IS THE OP-IN ON ? 00143000 BZ SET0401 NO, GO SET RETRY CODE 00144000 SET0410 EQU * 00145000 OI IGTERMSQ,RTCODE4+COMPSEL SET RETRY CODE TO (4) AND 00146000 * TERMINATION CODE TO (10) 00147000 B LASTVAL GO CHECK LAST VALIDITY FLAG 00148000 TESTSIOM EQU * 00149000 TM LW3,SIOMAJOR IS THIS A SIO MAJOR OP 00150000 BO CKCCWLCH YES, GO TEST CCW LCA 00151000 TM LW3,CCRESELM IS THIS CC RESELECT MAJOR 00152000 BNO CKDATATR NO, GO CHECK DATA XFER 00153000 CKCCWLCH EQU * 00154000 TM LW3+2,CCWLATCH IS CCW LATCH SET ? 00155000 BO CKCMDOUT YES, GO SEE IF CMD OUT IS ON 00156000 SET0401 EQU * 00157000 OI IGTERMSQ,RTCODE4+COMPFES SET RETRY CODE TO 4 AND 00158000 * TERMINATION CODE TO 01 00159000 LASTVAL EQU * 00160000 TM LW0+2,SCSPCK IS THIS A SCS P CHECK ? 00161000 BO CLEANUP1 YES, GO SET SYSTEM TERMINATION 00162000 TM LW2,CMDADDRV IS COMMAND ADDRESS VALID ? 00163000 BNO CKUSVAL NO, GO CHECK US VALID FLAG 00164000 OI IGVALIDB,CCHCMDV SET CMD ADDRESS VALID BIT 00165000 CKUSVAL EQU * 00166000 TM LW2,USVALID IS UNIT STATUS VALID FLAG ON ? 00167000 BNO SETRCVAL NO, GO SET RC VALID FLAG 00168000 OI IGVALIDB,CCHUSV SET UNIT STATUS VALIDITY FLAG 00169000 SETRCVAL EQU * 00170000 OI IGVALIDB,CCHRCV SET RETRY CODE VALIDITY FLAG 00171000 CKDCIN EQU * 00172000 TM LW1,CCHDCIN IS UNIT DISCONNECTED ? 00173000 BZ CCHRETRN NO, GO INITIALIZE THE LOGOUT AREA 00174000 NI IGTERMSQ,X'FF'-COMPSYS RESET TERMINATION CODE 00175000 OI IGTERMSQ,COMPSEL SET SELECTIVE RESET FLAG 00176000 B CCHRETRN GO INITIALIZE LOGOUT AREA 00177000 CKCMDOUT EQU * 00178000 TM LW3+3,CMDOUT HAS DATA BEEN XFERRED ? 00179000 BNO SET0410 NO, GO SET THE RETRY CODE (4) AND 00180000 * TERMINATION CODE (10) 00181000 CKDATAXR EQU * 00182000 TM LW9,DATAXFER HAS DATA BEEN XFERRED ? 00183000 BO CKINDATA YES, GO TEST INITIAL DATA 00184000 SET0110 EQU * 00185000 OI IGTERMSQ,RTCODE1+COMPSEL SET RETRY CODE TO (1) AND 00186000 * TERMINATION CODE TO (10) 00187000 B LASTVAL GO CHECK LAST VALIDITY FLAG 00188000 CKINDATA EQU * 00189000 TM LW9,INITDATA IS THIS THE INITIAL DATA ? 00190000 BO SET0210 YES, GO SET CODES 00191000 SET0310 EQU * 00192000 OI IGTERMSQ,RTCODE3+COMPSEL SET RETRY CODE TO (3) AND 00193000 * TERMINATION CODE TO (10) 00194000 B LASTVAL GO CHECK LAST VALIDITY FLAG 00195000 SET0210 EQU * 00196000 OI IGTERMSQ,RTCODE2+COMPSEL SET RETRY CODE TO (2) AND 00197000 * TERMINATION CODE TO (10) 00198000 B LASTVAL GO CHECK LAST VALIDITY FLAG 00199000 CKDATATR EQU * 00200000 TM LW3,DATAXMAJ IS THIS DATA XFER MAJOR 00201000 BO CKINDATA YES, GO CHECK INITIAL DATA 00202000 TM LW3,CURMAJOR IS CUR MAJOR UP ? 00203000 BNO CKTIOMAJ NO, GO CHECK RESPONSE 00204000 TM LW3+3,CMDOUT IS COMMAND OUT ? 00205000 BNO SETUAINV NO, GO SET UA INVALID 00206000 TM LW2+2,SHARSUBC IS THIS A SHARED SUBCHANNEL ? 00207000 BNO SET0510 NO, GO SET RETRY CODE 00208000 TM LW3+3,UCW0111 IS UCW 0 AND 1 SET TO ONE ? 00209000 BO SET0510 YES, GO SET RETRY CODE 00210000 SETUAINV EQU * 00211000 NI IGVALIDB,X'FF'-CCHDAV SET UNIT ADDRESS INVALID 00212000 SET0510 EQU * 00213000 OI IGTERMSQ,RTCODE5+COMPSEL SET RETRY CODE TO (5) AND 00214000 * TERMINATION CODE TO (10) 00215000 B LASTVAL GO CHECK LAST VALIDITY FLAG 00216000 SET0501 EQU * 00217000 OI IGTERMSQ,RTCODE5+COMPFES SET RETRY CODE TO (5) AND 00218000 * TERMINATION CODE TO (1) 00219000 B LASTVAL GO CHECK VALIDITY FLAG 00220000 CKTIOMAJ EQU * 00221000 TM LW3,X'10' IS TIO MAJOR ON ? 00222000 BO CKSCS YES, GO GET SCS INDICATORS 00223000 TM LW3+1,IRPTRESP IRPT RESPONSE UP ? 00224000 BNO CLEANUP1 NO, GO SET SYSTEM TERMINATION 00225000 TM LW2+2,X'0E' DOES ICB EQUAL 7 ? 00226000 BO SET0501 YES, GO SET RETRY CODE 00227000 TM LW2+2,ICBD IS ICB EQUAL D ? 00228000 BO SET0501 YES, GO SET CODE 00229000 CKUNITSL EQU * 00230000 TM LW9,UNITSEL IS UNIT SELECT ON ? 00231000 BO SET0010 YES, GO SET RETRY CODE 00232000 SET0001 EQU * 00233000 OI IGTERMSQ,RTCODE0+COMPFES SET RETRY CODE TO (0) AND 00234000 * TERMINATION CODE TO (01) 00235000 B LASTVAL GO CHECK VALIDITY FLAG 00236000 SET0010 EQU * 00237000 OI IGTERMSQ,RTCODE0+COMPSEL SET RETRY CODE TO (0) AND 00238000 * TERMINATION CODE TO (10) 00239000 B LASTVAL GO CHECK VALIDITY FLAG 00240000 CKSCS EQU * 00241000 SR R2,R2 CLEAR REGISTER 2 00242000 IC R2,LW22 GET THE SCS INDICATORS 00243000 LA R3,14 GET THE MASK FLAGS 00244000 NR R2,R3 CLEAR THE UNWANTED BITS 00245000 IC R2,SCSLIST(R2) GET THE SCS INDICATOR 00246000 CR R2,R3 IS THE INDICATOR EQUAL TO 14 ? 00247000 BNE SET0001 NO, GO SET RETRY CODE 00248000 B CKUNITSL GO TEST FOR UNIT SELECT 00249000 CKTIOADR EQU * 00250000 TM ENTSW,TIOCCH IS THIS ERROR ON A TIO ? 00251000 BZ CCHRETRN NO, GO INITIALIZE THE LOGOUT 00252000 CLC SIOADDR+1(1),LW2+3 IS THE UNIT ADDRESS SAME AS 00253000 * IN THE LOGOUT ? 00254000 BE CCHRETRN YES, GO INITIALIZE LOGOUT 00255000 CLEANUP EQU * 00256000 OI ENTSW,TERMSYS SET SYSTEM TERMINATION 00257000 B CCHEXIT4 GO RESTORE REGISTERS 00258000 CLEANUP1 EQU * 00259000 OI ENTSW,TERMSYS SET SYSTEM TERMINATION 00260000 CCHRETRN EQU * 00261000 SR R2,R2 CLEAR REGISTER 2 00262000 IC R2,BLAME GET SOURCE OF ERROR 00263000 SLL R2,3 SETUP CORRECT FORMAT 00264000 STC R2,IGBLAME SAVE IN CCH RECORD (ECSW) 00265000 MVC CCHLOG80(112),0(R1) SAVE THE I/O EXTENDED LOGOUT 00266000 MVI 0(R1),X'FF' INITIALIZE THE I/O EXTENDED LOGOUT 00267000 MVC 1(111,R1),0(R1) TO ALL ONES 00268000 MVI CCHSAVE+59,X'18' CHANGE THE LENGTH OF THE CCH @VA00881 00269000 * RECORD 00270000 CCHEXIT4 EQU * 00271000 LM R2,R0,CCHSAVE RESTORE THE REGISTERS 00272000 BR R14 RETURN TO CCH CONTROL ROUTINE 00273000 ********************************************************************** 00274000 SPACE 2 00275000 ********************************************************************** 00276000 ********************************************************************** 00277000 EJECT 00278000 ********************************************************************** 00279000 CCHSAVE DS 16F 00280000 MASK1 DC X'000001FF' CLEAR UNWANTED BITS WITH THIS MASK 00281000 SCSLIST DC X'0E' SUBCHANNEL STATUS BITS 00282000 DC 5X'00' 00283000 DC X'0E000E' 00284000 DC 6X'00' 00285000 ******************************************************************** 00286000 ********************************************************************** 00287000 ********************************************************************** 00288000 EJECT 00289000 ********************************************************************** 00290000 ********************************************************************** 00291000 ******** DESECT FOR THE 2880 CHANNEL LOGOUT AREA 00292000 ********************************************************************** 00293000 IOELOG DSECT 00294000 LW0 DS F I/O LOGOUT WORD 0 00295000 LW1 DS F I/O LOGOUT WORD 1 00296000 LW2 DS 0F I/O LOGOUT WORD 2 00297000 CHANLID DS C CHANNEL NUMBER 00298000 DS 3C PART OF WORD 2 00299000 LW3 DS F I/O LOGOUT WORD 3 00300000 LW4 DS F I/O LOGOUT WORD 4 00301000 LW5 DS F I/O LOGOUT WORD 5 00302000 LW6 DS F I/O LOGOUT WORD 6 00303000 LW7 DS F I/O LOGOUT WORD 7 00304000 LW8 DS F I/O LOGOUT WORD 8 00305000 LW9 DS F I/O LOGOUT WORD 9 00306000 LW10 DS F I/O LOGOUT WORD 10 00307000 LW11 DS F I/O LOGOUT WORD 11 00308000 LW12 DS F I/O LOGOUT WORD 12 00309000 LW13 DS F I/O LOGOUT WORD 13 00310000 LW14 DS F I/O LOGOUT WORD 14 00311000 LW15 DS F I/O LOGOUT WORD 15 00312000 LW16 DS F I/O LOGOUT WORD 16 00313000 LW17 DS F I/O LOGOUT WORD 17 00314000 LW18 DS F I/O LOGOUT WORD 18 00315000 LW19 DS F I/O LOGOUT WORD 19 00316000 LW20 DS F I/O LOGOUT WORD 20 00317000 LW21 DS F I/O LOGOUT WORD 21 00318000 LW22 DS F I/O LOGOUT WORD 22 00319000 LW23 DS F I/O LOGOUT WORD 23 00320000 LW24 DS F I/O LOGOUT WORD 24 00321000 LW25 DS F I/O LOGOUT WORD 25 00322000 LW26 DS F I/O LOGOUT WORD 26 00323000 LW27 DS 0F I/O LOGOUT WORD 27 00324000 OPERATN DS CL1 MAJOROPERATION INDICATOR 00325000 BLAME DS CL1 SOURCE OF ERROR 00326000 DS CL2 LAST TWO BYTES 00327000 ********************************************************************** 00328000 EJECT 00329000 PSA 00330000 COPY EQU 00331000 COPY DEVTYPES 00332000 COPY SAVE 00333000 ENTSW EQU SAVEWRK1 @VA01638 00334000 SIOADDR EQU SAVEWRK9 00335000 COPY IOER 00336000 COPY CCHREC 00337000 END 00338000