*TAPE MOVEMENT COMMANDS                                 HEADER  FUPTAP  0001.000
         M.PGM     FUP.TAP,MPX-32,3.6.1,00                              0002.000
         SPACE                                                          0003.000
*                                                                       0004.000
************************************************************************0005.000
*                                                                      *0006.000
*                    PROPRIETARY INFORMATION                           *0007.000
*                    -----------------------                           *0008.000
*   THE INFORMATION CONTAINED HEREIN IS PROPRIETARY TO ENCORE          *0009.000
*   COMPUTER CORPORATION AND/OR ITS VENDORS, AND ITS USE, DISCLOSURE,  *0010.000
*   OR DUPLICATION IS SUBJECT TO THE RESTRICTIONS STATED IN THE        *0011.000
*   STANDARD ENCORE COMPUTER CORPORATION LICENSE TERMS AND CONDITIONS  *0012.000
*   OR THE APPROPRIATE THIRD-PARTY SUBLICENSE AGREEMENT.               *0013.000
*                                                                      *0014.000
*                       RESTRICTED RIGHTS                              *0015.000
*                       -----------------                              *0016.000
*   USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT       *0017.000
*   TO RESTRICTIONS AS SET FOURTH IN SUBDIVISION (c) (1) (ii) OF       *0018.000
*   THE RIGHTS IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT       *0019.000
*   252.227.7013                                                       *0020.000
************************************************************************0021.000
* (C) COPYRIGHT 1989 ENCORE COMPUTER CORPORATION                       *0022.000
*     ALL RIGHTS RESERVED                                              *0023.000
************************************************************************0024.000
*-                                                                      0025.000
*+                                                                      0026.000
*    FUNCTIONAL DESCRIPTION:                                            0027.000
*                                                                       0028.000
*        THIS MODULE CONTAINS THE SIX COMMAND PROCESSING ROUTINES       0029.000
*        TO HANDLE TAPE MOVEMENT FUNCTIONS FOR THE FILE UTILITY         0030.000
*        PROGRAM.                                                       0031.000
*        THIS MODULE HANDLES THE COMMANDS:                              0032.000
*                                                                       0033.000
*                  'REWIND'                                             0034.000
*                  'BACKSPACE FILE'                                     0035.000
*                  'BACKSPACE IMAGE'                                    0036.000
*                  'SKIP END'                                           0037.000
*                  'SKIP FILE'                                          0038.000
*                  'SKIP IMAGE'                                         0039.000
*                                                                       0040.000
*        THE GLOBAL VARIABLE TAPE.NUM WILL HAVE BEEN SET UP             0041.000
*        TO CONTAIN THE NUMBER OF TIMES THE ACTION IS TO BE             0042.000
*        EXECUTED.                                                      0043.000
*                                                                       0044.000
*        THE AUDIT TRAIL IS HANDLED BY ROUTINE AUDIT1 FOR               0045.000
*        ALL TAPE MOVEMENT FUNCTIONS, AND IT EXPECTS AS INPUT           0046.000
*        THE GLOBAL VARIABLE FUN.SAVE                                   0047.000
*-                                                                      0048.000
*********************************************************************   0049.000
*                                                                   *   0050.000
*        HISTORY OF FUPTAP             MPX 3.6.0                    *   0051.000
*                                                                   *   0052.000
*********************************************************************   0053.000
*                                                                       0054.000
*        VOLMGR REV 3.6.0.01                                    EQIC360 0055.000
*        MODULES: FUPTAP (REV 3.6.0.01)                         EQIC360 0056.000
*        ENHANCEMENT: EQIC360                                   EQIC360 0057.000
*                                                               EQIC360 0058.000
*        02/12/93  10833 ADD SCSI QIC SUPPORT                   EQIC360 0059.000
*                                                                       0060.000
*********************************************************************   0061.000
*+                                                                      0062.000
*        ENVIRONMENT                                                    0063.000
*                                                                       0064.000
*                                                                       0065.000
*    EXTERNAL REFERENCES:                                               0066.000
         EXT       ADR.MASK        TO CLEAR THE CC'S           3114.V07 0067.000
*                                                                       0068.000
         EXT       FLAGWORD                                     S860416 0069.000
         EXT       FLAGBITS                                     EQIC360 0070.000
         EXT       OPENTAP         CHECK LFC TAP ASSIGNED, UNBLOCKED    0071.000
         EXT       COMDADDR        COMMAND DISPATCHER ADDRESS           0072.000
         EXT       F.REWI          FUNCTION STRING ADDRESSES .....      0073.000
         EXT       F.BFIL          .....                                0074.000
         EXT       F.BIMA          .....                                0075.000
         EXT       F.SEND          .....                                0076.000
         EXT       F.SFIL          .....                                0077.000
         EXT       F.SIMA          ..... FOR THE SIX COMMANDS           0078.000
         EXT       GEN.M027        MESSAGE FOR LOGICAL EOT              0079.000
         EXT       GEN.M035        INVALID BACKSPACE FILE CMD   EQIC360 0080.000
         EXT       FUN.SAVE        TO SAVE FUNCTION ADDRESS IN          0081.000
         EXT       TAPFCB          "TAPE" FCB ADDRESS                   0082.000
         EXT       AUDIT1          AUDIT TRAIL FOR THE COMMAND          0083.000
         EXT       AUDIT2          PRINT MESSAGE TO AUDIT TRAIL         0084.000
         EXT       TAPE.NUM        NUMBER OF TIMES TO EXECUTE           0085.000
         EXT       FUPABRT2        I/O ERROR ABORT ROUTINE              0086.000
         EXT       FUPABORT        ABORT                        EQIC360 0087.000
         EXT       ERROR2          ERROR PROCESSING ROUTINE     EQIC360 0088.000
         EXT       ERROR6                                       S850513 0089.000
         EXT       ABORTNOM                                     S850513 0090.000
         EXT       M.RWND                                               0091.000
         EXT       M.WEOF                                       EQIC360 0092.000
         EXT       M.FWDF                                               0093.000
         EXT       M_FWDF                                       EQIC360 0094.000
         EXT       M.FWDR                                               0095.000
         EXT       M.BCKF                                               0096.000
         EXT       M.BCKR                                               0097.000
         EXT       SS.FIL                                               0098.000
         EXT       SS.IMA                                               0099.000
         EXT       AS.DEF                                               0100.000
         EXT       DOBLOCK         DEFAULT OPTION BLOCK         EQIC360 0101.000
         SPACE                                                          0102.000
