*DECK     PROSEQ
          IDENT  PROSEQ 
 PROSEQ   TITLE  PROSEQ - PROCESS ACCUMULATED SEQUENCES 
*CALL     SSTCALL 
 B=PROSQ  RPVDEF
          PASS2TM 
  
          EXT    BRN,WB 
  
**        PROSEQ - PROCESS ACCUMULATED SEQUENCES
 FLAGS    SPACE  3,14 
 BIR      ENTRY. 100002B     BASE INTERMEDIATE R-NUMBER 
 NIRN     ENTRY. 100002B     NEXT INTERMEDIATE R-NUMBER 
  
 FPL2     ENTRY. 0           "0 IF F.P.S OR LEVEL 2 SYMBOLS IN SUBPROGRAM 
 LALS     BSSZ   1           L.ALS-1 OF LAST SEQUENCE 
 PROSEQ   SPACE  3           PAS
 PROSEQ   ENTRY.
          MX7    0
          SA7    =XL.RND     L.RND = 0
          ALLOC  TXT,4
          SA5    F.RDT+OC.EOQ 
          SX6    1S10+OC.EOQ TERMINATE *TXT* WITH A *EOQ* 
          LX6    R1.OCP 
          SA6    X2+B6
          MX7    0           [R2] = 0 
          SA7    A6+B1
          BX6    X5 
          SA1    BRN+1
          SA6    A7+B1
          SA7    A6+B1
          MX0    -R1.RIL
          BX6    -X0*X1      SET MAX R-NUMBER FOR *SQZ* 
          SA6    A1 
  
          SA3    FPL2 
          ZR     X3,PAS1     IF N.FP & LEVEL2 = 0 
          RJ     PSB         PROPOGATE SPECIAL BITSS TO DESCRIPTOR
  
 PAS1     CALL   SBB         ELIMINATE REDUNDANT OPERATIONS 
          SA1    =XOPT2 
          SA5    L.TXT
          NZ     X1,PAS5     IF OPT2 " 0
  
          SX7    X5-8 
          ZR     X7,PAS6     IF L.TXT = 8  */ EMPTY SEQUENCE
          SA1    =XCO.ER
          ZR     X1,PAS0     IF ER = 0      */ NO OTR 
          CALL   FSU         FORCE UPPER
 PAS0     SA1    WB 
          SX6    X1-1 
          NZ     X6,PAS1A    IF WB " 1
  
          CALL   COL         CODE OPTIMIZABLE LOOP ( OPT=1 )
          EQ     PAS6 
  
 PAS1A    SA1    FPL2 
          ZR     X1,PAS4     IF FPL2 = 0   */ NO F.P.S OF LEVEL IN PROG 
  
          RJ     SSP         SET *SEQ* POINTERS 
          SA1    LALS 
          SX5    2                 LCM
          NZ     X1,PAS2     IF LALS " 0   */ IN A LOOP 
          SX5    3
 PAS2     MX6    1
          CALL   ESR
          SA1    L.MLT
          ZR     X1,PAS3     IF L.MLT = 0  */ NO MODS TO BLOCK
          SX6    1
          CALL   MPB         MERGE BLOCK AND MODS 
          EQ     PAS4 
  
 PAS3     SA1    O.SEQ
          SA2    L.SEQ
          BX6    X1 
          SA6    O.TXT       O.TXT = O.SEQ
          LX7    X2 
          SA7    L.TXT       L.TXT = L.SEQ
          MX6    0
          SA6    L.SEQ
  
 PAS4     SX6    0
          SA6    L.BLK
          CALL   MCG         CODE THE SEQUENCE
          CALL   CII         CONVERT THE ISSUED INSTRUCTIONS
          EQ     PAS6 
  
 PAS5     CALL   PBB         PROCESS BASIC BLOCK FOR OPT=2
 PROSEQ   SPACE  3,8
*         RESET FLAGS FOR NEXT SEQUENCE 
  
 PAS6     SA5    LM 
          MX6    0
          BX7    X5 
          SA6    =XXR        XR = 0 
          SA6    L.BLK       L.LBK = 0
          SA7    O.BLK       O.BLK = LM 
          SA7    O.TXT       O.TXT = LM 
          SX6    4
          SA6    L.TXT       L.TXT = 4
          SA4    =XLSN       SETUP A *BOS* AT THE BEGIN OF *TXT*
          LX4    R1.INP 
          PX6    B1,X4
          SA4    F.RDT+B1 
          SA6    X5 
          MX7    0
          SA7    A6+B1
          BX6    X4 
          SA6    A7+B1
          SA7    A6+B1
          SA1    BIR
          SA2    BRN+1
          SA3    WB 
          BX6    X1 
          SA6    A1+B1       BIR(2) = BIR(1)  ( INTERMEDIATE R-NUMBERS )
          LX7    X2 
          SA7    A2-B1       BRN(1) = BRN(2) ( NEW BASE = OLD MAX ) 
          AX4    B1,X3
          BX6    X3*X4       WB = WB & SHIFT(WB,-1)  */ WB = 1S59 IF OPT=0
          SA5    L.ALS
          SX7    X5-1 
          SA6    A3 
          SA7    LALS        LALS = L.ALS - 1 
          EQ     PROSEQ 
 SSP      TITLE  SSP - SET SEQUENCE POINTERS FOR OPT=1
**        SSP - SET SEQUENCE POINTERS FOR OPT=1 
* 
*         ENTRY  SEQUENCE IN *TXT*
* 
*         EXIT   SEQUENCE COPIED TO *BLK* 
*                (O.SEQ,L.SEQ) = FWA,LENGTH OF SEQUENCE 
  
          EXT    O.SEQ,L.SEQ
  
 SSP      ENTRY. ** 
          SA4    L.BLK
          NZ     X4,SSP1     IF L.BLK " 0 
  
          SA5    LM 
          ALLOC  TXT,4       ALLOC( TXT , 4 ) 
          BX6    X2 
          SA6    O.SEQ       O.SEQ = O.TXT
          SX7    X2+B6
          SA7    A2          O.TXT = O.TXT + L.TXT-4
          SX6    B6 
          SA6    L.SEQ       L.SEQ = L.TXT - 4
          SA6    X2+B1       TXTL[SEQ+1] = L.SEQ
          SX6    4
          SA6    A3          L.TXT = 4
          IX7    X7-X5
          SA7    L.BLK       L.BLK = O.TXT - LM 
          EQ     SSP
  
 SSP1     SA1    L.TXT       LT = L.TXT 
          SA2    O.TXT       OT = O.TXT 
          SA3    LM 
          LX7    X1 
          BX6    X3 
          SA7    L.SEQ       L.SEQ = L.TXT
          SA6    O.SEQ       O.SEQ = LM 
          SA7    L.BLK       L.BLK = L.TXT
          SA6    O.BLK       O.BLK = LM 
          SA7    X2+B1       TXTL[TXT+1] = L.TXT
          IX7    X3+X1
          SA7    A2          O.TXT = LM + L.TXT 
          SX6    4
          SA6    A1          L.TXT = 4
          MOVE   X1,X2,X3    MOVE( LT , OT , LM ) 
          EQ     SSP
 TSB      TITLE  TSB - TRANSFER SYMBOL TABLE BITS TO DESCRIPTOR 
*         PSB - TRANSFER L2 AND FP BITS FROM WORD B TO DESCRIPTOR.
*         F.P. AND LEVEL 2 BITS.
  
 PSB      ENTRY. **          **ENTRY/EXIT** 
          SA1    O.SYM
          SA5    O.TXT
          SB4    4
          SA0    X1-1 
          SB5    I.GL 
          SB6    TSBA 
          SB3    B1 
          SX7    10B-T.LAB
          LX7    P.TYP       */  CARRY ADDEND FOR LABEL TEST
          ERRMI  10B-T.LAB         RECODE THIS SUBROUTINE 
          MX0    -2                        */ MASK FOR F.P. AND LVL2 BITS 
          SA5    X5          R1 = O.TXT 
  
 TSB1     SA5    A5+B4       R1 = R1 + 4
          SA4    A5+B1       R2 = R1 + 1
          ZR     B3,PSB      IF OC[R1-4] = 0
          UX6    B3,X5
          LX4    -IH.IHP
          SB2    X4 
          ZR     B2,TSB1     IF IH[R2] = 0
          GE     B2,B5,TSB1  IF I[R2] " 0 
          SA2    A4+B1       DI = R2 + 1
          SB2    B2+B2
          LX2    59-D.TYP 
          MI     X2,TSB1     IF TYPE[DI] = II ! IV
          SA1    A0-B2       WORDB = [O.SYM-1-2*IH[R2]] 
          LX2    1+D.TYP
          IX5    X1+X7
          MI     X5,TSB1     IF TYPE[WORDB] \ T.LAB  */ TRICY TEST
          BX4    -X0*X1 
          SA3    B6+X4       FP[DI] = FP[WORDB];  L2[DI] = L2[WORDB]
          BX6    X2+X3
          SA6    A2 
          EQ     TSB1 
  
 TSBA     BSS    0
          LOC    0
          CON    0
          BFMW   D,(FP) 
          BFMW   D,(L2) 
          BFMW   D,(FP,L2)
          BFMW   D,(FP,L2)
          LOC    *O 
 AIS      TITLE  AIS - ASSIGN INDEX REGISTERS IN STRAIGHT LINE CODE 
**        AIS - ASSIGN INDEX REGISTERS IN STRAIGHT-LINE SEQUENCES.
* 
*         AIS CHOOSES CANDIDATES FOR B-REGISTER USE IN STRAIGHT-LINE     AIS
*         SEQUENCES, WHEN THE REG WIDTH OVER ANY SUBSEQUENCE IS GREATER  AIS
*         THAN OR EQUAL TO TRW.  CANDIDATES ARE CHOSEN FROM *RF*         AIS
*         DEFINITIONS, I.E., THE PREDECESSORS OF TYPE III RF FIELDS AND  AIS
*         PLD/PST RJ FIELDS.                                             AIS
*         NO OPTIMAL PACKING IS ATTEMPTED;  BUT RATHER, A REGISTER IS    AIS
*         ASSIGNED TO EACH CANDIDATE SEQUENTIALLY, IF THAT CANDIDATE/S   AIS
*         EXTENDED USE SPAN (THE SPAN OF THE USES OF ALL USES) DOES NOT  AIS
*         INTERFERE WITH THAT REGISTER/S PREVIOUS ASSIGNMENT OR ANY LOCK AIS
*         TO THAT REGISTER THAT MAY BE INCOMING WITH THE SEQUENCE.       AIS
* 
*         TRACER (AIS,AIMOD,AIMPB,AIENT,AILBM)
  
          QUAL   AIS
  
          IFLT   .CPU,75
 TRW      EQU    7
          ELSE
 TRW      EQU    6
          ENDIF 
                                                                         .NO.ID.
*         EQUATE THREE TEMP TABLES.                                      .NO.ID.
                                                                         .NO.ID.
          RMT                                                            AIS
          ECHO   ,A=(BCT,DUT,PBT),B=(RCT,RND,PIT)                        AIS
 L.A      EQU    L.B                                                     AIS
 O.A      EQU    O.B                                                     AIS
 Z.A      EQU    Z.B                                                     AIS
          ENDD                                                           AIS
          RMT                                                            AIS
                                                                         AIS
 .SFL     BIT    SO.SFLP
 SO.BLOCK EQU    SO.LOCK+.SFL      SCRATACHABLE FULL B-REG LOCK 
                                                                         AIS
 LU.INF   EQU    1S17-1      INFINITE LAST USE                           AIS
                                                                         AIS
 RIL      BIT    R1.RIL                                                  .NO.ID.
 RMSK     EQU    RIL-1-1                                                 .NO.ID.
                                                                         AIS
                                                                         AIS
*         BOUNDARY MARKING INSTRUCTION LINK WORD FORMAT.                 AIS
*         THE LINK WORDS OF SUBSEQUENCE DEMARCATING INSTRUCTIONS ARE
*         LINKED DURING *LBM*, AND CONTAIN INFORMATION REGARDING THE
*         PROFITIBILITY OF FURTHER PROCESSING THIS SUBSEQUENCE. 
                                                                         AIS
          DESCRIBE  BM.,60   BMW(MRW,NRF,P)                              AIS
          DEFINE 6                                                       AIS
 MRW      DEFINE 18          MAXIMUM REG WIDTH ACROSS SUB-SEQUENCE       AIS
 NRF      DEFINE 18          NUMBER OF *RF* DEFINITIONS IN SUBSEQUENCE   AIS
 P        DEFINE 18          LINK TO NEXT BM WORD                        AIS
                                                                         AIS
*         BCT - B REGISTER CANDIDATE TABLE ENTRY FORMAT.                 AIS
                                                                         AIS
          DESCRIBE  BC.,60   BCW(MRW,LXU,RI)                             AIS
          DEFINE 6                                                       AIS
 MRW      DEFINE 18          MAXIMUM REGISTER WIDTH ACROSS EXT. USE SPAN AIS
 LXU      DEFINE 18          INDEX IN *SEQ* OF LAST EXTENDED USE         AIS
 RI       DEFINE 18          INDEX IN SEQ OF DEFINITION OF THIS CAND     AIS
                                                                         AIS
*         PBT - PREASSIGNED B-REGISTER TABLE ENTRY FORMAT.               AIS
                                                                         AIS
          DESCRIBE  PB.,60   PBW(RN,RI,LU,P)                             AIS
          DEFINE 3                                                       AIS
 RN       DEFINE 3           B-REGISTER NUMBER OF THIS LOCK              AIS
 RI       DEFINE 18          INDEX IN *SEQ* OF THIS DEFINITION           AIS
 LU       DEFINE 18          LAST USE OF THIS LOCK                       AIS
 P        DEFINE 18          LINK TO NEXT PBT ENTRY OF SAME RN           AIS
                                                                         AIS
*         DUT - DEF-USE TABLE ENTRY FORMAT.                              AIS
                                                                         AIS
          DESCRIBE DU.,60    DUW(DEF,USE)                                AIS
 SU       DEFINE 1           SHORT USE                                   AIS
 SC       DEFINE 11          SHIFT COUNT TO MOVE R-FIELD USED TO BIT 0   AIS
          DEFINE 12                                                      AIS
 DEF      DEFINE 18          RI OF DEFINITION                            AIS
 USE      DEFINE 18          INDEX IN *SEQ* OF USE                       AIS
                                                                         AIS
*         CAT - CURRENT ASSIGNMENT TABLE ENTRY FORMAT.                   AIS
                                                                         AIS
          DESCRIBE  CA.,60                                               AIS
          DEFINE 6                                                       AIS
          DEFINE 18                                                      AIS
 LXU      DEFINE 18                                                      AIS
 RI       DEFINE 18                                                      AIS
                                                                         AIS
*         FORMAT OF LINK WORD AFTER BUILDING OF DUT.                     AIS
                                                                         AIS
          DESCRIBE  DP.,60                                               AIS
          DEFINE 24                                                      AIS
 II       DEFINE 18          POINTS TO DUT ENTRY FOR FIRST USE           AIS
 NI       DEFINE 18          POINTS TO NEXT DUT ENTRY FOR THIS RI        AIS
                                                                         AIS
*         PBI - PREASSIGNED B-REG LOCK INDEX TABLE ENTRY FORMAT.         AIS
                                                                         AIS
          DESCRIBE  PI.,60                                               AIS
 NA       DEFINE 1           THIS REG OFF MARKET FOR REST OF *SEQ*       AIS
          DEFINE 41                                                      AIS
 P        DEFINE 18          LINK TO NEXT PERTINENT PBT ENTRY            .NO.ID.
                                                                         AIS
*         FIXED STORAGE DECLARATIONS.                                    .NO.ID.
                                                                         AIS
          USE    /TABLES/                                                AIS
 FLF      BSS    1           FULL LOCK FLAGS
 PBI      BSS    7           PBT INDEX VECTOR                            AIS
 CAT      BSS    7           CURRENT ASSIGNMENT TABLE                    AIS
 NSO      BSS    1           NEXT SEQUENCE ORIGIN INDEX                  AIS
 MRF      BSS    1           MAX(RF DEFS IN SUBSEQUENCE)                 .NO.ID.
 LBMA     BSS    1           SAVE (O.SEQ-2) IN LBM                       .NO.ID.
 IUMB     BSS    1           SAVE (UL) IN IUM                            .NO.ID.
          USE    0                                                       AIS
 AIS      EJECT                                                          AIS
