SIX TITLE 'DMKSIX (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE INPUT SEQUENCE FIELDS @V200820 00002000 DMKSIX CSECT 00003000 MODULEID DC CL8'DMKSIX' @VA01068 00004000 ********************************************************************** 00005000 * 00006000 * MODULE NAME - DMKSIX 00007000 * 00008000 * FUNCTION 00009000 * THIS ROUTINE WILL ANALYZE THE 2860 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 * DMKSIX - 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 * CHANNEL LOGOUT (LOCATION X'130') 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 * DMKSIX IS PRIVILEGED AND REUSABLE 00041000 * 00042000 * CHARACTER CODE DEPENDENCIES 00043000 * NONE 00044000 * 00045000 * NOTE 00046000 * NONE 00047000 * 00048000 ********************************************************************** 00049000 EJECT 00050000 ********************************************************************** 00051000 ********************************************************************** 00052000 LOGWD1A EQU 304 1ST HALF OF LOGOUT WORD 1 00053000 LOGWD1B EQU 308 2ND HALF OF LOGOUT WORD 1 00054000 LOGWD2A EQU 312 1ST HALF OF LOGOUT WORD 2 00055000 LOGWD2B EQU 316 12ND HALF OF LOGOUT WORD 2 00056000 LOGWD3A EQU 320 1ST HALF OF LOGOUT WORD 3 00057000 LOGWD3B EQU 324 2ND HALF OF LOGOUT WORD 3 00058000 CCHOPIN EQU X'80' TEST FOR OPERATION IN 00059000 CCHPIT EQU X'02' POLLING INTERRUPT BIT 00060000 CCHSIOLH EQU X'02' SIO LATCH 00061000 CCHSTGCK EQU X'04' STORAGE CHECK BIT 00062000 CCHSETUP EQU X'10' SET UP BIT IN LOG 00063000 CCHCMDRG EQU X'20' COMMAND REGISTER PARITY VALID @VA01068 00064000 ********************************************************************** 00065000 EJECT 00066000 ********************************************************************** 00067000 ENTRY DMKSIX60 00068000 DMKSIX60 EQU * 00069000 USING PSA,R0 SETUP ADDRESSABILITY FOR LOWCORE 00070000 USING SAVEAREA,R13 SETUP ADDRESSABILITY FOR SAVE AREA 00071000 USING *,R12 SETUP ADDRESSABILITY FOR MODULE 00072000 USING CCHREC,R9 SETUP ADDRESSABILITY FOR CCH RECORD 00073000 USING IOERBLOK,R4 SETUP ADDRESSABILITY FO I/O ERROR 00074000 * BLOCK 00075000 LR R1,R12 SAVE THE BASE REG. TO AVIOD DESTROYING 00076000 LR R12,R15 SETUP BASE ADDRESS 00077000 STM R2,R0,CCHSAVE SAVE ALL REGS. EXECPT REGISTER 1 00078000 ST R1,CCHSAVE+40 SAVE THE CONTENT OF REGISTER 12 00079000 LA R2,6 SETUP COUNT VALUE FOR LOOP 00080000 LA R1,X'130' GET THE ADDRESS OF THE I/O EXTENDED 00081000 * LOGOUT 00082000 CCHLOGU EQU * 00083000 CLC 0(4,R1),FFS HAS CHANNEL LOGOUT ? 00084000 BE CLEANUP NO, GO SET SYSTEM TERMINATION 00085000 LA R1,4(R1) UPDATE THE I/O EXTENDED LOGOUT POINTER 00086000 BCT R2,CCHLOGU GO TEST NEXT LOCATION 00087000 IC R2,LOGWD3B+3 GET UNIT ADDRESS PARITY BIT 00088000 SRL R2,7 ISOLATE PARITY BIT 00089000 STC R2,PARIT SETUP PARITY TEST PARAMETER 00090000 BAL R14,LOGPAR GO TEST PARITY BYTE 00091000 DC AL2(LOGWD2A+3) LOCATION OF BYTE TO BE TESTED 00092000 DC X'01' NUMBER OF BYTES TO BE TESTED 00093000 PARIT DS X PARITY BYTE 00094000 BNE CCH109A BAD PARITY IS INDICATED 00095000 TM ENTSW,TIOCCH IS THIS AN ERROR ON A TIO ? 00096000 BZ VALIDCCH NO, GO SET UNIT ADDRESS VALID 00097000 CLC SIOADDR+1(1),LOGWD2A+3 IS THE UNIT ADDRESS EQUAL THE 00098000 * UNIT ADDRESS IN THE LOGOUT 00099000 BNE CCH109A NO, GO TEST PARITY BYTE 00100000 VALIDCCH EQU * 00101000 OI IGVALIDB,CCHDAV SET UNIT ADDRESS VALID FLAG 00102000 CCH109A EQU * 00103000 IC R2,LOGWD3B+3 GET PARITY BYTE FOR COMMAND REG 00104000 SRL R2,2 ISOLATE PARITY BIT 00105000 STC R2,PARIT1 SETUP PARITY TEST PARAMETER 00106000 BAL R14,LOGPAR GO TEST PARITY BYTE 00107000 DC AL2(LOGWD2A+1) LOCATION OF BYTE TO BE TESTED 00108000 DC X'01' NUMBER OF BYTES TO BE TESTED 00109000 PARIT1 DS X PARITY BYTE 00110000 BNE CCH109D BAD PARITY IS INDICATED 00111000 OI ENTSW,CCHCMDRG SET COMMAND REG VALID FLAG 00112000 CCH109D EQU * 00113000 TM CSW+5,IFCC IS THIS AN INTERFACE CONTROL CHECK ? 00114000 BO CCH110 YES, GO INDICATE TERMINATION CODE 00115000 OI IGTERMSQ,COMPFES SET FES TERMINATION CODE 00116000 TM LOGWD3B,X'80' IS OP-IN UP ? 00117000 BZ CCH109B NO, GET PARITY BYTE FOR COMMAND ADDR. 00118000 OI IGVALIDB,CCHUSV SET VALID UNIT STATUS FLAG 00119000 CCH109B EQU * 00120000 IC R2,LOGWD3B+2 GET PARITY BYTE FOR COMMAND ADDRESS 00121000 SRL R2,4 ISOLATE PARITY BIT 00122000 STC R2,PARIT2 SETUP PARITY TEST PARAMETER 00123000 BAL R14,LOGPAR GO TEST PARITY BYTE 00124000 DC AL2(LOGWD1A+1) LOCATION OF BYTE TO BE TESTED 00125000 DC X'03' NUMBER OF BYTES TO BE TESTED 00126000 PARIT2 DS X PARITY BYTE 00127000 BNE CCH112 BAD PARITY IS INDICATED 00128000 CLC LOGWD1A+1(3),CSW+1 IS THE CSW ADDRESS THE SAME AS 00129000 * IN THE LOGOUT 00130000 BL CCH112 NO, COMMAND ADDRESS IS INVALID 00131000 OI IGVALIDB,CCHCMDV SET COMMAND ADDRESS VALID FLAG 00132000 CCH112 EQU * 00133000 TM ENTSW,TIOCCH+HIOCCH IS THIS AN ERROR ON A TIO OR HIO ? 00134000 BNZ CCH128 YES, GO CHECK COMMAND CHAIN 00135000 CCH112G EQU * 00136000 TM LOGWD3A+1,CCHSETUP IS SET UP ON IN LOGOUT ? 00137000 BO CCH113 YES, GO SET RETRY CODE 00138000 TM ENTSW,CCHCMDRG IS COMMAND REG PARITY VALID ? 00139000 BZ CCH113 NO, GO SET RETRY CODE 00140000 TM LOGWD3B,CCHOPIN IS OP-IN UP ? 00141000 BO CCH112H YES, GO TEST LOGOUT 00142000 NI IGTERMSQ,X'FF'-COMPFES SET TERMINATION CODE TO (00) 00143000 CCH112H EQU * 00144000 TM ENTSW,TIOCCH IS THIS AN ERROR ON A TIO ? 00145000 BO CCH114 YES, GO CHECK SEQ. TRIGER 00146000 TM LOGWD3A,X'08' IS SEQ TWO TRIGER ON ? 00147000 BO CCH115 YES, GO CHECK DATA TRANFER 00148000 TM LOGWD3B+1,CCHSTGCK IS THIS A STORAGE ERROR ? 00149000 BO CCH112D YES, GO TEST COMMAND ADDRESS FLAG 00150000 CCH112A EQU * 00151000 OI IGBLAME,CCHCHNL INTERNAL CHANNEL ERROR 00152000 CCH112B EQU * 00153000 OI IGTERMSQ,RTCODE4 SET RETRY CODE TO (01) 00154000 TM LOGWD3B,CCHSIOLH IS SIO LATCH ON ? 00155000 BZ CCHRETRN NO, GO INITIALIZE THE LOGOUT AREA 00156000 CCH112C EQU * 00157000 OI IGVALIDB,CCHUSV SET UNIT STATUS VALID FLAG 00158000 B CCHRETRN GO INITIALIZE THE LOGOUT AREA 00159000 CCH112D EQU * 00160000 TM IGVALIDB,CCHCMDV IS THE COMMAND ADDRESS VALID F? 00161000 BZ CCH112A NO, GO INDICATE CHANNEL ERROR 00162000 OI IGBLAME,CCHSTG INDICATE STORAGE IS THE SOURCE OF THE 00163000 * ERROR 00164000 B CCH112B GO SET THE RETRY CODE 00165000 CCH110 EQU * 00166000 OI IGTERMSQ,COMPSEL SET THE TERMINATION CODE FOR THE 00167000 * SELECTOR RESET 00168000 OI IGVALIDB,CCHCMDV SET THE COMMAND ADDRESS VALID FLAG 00169000 TM LOGWD3B+1,X'20' IS DISCONNECT SET ? 00170000 BZ CCH110D NO, GO TEST FOR POLLING INTERUPT 00171000 OI IGTERMSQ,CCHDI SET THE DISCONNECT FLAG 00172000 CCH110D EQU * 00173000 TM LOGWD3A+1,CCHPIT IS POLLING INTERUPT FLAG SET ? 00174000 BZ CCH110A NO, GO TEST INDICATOR IN LOGUT 00175000 OI IGBLAME,CCHINTFC INDICATE INTERFACE IS THE SOURCE 00176000 * OF THE ERROR 00177000 OI IGTERMSQ,RTCODE3 SET THE RETRY CODE TO (011) 00178000 B CCHRETRN GO INITIALIZE THE LOGOUT AREA 00179000 CCH110A EQU * 00180000 TM ENTSW,TIOCCH+HIOCCH IS THIS AN ERROR ON A TIO OR HIO ? 00181000 BNZ CCH123 YES, GO CHECK COMMAND CHAIN 00182000 CCH110B EQU * 00183000 TM LOGWD3A+1,CCHSETUP IS SET UP BIT ON IN LOGOUT 00184000 BO CCH116 YES, GO SET THE RETRY CODE 00185000 TM ENTSW,CCHCMDRG DOES THE COMMAND REG HAVE VALID 00186000 * PARITY ? 00187000 BZ CCH116 NO, GO SET RETRY CODE 00188000 TM LOGWD3A,X'20' IS COMMAND CHAINING INDICATED ? 00189000 BO CCH110C YES, GO SET INTERFACE ERROR 00190000 TM LOGWD3B,CCHSIOLH IS THE SIO LATCH ON ? 00191000 BO CCH110C YES, GO SET INTERFACE ERROR 00192000 TM LOGWD3A,X'08' IS SEQ TWO TRIGER ON ? 00193000 BO CCH115 YES, GO CHECK FOR DATA TRANSFER 00194000 CCH110C EQU * 00195000 OI IGBLAME,CCHINTFC INDICATE INTERFACE IS THE SOURCE OF 00196000 * THE ERROR 00197000 OI IGTERMSQ,RTCODE1 SET RETRY CODE TO (001) 00198000 B CCHRETRN GO INITIALIZE LOGOUT AREA 00199000 CCH113 EQU * 00200000 OI IGTERMSQ,RTCODE4 SET THE RETRY CODE TO (100) 00201000 TM IGVALIDB,CCHDAV IS THE UNIT ADDRESS VALID ? 00202000 BO CCH113A YES, GO TEST FOR STORAGE CHECK 00203000 TM LOGWD3B,CCHSIOLH IS SIO LATCH ON ? 00204000 BZ CCH113B NO, GO SET INTERNAL CHANNEL ERRO FLAG 00205000 OI IGBLAME,CCHCPU INDICATE THAT CPU WAS THE SOURCE OF THE 00206000 * ERROR 00207000 B CCH113C GO TEST THE LOGOUT AREA 00208000 CCH113A EQU * 00209000 TM LOGWD3B+1,CCHSTGCK IS STORAGE ERROR INDICATED IN 00210000 * LOGOUT ? 00211000 BZ CCH113B NO, INDICATE CHANNEL ERROR IN ECSW 00212000 OI IGBLAME,CCHSTG INDICATE SOURCE OF ERROR IS STORAGE 00213000 B CCH113C GO TO STORAGE ERROR SECTION 00214000 CCH113B EQU * 00215000 OI IGBLAME,CCHCHNL CHANNEL IS THE SOURCE OF THE ERROR 00216000 CCH113C EQU * 00217000 TM LOGWD3B,CCHSIOLH IS SIO LATCH ON ? 00218000 BZ CCHRETRN NO, GO INITIALIZE LOGOUT AREA 00219000 NI IGVALIDB,X'FF'-CCHCMDV TURN OFF COMMAND ADDRESS VALID 00220000 * FLAG 00221000 B CCHRETRN GO INITIALIZE LOGOUT AREA 00222000 CCH114 EQU * 00223000 TM LOGWD3A,X'0E' ANY SEQ. TRIGERS ? 00224000 BNZ CCH115 YES, GO CHECK DATA TRANFER 00225000 TM LOGWD3A,X'20' IS THE COMMAND CHAINING BIT ON ? 00226000 BZ CCH114B NO, GO SET THE RETRY CODE 00227000 TM LOGWD3B,CCHOPIN IS OP-IN UP ? 00228000 BO CCH115 YES, GO CHECK FOR DATA TRANFER 00229000 OI IGBLAME,CCHCHNL INDICATE CHANNEL IS THE SOURCE OF 00230000 * ERROR 00231000 OI IGTERMSQ,RTCODE1 SET RETRY CODE TO (001) 00232000 B CCHRETRN GO INITIALIZE LOGOUT 00233000 CCH114B EQU * 00234000 OI IGTERMSQ,RTCODE4 SET THE RETRY CODE TO (100) 00235000 OI IGBLAME,CCHCHNL INDICATE CHANNEL IS THE SOURCE 00236000 * OF THE ERROR 00237000 B CCH117 GO CHECK FOR ICC ERROR 00238000 CCH115 EQU * 00239000 TM LOGWD3B,X'80' IS OP-IN UP ? 00240000 BO CCH115B NO, GO TEST FOR INTERFACE CONTROL CHECK 00241000 TM CSW+5,IFCC IS THIS AN INTERFACE CONTROL @VA01068 00242000 * CHECK 00243000 BZ CCH115C NO, SET CHANNEL ERROR FLAG @VA01068 00244000 CCH115A EQU * 00245000 OI IGBLAME,CCHINTFC ERROR WAS DUE TO INTERFACE 00246000 B CCH118 GO SET RETRY CODE 00247000 CCH115B EQU * 00248000 TM CSW+5,IFCC IS THIS AN INTERFACE CONTROL CHECK ? 00249000 BO CCH115A YES, GO SET INTERFACE AS BEING THE 00250000 * SOURCE OF THE ERROR 00251000 TM LOGWD3B+1,CCHSTGCK IS THIS A STORAGE CHECK ? 00252000 BO CCH115D YES, GO INDICATE STORAGE ERROR 00253000 CCH115C EQU * 00254000 OI IGBLAME,CCHCHNL INDICATE CHANNEL ERROR AS SOURCE 00255000 * OF ERROR 00256000 B CCH115E GO CHECK THE COMMAND VALID FLAG 00257000 CCH115D EQU * 00258000 OI IGBLAME,CCHSTG INDICATE THAT STORAGE WAS THE SOURCE OF 00259000 * THE ERROR 00260000 CCH115E EQU * 00261000 TM IGVALIDB,CCHCMDV IS THE COMMAND VALID BIT ON IN LOGOUT 00262000 BZ CCH118 NO, GO SET RETRY CODE 00263000 MVC PARIT3(1),LOGWD3B+2 MOVE PARITY BYTE INTO PARAMETER 00264000 BAL R14,LOGPAR GO TEST PARITY BYTE 00265000 DC AL2(LOGWD1B+2) LOCATION OF BYTE TO BE TESTED IN LOGOUT 00266000 DC X'02' NUMBER OF BYTES TO BE TESTED 00267000 PARIT3 DS X PARITY BYTE 00268000 BNE CCH118 BAD PARITY WAS INDICATED 00269000 NI LOGWD3A+2,X'0F' CLEAR UNWANTED BITS 00270000 BAL R14,LOGPAR GO TEST PARITY BYTE 00271000 DC AL2(LOGWD3A+2) LOCATION OF BYTE TO BE TESTED IN LOGOUT 00272000 DC X'01' NUMBER OF BYTES TO BE TESTED 00273000 DC X'00' PARITY BYTE 00274000 BE CCH120 GOOD PARITY INDICATED 00275000 CCH118 EQU * 00276000 OI IGTERMSQ,RTCODE5 SET THE RETRY CODE TO (101) 00277000 B CCHRETRN GO INITIALIZE LOGOUT AREA 00278000 CCH120 EQU * 00279000 L R2,CSW GET THE CSW ADDRESS 00280000 LA R2,0(R2) CLEAR THE HIGH ORDER BYTE 00281000 S R2,F8 GET THE ADDRESS OF THE LAST CCW 00282000 BM CCH118 NEGATIVE VALUE , GO INDICATE THAT 00283000 * IT IS INVALID 00284000 LH R3,6(R2) GET COUNT FROM CCW 00285000 N R3,XRIGHT16 CLEAR LOW ORDER BITS 00286000 IC R2,3(R2) GET LOW ORDER BYTE OF DATA ADDRESS 00287000 N R2,F7 CLEAR LOW ORDER BITS 00288000 CH R3,CSW+6 IS CCW COUNT LOWER THAN CSW COUNT ? 00289000 BL CCH122 YES, GO GET COUNT 00290000 CCH120A EQU * 00291000 AR R3,R2 ADD THE COUNTS TOGETHER 00292000 CH R3,LOGWD1B+2 DOES COUNT EQUAL LOGOUT COUNT ? 00293000 BNE CCH121 NO, GO SET RETRY CODE 00294000 IC R3,LOGWD3A+2 GET BYTE COUNT REGISTER 00295000 N R3,F7 CLEAR UNWANTED BITS 00296000 CR R2,R3 ARE THE COUNTS EQUAL ? 00297000 BNE CCH121 NO, GO SET CONDITION CODE 00298000 OI IGTERMSQ,RTCODE2 SET RETRY CODE TO (010) 00299000 B CCH117 GO SET COUNT VALID BIT 00300000 CCH121 EQU * 00301000 OI IGTERMSQ,RTCODE3 SET RETRY CODE TO (011) 00302000 CCH117 EQU * 00303000 TM CSW+5,IFCC IS THIS AN INTERFACE CONTROL CHECK ? 00304000 BO CCHRETRN YES, GO INITIALIZE LOGOUT AREA 00305000 OI IGPRGFLG,CCHCNTB SET COUNT VALID FLAG 00306000 B CCHRETRN GO INITIALIZE LOGOUT AREA 00307000 CCH122 EQU * 00308000 LH R1,CSW+6 GET CSW BYTE COUNT 00309000 N R1,XRIGHT16 CLEAR UNWANTED BITS 00310000 SR R1,R2 SUBTRACT DAB FROM COUNT 00311000 CR R1,R3 IS CSW COUNT HIGHER THAN CCW COUNT 00312000 BH CCH118 YES, GO SET THE RETRY CODE 00313000 B CCH120A GO CHECK FOR DATA TRANFER 00314000 CCH123 EQU * 00315000 TM LOGWD3A,X'2E' IS COMMAND CHAIN OR SEQ. TRIGERS ON ? 00316000 BNZ CCH110B YES, GO CHECK FOR SETUP BIT 00317000 TM LOGWD3A+1,CCHSETUP IS SETUP ON IN LOGOUT ? 00318000 BO CCH125 YES, GO CHECK FOR SELECT OUT 00319000 TM ENTSW,HIOCCH IS THIS AN ERROR ON A HIO ? 00320000 BO CCH126 YES, GO INDICATE TYPE OF ERROR 00321000 CCH116 EQU * 00322000 OI IGTERMSQ,RTCODE4 SET THE RETRY CODE TO (100) 00323000 OI IGBLAME,CCHINTFC INDICATE THAT INTERFACE IS THE 00324000 * SOURCE OF THE ERROR 00325000 B CCHRETRN GO INITIALIZE THE LOGOUT AREA 00326000 CCH125 EQU * 00327000 TM LOGWD3B,X'10' IS SELECT OUT ON ? 00328000 BO CCH116 YES, GO SET RETRY CODE 00329000 CCH126 EQU * 00330000 OI IGBLAME,CCHCHNL INDICATE CHANNEL IS THE SOURCE OF 00331000 * THE ERROR 00332000 CCH130 EQU * 00333000 OI IGTERMSQ,RTCODE4 SET RETRY CODE TO (100) 00334000 B CCHRETRN GO INITIALIZE THE LOGOUT 00335000 CCH128 EQU * 00336000 TM LOGWD3A,X'2E' IS COMMAND CHAIN OR SEQ. TRIGGERS ON 00337000 BNZ CCH112G YES, GO TEST FOR SETUP 00338000 TM ENTSW,TIOCCH IS THIS AN ERROR ON A TIO ? 00339000 BO CCH114B YES, GO SET RETRY CODE 00340000 TM IGVALIDB,CCHDAV IS THE UNIT ADDRESS VALID ? 00341000 BO CCH126 YES, GO SET RETRY CODE 00342000 OI IGBLAME,CCHCPU SET CPU AS SOURCE OF ERROR 00343000 B CCH130 GO INDICATE THE RETRY CODE 00344000 CLEANUP EQU * 00345000 OI ENTSW,TERMSYS SET SYSTEM TERMINATION 00346000 B CCHEXIT4 GO RESTORE REGISTERS 00347000 CCHRETRN EQU * 00348000 LA R1,X'130' GET THE ADDRESS OF THE I/O EXTENDED 00349000 * LOGOUT 00350000 MVC CCHLOG60(24),0(R1) SAVE THE I/O EXTENDED LOGOUT 00351000 MVI 0(R1),X'FF' INITIALIZE THE I/O EXTENDED LOGOUT 00352000 MVC 1(23,R1),0(R1) TO ALL ONES 00353000 MVI CCHSAVE+59,X'0D' CHANGE THE LENGTH OF THE CCH @VA00881 00354000 * RECORD 00355000 CCHEXIT4 EQU * 00356000 LM R2,R0,CCHSAVE RESTORE THE REGISTERS 00357000 BR R14 RETURN TO CCH CONTROL ROUTINE 00358000 ********************************************************************** 00359000 SPACE 2 00360000 ********************************************************************** 00361000 LOGPAR EQU * 00362000 LH R1,0(R14) GET ADDRESS OF BYTE TO BE CHECKED 00363000 SR R2,R2 CLEAR REGISTER 2 00364000 IC R2,2(R14) GET COUNT OF NUMBER OF BYTES 00365000 CCH202 EQU * 00366000 MVI CCHPARBT,X'01' CLEAR PARITY BYTE 00367000 SR R3,R3 CLEAR REGISTER 00368000 IC R3,0(R1) GET BYTE TO BE CHECKED 00369000 CCH201 EQU * 00370000 LTR R3,R3 IS CONTENT OF REGISTER 3 ZERO ? 00371000 BZ CCH200 YES, GO COMPARE PARITY BIT 00372000 EX R3,CCHXOR CALCULATE PARITY 00373000 SRL R3,1 GET NEXT BIT 00374000 B CCH201 GO TEST NEXT BIT 00375000 CCH200 EQU * 00376000 NI CCHPARBT,X'01' REMOVE UNWANTED BITS 00377000 IC R3,3(R14) GET PARITY BITS 00378000 BCTR R2,R0 REDUCE THE NUMBER OF BYTES 00379000 SRL R3,0(R2) ISOLATE PARITY BIT TO BE CHECKED 00380000 N R3,F1 REMOVE UNWANTED BITS 00381000 EX R3,CCHCLI TEST FOR PARITY BIT 00382000 BNE 4(R14) RETURN TO IN LINE CODE - BAD PARITY 00383000 LTR R2,R2 IS THIS LAST TEST ? 00384000 BE 4(R14) YES, RETURN TO IN LINE CODE - GOOD 00385000 * PARITY 00386000 LA R1,1(R1) UPDATE ADDRESS POINTER BY ONE 00387000 B CCH202 GO TEST FOR PARITY AGAIN 00388000 ********************************************************************** 00389000 EJECT 00390000 ********************************************************************** 00391000 CCHSAVE DS 16F 00392000 CCHPARBT DC X'00' PARITY CHECK BYTE 00393000 ******************************************************************** 00394000 CCHXOR XI CCHPARBT,X'00' 00395000 CCHCLI CLI CCHPARBT,X'00' 00396000 ********************************************************************** 00397000 ********************************************************************** 00398000 EJECT 00399000 ********************************************************************** 00400000 PSA 00401000 COPY EQU 00402000 COPY DEVTYPES 00403000 COPY SAVE 00404000 ENTSW EQU SAVEWRK1 @VA01638 00405000 SIOADDR EQU SAVEWRK9 SAVE THE DEVICE ADDRESS 00406000 EJECT 00407000 COPY IOER 00408000 COPY CCHREC 00409000 END 00410000