*BUILD RESOURCE CREATE BLOCK                            HEADER  FUPRCB  0001.000
         M.PGM     FUP.RCB,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
*    FUNCTIONAL DESCRIPTION:                                            0028.000
*                                                                       0029.000
*        THIS MODULE CONTAINS ROUTNES THAT BUILD RCB'S FOR THE          0030.000
*        FOLLOWING FUP COMMANDS:                                        0031.000
*                                                                       0032.000
*                  (1) CREATE (FILE/DIR/COMM)                           0033.000
*                  (2) SAVE                                             0034.000
*                  (3) RESTORE                                          0035.000
*                  (4) COPY                                             0036.000
*                                                                       0037.000
*                                                                       0038.000
*    EXTERNAL REFERENCES:                                               0039.000
*                                                                       0040.000
         EXT       OWNER           CURRENT OWNER                        0041.000
         EXT       UGROUP          CURRENT USERGROUP                    0042.000
         EXT       RCB.BUF         TO BUILD RCB IN                      0043.000
         EXT       STACKPTR        STACK POINTER                        0044.000
         EXT       RID.FUP         WHERE CREATE PUTS THE RID            0045.000
         EXT       RD1.BUF         HOLDS AN RD                          0046.000
*                                                                       0047.000
*    EXTERNAL DEFINITIONS:                                              0048.000
*                                                                       0049.000
         DEF       BFILRCB         FILE RCB ENTRY POINT                 0050.000
         DEF       BDIRRCB         DIRECTORY RCB ENTRY POINT            0051.000
         DEF       BCOMRCB         PARTITION RCB ENTRY POINT            0052.000
         DEF       BSAVRCB         DIRECTORY RCB FOR SAVE FUNCTION      0053.000
         DEF       BRESRCB         TEMPORARY FILE RCB FOR RESTORE       0054.000
         DEF       BCPYRCB         TEMPORARY FILE RCB FOR COPY          0055.000
         DEF       CLEARRCB        CLEAR RCB                   85-0391  0056.000
*                                                                       0057.000
*    SYSTEM MACRO CALLS FOR REGISTER EQUATES                            0058.000
*                                                                       0059.000
         M.REQS                                                         0060.000
         M.RCB                                                          0061.000
         M.RDCOM   RD                                                   0062.000
         M.RDSPD   RD                                                   0063.000
         M.DI.DEQ                                                       0064.000
         SPACE                                                          0065.000
RD.DEFI  EQU       14              DEFAULT SYSTEM IMAGE FLAG            0066.000
         SPACE                                                          0067.000
*                                                                       0068.000
*    LOCAL DATA DECLARATIONS                                            0069.000
*                                                                       0070.000
*        THIS LOCAL DATA IS 'PURE' DATA, AND IS CONFIGURED INTO THE CSEC0071.000
*        IF 'IMPURE' LOCAL DATA IS NEEDED, CARE SHOULD BE TAKEN THAT THE0072.000
*        DATA IS PLACED IN A CSECT.                                     0073.000
DIR.ACCM DATAW     X'80F00000'     MASK FOR DIR. ACCESS RIGHTS          0074.000
FIL.ACCM DATAW     X'F8400000'     MASK FOR FILE ACCESS RIGHTS          0075.000
COM.ACCM DATAW     X'C0400000'     MASK FOR COMMON PART. ACCESS RIGHTS  0076.000
BLANKDW  DATAD     0               ZERO                        85-0391  0077.000
         TITLE     CREATE FUNCTION RCB BUILDS                           0078.000
* INPUTS:                                                               0079.000
*        R2 = ADDRESS OF PROTOTYPE TABLE ENTRY                          0080.000
*                                                                       0081.000
* OUTPUTS:                                                              0082.000
*        RCB.BUF IS FILLED IN                                           0083.000
*                                                                       0084.000
* ASSUMPTIONS:                                                          0085.000
*        (1) ADDRESS IN R2 IS DOUBLE WORD BOUNDED                       0086.000
         TITLE     BDIRRCB - BUILD DIRECTORY RCB                        0087.000