**        AIS - MAIN LOOP                                                AIS
                                                                         AIS
 AIS0     SX6    0                                                       AIS
          SA6    L.BCT       L.BCT = 0                                   AIS
          SA6    L.DUT       L.DUT = 0                                   AIS
          SA6    L.PBT       L.PBT = 0                                   AIS
                                                                         AIS
          TRACE  AIMOD,RLIST,MOD
          TRACE  AIMOD,MLT
          CALL   MPB         MERGE MODS WITH SEQUENCE (NO SQUEEZE)       AIS
          TRACE  AIMPB,RLIST
                                                                         AIS
          CALL   CUC         COLLECT USES COUNTS                         AIS
          TRACE  AIS,RLIST                                               AIS
                                                                         AIS
 AIS      ENTRY. **          **ENTRY/EXIT**                              AIS
          SA1    O.SEQ                                                   AIS
          SA2    X1+2                                                    AIS
          MX0    -D.REGWL                                                AIS
          LX2    -D.REGWP                                                AIS
          BX6    -X0*X2                                                  AIS
          SX0    X6-TRW                                                  AIS
          TRACE  AIENT,RLIST,SEQ
                                                                         AIS
          MI     X0,AIS0     IF MAXW .LT. TRW                            AIS
          RJ     LBM         LOCATE SEQUENCE BOUNDARIES                  AIS
          TRACE  AILBM,RLIST,SEQ
                                                                         AIS
          SA1    MRF                                                     AIS
          SX5    A0                                                      AIS
          ZR     X1,AIS0     IF NO RF USES IN SEQ                        AIS
                                                                         AIS
*         ALLOCATE FOR TABLE OF ALL POSSIBLE B-ASSIGNMENTS.              AIS
                                                                         AIS
          ALLOC  BCT,B1+X1   ALLOC (BCT,MRF+1)                           AIS
                                                                         AIS
          BX1    X5                                                      AIS
          LX5    2                                                       AIS
          ALLOC  MLT,B1+X1   ALLOC (MLT,MMOD+1)                          AIS
                                                                         AIS
          ALLOC  MOD,X5+4    ALLOC(MOD,4*(MMOD+1))                       AIS
                                                                         AIS
          SA1    L.SEQ                                                   AIS
          AX2    B1,X1                                                   AIS
          AX5    B1,X2                                                   AIS
          IX1    X2+X5                                                   AIS
                                                                         AIS
*         ALLOCATE FOR DEF-USE *TREE*.                                   AIS
                                                                         AIS
          ALLOC  DUT,X1      ALLOC (DUT,3/4*L.SEQ)                       AIS
                                                                         AIS
*         ALLOCATE FOR TABLE OF LOCKS TO B-REGS INCOMING WITH SEQUENCE.  AIS
                                                                         AIS
          ALLOC  PBT,X5      ALLOC (PBT,1/4*L.SEQ)                       AIS
                                                                         AIS
          SX7    4                                                       AIS
          MX6    0                                                       AIS
          SA7    L.MOD       L.MOD = 4                                   AIS
          SA6    L.MLT       L.MLT = 0                                   AIS
          SA1    O.SEQ                                                   AIS
          SB2    X1+4        R1F = O.SEQ + 4                             AIS
          SA0    X1                                                      AIS
                                                                         .NO.ID.
*         A0 CONTAINS O.SEQ THROUGHOUT AIS.                              .NO.ID.
                                                                         .NO.ID.
          SA2    B2-B1       LI = R1F - 1 ;  LIW = [LI]                  AIS
          SA6    FLF         FLF = 0
          EQ     AIS2                                                    AIS
                                                                         .NO.ID.
*         PROCESS ALL SUBSEQUENCES, AS DEMARCATED BY *LBM*.              .NO.ID.
                                                                         AIS
 AIS1     SA1    NSO                                                     AIS
          LX1    -BM.PP                                                  AIS
          SB4    X1                                                      AIS
          SX1    A0+B4       LI = P[NSO] + O.SEQ                         AIS
          SB2    X1+B1       R1F = LI + 1                                AIS
          SA2    X1          LIW = [LI]                                  AIS
                                                                         AIS
 AIS2     SB3    X2                                                      AIS
          ZR     B3,AIS0     IF P[LIW] = 0  */ END OF SEQ                AIS
          BX6    X2                                                      AIS
          LX2    -BM.PP                                                  AIS
          SB3    X2-3        R1L = P[LIW] - 3                            AIS
          SB3    A0+B3                                                   AIS
          SA6    NSO         [NSO] = LIW                                 AIS
          LE     B3,B2,AIS1  IF R1L .LE. R1F                             AIS
          LX6    -BM.NRFP                                                AIS
          SX4    X6                                                      AIS
          ZR     X4,AIS1     IF NRF[LIW] = 0                             AIS
          LX6    BM.NRFP-BM.MRWP                                         AIS
          SX5    X6-TRW                                                  AIS
          MI     X5,AIS1     IF MRW[LIW] .LT. TRW                        AIS
                                                                         AIS
*         TRANSFER FULL LOCKS PREASSIGNED IN PREVIOUS SUBSEQUENCE TO     .NO.ID.
*         PBI.  CLEAR PBI LINK FIELD.                                    .NO.ID.
                                                                         AIS
          SA1    FLF                                                     AIS
          SB4    59                                                      AIS
          MX7    0                                                       AIS
          SB5    B0          BI = 0                                      AIS
          SB6    7                                                       .NO.ID.
                                                                         AIS
 AIS3     LX1    -1                                                      .NO.ID.
          SB5    B5+1        BI = BI + 1                                 .NO.ID.
          AX6    B4,X1       PBI(BI) = 0                                 AIS
          SA6    PBI-1+B5    NA[PBI(BI)] = FLF(BI)                       AIS
          NE     B5,B6,AIS3  IF BI .NE. 7                                .NO.ID.
                                                                         AIS
 AIS4     SA7    A1          FLF = 0                                     AIS
          SA1    O.PBT                                                   AIS
          SX6    B1                                                      AIS
          SA7    L.BCT       L.BCT = 0                                   AIS
          SA7    X1+         [O.PBT] = 0                                 AIS
          SA6    L.PBT       L.PBT = 1                                   AIS
          RJ     BDU         BUILD DEF-USE TABLE AND BCT AND PBT         AIS
                                                                         AIS
 .T       IFNE   TEST,0                                                  .NO.ID.
          SA2    O.DUT                                                   AIS
          SA1    B3-B1                                                   AIS
          LX1    -DP.NIP                                                 AIS
          IX5    X1-X2                                                   AIS
          SX6    X5+                                                     AIS
          SA6    L.DUT       L.DUT = NI[R1L-1] - O.DUT                   AIS
 .T       ENDIF                                                          .NO.ID.
                                                                         .NO.ID.
          TRACE  AIS,RLIST,SEQ                                           AIS
          TRACE  AIS,(DUT,BCT,PBT)                                       AIS
                                                                         AIS
          RJ     IXU         INSERT EXTENDED USE INFO INTO BCT           AIS
          TRACE  AIS,BCT                                                 AIS
                                                                         AIS
          SX5    X4-TRW                                                  AIS
          MI     X5,AIS1     IF SMAXW .LT. TRW                           AIS
                                                                         AIS
          RJ     IUP         INSERT USE INFO INTO PBT                    AIS
          TRACE  AIS,PBT                                                 AIS
                                                                         AIS
          RJ     ABR         ASSIGN B-REGS AND TABLE MODS                AIS
          TRACE  AIS,RLIST,MOD                                           AIS
          TRACE  AIS,MLT                                                 AIS
          EQ     AIS1                                                    AIS
 LBM      EJECT              LBM
**        LBM - LOCATE BOUNDARY MARKERS.                                 AIS
*         THIS ROUTINE CHAINS ALL SEQUENCE-BREAKING INSTRUCTIONS THROUGH AIS
*         THE LINK WORDS, BEGINNING WITH THE *BOS*.  IT SIMULTANEOUSLY   AIS
*         INSTALLS THE MAXIMUM REG WIDTH OVER AND THE NUMBER OF *RF*     AIS
*         DEFINITIONS IN THE SEQUENCE INTO THE BOUNDARY MARKER LINKS.    AIS
*         LARGEST POSSIBLE *MOD* SIZE IS ALSO CALCULATED DURING THIS     AIS
*         BACKWARD SCAN.                                                 AIS
*                                                                        AIS
*         EXIT   MRF - CONTAINS THE MAXIMUM NUMBER OF *RF* DEFS IN ANY   AIS
*                SUBSEQUENCE.                                            AIS
*                A0 - MMOD, OVERESTIMATE OF POSSIBLE *MOD* ENTRIES.      AIS
                                                                         AIS
 LBM0     SA1    LBMA                                                    AIS
          SA2    O.SEQ                                                   AIS
          BX6    X1                                                      AIS
          SA6    X2-2        [O.SEQ-2] = SAVE                            AIS
                                                                         AIS
 LBM      ROUTINE                                                        AIS
          SA1    O.SEQ                                                   AIS
          SA3    X1+B1                                                   AIS
          SB2    X3-2        LD = TXTL - 2                               AIS
          SA5    X1+B2       I = N.INS ; DIN = O.SEQ + LD ; DINW = [DIN] AIS
          SA3    X1-2                                                    AIS
          MX7    0                                                       AIS
          BX6    X3          SAVE = [O.SEQ-2]                            AIS
          SA7    A3          [O.SEQ-2] = 0                               AIS
          SA6    LBMA                                                    AIS
          BX1    X7          TUSES = 0                                   AIS
          MX2    0           MAXW = 0                                    AIS
          SA0    B0          MMOD = 0                                    AIS
          SB4    B0          PLINK = 0                                   AIS
          SB3    B0          NRF = 0                                     AIS
          SA7    MRF         MRF = 0                                     AIS
          EQ     LBM5                                                    AIS
                                                                         AIS
*         BOUNDARY MARKER BREAKS SUBSEQUENCE.  FILE BM WORD FOR SEQUENCE AIS
*         JUST SCANNED (FOLLOWING).                                      AIS
                                                                         AIS
 LBM1     LX6    D.BMP-D.TYP-1                                           AIS
          IX7    X6+X6                                                   AIS
          BX4    -X7*X6                                                  AIS
          BX0    -X6+X7                                                  AIS
          MI     X4,LBM5     IF TY[DIW] = II                             AIS
          SA3    A5+2        R1I = DIN + 2 ;  RIW = [R1I] 
          UX4    B2,X3
          SB5    B2-OC.EOS
          NZ     B5,LBM1A    IF OC[R1W] .NE. OC.EOS 
          SX4    X3 
          NZ     X4,LBM5     IF IH[RIW] .NE. 0   */ OPT=2 EOS 
  
 LBM1A    MI     X0,LBM2     IF TY[DIW] .NE. III
          SB5    B2-OC.JIN                                               AIS
          NZ     B5,LBM5     IF OC[RIW] .NE. OC.JIN                      AIS
                                                                         AIS
 LBM2     SX6    B3                                                      AIS
          SA3    MRF                                                     AIS
          SB7    B3+B3                                                   AIS
          IX7    X3-X6                                                   AIS
          SB7    B7+B3                                                   AIS
          SB3    B0          NRF = 0                                     AIS
          PL     X7,LBM3     IF MRF .GE. NRF                             AIS
          SA6    A3          MRF = NRF                                   AIS
                                                                         AIS
 LBM3     LX2    BM.MRWP                                                 AIS
          SB5    B7+X1                                                   AIS
          SX7    B4                                                      AIS
                                                                         AIS
*         FOR EACH *RF* DEF WE WILL ALLOCATE *MOD* FOR ALL USES PLUS     .NO.ID.
*         3 (FOR THE DEF, SA AND RS).                                    .NO.ID.
                                                                         AIS
          SA0    A0+B5       MMOD = MMOD + TUSES + 3*NRF                 AIS
          LX6    BM.NRFP                                                 AIS
          BX2    X6+X2                                                   AIS
          LX7    BM.PP                                                   AIS
          BX6    X7+X2                                                   AIS
          SA1    O.SEQ                                                   AIS
          SA6    A5+5        LI = DIN + 5 ;  [LI] = BMW(NRF,PLINK,MAXW)  AIS
          SB5    X1                                                      AIS
          MX2    0           MAXW = 0                                    AIS
          SB4    A6-B5       PLINK = LI - O.SEQ                          AIS
          MX1    0           USES = 0                                    AIS
          ZR     X5,LBM0     IF DINW = 0   */ IF I = 0                   AIS
          EQ     LBM5                                                    AIS
                                                                         AIS
 LBM4     LX6    D.RFP-D.BMP                                             AIS
          BX7    X6 
          ZR     X5,LBM1     IF DINW = 0   */ BOS                        AIS
          LX7    D.BMP-D.^DP
          PL     X7,LBM5     IF D[DIW]     */ POSSIBLE DEF
          MI     X6,LBM1     IF BM[DIW]                                  AIS
                                                                         AIS
 LBM5     BX6    X5          DIW = DINW                                  AIS
          SA5    A5-4        I = I - 1 ;  DIN = DIN - 4 ;  DINW = [DIN]  AIS
          MX0    -D.REGWL                                                AIS
          LX6    -D.REGWP                                                AIS
          BX4    -X0*X6      REG = REGW[DIW]                             AIS
          IX7    X2-X4                                                   AIS
          PL     X7,LBM6     IF MAXW .GE. REG                            AIS
          BX2    X4          MAXW = REG                                  AIS
                                                                         AIS
 LBM6     LX6    59-D.RFP+D.REGWP                                        AIS
          PL     X6,LBM4     IF ^RF[DIW]                                 AIS
                                                                         AIS
*         *RF* DEFINITION FOUND.  CONSIDER AS POSSIBLE CANDIDATE.        AIS
                                                                         AIS
          LX6    1+D.RFP-D.USESP                                         AIS
          MX0    -D.USESL                                                AIS
          SB3    B3+B1       NRF = NRF + 1                               AIS
          BX4    -X0*X6                                                  AIS
          IX1    X1+X4       TUSES = TUSES + USES[DIW]                   AIS
          LX6    D.USESP+59-D.RFP                                        AIS
          EQ     LBM4                                                    AIS
 BDU      EJECT              BDU
**        BDU - BUILD DEF-USE TABLE.                                     AIS
*         PERFORM FORWARD SCAN TO CONSTRUCT DUT FOR SUBSEQUENCE.         .NO.ID.
*         THE BCT IS ALSO FORMED, OF *RF* DEFINITIONS.  FINALLY, THE PBT AIS
*         IS FORMED OF B-REG ASSIGNMENTS INCOMING WITH THE SEQUENCE.     AIS
*                                                                        AIS
*         ENTRY  B2 - RIF, LOC OF R1 OF FIRST INS. IN SEQ.               AIS
*                B3 - RIL, LOC OF R1 OF INS. MARKING END OF BLOCK.       AIS
*                A0 - O.SEQ                                              AIS
*                                                                        AIS
*         EXIT   A0 - PRESERVED.                                         AIS
                                                                         AIS
 BDUA     BFMW   D,(PRS,RJRS,PI),59-D.RFP 
  
 BDU      ROUTINE                                                        AIS
          SB2    B2-4        R1I = R1F - 4                               AIS
          SA1    O.DUT                                                   AIS
          SB7    X1          DUI = O.DUT                                 AIS
                                                                         AIS
 BDU1     SB2    B2+4        R1I = R1I + 4                               AIS
          MX0    -D.USESL                                                AIS
          SA1    B2+2        DI = R1I + 2 ;  DIW = [DI]                  AIS
          EQ     B2,B3,BDU   IF R1I = R1L                                AIS
          SX5    B7          II = DUI                                    AIS
          LX5    DP.IIP                                                  AIS
          LX1    -D.USESP                                                AIS
          SX6    B7          NI = DUI                                    AIS
          SA2    B2          R1W = [R1I]
          LX6    DP.NIP 
          BX3    -X0*X1      U = USES[DIW]
          BX7    X6+X5
          SA7    A1+B1       LI = DI + 1 ;  [LI] = DPW(II,NI) 
          UX0    B6,X2       OCI = OC[R1W]
          LX1    D.USESP+59-D.^DP 
          MI     X1,BDU2     IF ^D[DIW] 
          BX0    X1 
          SB7    B7+X3       DUI = DUI + U
          LX0    D.^DP-D.RFP
          PL     X0,BDU2     IF ^RF[DIW]
          SA3    BDUA 
          BX0    X3*X0
          NZ     X0,BDU2     IF (PRS,RJRS,PI)[DIW]
                                                                         AIS
*         FILE *RF* DEFINITION IN BCT.                                   AIS
                                                                         AIS
          SA4    L.BCT                                                   AIS
          SA3    O.BCT                                                   AIS
          MX0    -R1.RIL                                                 AIS
          SB5    X4 
          LX2    -R1.RIP                                                 AIS
          BX6    -X0*X2                                                  AIS
          LX6    BC.RIP      RID = RI[R1W]                               AIS
          SA6    X3+B5       BCT(L.BCT) = BCW(RID)
          SX7    B5+B1
          LX2    R1.RIP                                                  AIS
          SA7    A4          L.BCT = L.BCT + 1                           AIS
                                                                         AIS
 BDU2     LX1    1+D.^DP+58-D.TYP 
          IX7    X1+X1                                                   AIS
          MI     X1,BDU6     IF TY[DIW] .GE. III                         AIS
          MI     X7,BDU5     IF TY[DIW] = II                             AIS
                                                                         AIS
