*OPTION RESOLVING ROUTINE                               HEADER  FUPOPT  0001.000
         M.PGM     FUP.OPT,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 SEVERAL "PERIPHERAL" PROCESSING           0031.000
*        ROUTINES FOR THE FILE UTILITY PROGRAM (FUP).  THIS MODULE      0032.000
*        HANDLES THE RESOLVING OF LOCAL & GLOBAL & DEFAULT OPTIONS.     0033.000
*                                                                       0034.000
*                                                                       0035.000
*    EXTERNAL REFERENCES:                                               0036.000
*                                                                       0037.000
         SPACE                                                          0038.000
         EXT       STACKPTR        FOR SAVING R1                        0039.000
         EXT       DOBLOCK         DEFAULT OPTION BLOCK                 0040.000
         EXT       GOBLOCK         GLOBAL OPTION BLOCK                  0041.000
         EXT       LOBLOCK         LOCAL OPTION BLOCK                   0042.000
         EXT       COBADDR         CURRENT OPTION BLOCK ADDRESS         0043.000
         EXT       PRONUM          # PROTOTYPE(S) USER SPECIFIED        0044.000
         SPACE                                                          0045.000
*                                                                       0046.000
*    EXTERNAL DEFINITIONS                                               0047.000
*                                                                       0048.000
         SPACE                                                          0049.000
         DEF       FUPOPT          ENTRY POINT -- THIS MODULE           0050.000
         DEF       FUPOPTD         ENTRY POINT -- THIS MODULE           0051.000
         DEF       FUPOPTG         ENTRY POINT -- THIS MODULE           0052.000
         SPACE                                                          0053.000
*                                                                       0054.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES:                    0055.000
*                                                                       0056.000
         SPACE                                                          0057.000
         M.REQS                    REGISTER EQUATES                     0058.000
         M.RCB                     RESOURE CREATE BLOCK EQUATES         0059.000
         SPACE                                                          0060.000
*                                                                       0061.000
*    LOCAL DEFINITIONS:                                                 0062.000
*                                                                       0063.000
         SPACE                                                          0064.000
*                                                                       0065.000
*    LOCAL STORAGE:                                                     0066.000
*                                                                       0067.000
*        THERE IS NO LOCAL DATA IN THIS MODULE, SO THE ENTIRE MODULE    0068.000
*        IS CONTAINED IN THE CSECT.  IF LOCAL DATA IS NEEDED, CARE MUST 0069.000
*        BE TAKEN THAT THIS DATA IS PLACED IN THE DSECT.                0070.000
*                                                                       0071.000
         TITLE     RESOLVE LOCAL & GLOBAL & DEFAULT OPTIONS             0072.000
*                                                                       0073.000
*        IF DATA IS ZERO, THHEN IT HAS NOT BEEN SPECIFIED -- IN MOST    0074.000
*        CASES !!!                                                      0075.000
*                                                                       0076.000
         SPACE                                                          0077.000
*                                                                       0078.000
*        CAN'T ENFORCE ACCESS ATTRIBUTE CHECKING IN THE "SET" COMMAND.  0079.000
*                                                                       0080.000
         SPACE                                                          0081.000
FUPOPT   EQU       $                                                    0082.000
         PUSH                      SAVE REGS                            0083.000
         LA        R2,GOBLOCK      GLOBAL OPTION BLOCK                  0084.000
         LA        R3,LOBLOCK      LOCAL OPTION BLOCK                   0085.000
         LNW       R5,PRONUM       # PROTOTYPES USER ENTERED            0086.000
         BZ        FUPOPTEX        EXIT THIS ROUTINE IF NONE            0087.000
*        RESOLVE OWNER NAME                                             0088.000
         LI        R4,OPT.OWNR     OFFSET INTO OPTION BLOCK             0089.000
         BL        NAME            RESOLVE IT                           0090.000