*                                                                       0103.000
*    EXTERNAL DEFINITIONS                                               0104.000
*                                                                       0105.000
         SPACE                                                          0106.000
         DEF       C.REWIND        REWIND                               0107.000
         DEF       C.BSPFIL        BACKSPACE FILE                       0108.000
         DEF       C.BSPIMA        BACKSPACE IMAGE                      0109.000
         DEF       C.SKPEND        SKIP END                             0110.000
         DEF       C.SKPFIL        SKIP FILE                            0111.000
         DEF       C.SKPIMA        SKIP IMAGE                           0112.000
*                                                                       0113.000
         DEF       S.REWIND                                             0114.000
         DEF       S.BKSFIL                                             0115.000
         DEF       S.BKSIMA                                             0116.000
         DEF       S.SKPEND                                             0117.000
         DEF       S.SKPFIL                                             0118.000
         DEF       S.SKPIMA                                             0119.000
         DEF       S.WEOT                                       EQIC360 0120.000
         SPACE                                                          0121.000
*                                                                       0122.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES                     0123.000
*                                                                       0124.000
         SPACE                                                          0125.000
         LIST      NOMAC                                                0126.000
         M.REQS                    REGISTER EQUATES                     0127.000
         M.FCB.                                                         0128.000
         SPACE                                                          0129.000
*                                                                       0130.000
*    LOCAL DEFINITIONS                                                  0131.000
*                                                                       0132.000
         SPACE                                                          0133.000
         STINIT                    INIT TPARSE VALUES AND DEFINITIONS   0134.000
         SPACE                                                          0135.000
*                                                                       0136.000
*    LOCAL STORAGE                                                      0137.000
*                                                                       0138.000
BOT      DATAB     C'*****  BOT  *****',0                               0139.000
EOT      DATAB     C'*****  EOT  *****',0                               0140.000
TAPERR1  DATAB     C' I/O ERROR ',0                                     0141.000
LEOTIF   REZ       1B              EOT/EOI MANAGEMENT FLAGS     S860697 0142.000
EOTF     EQU       0               LOGICAL EOT FLAG             S860697 0143.000
EOIF     EQU       1               LOGICAL EOI FLAG             S860697 0144.000
         BOUND     1W                                                   0145.000
         TITLE     REWIND COMMAND                                       0146.000
         SPACE                                                          0147.000
         CSECT                                                          0148.000
         SPACE                                                          0149.000
*                                                                       0150.000
* ROUTINE C.REWIND - HANDLES REWIND FUNCTION.                           0151.000
*                                                                       0152.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0153.000
*        COMMAND DISPATCHER AFTER THE 'REWIND' COMMAND                  0154.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0155.000
*                                                                       0156.000
C.REWIND EQU       $                                                    0157.000
         PUSH                      SAVE REGISTERS                       0158.000
*                                                                       0159.000
* FOR THE REWIND FUNCTION ONLY TAPE.LFC IS RELEVANT.                    0160.000
*                                                                       0161.000
* SET UP THE FUNCTION STRING ADDRESS INTO FUN.SAVE READY FOR            0162.000
* THE AUDIT TRAIL, AND THEN ISSUE THE SERVICE CALL TO THE LFC           0163.000
* SPECIFIED IN TAPE.LFC                                                 0164.000
*                                                                       0165.000
         LA        R7,F.REWI       FUNCTION STRING ADDRESS              0166.000
         STW       R7,FUN.SAVE     SAVE IT FOR AUDIT TRAIL              0167.000
         SPACE                                                          0168.000
         BL        OPENTAP         CHECK LFC "TAP" ASSIGNED, UNBLOCKED  0169.000
         LA        R2,TAPFCB                                            0170.000
         BL        M.RWND          DO THE REWIND                        0171.000
         ZBM       B.EOMSET,FLAGWORD  CLEAR EOM FLAG            S860416 0172.000
         ZMB       LEOTIF          RESET EOT/EOI FLAG           S860697 0173.000
         ZBM       RWNDFLAG,FLAGBITS RESET REWIND FLAG          EQIC360 0174.000
*                                                                       0175.000
* JOIN COMMON CODE TO AUDIT AND EXIT                                    0176.000
*                                                                       0177.000
         BU        BSPIMA3                                              0178.000
         TITLE     BACKSPACE FILE COMMAND                               0179.000