*         TYPE I INSTRUCTION.                                            AIS
                                                                         AIS
          LX1    2+D.TYP-D.TYIOP                                         AIS
          MX6    -D.TYIOL                                                AIS
          SB5    B6-OC.PLD                                               AIS
          BX7    -X6*X1                                                  AIS
          MX0    -R1.RIL                                                 AIS
          SA3    =XTYIOM+X7                                              AIS
          UX6    B4,X3                                                   AIS
          BX3    X6*X2                                                   AIS
          AX4    B4,X3                                                   AIS
          BX3    -X0*X4                                                  AIS
                                                                         AIS
 BDU3     ZR     X3,BDU4     IF OPN = 0                                  AIS
          RJ     EDU         ENTER USE IN DUT                            AIS
          MI     B5,BDU4     IF OCI .LT. OC.PLD                          AIS
          ZR     B5,BDU3A    IF OCI = OC.PLD                             AIS
          NE     B5,B1,BDU4  IF OCI .NE. OC.PST                          AIS
          ZR     B4,BDU4     IF RI MOD                                   AIS
                                                                         AIS
*         SHORT USE. SET SU BIT IN DUT ENTRY.                            AIS
                                                                         AIS
 BDU3A    MX3    1                                                       AIS
          LX3    1+DU.SUP                                                AIS
          BX7    X7+X3       SU[DUW] = 1                                 AIS
          SA7    A7                                                      AIS
                                                                         AIS
 BDU4     AX4    R1.RIL                                                  AIS
          ZR     X4,BDU1     IF NO OPERANDS REMAIN                       AIS
          SB4    B4+R1.RIL                                               AIS
          BX3    -X0*X4      OPN =                                       AIS
          EQ     BDU3                                                    AIS
                                                                         AIS
*         TYPE II INSTRUCTION.                                           AIS
                                                                         AIS
 BDU5     LX1    1+D.TYP-D.PIP                                           AIS
          PL     X1,BDU1     IF ^PI[DIW]                                 AIS
                                                                         AIS
*         RS OR DEF INSTRUCTION.                                         AIS
                                                                         AIS
          BX3    X2 
          LX1    D.PIP-D.^DP
          PL     X1,BDU5A    IF D[DIW]
          LX3    59-R1.SOP-SO.LKP 
          MI     X3,BDU5A    IF MOD(LK[SO[R1W]],2) .NE. 0  */ ODD TYPE
  
*         ENTER RI OF TYPE 0 OR 2 RS IN DUT.
  
          MX0    -R1.RIL
          R=     B4,R1.RIP
          LX2    -R1.RIP
          BX3    -X0*X2 
          RJ     EDU
          SX6    B3-B2
          LX6    DU.USEP
          IX7    X6+X7       USE[DUT] = R1L-O.SEQ */ USED UNTIL NEXT BM 
          SA7    A7 
          LX2    R1.RIP 
  
 BDU5A    MX0    -SO.RTL
          LX2    -R1.SOP-SO.RTP                                          AIS
          BX3    -X0*X2                                                  AIS
          SB6    X3-RT.BR                                                AIS
          NZ     B6,BDU1     IF NOT B-REG LOCK                           AIS
          LX2    SO.RTP-SO.RNP                                           AIS
          BX3    -X0*X2                                                  AIS
          ZR     X3,BDU1     IF LOCK OF B0                               AIS
          SB5    X3                                                      AIS
                                                                         AIS
*         ENTER PRE-ASSIGNED B-REG IN PBT.                               AIS
                                                                         AIS
          SA5    L.PBT                                                   AIS
          SA4    O.PBT                                                   AIS
          LX2    SO.RNP+R1.SOP-R1.RIP                                    AIS
          MX0    -R1.RIL                                                 AIS
          SB4    X5                                                      AIS
          BX6    -X0*X2      RID = RI[R1W]                               AIS
          LX6    PB.RIP                                                  AIS
          LX3    PB.RNP                                                  AIS
          BX6    X6+X3                                                   AIS
          LX2    R1.RIP+59-R1.SOP-SO.LKP-1                               AIS
          IX3    X2+X2       LT = LK[SO[R1W]]                            AIS
          SX5    LU.INF      LU = .INF.                                  AIS
          AX3    59                                                      AIS
          BX1    -X3*X5      IF (LT .EQ. 1  .OR.  LT .EQ. 3) LU = 0      AIS
          LX1    PB.LUP                                                  AIS
          BX6    X6+X1                                                   AIS
          SA6    X4+B4       PBT(L.PBT) = PBW(RN,PID,LU)                 AIS
          SX7    B4+B1                                                   AIS
          SA7    A5          L.PBT = L.PBT + 1                           AIS
                                                                         AIS
*         SET FLAG (BIT IN FLF) TO TAKE REG OFF MARKET AT END OF         .NO.ID.
*         SUBSEQUENCE IF THIS WAS A TYPE 2 LOCK.                         .NO.ID.
                                                                         AIS
          MX0    1                                                       AIS
          BX3    -X3*X2                                                  AIS
          BX2    X0*X3                                                   AIS
          SA4    FLF                                                     AIS
          LX2    B5                                                      AIS
          BX6    X4+X2                                                   AIS
          SA6    A4                                                      AIS
          EQ     BDU1                                                    AIS
                                                                         AIS
*         TYPE III OR IV INSTRUCTION.                                    AIS
                                                                         AIS
 BDU6     MI     X7,BDU1     IF TY[DIW] = IV                             AIS
          LX1    1+D.TYP-D.^DP                                           AIS
          SX0    RMSK                                                    AIS
          PL     X1,BDU7     IF D[DIW]                                   AIS
          BX3    X0*X2                                                   AIS
          ZR     X3,BDU7     IF RI[R1W] .LT. 2                           AIS
          SB4    0           SC = 0                                      AIS
          RJ     EDU         ENTER USE OF RI IN DUT                      AIS
                                                                         AIS
 BDU7     SA4    B2+B1       R2 = R1I + 1 ;  R2W = [R2]                  AIS
          LX4    -IH.RFP                                                 AIS
          BX3    X0*X4                                                   AIS
          ZR     X3,BDU1     IF RF[R2W] .LT. 2                           AIS
          SB4    -IH.RFP     SC = IH.RFP                                 AIS
          RJ     EDU         FILE USE OF RF IN DUT                       AIS
                                                                         AIS
*         MARK SHORT USE.                                                AIS
                                                                         AIS
          MX3    1                                                       AIS
          LX3    1+DU.SUP                                                AIS
          BX7    X7+X3       SU[DUW] = 1                                 AIS
          SA7    A7                                                      AIS
          EQ     BDU1                                                    AIS
 EDU      SPACE  3,14        EDU
**        EDU - ENTER USE IN DUT.                                        AIS
*         ENTRY  X3 - R-NUMBER OF USED OPERAND.                          .NO.ID.
*                B2 - R1I, *SEQ* INDEX OF USE.                           .NO.ID.
*                B4 - SC, SHIFT COUNT .                                  AIS
*                A0 - O.SEQ                                              AIS
*                                                                        AIS
*         EXIT   A0, B4 PRESERVED 
*                A7,X7 - ADDRESS AND CONTENTS OF UPDATED *DUT* WORD.
*                                                                        AIS
*         USES - X3,X5,X6,X7,A3,A5,A6,A7,B6                              AIS
                                                                         AIS
 EDU      ROUTINE                                                        AIS
          SB6    A0                                                      AIS
          SX6    B2-B6       USE = R1I - O.SEQ                           AIS
          SB6    A0+3                                                    AIS
          SA5    X3+B6       LD = O.SEQ + DEF + 3                        AIS
          LX5    -DP.NIP                                                 AIS
          LX3    DU.DEFP                                                 AIS
          LX6    DU.USEP                                                 AIS
          BX7    X6+X3                                                   AIS
          SX3    B1                                                      .NO.ID.
          PX7    B4,X7                                                   AIS
          SA7    X5          DUT(NI[LD]) = DUW(0,SC,USE,DEF)             AIS
          IX6    X5+X3       NI[LD] = NI[LD] + 1                         AIS
          LX6    DP.NIP                                                  AIS
          SA6    A5                                                      AIS
          LX5    DP.NIP-DP.IIP
          SB6    X5 
          SX3    A7-B6
          ZR     X3,EDU      IF II[LD] = NI[LD] - 1  */ FIRST USE 
  
*         ENSURE THAT THE LAST USE IS THE MAX.  REVERSAL CAN HAPPEN 
*         WHEN USES > 1 AND AN EARLY USE *PRS* TO A UJP LOCK *RS*.
  
          SA5    A7-B1
          LX7    -DU.USEP 
          SX6    X7 
          LX5    -DU.USEP 
          SX3    X5 
          IX3    X6-X3
          LX7    DU.USEP
          PL     X3,EDU      IF USE[NI] \ USE[NI-1] 
          LX5    DU.USEP
          SA7    A7-B1       SWAP( DUT(NI) , DUT(NI-1) )
          BX7    X5 
          SA7    A7+B1
          EQ     EDU                                                     AIS
 IUP      EJECT              IUP
**        IUP - INSTALL USE INFORMATION IN PBT.                          AIS
*                                                                        AIS
*         ENTRY  A0 - O.SEQ                                              AIS
*                                                                        AIS
*         EXIT   A0 - PRESERVED.                                         AIS
                                                                         AIS
 IUP      ROUTINE                                                        AIS
          SA1    L.PBT                                                   AIS
          SA2    O.PBT                                                   AIS
          SB7    X2                                                      AIS
          SA1    X1+B7       PBC = PBT(L.PBT+1)                          AIS
          SB7    A0+3                                                    AIS
          MX0    -PB.RNL                                                 AIS
          EQ     IUP2                                                    AIS
                                                                         AIS
 IUP1     LX1    PB.LUP                                                  AIS
          LX2    PB.PP       P = PI                                      AIS
          BX6    X1+X2       P[PBW] = P                                  AIS
          SA6    A1+                                                     AIS
                                                                         AIS
 IUP2     SA1    A1-B1       PBC = PBC - 1 ;  PBW = [PBC]                AIS
          ZR     X1,IUP      IF PBC = PBT(0)                             AIS
          LX1    -PB.RNP                                                 AIS
          BX3    -X0*X1                                                  AIS
          SA2    PBI+X3-1    PI = PBI(RN[PBW]) ;  PIW = [PI]             AIS
          BX4    X1                                                      AIS
          LX2    59-PI.NAP                                               AIS
          MI     X2,IUP2     IF NA[PIW]                                  AIS
          LX2    1+PI.NAP+PB.PP            P = PI                        AIS
          SX6    A1                                                      AIS
          LX1    PB.RNP-PB.LUP                                           AIS
          SA6    A2          P[PI] = PBC                                 AIS
          SX3    X1                                                      AIS
          NZ     X3,IUP1     IF LU[PBW] .NE. 0                           AIS
                                                                         AIS
*         INSTALL LAST USE IN PBT ENTRY FOR TEMP LOCKS.                  AIS
                                                                         AIS
          LX4    PB.RNP-PB.RIP                                           AIS
          SA3    X4+B7       LI = O.SEQ + RI[PBW] + 3 ;  LIW = [LI]      AIS
          LX3    -DP.NIP                                                 AIS
          SA4    X3-1        DUC = DUT(NI[LIW]-1) ;  DUW = [DUC]         AIS
          LX4    -DU.USEP                                                AIS
          SX3    X4                                                      AIS
          BX1    X1+X3       LU[PBW] = USE[DUW]                          AIS
          EQ     IUP1                                                    AIS
 IXU      EJECT              IXU
**        IXU - INSTALL EXTENDED USE SPAN IN BCT MEMBERS.                AIS
*                                                                        AIS
*         ENTRY  A0 - O.SEQ                                              AIS
*                                                                        AIS
*         EXIT   X4 - SMAXW ,  MAX REGW OVER EXTENDED USE OF ALL         AIS
*                CANDIDATES.                                             AIS
*                A0 - PRESERVED.                                         AIS
                                                                         AIS
 IXU      ROUTINE                                                        AIS
          SA1    O.BCT                                                   AIS
          SA2    L.BCT                                                   AIS
          MX6    0                                                       AIS
          SB6    X2                                                      AIS
          BX4    X4-X4       SMAXW = 0                                   AIS
          SA6    X1+B6       BCT(L.BCT+1)=0                              AIS
          SA1    X1-1        N = 0                                       AIS
          SB6    A0+3        OLS = O.SEQ + 3                             AIS
          SB5    A0+2        ODS = O.SEQ + 2                             AIS
          EQ     IXU3                                                    AIS
                                                                         AIS
 IXU1     IX3    X4-X7                                                   AIS
          PL     X3,IXU2     IF SMAXW \ MAXR                             AIS
          BX4    X7          SMAXW = MAXR                                AIS
                                                                         AIS
 IXU2     LX1    BC.RIP                                                  AIS
          BX3    X6+X1                                                   AIS
          LX7    BC.MRWP                                                 AIS
          BX6    X3+X7                                                   AIS
          SA6    A1                                                      AIS
                                                                         AIS
 IXU3     SA1    A1+B1       N = N + 1 ; BCN = BCT(N) ;  BCW = [BCN]     AIS
          ZR     X1,IXU      IF N .GT. L.BCT                             AIS
          LX1    -BC.RIP                                                 AIS
          SA5    B6+X1       LN = OLS + RI[BCW] ;  LNW = [LN]            AIS
          LX5    -DP.NIP                                                 AIS
          SB2    X5          UEN = NI[LNW]                               AIS
          LX5    DP.NIP-DP.IIP                                           AIS
          SB3    X5          UI = USN = II[LNW]                          AIS
          MX6    0           LXU = 0                                     AIS
                                                                         AIS
 IXU4     SA2    B3          UIW = [UI]                                  AIS
          LX2    -DU.USEP                                                AIS
          SA5    B6+X2       LU = OLS + USE[UIW] ;  LUW = [LU]           AIS
          SB3    B3+B1       UI = UI + 1                                 AIS
          LX5    -DP.NIP                                                 AIS
          SA2    X5-1        XU = DU(NI[LUW]-1) ;  XUW = [XU]            AIS
          LX2    -DU.USEP    XUI = USE[XUW]                              AIS
          SX5    X2                                                      AIS
          IX7    X6-X5                                                   AIS
          PL     X7,IXU5     IF XUI .LE. LXU                             AIS
          BX6    X5          LXU = XUI                                   AIS
                                                                         AIS
 IXU5     NE     B3,B2,IXU4  IF UI .NE. UEN                              AIS
          SX7    B0          MAXR = 0                                    AIS
          MX0    -D.REGWL                                                AIS
          SB3    X6+B5       DJE = ODS + LXU                             AIS
          LX6    BC.LXUP                                                 AIS
          SB2    X1+B5       DJI = DJS = ODS + RI[BCW]                   AIS
                                                                         AIS
 IXU6     GT     B2,B3,IXU1  IF DJI .GT. DJE                             AIS
          SA2    B2          DJW = [DJI]                                 AIS
          LX2    -D.REGWP                                                AIS
          BX3    -X0*X2      RW = REGW[DJW]                              AIS
          IX5    X7-X3                                                   AIS
          SB2    B2+4        DJI = DJI + 4                               AIS
          PL     X5,IXU6     IF MAXR .GE. RW                             AIS
          BX7    X3          MAXR = RW                                   AIS
          EQ     IXU6                                                    AIS
 ABR      EJECT              ABR
**        ABR - ASSIGN B REGISTERS.                                      AIS
*         SCAN BCT, ASSIGNING AS MANY CANDIDATES AS POSSIBLE.            AIS
*                                                                        AIS
*         ENTRY  A0 - O.SEQ                                              AIS
*                                                                        AIS
*         EXIT   A0 - PRESERVED.                                         AIS
                                                                         AIS
 ABR      ROUTINE                                                        AIS
          SETZERO  CAT,7                                                 AIS
          SA1    O.BCT                                                   AIS
          SA2    L.BCT                                                   AIS
          SB6    X1                                                      AIS
          SA6    X2+B6       BCT(L.BCT+1) = 0                            AIS
          SA1    B6-B1       BI = O.BCT - 1                              AIS
                                                                         AIS
 ABR1     SA1    A1+B1       BI = BI + 1 ;  BIW = [BI]                   AIS
          ZR     X1,ABR      IF BIW = 0    */ END OF BCT                 AIS
  
*         AVOID ASSIGNING CANDIDATE WITH NO SHORT USES. 
  
          SB5    A0+3 
          BX6    X1 
          LX6    -BC.RIP
          SA2    X6+B5
          LX2    -DP.NIP
          SB4    X2          LP = DUT(NI[RI[BIW]+3])
          LX2    DP.NIP-DP.IIP
          SB3    X2          IP = DUT(II[RI[BIW]+3])
  
 ABR1A    EQ     B3,B4,ABR1  IF IP = LP 
          SA2    B3          IPW = [IP] 
          LX2    59-DU.SUP
          SB3    B3+B1       IP = IP + 1
          PL     X2,ABR1A    IF ^SU[IPW]
          LX1    -BC.MRWP                                                AIS
          SX0    X1-TRW                                                  AIS
          MI     X0,ABR1     IF MRW[BIW] .LT. TRW                        AIS
  
