FTN4,L
      PROGRAM TXMT0(3,89),91711-16018  REV 1926  790501 
C 
C     GET INPUT PARAMETERS
C     RU,TXMT0,LIST,TESTLU,LOOPS
C          WHERE LIST=LOGICAL UNIT FOR LOG DEVICE.  DEFAULT IS THE
C                     SYSTEM CONSOLE, LU 1
C               TESTLU=MAGNETIC TAPE UNIT TO BE TESTED
C                LOOPS=NUMBER OF TEST ITERATIONS. DEFAULT IS ONE. 
C 
C     MODIFIED 790201 BY ED COPE
C      VIRGIN TAPE READ TEST ADDED
C 
C     TEST MAGNETIC TAPE LOGICAL UNIT 
C 
C     TEST SEQUENCE IS: 
C       1. REWIND 
C       2. TEST WRITE RING STATUS 
C       3. TEST START OF TAPE(SOT) STATUS 
C       4. WRITE RECORD, LENGTH EQUAL 1024 WORDS
C       5. WRITE RECORD, LENGTH EQUAL  512 WORDS
C       6. WRITE RECORD, LENGTH EQUAL  256 WORDS
C       7. WRITE END OF FILE RECORD 
C       8. WRITE RECORD, LENGTH EQUAL 1024 WORDS
C       9. WRITE RECORD, LENGTH EQUAL  512 WORDS
C      10. WRITE RECORD, LENGTH EQUAL  256 WORDS
C      11. WRITE END OF FILE RECORD 
C      12. REWIND 
C      13. TEST STATUS=SOT
C      14. READ RECORD
C      15. VERIFY RECORD
C      16. READ RECORD
C      17. VERIFY RECORD
C      18. READ RECORD
C      19. VERIFY RECORD
C      20. READ RECORD
C      21. VERIFY END OF FILE STATUS
C      22. READ RECORD
C      23. VERIFY RECORD
C      24. READ RECORD
C      25. VERIFY RECORD
C      26. READ RECORD
C      27. VERIFY RECORD
C      28. READ RECORD
C      29. VERIFY END OF FILE STATUS
C      30. BACKWARD SPACE RECORD
C      31. BACKWARD SPACE RECORD
C      32. READ RECORD
C      33. VERIFY RECORD
C      34. READ RECORD
C      35. VERIFY END OF FILE STATUS
C      36. REWIND 
C      37. VERIFY START OF TAPE STATUS
C      38. FORWARD SPACE FILE 
C      39. VERIFY END OF FILE STATUS
C      40. READ RECORD
C      41. VERIFY RECORD
C      42. BACKWARD SPACE FILE
C      43. VERIFY END OF FILE STATUS
C      44. REWIND 
C      45. READ RECORD
C      46. BACKSPACE RECORD 
C      47. READ RECORD
C      48. VERIFY RECORD
C      49. REWIND 
C      50. VERIFY START OF TAPE STATUS
C      51. ERASE 32 INCHES OF TAPE
C      52. REWIND 
C      53. READ RECORD
C      54. VERIFY ZERO LENGTH XMISSION LOG
C      55. **TERMINATE TEST** 
C 
C 
C 
      INTEGER IPARMS(5) 
      INTEGER LULIST,LU 
      INTEGER EQT5,EQT4,EQTST 
      INTEGER ERASE 
      INTEGER CODE13
      INTEGER NDTYPE
      INTEGER IREG(2) 
      INTEGER REGA,REGB 
      INTEGER GO,AB 
      INTEGER LOCKOP,UNLOCK 
      INTEGER PNAME(3)
      INTEGER MAXSTP,CONWD
      INTEGER REWND,WEOF
      INTEGER IOCONE,WRITEE,READE 
      INTEGER IOCON,DYNSTA,TEMP 
      INTEGER BUFFER(1024)
      INTEGER BUFLEN,BUFL(8),TBUF(1026) 
      INTEGER BKSPR,FWSPR,BKSPF,FWSPF 
      INTEGER NERROR,RN 
      INTEGER ST(75)
      INTEGER LUCMD(33),LLUCMD
      INTEGER EQOFF( 5),EQON(5),LEQOFF,LEQON
      INTEGER EMASK(2),EQTASC 
      INTEGER CHAR,CHRMSK(2)
      INTEGER BUFST 
      EQUIVALENCE (IREG(1),REGA,REG),(IREG(2),REGB) 
