FTN4,L
      PROGRAM TXTD0(3,89),91711-16023  REV 1926  790428 
C 
C 
C*******************************************
C* TXTD0                                   *
C* PRIMARY SYSTEM DATA ENTRY TERMINAL TEST *
C* RELOC.: 91711-16023                     *
C* SOURCE: 91711-18023                     *
C*******************************************
C 
C 
C *** QUICK VERIFICATION FOR THE 3070A/3070B DATA ENTRY TERMINAL ***
C 
C 
C 
C 
C 
C        DESCRIPTION: 
C        ------------ 
C 
C     THE PROGRAM  "TXTD0"  WILL INTERACT WITH THE OPERATOR AND 
C     TEST THE NUMERIC DISPLAY, ALL PROMPTING LED'S, THE KEYBOARD,
C     ALL SPECIAL FUNCTION KEYS, THE MULTIFUNCTION READER AND THE 
C     ALPHANUMERIC STRIP PRINTER. 
C 
C 
C 
C 
C        OPERATING PROCEDURE: 
C        -------------------- 
C 
C     SCHEDULE THE PROGRAM "TXTD0" USING THE RUN COMMAND: 
C 
C             *RU,TXTD0,LGLU,LU 
C 
C             WHERE LGLU = INTERACTIVE CONSOLE L.U. 
C                           <DEFAULT =1>
C 
C                     LU = 3070A/3070B TERMINAL L.U.
C 
C 
C 
C 
C        TEST STEPS:
C        -----------
C 
C            01 - NUMERIC KEYPAD TEST 
C            02 - SPECIAL FUNCTION KEY TEST 
C            03 - READER TEST 
C            04 - PRINTER TEST
C 
C 
C 
C 
C        ERROR CODES: 
C        ------------ 
C 
C            E1 - OPERATOR ERROR (WRONG KEY)
C            E2 - TRANSMISSION LOG ERROR (TOO MANY KEYS)
C            E3 - STATUS ERROR
C            E4 - CARD READER ERROR DIAGNOSTIC CARD #1
C            E5 - CARD READER ERROR DIAGNOSTIC CARD #2
C            E6 - PRINTER ERROR (PRINTER OFF OR END OF PAPER) 
C 
C 
C 
C 
C 
C 
      DIMENSION IBUFR(100),KARD1(80),KARD2(80),KEY(12)
      DIMENSION MSG(8),IPARM(5),IFAIL(6),ITEST(4) 
C 
C 
C     *** DIAGNOSTIC CARD #1 ***
C 
C 
      DATA KARD1/7777B,0000B,4000B,2000B,1000B,0400B,0200B,0100B, 
     1           0040B,0020B,0010B,0004B,0002B,0001B,3777B,5777B, 
     2           6777B,7377B,7577B,7677B,7737B,7757B,7767B,7773B, 
     3           7775B,7776B,5252B,2525B,5252B,2525B,5252B,2525B, 
     4           5252B,2525B,5252B,2525B,5252B,2525B,5252B,2525B, 
     5           0000B,0000B,0000B,0000B,0000B,0000B,0000B,0000B, 
     6           0000B,0000B,0000B,0000B,0000B,0000B,0000B,0000B, 
     7           0000B,0000B,0000B,0000B,0000B,0000B,0000B,0000B, 
     8           0000B,0000B,0000B,0000B,0000B,0000B,0000B,0000B, 
     9           0000B,0000B,0000B,0000B,0000B,0000B,2100B,0010B/ 
C 
C 
C     *** DIAGNOSTIC CARD #2 ***
C 
C 
      DATA KARD2/5403B,4401B,4201B,4101B,0005B,1023B,1013B,1007B, 
     1           2011B,4021B,1021B,4103B,4043B,4023B,4013B,4007B, 
     2           6403B,2401B,2201B,2101B,0043B,0023B,0201B,1011B, 
     3           2003B,2403B,0007B,1005B,2043B,2023B,2013B,2007B, 
     4           0000B,4006B,0006B,0102B,2102B,1042B,4000B,0022B, 
     5           4022B,2022B,2042B,4012B,1102B,2000B,4102B,1400B, 
     6           1000B,0400B,0200B,0100B,0040B,0020B,0010B,0004B, 
     7           0002B,0001B,0202B,2012B,4042B,0012B,1012B,1006B, 
     8           0042B,4400B,0000B,0000B,0000B,0000B,0000B,0000B, 
     9           0000B,0000B,0000B,0000B,0000B,0000B,0000B,0000B/ 