*        USERGROUP NAME                                                 0091.000
         LI        R4,OPT.USER     OFFSET INTO OPTION BLOCK             0092.000
         BL        NAME            RESOLVE IT                           0093.000
*        RESOLVE "INC" -- INCREMENT SIZE FOR EXTENDABLE FILES           0094.000
         LI        R4,OPT.MXEI     OFFSET INTO OPTION BLOCK             0095.000
         BL        NUMBER          RESOLVE IT                           0096.000
*        RESOLVE "MININC" -- MINIMUM INCREMENT SIZE FOR EXTENDABLE FILES0097.000
         LI        R4,OPT.MNEI     OFFSET INTO OPTION BLOCK             0098.000
         BL        NUMBER          RESOLVE IT                           0099.000
*        RESOLVE "MAXSIZE" -- MAXIMUM SIZE FOR EXTENDABLE FILES         0100.000
         LI        R4,OPT.MXSZ     OFFSET INTO OPTION BLOCK             0101.000
         BL        NUMBER          RESOLVE IT                           0102.000
*        RESOLVE -- FILE SIZE                                           0103.000
         LI        R4,OPT.ALOC     OFFSET INTO OPTION BLOCK             0104.000
         BL        NUMBER          RESOLVE IT                           0105.000
*        RESOLVE -- ENTRIES IN DIRECTORY                                0106.000
         LI        R4,OPT.ENTS     OFFSET INTO OPTION BLOCK             0107.000
         BL        NUMBER          RESOLVE IT                           0108.000
*        RESOLVE -- STARTING DISC BLOCK #                               0109.000
         LI        R4,OPT.ADDR     OFFSET INTO OPTION BLOCK             0110.000
         BL        NUMBER          RESOLVE IT                           0111.000
*        RESOLVE -- EXTEND COMMAND, SIZE OF EXTENSION                   0112.000
         LI        R4,OPT.EXTS     OFFSET INTO OPTION BLOCK             0113.000
         BL        NUMBER          RESOLVE IT                           0114.000
*        RESOLVE -- CREATE COMMON, SIZE OF COMMON                       0115.000
         LI        R4,OPT.PSIZ     OFFSET INTO OPTION BLOCK             0116.000
         BL        NUMBER          RESOLVE IT                           0117.000
*        RESOLVE -- CREATE COMMON, STARING ADDRESS OF PARTITION         0118.000
         LI        R4,OPT.PSTA     OFFSET INTO OPTION BLOCK             0119.000
         BL        NUMBER          RESOLVE IT                           0120.000
*        RESOLVE -- LISTING FILE DESCRIPTOR                             0121.000
         LI        R4,OPT.LIST     OFFSET INTO OPTION BLOCK             0122.000
         BL        NUMBER          PLANT DESCRIPTOR IN LOCAL OPT. BLKS  0123.000
*        RESOLVE -- OWNER/USERGROUP/OTHER ACCESS ATTRIBUTES             0124.000
         BL        ACCESSAT                                             0125.000
*        RESOLVE -- CREATE COMMON, MEMORY CLASS                         0126.000
         BL        MEMCLASS                                             0127.000
*        RESOLVE -- DATE/TIME OPTION                                    0128.000
         BL        DATETIME                                             0129.000
FUPOPTEX POP                       RESTORE REGS                         0130.000
         TRSW      R0              RETURN                               0131.000
         SPACE     5                                                    0132.000
*+                                                                      0133.000
*                                                                       0134.000
*        INPUT:    R2 = GLOBAL OPTION BLOCK ADDRESS                     0135.000
*                  R3 = LOCAL OPTION BLOCK ADDRESS                      0136.000
*                  R5 = # PROTOTYPES USER INPUT (NEGATED FOR LOOP COUNT)0137.000
*                                                                       0138.000
*-                                                                      0139.000
         SPACE                                                          0140.000
