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$
                                                                                                                                                                                                      