C 
C     *** DATA STATEMENTS *** 
C 
      DATA KEY/2H7 ,2H8 ,2H9 ,2H4 ,2H5 ,2H6 , 
     1         2H1 ,2H2 ,2H3 ,2H- ,2H0 ,2H. / 
      DATA IFAIL/2HE1,2HE2,2HE3,2HE4,2HE5,2HE6/ 
      DATA ITEST/2H01,2H02,2H03,2H04/ 
      DATA KLEAR/2H  /,ICODE/100000B/ 
C 
C     *** GET LGLU AND TEST DEVICE LU *** 
C 
      CALL RMPAR(IPARM) 
      LGLU=IPARM(1) 
      IF (IPARM(1).LE.0) LGLU=LOGLU(IPARM(1)) 
      LU=IPARM(2) 
      IF (IPARM(2).LE.0) GOTO 200 
C 
C     *** GET STATUS OF TEST DEVICE LU ***
C 
      CALL EXEC(13,LU,ISTA1,ISTA2,ISTA3)
C 
C     *** CHECK IF LU IS ENABLED ***
C 
      IF (IAND(ISTA2,77B).NE.0) GOTO 110
      WRITE(LGLU,100)LU 
100   FORMAT(/"  TXTD0 - LU#",I3,": NOT ASSIGNED, NOT TESTED!"/)
      GOTO 9999 
C 
C     *** CHECK IF DEVICE TYPE IS 47 ***
C 
110   IF (IAND(ISTA1,37400B).EQ.23400B) GOTO 150
      WRITE(LGLU,120)LU 
120   FORMAT(/"  TXTD0 - LU#",I3," IS NOT ASSIGNED TO 3070 TERMINAL."/
     1"          RERUN TEST SPECIFYING CORRECT LU#.") 
      GOTO 220
C 
C     *** CHECK IF LU IS DOWN *** 
C 
150   IF (IAND(ISTA3,ICODE).EQ.0) GOTO 300
      WRITE(LGLU,160)LU 
160   FORMAT(/"  TXTD0 - LU#",I3,": EQT OR LU FOR TEST TERMINAL"
     1" IS DOWN."/"          UP EQT AND RERUN TEST.") 
      GOTO 220
C 
C     *** ILLEGAL TEST LU *** 
C 
200   WRITE(LGLU,210) LU
210   FORMAT(/"  TXTD0 - LU#",I3," SPECIFIED FOR TEST TERMINAL IS"
     1" ILLEGAL."/"          RERUN TEST SPECIFYING AN INTEGER >0" 
     2" AND <64 FOR LU#.")
220   WRITE(LGLU,230) LU
230   FORMAT(/"  TXTD0 - LU#",I3,":  DATA"
     1" ENTRY TERMINAL TEST ABORTED!"/) 
      GOTO 9999 
C 
C     *** CLEAR TERMINAL ***
C 
300   WRITE(LGLU,310)LU 
310   FORMAT(/"  TXTD0 - LU#",I3,":  DATA"
     1" ENTRY TERMINAL TEST RUNNING") 
      IERR=0
      DO 320 I=1,8
      MSG(I)=20040B 
320   CONTINUE
      CALL EXEC(3+ICODE,LU+1400B) 
      GOTO 1000 
330   CALL EXEC(3+ICODE,LU) 
      GOTO 1000 
340   CALL EXEC(3+ICODE,LU+1100B) 
      GOTO 1000 
350   CALL ABREG(IA,IB) 
      ITYPE=IAND(IA,1B) 
      IFLAG=IA
C 
C 
C ********************* START TESTING ********************* 
C 
C 
C     *** DISPLAY ALL SEGMENTS AND ALL PROMTING LED'S *** 
C 
C     ***  WAIT FOR DEL AND ENT KEYS ***
C 
C 
400   DO 410 I=1,16 
      IBUFR(I)=2H8. 
      CALL EXEC(2+ICODE,LU+100B,IBUFR,1)
      GOTO 1000 
410   CONTINUE
      DO 420 LIGHT=97,125,2 
      WRITE(LU)LIGHT
420   CONTINUE
      CALL REIO(1+ICODE,LU+100B,IBUFR(1),-1)
      GOTO 1000 
430   CALL REIO(1+ICODE,LU+100B,IBUFR(2),-1)
      GOTO 1000 
440   IF ((IBUFR(1).NE.77440B).OR.(IBUFR(2).NE.5040B)) IERR=IERR+1
      IF (ITYPE.EQ.0) GOTO 470
C 
C *** BUZZER TEST *** 
C 
      DO 460 I=1,3
      CALL EXEC(2+ICODE,LU,3400B,-1)
      GOTO 1000 
