FTN4,L
C     NAME  :  EXMP--MULTIPOINT EXERSISER PROGRAM 
C     SOURCE:  91730-18002  1805
C     RELOC:   91730-16002  1805
C     PROGMR: G.W.J.
C 
C  **************************************************************** 
C  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977.  ALL RIGHTS      * 
C  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       * 
C  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * 
C  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.        * 
C  **************************************************************** 
C 
C 
      PROGRAM EXMP(,),91730-16002 REV 1805 780117 
      DIMENSION IB(800),IBX(40),IIB(800),IHMXM(2) 
      DATA IHMXM/15510B,15544B/ 
1     CALL RMPAR(IB)
C     DETERMINE LIST LOGICAL UNIT NUMBER.  IF ZERO SET TO LU 1. 
      IWLU=IB(1)
      IF(IWLU.EQ.0)IWLU=1 
      ILU=IB(2) 
C     DETERMINE LU TO BE TESTED.  IF ZERO STOP. 
      IF(ILU.EQ.0)STOP 0
C     DETERMINE THE MAXIMUM NUMBER OF ERRORS TO BE REPORTED.
      NN=IB(3)
C     DETERMINE THE TEST BUFFER SIZE. IF ZERO SET TO 20 LINES.
      INL=IB(4) 
      IF(INL.LE.0.OR.INL.GT.20)INL=20 
      IRP=IB(5) 
      ICRLF=6412B 
      CALL CODE 
C     BUILD TEST LINE BUFFER OF 76 ALPHA NUMERIC CHARACTORS 
C      TERMINATED WITH A CR/LF. TOTAL OF 78 CH. IN TEST LINE. 
      WRITE(IBX,101)ICRLF 
2     II=1
C     BUILD TEST BUFFER BY WRITEING 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,100)J 
      IB(II)=IBZ
100   FORMAT(I2)
      II=II+1 
101   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.
1500  IS=0
C     TURN OFF ROUTINE POLLING AND SET TO STRIP "GS". 
      CALL EXEC(3,ILU+2300B,140000B)
C     FORCE THE TERMINAL TO BLOCK MODE. 
      WRITE(ILU,200)
200   FORMAT("&s1D") 
C     TRANSMIT THE TEST BUFFER. 
      CALL EXEC(2,ILU+3000B,IB,ICNT)
C     SEND A "HOME-UP" AND SYMULATED ENTER TO THE TERMINAL. 
      CALL EXEC(2,ILU,IHMXM,2)
C     RECEVE THE TEXT FROM THE TERMINAL 
      CALL EXEC(1,ILU,IIB,800)
C     COMPARE TEXT TRANSMITED WITH TEXT RECEVED A WORD AT A TIME. 
      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 ANS SET "IS". 
      IS=IS+1 
      IF(NN.EQ.0)GO TO 5000 
      WRITE(IWLU,102)I,IB(I),IB(I),IIB(I),IIB(I)
102   FORMAT(1X,"WORD ",I3," SHOULD BE ",A2,1H[,@6,1H]," AND IS ",A2
     1,1H[,@6,1H])
      NN=NN-1 
5000  CONTINUE
C     CLEAR EDIT MODE SWITCH AND REENABLE ROUTINE POLLING.
6000  CALL EXEC(3,ILU+2300B,0)
C     IN CASE "NN" WAS ZERO REPORT "NO ERRORS" IF "IS"=0 OR "ERRORS" IF 
C      "IS"#0.
C     DONE
      IF(IS.NE.0)GO TO 90 
      WRITE(IWLU,103) 
103   FORMAT(2X,"NO ERRORS")
      GO TO 98
90    WRITE(IWLU,104)IS 
104   FORMAT(1X,I3,1X,"ERRORS") 
98    CONTINUE
      IF(IRP.EQ.0)GO TO 99
      CALL EXEC(12,0,2,0,-IRP)
      GO TO 1500
99    CONTINUE
      END 
      END$
                    