*                                                                       0088.000
* ENTRY POINT FOR DIRECTORY RCBS                                        0089.000
*                                                                       0090.000
BDIRRCB  EQU       $                                                    0091.000
         PUSH                      SAVE REGISTERS                       0092.000
         LW        R2,PROFOA.O,R2  OPTION TABLE ADDRESS                 0093.000
         LA        R3,RCB.BUF      DESTINATION ADDRESS                  0094.000
         ZR        R6                                                   0095.000
         STW       R6,RCB.MXEI,R3  MAX EXTENSION INCREMENT              0096.000
         STW       R6,RCB.MNEI,R3  MIN EXTENSION INCREMENT              0097.000
         STW       R6,RCB.MXSZ,R3  MAX EXTENSION SIZE                   0098.000
         LW        R6,OPT.ENTS,R2  MAX ENTRIES IN DIRECTORY             0099.000
         STW       R6,RCB.OSIZ,R3                                       0100.000
         LW        R6,OPT.ADDR,R2  START ADDRESS                        0101.000
         STW       R6,RCB.ADDR,R3                                       0102.000
         LW        R4,DIR.ACCM     GET MASK FOR ACCESS RIGHTS           0103.000
         BU        BUILDRCB        COMMON SETUP                         0104.000
         TITLE     BCOMRCB - BUILD COMMON PARTITION RCB                 0105.000
*                                                                       0106.000
* ENTRY POINT FOR PARTITION RCBS                                        0107.000
*                                                                       0108.000
BCOMRCB  EQU       $                                                    0109.000
         PUSH                      SAVE REGISTERS                       0110.000
         LW        R2,PROFOA.O,R2  OPTION TABLE ADDRESS                 0111.000
         LA        R3,RCB.BUF      DESTINATION ADDRESS                  0112.000
         ZR        R6                                                   0113.000
         STW       R6,RCB.MXEI,R3  MAX EXTENSION INCREMENT              0114.000
         STW       R6,RCB.MNEI,R3  MIN EXTENSION INCREMENT              0115.000
         STW       R6,RCB.MXSZ,R3  MAX EXTENSION SIZE                   0116.000
         LW        R6,OPT.PSIZ,R2  PARTITION SIZE                       0117.000
         STW       R6,RCB.OSIZ,R3                                       0118.000
         LW        R6,OPT.PSTA,R2  START GRANULE                        0119.000
         STW       R6,RCB.ADDR,R3                                       0120.000
         LW        R4,COM.ACCM     GET MASK FOR ACCESS RIGHTS           0121.000
         BU        BUILDRCB        COMMON SETUP                         0122.000
         TITLE     BFILRCB - BUILD FILE RCB                             0123.000
*                                                                       0124.000
* ENTRY POINT FOR FILE RCBS                                             0125.000
*                                                                       0126.000
BFILRCB  EQU       $                                                    0127.000
         PUSH                      SAVE REGISTERS                       0128.000
         LW        R2,PROFOA.O,R2  OPTION TABLE ADDRESS                 0129.000
         LA        R3,RCB.BUF      DESTINATION ADDRESS                  0130.000
         LW        R6,OPT.MXEI,R2  MAX EXTENSION (FILE)                 0131.000
         STW       R6,RCB.MXEI,R3                                       0132.000
         LW        R6,OPT.MNEI,R2  MIN EXTENSION (FILE)                 0133.000
         STW       R6,RCB.MNEI,R3                                       0134.000
         LW        R6,OPT.MXSZ,R2  MAX SIZE OF EXTENSION (FILE)         0135.000
         STW       R6,RCB.MXSZ,R3                                       0136.000
         LW        R6,OPT.ALOC,R2  INITIAL FILE SIZE                    0137.000
         STW       R6,RCB.OSIZ,R3                                       0138.000
         LW        R6,OPT.ADDR,R2  START ADDRESS                        0139.000
         STW       R6,RCB.ADDR,R3                                       0140.000