C 
C 
C     INDEX  STMT NO.  OPERATION
C     -----  --------  ---------
C        1      500    REWIND 
C        2      510    WRITE RECORD 
C        3      520    VERIFY DATA BUFFER 
C        4      530    WRITE END OF FILE
C        5     6000    NO OPERATION 
C        6      550    BACKWARD SPACE RECORD OPERATION
C        7      560    FORWARD SPACE RECORD OPERATION 
C        8      570    CHECK STATUS FOR WRITE RING
C        9      580    CHECK STATUS FOR END OF FILE 
C       10      590    READ RECORD FROM TAPE
C       11      600    CHECK STATUS FOR SOT(START OF TAPE)
C       12      610    FORWARD SPACE FILE 
C       13      620    BACKWARD SPACE FILE
C       14     7600    **TERMINATE TEST** 
C       15      630    ERASE 32 INCHES OF TAPE
C       16      640    VERIFY ZERO LENGTH XMISSION LOG
C 
      DATA    ST( 1),ST( 2),ST( 3),ST( 4),ST( 5)/ 1, 8,11, 2, 2/
      DATA    ST( 6),ST( 7),ST( 8),ST( 9),ST(10)/ 2, 4, 2, 2, 2/
      DATA    ST(11),ST(12),ST(13),ST(14),ST(15)/ 4, 1,11,10, 3/
      DATA    ST(16),ST(17),ST(18),ST(19),ST(20)/10, 3,10, 3,10/
      DATA    ST(21),ST(22),ST(23),ST(24),ST(25)/ 9,10, 3,10, 3/
      DATA    ST(26),ST(27),ST(28),ST(29),ST(30)/10, 3,10, 9, 6/
      DATA    ST(31),ST(32),ST(33),ST(34),ST(35)/ 6,10, 3,10, 9/
      DATA    ST(36),ST(37),ST(38),ST(39),ST(40)/ 1,11,12, 9,10/
      DATA    ST(41),ST(42),ST(43),ST(44),ST(45)/ 3,13, 9, 1,10/
      DATA    ST(46),ST(47),ST(48),ST(49),ST(50)/ 6,10, 3, 1,11/
      DATA    ST(51),ST(52),ST(53),ST(54),ST(55)/15, 1,10,16,14/
      DATA    IPARMS/5*0/ 
      DATA    LULIST/1/ 
      DATA    EQT5,EQT4,EQTST/3*0/
      DATA    CODE13/13/
      DATA    GO/2HGO/,AB/2HAB/ 
      DATA    LOCKOP/0140001B/,UNLOCK/0100000B/ 
      DATA    PNAME/2HTX,2HMT,2H0 / 
      DATA    MAXSTP/55/
      DATA    REWND/0400B/,WEOF/0100B/,BKSPR/0200B/,FWSPR/0300B/
      DATA    IOCON/3/,DYNSTA/0600B/
      DATA    BKSPF/001400B/,FWSPF/001300B/ 
      DATA    IOCONE/0100003B/,WRITEE/0100002B/,READE/0100001B/ 
      DATA    BUFFER/512*012525B,256*017777B,256*052525B/ 
      DATA    BUFL/1024,512,256,0,1024,512,256,0/ 
      DATA    TBUF/1026*0/
      DATA    NERROR/0/,RN/1/ 
      DATA    LUCMD/2HLU,2H, ,2HXX,30*2H  / 
      DATA    LLUCMD/8/ 
      DATA    EQON/2HEQ,2H, ,2HXX,2H,B,2HU /
      DATA    LEQON/10/ 
      DATA    EQOFF/2HEQ,2H, ,2HXX,2H,U,2HN / 
      DATA    LEQOFF/10/
      DATA    EMASK/000105B,042400B/
      DATA    CHRMSK/00377B,177400B/
      DATA    ERASE/1200B/
