FTN4,L PROGRAM TXTT1(3,89),91711-16021 REV 1926 790428 C C C******************************************** C* TXTT1 * C* PRIMARY SYSTEM MULTI-POINT TERMINAL TEST * C* RELOC.: 91711-16021 * C* SOURCE: 91711-18021 * C******************************************** C C C TXTT1 IS A FUNCTIONAL VERIFICATION TEST FOR THE MULTI-POINT C DATA PATH(MP/1000). THE MULTI-POINT EXERCISER IS USED TO C TEST THIS FUNCTION. C C RU,TXTT1,LGLU,MPLU,NN,INL C C WHERE: C C LGLU = LOGICAL UNIT FOR LOGGING MESSAGES. C C MPLU = LOGICAL UNIT OF TERMINAL TO BE TESTED. C C NN = MAXIMUM NUMBER OF ERRORS TO BE REPORTED. DEFAULT C IS 6. C INL = TEST BUFFER SIZE. DEFAULT IS 20 LINES. C C C*************************************************************** C C DECLARATIONS C C*************************************************************** C INTEGER EQT4,EQT5,EQTST INTEGER LGLU,MPLU,NN,INL INTEGER NDTYPE,IREG(2),REGA,REGB INTEGER LOCKOP,UNLOCK INTEGER IOCON EQUIVALENCE (IREG(1),REGA,REG),(IREG(2),REGB) DIMENSION IB(800),IBX(40),IIB(800),IHMXM(2) C C*************************************************************** C C DATA INITIALIZATION C C*************************************************************** C DATA IHMXM/15510B,15544B/ DATA LGLU/1/,NN/5/ DATA IOCON/3/ DATA LOCKOP/0140001B/,UNLOCK/0100000B/ DATA INL/20/ DATA IB/800*0/ C C GET INPUT PARAMETER FOR LIST LU AND TEST LU C CALL RMPAR(IB) LGLU = IB(1) IF (IB(1).LE.0) LGLU = LOGLU(IB(1)) C GET LU TO BE TESTED. MPLU = IB(2) IF (MPLU.NE.0) GO TO 10 C LU TO BE TESTED IS ILLEGAL. WRITE(LGLU,1001) 1001 FORMAT(/" TXTT1 - LU# SPECIFIED FOR MP TERMINAL IS ILLEGAL."/ 1" RERUN TEST SPECIFYING AN INTEGER >0 AND <64 FOR LU#.") GO TO 999 C C DETERMINE THE MAXIMUM NUMBER OF ERRORS TO BE REPORTED. C 10 CONTINUE IF (IB(3).GT.0) NN = IB(3) - 1 C DETERMINE THE TEST BUFFER SIZE. IF ZERO DEFAULT TO 20 LINES. INL = IB(4) IF ((INL.LE.0).OR.(INL.GT.20)) INL = 20 C C TEST TO SEE IF LU IS ASSIGNED. C CALL EXEC(13,MPLU,EQT5,EQT4,EQTST) C IF CHANNEL NUMBER = 0, LU IS NOT ASSIGNED TO ANY DEVICE. IF (IAND(EQT4,077B).NE.0) GO TO 30 C LU IS NOT ASSIGNED. DO NOT TEST THIS LU. WRITE(LGLU,2001) MPLU 2001 FORMAT(/" TXTT1 - LU#",I3,": NOT ASSIGNED, NOT TESTED!"/) GO TO 9999 C C MAKE SURE DEVICE IS ASSIGNED TO A MP TERMINAL. C 30 CONTINUE NDTYPE = IAND(EQT5,037400B) NDTYPE = NDTYPE/0400B IF (NDTYPE.EQ.07B) GO TO 50 C LU IS NOT ASSIGNED TO A MP TERMINAL. ABORT TEST. WRITE(LGLU,4001) MPLU 4001 FORMAT(/" TXTT1 - LU#",I3," IS NOT ASSIGNED TO A MP TERMINAL."/ 1" RERUN TEST SPECIFYING CORRECT LU#.") GO TO 999 C C MAKE SURE LU IS NOT DOWN C 50 CONTINUE J = EQT5/040000B IF ((J.NE.01).AND.(IAND(EQTST,100000B).EQ.0)) GO TO 90 C LU IS DECLARED DOWN. WRITE(LGLU,6001) MPLU 6001 FORMAT(/" TXTT1 - LU#",I3,": EQT OR LU FOR TEST TERMINAL" 1" IS DOWN."/" UP EQT AND RERUN TEST.") GO TO 999 C C LU IS CORRECTLY ASSIGNED. LOCK THE LU AND PROCEED WITH C THE TEST. C 90 CONTINUE CALL LURQ(LOCKOP,MPLU,1) C ERROR RETURN IF LU COULD NOT BE LOCKED. GO TO 95 C LU IS LOCKED. START MULTI-POINT EXERCISER PROGRAM. 92 GO TO 100 C LU COULD NOT BE LOCKED. 95 CALL ABREG(REGA,REGB) WRITE(LGLU,9501) MPLU 9501 FORMAT(/" TXTT1 - LU#",I3,": MP TERMINAL COULD NOT BE LOCKED!") IF (REGA) 9502,9999,9505 9502 WRITE(MPLU,9503) MPLU 9503 FORMAT(/" TXTT1 - LU#",I3,": NO RESOURCE NUMBER AVAILABLE!") GO TO 999 9505 WRITE(LGLU,9506) MPLU 9506 FORMAT(/" TXTT1 - LU#",I3,": MP TERMINAL ALREADY LOCKED!") 999 WRITE(LGLU,9991) MPLU 9991 FORMAT(/" TXTT1 - LU#",I3,": MP TERMINAL TEST ABORTED!"/) GO TO 9999 C C START MULTI-POINT EXERCISER PROGRAM C 100 CONTINUE WRITE(LGLU,1003) MPLU 1003 FORMAT(/" TXTT1 - LU#",I3,": MP TERMINAL TEST RUNNING") ICRLF = 6412B CALL CODE C BUILD TEST LINE BUFFER OF 76 ALPHA NUMERIC CHARACTERS C TERMINATED WITH A CR/LF. TOTAL OF 78 CHARACTERS IN TEST C LINE. WRITE(IBX,1010) ICRLF II = 1 C BUILD TEST BUFFER BY WRITING THE LINE NUMBER FOLLOWED BY THE C TEST LINE FOR A TOTAL OF UP TO 20 LINES. C 01,---TEST CH.---CR/LF02---TEST CH.---CR/LF03......... DO 1000 J=1,INL CALL CODE WRITE(IBZ,1005) J 1005 FORMAT(I2) IB(II) = IBZ II = II + 1 1010 FORMAT("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" 1"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCD",A2) DO 500 I = 1,39 IB(II)=IBX(I) II = II + 1 500 CONTINUE 1000 CONTINUE C CALCULATE THE SIZE OF THE TRANSFER. ICNT = INL*80/2 C CLEAR ERROR DETECTED SW. IS = 0 C TURN OFF ROUTINE POLLING AND SET TO STRIP "GS". CALL EXEC(3,MPLU+2300B,140000B) C FORCE THE TERMINAL TO BLOCK MODE. WRITE(MPLU,1006) C SEQUENCE IS ESCAPE,&,SMALL S,1,D 1006 FORMAT("&s1D") C TRANSMIT THE TEST BUFFER. CALL EXEC(2,MPLU+3000B,IB,ICNT) C SEND A "HOME-UP" AND SIMULATED ENTER TO THE TERMINAL. CALL EXEC(2,MPLU,IHMXM,2) C RECEIVE THE TEXT FROM THE TERMINAL. CALL EXEC(1,MPLU,IIB,800) C COMPARE TEXT TRANSMITTED WITH TEXT RECEIVED. DO 5000 I=1,ICNT IF (IB(I).EQ.IIB(I)) GO TO 5000 C IF A WORD DOES NOT COMPARE, REPORT UP TO NN ERRORS. IS = IS + 1 WRITE(LGLU,1007) MPLU 1007 FORMAT(/" TXTT1 - LU#",I3,": DATA TRANSMISSION ERROR.") IF (IS.GT.NN) GO TO 9000 5000 CONTINUE C CLEAR EDIT MODE SWITCH AND REENABLE POLLING. 9000 CALL EXEC(3,MPLU+2300B,71401B) C C UNLOCK RESOURCE. C 9500 CONTINUE CALL LURQ(UNLOCK,MPLU,1) WRITE(LGLU,9001) MPLU,IS 9001 FORMAT(/" TXTT1 - LU#",I3,": MP TERMINAL TEST FINISHED ",I2, 1" ERRORS.") 9999 CONTINUE END END$