*         DONT ASSIGN CANDIDATE WHOSE FINAL USE IS 60-BIT.
  
          SA2    B4-B1       FP = LP - 1 ;  FPW = [FP]
          LX2    59-DU.SUP
          PL     X2,ABR1     IF ^SU[FPW]
          LX1    BC.MRWP-BC.RIP                                          AIS
          SB4    X1                                                      AIS
          SB3    -B4         -RIN  = -RI[BIW]                            AIS
          SB6    B0          RN = 0                                      AIS
          SB7    7                                                       AIS
                                                                         AIS
*         SCAN FOR AVAILABLE B REGISTER WITH NO LOCKS IN FUTURE.         AIS
                                                                         AIS
 ABR2     SA2    PBI+B6      PN = PBI(RN+1) ;  PNW = [PN]                AIS
          EQ     B6,B7,ABR3  IF RN = 7
          LX2    59-PI.NAP                                               AIS
          SB6    B6+B1       RN = RN +1                                  AIS
          MI     X2,ABR2     IF NA[PNW]    */  RN OFF MARKET             AIS
          NZ     X2,ABR2     IF P[PNW] .NE. 0  */ LOCK IN FUTURE         AIS
          SA4    CAT+B6-1    CN = CAT(RN) ;  CNW = [CN]                  AIS
          LX4    -CA.LXUP                                                AIS
          SX7    X4+B3                                                   AIS
          MI     X7,ABR7     IF LXU[CNW] .LT. RI[BIW]                    AIS
          NE     B6,B7,ABR2  IF RN .NE. 7                                AIS
                                                                         AIS
*         LOOK FOR AVAILABLE B REGISTER WITH A *HOLE* IN FUTURE LOCKS    AIS
*         WHICH WILL ACCOMODATE THIS CANDIDATE/S EXTENDED-USE SPAN.      AIS
                                                                         AIS
 ABR3     SB6    B0          RN = 0 
                                                                         AIS
 ABR4     SA2    PBI+B6      PN = PBI(RN+1) ;  PNW = [PN]                AIS
          EQ     B6,B7,ABR1  IF RN = 7    */ CANT ASSIGN THIS CANDIDATE  AIS
          SB6    B6+B1       RN = RN + 1                                 AIS
          LX2    59-PI.NAP                                               AIS
          MI     X2,ABR4     IF NA[PNW]    THIS REG OFF MARKET           AIS
          SA4    CAT+B6-1    CN = CAT[RN] ;  CNW = [CN]                  AIS
          LX4    -CA.LXUP                                                AIS
          SX7    X4+B3                                                   AIS
          PL     X7,ABR4     IF LXU[CNW] .GE. RIN                        AIS
          LX2    1+PI.NAP-PI.PP  PL=P[PNW]                               AIS
                                                                         AIS
 ABR5     SA3    X2          PBJ = PL ;  PBW = [PBJ]                     AIS
          LX3    -PB.PP                                                  AIS
          SX2    X3          PL = P[PBW]                                 AIS
          LX3    PB.PP-PB.LUP                                            AIS
          SX7    X3+B3                                                   AIS
          PL     X7,ABR6     IF LU[PBW] .GT. RIN                         AIS
          BX6    X2 
          SA6    A2          P[PNW] = PL
          NZ     X2,ABR5     IF PL .NE. 0                                AIS
                                                                         AIS
*         NO LOCKS TO THIS REG PAST THIS CANDIDATE.                      AIS
                                                                         AIS
          EQ     ABR7                                                    AIS
                                                                         AIS
*         DETERMINE IF NEXT LOCK IS FAR AHEAD ENOUGH TO LEAVE *HOLE*     AIS
*         FOR THIS CANDIDATE/S SPAN.                                     AIS
                                                                         AIS
 ABR6     SA1    A1 
          LX1    -BC.LXUP 
          SX4    X1                                                      AIS
          LX3    PB.LUP-PB.RIP                                           AIS
          SX5    X3                                                      AIS
          IX7    X5-X4                                                   AIS
          MI     X7,ABR4     IF LXU[BIW] .GT. RI[PBW]  */ OVERLAP        AIS
                                                                         AIS
*         ASSIGNMENT MADE.  GENERATE MODS TO ISSUE SA-RS AND MODIFY      AIS
*         INSTRUCTIONS WHICH USE CANDIDATE IN 60-BIT CAPACITY.           AIS
                                                                         AIS
 ABR7     SA2    A1          BIW = [BI]                                  AIS
          BX6    X2                                                      AIS
          SA6    CAT+B6-1    CAT(RN) = BIW                               AIS
          RJ     ISA         ISSUE SA-RS TO MOD                          AIS
          RJ     IUM         ISSUE USE MODIFICATIONS                     AIS
                                                                         AIS
*         DECREMENT MRW OF ALL CANDIDATES FOLLOWING WHICH ARE FULLY      AIS
*         CONTAINED IN THE SPAN OF THE CANDIDATE JUST ASSIGNED.          AIS
                                                                         AIS
          SA2    A1          BJ = BI                                     AIS
          LX2    -BC.LXUP                                                AIS
          SB7    X2                                                      AIS
          SB5    -B7                                                     AIS
          SX1    B1                                                      AIS
                                                                         AIS
 ABR8     SA2    A2+B1       BJ = BJ + 1 ;  BJW = [BJ]                   AIS
          ZR     X2,ABR1     IF BJW = 0    */ END OF BCT                 AIS
          LX2    -BC.LXUP                                                AIS
          SX7    X2+B5                                                   AIS
          PL     X7,ABR8     IF LXU[BJW] .GE. LXU[BIW]  */ OVERLAP       AIS
          LX2    BC.LXUP-BC.MRWP                                         AIS
          SX7    X2                                                      AIS
          ZR     X7,ABR8     IF MRW[BJW] = 0                             AIS
          IX6    X2-X1                                                   AIS
          LX6    BC.MRWP                                                 AIS
          SA6    A2          MRW[BJW] = MRW[BJW] - 1                     AIS
          EQ     ABR8                                                    AIS
 ISA      EJECT              ISA
**        ISA - ISSUE SHORT ADD AND REGISTER STORE.                      AIS
*                                                                        AIS
*         ENTRY  A1 - BI, LOCATION OF BCT ENTRY FOR THIS ASSIGNMENT.     AIS
*                B3 - (-RIN)                                             AIS
*                B6 - RN, REGISTER TO BE ASSIGNED.                       AIS
*                                                                        AIS
*         EXIT   B3 - PRESERVED.                                         AIS
*                B4 - NMA, NEXT ADDRESS IN MOD.                          AIS
*                B7 - RIS, INDEX IN MOD OF SA GENERATED.                 AIS
*                A0 - PRESERVED.                                         AIS
*                A1 - PRESERVED.                                         AIS
                                                                         AIS
 ISA      ROUTINE                                                        AIS
          SA2    O.MLT                                                   AIS
          SA3    L.MLT                                                   AIS
          SA5    O.MOD                                                   AIS
          MX6    0                                                       AIS
          IX7    X2+X3                                                   AIS
          SB2    X5                                                      AIS
          SA6    X7          MLT(L.MLT+1) = 0                            AIS
          SA4    X2          MI = O.MLT ;  MIN = [MI]                    AIS
          SA5    L.MOD                                                   AIS
                                                                         AIS
 ISA1     ZR     X4,ISA2     IF MIN = 0    */ END OF MLT                 AIS
          LX4    -ML.IIP                                                 AIS
          SX7    X4+B3       MIW = MIN                                   AIS
          LX4    ML.IIP-ML.MTIP                                          AIS
          SB5    X4                                                      AIS
          SA4    A4+B1       MI = MI + 1 ;  MIN = [MI]                   AIS
          NZ     X7,ISA1     IF II[MIW] .NE. RIN                         AIS
          MX0    -R1.RIL                                                 AIS
          SA2    B2+B5       TI = O.MOD+MTI[MIW]                         AIS
          BX4    X0*X2                                                   AIS
          SA3    A2+B1                                                   AIS
          BX6    X4+X5       RI[TI] = L.MOD                              AIS
          LX7    X3                                                      AIS
          SA6    X5+B2       [MOD(L.MOD+1)] = [TI]                       AIS
          SA7    A6+B1       [MOD(L.MOD+2)] = [TI+1]                     AIS
          SA2    A3+B1                                                   AIS
          SA3    A2+B1                                                   AIS
          BX6    X2                                                      AIS
          LX7    X3                                                      AIS
          SA6    A7+B1       [MOD(L.MOD+3)] = [TI+2]                     AIS
          SA7    A6+B1       [MOD(L.MOD+4)] = [TI+3]                     AIS
          SA4    A4-B1       MI = MI - 1                                 AIS
          EQ     ISA4                                                    AIS
                                                                         AIS
 ISA2     SA2    L.MLT                                                   AIS
          SX6    X2+B1                                                   AIS
          SA6    A2          L.MLT = L.MLT + 1                           AIS
          MX0    -R1.RIL                                                 AIS
          SA2    A0-B3       R1I = O.SEQ + RIN                           AIS
          SA3    A2+2        DI = R1I + 2                                AIS
          BX7    X0*X2                                                   AIS
          SA2    A3-B1       R2I = DI - 1                                AIS
          BX6    X7+X5       RI = L.MOD                                  AIS
          SX0    100000B                                                 AIS
          LX3    58-D.TYP                                                AIS
          IX4    X3+X3                                                   AIS
          LX0    IH.RFP                                                  AIS
          IX7    X2+X0       RF = RF[R2I] + 100000                       AIS
          BX4    X3+X4                                                   AIS
          MI     X4,ISA3 IF TY[DI] .GT. 1                                AIS
          LX0    R1.RKP-IH.RFP                                           AIS
          IX4    X6+X0                                                   AIS
          LX0    R1.RJP-R1.RKP                                           AIS
          IX6    X4+X0                                                   AIS
                                                                         AIS
 ISA3     SA6    X5+B2                                                   AIS
          SA7    A6+B1                                                   AIS
          LX3    2+D.TYP                                                 AIS
          BX6    X3                                                      AIS
          MX7    0                                                       AIS
          SA6    A7+B1                                                   AIS
          SA7    A6+B1                                                   AIS
                                                                         AIS
 ISA4     MX1    1                                                       AIS
          LX1    1+ML.DELP   DELM = 1                                    AIS
          MX3    2                                                       AIS
          LX3    2+ML.NIP    NIM = 3                                     AIS
          SX4    -B3                                                     AIS
          LX4    ML.IIP      IIM = RIN                                   AIS
          BX6    X1+X3                                                   AIS
          LX5    ML.MTIP     MTIM = L.MOD                                AIS
          BX6    X4+X6                                                   AIS
          BX7    X6+X5                                                   AIS
          LX5    -ML.MTIP                                                AIS
          SA7    A4          [MI] = MLW(0,NIM,IIM,MTIM)                  AIS
                                                                         AIS
          SB7    X5+4        LMN = L.MOD + 4                             AIS
          SB5    OC.SA                                                   AIS
          SX6    B7          RIIN = LMN                                  AIS
          LX6    R1.RIP                                                  AIS
          LX5    R1.RJP      RJN = L.MOD                                 AIS
          BX6    X6+X5                                                   AIS
          MX7    0                                                       AIS
          SB4    B7+B2                                                   AIS
          RJ     SRI                                                     AIS
          SX3    SO.BLOCK                                                AIS
          SX1    B6                                                      AIS
          LX1    SO.RNP                                                  AIS
          BX2    X1+X3                                                   AIS
          LX2    R1.SOP                                                  AIS
          SX7    B7                                                      AIS
          LX7    R1.RIP                                                  AIS
          SB5    OC.RS                                                   AIS
          BX6    X7+X2                                                   AIS
          MX7    0                                                       AIS
          RJ     SRI                                                     AIS
          SX7    B7+8                                                    AIS
          SA7    L.MOD       L.MOD = LMN + 8                             AIS
          EQ     ISA                                                     AIS
 IUM      EJECT              IUM
**        IUM - ISSUE USE MODIFICATIONS.                                 AIS
*                                                                        AIS
*         ENTRY  B3 - (-RIN), MINUS INDEX IN SEQ OF CANDIDATE DEFINITION AIS
*                B4 - NEXT *MOD* STORE ADDRESS.                          AIS
*                B7 - RIS, MOD INDEX OF SA.                              AIS
*                A0 - O.SEQ                                              AIS
*                A1 - BI, BCT ENTRY ADDRESS CORRESPONDING TO CANDIDATE.  AIS
*                                                                        AIS
*         EXIT   A0,A1 - PRESERVED.                                      AIS
                                                                         AIS
 IUMA     VFD    12/0,16/100000B,16/100000B,16/0                         AIS
                                                                         AIS
 IUM0     SA2    IUMB                                                    AIS
          BX6    X2                                                      AIS
          SA6    A3          [UL] = SAVE                                 AIS
                                                                         AIS
 IUM      ROUTINE                                                        AIS
          SB6    A0+3        OLS = O.SEQ + 3                             AIS
          SA3    B6-B3       LI = OLS + RIN ;  LIW = [LI]                AIS
          MX6    0                                                       AIS
          LX3    -DP.NIP                                                 AIS
          SA4    X3          UL = NI[LIW]                                AIS
          BX7    X4          SAVE = [UL]                                 AIS
          SA6    A4          [UL] = 0                                    AIS
          SA7    IUMB                                                    AIS
          LX3    DP.NIP-DP.IIP                                           AIS
          SB2    X3          UI = US = II[LIW]                           AIS
                                                                         AIS
*         MODIFY ALL 60-BIT USES OF CANDIDATE SO THAT THESE USES         AIS
*         ARE NOT CHANGED TO B-REG RI BY MPB.                            AIS
                                                                         AIS
 IUM1     SA3    B2          UIW = [UI]                                  AIS
          ZR     X3,IUM0     IF UIW = 0    */ UI = UL                    AIS
          SB2    B2+B1       UI = UI + 1                                 AIS
          LX3    59-DU.SUP                                               AIS
          MI     X3,IUM1     IF SU[UIW]                                  AIS
          LX3    1+DU.SUP                                                AIS
          BX1    X3                                                      AIS
          LX3    -DU.USEP                                                AIS
          SB6    A0                                                      AIS
          SA2    B6+X3       R1I = O.SEQ + USE[UIW] ;  R1W = [R1I]       AIS
          SA4    O.MLT                                                   AIS
          SA5    L.MLT                                                   AIS
          MX6    0                                                       AIS
          IX7    X4+X5                                                   AIS
          MX0    -R1.RIL                                                 AIS
          SA6    X7          MLT(L.MLT+1) = 0                            AIS
          SA4    X4-1        MI = O.MLT - 1                              AIS
          SB6    X3                                                      AIS
          SB5    -B6         MU = -USE[UIW]                              AIS
          SX6    B7-4        RIM = RIS - 4                               AIS
                                                                         AIS
*         SEARCH FOR *MOD* TO SAME INSTRUCTION.  IF WE FIND ONE,         AIS
*         WE MODIFY THE FIRST INSTRUCTION IN IT.                         AIS
                                                                         AIS
 IUM2     SA4    A4+B1       MI = MI + 1 ;  MIN = [MI]                   AIS
          ZR     X4,IUM3     IF MIN = 0    */ NO *MOD* ENTRY MATCHES     AIS
          LX4    -ML.IIP                                                 AIS
          SX7    X4+B5                                                   AIS
          NZ     X7,IUM2     IF II[MIN] .NE. USE[UIW]                    AIS
                                                                         AIS
*         *MOD* ENTRY TO SAME INSTRUCTION.                               AIS
                                                                         AIS
          SA5    O.MOD                                                   AIS
          LX4    ML.IIP-ML.MTIP                                          AIS
          IX7    X4+X5                                                   AIS
          SA3    X7          MD = O.MOD + MTI[MIN] ; MDW = [MD]          AIS
          SB6    60                                                      AIS
          UX1    B5,X1       RC = SC[UIW]                                AIS
          SB6    B6-B5                                                   AIS
          LX3    B6          RX[Q] # RN[SHIFT(Q,-RC)]                    .NO.ID.
          BX4    X0*X3                                                   AIS
          BX7    X4+X6       RX[MDW] = RIM                               AIS
          LX7    B5                                                      AIS
          SA7    A3                                                      AIS
          EQ     IUM1                                                    AIS
                                                                         AIS
*         NO MATCH.  CREATE NEW *MOD* ENTRY.                             AIS
                                                                         AIS
 IUM3     SA4    A2+2        DI = R1I + 2 ;  DIW = [DI]                  AIS
          LX4    58-D.TYP                                                AIS
          MI     X4,IUM4     IF TY[DIW] .GT. 2                           AIS
          SA3    IUMA 
          IX2    X2+X3       RJ[R1W] = RJ[R1W] + 100000B ;