C 
C 
C 
C 
C     GET INPUT PARAMETER FOR LIST LU AND MAG TAPE LU.
C 
      CALL RMPAR(IPARMS)
      IF (IPARMS(1).GT.0) LULIST=IPARMS(1)
C 
C     GET ITERATION COUNT 
C 
      LOOPS = 1 
      IF(IPARMS(3) .GT. 0) LOOPS = IPARMS(3)
C 
C     GET MAG TAPE LU.
C 
      IF (IPARMS(2).GT.0) LU=IPARMS(2)
      IF ((LU.GT.0).AND.(LU.LT.64)) GO TO 40
C     ILLEGAL LOGICAL UNIT SPECIFIED
      WRITE(LULIST,30) (PNAME(J),J=1,3) 
   30 FORMAT(/,2X,3A2,"- LU# SPECIFIED FOR MAG TAPE IS ILLEGAL."/ 
     1"          RERUN TEST SPECIFYING AN INTEGER >0 AND <64 FOR LU#.") 
C     ERROR EXIT.  ABORT MESSAGE. 
      GO TO 1000
C 
C     TEST TO SEE IF LU IS ASSIGNED TO A TAPE.
C 
C     GET MAG TAPE STATUS 
C 
   40 CALL EXEC(CODE13,LU,EQT5,EQT4,EQTST)
C     IF CHANNEL NUMBER = 0, LU IS NOT ASSIGNED TO ANY DEVICE.
      IF (IAND(EQT4,077B).NE.0) GO TO 50
C     LU IS NOT ASSIGNED.  DO NOT TEST THIS LU. 
      WRITE(LULIST,4005) (PNAME(J),J=1,3),LU
 4005 FORMAT(/,2X,3A2,"- LU#",I3,": NOT ASSIGNED,  NOT TESTED!"/) 
C     NORMAL EXIT.   NO ABORT MESSAGE 
      GO TO 9900
C 
C     MAKE SURE DEVICE IS ASSIGNED TO A MAGNETIC TAPE.
C 
   50 NDTYPE = IAND(EQT5,037400B) 
      NDTYPE = NDTYPE/0400B 
      IF ((NDTYPE.EQ.023B)) GO TO 80
C 
C     LU IS NOT ASSIGNED TO A 7970 MAG TAPE.
C 
      WRITE(LULIST,55) (PNAME(J),J=1,3),LU
   55 FORMAT(/,2X,3A2,"- LU#",I3," IS NOT ASSIGNED TO MAG TAPE."/ 
     1"          RERUN TEST SPECIFYING CORRECT LU#.") 
C     ERROR EXIT.  ABORT MESSAGE
      GO TO 1000
C 
C     MAKE SURE LU IS NOT DOWN. 
C 
   80 CONTINUE
      N = EQT5/040000B
      IF ((N.NE.01).AND.(IAND(EQTST,100000B).EQ.0)) GO TO 83
C     LU OR EQT IS DOWN 
      WRITE(LULIST,8101) (PNAME(J),J=1,3),LU
 8101 FORMAT(/,2X,3A2,"- LU#",I3,": EQT OR LU FOR TEST MAG TAPE"
     1" IS DOWN."/"          UP EQT AND RERUN TEST.") 
C     ABORT MESSAGE 
      GO TO 1000
C 
C 
C     LU IS CORRECTLY ASSIGNED.  ISSUE MESSAGE TO MOUNT SCRATCH TAPE. 
C 
   83 CONTINUE
      WRITE(LULIST,8301) (PNAME(J),J=1,3),LU
 8301 FORMAT(/,2X,3A2,"- LU#",I3,":"/ 
     1"          MOUNT SCRATCH TAPE WITH WRITE RING ON TEST UNIT AND"/
     2"          SET UNIT ON-LINE. TYPE  /C  TO CONTINUE TEST OR" 
     3" TYPE  /A"/"          TO ABORT THIS TEST: _")
