*DECK     PROSEQ
          IDENT  PROSEQ 
 PROSEQ   TITLE  PROSEQ - PROCESS ACCUMULATED SEQUENCES 
*CALL     SSTCALL 
 B=PROSQ  RPVDEF
  
**        PROSEQ - PROCESS ACCUMULATED SEQUENCES
 FLAGS    SPACE  3,14 
 .ROL     IFNE   HC.ROL,0,2 
 CC$BIR   ENTRY. 100002B     BASE INTERMEDIATE R-NUMBER 
 CC$NIRN  ENTRY. 100002B     NEXT INTERMEDIATE R-NUMBER 
  
          ENTRY  CC$BRN 
 CC$BRN   DATA   4,4
  
 CC$LNL   ENTRY. 0           "0 IF PROCESSING PART OF A LOOP
 CC$OPF   ENTRY. 1           OPT=2 PHASE FLAG, =0 IF OPT=2 AND BRIDGE 
 CC$OPTL  ENTRY. 0           "0 IF *TXT* CONTAINS THE BODY OF AN
*                            OPTIMIZABLE LOOP 
 CC$PIOL  ENTRY. 0           PREVIOUS LENGTH OF *IOL* 
 CC$SRF   ENTRY. 0           "0 IF FP OR LEVEL 2 SYMBOLS IN PROCEDURE 
 CC$XR    ENTRY. 0           =1 IF EXT REFS IN CURRENT SEQ
  
          TABLES (BLK,MLT,MOD,RCT,RND,PIT,SEQ,TXT)
          EXT#   (LM,TYIOM) 
 CG$CPC   SPACE  3,14 
**        CG$CPC - CODE PROLOGUE CODE 
* 
*         ENTRY  SAME CALLING SEQUENCE AS CG$PAS. 
* 
*         EXIT   SEQUENCE CODED AND WRITTEN TO *SLIST* FILE.
  
 CG$CPC   ENTRY.
          SA1    =XHO$OPT 
          LX1    2
          BX6    X1          HO$OPT = SHIFT(HO$OPT,2)  */ FORCE OPT"2 
          SA6    A1 
          CALL   CG$PAS 
          SA1    HO$OPT 
          LX1    -2 
          BX6    X1          HO$OPT = SHIFT(HO$OPT,-2)  */ RESTORE
          SA6    A1 
          EQ     CG$CPC 
 CG$PAS   SPACE  3           PAS
**        CG$PAS - PROCESS ACCUMULATED SEQUENCES
  
 CG$PAS   ENTRY.
          MX7    0
          SA7    L.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 
          SA6    A7+B1
          SA7    A6+B1
 .ROL     IFNE   HC.ROL,0 
          SA1    =XCC$BRN+1 
          MX0    -R1.RIL
          BX6    -X0*X1      SET MAX R-NUMBER FOR *SQZ* 
          SA6    A1 
 .ROL     ENDIF 
  
 .AET     IF     DEF,WB.AETL
          SA3    CC$SRF 
+         ZR     X3,*+1      IF CC$SRF = 0 */ NO SPECIAL REFS 
  
          RJ     PSB         PROPAGATE BITS IN *AET* TO IL INSTRUCTIONS 
 .AET     ENDIF 
  
          CALL   SBB#        ELIMINATE REDUNDANT INSTRUCTIONS 
          IFNE   HC.STP,0,1 
          CALL   BR$AFT      ADJUST FUNCTION TEMPS
          SA1    =XHO$OPT 
          SA5    L.TXT
          MI     X1,PAS5     IF OPT = 2 
  
          SX7    X5-8 
          ZR     X7,PAS6     IF L.TXT = 8  */ EMPTY SEQUENCE
          SA1    =XHO$ER
          ZR     X1,PAS0     IF ER = 0      */ NO OTR 
          CALL   FSU#        FORCE UPPER
 PAS0     SA1    =XCC$OPTL
          ZR     X1,PAS1A    IF CG$OPTL = 0  */ NOT AN OPTIMIZABLE LOOP 
  
          CALL   COL#        CODE OPTIMIZABLE LOOP ( OPT=1 )
          EQ     PAS6 
  
 PAS1A    BSS    0
 .AET     IF     DEF,WB.AETL
          SA1    CC$SRF 
          ZR     X1,PAS4     IF CC$SRF = 0 */ NO SPECIAL REFS IN PROC 
  
          RJ     SSP         SET *SEQ* POINTERS 
          SA1    CC$LNL 
          SX5    2                 LCM
          NZ     X1,PAS2     IF CG$LNL " 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
 .AET     ENDIF 
  
 PAS4     SX6    0
          SA6    L.BLK
          CALL   MCG#        CODE THE SEQUENCE
          CALL   WII#        SAVE THE ISSUED INSTRUCTIONS 
          EQ     PAS6 
  
 PAS5     CALL   PBB#        PROCESS BASIC BLOCK FOR OPT=2
 CG$PAS   SPACE  3,8