DATETIME EQU       $                                                    0141.000
         PUSH                      SAVE REGS                            0142.000
         LW        R4,=X'100000FF'      MASK FOR OPT.FLGS               0143.000
         LW        R6,OPT.DATE,X2  DATE -- GLOBAL OPTION VALUE          0144.000
         LW        R7,OPT.TIME,X2  TIME -- GLOBAL OPTION VALUE          0145.000
         LMW       R0,OPT.FLGS,X2  GLOBAL OPTION VALUE                  0146.000
         BNZ       DATE.010        BRANCH IF SPECIFIED                  0147.000
         LA        R2,DOBLOCK      DEFAULT OPTION BLOCK                 0148.000
         LMW       R0,OPT.FLGS,X2  DEFAULT OPTION VALUE                 0149.000
         LW        R6,OPT.DATE,X2  DATE -- DEFAULT OPTION VALUE         0150.000
         LW        R7,OPT.TIME,X2  TIME -- DEFAULT OPTION VALUE         0151.000
DATE.010 LMW       R2,OPT.FLGS,X3  LOCAL OPTION VALUE                   0152.000
         BNZ       DATE.020        BRANCH IF SPECIFIED                  0153.000
         TRR       R0,R2           DEFAULT/GLOBAL OPTION VALUE PRESENT??0154.000
         BZ        DATE.020        BRANCH IN NOT PRESENT                0155.000
         ORMW      R2,OPT.FLGS,X3  MERGE IN OPTION VALUE(S)             0156.000
         STW       R2,OPT.FLGS,X3  PLANT BACK IN LOCAL OPTION BLOCK     0157.000
         STW       R6,OPT.DATE,X3  PLANT DEFAULT/GLOBAL OPTION VALUE    0158.000
         STW       R7,OPT.TIME,X3  PLANT DEFAULT/GLOBAL OPTION VALUE    0159.000
DATE.020 ADI       R3,OPT.LEN      POINT TO NEXT LOCAL OPTION BLOCK     0160.000
         BIB       R5,DATE.010     LOOP TIL DONE                        0161.000
         POP                       RESTORE REGS                         0162.000
         TRSW      R0              RETURN                               0163.000
*+                                                                      0164.000
*                                                                       0165.000
*        INPUT:    R2 = GLOBAL OPTION BLOCK ADDRESS                     0166.000
*                  R3 = LOCAL OPTION BLOCK ADDRESS                      0167.000
*                  R5 = # PROTOTYPES USER INPUT (NEGATED FOR LOOP COUNT)0168.000
*                                                                       0169.000
*-                                                                      0170.000
         SPACE                                                          0171.000
MEMCLASS EQU       $                                                    0172.000
         PUSH                      SAVE REGS                            0173.000
         ADI       R2,OPT.OPTS     ADD IN OFFSET                        0174.000
         ADI       R3,OPT.OPTS     ADD IN OFFSET                        0175.000
         LW        R4,=X'18000000'      GET MASK                        0176.000
         LMW       R0,0W,X2        GLOBAL OPTION VALUE                  0177.000
         BNZ       MEMC.010        BRANCH IF SPECIFIED                  0178.000
         LA        R2,DOBLOCK      DEFAULT OPTION BLOCK                 0179.000
         ADI       R2,OPT.OPTS     ADD IN OFFSET                        0180.000
         LMW       R0,0W,X2        DEFAULT OPTION VALUE                 0181.000
MEMC.010 LMW       R6,0W,X3        LOCAL OPTION VALUE                   0182.000
         BNZ       MEMC.020        BRANCH IF SPECIFIED                  0183.000
         TRR       R0,R6           DEFAULT/GLOBAL OPTION VALUE          0184.000
         ORMW      R6,0W,X3        MERGE IT                             0185.000
         STW       R6,0W,X3        PLANT BACK IN LOCAL OPTION BLOCK     0186.000
MEMC.020 ADI       R3,OPT.LEN      POINT TO NEXT LOCAL OPTION BLOCK     0187.000
         BIB       R5,MEMC.010     LOOP TIL DONE                        0188.000
         POP                       RESTORE REGS                         0189.000
         TRSW      R0              RETURN                               0190.000
         SPACE     5                                                    0191.000