C 
C     RETRIEVE OPERATOR RESPONSE
C 
      CALL EXEC(1,LULIST+400B,IBUF,1) 
      IF(IBUF.EQ.2H/C) GOTO 200 
      IF(IBUF.EQ.2H/A) GOTO 1000
      GOTO 83 
C 
C     SCRATCH TAPE IS READY.  LOCK THE MAGNETIC TAPE LU AND PROCEED 
C     WITH THE TEST.
C 
  200 CONTINUE
      CALL LURQ(LOCKOP,LU,1)
C     ERROR RETURN IF LU COULD NOT BE LOCKED
      GO TO 9000
C 
C     CHECK CURRENT BUFFERING STATUS OF THE LU
C 
  402 CONWD = LU + DYNSTA 
C     FORCE DEVICE TO BE ACCESSED TO GET OFFLINE STATUS 
      CALL EXEC(IOCON,CONWD)
      CALL EXEC(CODE13,LU,EQT5,EQT4,EQTST)
      IF (IAND(EQT5,1).EQ.0) GO TO 210
C     UNIT IS OFFLINE 
      WRITE(LULIST,2001) (PNAME(J),J=1,3),LU
 2001 FORMAT(/,2X,3A2,"- LU#",I3,": TEST MAG TAPE UNIT OFF-LINE."/
     1"          SET UNIT ON-LINE AND RERUN TEST.") 
      GO TO 1000
  210 CONTINUE
      BUFST=IAND(EQT4,040000B)
      IF (BUFST.EQ.0) GO TO 400 
C 
C     DEVICE IS BUFFERED.  GET EQT ENTRY FROM LU COMMAND.  THEN 
C     FORM AN OPERATOR COMMAND TO FORCE THE DEVICE TO BE UNBUFFERED.
C 
      LUCMD(3) = KCVT(LU) 
      N=MESSS(LUCMD,LLUCMD) 
      DO 300 I=1,-N 
      J=MOD(I,2)+1
      CHAR = IAND(LUCMD((I+1)/2),CHRMSK(J)) 
      IF (IAND(CHAR,EMASK(J)).EQ.CHAR) GO TO 320
  300 CONTINUE
C     IF CONTROL GETS HERE, THERE IS AN ERROR IN THE SCAN LOOP
      PAUSE 10
C 
C     I = INDEX INTO COMMAND FOR E, J=LEFT/RIGHT BYTE 
C 
  320 GO TO (322,321),J 
C 
C     'E' IS IN RIGHT BYTE.  EQT ENTRY IS NEXT WORD.
C 
  322 EQTASC =LUCMD((I+2)/2)
      GO TO 330 
C 
C     'E' IN LEFT BYTE
C 
  321 EQTASC = LUCMD((I+1)/2)*0400B+LUCMD((I+2)/2)/0400B
C 
  330 CONTINUE
C     EQTASC = EQT ENTRY IN ASCII 
      EQOFF(3) = EQTASC 
      N=MESSS(EQOFF,LEQOFF) 
  400 CONTINUE
C     NORMAL RETURN.  LU IS LOCKED TO THIS PROGRAM.  START TEST.
C 
C***************************************************************
C     MAIN PROGRAM LOOP FOR TEST
C***************************************************************
C 
      WRITE(LULIST,3001) (PNAME(J),J=1,3),LU
 3001 FORMAT(/,2X,3A2,"- LU#",I3,": MAG TAPE TEST RUNNING") 
C 
      DO 8100 LOOP = 1,LOOPS
      DO 8000 I=1,MAXSTP
C 
C     GET STATUS AND FORCE LAST OPERATION TO BE COMPLETED.
C 
      CONWD = LU + DYNSTA 
      CALL EXEC(IOCON,CONWD)
      CALL ABREG(EQT5,TEMP) 