*                            RK[R1W] = RK[R1W] + 100000B                 AIS
                                                                         AIS
 IUM4     SA5    L.MOD                                                   AIS
          LX4    59-58+D.TYP-D.^DP
          BX7    X5          RII = L.MOD
          PL     X4,IUM5     IF D[DIW]
          BX7    -X0*X2 
          SX7    X7+100000B  RII = RI[R1W] + 100000B
  
 IUM5     BX4    X0*X2
          SB6    60                                                      AIS
          UX1    B5,X1       RC = SC[UIW]                                .NO.ID.
          BX7    X4+X7       RI[R1W] = RII
          SB6    B6-B5                                                   AIS
          LX7    B6                                                      AIS
          BX4    X0*X7                                                   AIS
          BX6    X4+X6       RX[R1W] = RIM                               AIS
          LX6    B5                                                      AIS
          SA2    A2+B1       R2I = R1I + 1                               AIS
          SX4    100000B                                                 AIS
          LX4    IH.RFP                                                  AIS
          BX7    X2+X4                                                   AIS
          SA6    B4                                                      AIS
          SA7    B4+B1                                                   AIS
          SA2    A2+B1       DI = R2I + 1                                AIS
          MX7    0                                                       AIS
          BX6    X2                                                      .NO.ID.
          SA6    A7+B1                                                   AIS
          SA7    A6+B1                                                   AIS
          SB4    A7+B1                                                   AIS
          SX7    X5+4                                                    AIS
          SA7    A5          L.MOD = L.MOD + 4                           AIS
          SA3    L.MLT                                                   AIS
          LX5    ML.MTIP     MTM = L.MOD - 4                             AIS
          MX0    1                                                       AIS
          LX0    1+ML.DELP   DELM = 1                                    AIS
          SA4    O.MLT                                                   AIS
          BX5    X0+X5                                                   AIS
          LX0    ML.NIP-ML.DELP     NIM = 1                              AIS
          SB5    X4                                                      AIS
          BX6    X0+X5                                                   AIS
          LX1    -DU.USEP                                                AIS
          SX5    X1                                                      AIS
          LX5    ML.IIP      IIM = USE[UIW]                              AIS
          BX7    X6+X5                                                   AIS
          SA7    X3+B5       MLT(L.MLT+1) = MLW(DELM,MTM,NIM,IIM)        AIS
          SX6    X3+B1                                                   AIS
          SA6    A3          L.MLT = L.MLT + 1                           AIS
          EQ     IUM1                                                    AIS
 SRI      SPACE  4,18        SRI
**        SRI - STORE R-LIST INSTRUCTION.                                AIS
*         FILE INSTRUCTIONS IN *MOD*.                                    AIS
*                                                                        AIS
*         ENTRY  X6 - R1 WORD, LESS OP-CODE.                             AIS
*                X7 - R2 WORD                                            AIS
*                B4 - NEXT *MOD* STORE ADDRESS.                          AIS
*                B5 - OP-CODE.                                           AIS
*                                                                        AIS
*         EXIT   B4 - INCREMENTED.                                       AIS
*                                                                        AIS
*         USES   A3,A6,A7,X3                                             .NO.ID.
                                                                         AIS
 SRI      ROUTINE 
          PX6    B5,X6                                                   AIS
          SA3    =XF.RDT+B5                                              AIS
          SA6    B4                                                      AIS
          SA7    B4+B1                                                   AIS
          BX6    X3                                                      AIS
          MX7    0                                                       AIS
          SA6    A7+B1                                                   AIS
          SA7    A6+B1                                                   AIS
          SB4    A7+B1                                                   AIS
          EQ     SRI                                                     AIS
                                                                         AIS
          QUAL   *                                                       AIS
                                                                         AIS
 AIS      EQU    /AIS/AIS                                                AIS
 ESR      TITLE  ESR - EXPAND SPECIAL REFERENCES
**        ESR - EXPAND SPECIAL REFERENCES.
* 
*         ESR EXPANDS LEVEL 2/3 AND/OR FORMAL PARAMETER MEMORY REFS 
*         IN A SEQUENCE.  ALL TYPE 3 LOAD, STORE AND SET INSTRUCTIONS 
*         WITH THE SPECIAL PROPERTIES DETERMINED BY *KEY* (X5) ARE
*         REPLACED WITH INDIRECT OR EXPANDED REFS.
* 
*         ENTRY  X5 - KEY, EXPANSION FLAG AS FOLLOWS--
*                     1 = EXPAND F.P. REFERENCES ONLY 
*                     2 = EXPAND LCM REFERENCES ONLY
*                     3 = EXPAND F.P. OR LCM REFERENCES 
*                     4 = EXPAND LCM REFERENCES OR F.P. STT/S . 
*                X6 - SQUEEZE FLAG FOR MPB .
  
          ENTRY  ESRA 
 ESRA     VFD    60/-1       MAKE FP-ONLY CALL ILLEGAL
          VFD    60/=XLEVEL2
          VFD    60/=XFPL2
          VFD    60/=XFPL2
  
 FSR      BSS    1           FIRST SPECIAL REF. (CHAIN HEAD)
 LSF      BSS    1           LOAD/STORE/SET FLAG
 SQF      BSS    1           SQUEEZE FLAG 
 R2W      BSS    1           R2 WORD OF CURRENT INSTRUCTION 
  
 ESR0     SA3    O.MOD
          SB7    X3-1 
          SX6    A7-B7
          SA6    L.MOD
  
 ESR1     SA1    O.SEQ
          SA2    X1 
          UX7    B2,X2
          SA3    F.RDT+B2 
          SA4    SQF
          BX7    X3 
          LX6    X4          (X6) = SQF FOR *MPB* 
          SA7    X1+2        [SEQ+2] = RDT(OC[SEQ]) 
          MI     X6,ESR      IF SQF < 0 
          CALL   MPB         MERGE MODS WITH SEQUENCE 
  
 ESR      ENTRY. ** 
          SA4    ESRA-1+X5
          SA6    SQF
          SA3    X4 
          ZR     X3,ESR1     IF FLAG(MODE) = 0  */ NO SPECIAL REFS
          SA1    TSBA+X5     MASK FOR SR BITS 
          SA4    O.SEQ
          MX7    0
          BX0    X1 
          SA7    X4+2        LOOP TERMINATOR AT D(BOS)
          RJ     MSR         MARK SPECIAL REFS
          ZR     B2,ESR1     IF N.SR = 0
  
          ALLOC  MLT,B2      ALLOC( MLT , N.SR )
          BX2    X1 
          LX1    4
          LX2    2
          IX1    X1+X2
          ALLOC  MOD,X1      ALLOC (MOD, 5*4*N.SR ) 
  
          RJ     GSR         GENERATE SPECIAL REFS
          EQ     ESR0 
 MSR      SPACE  3,14 
**        MSR - MARK SPECIAL REFERENCES.
*         ENTRY  A4,X4 - O.SEQ
*                X0 - MASK OF PERTINENT SPECIAL REF BITS
* 
*         EXIT   B2 = N.SR
*                B3 = (FSR) = POINTS TO S.R. CHAIN IN LINK WORDS
  
 MSRA     BSS    0
          LOC    0
          CON    0
          CON    0
          CON    0
          BFMW   D,(LD,ST)
          LOC    *O 
  
 MSR0     SX6    B3 
          SA6    FSR         FIRST SPECIAL REF LINK ADDRESS 
  
 MSR      ROUTINE            **ENTRY/EXIT** 
          SA5    MSRA-1+X5
          SA2    X4+B1
          SX1    X2          LEN = TXTL[SEQ+1]
          SB2    B0          N.SR = 0 
          IX6    X4+X1
          SB7    X6-2        D(EOQ), I=N.INS
          SA3    B7          DI=D(I)
          SB3    B0          CP = 0 
          SB6    X4 
          SX7    B1 
          LX7    D.FPP
  
 MSR1     ZR     X3,MSR0     IF DI = 0     */ I = 0 
          SB7    B7-4        I = I - 1
          BX4    X0*X3       SRBITS(I+1)
          BX2    X5*X3
          BX1    X2 
          LX2    D.FPP-D.LDP
          LX1    D.FPP-D.STP
          BX2    X2+X1       LDSTI = MSRA(KEY).AND. (LD[DI] .OR. ST[DI])
          BX1    X7*X2
          BX4    -X1*X4      FP[SR[DI]] = FP[SR[DI]] .AND. ^LDSTI 
          SA3    B7          DI=D(I)
          ZR     X4,MSR1     IF NOT SPECIAL REF(MODE) 
          SB2    B2+B1       N.SR = N.SR + 1
          SX6    B3 
          SA6    B7+5        (LINK(I-1)) = CP 
          SB3    A6-B6       CP = LINK(I-1) - O.SEQ 
          EQ     MSR1 
 GSR      SPACE  4,8         GSR
**        GSR - GENERATE SPECIAL REFERENCES.
* 
*         ENTRY  B2 = CHAIN HEAD FOR SPECIAL REFS 
* 
 GSR      ROUTINE            **ENTRY/EXIT** 
          SA2    FSR
          SA1    O.SEQ
          MX7    0
          SB7    X1 
          SB2    X2+B7
          SB3    100000B     OFFSET FOR MPB 
          SA1    O.MOD
          SA7    L.MLT       L.MLT = 0
          SA7    X1+3        A7= FWA - 1 EXPANSION IN MOD 
          SB4    4           RI = 4 
          EQ     GSR3 
  
 GSR1     RJ     ISC         ISSUE SET CODE 
  
 GSR2     RJ     TRE         TERMINATE REF EXPANSION
          SA1    O.SEQ
          SB7    X1+
  
 GSR3     EQ     B2,B7,GSR   IF END OF CHAIN
          SA0    A7          IMA = INITIAL MOD ADDRESS - 1
          SA1    B2-B1       DI = D(I)
          SA3    B2 
          SA2    A1-B1       R2I = DI - 1 
          BX6    X2          R2W = [R2I]
          SA6    R2W
          MX2    -D.LDSTL 
          SB2    X3+B7       I = I + 1
          BX3    X1 
          LX3    -D.LDSTP 
          BX2    -X2*X3 
          BX6    -X2
          SA6    LSF         LOAD/STORE/SET FLAG
          ZR     X6,GSR1     IF NOT LOAD OR STORE 
  
 #DAL     IFNE   .DAL,0      IF LEVEL 2 ALLOWED 
          BX2    X0*X1
          LX2    59-D.L2P 
          PL     X2,GSR4     IF NOT LCM REF 
          RJ     ISC         ISSUE SET
          RJ     IDR         ISSUE DIRECT LCM REF 
          EQ     GSR2 
  
 GSR4     BSS    0
 #DAL     ENDIF 
  
          RJ     IAL         ISSUE ADDRESS LOAD 
          RJ     IRA         ISSUE RA FOR RF
          RJ     IPR         ISSUE PLD/PST
          EQ     GSR2 
 ISC      EJECT              ISC
**        ISC - ISSUE SET CODE. 
* 
*         ISC CONTROLS EXPANSION OF SPECIAL REFERENCES FOR STT INSTRUC- 
*         TIONS.  ALL STT TO FP OR LCM SYMBOLS ARE EXPANDED AS DESIRED. 
*         IN ADDITION, ISC GENERATES ALL CODE PRECEDING THE DRL/DWL 
*         FOR THE EXPANSION OF A LEVEL 2 LOAD OR STORE.  ISC INSURES
*         THAT AN XMT IS GENERATED FOR ANY STT (FP OR LCM=I MODE LCM) 
*         IN WHICH THE LAST OPERATION IS A LOAD.  THIS GUARANTEES THAT
*         A STORE-TO-APLIST MAY FOLLOW. 
* 
*         ENTRY  A1 = ADDRESS OF DESCRIPTOR OF CURRENT SPECIAL REF. 
*                A7 = FWA-1 OF MOD BUFFER TO BE USED FOR EXPANSION. 
*                X1 = DESCRIPTOR
*                X0 = MASK OF SPECIAL (L2 AND/OR FP) BITS DESCRIBING
*                     THE TYPES OF REFS TO BE EXPANDED. 
*                B1 = 1 
*                B3 = 100000B 
*                B4 = NEXT RI NUMBER (UPDATED BY SRI) 
* 
*         EXIT   A0,A1,B1,B2,B3,X0 PRESERVED. 
*                B4 AS LAST UPDATED BY SRI. 
*                EXPANSION FILED IN MOD, WITH A7 UPDATED. 
* 
*         CALLS  SRI, IAL, IRA, ISX.
  
 ISC0     MX2    0
          RJ     SRI         STORE INSTRUCTION
  
 ISC      ROUTINE            **ENTRY/EXIT** 
          BX3    X0*X1
          LX3    59-D.L2P 
          MI     X3,ISC3     IF LCM REF 
          LX3    D.L2P-D.FPP
          PL     X3,ISC      IF NOT FP
  
 ISC2     RJ     IAL         ISSUE ADDRESS LOAD 
          RJ     IRA         ISSUE IA FOR ANY RF
          RJ     ISX         ISSUE STT/XMT
          EQ     ISC
  
 ISC3     SA4    =XDIRECT 
          NZ     X4,ISC5     IF LCM=I MODE
  
 #DAL     IFNE   .DAL,0      IF LEVEL 2 ALLOWED 
          SA4    LSF
          ZR     X4,ISC1     IF  STT LCM
          LX3    D.L2P-D.FPP
          MI     X3,ISC2     IF FP
          RJ     ISI         ISSUE STT INSTRUCTIIN
          EQ     ISC
  
 #DAL     ENDIF 
  
 ISC1     LX3    D.L2P-D.FPP
          MI     X3,ISC2     IF FP
          RJ     ISI         ISSUE STT
          RJ     IMO         ISSUE MASK-OR BIT 59 
          EQ     ISC
  
*         IN LCM=I MODE, ALL LCM REFS ARE EXPANDED IRREGARDLESS OF
*         EXPANSION MODE BECAUSE OF THE ODD MEANING OF THE IH SYMBOL
*         (SCM POINTER CELL ADDRESS). 
  
 ISC5     LX1    59-D.FPP    FP BIT IRREGARDLESS OF MODE
          PL     X1,ISC6     IF NOT FP
          RJ     IAL         ISSUE ADDRESS LOAD 
          EQ     ISC7 
  
*         GENERATE CODE TO LOAD SCM POINTER CELL THAT CONTAINS 21-BIT 
*         RELOCATED LCM ADDRESS AT OBJECT TIME. 
  
 ISC6     SA2    A1-B1       IHINFO(REF)
          LX2    -IH.IHP
          SX7    X2+IH.LCMA  LCMA[IH] = 1  */ INDICATE ADDRESS LOAD 
          SX2    B1 
          SB5    OC.LD
          SX6    B4          RI 
          LX2    R1.INP+1    IN[R1W] = 2   */ UDI = 1 ( LOAD ONLY ) 
          BX6    X2+X6
          MX2    0
          RJ     SRI         ISSUE LD LCM POINTER CELL
  
 ISC7     SA2    A1-B1       IHINFO(REF)
          LX2    -IH.RFP
          MX3    -IH.RFL
          BX4    -X3*X2 
          MX1    -IH.CAL
          LX2    IH.RFP-IH.CAP
          BX3    -X1*X2 
          BX2    X3+X4
          NZ     X2,ISC8     IF RF(REF) .OR. CA(REF) .NE. 0 
          SA4    LSF
          NZ     X4,ISC      IF LD/ST 
          MX1    -R1.RIL
          SA2    A2-B1       R1(REF)
          LX2    -R1.RIP
          BX3    -X1*X2 
          SX6    X3+B3       RI MOD TO SEQ
          SX2    B4-4        RJ = RI(PRED)
          RJ     IXI         ISSUE AN *XMT/SA*
          EQ     ISC
  
 ISC8     SX6    B4          RI 
          ZR     X4,ISC9     IF RF = 0
          SA5    B7+X4       R1P = SEQ(RF)
          SX4    X4+B3       RF = RF + 100000B
          NZ     X3,ISC8A    IF CA " 0
  
          UX5    B5,X5
          SX7    B5-OC.DEF
          NZ     X7,ISC11    IF OC[R1P] " OC.DEF
          LX5    58-R1.SOP-SO.RTP 
          MI     X5,ISC11    IF SORT[R1P] = 2  */ OPERAND IN A X-REGISTER 
  
          LX4    R1.RJP 
          BX6    X6+X4
          MX7    0
          SB5    OC.SA
          EQ     ISC10
  
 ISC8A    SB5    OC.STT 
          LX4    IH.RFP 
          LX3    IH.CAP 
          BX7    X4+X3
          EQ     ISC10
  
 ISC9     LX3    R1.INP 
          BX6    X6+X3
          MX7    0
          SB5    OC.S 
  
 ISC10    MX2    0
          RJ     SRI         STORE STT/S
          SX4    B4-8        RK = RI(LCM ADDRESS LOAD)
  
 ISC11    SX5    B4-4        RJ = RI(LCM ADDRESS LOAD)/RI(S/STT)
          LX4    R1.RKP-R1.RJP
          BX6    X4+X5
          LX6    R1.RJP 
          SA2    LSF
          SX3    B4          RI = NRI 
          NZ     X2,ISC12    IF EXPANDING LCM LD/ST 
          SA3    A1-2        R1(REF)
          MX4    -R1.RIL
          LX3    -R1.RIP
          BX5    -X4*X3      RI(REF)
          SX3    X5+B3       RI MOD TO SEQ
  
 ISC12    LX3    R1.RIP 
          BX6    X6+X3
          MX7    0
          SB5    OC.IA
          EQ     ISC0 
 ISI      SPACE  4,8         ISI
