*EXTEND COMMAND                                         HEADER  FUPXTN  0001.000
         M.PGM     FUP.EXTEND,MPX-32,3.6.1,00                           0002.000
         SPACE                                                          0003.000
         CSECT                                                          0004.000
         SPACE                                                          0005.000
*                                                                       0006.000
************************************************************************0007.000
*                                                                      *0008.000
*                    PROPRIETARY INFORMATION                           *0009.000
*                    -----------------------                           *0010.000
*   THE INFORMATION CONTAINED HEREIN IS PROPRIETARY TO ENCORE          *0011.000
*   COMPUTER CORPORATION AND/OR ITS VENDORS, AND ITS USE, DISCLOSURE,  *0012.000
*   OR DUPLICATION IS SUBJECT TO THE RESTRICTIONS STATED IN THE        *0013.000
*   STANDARD ENCORE COMPUTER CORPORATION LICENSE TERMS AND CONDITIONS  *0014.000
*   OR THE APPROPRIATE THIRD-PARTY SUBLICENSE AGREEMENT.               *0015.000
*                                                                      *0016.000
*                       RESTRICTED RIGHTS                              *0017.000
*                       -----------------                              *0018.000
*   USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT       *0019.000
*   TO RESTRICTIONS AS SET FOURTH IN SUBDIVISION (c) (1) (ii) OF       *0020.000
*   THE RIGHTS IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT       *0021.000
*   252.227.7013                                                       *0022.000
************************************************************************0023.000
* (C) COPYRIGHT 1989 ENCORE COMPUTER CORPORATION                       *0024.000
*     ALL RIGHTS RESERVED                                              *0025.000
************************************************************************0026.000
*-                                                                      0027.000
*+                                                                      0028.000
*        FUNCTIONAL DESCRIPTION                                         0029.000
*                                                                       0030.000
*    THIS MODULE CONTAINS ONE OF THE COMMAND PROCESSING ROUTINES        0031.000
*    FOR THE FILE UTILITY PROGRAM FOR THE NEW FILE SYSTEM. THIS         0032.000
*    MODULE HANDLES THE "EXTEND" COMMAND. IT                            0033.000
*-                                                                      0034.000
*+                                                                      0035.000
*        ENVIRONMENT                                                    0036.000
*                                                                       0037.000
*-                                                                      0038.000
*                                                                       0039.000
*    EXTERNAL REFERENCES:                                               0040.000
*                                                                       0041.000
         EXT       GETPROTO        GET NEXT PROTOTYPE ENTRY             0042.000
         EXT       GETRD1          GET RD BY RID                        0043.000
         EXT       RD1.BUF         TO HOLD AN RD                        0044.000
         EXT       ERROR           ERROR HANDLER                        0045.000
         EXT       AUDIT0          AUDIT TRAIL ROUTINE                  0046.000
         EXT       STACKPTR        STACK POINTER SAVE CELL              0047.000
         EXT       F.EXTD          FUNCTION STRING                      0048.000
         EXT       FUN.SAVE        ADDRESS OF FUNCTION STRING           0049.000
         EXT       CNP.BUF         CNP BUFFER                           0050.000
         EXT       BUILDCNP        BUILDS A CNP                         0051.000
         EXT       BUILDPNB        BUILDS A PNB                         0052.000
         EXT       COMDADDR        GLOBAL VARIABLE HOLDING ENTRY ADDR.  0053.000
         EXT       SS.EXTS         EXTENSION SIZE                       0054.000
         EXT       SS.BRIE         BRIEF OPTION                         0055.000
         EXT       SS.INP                                               0056.000
         EXT       A.GLOBAL                                             0057.000
         EXT       INVKEY                                               0058.000
         EXT       SS.KWSYN                                             0059.000
         EXT       SS.PATNM                                             0060.000
         EXT       PERR006                                              0061.000
         EXT       A.LOCAL                                              0062.000
         SPACE                                                          0063.000
*                                                                       0064.000
*    EXTERNAL DEFINITIONS                                               0065.000
*                                                                       0066.000
         SPACE                                                          0067.000
         DEF       S.EXTEND        STATE TABLE FOR THE COMMAND          0068.000
         DEF       C.EXTEND        PROCEDURE ENTRY                      0069.000
         SPACE                                                          0070.000
*                                                                       0071.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES                     0072.000
*                                                                       0073.000
         SPACE                                                          0074.000
         M.REQS                    REGISTER EQUATES                     0075.000
         M.CNP                                                          0076.000
         SPACE                                                          0077.000
*                                                                       0078.000
*    LOCAL DEFINITIONS                                                  0079.000
*                                                                       0080.000
         SPACE                                                          0081.000
         STINIT                    TPARSE DEFINITIONS AND INIT          0082.000
         SPACE                                                          0083.000