450   CALL EXEC(12,0,1,0,-10) 
460   CONTINUE
470   CALL EXEC(3+ICODE,LU) 
      GOTO 1000 
C 
C 
C ************* TEST 01 - NUMERIC KEYPAD TEST ************* 
C 
C 
C     *** READ FROM KEYBOARD ***
C 
C 
500   MSG(2)=ITEST(1) 
      DO 570 I=1,12 
      MSG(4)=KEY(I)/256+8192
      MSG(7)=KLEAR
510   CALL EXEC(2+ICODE,LU,MSG,8) 
      GOTO 1000 
520   CALL REIO(1+ICODE,LU+500B,IBUFR,-1) 
      GOTO 1000 
530   CALL ABREG(IA,IB) 
      CALL EXEC(3+ICODE,LU) 
      GOTO 1000 
540   IF (IB.EQ.1) GOTO 550 
      IF (MSG(7).NE.KLEAR) GOTO 560 
      MSG(7)=IFAIL(2) 
      GOTO 510
550   IF (IBUFR(1).EQ.KEY(I)) GOTO 570
      IF (MSG(7).NE.KLEAR) GOTO 560 
      MSG(7)=IFAIL(1) 
      GOTO 510
560   IERR=IERR+1 
      GOTO 580
570   CONTINUE
580   CALL EXEC(3+ICODE,LU+1100B) 
      GOTO 1000 
C 
C 
C ********** TEST 02 - SPECIAL FUNCTION KEY TEST ********** 
C 
C 
C     *** WAIT FOR SRQ AND POLL KEYBOARD STATION ***
C 
C 
600   MSG(2)=ITEST(2) 
      MSG(4)=20061B 
      MSG(7)=KLEAR
610   CALL EXEC(2+ICODE,LU,MSG,8) 
      GOTO 1000 
620   CALL EXEC(3+ICODE,LU+1000B) 
      GOTO 1000 
630   CALL EXEC(2+ICODE,LU+2000B,35B,1) 
      GOTO 1000 
640   CALL EXEC(13,LU,IEQT5)
      IF (IEQT5.EQ.23435B) GOTO 700 
      IF (MSG(7).NE.KLEAR) GOTO 650 
      MSG(7)=IFAIL(3) 
      GOTO 610
650   IERR=IERR+1 
C 
C     *** READ SPECIAL FUNCTION KEYS ***
C 
700   DO 710 I=2,10+ITYPE 
      CALL EXEC(3+ICODE,LU+1200B,I) 
      GOTO 1000 
710   CONTINUE
      DO 770 I=2,10+ITYPE 
      MSG(4)=KCVT(I)
      MSG(7)=KLEAR
720   IBUFR(1)=0
      CALL EXEC(2+ICODE,LU,MSG,8) 
      GOTO 1000 
730   CALL REIO(1+ICODE,LU+400B,IBUFR,10) 
      GOTO 1000 
740   CALL ABREG(IA,IB) 
      IF (IB.EQ.0) GOTO 750 
      IF (MSG(7).NE.KLEAR) GOTO 760 
      MSG(7)=IFAIL(2) 
      GOTO 720
750   IF (IAND(IA,17B).EQ.I) GOTO 770 
      IF (MSG(7).NE.KLEAR) GOTO 760 
      MSG(7)=IFAIL(1) 
      GOTO 720
760   IERR=IERR+1 
      GOTO 780
770   CONTINUE
780   CALL EXEC(3+ICODE,LU) 
      GOTO 1000 
790   CALL EXEC(3+ICODE,LU+1100B) 
      GOTO 1000 
C 
C 
C ********** TEST 03 - MULTIFUNCTION READER TEST ********** 
C 
C 
C     *** READ PUNCHED CARD *** 
C 
C 
800   IF (IAND(IFLAG,3B).NE.3B) GOTO 900
      MSG(2)=ITEST(3) 
      MSG(4)=20061B 
      MSG(7)=KLEAR
      CALL EXEC(2+ICODE,LU,MSG,8) 
      GOTO 1000 
805   CALL EXEC(2+ICODE,LU+2100B,37400B,-1) 
      GOTO 1000 
810   CALL EXEC(3+ICODE,LU+1200B,1) 
      GOTO 1000 
C 
C 
C ** READER CONFIGURATION: IMAGE MODE, MARKS+HOLES
C                          CLOCK AFTER DATA, LOCAL REJECT 
C 
815   CALL EXEC(3+ICODE,LU+600B,27B)
      GOTO 1000 
820   CALL REIO(1+ICODE,LU+1000B,IBUFR,80)
      GOTO 1000 