*         RESET FLAGS FOR NEXT SEQUENCE 
  
 PAS6     SA5    =XLM 
          MX6    0
          BX7    X5 
          SA6    L.BLK       L.BLK = 0
          SA6    =XCC$XR     CC$XR = 0
          SA6    CC$PIOL     CC$PIOL = 0
          SA6    CC$OPTL     CC$OPTL = 0
          SA7    O.BLK       O.BLK = LM 
          SA7    O.TXT       O.TXT = LM 
          SX6    4
          SA6    L.TXT       L.TXT = 4
          SA4    =XHO$CSN 
          LX4    R1.INP 
          PX6    B1,X4
          SA4    F.RDT+B1 
          SA6    X5 
          MX7    0
          SA7    A6+B1
          BX6    X4 
          SA6    A7+B1
 .ROL     IFNE   HC.ROL,0 
          SA1    CC$BIR 
          SA2    CC$BRN+1 
          BX6    X1 
          SA6    A1+B1       CC$BIR(2) = CC$BIR(1)  ( INTERMEDIATE R-NUM
          LX7    X2 
          SA7    A2-B1       CC$BRN(1) = CC$BRN(2) ( NEW BASE = OLD MAX 
 .ROL     ELSE
          SX6    4
          SA6    =XCC$BRN+1  CC$BRN(2) = 4
 .ROL     ENDIF 
          EQ     CG$PAS 
 SSP      TITLE  SSP - SET SEQUENCE POINTERS FOR OPT=1
 .AET     IF     DEF,WB.AETL
  
**        SSP - SET SEQUENCE POINTERS FOR OPT=1 
* 
*         ENTRY  SEQUENCE IN *TXT*
* 
*         EXIT   SEQUENCE COPIED TO *BLK* 
*                (O.SEQ,L.SEQ) = FWA,LENGTH OF SEQUENCE 
  
  
 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    =XO.SYM
          SA5    O.TXT
          SB4    4
          SA0    X1+1 
          SB5    I.GL 
          SB6    TSBA 
          SB3    B1 
          SX7    B1 
          LX7    WB.LABP
          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
          LX2    59-D.TYP 
          MI     X2,TSB1     IF TYPE[DI] = II ! IV
          SX3    B2+B2
          SB2    A0+B2
          SA1    B2+X3       WORDB = SYM(3*IH+1)
          LX2    1+D.TYP
          BX5    X7*X1
          NZ     X5,TSB1     IF LAB[WORDB]
          LX1    -WB.FPP
          BX4    -X0*X1 
          SA3    B6+X4       FP[DI] = FP[WORDB];  L2[DI] = L2[WORDB]
          LX1    WB.FPP-WB.LEVNP                                        001390
          MX4    -WB.LEVNL                                              001400
          BX5    -X4*X1 
          NZ     X5,TSB2     IF LEVN[WB] NE 0  */ LEVEL 0 
          SX5    B3-OC.STT                                              001430
          ZR     X5,TSB2     IF OC[R1] = OC.STT                         001440
          LX1    WB.LEVNP-WB.LCMP                                       001450
          SX6    B1                                                     001460
          BX1    X6*X1       1 IFF LCM[WORDB]                           001470
          LX1    D.XMTP                                                 001480
          BX2    X1+X2       XMT[DI] = 1   */ INDICATE LEVEL 0          001490
                                                                        001500
 TSB2     BX6    X2+X3                                                  001510
          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 
  
 .AET     ENDIF 
 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.
          TABLES (BCT,DUT,PBT)
                                                                         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
 RMSK     EQU    -RN.MASK 
                                                                         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    /CCGSCR/ 
 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 SQZ )
          TRACE  AIMPB,RLIST
                                                                         AIS
          CALL   CUC#        COLLECT USES COUNTS
          TRACE  AIS,RLIST                                               AIS
                                                                         AIS
 AIS      ROUTINE 
          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]
          BX0    X1 
          LX0    D.^DP-D.XMTP 
          MI     X0,BDU2     IF LEVEL 0 & LCM 
                                                                         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#     EQENT  /AIS/AIS 
 ESR      TITLE  ESR - EXPAND SPECIAL REFERENCES
 .AET     IF     DEF,WB.AETL
  