*+                                                                      0192.000
*                                                                       0193.000
*        INPUT:    R2 = GLOBAL OPTION BLOCK ADDRESS                     0194.000
*                  R3 = LOCAL OPTION BLOCK ADDRESS                      0195.000
*                  R4 = OPTION'S OFFSET IN OPTION BLOCK                 0196.000
*                  R5 = # PROTOTYPES USER INPUT (NEGATED FOR LOOP COUNT)0197.000
*                                                                       0198.000
*-                                                                      0199.000
         SPACE                                                          0200.000
NAME     EQU       $                                                    0201.000
         PUSH                      SAVE REGS                            0202.000
         TRR       R5,R0           MOVE LOOP COUNTER                    0203.000
         ADR       R4,R2           ADD IN OFFSET                        0204.000
         ADR       R4,R3           ADD IN OFFSET                        0205.000
         LD        R4,0D,X2        GLOBAL OPTION VALUE                  0206.000
         BNZ       NAM.010         BRANCH IF SPECIFIED                  0207.000
         LA        R2,DOBLOCK      DEFAULT OPTION BLOCK                 0208.000
         ADMW      R2,4W,X1        ADD OFFSET                           0209.000
         LD        R4,0D,X2        DEFAULT OPTION VALUE                 0210.000
NAM.010  LD        R6,0D,X3        LOCAL OPTION VALUE                   0211.000
         BNZ       NAM.020         BRANCH IF SPECIFIED                  0212.000
         STD       R4,0D,X3        PLANT GLOBAL/DEFAULT VALUE           0213.000
NAM.020  ADI       R3,OPT.LEN      POINT TO NEXT LOCAL OPTION BLOCK     0214.000
         BIB       R0,NAM.010      LOOP TIL DONE                        0215.000
         POP                       RESTORE REGS                         0216.000
         TRSW      R0              RETURN                               0217.000
         SPACE     5                                                    0218.000
*+                                                                      0219.000
*                                                                       0220.000
*        INPUT:    R2 = GLOBAL OPTION BLOCK ADDRESS                     0221.000
*                  R3 = LOCAL OPTION BLOCK ADDRESS                      0222.000
*                  R4 = OPTION'S OFFSET IN OPTION BLOCK                 0223.000
*                  R5 = # PROTOTYPES USER INPUT (NEGATED FOR LOOP COUNT)0224.000
*                                                                       0225.000
*-                                                                      0226.000
         SPACE                                                          0227.000
NUMBER   EQU       $                                                    0228.000
         PUSH                      SAVE REGS                            0229.000
         ADR       R4,R2           ADD IN OFFSET INTO OPTION BLOCK      0230.000
         ADR       R4,R3           ADD IN OFFSET INTO OPTION BLOCK      0231.000
         LW        R0,0W,X2        GLOBAL OPTION VALUE                  0232.000
         BNZ       NUM.010         BRANCH IF SPECIFIED                  0233.000
         LA        R2,DOBLOCK      DEFAULT OPTION BLOCK                 0234.000
         ADR       R4,R2           ADD IN OFFSET INTO OPTION BLOCK      0235.000
         LW        R0,0W,X2        DEFAULT OPTION VALUE                 0236.000
NUM.010  LW        R4,0W,X3        LOCAL OPTION VALUE                   0237.000
         BNZ       NUM.020         BRANCH IF SPECIFIED                  0238.000
         STW       R0,0W,X3        OTHERWISE, USER GLOBAL/DEFAULT VALUE 0239.000
NUM.020  ADI       R3,OPT.LEN      POINT TO NEXT LOCAL OPTION BLOCK     0240.000
         BIB       R5,NUM.010      LOOP TIL DONE                        0241.000
         POP                       RESTORE REGS                         0242.000
         TRSW      R0              RETURN                               0243.000
         SPACE     5                                                    0244.000