C 
      LABEL=ST(I) 
      GO TO (500,510,520,530,6000,550,560,570,580,590, 600,610, 
     1 620,7600,630,640), LABEL 
C 
C**************************************************************** 
C     REWIND THE MAGNETIC TAPE
C**************************************************************** 
C 
  500 CONWD = LU + REWND
      CALL EXEC(IOCONE,CONWD) 
C     ERROR RETURN - A-REGISTER = DEVICE STATUS.
      GO TO 7000
C     NORMAL RETURN - GO TO END OF LOOP 
C     REWIND SECOND TIME TO FORCE SOT STATUS TO BE STORED 
  405 CALL EXEC(IOCONE,CONWD) 
C     ERROR RETURN - A-REG = DEVICE STATUS
      GO TO 7000
C     NORMAL RETURN - GO TO END OF LOOP WITH SOT STATUS SET 
  410 RN=0
      GO TO 6000
C 
C**************************************************************** 
C     WRITE RECORD TO TAPE
C**************************************************************** 
C 
  510 CONTINUE
      CONWD = LU
      RN = RN + 1 
      BUFLEN = BUFL(RN) 
      CALL EXEC(WRITEE,CONWD,BUFFER,BUFLEN) 
C     ERROR RETURN. A-REG = DEVICE STATUS.  B=TRANSMISSION LOG
      GO TO 7000
C     NORMAL RETURN 
  515 CONTINUE
      GO TO 6000
C 
C***************************************************************
C     READ A RECORD FROM THE TAPE 
C***************************************************************
C 
  590 CONTINUE
      CONWD = LU
      RN = RN + 1 
      BUFLEN = BUFL(RN)+2 
      CALL EXEC(READE,CONWD,TBUF,BUFLEN)
C     ERROR RETURN. A=REG=DEVICE STATUS.  B=TRANSMISSION LOG
      GO TO 7000
C     NORMAL RETURN. A-REG=STATUS. B-REG=NUMBER OF WORDS READ.
C     VERIFY NUMBER OF WORDS. 
  415 CALL ABREG(REGA,REGB) 
      GO TO 6000
C 
C**************************************************************** 
C     VERIFY THE DATA BUFFER
C**************************************************************** 
C 
C     REGB = NUMBER OF WORDS TO VERIFY
  520 CONTINUE
      IF (REGB.EQ.BUFL(RN)) GO TO 521 
C     RECORD LENGTHS DO NOT VERIFY
      WRITE(LULIST,5221) (PNAME(J),J=1,3),LU,BUFL(RN),REGB
      GO TO 7500
C     COMPARE DATA BUFFERS
  521 CONTINUE
      DO 522 N=1,REGB 
      IF (BUFFER(N).EQ.TBUF(N)) GO TO 522 
C     DATA VERIFICATION ERROR 
      NERROR = NERROR + 1 
      WRITE(LULIST,5221) (PNAME(J),J=1,3),LU
 5221 FORMAT(/,2X,3A2,"- LU#",I3,": READ/WRITE DATA DOES NOT VERIFY!")
      IF (NERROR.GE.6) GO TO 7500 
C     END OF DATA VERIFICATION LOOP 
  522 CONTINUE
      GO TO 6000
C 
C 
C**************************************************************** 
C     WRITE END OF FILE 
C**************************************************************** 
C 
  530 CONTINUE
      CONWD = LU + WEOF 
      CALL EXEC(IOCONE,CONWD) 
C     ERROR RETURN.   A-REG=STATUS
      GO TO 7000
C     NORMAL RETURN 
  420 RN = RN + 1 
      GO TO 6000
C 
C**************************************************************** 
C     CHECK STATUS.  END OF FILE SHOULD BE SET. (EOF) 
C**************************************************************** 
C 
  580 CONTINUE
      IF (IAND(EQT5,0200B).EQ.0200B) GO TO 6000 