*                                                                       0180.000
* ROUTINE C.BSPFIL - HANDLES BACKSPACE FILE FUNCTION.                   0181.000
*                                                                       0182.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0183.000
*        COMMAND DISPATCHER AFTER THE 'BACKSPACE FILE' COMMAND          0184.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0185.000
*                                                                       0186.000
*        THE ROUTINE M.BCKF IS CALLED REPEATEDLY IN ORDER TO            0187.000
*        BACKSPACE BY 'TAPE.NUM' FILES.                                 0188.000
*        AN AUDIT IS PRINTED FOR EACH BACKSPACE                         0189.000
*                                                                       0190.000
*        NOTE THAT IN ORDER TO FACILITATE BACKSPACING                   0191.000
*        ONE FILE WHEN ALREADY AT BOF A BACK RECORD                     0192.000
*        MUST BE ISSUED FIRST.                                          0193.000
*                                                                       0194.000
C.BSPFIL EQU       $                                                    0195.000
         PUSH                      SAVE REGISTERS                        196.000
* DISALLOW BACKSPACE FILE FOR SOFT EOF                          EQIC360 0197.000
         LA        R2,DOBLOCK      GET DEFAULT OPT BLOCK ADDR   EQIC360 0198.000
         TBM       OPT.B.SE,OPT.FLGS,X2 SOFT EOF?               EQIC360 0199.000
         BNS       A.BFCMD2        NO - CONTINUE                EQIC360 0200.000
         LA        R7,GEN.M035     BACKSPACE FILE NOT ALLOWED   EQIC360 0201.000
         BL        ERROR2          OUTPUT ERROR MESSAGE         EQIC360 0202.000
         BU        BSPIMA4         EXIT                         EQIC360 0203.000
A.BFCMD2 CEQU      $                                            EQIC360 0204.000
         LA        R7,F.BFIL       FUNCTION STRING ADDRESS              0205.000
         STW       R7,FUN.SAVE                                          0206.000
         SPACE                                                          0207.000
         BL        OPENTAP         CHECK LFC "TAP" ASSIGNED, UNBLOCKED  0208.000
         LA        R2,TAPFCB                                            0209.000
         LI        R4,1            ONE BACK RECORD                      0210.000
         BL        M.BCKR          BACK A RECORD                        0211.000
         BCT       3,BSPIMA3       BRANCH IF AT BOT                     0212.000
         BCT       2,TAP.ERR       I/O ERROR HAS OCCURED       2113.V6  0213.000
*                                                                       0214.000
* SET UP THE LOOP OF BACK FILES                                         0215.000
*                                                                       0216.000
         LNW       R6,TAPE.NUM                                          0217.000
BSPFIL2  BL        M.BCKF          BACK FILE                            0218.000
         BCT       3,BSPIMA3       BRANCH IF BOT TO COMMON EXIT         0219.000
         BCT       2,TAP.ERR       I/O ERROR                   2113.V6  0220.000
         BL        AUDIT1          AUDIT TRAIL                          0221.000
         BIB       R6,BSPFIL2      AND LOOP                             0222.000
*                                                                       0223.000
* THE TAPE IS NOW POSITIONED JUST BEFORE THE EOF BEFORE THE             0224.000
* REQUIRED FILE.                                                        0225.000
* CALL ROUTINE M.FWDR TO SKIP THE EOF                                   0226.000
*                                                                       0227.000
         BL        M.FWDR          ADVANCE OVER THE EOF                 0228.000
         BCT       2,TAP.ERR       I/O ERROR                   2113.V6  0229.000
         ZMB       LEOTIF          RESET EOT/EOI FLAG           S860697 0230.000
         BU        BSPIMA4         AND COMMON EXIT                      0231.000
         TITLE     BACKSPACE IMAGE COMMAND                              0232.000
*                                                                       0233.000
* ROUTINE C.BSPIMA - HANDLES BACKSPACE IMAGE FUNCTION.                  0234.000
*                                                                       0235.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0236.000
*        COMMAND DISPATCHER AFTER THE 'BACKSPACE IMAGE' COMMAND         0237.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0238.000
*                                                                       0239.000
*        THE ROUTINE M.BCKF IS CALLED TO BACKSPACE OVER ONE EOF,        0240.000
*        AND THEN M.BCKR CALLED TO BACK OVER ANOTHER RECORD.            0241.000
*        IF BOT IS INDICATED THEN THE COMMAND IS TERMINATED,            0242.000
*        OTHERWISE A CHECK IS AMDE TO SEE IF THE RECORD JUST            0243.000
*        BACKED OVER IS ANOTHER EOF.                                    0244.000
*        THIS LOOP CONTINUES 'TAPE.NUM' TIMES (OR UNTIL BOT             0245.000
*        IS DETECTED).                                                  0246.000
*        TWO ADVANCE RECORD SVC'S ARE ISSUED (IF BOT WAS NOT DETECTED)  0247.000
*        TO SKIP THE TWO EOF'S LAST BACKED OVER, IN ORDER TO            0248.000
*        POSITION TO THE START OF THE IMAGE REQUIRED.                   0249.000
*                                                                       0250.000
*        NOTE THAT IN ORDER TO FACILITATE BACKSPACING                   0251.000
*        ONE IMAGE WHEN ALREADY AT BOI A BACK RECORD                    0252.000
*        MUST BE ISSUED FIRST.                                          0253.000
*                                                                       0254.000
C.BSPIMA EQU       $                                                    0255.000
         ANMW      R0,ADR.MASK     CLEAR CC'S FOR BOT INDICATIO3114.V07 0256.000
         PUSH                      SAVE REGISTERS                       0257.000
         LA        R7,F.BIMA       FUNCTION STRING ADDRESS              0258.000
         STW       R7,FUN.SAVE     SAVE FOR AUDIT TRAIL                 0259.000
         SPACE                                                          0260.000
         BL        OPENTAP         CHECK LFC "TAP" ASSIGNED, UNBLOCKED  0261.000
         LA        R2,TAPFCB                                            0262.000
         LI        R4,1            ONE BACK RECORD                      0263.000
         BL        M.BCKR          BACK RECORD                          0264.000
         BCT       3,BSPIMA3       BRANCH IF BOT                        0265.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURRED   2113.V6  0266.000