**        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 .
  
 ESRA     ENTRY. -1,#        MAKE FP ONLY CALL ILLEGAL
          VFD    42/,18/=XHO$LVL2 
          VFD    42/,18/CC$SRF
          VFD    42/,18/CC$SRF
  
 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
* 
*         EXAMINE THE SYMBOL TABLE AND DETERMINE IF REFERENCED
*         SYMBOL IS LEVEL 0 
* 
          MX6    0
          SB6    I.GL 
          SB5    X2 
          ZR     B5,GSR3A    IF IH[R2] = 0
          GE     B5,B6,GSR3A       IF I[R2] " 0 
          BX5    X1 
          LX5    59-D.TYP 
          MI     X5,GSR3A    IF TYPE[DI] = II & IV
          SA5    =XO.SYM
          SX4    B5+B5
          SB6    X5+B5
          SX5    X4+B6
          SA4    X5+B1       WORDB = SYM(3*IH+1)
          LX4    59-WB.LABP 
          MI     X4,GSR3A    IF LAB[WORDB]
          LX4    WB.LABP-WB.LEVNP+1 
          MX5    -WB.LEVNL
          BX5    -X5*X4 
          NZ     X5,GSR3A    IF LEVN[WB] NE 0  */LEVEL 0
          LX4    WB.LEVNP-WB.LCMP 
          SX6    B1 
          BX6    X4*X6       IFF LCM[WORDB] 
          LX6    D.L2P
* 
 GSR3A    SA6    =SLEV0 
          MX2    -D.LDSTL                                               001610
          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    =XHO$LCM 
          NZ     X4,ISC5     IF LCM=I MODE
          SA4    LEV0                                                   001630
          NZ     X4,ISC5 IF LEVEL = 0                                   001640
  
 #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 REGARDLESS 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 
          MX5    0           RA = 0 
          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
          SA3    =XO$SYM
          SX7    X2 
          LX2    B1,X7
          IX2    X7+X2
          IX7    X3+X2
          SA3    X7+2 
          MX2    -WC.RBL
          LX3    -WC.RBP
          BX7    -X2*X3 
          MX2    -WC.RAL
          LX3    WC.RBP-WC.RAP
          BX5    -X2*X3 
          SA2    =XO$CBT
          IX3    X2+X7
          SA2    X3+CB.W
          MX3    -CB.TAGL 
          LX2    -CB.TAGP 
          BX7    -X3*X2      IH = TAG[CBT(RB[WC(REF)])] 
          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 
          LX2    IH.RFP-IH.CAP
          SX3    X2 
          IX3    X5+X3       CA = CA + RA 
          BX2    X3+X4
          MI     X2,ISC8     IF RF(REF) .OR. CA(REF) .NE. 0 
          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
  
*         CHECK IF CA CAN BE CONTAINED IN AN 18 BIT FIELD.
*         IF NOT THEN WE MUST MATERIALIZE THE CONSTANT IN THE 
*         CONSTANT TABLE
  
 ISC8A    BX2    X3 
          AX2    17 
          ZR     X2,ISC8B    IF CA FITS IN 18 BITS
          RJ     ILC
          EQ     ISC8D
  
 ISC8B    MX7    -IH.CAL
          BX3    -X7*X3      TRUNCATE NEGAITVE CA S TO 18 BITS
          SA2    =XHO$LCM 
          NZ     X2,ISC8C    IF LCM = I OR LCM = G
          SB5    OC.STT                                                 001700
          LX4    IH.RFP 
          LX3    IH.CAP 
          BX7    X4+X3
          EQ     ISC10
                                                                        001720
 ISC8C    SB5    OC.S 
          MX7    0                                                      001740
          LX3    R1.INP                                                 001750
          BX6    X6+X3                                                  001760
          MX2    0                                                      001770
          RJ     SRI                                                    001780
  
 ISC8D    SX6    B4 
          SB5    OC.IA                                                  001800
          SX7    B4-4                                                   001810
          LX7    R1.RJP                                                 001820
          LX4    R1.RKP                                                 001830
          BX7    X7+X4                                                  001840
          BX6    X6+X7                                                  001850
          MX7    0                                                      001860
          MX2    0                                                      001870
          RJ     SRI                                                    001880
          SX4    B4-12                                                  001890
          EQ     ISC11                                                  001900
  