* OPT.PSIZ SLOT WAS USED TO HOLD SEGMENT NUMBER OPTION          EVOM-33 0141.000
         LW        R6,OPT.PSIZ,R2  GET SEGMENT NUM ALLOWED      EVOM-33 0142.000
         SLL       R6,8            MOV SEGN TO BYTE 2 POS       EVOM-33 0143.000
         ORMW      R6,OPT.OPTS,R2  MERGE OPT FLAGS              EVOM-33 0144.000
         STW       R6,OPT.OPTS,R2  UPDATE OPT.OPTS VALUE        EVOM-33 0145.000
         LW        R4,FIL.ACCM     GET MASK FOR ACCESS RIGHTS           0146.000
         TITLE     COMMON RCB BUILDING CODE                             0147.000
*                                                                       0148.000
* THE COMMON CODE STARTS HERE                                           0149.000
*                                                                       0150.000
BUILDRCB EQU       $                                                    0151.000
         LD        R6,OPT.OWNR,R2  OWNER NAME                           0152.000
         STD       R6,RCB.OWNR,R3                                       0153.000
         LD        R6,OPT.USER,R2  USERGROUP NAME                       0154.000
         STD       R6,RCB.USER,R3                                       0155.000
*                                  R4 CONTAINS THE ACCESS RIGHTS MASK   0156.000
         LMW       R6,OPT.OWRI,R2  OWNER RIGHTS                         0157.000
         STW       R6,RCB.OWRI,R3                                       0158.000
         LMW       R6,OPT.UGRI,R2  USERGROUP RIGHTS                     0159.000
         STW       R6,RCB.UGRI,R3                                       0160.000
         LMW       R6,OPT.OTRI,R2  OTHERS RIGHTS                        0161.000
         STW       R6,RCB.OTRI,R3                                       0162.000
*                                                                       0163.000
         LW        R6,OPT.SFLG,R2  SYSTEM MANAGEMENT FLAGS              0164.000
         STW       R6,RCB.SFLG,R3                                       0165.000
         LA        R6,RID.FUP      FAST ID LOCATION                     0166.000
         STW       R6,RCB.FAST,R3                                       0167.000
         LW        R6,OPT.OPTS,R2  ODD FLAGS                            0168.000
         STW       R6,RCB.OPTS,R3                                       0169.000
         LW        R6,OPT.NFLG,R2  'NOT' SYSTEM MANAGEMENT FLAGS        0170.000
         STW       R6,RCB.FREE,R3                                       0171.000
         POP                       RESTORE REGISTERS                    0172.000
         TRSW      R0                                                   0173.000
         TITLE     BUILD DIRECTORY RCB FROM RD                          0174.000
*                                                                       0175.000
* THIS ROUTINE BUILDS A DIRECTORY RCB FROM THE DIRECTORY RD.            0176.000
* IT IS USE IN THE SAVE COMMAND SO THAT THE DIRECTORY CAN BE            0177.000
* RECREATED IF NEEDED BY THE RESTORE COMMAND.                           0178.000
*                                                                       0179.000
* INPUTS:                                                               0180.000
*        RD1.BUF= RD FOR THE DIRECTORY                                  0181.000
*                                                                       0182.000
* OUTPUTS:                                                              0183.000
*        RCB.BUF CONTAINS THE BUILT RCB                                 0184.000
*                                                                       0185.000
BSAVRCB  PUSH                      SAVE REGISTERS                       0186.000
         LA        R2,RD1.BUF      SOURCE                               0187.000
         LA        R3,RCB.BUF      DESTINATION                          0188.000
*                                                                       0189.000
         LD        R6,RD.OWNR,R2   OWNER NAME                           0190.000
         STD       R6,RCB.OWNR,R3                                       0191.000
*                                                                       0192.000
         LD        R6,RD.UGRP,R2   USERGROUP                            0193.000
         STD       R6,RCB.USER,R3                                       0194.000
*                                                                       0195.000
         ZMW       RCB.OPTS,R3     OPTION WORD (SET BY ACCESS RIGHTS)   0196.000