*                                                                       0267.000
* SET UP THE LOOP OF IMAGES                                             0268.000
*                                                                       0269.000
         LNW       R6,TAPE.NUM                                          0270.000
BSPIMA2  BL        M.BCKF          BACK FILE                            0271.000
         BCT       3,BSPIMA3       BRANCH IF BOT                        0272.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURED    2113.V6  0273.000
         LA        R3,DOBLOCK      DEFAULT OPTION BLOCK         EQIC360 0274.000
         TBM       OPT.B.SE,OPT.FLGS,X3 SOFT EOF?               EQIC360 0275.000
         BS        BSPIMA25        IF SO, SKIP 2ND BACK RECORD  EQIC360 0276.000
         BL        M.BCKR          BACK RECORD                          0277.000
         BCT       3,BSPIMA3       BRANCH IF BOT TO COMMON EXIT         0278.000
         BCF       1,BSPIMA2       BRANCH IF NOT 2 CONSEC EOF'S         0279.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURED    2113.V6  0280.000
BSPIMA25 CEQU      $                                            EQIC360 0281.000
         BL        AUDIT1          AUDIT THE IMAGE JUST FOUND           0282.000
         BIB       R6,BSPIMA2      LOOP IF MORE IMAGES TO GO            0283.000
*                                                                       0284.000
* WE ARE POSITIONED JUST BEFORE THE FIRST EOF OF THE SAVE IMAGE         0285.000
* BEFORE THE ONE REQUIRED, SO ADVANCE OVER THE TWO EOF'S.               0286.000
*                                                                       0287.000
         LI        R4,1            ONE AT A TIME (GET EOF EACH TIME)    0288.000
         BL        M.FWDR                                               0289.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURED    2113.V6  0290.000
         LA        R3,DOBLOCK      DEFAULT OPTION BLOCK         EQIC360 0291.000
         TBM       OPT.B.SE,OPT.FLGS,X3 SOFT EOF?               EQIC360 0292.000
         BS        BSPIMA27        IF SO, SKIP 2ND FWD RECORD   EQIC360 0293.000
         LI        R4,1            ONE AT A TIME (GET EOF EACH TIME)    0294.000
         BL        M.FWDR                                               0295.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURED    2113.V6  0296.000
BSPIMA27 CEQU      $                                            EQIC360 0297.000
         ZBM       EOTF,LEOTIF     RESET LOGICAL EOT FLAG       S860697 0298.000
         SBM       EOIF,LEOTIF     SET LOGICAL EOI FLAG         S860697 0299.000
         BU        BSPIMA4         EXIT                                 0300.000
*                                                                       0301.000
* BOT HAS BEEN DETECTED, INDICATE THIS ON THE AUDIT TRAIL               0302.000
* AFTER THE BACKSPACE AUDIT HAS BEEN PRINTED                            0303.000
*                                                                       0304.000
BSPIMA3  BL        AUDIT1                                               0305.000
         LA        R7,BOT          BOT MESSAGE                          0306.000
         BL        AUDIT2          AUDIT IT                             0307.000
         SBM       CC3,0W,R1       SET BOT FOR RETURN          3114.V07 0308.000
         ZMB       LEOTIF          RESET FLAG BYTE              S860697 0309.000
*                                                                       0310.000
* COMMEN RETURN WHEN NO ERROR EXISTS                                    0311.000
*                                                                       0312.000
BSPIMA4  POP                       RESTORE REGISTERS                    0313.000
         TRSW      R0                                                   0314.000
*                                                                       0315.000
         TITLE     SKIP END COMMAND                                     0316.000