*                                                                       0084.000
*    LOCAL STORAGE                                                      0085.000
*                                                                       0086.000
*                  THIS MODULE CONTAINS NO LOCAL DATA. IT IS CONFIGURED 0087.000
*                  ENTIRELY INTO THE CSECT.  IF LOC AL DATA IS REQUIRED,0088.000
*                  A DSECT MUST BE DEFINED BY CHANGING THE CSECT DIREC- 0089.000
*                  TIVE AT FRONT OF MODULE TO DSECT, AND ADDING A CSECT 0090.000
*                  DIRECTIVE AFTER LOCAL DATA DECLARATIONS.             0091.000
*                                                                       0092.000
         SPACE                                                          0093.000
         TITLE     'EXTEND FILE' FUP COMMAND                            0094.000
*                                                                       0095.000
* ROUTINE C.EXTEND - TOP LEVEL ENTRY FOR 'EXTEND FILE'.                 0096.000
*                                                                       0097.000
*        THIS ROUTINE IS ENTERED BY THE FILE UTILITY MAIN               0098.000
*        COMMAND DISPATCHER AFTER THE 'EXTEND FILE' COMMAND             0099.000
*        HAS BEEN SUCCESSFULLY PARSED.                                  0100.000
*                                                                       0101.000
C.EXTEND EQU       $                                                    0102.000
         PUSH                      SAVE REGISTERS                       0103.000
         LA        R7,F.EXTD       FUNCTION STRING                      0104.000
         STW       R7,FUN.SAVE                                          0105.000
*                                                                       0106.000
* GET THE NEXT PROTOTYPE/OPTION BLOCK PAIR                              0107.000
* CC1 WILL BE ZERO IF THERE ARE MORE BLOCKS, ELSE 1                     0108.000
*                                                                       0109.000
EXTND2   BL        GETPROTO                                             0110.000
         BCT       1,EXTND0        BRANCH IF NO MORE BLOCKS             0111.000
*                                                                       0112.000
* THERE IS ANOTHER PROTOTYPE BLOCK, AND ITS ADDRESS IS IN R2.           0113.000
* GET THE SIZE OF EXTENSION FROM THE OPTION BLOCK FIELD                 0114.000
* OPT.EXTS AND CALL THE SYSTEM SERVICE H.VOMM,6 TO ATTEMPT              0115.000
* THE EXTENSION.                                                        0116.000
*                                                                       0117.000
         LW        R3,PROFOA.O,R2  ADDRESS OF OPTION BLOCK              0118.000
         LW        R6,OPT.EXTS,R3  EXTENSION SIZE REQUIRED              0119.000
*                                                                       0120.000
* CALL THE ROUTINE BUILDCNP TO SET UP THE CALLER NOTIFICATION           0121.000
* PACKAGE.                                                              0122.000
* R7 CONTAINS THE OPTION HALF WORD FOR THE CNP.                         0123.000
* CNP.BUF IS SET UP ON EXIT                                             0124.000
*                                                                       0125.000
         ZR        R7                                                   0126.000
         BL        BUILDCNP                                             0127.000
*                                                                       0128.000
* GET THE PNB FOR THE FILE                                              0129.000
*                                                                       0130.000
         BL        BUILDPNB                                             0131.000
         PUSHSTP                   SAVE R1                              0132.000
         TRR       R7,R1           PNB ADDRESS                          0133.000
         LA        R7,CNP.BUF                                           0134.000
         SVC2.25                   H.VOMM,6                             0135.000
         POPSTP                    RESTORE R1                           0136.000
*                                                                       0137.000
* CHECK FOR ANY ERRORS, AND NOTE THEM                                   0138.000
*                                                                       0139.000
         CHECKERR  MOD.VOM,NORTN   R7=ERRORCODE ELSE 0                  0140.000
         BNZ       EXTND1          BRANCH IF ERRORS                     0141.000
*                                                                       0142.000
* THE EXTEND WAS SUCCESSFUL SO PRINT AN AUDIT TRAIL LINE.               0143.000
* OBTAIN THE RD FIRST OF ALL (INTO RD.BUF)                              0144.000
*                                                                       0145.000
         LA        R7,RD1.BUF      TO HOLD THE RD                       0146.000
         BL        GETRD1                                               0147.000
         BCT       1,EXTND1        BRANCH IF ERRORS                     0148.000
*                                                                       0149.000
         BL        AUDIT0                                               0150.000
         BU        EXTND2          LOOP FOR NEXT PROTOTYPE BLOCK        0151.000
*                                                                       0152.000
* ERRORS WERE DETECTED DURING THE EXTEND FUNCTION                       0153.000
* THE ERROR CODE IS IN R7                                               0154.000
* CALL AN ERROR ROUTINE WHICH USES R7 AND R2 (PROTOTYPE BLOCK           0155.000
* ADDRESS) TO PRINT AN ERROR MESSAGE.                                   0156.000
*                                                                       0157.000
EXTND1   BL        ERROR                                                0158.000
         BU        EXTND2          LOOP FOR NEXT PROTOTYPE BLOCK        0159.000
*                                                                       0160.000
* THERE ARE NO MORE PROTOTYPE BLOCKS SO THE HANDLING OF THIS            0161.000
* COMMAND HAS FINISHED.                                                 0162.000
*                                                                       0163.000
EXTND0   EQU       $                                                    0164.000
         POP                       RESTORE REGISTERS                    0165.000
         TRSW      R0                                                   0166.000
