FTN4,L
      PROGRAM TXTT0(3,89),91711-16020  REV 1926  791112 
C 
C     CHANGED 791112. IF ILUT=0, DO NOT ATTEMPT TO WRITE
C     ERROR MESSAGES TO ILUT. 
C 
C 
C**************************************** 
C* TXTT0                                * 
C* PRIMARY SYSTEM 2645/48 TERMINAL TEST * 
C* RELOC.: 91711-16020                  * 
C* SOURCE: 91711-18020                  * 
C**************************************** 
C 
C 
C THIS PROGRAM IS FOR TESTING KEYBOARD, DISPLAY AND CARTRIDGE 
C TAPE OPERATION OF DEVICES USING DRIVERS DVR05 OR DVA05. THE 
C PROGRAM IS INITIATED VIA THE COMMAND
C 
C                  RU,TXTT0,L,T,LC/M,RC 
C 
C        WHERE: L     IS THE LU OF THE LOG DEVICE (DEFAULT TO 1)
C               T     IS THE LU OF THE KEYBOARD/CRT DEVICE TO BE TESTED.
C                     THIS INPUT IS A MUST! 
C               LC    IS THE LU OF THE LEFT CTU TO BE TESTED
C                     THE PROGRAM WILL DEFAULT TO AUTOMATIC MODE. 
C               M     SPECIFIES MENU MODE, FOLLOWING PARAMETER
C                     NOT REQUIRED
C               RC    IS THE LU OF THE RIGHT CTU TO BE TESTED 
C 
C IF 'T' IS MISSING, THE PROGRAM WILL ABORT AND PRINT AN APPROPRIATE
C MESSAGE ON THE LOG DEVICE. IF 'MODE' IS 'M', THE PROGRAM WILL GO
C INTO MENU MODE AND ASK FOR EACH TEST TO BE RUN. DEFAULT CONDITION 
C FOR 'MODE' IS AUTOMATIC. IN THIS CASE TESTS WILL BE RUN ON ALL LU'S 
C SPECIFIED IN THE RUN STATEMENT PARAMETERS ABOVE.
C 
C THE VARIABLES USED IN THIS PROGRAM ARE AS FOLLOWS:
C 
C IBUFD......DATA STORED IN PROGRAM TO BE TRANSFERRED TO DISPLAY
C IBUFT......DATA STORED FORM KEYBOARD INPUT TO BE CHECKED AGAINST
C            CONTENTS OF IBUFD
C IREG.......A & B REGISTERS FOR PARAMATER RETURN OF EXEC CALLS 
C IA.........A REGISTER (NOT USED IN THIS PROGRAM)
C IB.........B REGISTER, USED FOR INPUT CHARACTER COUNT 
C IQUE.......PROMPT VARIABLE FOR ABORT OR CONTINUE REQUEST
C IPRAM(1)...PARAMATER PASSED FOR LOG DEVICE LU 
C IPRAM(2)...PARAMATER PASSED FOR KEYBOARD/DISPLAY TEST DEVICE LU 
C IPRAM(3)...PARAMATER PASSED FOR LEFT-CTU TEST DEVICE LU 
C IPRAM(4)...PARAMATER PASSED FOR RIGHT-CTU TEST DEVICE LU
C IPRAM(5)...PARAMATER PASSED FOR MENU OR NON-MENU MODE 
C LGLU.......LOG DEVICE LU
C ILUT.......LU OF TEST DEVICE KEYBOARD/DISPLAY 
C LGLUC......LU OF TEST DEVICE LEFT-CTU 
C ILURC......LU OF TEST DEVICE RIGHT-CTU
C ICRTS1.....KEYBOARD/DISPLAY EQT WORD 5
C ICRTS2.....KEYBOARD/DISPLAY EQT WORD 4
C ICRTS3.....BITS 15 & 0-4 OF THIS STATUS WORD GIVES LU AVAILABILITY
C            AND SUB-CHANNEL RESPECTIVELY OF KEYBOARD/DISPLAY 
C ILCTU1.....LEFT-CTU EQT WORD 5
C ILCTU2.....LEFT-CTU EQT WORD 4
C ILCTU3.....BITS 15 & 0-4 OF THIS STATUS WORD GIVES LU AVAILABILITY
C            AND SUB-CHANNEL RESPECTIVELY OF LEFT-CTU 
C IRCTU1.....RIGHT-CTU EQT WORD 5 
C IRCTU2.....RIGHT-CTU EQT WORD 4 
C IRCTU3.....BITS 15 & 0-4 OF THIS STATUS WORD GIVES LU AVAILABILITY
C            AND SUB-CHANNEL RESPECTIVELY OF RIGHT-CTU
C MLUCRT.....MASK OF ICRTS2 TO CHECK FOR GENERATED LU ASSIGNMENT
C MCRTYP.....MASK OF ICTRS1 TO CHECK FOR PROPER DEVICE TYPE 
C MCRTAV.....MASK OF ICRTS1 TO CHECK FOR EQT AVAILABILITY 
C MCRTSC.....MASK OF ICRTS3 TO CHECK FOR LU AVAILABILITY AND
C            PROPER SUB-CHANNEL ASSIGNMENT
C MLULC......MASK OF ILCTU2 TO CHECK FOR GENERATED LU ASSIGNMENT
C MLCTYP.....MASK OF ILCTU1 TO CHECK FOR PROPER DEVICE TYPE 
C MLCAV......MASK OF ILCTU1 TO CHECK FOR EQT AVAILABILITY 
C MLCSC......MASK OF ILCTU3 TO CHECK FOR LU AVAILABILITY AND
C            PROPER SUB-CHANNEL ASSIGNMENT
C MLURC......MASK OF IRCTU2 TO CHECK FOR GENERATED LU ASSIGNMENT
C MRCTYP.....MASK OF IRCTU1 TO CHECK FOR PROPER DEVICE TYPE 
C MRCAV......MASK OF IRCTU1 TO CHECK FOR EQT AVAILABILITY 
C MRCSC......MASK OF IRCTU3 TO CHECK FOR LU AVAILABILITY AND
C            PROPER SUB-CHANNEL ASSIGNMENT
C ISTAT1.....VARIABLE CONTAINING EQT WORD 5 TO CHECK FOR WRITE
C            PROTECT STATUS OF LEFT AND RIGHT-CTU'S 
C MWP........MASK OF ISTAT1 TO CHECK WRITE PROTECT STATUS 
C MENU.......VARIABLE TO DETERMINE IF MENU MODE (MENU=1 IN MENU MODE) 
C IERRK......ERROR COUNTER FOR KEYBOARD/CRT TESTS 
C IERRL......ERROR COUNTER FOR LEFT CTU TESTS 
C IERRR......ERROR COUNTER FOR RIGHT CTU TESTS
C IERR.......SUM OF IERRK, IERRL AND IERRR
      DIMENSION IBUFD(40), IREG(2), IQUE(1), IPRAM(5), IBUFT(40)
     1, IBUFC1(40), IBUFC2(1) 
      EQUIVALENCE (REG,IREG,IA), (IREG(2),IB) 
      DATA IBUFD/2HU*,2H3L,2HG8,2H =/ 
      DATA IBUFC1/2HAB,2HCD,2HEF,2HGH,2HIJ,2HKL,2HMN,2HOP,2HQR,2HST,
     12HUV,2HWX,2HYZ,2H01,2H23,2H45,2H67,2H89/
      DATA IBUFC2/1H@/
      CALL RMPAR(IPRAM) 
      MENU=0
      IERRK=0 
      IERRL=0 
      IERRR=0 
