*CONVERT COMMAND - CONVERTS PRE RELEASE 2.0 SAVE TAPES  HEADER  FUPCVT  0001.000
         M.PGM     FUP.CONVERT,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 READS PRE-MPX-2.0 FILE MANAGER(S) SAVE TAPES AND   0029.000
*        PRODUCES NEW DISC FILES UNDER THE NEW VOLUME STRUCTURE.        0030.000
*        IF A NEEDED DIRECTORY DOES NOT EXIST, ONE WILL BE CREATED      0031.000
*        USING SYSTEM DEFAULTS.  IF A FILE ALREADY EXISTS, IT WILL      0032.000
*        BE DELETED AND RECREATED.  AFTER THESE ABOVE TWO ACTIONS, IF   0033.000
*        A FILE STILL CANNOT BE CREATED, THE SAVED FILE ON THE TAPE     0034.000
*        WILL BE SKIPPED OVER.                                          0035.000
*                                                                       0036.000
*                                                                       0037.000
************************************************************************0038.000
*                                                                      *0039.000
**                                                                    **0040.000
***                                                                  ***0041.000
****                        N O T E S                               ****0042.000
***                                                                  ***0043.000
**                                                                    **0044.000
*                                                                      *0045.000
*                                                                      *0046.000
*        NOTE:  CURRENTLY THIS MODULE DOES NOT RECOVER FROM DISC OR    *0047.000
*        TAPE I/O ERROR(S).  RECOVERY FROM DISC I/O ERROR(S) IS        *0048.000
*        POSSIBLE WITH LITTLE LOSS OF DATA.  HOWEVER, RECOVERY FROM    *0049.000
*        TAPE I/O ERROR(S) IS QUESTIONABLE, ESPECIALLY IN LIGHT OF     *0050.000
*        THE PRE-MPX-2.0 FILE MANAGER SAVE TAPE FORMAT.                *0051.000
*                                                                      *0052.000
*        FOR CREATING DIRECTORY(S)  --  COULD COUNT UP # OF FILES IN   *0053.000
*        THE SAVE IMAGE TO BE PUT INTO EACH DIRECTORY, AND CREATE THE  *0054.000
*        DIRECTORY WITH CAPACITY FOR AT LEAST THAT MANY ENTRY(S),      *0055.000
*        INSTEAD OF JUST RELYING ON SYSTEM DEFAULT DIRECTORY SIZE.     *0056.000
*                                                                      *0057.000
*                                                                      *0058.000
************************************************************************0059.000
*                                                                       0060.000
*                                                                       0061.000
*-                                                                      0062.000
*+                                                                      0063.000
*        ENVIRONMENT                                                    0064.000
*                                                                       0065.000
*                                                                       0066.000
*    EXTERNAL REFERENCES:                                               0067.000
         SPACE                                                          0068.000
*        ROUTINE NAMES                                                  0069.000
         SPACE                                                          0070.000
         EXT       CREFIL          FUP LOW LEVEL ENTRY POINT FOR CREATE 0071.000
         EXT       CREDIR          FUP LOW LEVEL ENTRY POINT FOR CREATE 0072.000
         EXT       C.DERES2        FUP LOW LEVEL ENTRY POINT FOR DELETE 0073.000
         EXT       DIV.RND         DIVIDE W/ROUND ROUTINE               0074.000
         EXT       RSEQ            READ ROUTINE                         0075.000
         EXT       WSEQ            WRITE ROUTINE                        0076.000
         EXT       X.DALC          DEALLOCATE ROUTINE                   0077.000
         EXT       X.RINQ          RESOURCE INQUIRY ROUTINE             0078.000
         EXT       X.ALOC          GENERAL -- ALLOCATE RESOURCE         0079.000
         EXT       BUILDRR6        BUILD RRS TYPE #6                    0080.000
         EXT       BLDRR6.S        BUILDS RRS TYPE #6 (SHORT 6W FORM)   0081.000
         EXT       BUILDCNP        BUILD A CNP                          0082.000
         EXT       GETPATH         GET LENGTH OF A NAME, EXCLUDING      0083.000
*                                  TRAILING BLANKS                      0084.000
         EXT       FUPABORT        ABORT ROUTINE                        0085.000
         EXT       FUPABRT2        ABORTING -- I/O RELATED              0086.000
         EXT       FUPABRT3        PRINT ERROR MESSAGE & ABORT          0087.000
         EXT       INVKEY          INVALID KEY ERROR                    0088.000
         EXT       SS.STRNG        TO PICK UP THE VOLUME NAME           0089.000
         EXT       SS.KWSYN        CHECK KEYWORD SYNTAX                 0090.000
         EXT       A.GLOBAL        COPY DEFAULT OPTIONS TO GLOBAL       0091.000
         EXT       A.LOCAL         COPY GLOBAL OPTIONS TO LOCAL         0092.000
         EXT       A.INIT          TO INITIALIZE THE PROTOTYPE TABLE    0093.000
         EXT       AS.LIST1        TO ZERO THE PROTOTYPE TABLE          0094.000
         EXT       X.OPEN          OPEN RESOURCE ROUTINE                0095.000
         EXT       X.CLOSE         CLOSE RESOURCE ROUTINE               0096.000
         EXT       X.ALOC2         ALLOCATE & OPEN TEMP FILE            0097.000
         EXT       M.RWND          REWIND ROUTINE                       0098.000
         EXT       M.FWDR          ADVANCE RECORD ROUTINE               0099.000
         EXT       M.FWDF          ADVANCE FILE ROUTINE                 0100.000
         EXT       GETRD0          GET A COPY OF RES. DESCR. VIA RID    0101.000
         EXT       AUDIT0          PRINT AUDIT TRAIL LINE(S)            0102.000
         EXT       ERROR           PRINT ERROR MESSAGE ON AUDIT TRAIL   0103.000
         SPACE                                                          0104.000
*        DATA TABLES  ( .GT. 2W )                                       0105.000
         SPACE                                                          0106.000
         EXT       RD1.BUF         BUFFER TO HOLD A RESOURCE DESCRIPTOR 0107.000
         EXT       LOBLOCK         LOCAL OPTION BLOCK                   0108.000
         EXT       DOBLOCK         DEFAULT OPTION BLOCK                 0109.000
         EXT       IO1FCB          FCB FOR LFC "IO1"                    0110.000
         EXT       TAPFCB          FCB                                  0111.000
         EXT       CNP.BUF         BUFFER IN WHICH TO BUILD A CNP       0112.000
         EXT       RRS.BUF         BUFFER IN WHICH TO BUILD A RRS       0113.000
         EXT       RCB.BUF         RESOURCE CREATE BLOCK -- BUILD AREA  0114.000
         EXT       INQ.BUF         RESOURCE INQUIRY BUFFER              0115.000
         EXT       TAPBUFF         DATA BUFFER FOR TAPE I/O             0116.000
         EXT       IO1BUFF         DATA BUFFER FOR IO1 TEMP FILE I/O    0117.000
         EXT       DVOL            DEFAULT VOLUME                       0118.000
         EXT       PROTOTYP        PROTOTYPE TABLE                      0119.000
         SPACE                                                          0120.000
*        DATA VARIABLES ( .LE. 2W )                                     0121.000
         SPACE                                                          0122.000
         EXT       FLAGBITS        PROGRAM GLOBAL BOOLEAN FLAG BITS     0123.000
         EXT       TAPZ            LFC G-STRING                         0124.000
         EXT       DISCFCB         FCB W/LFC DSC                        0125.000
         EXT       DSCZ            LFC  G-STRING                        0126.000
         EXT       RID.FUP         BUFFFER TO HOLD RID                  0127.000
         EXT       IO1Z            LFC  G-STRING                        0128.000
         EXT       ADR.MASK        ADDRESS MASK                         0129.000
         EXT       STACKPTR        STACK POINTER SAVE AREA              0130.000
         EXT       BLANKS          DOUBLE WORD OF SPACES                0131.000
         EXT       SYSTEM          DOUBLE WORD W/NAME SYSTEM            0132.000
         EXT       IO1BLEN         LAST VALID ENTRY SLOT IN IO1BUFF     0133.000
         EXT       IO1COUNT        # ENTRIES IN IO1BUFF & IO1 TEMP FILE 0134.000
         EXT       LASTTAP         LAST VALID ENTRY SLOT IN TAPBUFF     0135.000
         EXT       F.CVRT          FUNCTION STRING FOR AUDIT TRAIL      0136.000
         EXT       FUN.SAVE        HOLD CURRENT FUNCTION STRING ADDRESS 0137.000
         EXT       COMDADDR        HOLDS ENTRY POINT ADDR FOR COMMAND   0138.000
         EXT       CNP.ACCD        DEFAULT ACCESS VALUE FOR CNP         0139.000
         EXT       CNP.ACC3        CNP ACCESS VALUE                     0140.000
         EXT       RRS.ACC2        RRS ACCESS VALUE                     0141.000
         EXT       RRS.OPT1        RRS OPTION VALUE                     0142.000
         EXT       SS.BRIE         SYNTAX GRAPH FOR BRIEF OPTION        0143.000
         EXT       OWNER           OWNER NAME ASSOCIATED WITH THIS TASK 0144.000
         EXT       UGROUP          PROJECT GROUP NAME ASSOCIATED WITH   0145.000
