PMERG        V01L02                    1130 PLAN (1130-CX-25X) 08/30/71        *
// ASM                                                                  PME00020
*XREF                                                                   PME00040
*LIST                                                                   PME00060
*MACLIB PMAC1                                                           PME00080
                          ENT     PMERG                                 PME00100
                          DATE    PMERG                                 PME00120
                          PLSLB   OFF                                   PME00140
                          XEQLB   OFF                                   PME00160
                          PSCLB   OFF                                   PME00180
                          ERRLB   OFF                                   PME00200
                          HDNG    PMERG-1130 PLAN FILE MERG SUBROUTINE  PME00220
                    *************************************************** PME00240
                    * PMERG - SUBROUTINE TO CHECKPOINT TO 'PMRGA' TO  * PME00260
                    *          MERGE PLAN FILES. CALLING SEQUENCE IS  * PME00280
                    *          'CALL PMERG(I,J,K)' WHERE J & K POINT  * PME00300
                    *          TO THE ID BLOCKS OF THE TWO EXISTING   * PME00320
                    *          FILES AND I POINTS TO THE ID BLOCK OF  * PME00340
                    *          THE NEW MERGED FILE. ERASEABLE COMMON  * PME00360
                    *          MUST CONTAIN THE MERGE KEY DEFINITIONS * PME00380
                    *************************************************** PME00400
                    K160  DC      160                                   PME00420
                    RLDX  EQU     *                                     PME00440
                          LDX  L1 *-*         RESTORE                   PME00460
                          LDX  L2 *-*          ALL INDEX                PME00480
                          LDX  L3 *-*           REGISTERS               PME00500
                          B    L  *-*            AND EXIT               PME00520
                    PMERG EQU     *-1                                   PME00540
                          STX   1 RLDX+1      SAVE                      PME00560
                          STX   2 RLDX+3       ALL INDEX                PME00580
                          STX   3 RLDX+5        REGISTERS               PME00600
                          LDX   1 ER113       SET ERROR NUMBER AND      PME00620
                          BSI  I  $LRLD       MAKE SURE LOADER IN CORE  PME00640
                          LDX  L1 $LSW0       SET XR1 TO PLAN SWITCHES  PME00660
                          LDX  L2 BASEL                                 PME00680
                          SLA     16          ZERO RELATIVE PDATA       PME00700
                          STO  L  PDAD        SECTOR ADDRESS            PME00720
                          LDX   3 3           SET ADD LOOP TO THREE     PME00740
                    ADLOP EQU     *                                     PME00760
                          LD   L3 $DATA       GET WORDS SAVED           PME00780
                          SKP     +Z          IF THIS LEVEL NOT         PME00800
                          SLA     16          SAVED, SET TO 0           PME00820
                          S       K1           AT THIS LEVEL            PME00840
                          A       K160          IN 'PDATA' FILE         PME00860
                          SRT     16             AND CONVERT            PME00880
                          D       K160            TO SECTORS            PME00900
                          A       PDAD        ADD SECTORS OF            PME00920
                          STO     PDAD        PREVIOUS LEVEL AND SAVE   PME00940
                          MDX   3 -1          DECREMENT TO NEXT LEVEL   PME00960
                          B       ADLOP        AND BR NOT DONE          PME00980
                    *                                                   PME01000
                          M       K160        CONVERT TOTAL             PME01020
                          SLT     16           TO PLAN WORDS            PME01040
                          A     1 SWCH9        ADD SIZE OF COMMON       PME01060
                          S       K640          SUBTRACT SIZE OF LDR    PME01080
                          S     2 $DATA+4-BASEL  SUBTRACT SIZE OF FILE  PME01100
                          BP      NOROM           AND BR IF NO ROOM     PME01120
                          LD    1 SWCH9       COMPUTE COMMON            PME01140
                          S       K640         TO SAVE                  PME01160
                          SLA     1             CONVERT TO 16 BIT       PME01180
                          STO     CMSAV         AND SAVE                PME01200
                          BNP     NOSAV          BR IF NONE TO SAVE     PME01220
                          LD      MANAD       COMPUTE MACHINE           PME01240
                          S       CMSAV        ADDRESS OF COMMON        PME01260
                          STO     COMAD         AND SAVE                PME01280
                          LDD  I  COMAD       SAVE TWO WORDS            PME01300
                          STD     SAVBK        PAST COMMON              PME01320
                          LD    2 $DATA-BASEL COMPUTE SECTOR ADDRESS    PME01340
                          A       PDAD         OF WHERE TO SAVE COMMON  PME01360
                          XCH                   PUT IN EXTENSION        PME01380
                          LD      CMSAV       GET SIZE                  PME01400
                          STD  I  COMAD        AND SET DISK PARAMS      PME01420
                          LD      COMAD       WRITE COMMUNICATION       PME01440
                          BSI  I  $PUT        ARRAY TO DISK             PME01460
                          LDD     SAVBK       RESTORE                   PME01480
                          STD  I  COMAD        TWO WORDS                PME01500
                    NOSAV EQU     *                                     PME01520
                          BSI  I  $IOQU       PURGE LDR I/O BUFFER      PME01540
                          LD    2 $FILE-BASEL GET PFILE ADDRESS         PME01560
                          LDX  L2 $LIOA+2     PUT PFILE ADDRESS         PME01580
                          STO   2 -1           IN PLAN I/O AREA         PME01600
                          LD      PMERG       SET ADDRESS OF IDI        PME01620
                          STO     IDI2        FOR UPDATE AFTER MERGE    PME01640
                          LDX   3 3           SET LOOP COUNT TO 3       PME01660
                    IDLOP EQU     *                                     PME01680
                          LD      PMERG       GET ADDRESS OF            PME01700
                          STO     *+1          ID BLOCK AND             PME01720
                          LDX  I1 *-*          SET IN XR1               PME01740
                          LDD   1 -2          TRANSFER                  PME01760
                          STD   2 0            ID BLOCK                 PME01780
                          LDD   1 0             TO PLAN                 PME01800
                          STD   2 2              I/O AREA               PME01820
                          MDX   2 4           INCR. TO POINTER          PME01840
                          MDM     PMERG,+1    INCR ADDRESS TO NE0T I4   PME01860
                          MDX   3 -1          ARE ALL 3 ID'S DONE       PME01880
                          B       IDLOP        & BR NO.                 PME01900
                          SLA     16          SET ID(2) TO ZERO ON      PME01920
                          STO   2 -12         OUTPUT FILE               PME01940
                          LD   L  $LSW0+SWCH8 GET POINTER TO ERASEABLE  PME01960
                          BNP     LCHX        & BR NOT DEFINED          PME01980
                          S       K1          CONVERT TO                PME02000
                          SLA     1           16 BIT WORDS              PME02020
                          EOR     XFFFF       COMPLIMENT                PME02040
                          A       K1           IT                       PME02060
                          A       MANAD       MAKE ABSOLUTE             PME02080
                          STO     *+1         AND SET                   PME02100
                          LDX  L1 *-*         IN XR1                    PME02120
                          MDX  L2 200                                   PME02140
                          LDX   3 100         SET TO TRANSFER 100       PME02160
                    TRLOP EQU     *                                     PME02180
                          LDD   1 0           TRANSFER ERASEABLE        PME02200
                          STD   2 0            COMMON                   PME02220
                          MDX   2 -2                                    PME02240
                          MDX   1 -2                                    PME02260
                          MDX   3 -1           TO PLAN                  PME02280
                          B       TRLOP        I/O AREA                 PME02300
                          BSI  I  $LPUT       SAVE INFO IN PFILE        PME02320
                    *                                                   PME02340
                    * CHECKPOINT TO 'PMRGA'                             PME02360
                    LCHX  EQU     *                                     PME02380
                          CALL    LCHEX                                 PME02400
                          DC      K4                                    PME02420
                          DC      PMRGA                                 PME02440
                    * RETURN HERE                                       PME02460
                          LDX  I1 *-*         SET XR1 TO ADDRESS        PME02480
                    IDI2  EQU     *-1         OF NEW MERGED FILE        PME02500
                          LD   L  $MAN1       GET LENGTH OF NEW FILE    PME02520
                          STO     IDI2        AND SAVE                  PME02540
                          LDD  I  COMAD       SAVE TWO WORDS            PME02560
                          STD     SAVBK        AGAIN                    PME02580
                          LD   L  $DATA       COMPUTE SECTOR ADDRESS    PME02600
                          A       PDAD         OF WHERE WE PUT COMMON   PME02620
                          XCH                   PUT IN EXT              PME02640
                          LD      CMSAV       GET SIZE                  PME02660
                          BNP     NORES       AND BR IF NONE SAVED      PME02680
                          STD  I  COMAD       SET DISKZ PARAMS          PME02700
                          LD      COMAD       GET ADDRESS OF PARAMS     PME02720
                          BSI  I  $GET        READ COMM ARRAY BACK      PME02740
                          LDD     SAVBK       RESTORE TWO               PME02760
                          STD  I  COMAD        WORDS AGAIN              PME02780
                    NORES EQU     *                                     PME02800
                          LD      IDI2        SET NEW LENGTH            PME02820
                          STO   1 -2          OF MERGED FILE            PME02840
                          B    L  RLDX                                  PME02860
                    *************************************************** PME02880
                    * CONSTANTS, EQUATES, AND SAVE AREAS              * PME02900
                    *************************************************** PME02920
                    SWCH8 EQU     -16         SWITCH WORD 8             PME02940
                    SWCH9 EQU     -18         SWITCH WORD 9             PME02960
                    BASEL EQU     $B          LOADER DATA BASE          PME02980
                    PDAD  DC      *-*                                   PME03000
                    COMAD DC      *-*                                   PME03020
                    CMSAV DC      *-*                                   PME03040
                    SAVBK BSS  E  2                                     PME03060
                    K1    DC      1                                     PME03080
                    K4    DC      4                                     PME03100
                    K640  DC      640                                   PME03120
                    MANAD DC      $MAN1       ADDRESS OF MAN(1)         PME03140
                    XFFFF DC      /FFFF                                 PME03160
                          BSS  E  0                                     PME03180
                          EBC     .    .                                PME03200
                          EBC     .*   .                                PME03220
                          EBC     .A   .                                PME03240
                    PMRGA EBC     .PMRG.                                PME03260
                    NOROM EQU     *                                     PME03280
                          LD   I  PMERG                                 PME03300
                          SLA     8                                     PME03320
                          SRA     8                                     PME03340
                          XCH                 SAVE ECODE IN EXT         PME03360
                          LD      ER144       GET ERROR NUMBER          PME03380
                          STD  L  $LERR       SET N1 AND N2 FOR PERRS   PME03400
                          LDRXQ                                         PME03420
                    *                                                   PME03440
                    ER113 EQU     113         INVALID LSAV/LRLD         PME03460
                    ER144 DC      144         NO ROOM IN SAVE FILE      PME03480
                          END                                           PME03500
// DUP                                                                  PME03520
*DUMP       WS  CD  PMERG                                               PME03540
*DELETE             PMERG                                               PME03560
*STORE      WS  UA  PMERG                                               PME03580