C 
C     ERROR -- END OF FILE NOT DETECTED 
C 
      REGA = EQT5 
      GO TO 7001
C 
C 
C**************************************************************** 
C     BACKWARD SPACE RECORD OPERATION 
C**************************************************************** 
C 
  550 CONTINUE
      CONWD = LU + BKSPR
      CALL EXEC(IOCONE,CONWD) 
C     ERROR RETURN.  A-REG=STATUS 
      GO TO 7000
C     NORMAL RETURN 
  425 RN = RN - 1 
      GO TO 6000
C 
C 
C**************************************************************** 
C     FORWARD SPACE RECORD OPERATION
C**************************************************************** 
C 
  560 CONTINUE
      CONWD = LU + FWSPR
      CALL EXEC(IOCONE,CONWD) 
C     ERROR RETURN -- A-REG = STATUS
      GO TO 7000
C     NORMAL RETURN 
  430 RN = RN + 1 
      GO TO 6000
C 
C**************************************************************** 
C     CHECK STATUS FOR WRITE RING 
C**************************************************************** 
C 
  570 CONTINUE
      IF (IAND(EQT5,4).EQ.0) GO TO 6000 
C     NO WRITE RING 
      WRITE(LULIST,5701) (PNAME(J),J=1,3),LU
 5701 FORMAT(/,2X,3A2,"- LU#",I2,": NO WRITE RING ON SCRATCH TAPE!"/
     1"          INSTALL WRITE RING AND UP EQT FOR MAG TAPE. THE TEST"/ 
     2"          WILL CONTINUE.") 
      GO TO 6000
C 
C 
C**************************************************************** 
C     TEST START OF TAPE STATUS (SOT) 
C**************************************************************** 
C 
  600 CONTINUE
      IF (IAND(EQT5,0100B).EQ.0100B) GO TO 6000 
C 
C     ERROR -- START OF TAPE NOT DETECTED IN STATUS 
C 
      REGA = EQT5 
      GO TO 7001
C 
C**************************************************************** 
C     FORWARD SPACE FILE
C**************************************************************** 
C 
  610 CONTINUE
      CONWD = LU + FWSPF
      CALL EXEC(IOCONE,CONWD) 
C     ERROR RETURN
      GO TO 7000
C     NORMAL RETURN 
  435 GO TO 6000
C 
C 
C**************************************************************** 
C     BACKWARD SPACE FILE 
C**************************************************************** 
C 
  620 CONTINUE
      CONWD = LU + BKSPF
      CALL EXEC(IOCONE,CONWD) 
C     ERROR RETURN
      GO TO 7000
C     NORMAL RETURN 
  440 IF (RN-4) 621,622,622 
C     BACKSPACE TO START OF TAPE
  621 RN = 0
      GO TO 623 
C 
C 
C     BACKSPACE FILE TO A SUBFILE ON TAPE 
C 
  622 RN = ((RN-4)/4)*4+3 
  623 GO TO 6000
C 
C 
C*********************************************************************
C      ERASE 32 INCHES OF TAPE
C*********************************************************************
C 
C 
  630 CONTINUE
      CONWD = LU + ERASE
      DO 633 NERASE = 1,64
       CALL EXEC(IOCONE,CONWD)
C 
C     ERROR RETURN
C 
       GO TO 7000 
C 
C     NORMAL RETURN 
C 
  633 CONTINUE
      GO TO 6000
C 
C 
C*********************************************************************
C     VERIFY ZERO RECORD LENGTH 
C*********************************************************************
C 
C 
  640 CONTINUE
      IF(REGB .EQ. 0) GO TO 6000
C 
C     WRITE DIAGNOSTIC MESSAGE
C 
      WRITE(LULIST,641) (PNAME(J),J=1,3),LU 
  641 FORMAT(/,2X,3A2,"- LU#",I3,": EXPECTED ZERO XMISSION LOG NOT "
     1                          ,"ENCOUNTERED") 
      WRITE(LULIST,642) PNAME,LU,REGB 
  642 FORMAT(2X,3A2,"- LU#",I3,": XMISSION LOG = ",I6)
      NERROR = NERROR + 1 
      GO TO 6000