*+                                                                      0245.000
*                                                                       0246.000
*        INPUT:    R5 = # PROTOTYPES USER INPUT (NEGATED FOR LOOP COUNT)0247.000
*                                                                       0248.000
*-                                                                      0249.000
         SPACE                                                          0250.000
ACCESSAT EQU       $                                                    0251.000
         PUSH                      SAVE REGS                            0252.000
         LI        R3,-3W          OWNER & USERGROUP & OTHER            0253.000
*                                  INDEX & LOOP COUNTER                 0254.000
ACC.010  LA        R2,GOBLOCK      GLOBAL OPTION BLOCK                  0255.000
         EXM       BITS+3W,X3      (GLOBAL) NO ACCESS ???               0256.000
         BS        ACC.030         BRANCH IF SPECIFIED                  0257.000
         EXM       WORDS+3W,X3     (GLOBAL) ACCESS ATTRIBUTES SPECIFIED?0258.000
         BNZ       ACC.020         BRANCH IF SPECIFIED                  0259.000
         LA        R2,DOBLOCK      DEFAULT OPTION BLOCK                 0260.000
         EXM       BITS+3W,X3      (DEFAULT) NO ACCESS ???              0261.000
         BS        ACC.030         BRANCH IF SPECIFIED                  0262.000
         EXM       WORDS+3W,X3     (DEFAULT) ACCESS ATTRIBUTES SPEC. ???0263.000
         BNZ       ACC.020         BRANCH IF SPECIFIED                  0264.000
         LW        R6,NOTHING      NO GLOBAL VALUE & NO DEFAULT VALUE   0265.000
         BU        ACC.040                                              0266.000
ACC.020  LW        R6,ACCESS+3W,X3 INSTRUCTION TO PLANT ATTRIBUTES      0267.000
         BU        ACC.040                                              0268.000
ACC.030  LW        R6,NOACCESS+3W,X3    INSTR. TO PLANT NO ACCESS ATTR. 0269.000
ACC.040  EQU       $                                                    0270.000
         LA        R2,LOBLOCK      LOCAL OPTION BLOCK                   0271.000
         EXM       BITS+3W,X3      (LOCAL) NO ACCESS ???                0272.000
         BS        ACC.050         BRANCH IF SPECIFIED                  0273.000
         EXM       WORDS+3W,X3     (LOCAL) ACCESS ATTRIBUTES SPECIFIED??0274.000
         BNZ       ACC.050         BRANCH IF SPECIFIED                  0275.000
         EXR       R6              PLANT GLOBAL/DEFAULT OPTION VALUE    0276.000
ACC.050  ADI       R2,OPT.LEN      NEXT LOCAL OPTION BLOCK              0277.000
         BIB       R5,ACC.040      LOOP TIL DONE                        0278.000
         LW        R5,5W,X1        REINTIALIZE INNER LOOP COUNTER       0279.000
         BIW       R3,ACC.010      INCREMENT INDEX & LOOP COUNTER       0280.000
         POP                       RESTORE REGS                         0281.000
         TRSW      R0              RETURN                               0282.000
         SPACE     4                                                    0283.000
         BOUND     1W                                                   0284.000
         SPACE                                                          0285.000
BITS     EQU       $               TARGET INSTRUCTIONS                  0286.000
         TBM       RCB.OWNA,OPT.OPTS,X2      OWNER -- NO ACCESS BIT     0287.000
         TBM       RCB.USNA,OPT.OPTS,X2      USERGROUP -- NO ACCESS BIT 0288.000
         TBM       RCB.OTNA,OPT.OPTS,X2      OTHER(S) -- NO ACCESS BIT  0289.000
         SPACE                                                          0290.000
WORDS    EQU       $                                                    0291.000
         LW        R0,OPT.OWRI,X2  OWNER -- ACCESS ATTRIBUTES           0292.000
         LW        R0,OPT.UGRI,X2       USERGROUP -- ACCESS ATTRIBUTES  0293.000
         LW        R0,OPT.OTRI,X2       OTHER(S) -- ACCESS ATTRIBUTES   0294.000
         SPACE                                                          0295.000