*                                  THIS TASK                            0146.000
         SPACE                                                          0147.000
*                                                                       0148.000
*        ERROR MESSAGES                                                 0149.000
*                                                                       0150.000
         EXT       GEN.M001                                             0151.000
         EXT       GEN.M002                                             0152.000
         EXT       GEN.M003                                             0153.000
         EXT       GEN.M004                                             0154.000
         EXT       GEN.M005                                             0155.000
         EXT       GEN.M006                                             0156.000
         EXT       GEN.M007                                             0157.000
         EXT       GEN.M011                                             0158.000
         EXT       GEN.M012                                             0159.000
         EXT       GEN.M021                                             0160.000
         EXT       GEN.M022                                             0161.000
         EXT       FU2ERR3         ERROR MESSAGE - SAVED RTM CORE FILE  0162.000
*                                                                       0163.000
*                                                                       0164.000
*                                                                       0165.000
         SPACE                                                          0166.000
*                                                                       0167.000
*    EXTERNAL DEFINITIONS                                               0168.000
*                                                                       0169.000
         SPACE                                                          0170.000
         DEF       C.CONVRT        ROUTINE ENTRY POINT                  0171.000
         DEF       S.CONVRT        ENTRY POINT FOR COMMAND LINE PARSING 0172.000
*                                                                       0173.000
*                                                                       0174.000
*                                                                       0175.000
         SPACE                                                          0176.000
*                                                                       0177.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES                     0178.000
*                                                                       0179.000
         SPACE                                                          0180.000
         M.EQUS                    REGISTER/SYSTEM EQUATES              0181.000
         M.RR.TEQ                  RESOURCE REQUIREMENT SUMMARY EQUATES 0182.000
         M.CNP                     CALLER NOTIFICATION PACKAGE EQUATES  0183.000
         M.RCB                     RESOURCE CREATE BLOCK EQUATES        0184.000
         M.DFT.                    FILE ASSIGNMENT TABLE EQUATES        0185.000
         STINIT                    PARSER EQUATES                       0186.000
         SPACE                                                          0187.000
*                                                                       0188.000
*    LOCAL DEFINITIONS                                                  0189.000
*                                                                       0190.000
         SPACE                                                          0191.000
OLDRECSZ EQU       6               (6) 192W BLOCKS IN ONE TAPE RECORD   0192.000
*                                  PRE-MPX-2.0 FILE MANAGER(S) -  1152 W0193.000
OLDENTSZ EQU       8W              8 WORDS PER DIRECTORY ENTRY - OLD SMD0194.000
*                                  SIZE PRE-MPX-2.0 FILE MANAGER(S)     0195.000
*                                                                       0196.000
*        TEMP STORAGE IN PROTOTYPE ENTRY FOR FOLLOWING INFORMATION:     0197.000
*                                                                       0198.000
FILESIZE EQU       PROTVN.O        FILE SIZE AS RECORDED IN PRE-MPX-2.0 0199.000
*                                  SAVE IMAGE DIRECTORY                 0200.000
NOSAVE   EQU       PROTVN.O+1W     WORD CONTAINING NOSAVE FLAG          0201.000
NOSAVEF  EQU       31              BIT # FOR NOSAVE INDICATOR           0202.000
*                                  ... AS RECORDED IN THE PRE-MPX-2.0   0203.000
*                                  SAVE IMAGE DIRECTORY                 0204.000
*                                  SET MEANS FILE IS NOSAVE             0205.000
FILETYPE EQU       PROTVN.O+2W     FILE TYPE                            0206.000
*                                                                       0207.000
*                                                                       0208.000
*        EQUATES FOR PRE-MPX-2.0 SAVE IMAGE DIRECTORY (MPX)             0209.000
*                                                                       0210.000
MPXNOSAV EQU       2               BIT # FOR NOSAVE FLAG                0211.000
MPXFLAGS EQU       3W              OFFSET INTO SAVE IMAGE DIRECTORY     0212.000
*                                  ENTRY FOR INDICATOR FLAGS            0213.000
MPXSIZE  EQU       3W              OFFSET FOR FILE SIZE                 0214.000
MPXFTYPE EQU       2W              OFFSET FOR FILE TYPE                 0215.000
*                                                                       0216.000
*        EQUATES FOR RTM VERSION OF FILE MANAGER                        0217.000
*                                                                       0218.000
RTMSEGF  EQU       29              BIT # FOR SEGMENTED FILE INDICATOR   0219.000
RTMNOSAV EQU       26              BIT # FOR NOSAVE INDICATOR           0220.000
RTMCOREF EQU       25              BIT # FOR SAVED CORE FILE            0221.000
*                                  SAVED CORE FILES ARE NOT ALLOWED     0222.000
*                                  TO APPEAR ON THE SAVE TAPE !!!       0223.000
RTMSEGL  EQU       3W              WORD OFFSET TO SEGMENT LENGTH        0224.000
RTMNSEG  EQU       2W+1B           WORD OFFSET TO # SEGMENT(S) IN FILE  0225.000
RTMFLAGS EQU       3W              WORD OFFSET TO INDICATOR FLAGS       0226.000
RTMFTYPE EQU       3W+2B           OFFSET FOR FILE TYPE                 0227.000
*                                                                       0228.000
*        EQUATES COMMON TO BOTH MPX & RTM VERSIONS                      0229.000
*                                                                       0230.000
FILENAME EQU       0W              8 CHARACTER FILE NAME                0231.000
USERNAME EQU       4W              8 CHARACTER USER NAME OR ZERO FOR    0232.000
*                                  "SYSTEM" FILE                        0233.000
OSTYPE   EQU       7W              OFFSET TO WORD CONTAINING VERSION    0234.000
*                                  BIT FLAG                             0235.000
OSTYPEF  EQU       0               BIT # -- RTM = 0;  MPX = 1;          0236.000
         SPACE                                                          0237.000
*                                                                       0238.000
*    LOCAL STORAGE                                                      0239.000
*                                                                       0240.000
         SPACE                                                          0241.000
         BOUND     1D                                                   0242.000
VOLNAME  REZ       2D              LOCAL STORAGE FOR VOLUME NAME        0243.000
TRANSCNT REZ       1W              # 192W BLOCKS TO WRITE TO DISC FILE  0244.000
*                                  FROM BUFFER                          0245.000
FLAGS    REZ       1W              MODULE BOOLEAN CONTROL FLAGS         0246.000
*                                                                       0247.000
FILEUSED EQU       0               TEMPORARY FILE WAS USED              0248.000
CREAFAIL EQU       31              FILE CREATION FAILED                 0249.000
*                                                                       0250.000
         TITLE CONVERT PRE-MPX2.0 SAVE TAPES TO MPX2.0 FORMAT           0251.000
         SPACE                                                          0252.000
         CSECT                                                          0253.000
         SPACE                                                          0254.000
C.CONVRT EQU       $               ENTRY POINT                          0255.000
         SPACE                                                          0256.000
         PUSH                      SAVE REGS                            0257.000
         LA        R7,F.CVRT       FUNCTION STRING ADDRESS              0258.000
         STW       R7,FUN.SAVE     SAVE IT FOR AUDIT TRAIL & ERROR MESS.0259.000
         SPACE                                                          0260.000
*                                                                       0261.000
* SEE IF ANY COMMAND WAS PREMATURLY TERMINATED, IF SO, THEN FORCE A     0262.000
* DEALLOCATION ON LFC "DSC" IN CASE A USER'S PERMANENT FILE IS STILL    0263.000
* ALLOCATED                                                             0264.000
*                                                                       0265.000
         TBM       ABORT.F,FLAGBITS                                     0266.000
         BNS       CON.001         GO FOR NO COMMAND TERMINATED         0267.000
         LA        R5,DISCFCB      FCB ADDRESS LFC "DSC"                0268.000
         BL        X.DALC          FORCE A DEALLOCATE                   0269.000
*** IGNORE ANY ERROR STATUS FROM DEALLOCATION                           0270.000
CON.001  EQU       $                                                    0271.000
         SPACE                                                          0272.000
*                                                                       0273.000
*        VOLUME NAME HAS ALREADY BEEN ESTABLISHED IN VARIABLE VOLNAME.  0274.000
*        NAME WAS OBTAINED IN ONE OF 2 WAYS:                            0275.000
*        1).  FROM COMMAND LINE USER INPUT                              0276.000
*        2).  DEFAULT WORKING VOLUME                                    0277.000
*                                                                       0278.000
         LW        R7,VOLNAME      GET FIRST PART OF VOLUME NAME        0279.000
         BNE       CON.002         BRANCH IF ALREADY INITIALIZED        0280.000
         LA        R2,DVOL         ADDRESS OF DEFAULT WORKING VOLUME    0281.000
         LD        R4,0,R2         NOT INITIALIZED. GET DEFAULT WORK-   0282.000
         STD       R4,VOLNAME      ING VOLUME AND CONVERT TO THAT       0283.000
         LD        R4,2W,X2                                             0284.000
         STD       R4,VOLNAME+2W                                        0285.000