C 
C     ERROR POINT TO PRINT STATUS BITS.  REG B = STATUS FROM EQT5 
C 
 7000 CONTINUE
      CALL ABREG(REGA,REGB) 
 7001 CONTINUE
      WRITE(LULIST,7002) (PNAME(J),J=1,3),LU,REGA 
 7002 FORMAT(/,2X,3A2,"- LU#",I3,": HARDWARE ERROR, STATUS = ",O6)
      IF (IAND(REGA,2).NE.0) WRITE(LULIST,7005) (PNAME(J),J=1,3),LU 
 7005 FORMAT(2X,3A2,"- LU#",I3,": PARITY/TIMING ERROR!")
      WRITE(LULIST,7007) (PNAME(J),J=1,3),LU,I
 7007 FORMAT(2X,3A2,"- LU#",I3,": TEST STEP ",I2) 
      WRITE(LULIST,7008) (PNAME(J),J=1,3),LU,LABEL
 7008 FORMAT(2X,3A2,"- LU#",I3,": TEST INDEX",I3) 
C 
C     INCREMENT ERROR COUNT 
 7500 CONTINUE
      NERROR = NERROR + 1 
C 
C**************************************************************** 
C     END OF MAIN LOOP. TEST FOR MAXIMUM ERRORS EXCEEDED. 
C**************************************************************** 
 6000 CONTINUE
      IF (NERROR.GE.6) GO TO 7600 
 8000 CONTINUE
C 
C MAIN LOOP TERMINATION 
C 
 7600 CONTINUE
C 
C     PRINT LOOP COUNT
C 
      WRITE(LULIST,8110) (PNAME(I),I=1,3),LOOP
 8110 FORMAT(2X,3A2," - COMPLETED LOOP NUMBER ",I5) 
 8100 CONTINUE
C 
C     UNLOCK MAG TAPE LU
C 
C 
C     RESTORE ORIGINAL DEVICE BUFFERING STATUS
C 
      IF (BUFST.EQ.0) GO TO 7605
C     SEND COMMAND TO BUFFER THE EQT ENTRY. 
      EQON(3) = EQTASC
      N=MESSS(EQON,LEQON) 
 7605 CONTINUE
      CALL LURQ(UNLOCK,LU,1)
C     PRINT TEST FINISHED MESSAGE 
C 
      WRITE(LULIST,7601) (PNAME(J),J=1,3),LU,NERROR 
 7601 FORMAT(/,2X,3A2,"- LU#",I3,": MAG TAPE TEST FINISHED   ",I4,
     1" ERRORS"/) 
      GO TO 9900
C 
C     ERROR PATH FOR RESOURCE NOT LOCKED
C 
 9000 CALL ABREG(REGA,REGB) 
      WRITE(LULIST,9001) (PNAME(J),J=1,3),LU
 9001 FORMAT(/,2X,3A2,"- LU#",I3,": MAG TAPE COULD NOT BE LOCKED!") 
      IF (REGA) 9002,1000,9005
C 
 9002 WRITE(LULIST,9003) (PNAME(J),J=1,3),LU
 9003 FORMAT(2X,3A2,"- LU#",I3,": NO RESOURCE NUMBER AVAILABLE!") 
      GO TO 1000
C 
 9005 WRITE(LULIST,9006) (PNAME(J),J=1,3),LU
 9006 FORMAT(2X,3A2,"- LU#",I3,": MAG TAPE ALREADY LOCKED!")
C 
C     WRITE TEST ABORT MESSAGE
C 
 1000 WRITE(LULIST,1999) (PNAME(J),J=1,3),LU
 1999 FORMAT(/,2X,3A2,"- LU#",I3,": MAG TAPE TEST ABORTED!"/) 
C 
C     PROGRAM EXIT
C 
 9900 CONTINUE
      END 
                                                                                                            