825   CALL ABREG(IA,IB) 
      IF (IAND(IA,17B).EQ.1) GOTO 880 
      IF (IB.NE.80) MSG(7)=IFAIL(4) 
      DO 830 I=1,80 
      IF (IBUFR(I).EQ.KARD1(I)) GOTO 830
      MSG(7)=IFAIL(4) 
830   CONTINUE
      MSG(4)=20062B 
      CALL EXEC(2+ICODE,LU,MSG,8) 
      GOTO 1000 
835   CALL EXEC(2+ICODE,LU+2100B,37400B,-1) 
      GOTO 1000 
C 
C 
C ** READER CONFIGURATION: IMAGE MODE, HOLES ONLY 
C                          NO CLOCK MARKS, LOCAL REJECT 
C 
840   CALL EXEC(3+ICODE,LU+600B,22B)
      GOTO 1000 
845   CALL REIO(1+ICODE,LU+1000B,IBUFR,80)
      GOTO 1000 
850   CALL ABREG(IA,IB) 
      IF (IAND(IA,17B).EQ.1) GOTO 880 
      IF (IB.NE.66) MSG(7)=IFAIL(5) 
      DO 860 I=1,66 
      IF (IBUFR(I).EQ.KARD2(I)) GOTO 860
      MSG(7)=IFAIL(5) 
860   CONTINUE
      IF (MSG(7).EQ.KLEAR) GOTO 890 
      CALL EXEC(2+ICODE,LU,MSG,8) 
      GOTO 1000 
870   CALL EXEC(12,0,2,0,-3)
880   IERR=IERR+1 
890   CALL EXEC(3+ICODE,LU) 
      GOTO 1000 
C 
C 
C ************** TEST 04 - STRIP PRINTER TEST **************
C 
C 
C     *** PRINT ASCII CHARACTER SET *** 
C 
C 
900   CALL EXEC(3+ICODE,LU+1100B) 
      GOTO 1000 
905   CALL ABREG(IA,IB) 
      IF (IAND(IA,5B).NE.5) GOTO 990
      MSG(2)=ITEST(4) 
      MSG(4)=KLEAR
      MSG(7)=KLEAR
      IF (IAND(IA,40B).EQ.0) GOTO 910 
      MSG(7)=IFAIL(6) 
      GOTO 970
910   CALL EXEC(2+ICODE,LU,MSG,8) 
      GOTO 1000 
915   CALL EXEC(2+ICODE,LU+2100B,37400B,-1) 
      GOTO 1000 
920   IBUFR(1)=20041B 
      DO 925 I=1,31 
      IBUFR(I+1)=IBUFR(I)+514 
925   CONTINUE
      CALL EXEC(2+ICODE,LU+1100B,IBUFR,32)
      GOTO 1000 
930   IBUFR(1)=5012B
      IBUFR(2)=5012B
      IBUFR(3)=5012B
      CALL EXEC(2+ICODE,LU+1100B,IBUFR,3) 
      GOTO 1000 
940   DO 960 I=1,100
      CALL EXEC(3+ICODE,LU+1100B) 
      GOTO 1000 
950   CALL ABREG(IA,IB) 
      IF (IAND(IA,10B).EQ.0) GOTO 990 
960   CONTINUE
      MSG(7)=IFAIL(3) 
970   IERR=IERR+1 
      CALL EXEC(2+ICODE,LU,MSG,8) 
      GOTO 1000 
980   CALL EXEC(12,0,2,0,-3)
990   GOTO 1020 
C 
C     *** TESTING COMPLETED *** 
C 
1000  CALL ABREG(IA,IB) 
      IERR=IERR+1 
      WRITE(LGLU,1010)LU,IA,IB
1010  FORMAT(/"  TXTD0 - LU#",I3,": DATA TRANSMISSION ERROR."/
     1"          ERROR REPORTED A=",@6," B=",@6)
      GOTO 220
1020  CALL EXEC(3+ICODE,LU) 
      GOTO 1000 
1030  IF (IERR.EQ.0) GOTO 1060
      CALL CODE 
      WRITE(MSG,1040) 
1040  FORMAT("      E ",4(2H  ))
      MSG(3)=KCVT(IERR) 
1050  CALL EXEC(2+ICODE,LU,MSG,8) 
      GOTO 1000 
1060  WRITE(LGLU,1070)LU,IERR 
1070  FORMAT(/"  TXTD0 - LU#",I3,":  DATA ENTRY"
     1" TERMINAL TEST FINISHED   ",I3," ERRORS"/) 
9999  END 
      END$
                                                                                                                                                                                                            