*                                                                       0317.000
* ROUTINE C.SKPEND - HANDLES SKIP END FUNCTION.                         0318.000
*                                                                       0319.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0320.000
*        COMMAND DISPATCHER AFTER THE 'SKIP END' COMMAND                0321.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0322.000
*                                                                       0323.000
*        THE ROUTINE M.FWDF IS CALLED TO FIND THE FIRST EOF             0324.000
*        ON THE TAPE, AND THEN THE ROUTINE M.FWDR IS CALLED             0325.000
*        TWICE TO SEE IF THE NEXT TWO RECORDS ARE ALSO EOF'S.           0326.000
*        WHEN THIS CONDITION IS DETECTED THE END OF THE SAVE            0327.000
*        TAPE HAS BEEN FOUND, AND AN AUDIT MADE.                        0328.000
*                                                                       0329.000
C.SKPEND EQU       $                                                    0330.000
         PUSH                      SAVE REGISTERS                       0331.000
         LA        R7,F.SEND       FUNCTION STRING ADDRESS              0332.000
         STW       R7,FUN.SAVE                                          0333.000
         SPACE                                                          0334.000
         BL        OPENTAP         CHECK LFC "TAP" ASSIGNED, UNBLOCKED  0335.000
         TBM       EOTF,LEOTIF     LOGICAL EOT FLAG SET?        S860697 0336.000
         BS        SKPFIL5         IF YES, OUTPUT EOT MESSAGE   S860697 0337.000
         LA        R2,TAPFCB                                            0338.000
         LI        R4,1            ONE FORWARD MOVEMENT                 0339.000
         TBM       EOIF,LEOTIF     AT END OF IMAGE?             S860697 0340.000
         BS        SKPEND4         IF YES, CHECK EOT            S860697 0341.000
*                                                                       0342.000
*!PEND2  BL        M.FWDF          SKIP A FILE                  EQIC360 0343.000
SKPEND2  CEQU      $                                            EQIC360 0344.000
         LA        R3,DOBLOCK      DEFAULT OPTION BLOCK         EQIC360 0345.000
         TBM       OPT.B.SE,OPT.FLGS,X3 SOFT EOF?               EQIC360 0346.000
         BS        SKPEND27        IF SO, SKIP 2ND FWD RECORD   EQIC360 0347.000
SKPEND24 CEQU      $                                            EQIC360 0348.000
         BL        M.FWDF                                       EQIC360 0349.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURED    2113.V6  0350.000
         BL        M.FWDR          SKIP A RECORD                        0351.000
*!       BCF       1,SKPEND2       BRANCH IF NOT 2 CONSEC EOF'S EQIC360 0352.000
         BCF       1,SKPEND24      BRANCH IF NOT 2 CONSEC EOF'S EQIC360 0353.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURED    2113.V6  0354.000
         BU        SKPEND4         JOIN COMMON CODE             EQIC360 0355.000
SKPEND27 CEQU      $                                            EQIC360 0356.000
         BL        M_FWDF          FORWARD FILE                 EQIC360 0357.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURRED    EQIC360 0358.000
SKPEND4  EQU       $                                            S860697 0359.000
         BL        M.FWDR          FORWARD ANOTHER RECORD               0360.000
         BCF       1,SKPEND2       BRANCH IF NOT 3 CONSEC EOF'S         0361.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURED    2113.V6  0362.000
         BL        M.BCKR          BACK OVER THE LAST ONE               0363.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURED    2113.V6  0364.000
*                                                                       0365.000
* END OF SAVE TAPE DETECTED, AUDIT AND EXIT                             0366.000
*                                                                       0367.000
SKPEND3  EQU       $                                            S860697 0368.000
         BL        AUDIT1          AUDIT TRAIL ONE ENDGE SKIP           0369.000
         LA        R7,EOT          EOT MESSAGE                          0370.000
         BL        AUDIT2                                               0371.000
         SBM       EOTF,LEOTIF     SET LOGICAL EOT FLAG         S860697 0372.000
         ZBM       EOIF,LEOTIF     CLEAR EOI FLAG               S860697 0373.000
         BU        BSPIMA4         COMMON EXIT                          0374.000
*                                                               EQIC360 0375.000
* WRITE EOT FOR SOFT EOF MANAGEMENT                             EQIC360 0376.000
*                                                               EQIC360 0377.000
S.WEOT   EQU       $                                            EQIC360 0378.000
         PUSH                      SAVE REGISTERS               EQIC360 0379.000
         LA        R7,F.SEND       FUNCTION STRING ADDRESS      EQIC360 0380.000
         STW       R7,FUN.SAVE                                  EQIC360 0381.000
         SPACE                                                  EQIC360 0382.000
         LA        R2,TAPFCB                                    EQIC360 0383.000
         LI        R4,1                                         EQIC360 0384.000
         BL        M.WEOF                                       EQIC360 0385.000
         BCT       CC2,TAP.ERR                                  EQIC360 0386.000
         LA        R2,TAPFCB                                    EQIC360 0387.000
         LI        R4,1                                         EQIC360 0388.000
         BL        M.BCKR                                       EQIC360 0389.000
         BCT       CC2,TAP.ERR                                  EQIC360 0390.000
         SPACE                                                  EQIC360 0391.000
         BU        BSPIMA4         COMMON EXIT                  EQIC360 0392.000
         TITLE     SKIP FILE COMMAND                                    0393.000
*                                                                       0394.000
* ROUTINE C.SKPFIL - HANDLES SKIP FILE FUNCTION.                        0395.000
*                                                                       0396.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0397.000
*        COMMAND DISPATCHER AFTER THE 'SKIP FILE' COMMAND               0398.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0399.000
*                                                                       0400.000
*        THE ROUTINE M.FWDF IS CALLED REPEATEDLY IN ORDER TO            0401.000
*        ADVANCE BY 'TAPE.NUM' FILES.                                   0402.000
*        AN AUDIT IS PRINTED FOR EACH ADVANCE                           0403.000
*                                                                       0404.000
C.SKPFIL EQU       $                                                    0405.000
         PUSH                      SAVE REGISTERS                       0406.000
         LA        R7,F.SFIL       FUNCTION STRING ADDRESS              0407.000
         STW       R7,FUN.SAVE                                          0408.000
         SPACE                                                          0409.000
         BL        OPENTAP         CHECK LFC "TAP" ASSIGNED, UNBLOCKED  0410.000
         LA        R2,TAPFCB                                            0411.000
         LI        R4,1            ONE FORWARD FILE AT A TIME           0412.000