*                                                                       0197.000
         LW        R7,RD.AOWNR,R2  OWNERS RIGHTS                        0198.000
         STW       R7,RCB.OWRI,R3                                       0199.000
         BNZ       SAVRCB1         BRANCH IF SOME RIGHTS PRESENT        0200.000
         SBM       RCB.OWNA,RCB.OPTS,R3 SET NO ACCESS BIT               0201.000
*                                                                       0202.000
SAVRCB1  LW        R7,RD.AUGRP,R2  USER GROUP RIGHTS                    0203.000
         STW       R7,RCB.UGRI,R3                                       0204.000
         BNZ       SAVRCB2         BRANCH IF SOME RIGHTS PRESENT        0205.000
         SBM       RCB.USNA,RCB.OPTS,R3 SET NO ACCESS BIT               0206.000
*                                                                       0207.000
SAVRCB2  LW        R7,RD.AOTHR,R2  OTHERS RIGHTS                        0208.000
         STW       R7,RCB.OTRI,R3                                       0209.000
         BNZ       SAVRCB3         BRANCH IF SOME RIGHTS PRESENT        0210.000
         SBM       RCB.OTNA,RCB.OPTS,R3 SET NO ACCESS BIT               0211.000
*                                                                       0212.000
SAVRCB3  LW        R7,RD.SFLGS,R2  SYSTEM MANAGEMENT FLAGS              0213.000
         STW       R7,RCB.SFLG,R3                                       0214.000
*                                                                       0215.000
         TRC       R7,R7           COMPLEMENT THE FLAGS                 0216.000
         ANMW      R7,=X'FFFFFF'   GET RID OF FILE TYPE                 0217.000
         STW       R7,RCB.FREE,R3                                       0218.000
*                                                                       0219.000
         ZMW       RCB.MXEI,R3     FILE MAX EXTN (NOT USED)             0220.000
*                                                                       0221.000
         ZMW       RCB.MNEI,R3     FILE MIN EXTN (NOT USED)             0222.000
*                                                                       0223.000
         ZMW       RCB.MXSZ,R3     FILE MAX SIZE (NOT USED)             0224.000
*                                                                       0225.000
         LW        R7,DI.TOTEN,R2  DIRECTORY SIZE                       0226.000
         STW       R7,RCB.OSIZ,R3                                       0227.000
*                                                                       0228.000
         ZMW       RCB.ADDR,R3    NO START ADDRESS                      0229.000
*                                                                       0230.000
         LA        R7,RID.FUP      RID 8W AREA                          0231.000
         STW       R7,RCB.FAST,R3                                       0232.000
*                                                                       0233.000
         POP                       RESTORE REGISTERS                    0234.000
         TRSW      R0                                                   0235.000
         TITLE     CLEAR RCB BUFFER                            85-0391  0236.000
CLEARRCB PUSH                      SAV REGS                    85-0391  0237.000
         LI        R5,-8           RCB IS 16W LONG             85-0391  0238.000
         LA        R2,RCB.BUF      RCB BUFFER ADDRESS          85-0391  0239.000
CLERCB.1 LD        R6,BLANKDW                                  85-0391  0240.000
         STD       R6,0,X2         CLEAR                       85-0391  0241.000
         ABR       R2,28           UPDATE ADDRESS                       0242.000
         BIB       R5,CLERCB.1     LOOP                        85-0391  0243.000
         POP                                                   85-0391  0244.000
         TRSW      R0              RETURN                      85-0391  0245.000
         TITLE     RESTORE FUNCTION RCB BUILD                           0246.000