*                                                                       0286.000
CON.002  ZMW       FLAGS           INITIALIZE PROGRAM FLAGS             0287.000
*                                                                       0288.000
*  SEE IF TAPE IS ASSIGNED AND UNBLOCKED MODE WAS SPECIFIED             0289.000
*                                                                       0290.000
         LW        R7,TAPZ         LFC G-STRING                         0291.000
         BL        X.RINQ          RESOURCE INQUIRY SET-UP ROUTINE      0292.000
*                                                                       0293.000
*  R5 = 0 FOR UNASSIGNED ELSE ALLOCATION INDEX                          0294.000
*  R7 = CNP STATUS                                                      0295.000
*  "INQ.BUF" = BUFFER HOLDING RETURNED INQUIRY INFORMATION              0296.000
*                                                                       0297.000
         BNS       CON.003         GO FOR INQUIRY ACCEPTED & COMPLETE   0298.000
*                                                                       0299.000
*  LOGICAL FILE CODE "TAP" MUST NOT BE ASSIGNED -- HAVE TO ABORT        0300.000
*                                                                       0301.000
         LA        R7,GEN.M012     ERROR MESSAGE                        0302.000
         BL        FUPABRT3        ENTRY POINT IN ABORT ROUTINE         0303.000
         SPACE     2                                                    0304.000
CON.003  EQU       $               LFC ASSINGED, NOW CHECK FOR UNBLOCKED0305.000
         SPACE                                                          0306.000
*                                                                       0307.000
*  CHECK FAT TO SEE IF TAPE WAS ASSIGNED AS UNBLOCKED                   0308.000
*                                                                       0309.000
         LA        R2,INQ.BUF      BUFFER FILLED BY INQUIRY SERVICE     0310.000
         LW        R3,1W,X2        FAT ADDRESS FOR LFC "TAP"            0311.000
         TBM       0,DFT.FLGS,X3   BLOCKING BUFFER PRESENT BIT          0312.000
         BNS       CON.006         BRANCH FOR UNBLOCKED                 0313.000
*                                                                       0314.000
*  TAPE WAS ASSIGNED AS BLOCKED (SYSTEM DEFAULT) -- MUST ABORT          0315.000
*                                                                       0316.000
         LA        R7,GEN.M011     ERROR MESSAGE                        0317.000
         BL        FUPABRT3        ENTRY POINT IN ABORT ROUTINE         0318.000
         SPACE     2                                                    0319.000
CON.006  EQU       $                                                    0320.000
         SPACE                                                          0321.000
         TBM       0,DFT.STB,X3    IS DEVICE OPEN ???                   0322.000
         BNS       CON.008         GO FOR NOT OPEN                      0323.000
*                                                                       0324.000
*  FILE IS OPEN -- NOW SEE IF CURRENT ACCESS MODE IS READ               0325.000
*                                                                       0326.000
         LB        R4,DFT.CACM,X3  CURRENT ACCESS MODE FROM FAT         0327.000
         CI        R4,READ.M       IS IT READ ACCESS ???                0328.000
         BEQ       CON.010         GO FOR READ ACCESS                   0329.000
*                                                                       0330.000
*  DON'T HAVE DESIRED (READ) ACCESS, SO CLOSE & RE-OPEN                 0331.000
*                                                                       0332.000
         LH        R7,CNP.ACCD     CNP OPTION FIELD VALUE               0333.000
         LA        R5,TAPFCB       FCB ADDRESS                          0334.000
         BL        X.CLOSE         CLOSE THE DEVICE                     0335.000
         BNS       CON.008         GO FOR NO ERRORS                     0336.000
*  CLOSE FAILED -- SO ABORT                                             0337.000
         LA        R6,GEN.M022     ERROR MESSAGE                        0338.000
*  R7 CONTAINS MODULE #/ERROR # COMBO RETURN FROM SERVICE               0339.000
         BL        FUPABORT        ABORT MODULE -- ENTRY POINT          0340.000
         SPACE     2                                                    0341.000
CON.008  EQU       $                                                    0342.000
*                                                                       0343.000
*        OPEN THE SAVE TAPE                                             0344.000
*                                                                       0345.000
         LA        R5,TAPFCB       FCB ADDR                             0346.000
         LH        R7,CNP.ACC3     CNP ACCESS - READ ONLY, IMPLICIT SHAR0347.000
         BL        X.OPEN          BUILD CNP & ISSUE "OPEN" SERVICE CALL0348.000
         BNS       CON.010         BRANCH FOR SUCCESSFUL OPEN           0349.000
*                                                                       0350.000
*        OPEN FAILED  --  ISSUE ERROR MESSAGE & TERMINATE THIS COMMAND  0351.000
*                                                                       0352.000
         LA        R6,GEN.M001     ERROR MESSAGE                        0353.000
*        R7 ALREADY CONTAINS MODULE #/ERROR #  --  AS                   0354.000
*        RETURNED FROM SERVICE ROUTINE                                  0355.000
         BL        FUPABORT        ABORT ROUTINE                        0356.000
         SPACE     2                                                    0357.000