*                                                                       0413.000
* SET UP THE LOOP OF ADVANCES                                           0414.000
*                                                                       0415.000
SKPFIL1  LNW       R6,TAPE.NUM                                          0416.000
SKPFIL2  EQU       $               ADD LOGIC TO TEST EOT/I      S860697 0417.000
         TBM       EOTF,LEOTIF     AT LOGICAL EOT?              S860697 0418.000
         BS        SKPFIL5         IF SO, EXIT WITH EOT MSG     S860697 0419.000
         BL        M.FWDR          LOOK FORWARD 1 STEP          S860697 0420.000
         BCT       2,TAP.ERR       IF I/O ERROR, GO             S860697 0421.000
         BCF       1,SKPFIL3       IF NOT EOF, BRANCH AROUND    S860697 0422.000
         SBM       EOIF,LEOTIF     AT LOGICAL EOI               S860697 0423.000
         BNS       SKPFIL4         IF NOT SET PREVIOUSLY, GO    S860697 0424.000
         ZBM       EOIF,LEOTIF     CLEAR EOI FLAG               S860697 0425.000
         SBM       EOTF,LEOTIF     SET LOGICAL EOT FLAG         S860697 0426.000
         BL        M.BCKF          BACK OVER 1 EOF              S860697 0427.000
         BCT       2,TAP.ERR       I/O ERROR                    S860697 0428.000
         BU        SKPFIL5         WRITE EOT MESSAGE AND EXIT   S860697 0429.000
*!PFIL2  BL        M.FWDF          ADVANCE FILE                 S860697 0430.000
SKPFIL3  BL        M.FWDF          ADVANCE A FILE               S860697 0431.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURED    2113.V6  0432.000
         ZMB       LEOTIF          CLEAR ALL FLAGS              S860697 0433.000
SKPFIL4  BL        AUDIT1          AUDIT TRAIL                  S860697 0434.000
         BIB       R6,SKPFIL2      AND LOOP                             0435.000
*                                                                       0436.000
         BU        BSPIMA4         COMMON EXIT                          0437.000
SKPFIL5  EQU       $               AT LOGICAL EOT               S860697 0438.000
         LA        R7,GEN.M027     LOAD EOT MESSAGE             S860697 0439.000
         BL        AUDIT2          OUTPUT                       S860697 0440.000
         BU        BSPIMA4         GENERAL EXIT                 S860697 0441.000
         TITLE     SKIP IMAGE COMMAND                                   0442.000
*                                                                       0443.000
* ROUTINE C.SKPIMA - HANDLES SKIP IMAGE FUNCTION.                       0444.000
*                                                                       0445.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0446.000
*        COMMAND DISPATCHER AFTER THE 'SKIP IMAGE' COMMAND              0447.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0448.000
*                                                                       0449.000
*        THE ROUTINE M.FWDF IS CALLED TO FIND THE FIRST EOF             0450.000
*        ON THE TAPE, AND THEN ROUTINE M.FWDR IS CALLED TO              0451.000
*        ADVANCE ONE RECORD. IF EOF IS SET IN THE FCB AFTER             0452.000
*        THE ADVANCE RECORD THEN TWO CONSECUTIVE EOF'S HAVE             0453.000
*        BEEN DETECTED - I.E. THE END OF AN IMAGE.                      0454.000
*        AN AUDIT TRAIL IS MADE AND THE LOOP REPEATED 'TAPE.NUM'        0455.000
*        TIMES.                                                         0456.000
*                                                                       0457.000
C.SKPIMA EQU       $                                                    0458.000
         PUSH                      SAVE REGISTERS                       0459.000
         LA        R7,F.SIMA       FUNCTION STRING ADDRESS              0460.000
         STW       R7,FUN.SAVE                                          0461.000
         SPACE                                                          0462.000
         BL        OPENTAP         CHECK LFC "TAP" ASSIGNED, UNBLOCKED  0463.000
         LA        R2,TAPFCB                                            0464.000
*                                                                       0465.000
* SET UP THE LOOP OF ADVANCES                                           0466.000
*                                                                       0467.000
         LI        R4,1            ONE IMAGE AT A TIME                  0468.000
         LNW       R6,TAPE.NUM                                          0469.000
SKPIMA2  BL        M.FWDR          ARE WE AT EOT ?                      0470.000
*!       BCF       1,SKPIMA3       NO, BRANCH                   S850513 0471.000
         BCT       2,TAP.ERR      ERROR CONDITION EXISTS       2113.V6  0472.000
         BCF       1,SKPIMA3       IF NOT EOT, BRANCH           S850513 0473.000
         BL        M.BCKR                                               0474.000
         BCT       2,TAP.ERR      ERROR                        2113.V6  0475.000
         LA        R7,GEN.M027                                          0476.000
         BL        AUDIT2          PRINT EOT MESSAGE                    0477.000
         SBM       EOTF,LEOTIF     SET LOGICAL EOT FLAG         S860397 0478.000
         BU        BSPIMA4         RETURN                               0479.000