*                                                                       0247.000
* THIS ROUTINE BUILDS THE RCB FOR THE TEMPORARY FILE TO                 0248.000
* WHICH THE TAPE FILE IS COPIED ON THE RESTORE COMMAND.                 0249.000
*                                                                       0250.000
* INPUTS:                                                               0251.000
*        RD1.BUF = THE RD OF THE TAPE FILE                              0252.000
*        R7 = SEGNUM VALUE SPECIFIED ON THE COMMAND LINE        S851291A0253.000
*                                                                       0254.000
* OUTPUTS:                                                              0255.000
*        RCB.BUF = THE RCB                                              0256.000
*                                                                       0257.000
* THE OWNER/USERGROUP FIELDS HAVE ALREADY BEEN SET UP IN RCB.BUF        0258.000
* THE OWNER ACCESS RIGHTS MUST BE SET UP TO BE ALL ACCESS SO            0259.000
* THAT THE MODIFY RD SERVICE CAN BE CALLED AFTER THE RESTORE.           0260.000
* I AM GOING TO SET THE OWNER ACCESS RIGHTS TO DEFAULT THEREFORE.       0261.000
*                                                                       0262.000
BRESRCB  EQU       $                                                    0263.000
         PUSH                      SAVE REGISTERS                       0264.000
*                                                                       0265.000
         LA        R2,RD1.BUF      SOURCE                               0266.000
         LA        R3,RCB.BUF      DESTINATION                          0267.000
*                                                                       0268.000
*        ZMW       RCB.OPTS,R3     OPTION WORD (SET BY ACCESS)  S851291A0269.000
         SLL       R7,8            MOVE SEGNUM INTO BYTE 2      S851291A0270.000
         STW       R7,RCB.OPTS,R3  STORE OPTION WORD            S851291A0271.000
*                                                                       0272.000
         ZMW       RCB.OWRI,R3     TAKE DEFAULT OWNER RIGHTS            0273.000
*                                                                       0274.000
         LW        R7,RD.AUGRP,R2  USER GROUP RIGHTS                    0275.000
         STW       R7,RCB.UGRI,R3                                       0276.000
         BNZ       RESRCB2         BRANCH IF SOME RIGHTS PRESENT        0277.000
         SBM       RCB.USNA,RCB.OPTS,R3 SET NO ACCESS BIT               0278.000
*                                                                       0279.000
RESRCB2  LW        R7,RD.AOTHR,R2  OTHERS RIGHTS                        0280.000
         STW       R7,RCB.OTRI,R3                                       0281.000
         BNZ       RESRCB3         BRANCH IF SOME RIGHTS PRESENT        0282.000
         SBM       RCB.OTNA,RCB.OPTS,R3 SET NO ACCESS BIT               0283.000
*                                                                       0284.000
RESRCB3  LW        R7,RD.SFLGS,R2  SYSTEM MANAGEMENT FLAGS              0285.000
         STW       R7,RCB.SFLG,R3                                       0286.000
*                                                                       0287.000
         TRC       R7,R7           COMPLEMENT THE FLAGS                 0288.000
         ANMW      R7,=X'FFFFFF'   GET RID OF FILE TYPE                 0289.000
         STW       R7,RCB.FREE,R3                                       0290.000
*                                                                       0291.000
         LW        R7,RD.MXEXT,R2  FILE MAXIMUM EXTENSION               0292.000
         STW       R7,RCB.MXEI,R3                                       0293.000
*                                                                       0294.000
         LW        R7,RD.MNEXT,R2  FILE MINIMUM EXTENSION               0295.000
         STW       R7,RCB.MNEI,R3                                       0296.000
*                                                                       0297.000
         LW        R7,RD.MXSIZ,R2  FILE MAXIMUM SIZE                    0298.000
         STW       R7,RCB.MXSZ,R3                                       0299.000
*                                                                       0300.000
         LW        R7,RD.EOMBL,R2  FILE ORIGINAL SIZE                   0301.000
         STW       R7,RCB.OSIZ,R3                                       0302.000
*                                                                       0303.000
         ZMW       RCB.ADDR,R3    NO START ADDRESS                      0304.000
*                                                                       0305.000
         LA        R7,RID.FUP      RID 8W AREA                          0306.000
         STW       R7,RCB.FAST,R3                                       0307.000