NOACCESS EQU       $                                                    0296.000
         SBM       RCB.OWNA,OPT.OPTS,X2      OWNER -- NO ACCESS BIT     0297.000
         SBM       RCB.USNA,OPT.OPTS,X2      USERGROUP -- NO ACCESS BIT 0298.000
         SBM       RCB.OTNA,OPT.OPTS,X2      OTHER(S) -- NO ACCESS BIT  0299.000
         SPACE                                                          0300.000
ACCESS   EQU       $                                                    0301.000
         STW       R0,OPT.OWRI,X2       OWNER -- ACCESS ATTRIBUTES      0302.000
         STW       R0,OPT.UGRI,X2       USERGROUP -- ACCESS ATTRIBUTES  0303.000
         STW       R0,OPT.OTRI,X2       OTHER(S) -- ACCESS ATTIBUTES    0304.000
         SPACE                                                          0305.000
NOTHING  EQU       $                                                    0306.000
         NOP                                                            0307.000
         NOP                                                            0308.000
         SPACE     5                                                    0309.000
*+                                                                      0310.000
*        FUPOPTD --                                                     0311.000
*        FUPOPTG --                                                     0312.000
*                                                                       0313.000
*        PLANT BOOLEAN FLAG WORDS IN GLOBAL/LOCAL AREAS SO THAT         0314.000
*        THE BOOLEAN OPTIONS MAY BE TOGGLED AT THE GLOBAL/LOCAL LEVEL.  0315.000
*                                                                       0316.000
*-                                                                      0317.000
         SPACE                                                          0318.000
FUPOPTD  EQU       $                                                    0319.000
         PUSH                      SAVE REGS                            0320.000
         LA        R2,DOBLOCK      DEFAULT OPTION BLOCK                 0321.000
         LA        R3,GOBLOCK      GLOBAL OPTION BLOCK                  0322.000
         BU        FUPOPTX         JOIN COMMON CODE                     0323.000
         SPACE     5                                                    0324.000
FUPOPTG  EQU       $                                                    0325.000
         PUSH                      SAVE REGS                            0326.000
         LA        R2,GOBLOCK      GLOBAL OPTION BLOCK                  0327.000
         LW        R3,COBADDR      CURRENT (LOCAL) OPTION BLOCK ADDR.   0328.000
         BU        FUPOPTX         JOIN COMMON CODE                     0329.000
         SPACE     5                                                    0330.000
FUPOPTX  EQU       $                                                    0331.000
*        LW        R4,=X'FFFFFF1F' MASK EXTEND ATTRIBUTES               0332.000
*        LMW       R5,OPT.SFLG,X2  WORD W/BOOLEAN FLAG BITS             0333.000
         LW        R5,OPT.SFLG,X2  WORD W/BOOLEAN FLAG BITS             0334.000
         STW       R5,OPT.SFLG,X3  PLANT BOOLEAN FLAG WORD              0335.000
*        LMW       R5,OPT.NFLG,X2  WORD W/BOOLEAN FLAG BITS             0336.000
         LW        R5,OPT.NFLG,X2  WORD W/BOOLEAN FLAG BITS             0337.000
         STW       R5,OPT.NFLG,X3  PLANT BOOLEAN FLAG WORD              0338.000
         LW        R4,=X'EFFFFF00' MASK TIME ATTRIBUTES                 0339.000
         LMW       R5,OPT.FLGS,X2  WORD W/BOOLEAN FLAG BITS             0340.000
         STW       R5,OPT.FLGS,X3  PLANT BOOLEAN FLAG WORD              0341.000
         POP                       RESTORE REGS                         0342.000
         TRSW      R0              RETURN                               0343.000
         SPACE     2                                                    0344.000
END      END                                                            0345.000