*                                                                       0480.000
*!PIMA3  BL        M.FWDF          SKIP A FILE                  EQIC360 0481.000
SKPIMA3  CEQU      $                                            EQIC360 0482.000
         LA        R3,DOBLOCK      DEFAULT OPTION BLOCK         EQIC360 0483.000
         TBM       OPT.B.SE,OPT.FLGS,X3 SOFT EOF?               EQIC360 0484.000
         BS        SKPIMA36        IF SO, SKIP 2ND FWD IMAGE    EQIC360 0485.000
SKPIMA33 CEQU      $                                            EQIC360 0486.000
         BL        M.FWDF                                       EQIC360 0487.000
         BCT       2,TAP.ERR      ERROR                        2113.V6  0488.000
         BL        M.FWDR          SKIP A RECORD                        0489.000
*!       BCF       1,SKPIMA3       BRANCH IF NOT 2 CONSEC EOF'S EQIC360 0490.000
         BCF       1,SKPIMA33      BRANCH IF NOT 2 CONSEC EOF'S EQIC360 0491.000
         BCT       2,TAP.ERR      ERROR                                 0492.000
         BU        SKPIMA38        JOIN COMMON CODE             EQIC360 0493.000
SKPIMA36 CEQU      $                                            EQIC360 0494.000
         BL        M_FWDF          FORWARD FILE                 EQIC360 0495.000
         BCT       2,TAP.ERR       AN I/O ERROR HAS OCCURRED    EQIC360 0496.000
SKPIMA38 CEQU      $                                            EQIC360 0497.000
*                                                                       0498.000
         BL        AUDIT1          AUDIT TRAIL ONE IMAGE SKIP           0499.000
         BIB       R6,SKPIMA2      LOOP FOR NEXT IMAGE                  0500.000
         SBM       EOIF,LEOTIF     SET EOI FLAG                 S860697 0501.000
         BU        BSPIMA4         COMMON EXIT                          0502.000
*                                                                       0503.000
* ERROR RETURN. R2 ALREADY HAS FCB ADDRESS IN IT.                       0504.000
*                                                                       0505.000
TAP.ERR  EQU       $                                            S850513 0506.000
         LB        R4,FCB.SFLG,R2  GET STATUS                   S850513 0507.000
         CI        R4,X'44'        IS IT A TAPE ID OR NUM ERR?  S850513 0508.000
         BNE       TAP.ERR1        IF NOT, REAL I/O ERROR       S850513 0509.000
         LW        R2,FCB.FATA,R2  GET FAT ADDR                 S850513 0510.000
         BL        ERROR6          PRINT MESSAGE                S850513 0511.000
         BU        ABORTNOM        ABORT                        S850513 0512.000
TAP.ERR1 LA        R6,TAPERR1      ERROR MESSAGE ADDR 2113.V6   S850513 0513.000
         BU        FUPABRT2        GO FOR ABORT                         0514.000
         TITLE STATE TABLES                                             0515.000
*++                                                                     0516.000
* S.BKSFIL - STATE TABLES FOR BACKSPACE COMMAND                         0517.000
*                                                                       0518.000
* COMMAND SYNTAX:                                                       0519.000
*                                                                       0520.000
* BACKSPACE  FILE  [ [FILES=] N ]                                       0521.000
*                                                                       0522.000
* THE PARAMETER "N" IS THE NUMBER OF FILES TO BACK OVER                 0523.000
*--                                                                     0524.000
         SPACE                                                          0525.000
S.BKSFIL STATE                                                          0526.000
           TRAN    NOBLNK                                               0527.000
         STATE                                                          0528.000
           TRAN    SUBEXP,,,SS.FIL,NOB.M                                0529.000
           TRAN    NOBLNK,AS.DEF                                        0530.000
         STATE                                                          0531.000
           TRAN    EOS,A.BFCMD,EXIT                                     0532.000
*!         ERRVAL  ???                                                  0533.000
         STATE                                                          0534.000
         SPACE     5                                                    0535.000
*++                                                                     0536.000
* S.BKSIMA - STATE TABLES FOR BACKSPACE COMMAND                         0537.000
*                                                                       0538.000
* COMMAND SYNTAX:                                                       0539.000
*                                                                       0540.000
* BACKSPACE  IMAGE  [ [IMAGES=] N ]                                     0541.000
*                                                                       0542.000
* THE PARAMETER "N" IS THE NUMBER OF IMAGES TO BACK OVER                0543.000
*--                                                                     0544.000
         SPACE                                                          0545.000
S.BKSIMA STATE                                                          0546.000
           TRAN    NOBLNK                                               0547.000
         STATE                                                          0548.000
           TRAN    SUBEXP,,,SS.IMA,NOB.M                                0549.000
           TRAN    NOBLNK,AS.DEF                                        0550.000
         STATE                                                          0551.000
           TRAN    EOS,A.BICMD,EXIT                                     0552.000
*!         ERRVAL  ???                                                  0553.000
         STATE                                                          0554.000
         SPACE     5                                                    0555.000
*++                                                                     0556.000
* S.SKPFIL - STATE TABLES FOR SKIP FILE COMMAND                         0557.000
*                                                                       0558.000
* COMMAND SYNTAX:                                                       0559.000
*                                                                       0560.000
* SKIP  FILE  [ [FILES=] N ]                                            0561.000
*                                                                       0562.000
* THE PARAMETER "N" IS THE NUMBER OF FILES TO SKIP                      0563.000
*--                                                                     0564.000
         SPACE                                                          0565.000