**        ISI - ISSUE STT INSTRUCTION.
*         ISSUE STT TO MOD USING SEMANTIC INFO OF CURRENT INSTRUCTION 
*         BEING EXPANDED. 
  
 ISI      ROUTINE 
          SA2    A1-B1       IHINFO(REF)
          SB5    OC.STT 
          MX6    -IH.RFL
          LX2    -IH.RFP
          BX3    -X6*X2      R = RF[R2] 
          LX7    X2          R2W = [R2] 
          ZR     X3,ISI1     IF R = 0 
          SX6    B3 
          IX7    X6+X7       RF[R2W] = RF[R2W] + 100000B
  
 ISI1     LX7    IH.RFP      IHINFO(STT)
          SX6    B4          RI 
          SA2    A1-2        R1 WORD
          LX2    -R1.INP
          SX3    X2 
          LX3    R1.INP 
          BX6    X3+X6       TRANSFER UDT ORDINAL TO STT
          SX3    B1 
          LX3    D.FPP
          BX2    X3*X1       FP = FP[DESCR] 
          RJ     SRI
          EQ     ISI
 IAL      SPACE  4,8         IAL
**        IAL - ISSUE ADDRESS LOAD. 
  
 IAL0     RJ     SRI         STORE INSTRUCTION
  
 IAL      ROUTINE            **ENTRY/EXIT** 
          SX6    B4          RI 
          SB5    OC.LD
          SX7    B1 
          LX7    R1.INP+1    IN[R1W] = 2   */ UDI = 1 ( LOAD ONLY ) 
          BX6    X6+X7
          LX7    IH.RFP-R1.INP-1   RF[R2W] = 1  */ A0 
          SA2    A1-B1       IHINFO 
          MX3    -IH.IHL
          LX2    -IH.IHP
          BX2    -X3*X2      IH(IHINFO) 
          SX5    X2-2 
          LX5    IH.CAP 
          BX7    X7+X5
          MX2    0
          NZ     X5,IAL0     IF CA = 0
          MX2    2
          LX2    2+D.SZP     INDICATE SIZE = 1
          EQ     IAL0 
  
 IRA      SPACE  4,8         IRA
**        IRA - ISSUE *IA* OR *IS* FOR RF IF EXISTANT 
  
 IRA      ROUTINE            **ENTRY/EXIT** 
          SA3    A1-B1       IHINFO(REF)
          MX2    -IH.RFL
          LX3    -IH.RFP
          BX4    -X2*X3      RF(REF)
          ZR     X4,IRA      IF RF[REF] = 0 
  
          LX3    IH.RFP+59-IH.SIAP
          PL     X3,IRA0     IF ^SIA[REF]  */ NOT INIT STT THAT IS FP&LCM 
  
          SB5    OC.SA                 */ OUTPUT *SA* TO REMOVE BIT 59
          SX3    B4-4 
          LX3    R1.RJP 
          SX6    B4 
          MX2    0
          BX6    X3+X6
          MX7    0
          RJ     SRI
  
 IRA0     SB5    OC.IA
          SA3    O.SEQ
          IX1    X3+X4
          SA3    X1+2        DI = SEQ(RF) + 2 ;  DIW = [DI] 
          LX3    59-D.PIP 
          MX7    0
          PL     X3,IRA3     IF ^PI[DIW]
  
*         GENERATE SA IF RF DEFINED BY DEF TO B-REGISTER. 
  
          SA3    X1          R1 = SEQ(RF) ;  R1W = [R1] 
          LX3    59-R1.SOP-SO.RTP-1 
          MI     X3,IRA1     IF RT[SO[R1W]] .EQ. 2  */ DEF TO X-REG 
          SB5    OC.SA
          SA3    =XDIRECT 
          SA1    A1 
          ZR     X3,IRA1     IF DIRECT = 0  */ LCM = D
          LX1    59-D.L2P 
          PL     X1,IRA1     IF ^L2[DIREF]
  
*         LCM = I LEVEL 2 REF.  GENERATE INTERVENING SA FOLLOWED BY IA. 
  
          SX5    X4+B3       RJ =  RF + 100000B 
          SX4    B4 
          LX5    R1.RJP 
          BX6    X4+X5
          SX2    B0 
          RJ     SRI         SRI ( SA, B4, RJ ) 
          SB5    OC.IA
          SX2    B4-8 
          LX2    R1.RJP-R1.RKP
          SX5    B4-4 
          EQ     IRA2 
  
 IRA1     SX2    B4-4 
          LX2    R1.RJP-R1.RKP
          SX5    X4+B3       RF MOD TO SEQ
  
 IRA2     BX5    X2+X5
          LX5    R1.RKP 
          SX4    B4          RI 
          LX4    R1.RIP 
          BX6    X4+X5       R1 = TYPE1(RI,RI-4,RF) 
          SX2    B0 
          RJ     SRI         SRI(  IA/IS RI,RI-4,RF ) 
          SA3    A6 
          SX2    B1 
          LX2    D.USIP 
          BX6    X2+X3
          SA6    A3          USI[D] = 1 
          EQ     IRA
  
 IRA3     SA3    X1          R1W = SEQ(RF)
          BX4    X3 
          AX3    R1.OCP 
          SX6    X3-OC.XMTC-2000B 
          NZ     X6,IRA1     IF OC[R1W] " OC.XMTC 
  
*         A(C-I) , GENERATE *IS* AND SET RF.MV BIT IN *RF*
  
          LX4    -R1.RJP
          MX2    -R1.RIL
          SB5    OC.IS
          BX4    -X2*X4      RF = RJ[R1W]  */ XMTC PRED 
          SA5    R2W
          LX2    IH.RFP 
          SX6    X4+RF.MV 
          BX5    X2*X5
          LX6    IH.RFP 
          BX6    X5+X6       RF[R2W] = RF + RF.MV 
          SA6    A5 
          EQ     IRA1 
 ISX      SPACE  4,8         ISX
**        ISX - ISSUE STT OR XMT. 
*         GENERATE CODE FOR SET TO FORMAL PARAMETER ADDRESS FOLLOWING 
*         ADDRESS LOAD. 
  
 ISX0     MX2    0
          RJ     SRI         STORE INSTRUCTION
  
 ISX      ROUTINE            **ENTRY/EXIT** 
          SA2    A1-B1       IHINFO(REF)
          MX1    -IH.CAL
          LX2    -IH.CAP
          BX3    -X1*X2      CA(REF)
          SX2    B4-4        RP = RI(ADDRESS LOAD)
          SX6    B4          RI = NRI 
          SA5    LSF
          NZ     X5,ISX1     IF EXPANDING LD OR ST
          SA4    A2-B1       R1(REF)
          MX1    -R1.RIL
          LX4    -R1.RIP
          BX1    -X1*X4      RI(REF)
          SX6    X1+B3       RI = RI(REF) + 100000B 
  
 ISX1     LX6    R1.RIP 
          ZR     X3,ISX2     IF CA .EQ. 0 
          LX2    IH.RFP      RF = RP
          SB5    OC.STT 
          LX3    IH.CAP 
          BX7    X2+X3
          NZ     X5,ISX0     IF EXPANDING LD OR ST
          SA1    A1          DI = D(I)
          LX1    59-D.L2P 
          PL     X1,ISX0     IF ^L2[DI] 
          SX6    B4          RI = NRI 
          LX6    R1.RIP 
          MX2    0
          RJ     SRI         STORE INSTRUCTION
          RJ     IMO         ISSUE MASK-OR BIT 59 
          EQ     ISX
  
 ISX2     NZ     X5,ISX      IF EXPANDING LOAD OR STORE 
          RJ     IXI         ISSUE A *SA/XMT* 
          EQ     ISX
 IXI      SPACE  3           IXI
**        IXI - ISSUE *XMT/SA* INSTRUCTION
  
 IXI      ROUTINE 
          SA1    A1 
          SB5    OC.XMT 
          LX1    59-D.PRSP
          PL     X1,IXI1     IF ^PRS[DI]
          SA3    A1+2        R1RS = DI + 2
          LX3    58-R1.SOP-SO.RTP 
          MI     X3,IXI1     IF SORT [R1RS] = 2  */ RS TO AN X-REG
          SB5    OC.SA
 IXI1     LX2    R1.RJP 
          SX7    B0 
          BX6    X2+X6
          MX2    0
          RJ     SRI
          EQ     IXI
 IPR      SPACE  4,8         IPR
**        IPR - ISSUE PARAMETER REFERENCE.
  
 IPR0     RJ     SRI         STORE INSTRUCTION
  
 IPR      ROUTINE            **ENTRY/EXIT** 
          SA2    A1-2        R1(REF)
          LX2    -R1.RIP
          SA3    LSF
          SB5    OC.PLD+2+X3 OC.PLD/PST 
          MX3    -R1.RIL
          BX4    -X3*X2      RI(REF)
          SX2    X4+B3       RI(PLD/PST) = RI(REF) + 100000B
          LX2    R1.RIP 
          SX4    B4-4 
          LX4    R1.RJP 
          BX6    X2+X4
          SA5    R2W         IHINFO = R2W 
          SX1    B3          OFFSET FOR MPB 
          LX1    IH.RFP 
          IX7    X1+X5       IHINFO(PLD/PST)
          MX2    0
          LX5    -IH.CAP
          SX4    X5 
          NZ     X4,IPR0     IF CA .NE. 0 
          MX2    2
          LX2    2+D.SZP     INDICATE TOGGLE SIZE FIELD 
          EQ     IPR0 
 IDR      SPACE  4,8         IDR
**        IDR - ISSUE DIRECT LCM REFERENCE. 
  
 #DAL     IFNE   .DAL,0      IF LEVEL 2 ALLOWED 
  
 IDR      ROUTINE            **ENTRY/EXIT** 
          SX5    B3          100000B FOR MPB
          SA2    R2W         IHINFO = R2W 
          SA4    LSF
          SB5    OC.DRL+2+X4 OC.DRL/DWL 
          LX5    IH.RFP 
          IX7    X2+X5       RF MOD TO SEQ
          MX3    -R1.RIL
          SA2    A1-2        R1I = DI - 2 
          SX5    IH.LCM 
          LX5    IH.IHP 
          IX7    X7+X5
          LX2    -R1.RIP
          BX4    -X3*X2      RI(REF)
          SX5    B4-4        RJ = RI(PRED)
          SX4    X4+B3       RI MOD TO SEQ
          LX4    R1.RIP 
          LX5    R1.RJP 
          BX6    X4+X5
          MX2    0
          RJ     SRI
          EQ     IDR
  
 #DAL     ENDIF 
 IMO      SPACE  4,8         IMO
**        IMO - ISSUE MASK-OR BIT 59. 
*         IMO GENERATES THE CODE NECESSARY TO INSURE THAT BIT 59 IS 
*         SET FOR LCM APLIST ENTRIES AND LOCF/S.  THIS CODE IS NEVER
*         REQUIRED IN LCM=I MODE SINCE 60-BIT ARITHMETIC ALWAYS 
*         PRESERVES BIT 59.  WE ALSO DO NOT NEED THIS CODE IN DIRECT
*         MODE IF NO SET HAS BEEN PERFORMED ON THE ADDRESS QUANTITY,
*         FOR EXAMPLE LOCF(FP). 
  
 IMO      ROUTINE 
          SB5    OC.FMA 
          SX5    B1 
          LX5    R1.INP 
          SX4    B4          RI = NRI 
          LX4    R1.RIP 
          BX6    X4+X5
          MX7    0
          SX2    B0 
          RJ     SRI         STORE FMA(NRI,1) 
  
          SA4    A1-2        R = R1(I)
          MX1    -R1.RIL
          LX4    -R1.RIP
          SB5    OC.OR
          BX5    -X1*X4      RIR = R1F(R) 
          SX6    X5+B3       R1N = RIR + 100000B
          LX6    R1.RIP 
          SX3    B4-4        RJ = NRI - 4 
          SX4    X3-4        RK = NRI - 8 
          LX3    R1.RJP 
          BX6    X6+X3
          LX4    R1.RKP 
          BX6    X6+X4
          MX7    0
          SX2    B0 
          RJ     SRI         STORE OR(RIN,NRI-4,NRI-8)
          EQ     IMO
 SRI      SPACE  4,8         SRI
**        SRI - STORE R-LIST INSTRUCTION. 
*         ENTRY  B5 = OP-CODE 
*                X6 = RLIST1 WORD 
*                X7 = RLIST2 WORD 
*                X2 = 0 OR 3S D.SZP IF SIZE FIELD IS TO BE RESET
  
 SRI      ROUTINE            **ENTRY/EXIT** 
          PX6    B5,X6
          SB4    B4+4        RI = RI + 4
          SA6    A7+B1
          SA7    A6+B1
          SA3    =XF.RDT+B5 
          BX6    X2-X3       TOGGLE SIZE FIELD IF REQUESTED 
          SA6    A7+B1
          MX7    0
          SA7    A6+B1
          EQ     SRI
 TRE      SPACE  4,8         TRE
**        TRE - TERMINATE REF EXPANSION.
  
 TRE      ROUTINE            **ENTRY/EXIT** 
          SB7    A0          IMA
          SX4    A7-B7
          ZR     X4,TRE      IF NO EXPANSION
  
          SA3    O.SEQ
          SB6    X3+2 
          SX5    A1-B6       R1 INDEX IN TXT
          ERRMI  ML.NIP-2 
          LX4    ML.NIP-2    NI = N.WORDS EXPANSION/4 
          LX5    ML.IIP 
          SA3    O.MOD
          BX1    X4+X5
          SB6    X3-1 
          SX6    B7-B6       INDEX IN MOD 
          LX6    ML.MTIP
          MX7    1
          LX7    1+ML.DELP
          BX3    X1+X6
          SA4    L.MLT
          BX6    X7+X3
          SA3    O.MLT
          IX5    X3+X4
          SA6    X5          MLT= 
          SX6    X4+B1
          SA6    A4          L.MLT = L.MLT + 1
          EQ     TRE
 OPR      TITLE  F.RDT - RLIST INSTRUCTION DESCRIPTOR TABLE 
          LIST   -X,-R,-F 
          ECHO   2,A=(I,II,III,IV,BSSZ),B=(0,1,2,3,1) 
          NOREF  A
 A        EQU    B
  
 TESTM    IFNE   TEST,0 
          MACRO  OPR,NAME,SS
 TY       SET    SS 
          CON    TY+1+4L_NAME 
          ENDM
  
          USE    /OPRS/ 
*CALL     OPRDEFS 
          USE    *
 TESTM    ENDIF 
          LIST   -R,X,F 
 OPR      SPACE  4
**        OPR - DEFINE *OPR* MACRO TO FORM RLIST DESCRIPTOR TABLE 
  
*         DEFINE VALUES FOR USE IN *OPR* MACRO CALLS
  
 MC       SET    34-15
          IFEQ   .CPU,76,1
 MC       SET    37-15
  
          ECHO   2,X=(COMM,USI,),V=(1,1,0)
          NOREF  .X 
 .X       =      V
  
*         SYMBOL DEFINED IF INSTRUCTION DOESN"T DEFINE AN RI
  
          ECHO   2,N=(JUMP,UJUMP,STORE,STORE2,REGST,ECJUMP) 
          NOREF  Y.N
 Y.N      EQU    1
  
          ECHO   2,N=(LOAD,STORE,JUMP,UJUMP,LOAD2,STORE2,ECJUMP),_______
,V=(4,2,1,1,14B,12B,20B)
          NOREF  Z.N
 Z.N      EQU    V
  
*         BITS SET FOR XMT , CON SHIFTS AND PSEUDO INSTRUCTION FIELDS 
  
          ECHO   2,N=(SXT,XMT,KLS,KRS,EOQ,BOS,EOS,DAR,RS,DEF,LAB,ENT),__
,V=(4,4,2,2,1,1,1,1,1,1,1,1)
          NOREF  S.N
 S.N      EQU    V
  
          MACRO  OPR,NAM,SS 
          ECHO   1,X=(BD,LSJ,XSP) 
 X        SET    0
 TYPE     SET    SS 
 S        GETARG 23,4,(SS)
 CO       SET    ."S" 
*                                  UNSAFE INSTRUCTION 
 S        GETARG 29,3,(SS)
 CO       SET    CO+4*."S"
*                            FUNCTION UNIT AND TIMES
 S        MICRO  MC,2,$SS$
 FT       SET    "S" 0
 JFT      SET    FT/FT
 S        GETARG 40,6,(SS)
 FU1      SET    0
          IFC    NE,//"S"/,1
 FU1      SET    /FUNIT/"S" 
 FU2      SET    FU1
*                            SECOND FUNCTIONAL UNIT ( 6600 )
 #MD      IFEQ   .CPU,74                                         ?6600
 S        GETARG 47,5,(SS)
          IFC    NE,/"S"//,3
 FU2      SET    FU1+1
          IFC    NE,/"S"/FU1/,1 
 FU2      SET    /FUNIT/"S" 
 #MD      ENDIF                                                  '6600
*                            INSTRUCTION SIZE 
 S        GETARG 54,2,(SS)
 PA       SET    "S" 1
 PA       SET    PA/15
 S        GETARG 63,6,(SS)
          IFC    EQ,/"S"/ZEROP/,1 
 CO       SET    2