*                                                                       0308.000
         POP                       RESTORE REGISTERS                    0309.000
         TRSW      R0                                                   0310.000
         TITLE     COPY FUNCTION RCB BUILD                              0311.000
*                                                                       0312.000
* THIS ROUTINE BUILDS THE TEMPORARY FILE RCB FOR THE COPY COMMAND.      0313.000
*                                                                       0314.000
* INPUTS:                                                               0315.000
*        RD1.BUF = THE RD OF THE 'FROM' FILE                            0316.000
*        R2      = THE PROTOTYPE ADDRESS                                0317.000
*                                                                       0318.000
* OUTPUTS:                                                              0319.000
*        RCB.BUF = THE RCB                                              0320.000
*                                                                       0321.000
* THE RCB IS BUILT FROM THE OPTIONS SPECIFIED ON THE COMMAND LINE,      0322.000
* AND ANY FIELDS NOT SPECIFIED ARE GOT FROM THE RD OF THE 'FROM' FILE.  0323.000
*                                                                       0324.000
BCPYRCB  PUSH                      SAVE REGISTERS                       0325.000
         PUSHSTP                   SAVE R1                              0326.000
*                                                                       0327.000
         LW        R1,PROFOA.O,R2  OPTION BLOCK ADDRESS                 0328.000
         LA        R2,RD1.BUF      'FROM' FILE RD                       0329.000
         LA        R3,RCB.BUF      RCB BUFFER ADDRESS                   0330.000
*                                                                       0331.000
* DELETE NEXT 2 LINES -- NEW OWNER NAME CANNOT BE ASSIGNED YET  S881865 0332.000
* BECAUSE CALL TO H.VOMM,11 WILL RESULT IN ERROR IF RD OWNER    S881865 0333.000
* DOES NOT MATCH OWNER NAME IN DQE.  THE RD WILL RECEIVE        S881865 0334.000
* CORRECT OWNER NAME LATER IN FUPCPY IN THIS SPR FIX.           S881865 0335.000
*        LD        R6,OPT.OWNR,R1  OWNER                        S881865 0336.000
*        BNZ       CPYRCB1                                      S881865 0337.000
         LD        R6,OWNER                                             0338.000
CPYRCB1  STD       R6,RCB.OWNR,R3                                       0339.000
*                                                                       0340.000
         LD        R6,OPT.USER,R1  USERGROUP                            0341.000
         BNZ       CPYRCB2                                              0342.000
         LD        R6,UGROUP                                            0343.000
CPYRCB2  STD       R6,RCB.USER,R3                                       0344.000
*                                                                       0345.000
         ZMW       RCB.OPTS,R3     ZERO THE OPTION WORD                 0346.000
*                                                                       0347.000
         LW        R7,OPT.OWRI,R1  OWNER RIGHTS                         0348.000
         BNZ       CPYRCB3         BRANCH IF SPECIFIC                   0349.000
         TBM       RCB.OWNA,OPT.OPTS,R1 CHECK FOR NO ACCESS             0350.000
         BNS       CPYRCB4         BRANCH IF DEFAULTS REQUIRED          0351.000
         SBM       RCB.OWNA,RCB.OPTS,R3 SET NO ACCESS                   0352.000
         BU        CPYRCB3         AND SET OWNER RIGHTS TO ZERO         0353.000
CPYRCB4  ZR        R7              USE DEFAULT RIGHTS                   0354.000
CPYRCB3  STW       R7,RCB.OWRI,R3  INTO RCB                             0355.000
*                                                                       0356.000
         LW        R7,OPT.UGRI,R1  USERGROUP RIGHTS                     0357.000
         BNZ       CPYRCB5         BRANCH IF SPECIFIC                   0358.000
         TBM       RCB.USNA,OPT.OPTS,R1 CHECK FOR NO ACCESS             0359.000
         BNS       CPYRCB6         BRANCH IF DEFAULTS REQUIRED          0360.000
         SBM       RCB.USNA,RCB.OPTS,R3 SET NO ACCESS                   0361.000
         BU        CPYRCB5         AND SET USERGROUP RIGHTS TO ZERO     0362.000