ISC9      BX2    X3 
          AX2    17 
          ZR     X2,ISC9A    IF CA FITS IN 18 BITS
          RJ     ILC
          SX4    B4-8 
          EQ     ISC11
  
 ISC9A    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     SB5    OC.LD
          RJ     SRI
  
 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 
          SX2    X2 
          SA3    =XO$SYM
          LX5    B1,X2
          IX2    X5+X2
          IX3    X3+X2
          SA3    X3+B1
          MX2    -WB.FPOL 
          LX3    -WB.FPOP 
          BX2    -X2*X3 
          SX5    X2-1        CA = FPNO[WORDB(IH)] - 1 
          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    =XHO$LCM 
          SA1    A1 
          ZR     X3,IRA1     IF HO$LCM = 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,14 
**        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
          SA2    LEV0                                                   002080
          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
 ILC      SPACE  4,10 
**        ILC - ISSUE A LOAD OF A CONSTANT
*         ENTRY  X3 = VALUE OF CONSTANT TO BE LOADED
*                B4 = CURRENT R NUMBER
* 
*         EXIT   A0,A1,B1,B2,B3,X0,X4 PRESERVED.
*                B4 AS LAST UPDATED BY SRI. 
*                EXPANSION FILED IN MOD, WITH A7 UPDATED
* 
  
 ILC      ROUTINE            ** ENTRY/EXIT ** 
          SA2    O.MOD
          SX1    A0 
          SX5    A1 
          IX1    X1-X2
          LX1    18 
          SX7    A7 
          IX6    X7-X2
          SA6    SAVREG      SAVE MOD OFFSET
          BX7    X1+X5
          SX2    A7 
          LX7    18 
          BX6    X2+X7
          MX1    -18
          SA6    A6+B1       SAVE A0,A1,A7
          SX2    B2 
          SX5    B3 
          BX7    -X1*X2 
          SX6    B4 
          LX7    18 
          BX2    -X1*X5 
          BX7    X2+X7
          BX6    -X1*X6 
          LX7    18 
          BX7    X1*X7
          BX7    X6+X7
          SA7    A6+B1       SAVE B2,B3,B4
          BX6    X0 
          BX7    X4 
          SA6    A7+B1       SAVE X0
          SA7    A6+B1       SAVE X4
  
*         ALL NECESSARY REGISTERS HAVE BEEN SAVED.
*         NOW RESERVE A SPOT IN THE CONSTANT VALUE TABLE (CVL)
*         FOR THE CA VALUE AND EMIT A LDC OF THE CONSTANT.
  
          BX1    X3 
          CALL   CG$SCT 
  
*         MUST RESTORE B4 AND A7 BEFORE SRI CAN BE CALLED.
  
          SA1    SAVREG 
          SA4    A1+B1
          SA5    A4+B1
          SA2    O.MOD
          IX1    X1+X2
          LX2    36 
          IX4    X2+X4       RELOCATE SAVED A0
          MX7    0
          SA7    X1          RESTORE X7 
          SB4    X5          RESTORE B4 
  
*         ISSUE LDC OF ORDINAL RETURNED FROM CG$SCT 
  
          SA2    =XS=CON     IH = CON.
          SB5    OC.LDC 
          LX6    IH.CAP      CA = CON. ORDINAL
          BX7    X2+X6
          MX2    0
          SX6    B4 
          RJ     SRI
  
*         RESTORE THE REST OF THE REGISTERS 
  
          SA2    A5+B1
          AX4    18 
          BX0    X2 
          AX5    18 
          SA1    X4 
          SB3    X5 
          AX4    18 
          SA0    X4 
          AX5    18 
          SB2    X5 
          SA4    A2+B1
          EQ     ILC
  
  
 SAVREG   BSS    5
  
 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
  
 .AET     ELSE
  
 ESRA     ENTRY. ,# 
 ESR      ENTRY. **,# 
          EQ     *+1S17 
  
 .AET     ENDIF 
  
          END 