*                            LOAD / STORE / JUMP BITS 
          IF     DEF,Z."S",1
 LSJ      SET    Z."S"
*                            ^D - NO RI / RI NOT A DEF
          IFEQ   TYPE,3,2 
 BD       SET    1
          ELSE   2
          IF     DEF,Y."S",1
 BD       SET    1
*                            BOUNDARY MARKER
 S        GETARG 70,1,(SS)
          IFC    NE,/"S"//,1
 BD       SET    BD+2 
          IF     DEF,S.NAM,1
 XSP      SET    S.NAM
* 
  VFD 2/TYPE,5/FT,2/1,4/FU1,4/FU2,2/BD,8/LSJ,3/XSP,2/JFT,3/CO,2/PA,23/
 OPR      ENDM
 RDT      SPACE  3
**        F.RDT - RLIST INSTRUCTION DESCRIPTOR TABLE
  
          ENTRY  F.RDT
 F.RDT    BSS    0
          LOC    0
*CALL     OPRDEFS 
          LOC    *O 
          LIST   R
 SST      TITLE  SST - SHELL SORT TABLE 
***       SST - SHELL SORT TABLE. 
* 
*                SST SORTS A TABLE USING A SHELL SORTING TECHNIQUE. 
*         THE TABLE IS SORTED IN PLACE INTO ASCENDING ORDER ON THE KEY
*         KEY(X) = XOR(SHIFT(KEYMASK&X,KEYSHIFT),UPDOWN)
* 
*                TIME(SST) @ TIME(RADIX) FOR N @ 250/575, B6 "0/=0
* 
*         ENTRY  (B7) = ADDRESS OF TABLE TO BE SORTED 
*                (B6) = SHIFT COUNT FOR EXTRACTED KEY PRIOR TO COMPARE
*                (X0) = MASK TO EXTRACT KEY FROM ENTRY
*                (X1) = NUMBER OF ELEMENTS IN ARRAY.
*                (X5) = ASCENDING/DESENDING SORT MASK ( +0 / -0 ) 
* 
*         USES   X - ALL
*                B - 2, 3, 4, 5, 6
*                A - 1, 2, 6, 7.
  
 SST0     SA2    B2          I = I + 1
          SA7    B5-B4
          EQ     B2,B3,SST4  IF I > N 
  
 SST1     BX7    X0*X2
          SA1    B2+B4       J = I - K
          LX6    B6,X7
          SB5    B2+B4
          BX3    X6-X5       SI = KEY(T(I)) 
          SB2    B2+1 
          LX7    X2 
  
 SST2     BX2    X0*X1
          LX6    B6,X2
          BX2    X6-X5       SJ = KEY(T(J)) 
          IX6    X3-X2
          PL     X6,SST0     IF ELEMENTS IN ORDER 
          BX6    X1 
          SA1    B5+B4       J = J - K
          SA6    B5-B4       T(J+K) = T(J)
          SB5    B5+B4
          GE     B5,B7,SST2  IF J \ 0 
          SA2    B2          I = I + 1
          SA7    B5-B4       T(J+K) = S 
          LT     B2,B3,SST1  IF I @ LENGTH
  
 SST4     AX4    1           K = K/2
          SB4    X4 
          SA2    B7-B4       I = K
          SB2    B7-B4
          NZ     X4,SST1     IF K " 0 
 SST      ENTRY.
          MX4    12 
          NX6    B2,X1       K = 2**FIX(LOG2(LENGTH))+1 
          SB1    1
          SB3    B7+X1       (B3) = LWA + 1 
          AX4    B2,X4
          NZ     B6,SST4     IF SHFTC " 0 
  
          QUAL   SHFTC=0
  
 SST0     AX4    1
          SB4    X4          K = K/2
          SA2    B7-B4
          SB2    B7-B4       I = K
          NZ     X4,SST2     IF K " 0 
          EQ     SST
  
 SST1     SA2    A2+B1       I = I + 1
          SA7    B5-B4       T(J+K) = S 
          EQ     B2,B3,SST0  IF I > N 
  
 SST2     BX6    X0*X2
          SA1    B2+B4       J = I - K
          LX7    X2          S = T(I) 
          SB5    B2+B4
          BX3    X6-X5       SI = KEY(T(I)) 
          SB2    B2+1 
          BX2    X0*X1
  
 SST3     BX2    X2-X5
          IX6    X3-X2
          PL     X6,SST1     IF ELEMENTS IN ORDER 
          LX6    X1 
          SA1    B5+B4
          SA6    B5-B4       T(J+K) = T(J)
          SB5    B5+B4       J = J - K
          BX2    X0*X1
          GE     B5,B7,SST3 
          SA2    A2+B1       I = I + 1
          SA7    B5-B4
          LT     B2,B3,SST2  IF I @ N 
          EQ     SST0 
  
          QUAL
 SHL      TITLE  SHL - SHELL SORT 
***       SHL - SHELL SORT FOR 1 WORD/ENTRY TABLES
*         INPLACE SORT OF TABLE INTO ASCENDING ORDER
* 
*                TIME(SHL) @ TIME(RADIX) FOR N @ 1650 
* 
*         ENTRY  (X1) = N = TABLE LENGTH
*                (B7) = TBL = = FWA OF ARRAY TO BE SORTED 
* 
*         EXIT   (B3) = LWA+1 OF TABLE
*                (B7) = FWA 
* 
*         USES   X - 1, 2, 3, 4, 6, 7 
*                B - 2, 3, 4, 5 
*                A - 1, 2, 6, 7 
  
 SHL1     SA2    A2+B1       I = I + 1
          SA7    B5-B4       T(J+K) = S 
          EQ     B2,B3,SHL4  IF I > N 
  
 SHL2     SA1    B2+B4       J = I - K
          LX7    X2          S = T(I) 
          SB5    B2+B4
          SB2    B2+B1
  
 SHL3     IX3    X2-X1
          BX6    X1 
          PL     X3,SHL1     IF ELEMENTS IN ORDER 
          SA1    A1+B4
          NO
          SA6    B5-B4       T(J+K) = T(J)
          SB5    B5+B4       J = J - K
          GE     B5,B7,SHL3  IF J \ 0 
          EQ     SHL1 
  
 SHL4     AX4    1
          SB4    X4          K = K/2
          SA2    B7-B4       I = K
          SB2    B7-B4
          NZ     X4,SHL2     IF K " 0 
  
 SHL      ENTRY.
          MX4    12 
          SB1    1
          NX6    B2,X1       K = 2**(FIX(LOG2(N))+1)
          SB3    B7+X1       (B3) = LWA+1 
          AX4    B2,X4
          EQ     SHL4 
 TABLES   TITLE  PASS 2 TABLES
          USE    // 
 F.MEM    BSS    1           FWA OF WORKING STORAGE 
          USE    0
  
**        TABLE - GENERATE MANAGED TABLE. 
* 
*         TABLE  TNAME,EQUIV
*         ENTRY  *TNAME* = TABLE NAME.
*                *EQUIV* = EQUIVALENT TABLE NAME.  THIS ALLOWS CERTAIN
*                            TABLES TO BE USED BY DIFFERENT PROCESSORS. 
*         EXIT   *O.TNAM* IS NAME OF WORD CONTAINING TABLE FWA. 
*                *L.TNAM* IS NAME OF WORD CONTAINING THE TABLE LENGTH.
*                            *Z.TNAM* IS THE TABLE NUMBER 
  
          PURGMAC TABLE 
          MACRO  TABLE,TNAM,EQUIV 
          ENTRY  O.TNAM,L.TNAM,Z.TNAM 
T         IFC    EQ,/EQUIV//
 Z.TNAM   EQU    *-FTAB 
 O.TNAM   CON    F.MEM
 TABLES   RMT 
          ORG    LTAB+Z.TNAM
 L.TNAM   CON    0
 TABLES   RMT 
 TABNAM   RMT 
          ORG    NAMTAB+Z.TNAM
          DATA 10H TNAM 
 TABNAM   RMT 
T         ELSE
 Z.TNAM   EQU    Z.EQUIV
 O.TNAM   EQU    O.EQUIV
 TABLES   RMT 
 L.TNAM   EQU    L.EQUIV
 TABLES   RMT 
 TABNAM   RMT 
          ORG    NAMTAB+Z.TNAM
          DATA   10H TNAM EQUIV 
 TABNAM   RMT 
T         ENDIF 
          ENDM
 TABLES   SPACE  3
**        PASS 2 MANAGED TABLE DEFINITIONS
  
 FTAB     BSS    0           FWA VECTOR FOR TABLE MANAGER 
  
 BLK      TABLE              BLOCKS ( OPT=2 ONLY )
  
 TXT      TABLE              RLIST INSTRUCTIONS 
 GST      TABLE  TXT         GRAPH STRUCTURE TABLE
  
 RND      TABLE              R-NUMBER DEFINITION TABLE ( *SQZ* )
 TREE     TABLE  RND         DEPENDENCY TREE / SUCCESSOR INDEX TABLE
  
 PIT      TABLE              POSTED INSTRUCTIONS
  
 OTI      TABLE              OT. INFO 12/P(OT. ORD),30/0,18/RI IN OT. 
 MLT      TABLE  OTI         MOD LIST INDEX TABLE 
  
 MOD      TABLE              MODIFICATIONS ( INSTRUCTIONS ) 
  
 CFT      TABLE              CONTROL FLOW TABLE ( EDGES ) 
  
 BST      TABLE              BLOCK STATUS INFORMATION 
* BIT     =      BST         ( PHASE 1 OF OPT=2 ) 
  
 PSI      TABLE              POST STORE INFORMATION ( *GPO/GRA* ) 
  
 RXI      TABLE              REGION EXIT INFORMATION ( *GPO/GRA* )
  
 RCT      TABLE              REGISTER CANIDATE TABLE ( *GRA* )
  
 TET      TABLE              TEMP EQUIVALENCE TABLE ( CODE MOTION ) 
  
 IOL      TABLE              I/O AP LIST PARAMETER ORDINALS ( OPT=2 ) 
 IIT      TABLE  IOL         INCREMENT INFORMATION ( OPT=2 )
  
 VDT      TABLE              VARDIM INFO
  
 APL      TABLE              AP LISTS 
  
 UDI      TABLE              USE/DEF INDEX TABLE
  
 ALS      TABLE              24/,36/CA,IH OF ACTIVE LOOP *CV"S* 
  
 TEND     TABLE              DUMMY TABLE FOR TABLE MANAGER
          BSS    0
 NTAB     EQU    *-FTAB      TOTAL NUMBER OF TABLES 
          SPACE  3
**        REMAINDER OF TABLE MANAGER STORAGE
  
 LTAB     BSS    0           TABLE LENGTHS
 TABLES   HERE
  
 MU       ENTRY. 0           MEMORY USED
 LM       ENTRY. F.MEM       LOW MEMORY ADDRESS ( FWA WORKING STORAGE ) 
 TN       CON    NTAB        NUMBER OF MANAGED TABLES 
          BSS    4           SCRATCH TO SAVE - X0 , X5 , X1 , A0
 PL       CON    0           PREVIOUS LENGTH OF REQUESTING TABLE
 TO       ENTRY. TOV         ADDRESS OF TABLE OVERFLOW PROCESSOR
 INT.P2M  ENTRY.             */ FIELD LENGTH AT THE BEG.OF PASS2
 MX.BLN   ENTRY.
 TOBA     ENTRY.
 TOBB     BSS    1
 TOV      SPACE  3
**        TOV - TABLE OVERFLOW PROCESSOR
  
          ENTRY  TOV
 TOV      BSS    0
          SB5    -B5
          SX1    B5+2000B    WR = NO.OF WORDS REQUESTED 
          PRINT  TOV,(* TOV CALLS MOREFL,WR=*Z7),(X1) 
          CALL   MOREFL 
          PL     X7,/TBLM/ATS9
 .T       IFNE   TEST,0                                    * TEST MODE *
          SA5    ATS= 
          LX5    30 
 TOV      SNAP   FTAB,TO
 .T       ENDIF                                            * TEST MODE *
  
 TOV1     SA1    =7LTBL-OVF 
          CALL   PUNT        ISSUE AN ERROR MESSAGE AND QUIT
 TOB      SPACE  3,14 
**        TOB - OVERFLOW PROCESSING FOR PASS2,OPT2
* 
*         ENTRY (B5) = - NO.OF WORDS NEEDED 
* 
*         TOB ATTEMPTS TO OBTAIN NEEDED WORDS BY DECREASING BLK TABLE 
*         IF IT IS AT LEAST 1.5 TIMES THE MAX.BASIC BLOCK SIZE,ELSE 
*         TOB CALLS MOREFL TO GET ADDIT.SPACE BY EXTENDING FIELD
*         LENGTH. IF NO FL AVAIL.,COMPILATION IS ABORTED
  
          ENTRY  TOB
 TOB      SA2    =XMX.BLN 
          SA3    =XM.BBL
          AX2    1           X2 = MX.BLN/2
          BX1    X3 
          AX1    1
          IX1    X1+X3       X1 = 1.5*M.BBL 
          IX4    X2-X1
          PL     X4,TOB1     IF MX.BLN/2 > 1.5*M.BBL
          BX2    X1 
  
*         MIN.BLK = MAX(MX.BLN/2,1.5*M.BBL) 
  
 TOB1     SB5    -B5         WN = NO.OF WORDS NEEDED
          PRINT  TOB,(*  NO.OF WORDS NEEDED,MIN.BLK = *2Z7),(B5,X1) 
          SA3    L.BLK
          SX1    B5+200B     WR = WN+200B */ WORDS TO BE REQUESTED
          IX4    X3-X2       WA = L.BLK - MIN.BLK */ WORDS AVAIL.IN BLK 
          SB2    B1          SPECIAL PROC.BY DMB IF MOREFL NOT CALLED 
          IX2    X4-X1
          BX6    X1 
          SB3    A0 
          ZR     B3,TOB1A    IF ALLOC BLK 
          PL     X2,TOB2     IF WA GT WR
  
 TOB1A    BSS    0
          CALL   MOREFL      MOREFL(X6) = WG */ WORDS GRANTED IN NEW FL 
          PL     X7,/TBLM/ATS9    IF WG > WR
  
          IX6    X1-X6       WR = WR-WG 
          SB2    B0          STAND.PROC BY DMB IF MOREFL CALLED 
  
*         GET REMAINING NEEDED SPACE BY REDUCING *BLK* SIZE 
  
 TOB2     SA2    =XMX.AVS 
          IX1    X6-X2       WD = WR - MX.AVS */ WORDS TO BE DUMPED 
          SB2    X1 
          LE     B2,B0,TOB3  IF WD .LE. ZERO
          SA6    TOBA        SAVE WR
          PRINT  TOB,(*  TOB CALLS  DMB ; WDS,SP.FLG=*2Z7),(X1,B2)
          CALL   DMB         DUMP BLOCKS TO FREE WD WORDS 
*         DMB(X2) = WFL */ NO. OF WORDS BY MOREFL 
          NZ     X1,TOV1     IF X1 " 0 */ CANNOT DUMP ENOUGH BLOCKS 
          SA1    TOBA        RELOAD WR
          IX6    X1-X2       BLK.DECR = WR - WFL
          MI     X6,TOB4     IF BLK.DECR @ 0
  
*         DECREASE BLOCK TABLE SIZE BY BLK.DECR 
  
 TOB3     SA1    L.BLK
          IX7    X1-X6
          SA7    A1          L.BLK = L.BLK - WR 
          PRINT  TOB,(*  NEW BLK SIZE,DIFFERENCE =*2Z7),(X7,X6) 
 TOB4     CALL   CGB         COLLECT FREE SPACE AT THE END OF BLK 
          EQ     /TBLM/ATS9 
  
  
**        GET MORE MEMORY FROM THE SYSTEM 
* 
*         ENTRY (X1) = WN ,  NO.OF WORDS NEEDED 
* 
*         EXIT   (X1) = WN
*                (X6) = WG , NO. OF WORDS GRANTED 
*                (X7) = WG - WN 
  
 MOREFL   ENTRY.
          PRINT  MOREFL,(*  WN =*Z7),(X1) 
          SA2    =XMAX.FL    MXFL = MAX. FL WE CAN POSSIBLY GET 
          SA3    =XCP.AFLS   CFL = FL CURRENTLY USED
          AX2    30 
          IX6    X2-X3       WA = NO. OF WORDS AVAILABLE IN MXFL
          MX7    44 
          ZR     X6,MOREFL   IF WA = 0 */ MAX FL USED ALREADY 
          SB3    X6 
          MX7    -6 
          IX2    X1-X7
          BX2    X7*X2       ROUND WN TO NEXT 100B
          SB2    X2+1000B 
          GE     B2,B3,MFL1 
          SX6    B2          WR = MIN(WA,WN+1000B) */ NO OF WDS REQ.
  
 MFL1     IX7    X6+X3
          LX7    30 
          SA7    =XGT1
          BX7    X1 
          SA7    TOBB 
          PRINT  MOREFL,(* WA,WR =*2Z7),(B3,X6) 
          MEMORY SCM,GT1,RGL
          SA2    GT1
          SA3    CP.AFLS     OFL = OLD FL 
          AX2    30          NFL = NEW FL 
          IX0    X2-X3       WG = NO. OF WORDS GRANTED
          BX6    X2 
          SA6    A3          CP.AFLS = NEW FL 
          PRINT  MOREFL,(*  NEW FL,WG =*2Z7),(X6,X0)
          RJ     AST         */ ADJUST SPECIAL TABLES 
          SA1    TOBB 
          BX6    X0          (X6) = NO.OF WORDS GRANTED */ EXIT PAR.
          IX7    X0-X1
          EQ     MOREFL 
 CWS=     SPACE  3,14 