CPYRCB6  ZR        R7              USE DEFAULT RIGHTS                   0363.000
CPYRCB5  STW       R7,RCB.UGRI,R3  INTO RCB                             0364.000
*                                                                       0365.000
         LW        R7,OPT.OTRI,R1  OTHERS RIGHTS                        0366.000
         BNZ       CPYRCB7         BRANCH IF SPECIFIC                   0367.000
         TBM       RCB.OTNA,OPT.OPTS,R1 CHECK FOR NO ACCESS             0368.000
         BNS       CPYRCB8         BRANCH IF DEFAULTS REQUIRED          0369.000
         SBM       RCB.OTNA,RCB.OPTS,R3 SET NO ACCESS                   0370.000
         BU        CPYRCB7         AND SET OTHERS RIGHTS TO ZERO        0371.000
CPYRCB8  ZR        R7              USE DEFAULT RIGHTS                   0372.000
CPYRCB7  STW       R7,RCB.OTRI,R3  INTO RCB                             0373.000
*                                                                       0374.000
         LW        R7,OPT.MXEI,R1  MAXIMUM EXTENSION                    0375.000
         BNZ       CPYRCB9                                              0376.000
         LW        R7,RD.MXEXT,R2                                       0377.000
CPYRCB9  STW       R7,RCB.MXEI,R3                                       0378.000
*                                                                       0379.000
         LW        R7,OPT.MNEI,R1  MINIMUM EXTENSION                    0380.000
         BNZ       CPYRCB10                                             0381.000
         LW        R7,RD.MNEXT,R2                                       0382.000
CPYRCB10 STW       R7,RCB.MNEI,R3                                       0383.000
*                                                                       0384.000
         LW        R7,OPT.MXSZ,R1  MAXIMUM SIZE                         0385.000
         BNZ       CPYRCB11                                             0386.000
         LW        R7,RD.MXSIZ,R2                                       0387.000
CPYRCB11 STW       R7,RCB.MXSZ,R3                                       0388.000
*                                                                       0389.000
         LW        R7,OPT.ALOC,R1  ORIGINAL FILE SIZE                   0390.000
         BNZ       CPYRCB12                                             0391.000
         LW        R7,RD.EOMBL,R2                                       0392.000
CPYRCB12 STW       R7,RCB.OSIZ,R3                                       0393.000
*                                                                       0394.000
         LW        R7,OPT.ADDR,R1  START ADDRESS                        0395.000
         STW       R7,RCB.ADDR,R3                                       0396.000
*                                                                       0397.000
         LA        R7,RID.FUP      DESTINATION FOR RID                  0398.000
         STW       R7,RCB.FAST,R3                                       0399.000
*                                                                       0400.000
* FINALLY SET UP THE SYSTEM MANAGEMENT FLAGS                            0401.000
*                                                                       0402.000
         LW        R7,OPT.SFLG,R1  COMMAND LINE REQUESTS                0403.000
         ORMW      R7,RD.SFLGS,R2  'OR' WITH 'FROM' FILES FLAGS         0404.000
         ZBR       R7,RD.DEFI      CLEAR DEFAULT SYSTEM IMAGE FLAG      0405.000
         LW        R6,OPT.NFLG,R1  COMMAND LINE 'NO' FLAGS              0406.000
         TRC       R6,R6                                                0407.000
         ANR       R6,R7           GET RID OF 'NO' OPTIONS              0408.000
         STW       R7,RCB.SFLG,R3  INTO RCB                             0409.000
         TRC       R7,R7           COMPLEMENT THE BITS                  0410.000
         ANMW      R7,=X'FFFFFF'   GET RID OF FILE TYPE FIELD           0411.000
         STW       R7,RCB.FREE,R3  INTO RCB (NEGATIVE FLAGS)            0412.000
*                                                                       0413.000
         POPSTP                    RETRIEVE R1                          0414.000
         POP                                                            0415.000
         TRSW      R0                                                   0416.000
         END                                                            0417.000