CON.010  EQU       $                                                    0358.000
         LI        R0,OLDRECSZ     INITIALIZE TRANSFER COUNT            0359.000
         STW       R0,TRANSCNT     (IN # OF BLOCKS)                     0360.000
*                                                                       0361.000
*        INITIALIZE POINTER(S) TO & BUFFER THAT WILL HOLD DIRECTORY     0362.000
*        ENTRY(S) THAT HAVE BEEN CONVERTED INTO PROTOTYPE ENTRY(S)      0363.000
*                                                                       0364.000
         LA        R3,IO1BUFF      BUFFER STARTING ADDRESS              0365.000
         ADI       R3,IO1MXIDX-PROSZ.O  SIZE OF BUFFER                  0366.000
         STW       R3,IO1BLEN      LAST POSSIBLE ENTRY SLOT             0367.000
*                                                                       0368.000
*        INITIALIZE POINTER(S) TO BUFFER THAT WILL HOLD PRE-MPX-2.0     0369.000
*        SAVE IMAGE DIRECTORY ENTRY(S) READ FROM TAPE                   0370.000
*                                                                       0371.000
         LA        R2,TAPBUFF      BUFFER STARTING ADDRESS              0372.000
         ADI       R2,OLDRECSZ*BLOCKSIZ*4-OLDENTSZ       BUFFER SIZE    0373.000
         STW       R2,LASTTAP      SAVE                                 0374.000
*  R2 RETAINS THIS VALUE FOR INITIALIZATION ENTRY INTO LOOP             0375.000
         ZMW       IO1COUNT        INITIALIZE COUNT OF ENTRY(S)         0376.000
         BU        CON.INIT        BRANCH INTO LOOP FOR INITIALIZATION  0377.000
         SPACE     2                                                    0378.000
CON.020  EQU       $                                                    0379.000
         ADI       R3,PROSZ.O      NEXT PROTOTYPE ENTRY                 0380.000
         CAMW      R3,IO1BLEN      PAST LAST VALID ENTRY ???            0381.000
         BLE       CON.060         BRANCH IF VALID                      0382.000
         TBM       FILEUSED,FLAGS  ALLOCATION (CHECK) ALREADY DONE ?    0383.000
         BS        CON.040         BRANCH FOR ALREADY DONE              0384.000
*        MAKE SURE HAVE TEMPORARY FILE ALLOCATED                        0385.000
         LA        R7,IO1FCB       FCB ADDRESS                          0386.000
         BL        X.ALOC2         TRY TO ALLOCATE & OPEN THE TEMP FILE 0387.000
         BNS       CON.030         BRANCH FOR SUCCESSFULL ALLOCATION    0388.000
*        CHECK IF TEMP FILE ALREADY ALLOCATED BY THIS TASK              0389.000
*******  CAUTION:  ERROR NUMBER ASSIGNMENTS ARE NOT YET STABLE !!!      0390.000
*        CHECK ERROR CODE 14 AND/OR 17                                  0391.000
         TRR       R7,R6           RETAIN ERROR COMBO IN R7             0392.000
         SLL       R6,8            MASK MODULE NUMBER IN BYTE 0         0393.000
         SRL       R6,8                                                 0394.000
         CI        R6,14           RESOURCE ALREADY ALLOCATED BY        0395.000
*                                  THIS TASK ???                        0396.000
         BEQ       CON.030         BRANCH IF WE ALREADY HAVE TEMP FILE  0397.000
         CI        R6,17           DUPLICATE LFC ASSIGNMENT ATTEMPTED ??0398.000
         BEQ       CON.030         BRANCH IF WE ALREADY HAVE TEMP FILE  0399.000
*                                                                       0400.000
*        DON'T CARE TO PROBE ERROR ANY MORE ... SO ISSUE ERROR          0401.000
*        MESSAGE & TERMINATE COMMAND.                                   0402.000
*                                                                       0403.000
         LA        R6,GEN.M002     ERROR MESSAGE                        0404.000
*        R7 ALREADY CONTAINS MODULE #/ERROR #  --  AS                   0405.000
*        RETURNED FROM SERVICE ROUTINE                                  0406.000
         BL        FUPABORT        ABORT ROUTINE                        0407.000
         SPACE     2                                                    0408.000
*                                                                       0409.000
*        ISSUE REWIND TO INSURE WE ARE AT BEGINNING OF FILE             0410.000
*        IE., FILE MAY HAVE BEEN ALREADY ALLOCATED & OPEN               0411.000
*                                                                       0412.000
CON.030  EQU       $                                                    0413.000
         XCR       R2,R7           PRESERVE (SAVE) R2                   0414.000
         LA        R2,IO1FCB       FCB ADDRESS                          0415.000
         BL        M.RWND          REWIND                               0416.000
         XCR       R7,R2           RESTORE R2                           0417.000
CON.040  BL        WRITEIO1        WRITE OUT CONTENT OF BUFFER          0418.000
         SBM       FILEUSED,FLAGS  INDICATE FILE WAS USED               0419.000
*        INITIALIZE BUFFER                                              0420.000
CON.INIT LI        R0,-IO1MXIDX+1D           BUFFER SIZE - LOOP COUNT   0421.000
         ZR        R3              INITIALIZE INDEX                     0422.000
CON.050  ZMD       IO1BUFF,X3      INITIALIZE THE PROTOTYPE ENTRIES     0423.000
         ADI       R3,1D           INCREMENT INDEX                      0424.000
         BID       R0,CON.050      LOOP TIL DONE                        0425.000
         LA        R3,IO1BUFF      1ST ENTRY SLOT IN BUFFER             0426.000
CON.060  ADI       R2,OLDENTSZ     NEXT DIRECTORY ENTRY                 0427.000
         CAMW      R2,LASTTAP      PAST LAST VALID ENTRY ???            0428.000
         BLE       CON.070         BRANCH IF VALID                      0429.000
*        READ A SAVE IMAGE DIRECTORY TAPE RECORD -- MAY BE ONLY ONE !   0430.000
         BL        READIN                                               0431.000
         LA        R2,TAPBUFF      ADDRESS 1ST ENTRY                    0432.000
*                                                                       0433.000
*        FROM THIS POINT ON, R2 WILL REFERENCE "TAPBUFF"                0434.000
*        CONTAINING PRE-MPX-2.0 SAVE IMAGE DIRECTORY ENTRY(S)           0435.000
*        AND R3 WILL REFERENCE "IO1BUFF" CONTAINING                     0436.000
*        PROTOTYPE ENTRY(S) THAT WERE BUILT BASED ON THE DIRETORY       0437.000
*        ENTRY(S) IN "TAPBUFF"                                          0438.000
*                                                                       0439.000
*                                                                       0440.000
*        GET DIRECTORY ENTRY(S) FROM BUFFER & CONVERT INTO PROTOTYPE    0441.000
*        ENTRY(S)                                                       0442.000
*                                                                       0443.000
*                                                                       0444.000
*        FILE NAME & USER NAME OCCUPY SAME LOCATION IN DIRECTORY        0445.000
*        ENTRY FOR BOTH MPX & RTM VERSIONS                              0446.000
*                                                                       0447.000
CON.070  LD        R4,FILENAME,X2  8 CHARACTER FILE NAME                0448.000
         BZ        PASS2           ZERO MEANS END OF DIRECTORY          0449.000
         ABM       31,IO1COUNT     INCREMENT # OF PROTOTYPE ENTRY(S)    0450.000
         STD       R4,PROFFN.O,X3  PLANT FILE NAME IN PROTOTYPE ENTRY   0451.000
         LD        R6,BLANKS       BLANK RIGHT HALF OF 16 CHAR FILE NAME0452.000
         STD       R6,PROFFN.O+1D,X3                                    0453.000
         LD        R6,VOLNAME      PRE-DETERMINED VOLUME NAME  --       0454.000
         STD       R6,PROFVN.O,X3  RETAINED IN LOCAL STORAGE 1ST HALF   0455.000
         LD        R6,VOLNAME+1D   2ND HALF                             0456.000
         STD       R6,PROFVN.O+1D,X3    PLANT IN PROTOTYPE ENTRY        0457.000
         LD        R4,USERNAME,X2  8 CHAR USER NAME                     0458.000
         BNZ       CON.080         BRANCH IF IT'S A USER FILE           0459.000
         LD        R4,SYSTEM       ZERO MEANS IT'S A "SYSTEM" FILE      0460.000
CON.080  STD       R4,PROFDN.O,X3  USER NAME BECOMES DIRECTORY NAME     0461.000
          LD        R6,BLANKS       BLANK RIGHT HALF OF DIR.NAME! 32B02 0462.000
         STD       R6,PROFDN.O+1D,X3    BLANK RIGHT HALF OF DIR. NAME   0463.000
*                                                                       0464.000
*        GET FILE SIZE -- OPERATING SYSTEM DEPENDENT                    0465.000
*                                                                       0466.000
         ZMW       NOSAVE,X3       INITIALIZE NOSAVE FLAG               0467.000
         TBM       OSTYPEF,OSTYPE,X2    CHECK FOR MPX SAVE              0468.000
         BNS       CON.100              BRANCH FOR RTM                  0469.000
*        MPX SAVE                                                       0470.000
         LW        R4,MPXSIZE,X2   LENGTH OF FILE IN 192W BLOCKS        0471.000
         ANMW      R4,=X'00FFFFFF'      MASK OUT FILE INDICATORS        0472.000
         STW       R4,FILESIZE,X3  PLANT IN PROTOTYPE ENTRY             0473.000
         TBM       MPXNOSAV,MPXFLAGS,X2 WAS FILE CREATED AS NO SAVE ??? 0474.000
         BNS       CON.090         BRANCH IF NOT CREATED AS NOSAVE      0475.000
         SBM       NOSAVEF,NOSAVE,X3    NEW FILE WILL BE NOSAVE         0476.000
CON.090  EQU       $                                                    0477.000
         LB        R4,MPXFTYPE,X2  FILE TYPE                            0478.000
         STB       R4,FILETYPE,X3  PLANT IN PROTOTYPE ENTRY             0479.000
         BU        CON.140                                              0480.000
         SPACE                                                          0481.000
CON.100  EQU       $               RTM SAVE                             0482.000
         SPACE                                                          0483.000
*                                                                       0484.000
*        CHECK FOR SAVED CORE FILE -- GIVE ERROR MESSAGE &              0485.000
*        TERMINATE COMMAND IF FIND SAME.                                0486.000
*                                                                       0487.000
         TBM       RTMCOREF,RTMFLAGS,X2 SAVED CORE FILE ???             0488.000
         BNS       CON.110         BRANCH IF NOT A CORE FILE            0489.000
*                                                                       0490.000
*        PRINT ERROR MESSAGE & TERMINATE COMMAND                        0491.000
*                                                                       0492.000
         LA        R6,GEN.M003     ERROR MESSAGE                        0493.000
         LW        R7,FU2ERR3      MODULE #/ERROR #                     0494.000
         BL        FUPABORT        ABORT ROUTINE                        0495.000
         SPACE     2                                                    0496.000
*                                                                       0497.000
*        TO FIND FILE SIZE:  IF SEGMENTED FILE BIT IS SET, MULTIPLY     0498.000
*        # SEGMENTS TIMES SEGMENT LENGTH TO GET # 192W BLOCKS IN FILE,  0499.000
*        OTHERWISE, THE SIZE IS SIMPLY THE SEGMENT LENGTH.              0500.000
*        ... I THINK THIS IS HOW IT WORKED/WORKS ...                    0501.000
*                                                                       0502.000
CON.110  LH        R5,RTMSEGL,X2   # 192W BLOCKS IN EACH SEGMENT        0503.000
         TBM       RTMSEGF,RTMFLAGS,X2  IS FILE SEGMENTED ???           0504.000
         BNS       CON.120         BRANCH IF NOT SEGMENTED              0505.000
*        FILE IS SEGMENTED                                              0506.000
         LB        R4,RTMNSEG,X2   # OF SEGMENTS IN FILE                0507.000
         MPR       R4,R4           FIND TOTAL LENGTH OF FILE            0508.000
CON.120  STW       R5,FILESIZE,X3  PLANT FILE SIZE IN PROTOTYPE ENTRY   0509.000
         TBM       RTMNOSAV,RTMFLAGS,X2 IS FILE NOSAVE ???              0510.000
         BNS       CON.130         BRANCH NOT CREATED NOSAVE            0511.000
         SBM       NOSAVEF,NOSAVE,X3    NEW FILE WILL BE NOSAVE         0512.000
CON.130  EQU       $                                                    0513.000
         LB        R4,RTMFTYPE,X2  FILE TYPE                            0514.000
         STB       R4,FILETYPE,X3  PLANT IN PROTOTYPE ENTRY             0515.000
CON.140  EQU       $                                                    0516.000
         BU        CON.020         LOOP FOR MORE                        0517.000
*                                                                       0518.000
*        CHECK TO SEE WHAT TO DO ABOUT EOF MANAGEMENT FLAG !!!          0519.000
*                                                                       0520.000
PASS2    EQU       $                                                    0521.000
         TBM       FILEUSED,FLAGS  FILE USED ???                        0522.000
         BNS       CON2.010        BRANCH FOR NOT USED                  0523.000
*                                                                       0524.000
*        FILE USED, THEREFORE, DO LAST WRITE, REWIND FILE AND READ      0525.000
*        A BUFFER FULL                                                  0526.000
*                                                                       0527.000
         BL        WRITEIO1        WRITE                                0528.000
         LA        R2,IO1FCB       FCB ADDRESS                          0529.000
         BL        M.RWND          REWIND TEMP FILE                     0530.000
         BL        READIO1         READ                                 0531.000
CON2.010 LA        R3,IO1BUFF      RESET BUFFER POINTER                 0532.000
*                                                                       0533.000
*        SET UP LOOP COUNTER                                            0534.000
*                                                                       0535.000
         LNW       R0,IO1COUNT     # PROTOTYPE ENTRY(S)                 0536.000
         STW       R0,IO1COUNT     ... NEGATED FOR LOOP COUNTER         0537.000
CON2.020 EQU       $                                                    0538.000
         ZMB       FLAGS+3B        INITIALIZE FLAGS                     0539.000
*                                                                       0540.000
*        MAKE VOLMGR OPTION BLOCK & CALL THE LOW LEVEL                  0541.000
*        VOLMGR CREATE FILE ENTRY POINT                                 0542.000
*                                                                       0543.000
*        OPTION BLOCK ALREADY INITIALIZED                               0544.000
*                                                                       0545.000
         LA        R2,LOBLOCK      ADDRESS OF FIRST OPTION BLOCK        0546.000
         STW       R2,PROFOA.O,X3  PLANT IN PROTOTYPE ENTRY             0547.000
*                                                                       0548.000
         LW        R4,FILESIZE,X3  FILE SIZE                            0549.000
         STW       R4,OPT.ALOC,X2  PLANT IN OPTION BLOCK                0550.000
         LB        R4,FILETYPE,X3  FILE TYPE                            0551.000
         STB       R4,OPT.SFLG,X2  PLANT IN OPTION BLOCK (RCB.FTYP)     0552.000
         CI        R4,X'CA'        IS FILE A LOAD MODULE                0553.000
         BEQ       CON2.022        GO FOR A LOAD MODULE                 0554.000
         CI        R4,X'FF'        IS FILE A SYSTEM IMAGE               0555.000
         BNE       CON2.024        GO FOR NOT A SYSTEM IMAGE            0556.000
CON2.022 EQU       $                                                    0557.000
*  EXPLICITLY STATE THAT FILE IS NOT EXTENDABLE                         0558.000
         SBM       RCB.AUTO,OPT.NFLG,X2      NOT AUTOMATICALLY EXTENDABL0559.000
         SBM       RCB.MANU,OPT.NFLG,X2      NOT MANUALLY EXTENDABLE    0560.000
         BU        CON2.026                                             0561.000
         SPACE                                                          0562.000
CON2.024 EQU       $                                                    0563.000
*  EXPLICITLY STATE THAT FILE IS EXTENDABLE                             0564.000
         SBM       RCB.AUTO,OPT.SFLG,X2      AUTOMATICALLY EXTENDABLE   0565.000
         SBM       RCB.MANU,OPT.SFLG,X2      MANUALLY EXTENDABLE        0566.000
CON2.026 EQU       $                                                    0567.000
         TBM       NOSAVEF,NOSAVE,X3    WAS FILE NOSAVE ???             0568.000
         BNS       CON2.028        GO FOR SAVEABLE                      0569.000
*  EXPLICITLY STATE FILE IS TO BE CREATED AS NOSAVE                     0570.000
         SBM       RCB.NSAV,OPT.SFLG,X2 CREATE NEW FILE AS NOSAVE       0571.000
         BU        CON2.030                                             0572.000
CON2.028 EQU       $                                                    0573.000
*  EXPLICITLY STATE FILE IS TO BE CREATED AS SAVEABLE                   0574.000
         SBM       RCB.NSAV,OPT.NFLG,X2      FILE SAVEABLE              0575.000
CON2.030 EQU       $                                                    0576.000
*                                                                       0577.000
*  CREATE FILE WITH SAME OWNER NAME & PROJECT GROUP NAME AS THOSE       0578.000
*  ASSOCIATED WITH THIS TASK ... IF DEFAULT OWNER NAME AND/OR DEFAULT   0579.000
*  PROJECT GROUP NAME ARE NOT PRESENT                                   0580.000
*                                                                       0581.000
         PUSHSTP                   SAVE THE STACK POINTER               0582.000
         LA        R1,DOBLOCK      ADDRESS OF DEFAULT OPTION BLOCK      0583.000
         LD        R4,OPT.OWNR,X1  DEFAULT OWNER NAME PLANTED BY SET    0584.000
*                                  COMMAND                              0585.000
         BNZ       CON2.033        GO FOR DEFAULT OWNER NAME PRESENT    0586.000
         LD        R4,OWNER        OWNER NAME ASSOCIATED WITH THIS TASK 0587.000
CON2.033 STD       R4,OPT.OWNR,X2  PLANT IN OPTION BLOCK                0588.000
         LD        R4,OPT.USER,X1  DEFAULT PROJECT GROUP NAME PLANTED BY0589.000
*                                  THE SET COMMAND                      0590.000
         BNZ       CON2.034        GO FOR DEFAULT PRJ. GRP. NAME PRESENT0591.000
         LD        R4,UGROUP       PROJECT GROUP NAME ASSOCIATED WITH   0592.000
*                                  THIS TASK                            0593.000
CON2.034 STD       R4,OPT.USER,X2  PLANT IN OPTION BLOCK                0594.000
         POPSTP                    RESTORE THE STACK POINTER            0595.000
*                                                                       0596.000
**       WANT TO RECIEVE RID FROM SYSTEM CREATE SERVICE CALL, SO SET    0597.000
**       INDICATOR FLAG FOR FAST FILE                                   0598.000
*        MERE PRESENCE OF BUFFER ADDRESS IN IN RCB SHOULD BE            0599.000
*        SUFFICIENT TO GET THE RID RETURNED BY THE SYSTEM CREATE        0600.000
*        SERVICE                                                        0601.000
*        ADDRESS OF RID BUFFER "RID.FUP" IS PUT INTO THE RCB BY THE     0602.000
*        BUILD RCB ROUTINE IN MODULE FUPRCB.                            0603.000
*                                                                       0604.000
*        SBM       RCB.FSTF,OPT.SFLG,X2      WORD IN FUP OPTION BLOCK   0605.000
CON2.040 EQU       $                                                    0606.000
         TRR       R3,R2           ADDR OF CURRENT PROTOTYPE ENTRY      0607.000
*                                                                       0608.000
*  NOTE IT MIGHT BE POSSIBLE TO SET THE FUP REPLACE FLAG IN THE OPTION  0609.000
*  BLOCK TO ATTEMPT TO DELETE ANY ALREADY EXISTING FILE, INSTEAD OF     0610.000
*  ISSUING DELETE DIRECTLY, HOWEVER, THIS IS A MINOR POINT !            0611.000
*                                                                       0612.000
         BL        CREFIL          TRY TO CREATE THE FILE               0613.000
         BNS       CON2.070        BRANCH FOR NO ERRORS - FILE CREATED  0614.000
         SBM       CREAFAIL,FLAGS  NOTE THAT CREATE FAILED              0615.000
         BS        CON2.060        FOR 2ND CREATE FAILURE               0616.000
*        ERROR CODE RETURNED IN R7                                      0617.000
         TRR       R7,R6           DITTO                                0618.000
         SLL       R6,8            MASK MODULE NUMBER                   0619.000
         SRL       R6,8                                                 0620.000
*                                                                       0621.000
*        SEE IF ERROR IS: DIRECTORY DOESN'T EXIST OR FILE ALREADY       0622.000
*        EXISTS.  IF ERROR IS EITHER OF THESE, CAN MAKE ATTEMPT TO      0623.000
*        CORRECT PROBLEM & TRY TO CREATE FILE AGAIN, OTHERWISE,         0624.000
*        FILE MUST BE SKIPPED OVER ON THE TAPE.                         0625.000
*                                                                       0626.000
*******  CAUTION:  ERROR NUMBER ASSIGNMENTS ARE NOT YET STABLE !!!      0627.000
***  VOMM ERROR CODE #4 WAS RETURN WHEN TRYING TO CREATE A FILE         0628.000
***  IN A NON-EXISTENT DIRECTORY AS OF 08-MAY-81                        0629.000
         CI        R6,4            DIRECTORY DOESN'T EXIST ???          0630.000
         BNE       CON2.050        BRANCH FOR NOT THIS ERROR            0631.000
*        DIRECTORY DOESN'T EXIST -- TRY TO CREATE IT                    0632.000
*                                                                       0633.000
*        USE SAME PROTOTYPE ENTRY TO CREATE DIRECTORY.                  0634.000
*        SHIFT FILE NAME SO PATHNAME APPEARS AS THAT FOR A              0635.000
*        DIRECTORY.                                                     0636.000
*                                                                       0637.000
         LD        R6,PROFFN.O,X3  GET 1ST HALF OF 16 CHAR. FILE NAME   0638.000
         STD       R6,PROTFN.O,X3  MOVE IT TO AN UNUSED FIELD           0639.000
         LD        R6,PROFFN.O+1D,X3  2ND HALF OF FILE NAME             0640.000
         STD       R6,PROTFN.O+1D,X3    MOVE IT TO AN UNUSED FIELD      0641.000
*  CREATE DIRECTORY FUNCTION DOESN'T NEED A FILE NAME                   0642.000
         ZMD       PROFFN.O,X3     ZERO FILE NAME  --  1ST HALF         0643.000
         ZMD       PROFFN.O+1D,X3  ZERO FILE NAME  --  2ND HALF         0644.000
         TRR       R3,R2           PROTOTYPE ENTRY ADDRESS              0645.000
         BL        CREDIR          FUP CREATE RESOURCE ROUTINE          0646.000
         TRR       R7,R2           SAVE ERROR STATUS                    0647.000
*        RESTORE FILE NAME IN PROTOTYPE ENTRY                           0648.000
         LD        R6,PROTFN.O,X3  GET FILE NAME (1ST HALF)             0649.000
         STD       R6,PROFFN.O,X3  PLANT IT IN IT'S ORIGINAL PLACE      0650.000
         LD        R6,PROTFN.O+1D,X3  2ND HALF OF FILE NAME             0651.000
         STD       R6,PROFFN.O+1D,X3  PLANT IT IN IT'S ORIGINAL PLACE   0652.000
         TRR       R2,R7           RESTORE ERROR STATUS                 0653.000
         TBR       R0,CC1          DIRECTORY CREATED ???                0654.000
         BS        CON2.060        BRANCH IF CREATE FAILED              0655.000
*        INDICATE DIRECTORY WAS CREATED -- TRY TO CREATE FILE AGAIN     0656.000
         BU        CON2.040        GO TRY CREATE AGAIN                  0657.000
*                                                                       0658.000
*                                                                       0659.000
*******  CAUTION:  ERROR NUMBER ASSIGNMENTS ARE NOT YET STABLE !!!      0660.000
CON2.050 CI        R6,8            FILE ALREADY EXISTS ???              0661.000
         BNE       CON2.060        BRACH FOR NOT THIS ERROR             0662.000
         TRR       R3,R2           PROTOTYPE ENTRY ADDRESS              0663.000
         BL        C.DERES2        TRY TO DELETE EXISTING FILE          0664.000
         BNS       CON2.040        BRANCH IF SUCCESSFUL                 0665.000
*                                  TRY CREATE OF FILE AGAIN             0666.000
*                                                                       0667.000
*        CAN'T DELETE FILE  --  SO MUST SKIP TAPE FILE                  0668.000
*                                                                       0669.000
CON2.060 EQU       $               SKIP TAPE FILE                       0670.000
*                                                                       0671.000
*        R7 CONTAINS MODULE #/ERROR #  --  AS RETURNED FROM THE SYSTEM  0672.000
*        SERVICE                                                        0673.000
*        OUTPUT ERROR MESSAGE TO AUDIT TRAIL  --  FILE BEING SKIPPED    0674.000
*                                                                       0675.000
         TRR       R3,R2           PROTOTYPE ENTRY ADDRESS              0676.000
         BL        ERROR           GO PRINT THE MESSAGE                 0677.000
*                                                                       0678.000
*        ERROR ... SO MUST SKIP THIS FILE                               0679.000
*                                                                       0680.000
         LW        R5,FILESIZE,X3  # 192W BLOCKS IN FILE                0681.000
         LI        R6,OLDRECSZ     # 192W BLOCKS IN ONE TAPE RECORD     0682.000
         BL        DIV.RND         GET # TAPE RECORDS TO SKIP           0683.000
         TRR       R5,R4           # RECORDS TO SKIP                    0684.000
         LA        R2,TAPFCB       FCB ADDRESS                          0685.000
*                                                                       0686.000
*  COULD ROUTE THIS THROUGH CON.IO TO DETECT I/O ERRORS INSTEAD OF      0687.000
*  CHECKING HERE.                                                       0688.000
*                                                                       0689.000
         BL        M.FWDR          SKIP THE TAPE RECORDS                0690.000
         BCF       CC1,CON2.065    BRANCH IF NOT EOF/EOM                0691.000
         LA        R6,GEN.M004     ERROR MESSAGE                        0692.000
         BU        CON2.068                                             0693.000
CON2.065 BCF       CC2,CON2.120    BRANCH IF NOT OTHER I/O ERROR(S)     0694.000
         LA        R6,GEN.M007     ERROR MESSAGE                        0695.000
CON2.068 BL        FUPABRT2        ABORT ROUTINE -- ENTRY POINT FOR     0696.000
*                                  I/O RELATED PROBLEMS                 0697.000
         SPACE     2                                                    0698.000
CON2.070 EQU       $                                                    0699.000
*                                                                       0700.000
*        ALLOCATE THE NEWLY CREATED FILE BY RID.                        0701.000
*        FIRST NEED TO BUILD A RRS.                                     0702.000
*                                                                       0703.000
*                                                                       0704.000
*        BUILD RRS                                                      0705.000
*        COPY  RID FROM BUFFER WHERE IT WAS PLANTED BY THE              0706.000
*        SYSTEM CREATE SERVICE TO PROTOTYPE ENTRY.                      0707.000
*                                                                       0708.000
         LA        R2,RID.FUP      BUFFER HOLDING RID FROM LATEST CREATE0709.000
         LD        R4,0D,X2        1ST HALF OF VOLUME NAME FROM RID     0710.000
         STD       R4,PROFVN.O,X3  PLANT IN PROTOTYPE ENTRY             0711.000
         LD        R4,1D,X2        2ND HALF OF VOLUME NAME FROM RID     0712.000
         STD       R4,PROFVN.O+1D,X3 PLANT IN PROTOTYPE ENTRY           0713.000
         LD        R4,4W,X2                                             0714.000
         STD       R4,PROFDA.O,X3                                       0715.000
         LD        R4,6W,X2                                             0716.000
         STD       R4,PROFRD.O,X3                                       0717.000
*                                                                       0718.000
*        GO BUILD THE RRS -- TYPE #6, ALLOCATE BY RID                   0719.000
*                                                                       0720.000
         TRR       R3,R2           ADDRESS OF PROTOTYPE ENTRY           0721.000
         ADI       R2,PROFVN.O     POSITION TO RID                      0722.000
         LW        R7,DSCZ         G-STRING LFC                         0723.000
         LW        R4,RRS.OPT1     AUTO OPEN, UNBLOCKED                 0724.000
         LW        R6,RRS.ACC2     WRITE ACCESS EXCLUSIVE               0725.000
         BL        BUILDRR6        BUILD RRS IN BUFFER RRS.BUF          0726.000
*        LH        R7,CNP.ACCD     DEFAULT ACCESS -- IN CNP             0727.000
*                                                                       0728.000
*  ROUTINE X.ALOC ACCEPTS R5 (FCB ADDR.) ONLY                           0729.000
*                                                                       0730.000
         LA        R5,DISCFCB      FCB ADDRESS FOR AUTOMATIC OPEN       0731.000
*********                                                               0732.000
         SBR       R5,0                                                 0733.000
*********                                                               0734.000
         BL        X.ALOC          ALLOCATE & OPEN THE FILE             0735.000
         BNS       CON2.080        GO FOR SUCCESSFUL ALLOCATE & OPEN    0736.000
*                                                                       0737.000
*        PROCESS ERRORS                                                 0738.000
*                                                                       0739.000
         LA        R6,GEN.M005     ERROR MESSAGE                        0740.000
*                                                                       0741.000
*        R7 ALREADY CONTAINS MODULE #/ERROR #                           0742.000
*        RETURNED FROM SYSTEM SERVICE                                   0743.000
*                                                                       0744.000
         BL        FUPABORT                                             0745.000
*                                                                       0746.000
*                                                                       0747.000
*        NOTE ON OLD FILE MANAGER(S):                                   0748.000
*        IF SAVED FILES DO NOT EVENLY DIVIDE BY 6 (IE., 1152W TAPE      0749.000
*        RECORDS) THE LAST TAPE RECORD IS PADDED WITH ZERO BLOCKS.      0750.000
*        THE ACTUAL AMOUNT TO TRANSFER TO THE DISC FILE IS ALWAYS       0751.000
*        INDICATED IN THE SAVE IMAGE DIRECTORY.                         0752.000
*                                                                       0753.000
CON2.080 EQU       $                                                    0754.000
         LW        R5,FILESIZE,X3  # 192W BLOCKS IN FILE                0755.000
         LI        R6,OLDRECSZ     # 192W BLOCKS IN ONE TAPE RECORD     0756.000
         BL        DIV.RND         GET # TAPE RECORDS TO READ           0757.000
*        R4, R5 & R6 USED & NOT RESTORED                                0758.000
*        R5 = (ROUNDED) # TAPE RECORDS TO READ                          0759.000
*        R4 = REMAINDER -- # BLOCKS IN LAST TAPE RECORD TO ACTUALLY     0760.000
*        INCLUDE IN THE FILE;  IF REMAINDER IS ZERO, ALL SIX BLOCKS     0761.000
*        ARE INCLUDED                                                   0762.000
*                                                                       0763.000
         TRN       R5,R5           NEGATE FOR LOOP COUNT                0764.000
         BU        CON2.100                                             0765.000
CON2.090 BL        WRITEDSC        WRITE                                0766.000
CON2.100 BL        READIN          READ                                 0767.000
         BIB       R5,CON2.090     LOOP TILL DONE                       0768.000
*                                                                       0769.000
         TRR       R4,R4           WAS THERE ANY REMAINDER ???          0770.000
         BZ        CON2.110        GO FOR NO REMAINDER                  0771.000
*        DO FINAL I/O TRANSFER                                          0772.000
         STW       R4,TRANSCNT     LAST TRANSFER LESS THAN USUAL        0773.000
         BL        WRITEDSC        WRITE                                0774.000
         LI        R0,OLDRECSZ     REPLACE NORMAL TRANSFER COUNT        0775.000
         STW       R0,TRANSCNT                                          0776.000
         BU        CON2.115        JOIN COMMON PART                     0777.000
         SPACE                                                          0778.000
CON2.110 EQU       $                                                    0779.000
         BL        WRITEDSC        DO FINAL I/O TRANSFER - NORMAL       0780.000
*                                  TRANSFER COUNT OF 6 BLOCKS           0781.000
CON2.115 EQU       $               COMMON JOIN POINT                    0782.000
*                                                                       0783.000
*        GET RESOURCE DESCRIPTOR OF FILE JUST CREATED/PROCESSED.        0784.000
*        USE THIS INFORMATION IN PRINTING THE AUDIT TRAIL.              0785.000
*                                                                       0786.000
         TRR       R3,R2           PROTOTYPE ENTRY ADDRESS              0787.000
         ADI       R2,PROFVN.O     POSITION TO RID                      0788.000
         LA        R7,RD1.BUF      BUFFER TO HOLD RES. DESCR.           0789.000
         BL        GETRD0          GET THE RES. DESCR. INTO THE BUFFER  0790.000
         BNS       CON2.117        GO FOR SUCCESS IN "LOCATING RESOURCE"0791.000
*                                                                       0792.000
*  COULDN'T GET THE RES. DESCR. VIA THE LOCATE RESOURCE SERVICE (BY RID)0793.000
*                                                                       0794.000
         LA        R6,GEN.M021     ERROR MESSAGE                        0795.000
*  R7 RETURNED FROM VOLMGR ROUTINE WITH MODULE #/ERROR # COMBO          0796.000
         BL        FUPABORT        ABORT ROUTINE ENTRY POINT            0797.000
         SPACE     2                                                    0798.000
*                                                                       0799.000
*        PRINT AUDIT TRAIL INFORMATION ABOUT THE "CONVERTED" FILE       0800.000
*                                                                       0801.000
CON2.117 EQU       $                                                    0802.000
         TRR       R3,R2           PROTOTYPE ENTRY ADDRESS              0803.000
         BL        AUDIT0                                               0804.000
*                                                                       0805.000
*        DEALLOCATE THE FILE                                            0806.000
*                                                                       0807.000
         LA        R5,DISCFCB      FCB ADDRESS                          0808.000
         BL        X.DALC          BUILD CNP & CALL DEALLOCATE SYS. SER.0809.000
         BNS       CON2.120                                             0810.000
*                                                                       0811.000
*        PROCESS DEALLOCATION ERRORS                                    0812.000
*                                                                       0813.000
         LA        R6,GEN.M006     ERROR MESSAGE                        0814.000
*        R7 HAS MODULE #/ERROR #  RETURNED FROM SYSTEM SERVICE          0815.000
         BL        FUPABORT        ABORT ROUTINE                        0816.000
         SPACE                                                          0817.000
CON2.120 EQU       $                                                    0818.000
         ABM       31,IO1COUNT     ... ONE MORE PROTOTYPE PROCESSED     0819.000
         BZ        CON.EXIT        GO TO ROUTINE EXIT POINT IF DONE     0820.000
         ADI       R3,PROSZ.O      NEXT PROTOTYPE ENTRY                 0821.000
         CAMW      R3,IO1BLEN      PAST LAST VALID ENTRY ???            0822.000
         BLE       CON2.020        BRANCH IF VALID                      0823.000
         BL        READIO1         READ BUFFER FULL                     0824.000
         LA        R3,IO1BUFF      ADDRESS OF 1ST ENTRY IN BUFFER       0825.000
         BU        CON2.020        LOOP FOR MORE                        0826.000
         SPACE     2                                                    0827.000
CON.EXIT EQU       $                                                    0828.000
*                                                                       0829.000
*  POSITION TAPE TO BEYOND SAVE IMAGE (IE., AFTER THE END-OF-FILE       0830.000
*  MARK) BY ISSUING AN ADVANCE FILE COMMAND.                            0831.000
*                                                                       0832.000
         LA        R2,TAPFCB       FCB ADDRESS                          0833.000
         LI        R4,1            ADVANCE ONE FILE                     0834.000
         BL        M.FWDF          ISSUE THE I/O FOR ADVANCE FILE       0835.000
*                                                                       0836.000
*  DON'T BOTHER TO CHECK FOR I/O ERROR(S) SINCE WE ARE DONE WITH THE    0837.000
*  ESSENTIALS OF THE CONVERT COMMAND.                                   0838.000
*                                                                       0839.000
*                                                                       0840.000
*                                                                       0841.000
*  DON'T DEALLOCATE THE TAPE SINCE THERE MAY BE MORE SAVE IMAGES        0842.000
*  TO BE CONVERTED !!                                                   0843.000
*                                                                       0844.000
         POP                       RESTORE REGS                         0845.000
         TRSW      R0              RETURN                               0846.000
         TITLE     LOCAL I/O SET-UP ROUTINES                            0847.000
*++                                                                     0848.000
*                                                                       0849.000
* READIO1  --  READ DATA FROM TEMPORARY FILE INTO BUFFER.               0850.000
*              TRANSFER COUNT IS BUFFER SIZE.                           0851.000
*                                                                       0852.000
*        INPUT:    NONE                                                 0853.000
*        OUTPUT:   "IO1BUFF" REFRESHED WITH NEW DATA                    0854.000
*                                                                       0855.000
*--                                                                     0856.000
         SPACE                                                          0857.000
READIO1  EQU       $                                                    0858.000
         PUSH                      SAVE REGS                            0859.000
         LA        R4,RSEQ         READ ROUTINE                         0860.000
RIO1.COM LI        R7,IOBUFFSZ     # BLOCKS TO TRANSFER                 0861.000
         LA        R6,IO1BUFF      BUFFER ADDRESS                       0862.000
         LA        R2,IO1FCB       FCB ADDRESS                          0863.000
         BL        CON.IO                                               0864.000
         POP                       RESTORE REGS                         0865.000
         TRSW      R0              RETURN                               0866.000
         SPACE     5                                                    0867.000
*++                                                                     0868.000
*                                                                       0869.000
* WRITEIO1  --  WRITE DATA TO TEMPORARY FILE FROM BUFFER.               0870.000
*               TRANSFER COUNT IS BUFFER SIZE.                          0871.000
*                                                                       0872.000
*        INPUT:    NONE                                                 0873.000
*        OUTPUT:   "IO1BUFF" BUFFER WRITTEN TO TEMPORARY FILE.          0874.000
*                                                                       0875.000
*--                                                                     0876.000
         SPACE                                                          0877.000
WRITEIO1 EQU       $                                                    0878.000
         PUSH                      SAVE REGS                            0879.000
         LA        R4,WSEQ         WRITE ROUTINE                        0880.000
         BU        RIO1.COM        JOIN COMMON CODE                     0881.000
         SPACE     5                                                    0882.000
*++                                                                     0883.000
*                                                                       0884.000
* READIN  --  READ DATA FROM TAPE INTO BUFFER.                          0885.000
*             TRANSFER COUNT IS SIX 192W BLOCKS.                        0886.000
*                                                                       0887.000
*        INPUT:    NONE                                                 0888.000
*        OUTPUT:   "TAPBUFF" BUFFER IS REFRESHED WITH NEW DATA          0889.000
*                  FROM SAVE TAPE.                                      0890.000
*                                                                       0891.000
*--                                                                     0892.000
         SPACE                                                          0893.000
READIN   EQU       $                                                    0894.000
         PUSH                      SAVE REGS                            0895.000
         LA        R4,RSEQ         READ ROUTINE                         0896.000
         LI        R7,OLDRECSZ     # BLOCKS TO TRANSFER                 0897.000
         LA        R2,TAPFCB       FCB ADDRESS                          0898.000
RIN.COM  LA        R6,TAPBUFF      BUFFER ADDRESS                       0899.000
         BL        CON.IO                                               0900.000
*                                                                       0901.000
*                                                                       0902.000
*                                                                       0903.000
         POP                       RESTORE REGS                         0904.000
         TRSW      R0              RETURN                               0905.000
         SPACE     5                                                    0906.000
*++                                                                     0907.000
*                                                                       0908.000
* WRITEDSC  --  WRITE DATA FROM BUFFER TO PERMANENT DISC FILE.          0909.000
*               TRANSFER COUNT IS SIX 192W BLOCKS, EXCEPT THE LAST      0910.000
*               TRANSFER MAY BE LESS THAN SIX BLOCKS.                   0911.000
*                                                                       0912.000
*        INPUT:    NONE                                                 0913.000
*        OUTPUT:   "TAPBUFF" BUFFER IS WRITTEN TO PREVIOUSLY CREATED    0914.000
*                  PERMANENT DISC FILE.                                 0915.000
*                                                                       0916.000
*--                                                                     0917.000
         SPACE                                                          0918.000
WRITEDSC EQU       $                                                    0919.000
         PUSH                      SAVE REGS                            0920.000
         LA        R4,WSEQ         WRITE ROUTINE                        0921.000
         LW        R7,TRANSCNT     # BLOCKS TO TRANSFER                 0922.000
         LA        R2,DISCFCB      FCB ADDRESS                          0923.000
         BU        RIN.COM         JOIN COMMON CODE                     0924.000
         SPACE     5                                                    0925.000
*++                                                                     0926.000
*                                                                       0927.000
* CON.IO  --  CALL A FUP I/O ROUTINE (ANOTHER ROUTINE IN THE I/O        0928.000
*             SEQUENCE) TO PREPARE THE FCB.  INTERCEPT ANY ABNORMAL     0929.000
*             CONDITIONS & TAKE APPROPRIATE ACTION.                     0930.000
*                                                                       0931.000
*        INPUT:    R2 = FCB ADDRESS                                     0932.000
*                  R4 = FUP I/O ROUTINE ADDRESS                         0933.000
*                  R6 = DATA BUFFER ADDRESS                             0934.000
*                  R7 = # BLOCKS TO TRANSFER                            0935.000
*                                                                       0936.000
*        OUTPUT:   NO EXPLICIT OUTPUT                                   0937.000
*                                                                       0938.000
*--                                                                     0939.000
         SPACE                                                          0940.000
CON.IO   EQU       $                                                    0941.000
         PUSH                      SAVE REGS                            0942.000
         BL        *4W,X1          GO TO PRE-DETERMINED I/O ROUTINE     0943.000
         BCF       CC1,IO.10       BRANCH IF NOT EOF/EOM                0944.000
         LA        R6,GEN.M004     ERROR MESSAGE                        0945.000
         BU        IO.15                                                0946.000
IO.10    BCF       CC2,IO.20       BRANCH IF NOT OTHER I/O ERROR(S)     0947.000
         LA        R6,GEN.M007     ERROR MESSAGE                        0948.000
IO.15    BL        FUPABRT2        ABORT ROUTINE -- ENTRY POINT FOR     0949.000
*                                  I/O RELATED PROBLEMS                 0950.000
IO.20    POP                                                            0951.000
         TRSW      R0              RETURN                               0952.000
         TITLE     PARSING STATE TABLES & ACTION ROUTINES               0953.000
*++                                                                     0954.000
         BOUND     1W                                                   0955.000
         SPACE                                                          0956.000
*++                                                                     0957.000
* S.CONVRT  -  STATE TABLES FOR THE CONVERT COMMAND                     0958.000
*                                                                       0959.000
* COMMAND SYNTAX:                                                       0960.000
*                                                                       0961.000
* CONVERT  [  [VOLUME=] VOLUME_NAME  ] [ OPTION ]                       0962.000
*                                                                       0963.000
* OPTIONS:                                                              0964.000
*                                                                       0965.000
*        BRIEF=BOOL                                                     0966.000
*                                                                       0967.000
* NOTE:  THE PROTOTYPE TABLE IS USED TO TEMPORARILY SAVE THE PARSED     0968.000
*        VOLUME NAME -- IF SPECIFIED.                                   0969.000
*                                                                       0970.000
*--                                                                     0971.000
         SPACE                                                          0972.000
S.CONVRT STATE                                                          0973.000
           TRAN    NOBLNK,A.SETUP                                       0974.000
         STATE                                                          0975.000
           TRAN    EOS,A.CONVR1,S.CON50                                 0976.000
           TRAN    TSTEXP,,S.KEYS,SS.KWSYN                              0977.000
           TRAN    LAMBDA,,S.CON10                                      0978.000
S.CON10  STATE                                                          0979.000
           TRAN    SUBEXP,A.CONVRT,,SS.STRNG,NOB.M                      0980.000
         STATE                                                          0981.000
           TRAN    EOS,,S.CON50                                         0982.000
           TRAN    SUBEXP,,S.CON50,S.KEY1                               0983.000
*          ERRVAL  ???                                                  0984.000
S.CON20  STATE                                                          0985.000
           TRAN    EOS,,S.CON50                                         0986.000
           TRAN    SUBEXP,,S.CON40,S.KEY,NOB.M                          0987.000
           TRAN    LAMBDA,,S.CON30                                      0988.000
S.CON30  STATE                                                          0989.000
           TRAN    SUBEXP,A.CONVRT,S.CON50,SS.STRNG                     0990.000
S.CON40  STATE                                                          0991.000
           TRAN    G'=',,S.CON30,NOB.M                                  0992.000
S.KEYS   STATE                                                          0993.000
           TRAN    SUBEXP,,S.CON20,S.KEY1,NOB.M                         0994.000
           TRAN    SUBEXP,,,S.KEY                                       0995.000
           ERRVAL  INVKEY                                               0996.000
         STATE                                                          0997.000
           TRAN    G'=',,S.CON10,NOB.M                                  0998.000
S.CON50  STATE                                                          0999.000
           TRAN    LAMBDA,A.CMD,EXIT                                    1000.000
         STATE                                                          1001.000
         SPACE     2                                                    1002.000
S.KEY1   STATE                                                          1003.000
           TRAN    KEYWD,,,K.KEY1                                       1004.000
         STATE                                                          1005.000
         SPACE     2                                                    1006.000
S.KEY    STATE                                                          1007.000
           TRAN    KEYWD,,,K.KEY                                        1008.000
         STATE                                                          1009.000
         SPACE     5                                                    1010.000
A.SETUP  EQU       $                                                    1011.000
         PUSH                                                           1012.000
         BL        A.INIT          INIT PROTOTYPE TABLE                 1013.000
         BL        A.GLOBAL        GET DEFAULT OPTION TO GLOBAL         1014.000
         BL        A.LOCAL         GET GLOBAL OPTIONS TO LOCAL          1015.000
         POP                                                            1016.000
         TRSW      R0                                                   1017.000
         SPACE     5                                                    1018.000
A.CMD    EQU       $                                                    1019.000
         LA        R7,C.CONVRT     ENTRY POINT THIS ROUTINE             1020.000
         STW       R7,COMDADDR     PLUG IN FOR DISPATCHER               1021.000
         TRSW      R0              RETURN                               1022.000
         SPACE     5                                                    1023.000
K.KEY    EQU       $               KEYWORD TABLE                        1024.000
         KEYWRD    VOLUME,,,3      VOLUME              ! 32B01  ECKW-34 1025.000
         DATAW     0               END OF TABLE MARKER                  1026.000
         SPACE     5                                                    1027.000
K.KEY1   EQU       $                                                    1028.000
         KEYWRD    BRIEF,,SS.BRIE,3                    ! 32B01  ECKW-34 1029.000
         DATAW     0                                                    1030.000
         SPACE     5                                                    1031.000
A.CONVR1 EQU       $                                                    1032.000
*                                                                       1033.000
*        GET DEFAULT WORKING VOLUME NAME AND PLANT IT IN THIS MODULE'S  1034.000
*        LOCAL STORAGE AREA.                                            1035.000
*                                                                       1036.000
         LA        R2,DVOL         DEFAULT VOLUME NAME                  1037.000
         LD        R4,0D,X2        1ST HALF VOLUME NAME                 1038.000
         STD       R4,VOLNAME      SAVE IT                              1039.000
         LD        R4,1D,X2        2ND HALF VOLUME NAME                 1040.000
         STD       R4,VOLNAME+1D   SAVE IT                              1041.000
         TRSW      R0              RETURN                               1042.000
         SPACE     5                                                    1043.000
A.CONVRT EQU       $                                                    1044.000
*                                                                       1045.000
*        DONE PARSING VOLUME NAME ON COMMAND LINE.  THIS USED           1046.000
*        THE PROTOTYPE TABLE AND IT'S ASSOCIATED VARIABLES -- THESE     1047.000
*        WILL BE ZEROED.                                                1048.000
*                                                                       1049.000
         PUSH                      SAVE REGS                            1050.000
         LA        R2,PROTOTYP     ADDRESS OF PROTOTYPE ENTRY           1051.000
         ADI       R2,PROFVN.O     VOLUME NAME FIELD                    1052.000
*        HAVE SOURCE ADDRESS FOR COPYING VOLUME NAME TO LOCAL           1053.000
*        STORAGE AREA WITHIN THIS MODULE.                               1054.000
         LD        R4,0D,X2        1ST HALF VOLUME NAME                 1055.000
         STD       R4,VOLNAME      PLACE IN LOCAL STORAGE               1056.000
         LD        R4,1D,X2        2ND HALF VOLUME NAME                 1057.000
         STD       R4,VOLNAME+1D   PLANT 2ND HALF                       1058.000
*                                                                       1059.000
*        GO ZERO THE PROTOTYPE TABLE  --  RETURN WILL BE FROM           1060.000
*        THAT ROUTINE                                                   1061.000
*                                                                       1062.000
         BU        AS.LIST1                                             1063.000
         SPACE     2                                                    1064.000
END      END                                                            1065.000