**        CWS= - CALCULATE WORKING STORAGE SIZE 
* 
*         EXIT   (X6) = CURRENT WORKING STORAGE SIZE
*                (X7) = MAXIMUM WORKING STORAGE SIZE
  
 CWS=     ENTRY.
          SA1    LM 
          SA2    O.TEND 
          SA3    =XCP.AFLS
          SA4    MAX.FL 
          AX4    30 
          IX6    X2-X1       CWS = O.TEND - LM
          IX7    X4-X3
          IX7    X7+X6       MWS = MAX.FL - CP.ALFS + CWS 
          EQ     CWS= 
 AFL      SPACE  3,14 
**        AFL - ADJUST *FL* AT END OF PASS 2 PROCESSING TO REDUCE IT
**        TO ITS VALUE AT THE BEGINNING OF PASS 2.
 AFL      ENTRY.
          SA1    =XCP.AFLS
          SA2    INT.P2M
          AX2    30 
          IX0    X2-X1
          BX6    X1 
          SA6    =XPR.MXFL   PR.MXFL = CP.AFLS
          PRINT  AFL,(* END OF PASS2,CP.AFLS,CHANGE=*2Z7),(X1,X0) 
          ZR     X0,AFL      IF CURRENT FL = INT.P2 FL
  
          RJ     AST         MOVE SPECIAL TABLES DOWN 
          MEMORY SCM,INT.P2M,RCL   REDUCE FL TO INITIAL VALUE 
          SA5    INT.P2M
          SA1    CP.AFLS
          AX5    30 
          SX6    X5 
          SA6    A1          CP.AFLS = INT.P2M
          SX0    X1-100000B 
          MI     X0,AFL            IF F < 100 000B
  
*         FL NEEDED \ 100 000B ISSUE A DAYFILE MESSAGE
  
          CALL   COD
          LX6    12 
          SX5    2R  -2RB 
          IX6    X6-X5
          SA2    =XPROGNAM
          SA3    =3R
          BX7    X2+X3
          SA6    AFLA+1 
          LX7    -18
          SA7    A6-B1
          MESSAGE AFLA,,R    MESSAGE( *   PROGNAM  NNNNNNB SCM USED*) 
          EQ     AFL
  
 AFLA     DATA   0,0,18LSCM USED
  
  
**        AST - ADJUST SPECIAL TABLES IN HIGH CORE AND POINTERS TO THEM 
* 
*         ENTRY  (X0) = CHANGE
  
 AST      ENTRY.
          PRINT  AST,(* AST CALLED,CHANGE =*Z7),(X0)
          SA2    O.TEND 
          SA4    =XCP.NFLS   FL-10
          IX7    X4+X0       NEW CP.NFLS = OLD CP.NFLS + CHANGE 
          SA7    A4 
          IX1    X4-X2       WDS = CP.NFLS - O.TEND 
          IX3    X2+X0       TO = O.TEND + CHANGE 
          MOVE   X1,X2,X3 
          SA4    =XO.LOOP 
+         ZR     X4,*+1 
          IX7    X4+X0
          SA7    A4 
          ECHO   3,A=(O.TEND,O.GLT,O.API,O.UDV,O.ENTR,O.EXT,LWAWORK)
          SA4    =X;A 
          IX7    X4+X0
          SA7    A4 
          SA4    12B
          IX7    X4+X0
          SA7    A4 
          SA4    13B
          IX7    X4+X0
          SA7    A4 
          PRINT  AST,(*  NEW O.TEND =*Z7),(O.TEND)
          EQ     AST
 PTC      SPACE  3,14 
 .T       IFNE   TEST,0                                    * TEST MODE *
  
 NAMTAB   BSS    0
 TABNAM   HERE
  
 PTC=     ENTRY. ** 
          PRINT  ,(//*  -- COMPILER TABLE DUMP --*/)
          SX1    4           SET TO *EXECUTIVE IS /PTC=/* 
          RJ     =XSOB       SET OUTPUT BIT FLAGS 
          SX6    1
          SA6    PTCA        INITIALIZE COUNTER 
  
 PTC1     SA1    PTCA 
          SA2    FTAB+X1     GET FWA OF TABLE 
          SA3    LTAB+X1     GET LENGTH OF TABLE
          SA5    NAMTAB+X1   GET NAME OF TABLE
          RJ     PMT
          SA1    PTCA 
          SA2    TN 
          SX6    X1+B1
          SA6    A1          INCREMENT COUNTER
          IX7    X6-X2
          MI     X7,PTC1     IF MORE TABLES 
  
          SA1    =XOPT2 
          ZR     X1,PTC2     IF NOT OPT = 2 
          ECHO   4,TBL=(BIT,SEQ)
          SA2    =XO.TBL
          SA3    =XL.TBL
          SA5    =10H TBL 
          RJ     PMT
  
 PTC2     SA1    L.TXT
          SB2    X1-8 
          LE     B2,PTC3
          SA1    O.TXT
          SA2    X1 
          UX6    B2,X2
          LE     B2,PTC3     IF NO EXPONENT 
          SNAPRL PTC
  
 PTC3     BSS    0
          IFEQ   CP#RM,0,1   WAIT UNTIL OUTPUT FINISHED SINCE *RPV* 
          RECALL =XF.OUT     UNCONDITIONALLY SETS THE COMPLETE BIT. 
          EQ     PTC= 
  
 PTCA     BSS    1
  
 PMT      ROUTINE 
          ZR     X3,PMT      IF LEN = 0 
          PRINT  ,(/*  TABLE -*A10*  FWA,LEN =*2Z6/),(X5,X2,X3) 
          IX3    X2+X3
          MX4    0
          RJ     =XDCM=      DUMP CENTRAL MEMORY
          EQ     PMT
  
 .T       ENDIF                                            * TEST MODE *
 ATS      TITLE  TABLE MANAGER SUBROUTINES
          QUAL   TBLM 
  
**        ATS - ALLOCATE TABLE SPACE. 
* 
*         ENTRY  (A0) = TABLE INDEX.
*                (X1) = CHANGE (+ OR -) TO TABLE SIZE.
* 
*         EXIT   (X1) = CHANGE. 
*                (X2) = FWA OF TABLE. 
*                (X3) = NEW LENGTH OF TABLE.
*                (B6) = PREVIOUS TABLE LENGTH 
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7.
*                B - 2, 3, 4, 5, 7
*                A - 1, 2, 3, 4, 6, 7 
*         RESTORES X0, X5.
*         CALLS  AMU, MVE.
  
 ATSX     SA2    FTAB+A0     (X2) = FWA TABLE 
          SA3    LTAB+A0     (X3) = NEW LENGTH
  
 ATS      PS                 ENTRY/EXIT 
 ATS1     SA2    FTAB+A0     CURRENT FWA
          SA3    LTAB+A0     CURRENT LENGTH 
          SA4    A2+B1       NEXT TABLE FWA 
          IX6    X1+X3       NEW LENGTH 
          SB6    X3          (B6) = PREVIOUS TABLE LENGTH 
          IX7    X4-X2       ROOM BETWEEN TABLES
          SA6    A3          SET NEW LENGTH 
          IX7    X7-X6
          PL     X7,ATSX     RETURN IF ROOM FOR CHANGE
          SX7    X3          SET PREVIOUS LENGTH
  
**        INITIALIZE FOR TABLE MOVE.
  
          SA2    TN          (B2) = NUMBER OF TABLES
          BX6    X0          SAVE (X0)
          SA7    A3 
          SA7    PL          PL = PREVIOUS LENGTH 
          SB2    X2 
          LX7    X5          SAVE (X5)
          SA6    A2+B1
          SA7    A6+B1
          BX6    X1          SAVE (X1)
          SA6    A7+B1
  
**        COMPUTE REMAINING TABLE SPACE.
  
          SB3    B2-B1
          BX4    X1          INCLUDE INCREASE 
 ATS2     SB3    B3-B1       ACCUMULATE ASSIGNED TABLE LENGTHS
          SA3    LTAB+B3
          IX4    X4+X3
          NZ     B3,ATS2     LOOP FOR ALL TABLES
          SA2    LM          SET AVAILABLE LENGTH 
          SA3    FTAB-1+B2
          IX6    X3-X2
          SB4    X4          (B4) = TOTAL ASSIGNED LENGTH 
          IX7    X6-X4
          SB5    X7          (B5) = REMAINING SPACE 
          NG     X7,ATS8     IF NO REMAINING SPACE
  
**        MOVE ALL TABLES DOWN. 
  
          SA1    LM          LOW MEMORY LIMIT 
          SB3    B1 
          LX0    X1 
 ATS3     SA2    FTAB-1+B3   ORIGIN = PREVIOUS FWA
          SA1    LTAB-1+B3   WORD COUNT = LENGTH
          BX3    X0          DESTINATION = NEW FWA
          IX0    X0+X1       NEXT FWA 
          SX7    X3          SET NEW FWA
          BX4    X2-X3       MOVE DIFFERENTIAL
          SA7    A2 
          SB3    B3+B1       COUNT TABLE
          ZR     X4,ATS4     IF NO MOVE REQUIRED
          RJ     MVE= 
 ATS4     NE     B3,B2,ATS3  LOOP FOR ALL TABLES
          SA1    TN+3        INCREMENT SIZE OF REQUESTED TABLE
          SA2    LTAB+A0
          IX6    X2+X1
          SA6    A2 
  
**        REALLOCATE TABLES.
*         ALLOCATE INTERSPACE.  (LA/2N) + ((TL*LA)/2) 
  
          SA1    FTAB-1+B2   (X0) = LWA+1 LAST TABLE
          SB3    B2-B1
          BX0    X1 
 ATS4A    SB6    2           LOWER LIMIT = 2 ( FIRST TABLE INACTIVE ) 
          SB2    B2-1        N = N - 1
 ATS5     SB3    B3-B1       I = I + 1
          SA2    FTAB+B3     FWA(I) 
          SX4    B5          LA (LENGTH AVAILABLE)
          SA1    LTAB+B3     TL (LENGTH OF TABLE) 
          SX3    B2-B1       N  (NUMBER OF TABLES)
          AX5    X4,B1       LA/2 
          IX6    X4/X3       L1 = LA/N
          ZR     B4,ATS6     IF NO TABLES ASSIGNED, L = L2
          SX3    B4          AL (TOTAL ASSIGNED LENGTH) 
          IX7    X5*X1       (LA/2)*TL
          AX6    1           L1 = LA/2N 
          IX7    X7/X3       L2 = (TL*LA)/2 
          IX6    X6+X7       L = L1+L2
          SX1    X1 
 ATS6     IX6    X0-X6       FWA(I+1)-L 
          IX7    X6-X1       FWA(I) = FWA(I+1)-L-TL 
          BX3    X7          DESTINATION = FWA(I) 
          SA7    A2 
          LX0    X7          FWA(I+1) = FWA(I)
          BX4    X2-X3       CHECK MOVE DIFFERENTIAL
          ZR     X4,ATS7     IF NO MOVE REQUIRED
          RJ     MVE=        MOVE TABLE 
 ATS7     GT     B3,B6,ATS5  LOOP 
          RJ     AMU         ACCUMULATE MEMORY USED 
  
**        RESTORE REGISTERS.
  
          SA1    ATSA        COUNT MOVES
          SX6    X1+B1
          SA6    A1 
          SA2    TN+1        RESTORE (X0) 
          SA3    A2+B1       RESTORE (X5) 
          BX0    X2 
          SA4    PL 
          LX5    X3 
          SA1    A3+B1       RESTORE (X1) 
          SB6    X4          (B6) = PREVIOUS LENGTH OF TABLE
          EQ     ATSX        RETURN 
  
 ATS8     SA3    TO          PROCESS TABLE OVERFLOW 
          SX6    A0 
          SB2    X3 
          SA6    TN+4        (A0) 
          JP     B2          (B5) = - WORDS NEEDED
  
*         RETURN FROM USER TABLE OVERFLOW PROCESSOR ( SUCCESS ) 
  
 ATS9     SA1    TN+3        X1 
          SA4    A1-B1       X5 
          BX5    X4 
          SA3    A1+B1       A0 
          SA0    X3 
          SA4    A4-B1       X0 
          BX0    X4 
          SA2    A4-B1       TN 
          SB2    X2          (B2) = TN
          SB3    B2-B1
          BX4    X1 
          EQ     ATS2 
  
 ATSA     CON    0           COUNT OF TABLE MOVES 
 AFT      SPACE  3,14 
**        AFT - ACTIVATE FIRST TABLE
  
 AFT      PS
          SA1    AFTA 
          SA2    LM 
          SA3    ATS4A
          BX6    X1 
          LX7    X2 
          SA6    ATS4A       STORE PLUG 
          SA7    FTAB 
          BX7    X3 
          SA7    A1 
          EQ     AFT
  
 AFTA     SB6    1
          SB0    0
 ADW      EJECT              ADW
**        ADW - ADD WORD TO TABLE.
*         ENTRY  (A0) = TABLE NUMBER. 
*                (X1) = WORD. 
*         EXIT   (X1) = WORD. 
*                (X6) = WORD. 
*                (A6) = ADDRESS OF WORD.
*                (X2) = FWA TABLE.
*                (X3) = LENGTH OF TABLE.
*         USES   X - 1, 6, 7. 
*                B - NONE.
*                A - 1, 6.
*         CALLS  ATS. 
  
 ADW1     BX7    X3 
          IX4    X2+X3
          SA7    A3+         UPDATE LENGTH
          SB0    0
          SA6    X4-1        STORE WORD 
 ADW      PS
          SA2    FTAB+A0     FWA
          SA3    LTAB+A0
          SA4    A2+B1       NEXT TABLE FWA 
          BX6    X1 
          IX7    X4-X2       ROOM BETWEEN TABLES
          SX3    X3+B1
          IX4    X7-X3
          PL     X4,ADW1     IF ROOM TO ADD A WORD
          SX1    B1 
          SA6    ADWA 
          RJ     ATS         ALLOCATE SPACE 
          SA1    ADWA 
          IX4    X2+X3
          BX6    X1 
          SA6    X4-1 
          EQ     ADW
  
 ADWA     BSS    1
 AMU      SPACE  3
**        AMU - ACCUMULATE MEMORY USED. 
*         ENTRY  NONE.
*         EXIT   MU = MAX(MU,CURRENT ASSIGNED LENGTH) 
*         USES   X - 1, 2, 3, 6.
*                B - 2. 
*                A - 1, 2, 6. 
*         CALLS  NONE.
  
 AMU1     IX6    X6+X2       ACCUMULATE LENGTH
          SB2    B2-B1
          SA2    A2+1        NEXT TABLE 
          NE     B2,B1,AMU1  LOOP FOR ALL TABLES
          SA1    MU          SET MAX LENGTH 
          IX3    X6-X1
          NG     X3,AMU 
          SA6    A1 
  
 AMU      PS                 ENTRY/EXIT 
          SA1    TN          (B2) = NUMBER OF TABLES
          MX6    0           CLEAR ACCUMULATION 
          SB2    X1 
          SA2    LTAB        FIRST TABLE
          EQ     AMU1 
 MTU      SPACE  3
**        MTU - MOVE TABLES UP. 
*         ENTRY  NONE.
*         EXIT   NONE.
*         USES   X - 0, 1, 2, 3, 7. 
*                B - 3. 
*                A - 1, 2, 7. 
*         CALLS  MVE. 
  
 MTU1     SB3    B3-B1       DECREMENT TABLE COUNT
          SA2    FTAB+B3
          SA1    LTAB+B3
          IX7    X0-X1       NEW FWA = L - LENGTH 
          LX0    X7          L = NEW FWA
          SA7    A2 
          BX3    X0          MOVE TABLE 
          ZR     X1,MTU2     IF LEN = 0 
          IX4    X2-X3
          ZR     X4,MTU2
          MOVE   X1,X2,X3 
 MTU2     NZ     B3,MTU1
  
 MTU      PS                 ENTRY/EXIT 
          SB3    NTAB-1      (B3) = NUMBER OF TABLES - 1
          SA1    FTAB+B3     (X0) = LWA+1 OF ALL TABLES (L) 
          BX0    X1 
          EQ     MTU1 
          SPACE  2
          QUAL
          ENTRY  ADW=,ATS=,AMU=,MTU=
          ENTRY  AFT= 
 AFT=     EQU    /TBLM/AFT
 ADW=     EQU    /TBLM/ADW
 AMU=     EQU    /TBLM/AMU
 ATS=     EQU    /TBLM/ATS
 MTU=     EQU    /TBLM/MTU
  
          END 