C 
C ASSIGN LOG DEVICE LU
C 
      LGLU=IPRAM(1) 
      IF(IPRAM(1).LE.0) LGLU=LOGLU(IPRAM(1))
C 
C ASSIGN KEYBOARD/CRT TEST DEVICE LU
C 
      ILUT=IPRAM(2) 
C 
C CHECK FOR VALID INPUT TO IPRAM(2) = ILUT
C 
      IF(IPRAM(2).LE.0) 5,15
    5 IF(ILUT-LGLU) 6,7,6 
    6 WRITE(LGLU,10)
C 
C     THE FOLLOWING LINE ADDED 791112 
      IF(ILUT.LE.0) GO TO 9950
C 
    7 WRITE(ILUT,10)
   10 FORMAT(/"  TXTT0 - NO LU WAS SPECIFIED FOR TEST KEYBOARD/"
     1"DISPLAY."/"          RERUN TEST SPECIFYING AN LU# FOR TEST"
     2" KEYBOARD/DISPLAY."//"  TXTT0 - TERMINAL TEST ABORTED!"/)
      GOTO 9950 
C 
C CHECK FOR MENU MODE 
C 
   15 IF(IPRAM(3).NE.1HM) 17,4000 
C 
C CHOOSE TESTS AUTOMATICALLY
C 
   17 IF((IPRAM(2).LE.0).AND.(IPRAM(3).LE.0).AND.(IPRAM(4).LE.0)) 30,20 
   20 IF(IPRAM(2).LE.0) 22,1000 
   22 IF(IPRAM(3).LE.0) 24,2000 
   24 IF(IPRAM(4).LE.0) 9900,3000 
   30 IF(ILUT-LGLU) 31,32,31
   31 WRITE(LGLU,35)
   32 WRITE(ILUT,35)
   35 FORMAT(/,6X,"TXTT0 - NO TEST LU NUMBERS SPECIFIED"/ 
     1,30X,"TXTT0 ABORTED!"/) 
      GOTO 9950 
C 
C*********************************************************************
C*                    SECTION 1000 - KEYBOARD/CRT TESTS 
C*********************************************************************
C 
C 
C ASSIGN TEST DEVICE KEYBOARD/DISPLAY LU
C 
 1000 ILUT=IPRAM(2) 
C 
C GET KEYBOARD/DISPLAY LU STATUS
C 
 1010 CALL EXEC(13,ILUT,ICRTS1,ICRTS2,ICRTS3) 
C 
C CHECK FOR KEYBOARD/DISPLAY GENERATED LU ASSIGNMENT
C 
      MLUCRT=IAND(ICRTS2,77B) 
      IF(MLUCRT.EQ.0) 8000,1100 
C 
C CHECK FOR KEYBOARD/DISPLAY DEVICE TYPE
C 
 1100 MCRTYP=IAND(ICRTS1,37400B)
      IF(MCRTYP.NE.2400B) 8100,1110 
C 
C CHECK FOR KEYBOARD/DISPLAY EQT AVAILABILITY 
C 
 1110 MCRTAV=IAND(ICRTS1,140000B) 
      IF(MCRTAV.NE.0) 8200,1120 
C 
C CHECK FOR KEYBOARD/DISPLAY PROPER SUB-CHANNEL ASSIGNMENT
C 
 1120 MCRTSC=IAND(ICRTS3,17B) 
      IF(MCRTSC.NE.0) 8400,1130 
C 
C CHECK FOR KEYBOARD/DISPLAY LU AVAILABILITY
C 
 1130 MCRTSC=IAND(ICRTS3,100000B) 
      IF(MCRTSC.NE.0) 8200,1200 
 1200 IF(ILUT-LGLU) 1205,1207,1205
 1205 WRITE(LGLU,1210) ILUT 
 1207 WRITE(ILUT,1210) ILUT 
 1210 FORMAT(/"  TXTT0 - LU#",I3,":  TERMINAL TEST RUNNING")
C 
C KEYBOARD/DISPLAY DATA TRANSFER TEST WITH ECHO 
C 
      IF(ILUT-LGLU) 1215,1217,1215
 1215 WRITE(LGLU,1220) ILUT 
 1217 WRITE(ILUT,1220) ILUT 
 1220 FORMAT(/"  TXTT0 - LU#",I3,":"/ 
     1"          TYPE THE FOLLOWING CHARACTERS, THEN PRESS THE RETURN"
     2" KEY."/"          THE CHARACTERS SHOULD ECHO ON THE TEST DISPLAY"
     3" AS THEY ARE TYPED."/"          U*3LG8 ="/"          _") 
      REG=EXEC(1,ILUT+400B,IBUFT,4) 
C 
C VERIFY TRANSFERRED DATA 
C 
      DO 1230 I=1,IB
      IF(IBUFD(I).EQ.IBUFT(I)) GOTO 1230
      GOTO 8300 
 1230 CONTINUE
C 
C DISPLAY LINE SPACING TEST 
C 
      IF(ILUT-LGLU) 1255,1257,1255
 1255 WRITE(LGLU,1260) ILUT 
 1257 WRITE(ILUT,1260) ILUT 
 1260 FORMAT(/"  TXTT0 - LU#",I3,":"/ 
     1"          THERE SHOULD BE 5 LINES OF SPACE BETWEEN THIS" 
     2" LINE...") 
      CALL EXEC(3,ILUT+1100B,5) 
      IF(ILUT-LGLU) 1263,1267,1263
 1263 WRITE(LGLU,1270)
 1267 WRITE(ILUT,1270)
 1270 FORMAT("          ...AND THIS LINE.") 
      IF(ILUT-LGLU) 1275,1280,1275
 1275 WRITE(LGLU,1290) ILUT 
 1280 WRITE(ILUT,1290) ILUT 
 1290 FORMAT(/"  TXTT0 - LU#",I3,":  KEYBOARD DISPLAY TEST FINISHED") 
C 
C DYNAMIC STATUS REQUEST TO FORCE TERMINATION OF PRECEEDING 
C OPERATION BEFORE MAKING LU/EQT AVAILABILTY CHECK ON NEXT TEST 
C 
      CALL EXEC(3,ILUT+600B)
      IF(MENU-1) 22,4015,4015 
C 
C*********************************************************************
C*                 SECTION 2000 - LEFT CTU TESTS
C*********************************************************************
C 
C 
C ASSIGN TEST DEVICE LEFT-CTU LU
C 
 2000 LGLUC=IPRAM(3)
C 
C GET LEFT-CTU LU STATUS
C 
 2010 CALL EXEC(13,LGLUC,ILCTU1,ILCTU2,ILCTU3)
C 
C CHECK FOR LEFT-CTU GENERATED LU ASSIGNMENT
C 
      MLULC=IAND(ILCTU2,77B)
      IF(MLULC.LE.0) 8005,2100
C 
C CHECK FOR LEFT-CTU DEVICE TYPE
C 
 2100 MLCTYP=IAND(ILCTU1,37400B)
      IF(MLCTYP.NE.2400B) 8110,2120 
C 
C CHECK FOR LEFT-CTU EQT AVAILABILITY 
C 
 2120 MLCAV=IAND(ILCTU1,140000B)
      IF(MLCAV.NE.0) 8200,2130
C 
C CHECK FOR LEFT-CTU PROPER SUB-CHANNEL 
C 
 2130 MLCSC=IAND(ILCTU3,17B)
      IF(MLCSC.NE.1) 8410,2140
C 
C CHECK FOR LEFT-CTU LU AVAILABILITY
C 
 2140 MLCSC=IAND(ILCTU3,100000B)
      IF(MLCSC.NE.0) 8200,2200
C 
C LEFT CTU TESTS FOR DATA TRANSFER AND CONTROL
C 
 2200 IF(ILUT-LGLU) 2205,2207,2205
 2205 WRITE(LGLU,2210) LGLUC
 2207 WRITE(ILUT,2210) LGLUC
 2210 FORMAT(/"  TXTT0 - LU#",I3,":"/ 
     1"          INSERT 'SCRATCH' CARTRIDGE WITH RECORD TAB SET TO" 
     2" RECORD"/"          INTO LEFT CTU SLOT. TYPE  /C"
     3"  TO CONTINUE WITH"/"          CTU TEST OR TYPE  /A  TO ABORT" 
     4" THIS TEST: _")
      CALL EXEC(1,ILUT+400B,IQUE,1) 
      IF(IQUE.EQ.2H/C) GOTO 2300
      IF(IQUE.EQ.2H/A) GOTO 9000
      GOTO 2200 
 2300 CALL EXEC(2,LGLUC,IBUFC1,-36) 
      CALL EXEC(3,LGLUC+100B) 
      CALL EXEC(2,LGLUC,IBUFC2,-1)
      CALL EXEC(3,LGLUC+100B) 
      CALL EXEC(3,LGLUC+400B) 
      CALL EXEC(3,LGLUC+1300B)
      CALL EXEC(1,LGLUC,IBUFT,-1) 
      IF(IBUFC2(1).NE.IBUFT(1)) GOTO 8500 
      DO 2310 I=1,2 
      CALL EXEC(3,LGLUC+1400B)
 2310 CONTINUE
      REG=EXEC(1,LGLUC,IBUFT,-36) 
      DO 2320 I=1,IB
      IF(IBUFC1(I).EQ.IBUFT(I)) GOTO 2320 
      GOTO 8500 
 2320 CONTINUE
      CALL EXEC(3,LGLUC+2700B,2)
      CALL EXEC(1,LGLUC,IBUFT,-1) 
      IF(IBUFC2(1).NE.IBUFT(1)) GOTO 8500 
C 
C TEST TO CHECK LEFT CTU FOR WRITE PROTECT STATUS 
C 
 2400 IF(ILUT-LGLU) 2405,2407,2405
 2405 WRITE(LGLU,2410) LGLUC
 2407 WRITE(ILUT,2410) LGLUC
 2410 FORMAT(/"  TXTT0 - LU#",I3,":"/ 
     1"          REMOVE CARTRIDGE FROM LEFT CTU AND SET RECORD" 
     2/"          TAB TO PROTECT.  RE-INSERT CARTRIDGE" 
     3" AND TYPE  /C  TO"/"          CONTINUE NEXT TEST OR TYPE  /A"
     4"  TO ABORT THIS TEST: _")
      CALL EXEC(1,ILUT+400B,IQUE,1) 
      IF(IQUE.EQ.2H/C) GOTO 2415
      IF(IQUE.EQ.2H/A) GOTO 9000
      GOTO 2400 
 2415 CALL EXEC(3,LGLUC+2700B,1)
      CALL EXEC(1,LGLUC,IBUFT,-36)
      CALL EXEC(13,LGLUC,ISTAT1)
      MWP=IAND(ISTAT1,4B) 
      IF(MWP-4B) 8700,2420,8700 
 2420 CALL EXEC(3,LGLUC+500B) 
      IF(ILUT-LGLU) 2425,2430,2425
 2425 WRITE(LGLU,2440) LGLUC
 2430 WRITE(ILUT,2440) LGLUC
 2440 FORMAT(/"  TXTT0 - LU#",I3,":  LEFT CTU TEST FINISHED"/)
C 
C DYNAMIC STATUS REQUEST TO FORCE TERMINATION OF PRECEEDING 
C OPERATION BEFORE MAKING LU/EQT AVAILABILITY CHECK ON NEXT TEST
C 
      CALL EXEC(3,LGLUC+600B) 
      IF(MENU-1) 24,4015,4015 
C 
C*********************************************************************
C*                   SECTION 3000 - RIGHT CTU TESTS 
C*********************************************************************
C 
C 
C ASSIGN TEST DEVICE RIGHT-CTU LU 
C 
 3000 ILURC=IPRAM(4)
C 
C GET RIGHT-CTU LU STATUS 
C 
 3010 CALL EXEC(13,ILURC,IRCTU1,IRCTU2,IRCTU3)
C 
C CHECK FOR RIGHT-CTU GENERATED LU ASSIGNMENT 
C 
      MLURC=IAND(IRCTU2,77B)
      IF(MLURC.LE.0) 8010,3100
C 
C CHECK FOR RIGHT-CTU PROPER DEVICE TYPE
C 
 3100 MRCTYP=IAND(IRCTU1,37400B)
      IF(MRCTYP.NE.2400B) 8120,3120 
C 
C CHECK FOR RIGHT-CTU EQT AVAILABILITY
C 
 3120 MRCAV=IAND(IRCTU1,140000B)
      IF(MRCAV.NE.0) 8200,3130
C 
C CHECK FOR RIGHT-CTU PROPER SUB-CHANNEL
C 
 3130 MRCSC=IAND(IRCTU3,17B)
      IF(MRCSC.NE.2) 8420,3140
C 
C CHECK FOR RIGHT-CTU LU AVAILABILITY 
C 
 3140 MRCSC=IAND(IRCTU3,100000B)
      IF(MRCSC.NE.0) 8200,3200
C 
C  RIGHT CTU TESTS FOR DATA TRANSFER AND CONTROL
C 
 3200 IF(ILUT-LGLU)3205,3207,3205 
 3205 WRITE(LGLU,3210) ILURC
 3207 WRITE(ILUT,3210) ILURC
 3210 FORMAT(/"  TXTT0 - LU#",I3,":"/ 
     1"          INSERT 'SCRATCH' CARTRIDGE WITH RECORD TAB SET TO" 
     2" RECORD"/"          INTO RIGHT CTU SLOT. TYPE  /C" 
     3"  TO CONTINUE WITH"/"          CTU TEST OR TYPE  /A  TO ABORT" 
     4" THIS TEST: _")
      CALL EXEC(1,ILUT+400B,IQUE,1) 
      IF(IQUE.EQ.2H/C) GOTO 3300
      IF(IQUE.EQ.2H/A) GOTO 9000
      GOTO 3200 
 3300 CALL EXEC(2,ILURC,IBUFC2,-1)
      CALL EXEC(3,ILURC+100B) 
      CALL EXEC(2,ILURC,IBUFC1,-36) 
      CALL EXEC(3,ILURC+100B) 
      CALL EXEC(3,ILURC+2700B,2)
      REG=EXEC(1,ILURC,IBUFT,-36) 
      DO 3330 I=1,IB
      IF(IBUFC1(I).EQ.IBUFT(I)) GOTO 3330 
      GOTO 8600 
 3330 CONTINUE
      CALL EXEC(3,ILURC+500B) 
      CALL EXEC(1,ILURC,IBUFT,-1) 
      IF(IBUFT(1).NE.IBUFC2(1)) GOTO 8600 
      CALL EXEC(3,ILURC+1300B)
      REG=EXEC(1,ILURC,IBUFT,-36) 
      DO 3340 I=1,IB
      IF(IBUFC1(I).EQ.IBUFT(I)) GOTO 3340 
      GOTO 8600 
 3340 CONTINUE
      CALL EXEC(3,ILURC+1400B)
      CALL EXEC(3,ILURC+1400B)
      CALL EXEC(1,ILURC,IBUFT,-1) 
      IF(IBUFC2(1).NE.IBUFT(1)) GOTO 8600 
C 
C TEST TO CHECK RIGHT CTU FOR WRITE PROTECT STATUS
C 
 3500 IF(ILUT-LGLU) 3505,3507,3505
 3505 WRITE(LGLU,3510) ILURC
 3507 WRITE(ILUT,3510) ILURC
 3510 FORMAT(/"  TXTT0 - LU#",I3,":"/ 
     1"          REMOVE CARTRIDGE FROM RIGHT CTU AND SET RECORD"
     2/"          TAB TO PROTECT.  RE-INSERT CARTRIDGE" 
     3" AND TYPE  /C  TO"/"          CONTINUE NEXT TEST OR TYPE  /A"
     4"  TO ABORT THIS TEST: _")
      CALL EXEC(1,ILUT+400B,IQUE,1) 
      IF(IQUE.EQ.2H/C) GOTO 3515
      IF(IQUE.EQ.2H/A) GOTO 9000
      GOTO 3500 
 3515 CALL EXEC(3,ILURC+2700B,1)
      CALL EXEC(1,ILURC,IBUFT,-1) 
      CALL EXEC(13,ILURC,ISTAT1)
      MWP=IAND(ISTAT1,4B) 
      IF(MWP-4B) 8800,3600,8800 
 3600 CALL EXEC(3,ILURC+400B) 
 3700 IF(ILUT-LGLU) 3705,3710,3705
 3705 WRITE(LGLU,3720) ILURC
 3710 WRITE(ILUT,3720) ILURC
 3720 FORMAT(/"  TXTT0 - LU#",I3,":  RIGHT CTU TEST FINISHED"/) 
      IF(MENU-1) 9900,4015,4015 
C 
C*********************************************************************
C*                  SECTION 4000 - MENU 
C*********************************************************************
C 
 4000 IF(ILUT-LGLU) 4001,4002,4001
 4001 WRITE(LGLU,4010)
 4002 WRITE(ILUT,4010)
 4010 FORMAT(//"  TXTT0:  TERMINAL TEST RUNNING"/)
      MENU=1
 4015 IF(ILUT-LGLU) 4013,4014,4013
 4013 WRITE(LGLU,4016)
 4014 WRITE(ILUT,4016)
 4016 FORMAT(/"  TXTT0:  TERMINAL TEST MENU"//
     1,4X,"      THE FOLLOWING TERMINAL TESTS CAN BE SELECTED BY" 
     2" ENTERING THE"/"          CORRESPONDING TEST CODES:"// 
     3"                TEST                     TEST CODE"/ 
     4"                ----                     ---------"/ 
     5"          1) KEYBOARD/DISPLAY TEST           /K"/
     6"          2) LEFT CTU TEST                   /L"/
     7"          3) RIGHT CTU TEST                  /R"/
     8"          4) END TEST                        /E"/) 
 4018 IF(ILUT-LGLU) 4017,4019,4017
 4017 WRITE(LGLU,4020)
 4019 WRITE(ILUT,4020)
 4020 FORMAT(/"  TXTT0: ENTER THE CODE FOR THE TERMINAL TEST" 
     1" THAT YOU WISH TO RUN: _") 
      CALL EXEC(1,401B,IQUE,1)
      IF(IQUE.EQ.2H/K) GOTO 4100
      IF(IQUE.EQ.2H/L) GOTO 4200
      IF(IQUE.EQ.2H/R) GOTO 4300
      IF(IQUE.EQ.2H/E) GOTO 9900
      GOTO 4018 
 4100 IF(ILUT-LGLU) 4101,4102,4101
 4101 WRITE(LGLU,4110)
 4102 WRITE(ILUT,4110)
 4110 FORMAT(/"  TXTT0 - TERMINAL KEYBOARD/CRT TEST"/)
C 
C DYNAMIC STATUS TO TERMINATE OPERATION OF DEVICE BEFORE LU/EQT 
C AVAILABILITY CHECK
C 
      CALL EXEC(3,ILUT+600B)
      GOTO 1010 
 4200 IF(ILUT-LGLU) 4201,4202,4201
 4201 WRITE(LGLU,4210)
 4202 WRITE(ILUT,4210)
 4210 FORMAT(/"  TXTT0: LEFT CTU TEST"/ 
     1"  TXTT0: WHAT IS THE LEFT CTU LU#? _") 
      READ(ILUT,*) LGLUC
      GOTO 2010 
 4300 IF(ILUT-LGLU) 4301,4302,4301
 4301 WRITE(LGLU,4310)
 4302 WRITE(ILUT,4310)
 4310 FORMAT(/"  TXTT0: RIGHT CTU TEST"/
     1"  TXTT0: WHAT IS THE RIGHT CTU LU#? _")
      READ(ILUT,*) ILURC
      GOTO 3010 
C 
C*********************************************************************
C*                  SECTION 8000 - ERROR MESSAGES 
C*********************************************************************
C 
 8000 IF(ILUT-LGLU) 8001,8003,8001
 8001 WRITE(LGLU,8002) ILUT 
 8003 WRITE(ILUT,8002) ILUT 
 8002 FORMAT(/"  TXTT0 - LU#",I3,": NOT ASSIGNED, NOT TESTED!"/)
      GOTO 9950 
 8005 IF(ILUT-LGLU) 8004,8006,8004
 8004 WRITE(LGLU,8007) LGLUC
 8006 WRITE(ILUT,8007) LGLUC
 8007 FORMAT(/"  TXTT0 - LU#",I3,": NOT ASSIGNED, NOT TESTED!"/)
      GOTO 9950 
 8010 IF(ILUT-LGLU) 8011,8012,8011
 8011 WRITE(LGLU,8015) ILURC
 8012 WRITE(ILUT,8015) ILURC
 8015 FORMAT(/"  TXTT0 - LU#",I3,": NOT ASSIGNED, NOT TESTED!"/)
      GOTO 9950 
 8020 IF(ILUT-LGLU) 8021,8022,8021
 8021 WRITE(LGLU,8025)
 8022 WRITE(ILUT,8025)
 8025 FORMAT(/"  TXTT0 - LU# SPECIFIED FOR KEYBOARD/DISPLAY"
     1" IS ILLEGAL."/"          RERUN TEST SPECIFYING AN INTEGER" 
     2" >0 AND <64 FOR LU#.") 
      GOTO 9000 
 8030 IF(ILUT-LGLU) 8031,8032,8031
 8031 WRITE(LGLU,8035)
 8032 WRITE(ILUT,8035)
 8035 FORMAT(/"  TXTT0 - LU# SPECIFIED FOR LEFT CTU IS ILLEGAL."/ 
     1"          RERUN TEST SPECIFYING AN INTEGER >0 AND <64 FOR LU#.") 
      GOTO 9000 
 8040 IF(ILUT-LGLU) 8041,8042,8041
 8041 WRITE(LGLU,8045)
 8042 WRITE(ILUT,8045)
 8045 FORMAT(/"  TXTT0 - LU# SPECIFIED FOR RIGHT CTU IS ILLEGAL."/
     1"          RERUN TEST SPECIFYING AN INTEGER >0 AND <64 FOR LU#.") 
      GOTO 9000 
 8100 IF(ILUT-LGLU) 8101,8102,8101
 8101 WRITE(LGLU,8105) ILUT 
 8102 WRITE(ILUT,8105) ILUT 
 8105 FORMAT(/"  TXTT0 - LU#",I3," SPECIFIED FOR KEYBOARD/DISPLAY"
     1" IS NOT ASSIGNED TO"/"          2645/2648 TERMINAL. RERUN TEST"
     2" SPECIFYING CORRECT LU#.") 
      GOTO 9000 
 8110 IF(ILUT-LGLU) 8111,8112,8111
 8111 WRITE(LGLU,8115) LGLUC
 8112 WRITE(ILUT,8115) LGLUC
 8115 FORMAT(/"  TXTT0 - LU#",I3," SPECIFIED FOR LEFT CTU"
     1" IS NOT ASSIGNED TO"/"          2645/2648 TERMINAL. RERUN TEST"
     2" SPECIFYING CORRECT LU#.") 
      GOTO 9000 
 8120 IF(ILUT-LGLU) 8121,8122,8121
 8121 WRITE(LGLU,8125) ILURC
 8122 WRITE(ILUT,8125) ILURC
 8125 FORMAT(/"  TXTT0 - LU#",I3," SPECIFIED FOR RIGHT CTU" 
     1" IS NOT ASSIGNED"/"          TO 2645/2648 TERMINAL. RERUN TEST"
     2" SPECIFYING CORRECT LU#.") 
      GOTO 9000 
 8200 IF(ILUT-LGLU) 8201,8202,8201
 8201 WRITE(LGLU,8210) ILUT 
 8202 WRITE(ILUT,8210) ILUT 
 8210 FORMAT(/"  TXTT0 - LU#",I3,": EQT OR LU FOR TEST TERMINAL"
     1" IS DOWN."/"          UP EQT AND RERUN TEST.") 
      GOTO 9000 
C 
C DATA ENTRY OR TRANSMISSION ERROR
C 
 8300 IF(ILUT-LGLU) 8301,8302,8301
 8301 WRITE(LGLU,8310) ILUT 
 8302 WRITE(ILUT,8310) ILUT 
 8310 FORMAT("  TXTT0 - LU#",I3,": DATA ENTRY OR TRANSMISSION ERROR."/
     1"          TYPE  /C  TO CONTINUE NEXT TEST OR TYPE  /A  TO ABORT" 
     2" THIS TEST: _")
      IERRK=IERRK+1 
      CALL EXEC(1,ILUT+400B,IQUE,1) 
      IF(IQUE.EQ.2H/C) GOTO 8320
      IF(IQUE.EQ.2H/A) GOTO 9000
      GOTO 8300 
 8320 IF(MENU-1) 22,4015,4015 
 8400 IF(ILUT-LGLU) 8401,8402,8401
 8401 WRITE(LGLU,8405) ILUT 
 8402 WRITE(ILUT,8405) ILUT 
 8405 FORMAT(/"  TXTT0 - LU#",I3," SPECIFIED FOR KEYBOARD/DISPLAY NOT"
     1" ASSIGNED TO SUBCHANNEL 0."/"          RERUN TEST SPECIFYING"
     2" CORRECT LU#.")
      GOTO 9000 
 8410 IF(ILUT-LGLU) 8411,8412,8411
 8411 WRITE(LGLU,8415) LGLUC
 8412 WRITE(ILUT,8415) LGLUC
 8415 FORMAT(/"  TXTT0 - LU#",I3," SPECIFIED FOR LEFT CTU NOT ASSIGNED" 
     1" TO SUBCHANNEL 1."/"          RERUN TEST SPECIFYING CORRECT" 
     2" LU#.")
      GOTO 9000 
 8420 IF(ILUT-LGLU) 8421,8422,8421
 8421 WRITE(LGLU,8425) ILURC
 8422 WRITE(ILUT,8425) ILURC
 8425 FORMAT(/"  TXTT0 - LU#",I3," SPECIFIED FOR RIGHT CTU NOT ASSIGNED"
     1" TO SUBCHANNEL 2."/"          RERUN TEST SPECIFYING CORRECT" 
     2" LU#.")
      GOTO 9000 
 8500 IF(ILUT-LGLU) 8505,8506,8505
C 
C REQUEST FOR ABORT OR CONTINUE 
C 
 8505 WRITE(LGLU,8510) LGLUC
 8506 WRITE(ILUT,8510) LGLUC
 8510 FORMAT(/"  TXTT0 - LU#",I3,": LEFT CTU READ/WRITE/CONTROL TEST" 
     1" FAILED!"/"          TYPE  /C  TO CONTINUE NEXT TEST OR TYPE"
     2" /A  TO"/"          ABORT THIS TEST: _") 
      IERRL=IERRL+1 
      CALL EXEC(1,LGLU+400B,IQUE,1) 
      IF(IQUE.EQ.2H/C) GOTO 8520
      IF(IQUE.EQ.2H/A) GOTO 9000
 8520 IF(MENU-1) 24,4015,4015 
 8600 IF(ILUT-LGLU) 8605,8606,8605
C 
C REQUEST FOR ABORT OR CONTINUE 
C 
 8605 WRITE(LGLU,8610) ILURC
 8606 WRITE(ILUT,8610) ILURC
 8610 FORMAT(/"  TXTT0 - LU#",I3,": RIGHT CTU READ/WRITE/CONTROL TEST"
     1" FAILED!"/"          TYPE  /C  TO CONTINUE NEXT TEST OR TYPE"
     2" /A  TO"/"          ABORT THIS TEST: _") 
      IERRR=IERRR+1 
      CALL EXEC(1,LGLU+400B,IQUE,1) 
      IF(IQUE.EQ.2H/C) GOTO 8620
      IF(IQUE.EQ.2H/A) GOTO 9000
      GOTO 8600 
 8620 IF(MENU-1) 9900,4015,4015 
 8700 IF(LGLU-ILUT) 8705,8706,8705
C 
C REQUEST FOR ABORT OR CONTINUE 
C 
 8705 WRITE(LGLU,8710) LGLUC
 8706 WRITE(ILUT,8710) LGLUC
 8710 FORMAT(/"  TXTT0 - LU#",I3,": LEFT CTU WRITE PROTECT TEST FAILED" 
     1"!"/,8X,"  TYPE  /C  TO CONTINUE NEXT TEST OR TYPE  /A  TO ABORT" 
     2/"          THIS TEST: _")
      IERRL=IERRL+1 
      CALL EXEC(1,LGLU+400B,IQUE,1) 
      IF(IQUE.EQ.2H/C) GOTO 8720
      IF(IQUE.EQ.2H/A) GOTO 9000
      GOTO 8700 
 8720 IF(MENU-1) 24,4015,4015 
 8800 IF(ILUT-LGLU) 8805,8806,8805
 8805 WRITE(LGLU,8810) ILURC
 8806 WRITE(ILUT,8810) ILURC
 8810 FORMAT(/"  TXTT0 - LU#",I3,": RIGHT CTU WRITE PROTECT TEST" 
     1" FAILED!") 
      IERRR=IERRR+1 
      IF(MENU-1) 9900,4015,4015 
C 
C*********************************************************************
C*                  SECTION 9000 - ABORT MESSAGE AND TERMINATE
C*********************************************************************
C 
 9000 IF(ILUT-LGLU)9005,9010,9005 
 9005 WRITE(LGLU,9015) ILUT 
 9010 WRITE(ILUT,9015) ILUT 
 9015 FORMAT(/"  TXTT0 - LU#",I3,":  TERMINAL TEST ABORTED!"/)
      GOTO 9950 
 9900 IERR=IERRK+IERRL+IERRR
      IF(ILUT-LGLU) 9910,9912,9910
 9910 WRITE(LGLU,9920) ILUT,IERR
 9912 WRITE(ILUT,9920) ILUT,IERR
 9920 FORMAT(/"  TXTT0 - LU#",I3,":  TERMINAL TESTS FINISHED" 
     1"  ",I2," ERRORS"/) 
 9950 END 
      END$
              