S.SKPFIL STATE                                                          0566.000
           TRAN    NOBLNK                                               0567.000
         STATE                                                          0568.000
           TRAN    SUBEXP,,,SS.FIL,NOB.M                                0569.000
           TRAN    NOBLNK,AS.DEF                                        0570.000
         STATE                                                          0571.000
           TRAN    EOS,A.SFCMD,EXIT                                     0572.000
*!         ERRVAL  ???                                                  0573.000
         STATE                                                          0574.000
         SPACE     5                                                    0575.000
*++                                                                     0576.000
* S.SKPIMA - STATE TABLES FOR SKIP IMAGE COMMAND                        0577.000
*                                                                       0578.000
* COMMAND SYNTAX:                                                       0579.000
*                                                                       0580.000
* SKIP  IMAGE  [ [IMAGES=] N ]                                          0581.000
*                                                                       0582.000
* THE PARAMETER "N" IS THE NUMBER OF IMAGES TO SKIP                     0583.000
*--                                                                     0584.000
         SPACE                                                          0585.000
S.SKPIMA STATE                                                          0586.000
           TRAN    NOBLNK                                               0587.000
         STATE                                                          0588.000
           TRAN    SUBEXP,,,SS.IMA,NOB.M                                0589.000
           TRAN    NOBLNK,AS.DEF                                        0590.000
         STATE                                                          0591.000
           TRAN    EOS,A.SICMD,EXIT                                     0592.000
*!         ERRVAL  ???                                                  0593.000
         STATE                                                          0594.000
         SPACE     5                                                    0595.000
*++                                                                     0596.000
* S.REWIND - STATE TABLES FOR REWIND COMMAND                            0597.000
*                                                                       0598.000
* COMMAND SYNTAX:                                                       0599.000
*                                                                       0600.000
* REWIND                                                                0601.000
*                                                                       0602.000
*--                                                                     0603.000
         SPACE                                                          0604.000
S.REWIND STATE                                                          0605.000
           TRAN    NOBLNK                                               0606.000
         STATE                                                          0607.000
           TRAN    EOS,A.RECMD,EXIT                                     0608.000
*!         ERRVAL  ???                                                  0609.000
         STATE                                                          0610.000
         SPACE     5                                                    0611.000
*++                                                                     0612.000
* S.SKPEND - STATE TABLES FOR SKIP END COMMAND                          0613.000
*                                                                       0614.000
* COMMAND SYNTAX:                                                       0615.000
*                                                                       0616.000
* SKIP END                                                              0617.000
*                                                                       0618.000
*--                                                                     0619.000
         SPACE                                                          0620.000
S.SKPEND STATE                                                          0621.000
           TRAN    NOBLNK                                               0622.000
         STATE                                                          0623.000
           TRAN    EOS,A.SECMD,EXIT                                     0624.000
*!         ERRVAL  ???                                                  0625.000
         STATE                                                          0626.000
         SPACE     5                                                    0627.000
*++                                                                     0628.000
* A.CMD  --   PLUG IN ROUTINE ENTRY POINT ADDRESS FOR SPECIFIED COMMAND 0629.000
*             AFTER SUCCESSFUL PARSE OF COMMAND LINE.                   0630.000
*-                                                                      0631.000
         SPACE                                                          0632.000
A.BFCMD  LA        R7,C.BSPFIL     ADDRESS OF ACTION ROUTINE            0633.000
A.CMD    STW       R7,COMDADDR     SET FOR DISPATCHER                   0634.000
         TRSW      R0              BACK TO PARSE                        0635.000
         SPACE                                                          0636.000
A.BICMD  LA        R7,C.BSPIMA     ADDRESS OF ENTRY POINT               0637.000
         SBM       TPMVFLAG,FLAGBITS INDICATE TAPE MOVEMENT     EQIC360 0638.000
         BU        A.CMD           PLUG IT                              0639.000
         SPACE                                                          0640.000
A.SECMD  LA        R7,C.SKPEND     ADDRESS OF ENTRY POINT               0641.000
         SBM       TPMVFLAG,FLAGBITS INDICATE TAPE MOVEMENT     EQIC360 0642.000
         BU        A.CMD                                                0643.000
         SPACE                                                          0644.000
A.SFCMD  LA        R7,C.SKPFIL     ADDRESS OF ENTRY POINT               0645.000
         SBM       TPMVFLAG,FLAGBITS INDICATE TAPE MOVEMENT     EQIC360 0646.000
         BU        A.CMD                                                0647.000
         SPACE                                                          0648.000
A.SICMD  LA        R7,C.SKPIMA     ADDRESS OF ENTRY POINT               0649.000
         SBM       TPMVFLAG,FLAGBITS INDICATE TAPE MOVEMENT     EQIC360 0650.000
         BU        A.CMD                                                0651.000
         SPACE                                                          0652.000
A.RECMD  LA        R7,C.REWIND     ADDRESS OF ENTRY POINT               0653.000
         SBM       RWNDFLAG,FLAGBITS INDICATE REWIND COMMAND    EQIC360 0654.000
         BU        A.CMD                                                0655.000
         SPACE     2                                                    0656.000
END      END                                                            0657.000