*                                                                       0167.000
* A.CMD    - ACTION WHEN VALID EXTEND COMMAND IS PARSED                 0168.000
*                                                                       0169.000
         SPACE                                                          0170.000
A.CMD    LA        R7,C.EXTEND     GET ADDRESS OF COMMAND PROCESSOR     0171.000
         STW       R7,COMDADDR     SAVE FOR DISPATCHER                  0172.000
         TRSW      R0              RETURN                               0173.000
         TITLE     EXTEND COMMAND STATE TABLES                          0174.000
         BOUND     1W                                                   0175.000
         SPACE                                                          0176.000
*++                                                                     0177.000
* S.EXTEND - STATE TABLES FOR THE EXTEND COMMAND                        0178.000
*                                                                       0179.000
* COMMAND SYNTAX:                                                       0180.000
*                                                                       0181.000
* EXTEND                                                                0182.000
*                                                                       0183.000
* OPTIONS:                                                              0184.000
*                                                                       0185.000
*--                                                                     0186.000
         SPACE                                                          0187.000
S.EXTEND STATE                     STATE TABLE FOR EXTEND               0188.000
           TRAN    NOBLNK,A.GLOBAL      POSITION OPTION BLOCK FOR       0189.000
*                                       GLOBAL OPTIONS                  0190.000
SF.10     STATE                                                         0191.000
           TRAN    EOS,,PERR006         ERROR -- MUST HAVE AT LEAST ONE 0192.000
*                                       PATHNAME                        0193.000
           TRAN    TSTEXP,,SF.20,SS.KWSYN     IS IT A KEYWORD ???       0194.000
           TRAN    NOBLNK,,SF.30              NOT A KEYWORD -- MUST BE A0195.000
*                                            ACTUAL PATHNAME            0196.000
SF.20     STATE                                                         0197.000
           TRAN    SUBEXP,,SF.30,SS.INP,NOB.M       IS IT "PATH=" KEYWOR0198.000
           TRAN    SUBEXP,,SF.10,SS.OPT,NOB.M       CHECK FOR LEGAL OPTI0199.000
*                                                 KEYWORDS              0200.000
           ERRVAL  INVKEY                         INVALID KEYWORD       0201.000
SF.30     STATE                                                         0202.000
           TRAN    EOS,,PERR006              ERROR -- MUST HAVE AT LEAST0203.000
*                                            ONE PATHNAME               0204.000
           TRAN    NOBLNK,A.LOCAL            POSITION TO 1ST LOCAL      0205.000
*                                            OPTION BLOCK               0206.000
         STATE                                                          0207.000
           TRAN    SUBEXP,A.LOCAL,SF.40,SSF.LIST   GET PATHNAME & LOCAL 0208.000
SF.40       TRAN    EOS,A.CMD,EXIT            EXIT PARSE -- SUCCESSFUL  0209.000
*                                            ALSO PLUG ENTRY ADDRESS    0210.000
*                                            SYNTAX VIOLATION           0211.000
         STATE                                                          0212.000
         SPACE     3                                                    0213.000
SSF.LIST  STATE                               INPUT FILE LIST           0214.000
           TRAN    SUBEXP,,,SS.PATNM,NOB.M                              0215.000
SSF.SL10  STATE                                                         0216.000
           TRAN    TSTEXP,,,SS.KWSYN          LOOK FOR AN OPTION KEYWORD0217.000
           TRAN    LAMBDA,,SSF.SL20           MUST NOT BE ANY           0218.000
         STATE                                                          0219.000
           TRAN    SUBEXP,,SSF.SL10,SS.OPT,NOB.M   GET AN OPTION        0220.000
SSF.SL20  STATE                                                         0221.000
           TRAN    COMMA,A.LOCAL,SSF.SL30,,NOB.M   GET MORE IF IN LIST  0222.000
           TRAN    NOBLNK,,EXIT              EXIT THIS SUBEXPRESSION    0223.000
SSF.SL30  STATE                                                         0224.000
           TRAN    SUBEXP,,SSF.LIST,SS.INP,NOB.M+LMB.M   "PATH=" KEYWOR 0225.000
         STATE                                                          0226.000
         SPACE     5                                                    0227.000
SS.OPT   STATE                     OPTIONS APPLICABLE FOR THIS COMMAND  0228.000
           TRAN    KEYWD,,,K.OPTS,NOB.M                                 0229.000
         STATE                                                          0230.000
         SPACE     4                                                    0231.000
K.OPTS   EQU       $                         DELETE RESOURCE  -- OPTIONS0232.000
         KEYWRD    EXTSIZE,,SS.EXTS,3   EXTSIZ-SIZ OF EXT !32B01 ECKW-340233.000
         KEYWRD    BRIEF,,SS.BRIE,3     BRIEF-BRIEF DISP. !32B01ECKW-34 0234.000
         DATAW     0                         END OF LIST                0235.000
         SPACE     2                                                    0236.000
END      END                                                            0237.000
