*DECK     TABLES
          IDENT  TABLES 
  
          SST    A,B,C,D,F,G,L,K,Z,EXIT.
          NOREF  A,B,C,D,F,G,L,K,Z,EXIT.
  
 B=TABL   RPVDEF             DEFINE ROUTINE FWA FOR REPRIEVE UTILITY
  
          ENTRY  ACONS,ARGMIS,ANDNOT,ATTR,ARRARM,ASFARM 
          ENTRY  ASFLEN,ASSN,ARGCOMA,ARGMODE,APLSTOR,APLSTOD,APLUG
          ENTRY  BUFFWA,BUFLWA,BEFXARM,BIFFUN,BIFARM,BEFFUN,BIFSHF
          ENTRY  BINOUT,BA.PRO,BINIO,BASES,BA.CON,BA.FMT,BLNKCOM
          ENTRY  BA.TEM,BA.APL,BA.BUF,BA.VAR,BA.NLST,BUFMOD 
          ENTRY  CALLOP,CNFARM,CONOTBL,CONONE,CALLIO,CDORD,CONF 
          ENTRY  CONZER,CSYMBOL,CALLARM,CHARMAP,CCNT,COD,CDD,COMSIZ 
          ENTRY  CSNTAG,COMMA,CALL,CARDS,CSLIST,CSSTMT
          ENTRY  COMMENT
          ENTRY  DRITE,DOLMR,DTI,DOORD,DECARM,DOIX,DIVP2,DXB
          ENTRY  DOSTNO,DO=CC,DO.CSKL,DOARM,DO.BEG
          ENTRY  ETF,ERRORS,ENTRY.,ERROP,EXTCAL,EXTFUN,EQUAL,EXTFARM
          ENTRY  FAILSFT,FIRSTV,FLOW,FEXPR
          ENTRY  GOASS,GOTARM 
          ENTRY  HANGER,HDELAY
          ENTRY  ICV,IGS,IDENT1,IMULT2,INTMAC,ICONL,NAME
          ENTRY  IFARM,IOARGM,INAFR,IN.EXP
          ENTRY  LASTCOL,LOGT,LG.LOG,LDEAD,LPAR,LPARM,LINEBUF,LCNT
          ENTRY  LOCAL,LOSTREF,L=TABLE
          ENTRY  LASTAD,LASTOP,LJS,L.CARD 
          ENTRY  MOD,MSF,MSN,MULT,MULS,MAPCHAR
          ENTRY  MINUS.M,MULT(S 
          ENTRY  NARGS,NOPATH,N.TABLE,NSK,NTRCNT,NREXT,NDC=CNT
          ENTRY  NDC=STR,NOLDS,NOOPP,NOLIST,N.BLK 
          ENTRY  ORG,ORIGINS,OPBSS,OPRETD,OPRETS,OPDUM,OTROP
          ENTRY  O.STITL
          ENTRY  PARCEL,PTN=FMT,PR.SLP,PASS,POPTBL,PSTACK,PLUS
          ENTRY  PLUS.M,PLUS(S
          ENTRY  RANF,RATES,REFIO,REFLIN,REGA,REGX,RJTDUM,RTNCNT
          ENTRY  RG=BADR,RG=INTR,RG=LOAD,REG=B,REG=T,REGARG,RJSUB 
          ENTRY  RG=LODX,RG=STOR,RG=TEMP,RREG,REGARG2,ROUTNAM,REVMIN
          ENTRY  REFNUM,REFVAR,RGC,RGX,RG=SET,REGFILE,REGB
          ENTRY  RG=SET 
          ENTRY  SFN,SIZES,STAGE,SYSERR,STN,SB.STNL,SB.STNR,SDIV
          ENTRY  SHFC,SHFD,SHFDS,SHFS,SHFSA,STATIC,SUBOP
          ENTRY  TG.BASE,TG.END,TP.DIM,TS.BLK,TS.STN,TS.SYM,T.END 
          ENTRY  TA.PRO,TG.PRO,TS.ENT,TT=LF,T=FILE,T.FILE,TA=PRO,TT.LF
          ENTRY  TP.APL,TP=APL,TP=FMT,TP.FMT,TEM.MAX,TS=BLK,TS=ENT
          ENTRY  TS=CON,TS=SYM,TS.CON,TT=REF,TT=SCR,TT.REF,TT.SCR,TP=DO 
          ENTRY  TT.USE,TP=NLST,TP.DO,TP.NLST,TS=EQU,TS=STN,TS=DAT
          ENTRY  TS.DAT,TT=ASF,TT=USE,TT=LINK,TT=FILL,TT.LINK,TT.FILL 
          ENTRY  TT.XFIL,TT=XFIL
          ENTRY  TP=DIM,TT=PAR,TT.ASF,TT.PAR,T.VDIM,TG.TEM
          ENTRY  T=SB,T.SB,T=LGOB,T.LGOB
          ENTRY  TI=DAT,TI.DAT,TL=DAT,TL.DAT,TP=EQU,TP.EQU,TS.EQU 
          ENTRY  TT=COMM,TT.COMM,TP=FMT,TP.FMT,T=VDIM,TN=BLK,TS=CONB
          ENTRY  TA=NAM,TG.VDIM,TG.APL,TA.NAM,TN=EXT,TN.EXT,TN.BLK
          ENTRY  THRESH 
          ENTRY  TP.ILI,TP=ILI,T.DLBUF,T=DLBUF
          ENTRY  TRLINE,UMINUS,UUC
 #FID     IFNE   .FID,0 
          ENTRY  TP.CIDM,TP=CIDM
 #FID     ENDIF 
          ENTRY  VALUE.,VARDIM,VTRUE,VD.EQ,VD.MULT,VD.INTR
          ENTRY  WNZ,WOD
          ENTRY  XMITOP,XPOP
          ENTRY  TRACE
          ENTRY  ZLCOMMA,ZLE,ZLEQUAL,ZLPAREN
          ENTRY  LDRFLG 
  
*         IN LEX
          EXT    TAB.NX,TAB.STR,TAB.LP,TAB.RP,TAB.DOL,TAB.=,TAB.CO
          EXT    TAB.PD 
  
*         IN IO 
          EXT    O=IOJ,A=BMOD,A=BLWA,A=STR,A=FMT,C=BFWA,C=IOL,C=CNT 
          EXT    C=FMT
  
*         IN PAR
          EXT    PAR.EOS,PAR.HOL,PAR.TNK,PAR.VAR,PAR.PL,PAR.MIN,PAR.STD 
          EXT    PAR.LP,PAR.EQL,PAR.CM,PAR.TRU,PAR.FAL,PAR.DLP
          EXT    POP.MUL,POP.DIV,POP.PN,POP.RP,POP.REQ,POP.NOT,POP.EXP
          EXT    POP.STD,POP.PL,POP.CM,POP.REL,POP.UM,POP.LOG 
          EXT    PAR.NX,C=CERR,C=BEF,C=BIF,C=CALL,C=DEC,C=DO,C=FUN,C=GOT
          EXT    A=BIF,A=LIST,A=ASF,A=CALL,A=DEC,A=DO,A=FUN,A=IF,A=BEF
  
*         IN GEN
          EXT    O=SUBL,A=ARRAY,C=ARRAY,O=OTR 
          EXT    O=ADD,O=SUB,O=MULT,O=DIV,O=STR,O=LT,O=GE,O=EQ,O=NE 
          EXT    O=NOT,O=ANDO,O=XOR,O=ORO,O=UMIN,O=APLUG,O=ASSGN,O=ORN
          EXT    O=INT,O=XORN,O=ANDN,O=DOB,O=GOA,O=BSS,O=RETS,O=RETD
          EXT    MULT.I,O=DOC1,O=DOC2,O=DOC3,O=DOC4 
          EXT    O=DOC3A,O=SHFC,O=SHFS,O=SHFD,O=SHFSA,O=SHFDS,O=DIVP2 
          EXT    O=RANF,O=RJSUB,O=XMIT,ADD.I,STR.I,SUB.I
          EXT    SA=BKS9,SB=BKS9,SX=BKS9,SX=XKS9
          EXT    DUC.,DUC.1ST,DUC.2ND,DUC.BTH,O=EPO,O=NOOP
  
*         IN FUN
          EXT    O=ARG,O=RJT,O=FUN,O=BEF
          EJECT 
 TABLES   SECT   (T A B L E   DEFINITIONS.),1 
  
  
 FUDGE    EQU    1           AMOUNT OF SLOP SPACE BETWEEN TABLES
 CLASS    SPACE  4,8
**        SIZES - AUX. MACRO FOR TABLE SIZE REMOTES.
*                (FORCES MICRO EVALUATION)
  
  
 SIZES    MACRO  TT,NAM,RATE,INIT,DEF 
* 
 TABLE    RMT 
 TT.NAM DEF    INIT 
 TABLE    RMT 
* 
 SIZES    RMT 
 TT=NAM DEF    N.TABLES+TT.NAM
 SIZES    RMT 
* 
.2        IFC    NE, = RATE 
 RATES    RMT 
 X        OCTMIC RATE_BS30/L.TABLES,10
 A        OCTMIC INIT,6 
          VFD    60/0."X"B+"A"B     (NAM) 
 RATES    RMT 
* 
 .T       IFNE   TEST,0 
 PTSN     RMT 
          DATA   0H_TT.NAM
 PTSN     RMT 
 .T       ENDIF 
* 
 .2       ENDIF 
* 
 SIZES    ENDM
 TABLE    SPACE  4,8
**        TABLE - MACRO TO FORM TABLE PARAMETER WORD FOR COMPILER TABLES
* 
* TNAM    TABLE  RATE,INIT         (OR),
* TNAM    TABLE  =,SHARE
* 
*         TNAM   =  TABLE NAME. 
*         RATE   =  RELATIVE EXPANSION RATE OF TABLE. 
*                = 5   SUPER TABLE.  PLEASE USE DISCRETION. 
*                = 4   FAST EXPANDER. 
*                = 3   NORMAL RATE. 
*                = 2   SLOWER THAN MOST.
*                = 1   VERY INFREQUENTLY EXPANDED.
*         INIT   =  INITIAL LENGTH OF TABLE IN EACH PROGRAM-UNIT. 
*         SHARE  =  NAME OF TABLE TO SHARE SPACE WITH.
  
  
          MACRO  TABLE,NAM,RATE,INIT
 A        MICRO  1,,.NAM. 
 B        MICCNT A
 C        MICRO  B+2,5,*NAM    *
* 
 .1       IFC    NE, RATE = 
 R        DECMIC RATE 
 R        OCTMIC "R"*16 
 N.TABLES SET    N.TABLES+1 
 L.TABLES SET    L.TABLES+"R"B
 L=TABLES SET    L=TABLES+INIT
          SIZES  "A",("C"),"R",INIT,CON 
* 
 .1       ELSE
* 
          SIZES  "A",("C"),=,INIT,( = ) 
 .1       ENDIF 
 TABLE    ENDM
  
  
 L.TABLES SET    0
 L=TABLES SET    0
 N.TABLES SET    0           INITIALIZE TABLE ORDINAL 
          SPACE  4,9
****      T.LGO - COMPILE TO CORE TABLE.
*                HOLDS GENERATED BINARY WHEN COMPILING TO CORE.  MAY
*         OVERFLOW TO LCM (TX.LGO) OR TO DISK (F.LGO). THIS IS NOTED
*         IN (LGOIO). 
  
  
 .CMLOD   IFNE   .CMLOD,,1
 T.LGO    TABLE  1
****
**        T.SB   - STRING BUFFER
*                THIS TABLE MUST BE FIRST BECAUSE A0 POINTS TO THE
*                ORIGIN OF THE TABLE.  BEING THE FIRST TABLE THE ORIGIN 
*                WILL ALWAYS REMAIN CONSTANT. 
*                ITS SPACE IS REUSED FOR THE LGO BUFFER AT END TIME.
* 
 T.SB     TABLE  4,67 
 T.LGOB   TABLE  =,T.SB      LGO BUFFER 
          SPACE  4,9
**        TT.REF AND TT.LF - REFERENCE MAP FILE AND LONG FILE.
*                THESE TABLES MAY BECOME TO LARGE TO KEEP IN CORE.
*                THEY WILL THEN SPILL TO DISK AND THEIR TABLE SIZES WILL
*                BE SHRUNK TO ZERO. 
* 
 TT.REF   TABLE  4           REFERENCE TABLE (REFMAP FILE)
 TT.LF    TABLE  5           INTERMEDIATE TABLE (LONG FILE) 
          SPACE 4 
 TT.USE   TABLE  3
 TT.SCR   TABLE  3           SCRATCH TABLE. 
 TS.CON   TABLE  3           CONSTANT VALUES
 TS.SYM   TABLE  5,LSYM      SYMBOLS
 TA.NAM   TABLE  3,LSYM/2    ADDRESS OF VARIABLES 
 TS.STN   TABLE  4,LSTN      STATEMENT NUMBER TABLE 
 #FID     IFNE   .FID,0 
          ENTRY  T.LNT,T=LNT
 T.LNT    TABLE  4           LINE NUMBER TABLE
 #FID     ENDIF 
 TP.DIM   TABLE  1,2         DIMENSION PARAMETERS 
 #FID     IFNE   .FID,0 
 TP.CIDM  TABLE  1           COPY OF TP.DIM FOR CID TABLE CONSTRUCTION
*                            IN END 
 #FID     ENDIF 
 TP.DO    TABLE  2           DO PARAMETER TABLE 
 TS.EQU   TABLE  1           TRANSLATED EQUIVALENCE STATEMENTS
 TP.EQU   TABLE  =,TS.EQU    EQUIVALENCE PARAMETER TABLE
 TP.FMT   TABLE  3
 TT.ASF   TABLE  2
 TT.PAR   TABLE  3
 T.VDIM   TABLE  1           VARIABLE DIMENSION TURPLES.
 TP.NLST  TABLE  1
 TP.APL   TABLE  3           ACTUAL PARAMETER LISTS 
 TP.ILI   TABLE  3           INPUT LIST ITEMS 
 TA.PRO   TABLE  3,4
 TS.DAT   TABLE  1
 TL.DAT   TABLE  =,TT.USE    AUX DATA TABLE, LOCAL TO EACH DATA STMNT.
 TI.DAT   TABLE  =,TT.SCR    AUX DATA TABLE, LOCAL TO EACH DATA STMNT.
                             CONTAINS CONSTANTS FOUND IN THE STATEMENT
                             AND REP FACTORS, PLUS OTHER GOODIES. 
 T.FILE   TABLE  =,TS.DAT 
 TS.BLK   TABLE  1,2
 TS.ENT   TABLE  1
 TT.COMM  TABLE  =,TP.DO     COMMON TAGS (DECLARATIVE PROCESSING ONLY)
 TT.FILL  TABLE  =,TT.USE 
 TT.LINK  TABLE  =,TS.EQU 
 TT.XFIL  TABLE  =,TT.SCR 
 TN.EXT   TABLE  =,TP.EQU 
 TN.BLK   TABLE  =,TS.CON    BLOCK NAMES IN MAP 
 T.DLBUF  TABLE  2
 T.END    TABLE  0           DUMMY FOR MANAGER
          POPMAC SIZES
          POPMAC TABLE
  
*         USED FOR EXTERNAL REFERENCE INTERFACES
  
 L=TABLE  EQU    L=TABLES 
 N.TABLE  EQU    N.TABLES 
  
 DEF      SECT   (SYMBOL DEFINITIONS.),1
 TABLES   SPACE  4,8
**        TABLES - ACTUAL TABLE PARAMETER WORDS ARE HERE. 
  
          LIST   D           *ORIGINS*
  
 ORIGINS  BSS    0           ORIGINS OF TABLES
 BASES    BSS    0           BASE ADDRESSES OF TABLES 
  
 TABLE    HERE               ACTUAL TABLE PARAMETER WORDS 
 SIZES    BSS    0           SIZES OF TABLES
  
 SIZES    HERE
  
          LIST   *           *SIZES*
 RATES    BSS    0           EXPANSION RATES OF TABLES
          LIST   G           *RATES*
  
 RATES    HERE
  
          LIST   *           *RATES*
  
*         NOTE -- THE *PTSN* TABLE NAME WORD FOR *TT.END* WILL BE ZEROED
*         BY *IDP* FOR USE AS AN END OF TABLE MARK. 
  
 PTSN     BSS    0           TABLE NAMES (-H- FMT) IN *TEST* MODE ONLY
          ENTRY  PTSN 
          LIST   G
  
 PTSN     HERE
  
          LIST   *           TABLE NAMES
  
 SYM=DEFS SPACE  4,20 
**        TG. -  COMPILER INTERNAL TAG DEFINITIONS. 
* 
*         VALUES MAY NOT BE CHANGED WITHOUT CORRESPONDING CHANGES TO -- 
*                *KTX*  --   KONVERT TAG TO XTERNAL FORMAT. 
*                *REL*  --   RELOCATE TAG.
*         CODE IN COMPILER ASSUMES THAT NO TAG IS LESS THAN 2S12, NOR 
*                GREATER THAN (40S12-1).
*         THE ORDER OF THESE CELLS IS ASSUMED BY *IST*, AND OTHERS. 
  
  
  
 TG.BASE  BSS    0
  
 TG.VAR   CON    C.VAR,C.VAR+C.DIF
 TG.SN    CON    C.STAT 
 C.PRO    SPACE  4,20 
 TG.PRO   CON    C.PRO
 TG.APL   EQU    TG.PRO      **** TEMP **** 
  
 TG.VDIM  CON    C.VDIM 
  
 TG.TEM   CON    C.TEM
  
 TG.END   EQU    *-1
 SB       SPACE  4,8
 CHARMAP  EJECT  4,30 
**        CHARMAP - CHARACTER MAPPING FOR OUTPUT OF ORIGINAL SYMBOL.
* 
*         MAPPING FOR CHARACTERS/OPERATORS USED THRU-OUT THE COMPILER.
* 
*         ANY ONE WISHING TO CHANGE THESE EQUS SHOULD LOOK AT 
*         GENERAL LEXICAL ROUTINES LIKE --
*         A.  TAB - NORMALIZE STATEMENT.
*         B.  ASN - ASSEMBLE NUMBER.
*         C.  ASV - ASSEMBLE VARIABLE.(NOTE SPECIAL MASK FOR KLUDGED 64 
*                   CHARACTER SET). 
* 
*         ALSO NOTE ROUTINES LIKE --
* 
*         A.  PAR - PARSE STATEMENT.
*         B.  TRE,TRV,TNK,TSF - TRANSLATE ELEMENT.
*         C.  LST, IOL, ETC. -- I/O LISTS.
* 
*         MOST OF MAPPING CRITERIA IS FOR CONVENIENCE OF JUMP TABLES AND
*         PROCESSING OF THE GIVEN OPERATOR WITH THESE ROUTINES. 
  
  
          MACRO  CHMAP,SYMBOL,DPC,OPERS 
 .3       IFC    EQ, DPC
          CON    0
 .3       ELSE
 A        MICRO  1,, DPC
 B        MICCNT A
 B        DECMIC B
          VFD    42/"B"L_DPC,18/DUC.OPERS 
 .3       ENDIF 
 CHMAP    ENDM
  
  
          MACRO  CH=,SYMBOL 
          BSS    0
 CH=      ENDM
  
 CHARMAP  EJECT 
**        CHARMAP - CHARACTER MAPPING FOR PRINTING/ DISPLAYING. 
  
* 
*         *FORTRAN* DEFINED OPERATORS.
  
 CHARMAP  EQU    *-O.DEF
 O.EOS    CHMAP  -EOS-       END OF STATEMENT 
 O.HOLL   CHMAP  =HOLL=      ALL HOLLERITH CONSTANTS
 O.CONS   CHMAP              ALL NUMERIC STRINGS
 O.VAR    CHMAP              ALL ALPHANUMERIC STRINGS 
  
 O.SEP    CH=                DEFINITION OF START OF SEPARATORS
 O.PL     CHMAP  +,BTH       ORDER OF O.PL TO O.SLASH MAY NOT BE CHANGED
 O.MIN    CHMAP  -,BTH
 O.MULT   CH=                FOR CLARITY IN PARSER
 O.STAR   CHMAP  *,BTH
 O.DIV    CH=                FOR CLARITY IN PARSER
 O.SLASH  CHMAP  /,BTH
  
 O.(      CH= 
 O.LP     CHMAP  ()(
 O.)      CH= 
 O.RP     CHMAP  )
 O.=      CHMAP  =,BTH
 O.SDEF   CH=                START OF SPECIAL OPERATORS 
  
 O.COMMA  CHMAP  (,),2ND
 O.LT     CHMAP  .LT.,BTH 
 O.LE     CHMAP  .LE.,BTH 
 O.EQ     CHMAP  .EQ.,BTH 
 O.NE     CHMAP  .NE.,BTH 
 O.GE     CHMAP  .GE.,BTH 
 O.GT     CHMAP  .GT.,BTH 
 O.NOT    CHMAP  .NOT.,2ND
 O.AND    CHMAP  .AND.,BTH
 O.XOR    CHMAP  .XOR.,BTH
 O.OR     CHMAP  .OR.,BTH 
 O.EXP    CHMAP  **,BTH 
 O.UMIN   CHMAP  UNARY-,2ND 
 O.TRUE   CHMAP  .TRUE. 
 O.FALSE  CHMAP  .FALSE.
  
 O.FLP    CH=                FUNCTION LEFT PAREN OPERATOR 
 O.ILP    CH=                INLINE   LEFT PAREN OPERATOR 
 O.ALP    CH=                ASF      LEFT PAREN OPERATOR 
 O.S(     CH=                AILIAS FOR O.SLP 
 O.SLP    CHMAP  NSTD 
  
*         *PARSER* DEFINED OPERATORS. 
  
 O.ANDN   CHMAP  .A..N.,BTH 
 O.XORN   CHMAP  .X..N.,BTH 
 O.ORN    CHMAP  .O..N.,BTH 
 O.$      CHMAP  $
 O.PERIOD CHMAP  .
 O.ASFA   CHMAP  ASF
 O.IF     CHMAP  IF,1ST 
 O.SPACE  CHMAP  SPACE
 O.DOB    CHMAP  DOBEGIN,1ST DO BEGIN OPERATOR
 O.DOC    CHMAP  DOCLOSE,BTH DO CONCLUSION OPERATOR 
 O.DOC1   CHMAP  DOCLOSE,1ST   -    -   -      -
 O.DOC2   CHMAP  DOCLOSE       -    -   -      -
 O.ARY    CHMAP  ARY-LOD,2ND SUBSCRIPTED ARRAY LOAD OPERATOR
 O.BSS    CHMAP  BSS         BSS OPERATOR 
 O.ARG1   CHMAP  ONEARG,2ND  SINGLE ARGUMENT
 O.ARG2   CHMAP  TWOARG,BTH  DOUBLE ARGUMENT
 O.RJ     CHMAP  RJUMP       RETURN JUMP OPERATOR 
 O.MXP    CHMAP  MRKEXT      EXTERNAL MARK OPERATOR 
 O.NTR    CHMAP  SUBR        SUBPROGRAM ENTRY/EXIT
 O.RANF   CHMAP  RANF,BTH 
 O.SHF    CHMAP  SHFP2,1ST   INTEGER SHIFT (INTEGER MULTIPLY **2) 
 O.NOOP   CHMAP  NO-OP       NULLIFIED OPERATOR 
 O.ASSN   CHMAP  ASSIGN      ASSIGN OPERATOR
 O.GOTO   CHMAP  GOTOX       GO TO OPERATOR 
 O.GOTC   CHMAP  GOTOC,1ST
 O.GOAS   CHMAP  ASGNGO,1ST  ASSIGNED GO TO OPERATOR
 O.MODC   CHMAP  MODECON,2ND MODE CONVERSION OPERATOR 
 O.PLUG   CHMAP  APLUG,BTH   AP-LIST PLUG 
 IO.DOC   CHMAP  IODOC
 IO.DOB   CHMAP  IODOB
 O.OTR    CHMAP  OTR
 O.XMIT   CHMAP  XMIT,1ST 
  
  
          POPMAC CH=
          POPMAC CHMAP
 MICROS   EJECT 
****      REGFILE - REGISTER FILE FOR PASS 2 PROCESSING OF AN 
*                   INSTRUCTION GROUP.
* 
  
  
 DEFREG   SPACE  4,8
**        DEFREG - DEFINE CELLS FOR REGISTER TYPE AND REGISTERS TO
*         USE FOR *TYPE* DEFINED. 
* 
*         1ST WORD =
**T TYPE  6/INST, 18/MASK COUNT, 18/NUMBER, 18/0T0
*         2ND WORD = 3RD WORD = 
*   REGS  N/R.XX-RGFILE,.......N/R.N-REGFILE
*         NOTE -
*         REGISTERS ARE ASSIGNED FOR RIGHT TO LEFT. 
  
  
          MACRO  DEFREG,TYPE,INST,REGS,TYP
 TYPE     EQU    *
 B        SET    0
 A        MICRO 
.1        IRP    REGS 
 B        SET    B+1
.1        IRP    REGS 
 D        SET    60/B 
  
.2        IRP    REGS 
 A        MICRO  1,, "A"D/R.REGS-RGFILE,
.2        IRP    REGS 
          VFD    6/INST,18/D,18/B,18/TYP
          VFD    "A"
          VFD    "A"
 DEFREG   ENDM
 RUSE     SPACE  4,8
  
 RG=TYP   BSS    0           BASE ADDRESS 
 RG=BADR  DEFREG SB=BKS9,(B1,B2,B3,B4,B5),REG.B-RGFILE
 RG=INTR  DEFREG SX=XKS9,(X0,X6,X7),REG.X-RGFILE
 RG=TEMP  DEFREG SX=XKS9,(X0,X1,X2,X3,X4,X5),REG.X-RGFILE 
 RG=ADR   DEFREG SB=BKS9,(B1,B2,B3,B4,B5),REG.B-RGFILE
 RG=LOAD  DEFREG SA=BKS9,(X1,X2,X3,X4,X5),REG.A-RGFILE
 RG=LODX  DEFREG SX=BKS9,(X1,X2,X3,X4,X5),REG.X-RGFILE
 RG=SET   DEFREG SX=XKS9,(X0,X1,X2,X3,X4,X5),REG.X-RGFILE 
 RG=STOR  DEFREG SX=BKS9,(X7,X6),REG.X-RGFILE 
 RG=APL   DEFREG SA=BKS9,(A3,A2,A1) 
          POPMAC DEFREG 
****
  
 REGFILE  BSS    0           STARTING ADDRESS FOR REGISTER FILE 
  
 REGB     BSS    0           *B* REGISTERS
 RB0      CON    0
 RB1      CON    0
 RB2      CON    0
 RB3      CON    0
 RB4      CON    0
 RB5      CON    0
 RB6      CON    0
 RB7      CON    0
  
 REGA     BSS    0           *A* REGISTERS
 RA0      CON    0
 RA1      CON    0
 RA2      CON    0
 RA3      CON    0
 RA4      CON    0
 RA5      CON    0
 RA6      CON    0
 RA7      CON    0
  
 REGX     BSS    0           *X* REGISTERS
 RX0      CON    0
 RX1      CON    0
 RX2      CON    0
 RX3      CON    0
 RX4      CON    0
 RX5      CON    0
 RX6      CON    0
 RX7      CON    0
 TEMPFILE EJECT  4,8
**        TEMPFILE - TEMPORARY REGISTER FILE USED IN EXPANSION OF A 
*         SKELETON THAT REQUIRES TEMPORARY REGISTERS. 
  
  
 REG=T    BSSZ   20B
 BFILE    SPACE  4,8
**        BFILE - *B* REGISTER FILE, USED FOR ASSIGNING *B* REGISTERS 
*         DURING THE EXPANSION OF A SKELETON. 
  
  
 REG=B    BSSZ   20B
 TEMPS    EJECT 
****      DEFINITIONS OF CELL/VARIABLE S USED BY *TS* COMPILER
  
  
 ARGCOMA  BSSZ   L.PSTACK    USED BY PARSE TO INDICATE MODE 
 ARGMODE  EQU    ARGCOMA+1   OF CURRENT ARGUMENT MODE AND NUMBER
                             OF ARGUMENTS FOR ARGMODE OPERATOR
  
 ARGMIS   EQU    ARGCOMA+2   MISCELLANEOUS CELL USED IN CONJUNCTION WITH
                             ARGMODE AND ARGCOMA. 
  
 ATTR     DATA   0           ATTRIBUTE BIT CELL FOR PASS 2 TAG. SET 
                             DURING TRANSLATION FROM TAB FORM TO TAG
                             FORM IN PARSER.
  
 ASFLEN   BSS    1           REAL LENGTH OF TT.ASF -- IT IS THE LENGTH
                             WHEN THE FIRST EXECUTABLE IS FOUND, AND IS 
                             USED TO SHRINK THE TABLE BACK TO ITS ACTUAL
                             SIZE AFTER WE ARE FINISHED PARSING AN ASF
                             REFERENCE. 
  
 N.BLK    EQU    8           NO. OF FIXED BLOCKS PER PROGRAM UNIT 
 BA.PRO   BSS    N.BLK+2
 BA.CON   EQU    BA.PRO+1    BASE ADDRESS OF CONSTANTS
 BA.FMT   EQU    BA.PRO+2    BASE ADDRESS OF FORMATS
 BA.TEM   EQU    BA.PRO+3    BASE ADDRESS OF TEMPORARIES/INDIRECTS
 BA.APL   EQU    BA.PRO+4    BASE ADDRESS OF ACTUAL PARAMETER LISTS 
 BA.NLST  EQU    BA.PRO+5    BASE ADDRESS OF NAMELIST GROUP DEFS
 BA.VAR   EQU    BA.PRO+6    BASE ADDRESS OF VARIABLES
 BA.BUF   EQU    BA.PRO+7    BASE ADDRESS OF BUFFERS (IF ANY) 
 LOCAL    EQU    BA.PRO+8    LOCAL LENGTH OF PROGRAM-UNIT 
 COMSIZ   EQU    BA.PRO+9    LENGTH OF SCM COMMON 
  
 BINIO    CON    0           -1  = TT.LF TABLE IS ON DISK 
                              0  = TT.LF TABLE IS IN SCM
                             +1  = TT.LF TABLE IS IN LCM
  
 BINOUT   DATA   1S59        ACTUAL BINARY OUTPUT SWITCH
                             NEGATIVE = BINARY WILL BE PRODUCED FOR THIS
                             PROGRAM-UNIT.
                             POSITIVE = INHIBIT OBJECT CODE PRODUCTION
                                   FOR THIS PROGRAM-UNIT. 
  
 BIT      DATA   0           USED AS A FLAG TO *CIR(, *BIT* HAS 3 
                             DIFFERENT VALUES <0,0,>0.  IF *BIT* <0 
                             AND *CIR* FOUND THE TAG FOR THE READ WAS 
                             IN AN X REGISTER IT WILL EXIT WITH THE 
                             ORIGINAL X REGISTER AND COMPILE NO INSTRUCT
                             ION. IF BIT IS ANY OTHER VALUE *CIR* WILL
                             COMPILE A 10IJ0 INSTRUCTION. 
  
 CALL     DATA   0           FLAG FOR *TSF* TO INDICATE TYPE OF FUNCTION
                             ALLOWED TO TRANSLATE.
 CALLER   DATA   0           USED BY *CAI* TO INDICATE WHETHER *CALLER* 
                             HAS BEEN CALLED BY *CAI* (SEE WRITE-UP OF
                             *CAI*) 
  
 CARDS    DATA   0           NUMBER OF SOURCE CARDS 
  
 CCNT     DATA   0           NR OF CONTINUATION CARDS IN CURRENT STMT 
*                              .ZR. IF NONE 
  
 COMMENT  DATA   0           .NZ. IF LINE TO PROCESS LISTING REQUEST
*                                 FOR IS A COMMENT LINE, ELSE .ZR.
*                                 THIS FLAG IS ONLY USED BETWEEN *RNS*
*                                 AND *PLR* AND WAS REQUIRED BECAUSE
*                                 OF *HEADER DELAY* LOGIC...KLUGE...
*                                 *PLR* MUST PROCESS COMMENT LINES SO 
*                                 THAT THEY WILL GET SAVED IN DEFERRED
*                                 LIST BUFFER DURING *HEADER DELAY* 
*                                 MODE, BUT WE DONT WANT THEM SAVED IF
*                                 L=0 OR SL=0 OR C/-LIST,NONE ACTIVE. 
  
  
  
 CONF     DATA   0,0         =0, NO CONSTANT FOUND IN CURRENT TURPLE
                             BEING PROCESSED BY *POP* 
  
 CSLIST   CON    0           =1S59 IF C/-LIST,ALL PENDING 
*                            =  1  IF C/-LIST,NONE PENDING
*                            = +0  IF C/-LIST DIRECTIVE DID NOT OCCUR 
  
 CSNTAG   DATA   0           CURRENT STATEMENT NUMBER TAG.  SET BY *GSN*
  
 CSSTMT   CON    0           =.NZ. IF C/-LINE PENDING, ELSE .ZR.
  
 CSYMBOL  DATA   0           DPC FOR CURRENT SYMBOL BEING TRANSLATED BY 
                             PARSER.
  
 BLNKCOM  DATA   0           BLOCK NUMBER OF BLANK COMMON 
  
 DOLMR    DATA   0           *DO* LIMIT      - REGISTER 
 DOIN     DATA   0           *DO* INCREMENT  - TAG
 DOIX     DATA   0           *DO* INDEX      - TAG
 DOIXR    DATA   0           *DO* INDEX      - REGISTER 
  
 DOSTNO   DATA   0           CONTAINS LATEST *DO* STATEMENT NUMBER IN 
                             DPC RIGHT JUSTIFIED WITH LEADING ZEROES
                             REMOVED.  SET BY *CDI*.
  
 CDORD    DATA   0           SET INDICATING INSIDE DO NEST. CONTAINS
                             ORDINAL OF DO STATEMENT NUMBER THAT DEFINED
                             FIRST DO IN NEST.  (ORDINAL IS TO TS.STN)
  
 DOORD    DATA   0           SET INDICATING INSIDE DO.  CONTAINS ORDINAL
                             OF CURRENT ACTIVE DO INSIDE DO NEST
  
 DRITE    DATA   0,0,0
                             A WRITE INSTRUCTION IS PENDING TO BE 
                             PROCESSED.  FOR FORMAT OF WORD AND MORE
                             INFORMATION ON ITS USE SEE *CHW* WRITEUP.
  
 DTI      DATA   0           DO-TERMINATION INDICATOR 
                             CONTAINS TAG OF THIS STATEMENTS LABEL, IF
                             IT IS A DO-TERMINATOR. 
                             = 0  IF THIS STATEMENT IS NOT A DO-TERMINAL
  
 ENTRY.   DATA   0           ORDINAL OF SYMBOL TAG OF MAIN ENTRY POINT
  
 ERRORS   DATA   0           NUMBER OF ERRORS APPEARING IN CURRENT
                             SUBPROGRAM.  CP.ERRS CONTAINS TOTAL ERROR
                             COUNT. 
  
 ETF      DATA   0           FUNCTION EXPLICITLY TYPED
  
 FAILSFT  CON    0           NON-ZERO IF TABLES OVERLAP CATASTROPHICALLY
  
 FLOW     BSS    1           = 0  IF CONTROL FLOWS INTO THIS STATEMENT. 
                             " 0  IF THIS IS IN-ACCESSIBLE CODE.
                             SET FROM (NOPATH) OF PREVIOUS STATEMENT. 
  
 FSR      DATA   0           FUNCTION-STATEMENT-REFERENCE COUNT 
  
 HANGER   CON    0           HANGING COMPILATION INDICATOR. 
                             = 0  PREVIOUS STATEMENT COMPLETELY 
                                   PROCESSED ALREADY. 
                             " 0  ADDRESS OF ROUTINE WHO WILL BE ENTERED
                                   WHEN THE NEXT CODE-GENERATING STATE- 
                                   MENT IS ENCOUNTERED AND IT IS KNOWN
                                   WHAT THE STATEMENT LABEL IS. 
  
 HDELAY   DATA   0           .NZ. IF IN *HEADER DELAY* MODE.  THAT IS,
*                                 BEFORE A *PROGRAM*, *SUBROUTINE*, 
*                                 *FUNCTION*, OR *BLOCKDATA* STMT HAS 
*                                 BEEN ENCOUNTERED, TRY TO DELAY LISTING
*                                 OF ANY LINES SO THAT WE CAN TRY AND 
*                                 GET THE PROGRAM UNIT NAME INTO THE
*                                 TITLE LINE OF THE LISTING.  THE METHOD
*                                 USED IS TO TRY AND SAVE ALL LINES 
*                                 (INCLUDING COMMENT LINES) IN THE
*                                 DEFERRED LIST BUFFER *T.DLBUF* UNTIL
*                                 THE PGM UNIT STMT PROCESSOR HAS FOUND 
*                                 THE PGM UNIT NAME AND STUFFED IT INTO 
*                                 THE TITLE LINE IMAGE.  *T.DLBUF* IS 
*                                 THEN DUMPED AND *HEADER DELAY* MODE 
*                                 IS OVER, (HDELAY) .ZR.
*                                 NOTE--WE CANT BE IN *HEADER DELAY*
*                                 MODE IF L=0 OR SL=0 OR C/-LIST,NONE 
*                                 ACTIVE BECAUSE *T.DLBUF* MIGHT CONTAIN
*                                 TOO MANY LINES...THINK ABOUT IT.
  
 NOLDS    DATA   0           NUMBER OF LOADS FOR A GIVEN TURPLE 
                             PROCESSED WHILE EXPANDING A SKELETON IN
                             PASS *2*.
  
 ICONL    DATA   0           FIRST CONSTANT TAG ENTERED BY *TAB* IN 
                             TRANSLATING A HOLLERITH CONSTANT TO INTER
                             FORMAT.
  
 ICV      DATA   0           IF " 0 PROCESSING A *DO* LOOP.  CONTENTS OF
                             18/INDEX ADDRESS, 18/TAG OF INCREMENT,3/MOD
                             E, 18/TAG OF INDEX,3/MODE.  IF INCREMENT 
                             IS A CONSTANT MODE BITS WILL BE = TO 0.
                             ICV IS SET BY *CDI* AND USED THROU-OUT 
                             ARITHMETIC ROUTINES. 
  
  
 IDENT1   DATA   10H         C    USED TO DISPLAY *COMPILING* MESSAGE 
          DATA   10HOMPILING      TO CONSOLE. 
 NAME     DATA   0           ROUTINE NAME 10H [NAME]
          DATA   0           END-OF-LINE INDICATOR
  
 IGS      DATA   0           INSTRUCTION-GROUP START
 INAFR    CON    0           INDICATES WHERE PARSER INPUT IS COMING FROM
                             = 0  -- FROM *SB, NORMAL 
                             " 0  -- ASF BEING EXPANDED 
 LASTCOL  DATA   0           NUMBER OF COLUMNS OF CURRENT STATEMENT THAT
                             ARE UNPACKED IN *SB*.
  
 LASTOP   DATA   0           SET = TO LAST OPERATOR IN PARSED FILE UPON 
                             ENTRY TO POP.
 LASTAD   DATA   0           SET = TO LAST ADDRESS OF PARSE FILE UPON 
                             ENTRY TO POP.
  
 LCNT     BSS    1           LINE COUNT 
  
 LDEAD    DATA   0           INITIAL LENGTH OF PARSED FILE UPON ENTRY TO
                             *PAR*.  USED WHEN *FLOW* = 0 TO RESET
                             LENGTH OF PARSED FILE UPON EXIT -- THUS
                             ELIMINATING PARSED CODE FOR DEAD REGIONS OF
                             SOURCE CODE. 
  
 LINEBUF  BSSZ   14          GENERAL PRINT LINE WORKING AREA
  
 LDRFLG   DATA   0           "0 IF LOADER DIRECTIVE FOUND 
 LOSTREF  DATA   0           1.  BEFORE REF-MAP PROCESSING, IT IS A 
                             COUNT OF NUM OF REFS FOUND.
                             2.  DURING REF-MAP, IT WILL BE SET TO NUM
                             OF REFS LOST DUE TO CORE LIMITATIONS.
  
 L.CARD   DATA   0           NR OF WORDS IN SOURCE LINE IMAGE AT
*                              (CP.CARD) ET SEQ  (INCLUDES FULL ZERO
*                              WORD EOL MARK) 
 MOD      DATA   0           SUBPROGRAM MODE  (SET BY *1ST CARD* SCANS) 
  
 .TEST    IFNE   TEST,,3
          ENTRY  MOVES
 MOVES    DATA   0           NUMBER OF TIMES TABLES CRASHED.
          DIS    ,/ TABLE CRASHES./ 
  
 MSF      CON    0           MULTIPLE STATEMENT FLAG.  SET NON-ZERO IF
                             THIS PROGRAM-UNIT CONTAINED MULTIPLE 
                             STATEMENTS-PER-CARD. 
  
 MSN      DATA   0           MISSING-STATEMENT INDICATOR
  
 MULS     DATA   0           IF " 0 ADDRESS OF LAST *$* IN CARD.
                             MULTIPLE STATEMENT INDICATOR.
  
 NARGS    DATA   0           PROGRAM-UNIT ARGUMENT COUNT. 
  
 NOLIST   CON    1S59        =1S59 IF C/-LIST,ALL ACTIVE
*                            = +0  IF C/-LIST,NONE ACTIVE 
  
 NOPATH   DATA   0           IF " 0 INDICATES STATEMENT MUST HAVE A 
                             STATEMENT LABEL FIELD.  IF SET AND NO LABEL
*                            *GSN* WILL OUTPUT *NO PATH* WARNING MESSAGE
  
 NOREL    DATA   0           NUMBER OF RELATIONALS IN A STATEMENT.
  
 NREXT    DATA   0           COUNT OF EXTERNALS REFERENCED IN CURRENT 
                             PROGRAM-UNIT.  COMPUTED BY *END*.
  
 NSK      CON    0           NULL STATEMENT COUNT.  (FOR ANSI)
  
 NTRCNT   CON    0           COUNT OF *ENTRY* STATEMENTS WHICH APPEARED 
                             IN THIS SUBPROGRAM.  USED TO DETERMINE WHAT
                             SUBPROGRAM EXIT CODE TO COMPILE. 
  
 ORG      DATA   0           OBJECT PROGRAM ORIGIN COUNTER.  UPDATED BY 
                             *PIG*.  IT MUST BE KEPT EXACTLY IN STEP
                             WITH WHERE INSTRUCTIONS WILL ACTUALLY BE IN
                             THE OBJECT CODE. 
  
 O.STITL  DATA   0           ADDR AND LEN OF SUBTITLE - 30/LEN,30/ADDR
  
 PARCEL   DATA   0           PARCEL COUNT FOR INSTRUCTIONS. 
                             = NUMBER MINUS ONE OF EMPTY PARCELS LEFT IN
                             CURRENT WORD.
                             3 _ 60 BITS LEFT -- EMPTY WORD 
                             2 _ 45 BITS LEFT 
                             1 _ 30 BITS LEFT 
                             0 _ 15 BITS LEFT 
*                           -1 _ NO BITS LEFT -- FULL WORD
  
 PASS     CON    0           CONTROLS ACTIONS OF TABLE MANAGER. 
  
  
 REFIO    CON    0           -1  = TT.REF TABLE IS ON DISK
                              0  = TT.REF TABLE IS IN SCM 
  
 REFLIN   CON    0           REFERENCE LINE NUMBER
  
 REFNUM   DATA   0,0         STATEMENT LABEL REFERENCE. 
                             TYPE OF CROSS REFERENCE SYMBOL PROCESSING. 
                             SHOULD BE PRESET FOR ALL PROCESSORS THAT 
                             CALL *ISN* TO TRANSLATE A STATEMENT LABEL
                             REFERENCE. 
 REFVAR   EQU    REFNUM+1    SYMBOL REFERENCE.
                             TYPE OF CROSS REFERENCE SYMBOL PROCESSING. 
                             SHOULD BE PRESET FOR ALL PROCESSORS THAT 
                             CALL *TRE* TO TRANSLATE A STATEMENT LABEL
                             REFERENCE. 
                             (*TRE* = *TRV*,*TNK* AND *TSF*)
  
 RJTDUM   CON    0           PROGRAM-TAG OF A WORD CONTAING A DUMMY 
                             *RJT* INSTRUCTION.  SET BY *PEJ* WHEN A
                             CALL TO A DUMMY ARGUMENT IS ENCOUNTERED. 
                             EXAMINED BY *FVD* -- WILL COMPILE A DUMMY
                             *RJT* IF NON-ZERO. 
  
 RGC      DATA   6           REGISTER USAGE COUNT (6 = NO. LOAD REG.+1) 
 RGX      DATA   5           NUMBER OF LOAD REGISTERS 
  
 ROUTNAM  DATA   0           SAVE LOCATION FOR NAME (OR TAG) OF ROUTINE 
                             TO BE CALLED.  USED MOSTLY BY  I/O STATEMEN
                             PROCESSORS.
  
 RREG     DATA   -0          REQUIRED HARD REGISTER TO ASSIGN TO *LOAD* 
*                            IF POSITIVE = 0TR, REGISTER TO LOAD INTO.
*                            IF NEGATIVE = -0TR, INDICATING LOAD SATISFI
*                            IF = -0, NOT ACTIVE. 
  
 RTNCNT   CON    0           COUNT OF NUMBER OF *RETURN* STATEMENTS IN
                             SUBPROGRAM.  COMPLEMENTED IF *END* IS
                             IMMEDIATELY PRECEDED BY *RETURN*.  USED BY 
                             *RTU* TO DETERMINE WHAT CODE NEED BE 
                             GENERATED. 
  
                             LABEL FIELD OF CURRENT STATEMENT, WITH 
                             BLANKS AND LEADING ZEROES REMOVED.  WILL BE
                             = 0 IF THERE WAS NO LABEL. 
 SB.STNL  BSS    2           LEFT JUSTIFIED 
 SB.STNR  EQU    SB.STNL+1   RIGHT JUSTIFIED
  
 STAGE    DATA   0           CURRENT SOURCE PROGRAM STAGE.  VALUES ARE
                             *CPM=XXX*.  SEE DISCUSSION IN *MAIN*.
  
 STATIC   DATA   0           IDICATES WHICH STATIC I/O ROUTINES NEEDED
  
 STN      DATA   0           CURRENT STATEMENT NUMBER OF SOURCE CARD
                             BEING PROCESSED IN 0R FORMAT.
  
 SYSERR   DATA   0           = 1 IF *GWA* DID NOT FIND EXTERNAL TAG IN
                             TT.NA, 
                             = 2 IF *RAD* DID NOT FIND TAG IN TT.ARG
                             = INSTRUCTION WORD BEING PROCESSED IN *GWA*
                             IF *GWA* FINDS THAT TAG IS NOT H,V OF F. 
                             SYSERR IS CHECKED IN *CKS*. IF "0, *CKS* 
  
  
 TEM.MAX  CON    C.TEM       MAXIMUM TEMPORARY USED FOR EACH PROGRAM
                             UNIT.
 THRESH   DATA   0           THRESHHOLD FOR ALLOC BEFORE MEM REQUEST
 TRACE    DATA   0           TRACEBACK LINE NO. FOR RJ BEING PROCESSED
  
 TRLINE   DATA   0           LINE NO. (OCTAL) FOR TRACEBACK ON RJT. 
  
 TS=CONB  DATA   0           SET TO START OF CONSTANTS FOR NEXT STATEMNT
  
 UUC      DATA   0           USE COUNT INCREMENT
  
 VALUE.   DATA   0           TAG ORDINAL FOR FUNCTION-VALUE CELL
  
 VARDIM   CON    0           NON-ZERO IF VARDIM CODE IS NECESSARY 
  
 WNZ      DATA   0           LAST WRITE-INSTRUCTION ADDRESS 
  
**        CELLS SET UP BY *TAB* FOR CLASSIFYING A STATEMENT.
  
 FIRSTV   DATA   0           DPC FOR 1ST VARIABLE FOUND.
 ZLEQUAL  DATA   0           IF = 0 NO ZERO LEVEL *=* FOUND.
 ZLCOMMA  DATA   0           IF = 0 NO ZERO LEVEL *,* FOUND.
 ZLPAREN  DATA   0           1ST ZERO LEVEL *)* FOUND.
 ZLE      DATA   0           LOCAL *ZLEQUAL* POINTER USED DURING PARSE. 
 PASS2    EJECT  4,20 
**        WORKING COPY OF LISTING CONTROL FLAGS 
  
 LSTWRKG  BSS    0
 ANSI     DATA   0
 IEFLG    DATA   0
 LOP=M    DATA   0
 LOP=O    DATA   0
 LOP=R    DATA   0
 LOP=W    EQU    IEFLG
 LOP=X    EQU    ANSI 
 OLIST    EQU    LOP=O
 RSELECT  EQU    LOP=R
 R=FLAG   DATA   0
          ENTRY  LSTWRKG,ANSI,IEFLG,LOP=M,LOP=O,LOP=R,LOP=W,LOP=X 
          ENTRY  OLIST,RSELECT,R=FLAG 
  
**        MISCELLANEOUS SHORT CONSTANTS USED WHEN PROCESSING A STATEMENT
  
  
 CONST    MACRO  NUM,CMOD 
          VFD    L.SHC/NUM
          POS    P.SHORT+1
          VFD    1/1
          POS    L.MODE 
          VFD    L.MODE/M._CMOD 
 CONST    ENDM
  
  
 CONONE   CONST  1,INT
 CONZER   CONST  0,UNIV 
 CONZERI  CONST  0,INT
 VTRUE    CONST  -1,LOG 
 VFALSE   CONST  0,LOG
          POPMAC CONST
  
****                         END OF TS CELL/VARIABLE S
 TABLES   EJECT 
 TABTBL   SPACE  4,8
**        TABTBL - FORM MAPPING/JUMPTO TABLE FOR PROCESSING CHARACTERS. 
  
  
          MACRO  MAPSY,MAPPING,ADDRESS,CHARS
.1        IFC    NE,*CHARS**
          VFD    42/0L_CHARS,18/MAPPING 
.1        ELSE
          VFD    42/ADDRESS,18/MAPPING
.1        ENDIF 
          ENDM
 CONO     SPACE  4,8
**        CONO TABLE. 
*         TABLE IS SET UP WITH EACH OPERATOR/OPERAND HAVING A UNIQUE BIT
*         COMBINATION.
* 
*         THE APPEARANCE OF AN OPERATOR IN THE LIST FOR OPERATOR
*         DEFINED IN LOCATION FIELD MEANS IT IS A LEGAL NEXT FOR THAT 
*         OPERATOR. 
* 
*         FORMAT OF TABLE IS -- 
* 
*         IF SET TO 0 - ILLEGAL COMBINATION.
*         IF        1 - LEGAL   COMBINATION.
* 
*         ALSO IN THE LOWER 18 BITS OF THE OPERATOR/OPERAND WORD IS THE 
*         JUMP ADDRESS FOR TRANSLATION OF THE ELEMENT.
  
  
          MACRO  CONO,DUM,OPOK,ADDR 
 Z        SET    Z+1
 .3       IFNE   Z,O.DUM
 8        ERR    CONO TABLE OUT OF ORDER    (DUM) 
          BSSZ   O.DUM-Z
 .3       ENDIF 
.1        IRP    OPOK 
 A        SET    60-O.OPOK+O.DEF
          POS    A
          VFD    1/1
.1        IRP 
          POS    18 
          VFD    18/PAR._ADDR 
 CONO     ENDM
 POPNX    SPACE  4,20 
**        POPNX- POP-NEXT OPERATION, CHECKING SPECIAL PROCESSING
*         BITS SET BY *POPNX* 
* 
*         IF SET TO 0 - NO SPECIAL PROCESSING 
*         IF SET TO 1 - JUMP TO ADDRESS SPECIFIED TO PROCESS. 
  
  
          MACRO  POPNX,DUM,OPOK,ADDR
 Z        SET    Z+1
          IFNE   Z,O.DUM,1
 8        ERR    POPNX TABLE OUT OF ORDER   (DUM) 
.1        IRP    OPOK 
 A        SET    60-O.OPOK+O.DEF
          POS    A
          VFD    1/1
.1        IRP 
          POS    18 
          VFD    18/POP.ADDR
 POPNX    ENDM
 TABJP    EJECT  4,8
**        TAB - JUMP DECISION TABLE.
  
  
 MAPCHAR  BSS    0
  
          LOC    1R+
  
 O.PL     MAPSY  TAB.NX 
 O.MIN    MAPSY  TAB.NX 
 O.STAR   MAPSY  TAB.STR
 O.SLASH  MAPSY  TAB.NX 
 O.(      MAPSY  TAB.LP 
 O.)      MAPSY  TAB.RP 
 O.$      MAPSY  TAB.DOL
 O.=      MAPSY  TAB.=
 O.SPACE  MAPSY  TAB.NX 
 O.COMMA  MAPSY  TAB.CO 
 O.PERIOD MAPSY  TAB.PD 
  
          LOC    *O 
  
 LOGT     BSS    0
  
 O.FALSE  MAPSY  ,FALSE 
 O.FALSE  MAPSY  ,F 
 O.TRUE   MAPSY  ,TRUE
 O.TRUE   MAPSY  ,T 
 O.LT     MAPSY  ,LT
 O.LE     MAPSY  ,LE
 O.EQ     MAPSY  ,EQ
 O.NE     MAPSY  ,NE
 O.GE     MAPSY  ,GE
 O.GT     MAPSY  ,GT
 O.NOT    MAPSY  ,NOT 
 O.NOT    MAPSY  ,N 
 O.AND    MAPSY  ,AND 
 O.AND    MAPSY  ,A 
 O.XOR    MAPSY  ,XOR 
 O.XOR    MAPSY  ,X 
 O.OR     MAPSY  ,OR
 O.OR     MAPSY  ,O 
****
  
 LG.LOG   EQU    *-1-LOGT    LENGTH OF TABLE
 CONOTBL  EJECT  4,50 
****      CONO TABLE FOR PARSER.
  
 ANYOP    MICRO  1,,$EOS,HOLL,CONS,VAR,PL,MIN,MULT,DIV,LP,RP,=,COMMA,LT,
,LE,EQ,NE,GE,GT,NOT,AND,XOR,OR,EXP,TRUE,FALSE,SLP,ANDN,XORN,ORN,PERIOD,U
,MIN$ 
  
 CONOTBL  BSS    0           BASE ADDRESS OF TABLE. 
  
 Z        SET    O.DEF-1
 EOS      CONO   ,EOS 
 HOLL     CONO   (PL,MIN,MULT,SLASH,LP,RP,=,COMMA,LT,LE,EQ,NE,GE,GT,AND,
,XOR,OR,ASFA,EOS),HOL 
 CONS     CONO   (VAR,CONS,PL,MIN,MULT,SLASH,RP,COMMA,LT,LE,EQ,NE,GE,GT,
,AND,XOR,OR,EXP,PERIOD,ASFA,EOS),TNK
 VAR      CONO   (VAR,PL,MIN,MULT,SLASH,LP,RP,=,COMMA,LT,LE,EQ,NE,GE,GT,
,AND,XOR,OR,EXP,ASFA,EOS),VAR 
 PL       CONO   (HOLL,CONS,VAR,LP,PERIOD,ASFA),PL
 MIN      CONO   (HOLL,CONS,VAR,LP,PERIOD,ASFA),MIN 
 MULT     CONO   (HOLL,CONS,VAR,LP,PERIOD,ASFA),STD 
 DIV      CONO   (HOLL,CONS,VAR,LP,PERIOD,ASFA),STD 
 LP       CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,ASFA,TRUE,FALSE),LP
 RP       CONO   (PL,MIN,MULT,SLASH,RP,=,COMMA,LT,LE,EQ,NE,GE,GT,AND,XOR
,,OR,EXP,ASFA,EOS),STD
 =        CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),EQL
 COMMA    CONO   (EOS,HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),CM 
 LT       CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),STD
 LE       CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),STD
 EQ       CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),STD
 NE       CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),STD
 GE       CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),STD
 GT       CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),STD
 NOT      CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,TRUE,FALSE,PERIOD),STD
 AND      CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),STD
 XOR      CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),STD
 OR       CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,PERIOD,TRUE,FALSE),STD
 EXP      CONO   (CONS,VAR,LP,PERIOD),STD 
 UMIN     CONO   (HOLL,CONS,VAR,LP,PERIOD),STD
 TRUE     CONO   (RP,COMMA,AND,XOR,OR,EOS),TRU
 FALSE    CONO   (RP,COMMA,AND,XOR,OR,EOS),FAL
 SLP      CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,TRUE,FALSE,PERIOD),DLP
 ANDN     CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,TRUE,FALSE,PERIOD),STD
 XORN     CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,TRUE,FALSE,PERIOD),STD
 ORN      CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,TRUE,FALSE,PERIOD),STD
 $        CONO   ,EOS 
 PERIOD   CONO   (CONS),TNK 
  
*         SPECIAL FORMS 
  
 O.ACONS  EQU    O.PERIOD+1  DUMMY
 ACONS    BSS    0           LEGAL AFTER CONSTANT 
 ACONS    CONO   (PL,MIN,MULT,SLASH,RP,COMMA,LT,LE,EQ,NE,GE,GT,AND,XOR,O
,R,EXP,ASFA,EOS),TNK
 O.FEXPR  EQU    O.ACONS+1   DUMMY
 FEXPR    BSS    0
 FEXPR    CONO   (HOLL,CONS,VAR,PL,MIN,LP,NOT,TRUE,FALSE,SLP,PERIOD),STD
****
 POPNX    EJECT  4,20 
****      POP-NEXT DECISION TABLE.
* 
*         TABLE INTERPRETATION IS 
*                   PL   POPNX  (UMIN),UM 
*         IF A *PL* OPERATOR IS ABOUT TO POP A *UMIN* OPERATOR, TRANSFER
*         CONTROL TO UM, OTHERWISE CONTINUE AS NORMAL.
  
  
 POPTBL   BSS    0           BASE ADDRESS OF TABLE. 
  
 Z        SET    O.DEF-1
 EOS      POPNX  ,STD 
 HOLL     POPNX  ,STD 
 CONS     POPNX  ,STD 
 VAR      POPNX  ,STD 
 PL       POPNX  ("ANYOP"),PL 
 MIN      POPNX  ,STD 
 MULT     POPNX  (MULT),MUL 
 DIV      POPNX  ("ANYOP"),DIV
 LP       POPNX  ("ANYOP"),PN 
 RP       POPNX  ("ANYOP"),RP 
 =        POPNX  ("ANYOP"),REQ
 COMMA    POPNX  ("ANYOP"),CM 
 LT       POPNX  ("ANYOP"),REL
 LE       POPNX  ("ANYOP"),REL
 EQ       POPNX  ("ANYOP"),REL
 NE       POPNX  ("ANYOP"),REL
 GE       POPNX  ("ANYOP"),REL
 GT       POPNX  ("ANYOP"),REL
 NOT      POPNX  ("ANYOP"),NOT
 AND      POPNX  ("ANYOP"),LOG
 XOR      POPNX  ("ANYOP"),LOG
 OR       POPNX  ("ANYOP"),LOG
 EXP      POPNX  ("ANYOP"),EXP
 UMIN     POPNX  ("ANYOP"),UM 
 TRUE     POPNX  ,STD 
 FALSE    POPNX  ,STD 
 SLP      POPNX  ("ANYOP"),PN 
 ANDN     POPNX  ("ANYOP"),STD
 XORN     POPNX  ("ANYOP"),STD
 ORN      POPNX  ("ANYOP"),STD
 $        POPNX  ,STD 
 PERIOD   POPNX  ,STD 
          POPMAC POPNX
 GENERAL  EJECT 
**        SETOP - MACRO TO SET UP OPERATOR ENTRY. 
*         SETOP SETS UP THE OPERATOR ENTRY IN THE FOLLOWING FORM--
* 
*         BEFORE ENTRY INTO OPERATOR STACK. 
*         +-----------------+----------+---+--------+-----------------+ 
*         +                 +          + D +        +                 + 
*         +  JUMP ADDRESS   + ATTRIBUTE+ M + STACK  + STRING BUFFER   + 
*         +      OR         +  OF OPER.+ O +PRIORITY+     PRIORITY    + 
*         + ADDR. OF SKEL.  +          + D +        +                 + 
*         +-----------------+----------+---+--------+-----------------+ 
* 
*         ENTRY INTO PARSED FILE. 
*         +-----------------+----------+---+--------+-----------------+ 
*         +                 +          + D +        +                 + 
*         +  JUMP ADDRESS   + ATTRIBUTE+ M + MODC   +     D  P  C     + 
*         +      OR         +  OF OPER.+ O +        +  OF OPERATOR    + 
*         + ADDR. OF SKEL.  +          + D +        +                 + 
*         +-----------------+----------+---+--------+-----------------+ 
  
  
 SETOP    MACRO  SBPRX,STPRX,JPADDX,CLASSX
          VFD    L.JPAD/JPADDX
          IRP    CLASSX 
          POS    P.CLASSX+1 
          VFD    1/1
          IRP 
          POS    P.ATTR 
          VFD    L.DMOD/0 
 A        MICRO  1,2, STPRX 
 .2       IFC    EQ,/PR/"A"/
          VFD    L.STPR/STPRX 
 .2       ELSE
 .3       IFC    EQ,/0/STPRX/ 
          VFD    L.STPR/0 
 .3       ELSE
          VFD    L.STPR/SBPRX+STPRX 
 .3       ENDIF 
 .2       ENDIF 
          VFD    L.SBPR/SBPRX 
          ENDM
 PRIORITY EJECT 
**        SETPRI- MACRO TO SET UP PRIORITIES FOR OPERATOR.
*         EACH CALL UPDATE PRIORITY BY 3 UNLESS PRIORITY IS SPECIFIED.
  
  
          MACRO  SETPRI,OPNAME,PRIORITY 
.1        IFC    EQ,**PRIORITY* 
 OPNAME   EQU    PR.SET 
 PR.SET   SET    PR.SET+3 
.1        ELSE
 OPNAME   EQU    PRIORITY 
.1        ENDIF 
          ENDM
 PR.SET   SPACE  4,8
****      PRIORITY STACK LISTED FROM LOWEST TO HIGHEST PRIORITY.
  
 PR.SET   SET    5           LOWEST PRIORITY. 
  
 PR.RPAR  SETPRI
 PR.LPAR  SETPRI
 PR.EQUAL SETPRI
 PR.SLP   SETPRI PR.EQUAL    SUBSCRIPT LEFT PAREN.
 PR.SPL   SETPRI PR.SLP+1    SUBSCRIPT PLUS.
 PR.SMULT SETPRI PR.SPL+1    SUBSCRIPT MULTIPLY.
 PR.COM   SETPRI
 PR.OR    SETPRI
 PR.XOR   SETPRI PR.OR
 PR.AND   SETPRI
 PR.NOT   SETPRI
 PR.LT    SETPRI
 PR.LE    SETPRI PR.LT
 PR.EQ    SETPRI PR.LT
 PR.NE    SETPRI PR.LT
 PR.GE    SETPRI PR.LT
 PR.GT    SETPRI PR.LT
 PR.PL    SETPRI
 PR.MI    SETPRI PR.PL
 PR.UMIN  SETPRI
 PR.MULT  SETPRI
 PR.DIV   SETPRI PR.MULT
 PR.SDIV  SETPRI PR.MULT+2
 PR.EXP   SETPRI
****
 PSTACK   SPACE  4,30 
****      PSTACK - OPERATOR STACK.
*                  STANDARD FORTRAN OPERATOR TABLE. 
*                  ORDER OF TABLE IS DEFINED OFF OF MAPCHAR MACRO.
*                  ANY CHANGES TO THIS ORDER MEANS A CHANGE TO MAPCHAR, 
*                  CONO, AND CHARMAP MACROS AND SECTION.
* 
*         IF ROUND IS SELECTED FOR ANY OF THE OPERATORS + - * /, THE
*         CORRESPONDING PSTACK ENTRY IS MODIFIED AT INITIALIZATION
*         TIME TO REFLECT THE ROUNDED OPERATION CODE SKELETON ADDRESS.
* 
  
  
 PSTACK   BSS    0
 PLUS     SETOP  PR.PL,+1,O=ADD,(AS,COM)
 MINUS    SETOP  PR.MI,+1,O=SUB,(AS)
 MULT     SETOP  PR.MULT,+1,O=MULT,(AS,DIS,COM) 
 DIV      SETOP  PR.DIV,+1,O=DIV,(DIS)
 LPAR     SETOP  PR.LPAR,-1,,(NSQEZ)
 RPAR     SETOP  PR.RPAR
 EQUAL    SETOP  PR.EQUAL,-1,O=STR
 COMMA    SETOP  PR.COM,1,,(NSQEZ,NONSTD,UNAR,MODLS)
 LTOP     SETOP  PR.LT,,O=LT
 LEOP     SETOP  PR.LE,,O=GE
 EQOP     SETOP  PR.EQ,,O=EQ,(COM)
 NEOP     SETOP  PR.NE,,O=NE,(COM)
 GEOP     SETOP  PR.GE,,O=GE
 GTOP     SETOP  PR.GT,,O=LT
 NOTOP    SETOP  PR.NOT,,O=NOT,(MODLS,UNAR) 
 ANDOP    SETOP  PR.AND,,O=ANDO,(MODLS,COM) 
 XOROP    SETOP  PR.XOR,,O=XOR,(MODLS,COM)
 OROP     SETOP  PR.OR,,O=ORO,(MODLS,COM) 
 EXPOP    SETOP  PR.EXP,+1,0,(NONSTD) 
 UMINUS   SETOP  PR.UMIN,,O=UMIN,(UNAR) 
          BSS    3           SPACE FILLER 
 ANDNOT   SETOP  PR.AND,,O=ANDN,(MODLS) 
 XORNOT   SETOP  PR.XOR,,O=XORN,(MODLS) 
 ORNOT    SETOP  PR.OR,,O=ORN,(MODLS) 
 SPECOPS  EJECT 
****      SPECIAL OPERATOR PARSE ENTRIES. 
*                ENTRYS IN THIS TABLE ARE FOR SPECIAL PROCESSORS OR 
*                OPERATORS THAT ARE CONTEXT DEPENDENT.
  
  
 APLSTOR  SETOP  O.=,0,STR.I,(NSQEZ,MODLS)       *APLIST* STORE.
 APLSTOD  SETOP  O.=,0,=XSTR.D,(NSQEZ,MODLS)     *APLIST* STORE (DOUBLE)
 APLUG    SETOP  O.PLUG,0,O=APLUG,(NSQEZ,MODLS) 
 ASSN     SETOP  O.ASSN,0,O=ASSGN,(NSQEZ,MODLS)  *ASSIGN* 
 PLUS(S   SETOP  O.PL,PR.SPL,O=ADD,(AS,COM) 
 MULT(S   SETOP  PR.SMULT,,O=MULT,(AS,DIS,COM)
 SUBOP    SETOP  O.ARY,0,O=SUBL,(NONSTD,MODLS)   *ARRAY LOAD* 
  
 PLUS.M   SETOP  O.MIN,0,SUB.I,(AS) 
 MINUS.M  SETOP  O.PL,0,ADD.I,(AS,COM)
  
 EQUAL.   SETOP  PR.EQUAL,-1,O=STR
 DO.BEG   SETOP  O.DOB,0,O=DOB,(NSQEZ,MODLS)
  
 CALLIO   SETOP  O.RJ,0,O=IOJ,(NONSTD,NSQEZ,MODLS)
 IOOP     SETOP  O.COMMA,0,0,(NONSTD,MODLS)    I/O OPERATOR SKELETON
  
 IN.EXP   SETOP  O.EXP,0,0,(MODLS) OPERATOR FOR INLINE PROCESSING OF EXP
  
 ERROP    SETOP  O.RJ,0,0,(NONSTD,MODLS)             PROGRAM SOURCE ERR 
  
 GOASS    SETOP  O.GOAS,0,O=GOA,(MODLS,NSQEZ)    *ASSIGN GO TO* 
 OPBSS    SETOP  O.BSS,0,O=BSS,(NSQEZ,MODLS)     *BSS* - DEFINED LABEL
  
 OPDUM    SETOP  O.NTR,0,0,(NSQEZ,MODLS)          SKELETON OPERATOR WORD
  
 REVMIN   SETOP  O.MIN,0,O=SUB,(AS) 
  
 SDIV     SETOP  PR.SDIV,+1,O=MULT,(AS,DIS,COM) 
  
 XPOP     SETOP  O.MXP,0,O=EPO,(NONSTD,MODLS,NSQEZ) 
  
 OTROP    SETOP  O.OTR,0,O=OTR,(NONSTD,MODLS,NSQEZ) 
  
 INTMAC   SETOP  O.COMMA,0,O=INT
  
  
 CALLOP   SETOP  O.ARG1,0,O=ARG,(NONSTD,NSQEZ,UNAR,MODLS) 
 BIFFUN   SETOP  O.ARG2,0,0,(MODLS) 
 RANF     SETOP  O.RANF,0,O=RANF,(MODLS,NSQEZ)
 BIFSHF   SETOP  O.SHF,0,0,(MODLS)               INTRINSIC *SHIFT*
  
 EXTCAL   SETOP  O.RJ,0,O=RJT,(NONSTD,NSQEZ,MODLS)
 EXTFUN   SETOP  O.RJ,0,O=FUN,(NONSTD,NSQEZ,MODLS)
 BEFFUN   SETOP  O.RJ,0,O=BEF,(NONSTD,NSQEZ,MODLS)
  
 RJSUB    SETOP  O.=,0,O=RJSUB,(NSQEZ,MODLS)
  
*         THE FOLLOWING TWO CELLS MUST REMAIN CONTIGUOUS FOR USE BY PAR.
 REGARG   SETOP  O.ARG1,0,0,(NSQEZ,UNAR,MODLS)  SINGLE ARGUMENT 
 REGARG2  SETOP  O.ARG2,0,0,(NSQEZ,UNAR,MODLS)       TWO ARGUMENT 
  
 OPRETS   SETOP  O.ARG1,0,O=RETS,(NSQEZ,UNAR,MODLS) 
 OPRETD   SETOP  O.ARG1,0,O=RETD,(NSQEZ,UNAR,MODLS) 
  
 IMULT2   SETOP  O.PL,0,ADD.I,(AS,COM)
  
 NOOPP    SETOP  O.NOOP,0,O=NOOP,(NSQEZ,MODLS,NONSTD)   NULL TURPLE 
 XMITOP   SETOP  O.XMIT,0,O=XMIT,(MODLS)
 DO.CSKL  SPACE  4,8
**        DO.CSKL - DO CONCLUSION OPERATOR SELECTION TABLE. 
  
  
 DO.CSKL  BSS    0
          LOC    0                              (LIMIT)    /  (INCREMENT
 DO=VV    SETOP  O.DOC,0,O=DOC1,(NSQEZ,MODLS)   VARIABLE   /  VARIABLE
          SETOP  O.DOC1,0,O=DOC1,(NSQEZ,MODLS)
 DO=VC    SETOP  O.DOC1,0,O=DOC2,(NSQEZ,MODLS)  VARIABLE   /  SHORT 
          SETOP  O.DOC1,0,O=DOC2,(NSQEZ,MODLS)
 DO=CV    SETOP  O.DOC,0,O=DOC4,(NSQEZ,MODLS)   SHORT      /  VARIABLE
          SETOP  O.DOC2,0,O=DOC4,(NSQEZ,MODLS)
 DO=CC    SETOP  O.DOC1,0,O=DOC3,(NSQEZ,MODLS)  SHORT      /  SHORT 
          SETOP  O.DOC2,0,O=DOC3,(NSQEZ,MODLS)
 DO=CC1   SETOP  O.DOC,0,O=DOC3A,(NSQEZ,MODLS)  OPT=1, OF *DO=CC* 
          LOC    *O 
 SHIFTOP  SPACE  4,8
**        SHIFT OPERATORS , FOR INTEGER MULTIPLY. 
  
 SHFC     SETOP  O.SHF,0,O=SHFC,(MODLS)   SIMPLE POWER OF *2* 
 SHFS     SETOP  O.SHF,0,O=SHFS,(MODLS)   SUM OF
 SHFSA    SETOP  O.SHF,0,O=SHFSA,(MODLS)  ABOVE BUT *J* = 0 
 SHFD     SETOP  O.SHF,0,O=SHFD,(MODLS)   DIFFERENCE OF 
 SHFDS    SETOP  O.SHF,0,O=SHFDS,(MODLS)  ABOVE BUT *J* = 0 
  
**        SHIFT OPERATOR FOR INTEGER DIVIDE BY POWER OF *2* 
  
 DIVP2    SETOP  O.SHF,0,O=DIVP2,(MODLS)
****
 OSTACK   SPACE  4,8
 VARDIM   SPACE  4,8
****      VARDIM PROCESSOR OPERATORS AND RESULT OPERAND DEFINITIONS.
  
 VD.EQ    SETOP  O.=,0,STR.I
 VD.MULT  SETOP  O.MULT,0,MULT.I,(AS,DIS,COM) 
 VD.INTR  VFD    L.JPAD/0,L.ATTR/0,L.DMOD/0,L.MODC/0,L.SBPR/M.INT+M.INTR
****
 SETARM   EJECT  4,8
**        SETARM - SET *ARGMODE* CELL FOR USE BY *PARSER* 
* 
*         REF   = CROSS REFERENCE VALUE 
*         ATTR  = ATTRIBUTE BITS FOR THIS *ARGMODE* 
*         COMAD = C=XXX PROCESSOR ADDRESS FOR COMMA.
*         PARAD = A=XXX PROCESSOR ADDRESS FOR PAREN.
* 
*         FOR DEFINITION OF VARIOUS FIELDS AND THEIR USE SEE WRITE-UP 
*         OF CELL *ARGMODE*.
  
  
 SETARM   MACRO  REF,ATTR,COMAD,PARAD 
          IFEQ   REF,,2 
          VFD    L.AMR/55B
          SKIP   1
          VFD    L.AMR/REF
          IRP    ATTR 
          POS    P.ATTR+1 
          VFD    1/1
          IRP 
          POS    P.AMATR
          VFD    L.AMC/COMAD
          VFD    L.AMAD/PARAD 
 SETARM   ENDM
  
  
 ARRARM   SETARM CR.ARY,,C=ARRAY,A=ARRAY
 ASFARM   SETARM CR.PAR,,C=CERR,A=ASF 
 BEFXARM  SETARM CR.INF,,C=BEF,A=BEF
 BIFARM   SETARM CR.INF,,C=BIF,A=BIF
 BUFMOD   SETARM ,(AMRP,AMADDR),C=CERR,A=BMOD 
 BUFFWA   SETARM ,(AMADDR),C=BFWA,C=CERR
 BUFLWA   SETARM ,(AMADDR),C=CERR,A=BLWA
 CALLARM  SETARM CR.CALL,(AMFUN,AMWHOL),C=CALL,A=CALL 
 CNFARM   SETARM ,(AMEQ),C=CERR,PAR.NX
 DECARM   SETARM CR.DEC,,C=DEC,A=DEC
 DOARM    SETARM CR.DOI,(AMEQ),C=DO,A=DO
 EXTFARM  SETARM CR.INF,(AMFUN,AMWHOL),C=FUN,A=FUN
 GOTARM   SETARM CR.VGOTO,(AMEOS),C=GOT,PAR.NX
 IFARM    SETARM CR.IF,,C=CERR,A=IF 
 LPARM    SETARM ,,C=CERR,PAR.NX
 IOARGM   SETARM CR.OUT,(AMEQ,AMEOS,AMWHOL),C=IOL,A=LIST
          SETARM CR.INP,(AMEQ,AMEOS,AMWHOL),C=IOL,A=LIST
  
 NDC=CNT  SETARM ,,C=CNT,C=CERR 
 NDC=STR  SETARM ,(AMRP,AMADDR),C=CERR,A=STR
 PTN=FMT  SETARM ,(AMRP,AMADDR),C=FMT,A=FMT 
 #RM      IFEQ   CP#RM,0
*CALL     COMCCIO 
          ENTRY  CIO= 
*CALL     COMCRDC 
          ENTRY  RDC= 
*CALL     COMCRDW 
          ENTRY  RDW= 
*CALL     COMCWTC 
          ENTRY  WTC= 
*CALL     COMCWTW 
          ENTRY  WTW= 
 #RM      ELSE
*CALL     COMCMVE 
          ENTRY  MVE= 
*CALL     FA=CLO
          ENTRY  FA=CLO 
*CALL     FA=EOF
          ENTRY  FA=EOF 
*CALL     FA=EOR
          ENTRY  FA=EOR 
*CALL     FA=FLSH 
          ENTRY  FA=FLSH
*CALL     FA=OPE
          ENTRY  FA=OPE 
*CALL     FA=RDC
          ENTRY  FA=RDC 
*CALL     FA=RDW
          ENTRY  FA=RDW 
*CALL     FA=RWX
          ENTRY  FA=RWX 
*CALL     FA=WTC
          ENTRY  FA=WTC 
*CALL     FA=WTW
          ENTRY  FA=WTW 
 #RM      ENDIF 
  
**        CDD -  CONVERT DECIMAL INTEGER TO DISPLAY CODE. 
* 
*         ADAPTED FROM SUBROUTINE *CONDEC* IN *COMPASS*.
*         ENTRY  (X1) = NUMBER TO BE CONVERTED
*         EXIT   (B2) = NUMBER OF SIGNIFICANT BITS IN REPLY.  TO LEFT-
*                            JUSTIFY (X6) -- SB2 B2-10*CHAR,  AX6 B2. 
*                (X6) = DPC CONVERSION WITH LEADING ZEROES SUPPRESSED,
*                       RIGHT JUSTIFIED, SPACE FILLED (0A FORMAT).
*         USES   A2,A3,A4  B2,B3
  
  
 CDD2     DX4    X1*X2
          FX1    X1*X2
          SB3    X1 
          LX6    -CHAR
          SB2    B2+CHAR
          FX4    X4*X3
          SX4    X4-1R +1R0 
          IX6    X4+X6
          NZ     B3,CDD2     IF REMAINDER NON-ZERO
          LX6    -CHAR
          LX6    X6,B2
  
 CDD      SUBR               ENTRY/EXIT...
          SA2    CDDA 
          SB2    B0 
          SA3    A2+B1
          SA4    =1H
          PX1    X1 
          BX6    X4 
          EQ     CDD2        ENTER LOOP.. 
  
 CDDA     LIT    0.1000000001P48,10.0P0 
 COD      SPACE  4,8
**        COD - CONVERT BINARY TO OCTAL DPC.
* 
* 
*                CONVERTS A BINARY NUMBER TO OCTAL DPC WITH LEADING 
*         ZERO SUPPRESSION. 
* 
*         NOTE-- INTENDED FOR CONVERTING A NUMBER WITH .LE. TO 6 BINARY 
*         (3 BIT) DIGITS. NO ERROR CONDITION IS FLAGGED IF .GT. 6 DIGITS
*         ARE CONVERTED.
* 
*         ENTRY  (X1) = BINARY NR TO BE CONVERTED 
* 
*         EXIT   (X2) = NR CONVERTED TO OCTAL DPC, RIGHT JUSTIFIED TO 
*                         BIT 18, WITH BLANK FILL--  (.=BLANK(55B)) 
*                         CHAR POS 10 9 8 7 6 5 4 3 2 1 
*                         CONV NR   . 1 2 3 4 5 6 . . . 
*                (X6) = SAME AS ABOVE WITH -B- SUFFIX-- 
*                                   . 1 2 3 4 5 6 B . . 
*                (B7) = NR OF DIGITS*6 CONVERTED + 2*6  (NOT INCLUDING
*                         -B- SUFFIX). TO LEFT JUSTIFY NR IN X2 OR X6 --
*                SB7    B7-9*CHAR 
*                AX2    X2,B7 
* 
*         USES   X - 0,1,2,6
*                A - 2
*                B - 7
* 
*         CALLS  NONE 
  
  
 COD      SUBR   =           ** ENTRY/EXIT ** 
          SA2    =10H 
          SB7    2*CHAR 
  
 COD2     MX0    -3 
          SB7    B7+CHAR
          BX6    -X0*X1 
          LX2    -CHAR
          SX6    X6+1R0-1R
          AX1    3
          IX2    X2+X6
          NZ     X1,COD2     IF NOT FINISHED ASSEMBLING NR
          LX2    X2,B7       (X2) = NR IN OCTAL DPC, RT JUST TO BIT 18
          SX1    1R -1RB
          LX1    2*CHAR 
          IX6    X2-X1       (X6) = SAME AS (X2) W/ -B- SUFFIX
          EQ     EXIT.
 DXB      SPACE  4
**        DXB - DISPLAY CODE TO BINARY CONVERSION.
* 
*         ENTRY  (X1) = NUMBER TO CONVERT (0L FORMAT).
* 
*         EXIT   (X6) = CONVERTED DIGITS. 
* 
*         USES   X0,X1,X2,X5,X6,X7  B2,B3.
  
  
 DXB      SUBR               ENTRY/EXIT...
          MX0    -CHAR
          SB3    -1R0 
          BX6    0           CLEAR ASSEMBLY 
          SB2    B1+B1
  
**        CONVERSION LOOP.
  
 DXB1     LX1    CHAR 
          BX7    -X0*X1 
          ZR     X7,DXBX     IF END OF ASSEMBLY 
          LX2    X6,B2       DECIMAL * 10 
          SX7    X7+B3
          IX6    X2+X6
          BX1    X0*X1       CLEAR CHARACTER
          LX6    1
          IX6    X6+X7       DECIMAL + NEW DIGIT
          EQ     DXB1 
 LJS      SPACE  4,8
**        LJS -  LEFT JUSTIFY STATEMENT LABEL.
* 
*         ENTRY  (X5) = DPC STATEMENT LABEL (0R FORMAT).
*         EXIT   (X6) = DPC STATEMENT LABEL (0H FORMAT).
*         USES   A1,A2,A3,A6  B2,B3,B7  X1,X2,X3,X5,X6
*         SAVES  A0,A4,A5,A7  B4,B5,B6  X0,X4,X7
*         CALLS  SFN. 
  
  
 LJS      SUBR               ENTRY/EXIT...
  
 .TEST    IFNE   TEST 
          NZ     X5,LJS2S 
 LJS      REG                IF ZERO -- SOMEBODY GOOFED 
          EQ     =XE.ZA 
 LJS2S    BSS    0
 .TEST    ENDIF 
  
          MX2    CHAR 
          SX3    2R.*-1R* 
 LJS4     BX6    X2*X5
          LX5    CHAR 
          ZR     X6,LJS4     LEFT JUSTIFY LABEL 
          BX1    X5+X3
          LX1    -2*CHAR
          RJ     SFN         SPACE FILL NAME
          EQ     EXIT.
 RPV      SPACE  4,8
 .TEST    IFNE   TEST,0 
**        RPV - REPRIEVE PROCESSOR. 
* 
*         IF COMPILATION IS ABORTED DUE TO COMPILER ERROR, *RPV* GAINS
*         CONTROL TO FLUSH THE OUTPUT BUFFER AND POST DAYFILE MESSAGES
*         THAT IDENTIFY THE PROGRAM UNIT BEING COMPILED AND WHERE THE 
*         ERROR OCCURRED.  IF THE COMPILER HAS BEEN ASSEMBLED IN TEST 
*         MODE, ALL FILES IN AN OUTPUT MODE ARE FLUSHED.  FINALLY, THE
*         ORIGINAL ERROR CONDITION IS RESTORED TO PERMIT NORMAL *EXIT*
*         CONDITION PROCESSING. 
* 
*         ENTRY  NO REQUIREMENTS. 
* 
*         EXIT   MESSAGES POSTED AND BUFFERS FLUSHED.  REINSTATES THE 
*                ERROR CONDITION AND RETURNS CONTROL TO THE OPERATING 
*                SYSTEM.
* 
*         USES   X - ALL
*                A - 1, 2, 3, 5, 6, 7 
*                B - 1, 2 
* 
*         CALLS  CDD, SYSTEM (RPV), WRITER
  
  
 #OS      IFNE   .OS,2       IF NOT SCOPE 2 
 XJP      VFD    12/0,18/LWARPV,30/0
 #OS      ELSE
 XJP      VFD    12/0,18/LWARPV,6/0,24/77770014B
 #OS      ENDIF 
  
          ENTRY  XJP
  
          BSSZ   16          EXCHANGE PACKAGE AND RA+1
  
          MESAGE =XIDENT1,,RCL  *COMPILING NNNNNNN* 
  
*         SAVE CONTENTS OF ENTRY POINTS THAT *RPV* WILL USE.
  
          SB1    1
          SA1    CDD
          SA2    COD
          BX6    X1 
          LX7    X2 
          SA6    RPVE 
          SA7    A6+B1
 #OS      IFNE   .OS,2       IF NOT SCOPE 2 
          SA1    =XSYS= 
          SA2    =XWNB= 
          SA3    =XMSG= 
          BX6    X1 
          LX7    X2 
          SA6    A7+B1
          SA7    A6+B1
          BX6    X3 
          SA6    A7+B1
 #RM      IFEQ   CP#RM,0
          SA1    CIO= 
          BX6    X1 
          SA6    A6+B1
 #RM      ENDIF 
 #OS      ENDIF 
  
  
          SA5    XJP
          MX0    -17
          LX5    24 
          BX1    -X0*X5      EXTRACT P REGISTER 
          SA5    B0 
          NZ     X1,RPV2     IF P NONZERO 
          LX5    59-47+18 
          BX1    -X0*X5      EXTRACT P FROM RA+0
  
 RPV2     SB7    RPV3        (B7) = RETURN ADDR 
          EQ     FRA=        FIND RELATIVE ADDRESS
  
 RPV3     SA6    RPVC+1 
          SA7    A6+B1
  
*         INDICATE LAST OVERLAY LOADED. 
  
          SA1    RA.ORG      (X1) = LOADER CALL PARAM LIST WORD 1 
          MX0    -6 
          LX1    6
          BX6    -X0*X1      PRIMARY LEVEL
          LX1    6
          BX7    -X0*X1      SECONDARY LEVEL
          LX6    12 
          SB2    X7          (B2) = SECONDARY OVERLAY LEVEL NUMBER
          BX7    X6+X7
          SA2    RPVD+2      * - (0,0)  * 
          LX7    18 
          IX6    X2+X7
          SA6    A2 
  
*         INDICATE LAST SOURCE STATEMENT PROCESSED. 
  
          SA1    REFLIN 
          AX1    CHAR 
          RJ     CDD
          SB2    B2-10*CHAR 
          AX6    B2          LEFT JUSTIFY 
          MX0    8*CHAR 
          BX6    X0*X6       CREATE 12-BIT ZERO BYTE MSG TERMINATOR 
          SA6    RPVB+3      LINE NUMBER TO MESSAGE TEXT
  
*         ISSUE THE DAYFILE MESSAGES. 
  
          MESSAGE   RPVB,,RCL      * LAST STATEMENT BEGAN AT LINE NNNN* 
 RPV7     MESSAGE   RPVC,,RCL      * ERROR AT XXXXXX IN YYYYYYY*
          MESSAGE   RPVD,,RCL      * LAST OVERLAY LOADED - (P,S)* 
  
*         FLUSH FILE I/O BUFFERS (DIRECT CIO I/O ONLY). 
  
 #RM      IFEQ   CP#RM,0
          SA1    =XF.OUT
          SX6    B1 
          BX7    X1+X6
          SA7    A1          INSURE CIO COMPLETE BIT IS ON
          WRITER A1,,RCL
          SX6    3           FLUSH COUNT - 1  (LGO, CMPS, RLST, RMAP) 
 RPV8     SA2    =XFV.LGO+X6 (X2) = NEXT FILE FET ADDRESS 
          SA6    RPVF        TEMP SAVE VECTOR OFFSET
          ZR     X2,RPV9     IF FILE DESELECTED BY CONTROL CARD OPTION
          SA1    X2          (X1) = FET WORD 1
          MX0    -6 
          SX6    B1 
          BX7    X1+X6
          SA3    RPVA        (X3) = SHIFT TEST MASK FOR CIO CODE
          AX1    2
          BX0    -X0*X1      EXTRACT CIO CODE 
          SB2    X0 
          LX3    B2 
          PL     X3,RPV9     IF LAST CIO OP NOT OPEN OR WRITE 
          SA7    A1          INSURE CIO COMPLETE BIT IS ON
          WRITER A1,,RCL     FLUSH BUFFER 
 RPV9     SA1    RPVF 
          SX6    X1-1        (X6) = NEXT FILE OFFSET IN VECTOR TABLE
          PL     X6,RPV8     IF MORE FILES TO FLUSH 
 #RM      ENDIF 
  
*         RESTORE SAVED ENTRY POINT CONTENTS. 
  
          SA1    RPVE 
          SA2    A1+B1
          BX6    X1 
          LX7    X2 
          SA6    CDD
          SA7    COD
 #OS      IFNE   .OS,2       IF NOT SCOPE 2 
          SA1    A2+2        (WILL RESTORE SYS= LATER)
          SA2    A1+B1
          BX6    X1 
          LX7    X2 
          SA6    =XWNB= 
          SA7    =XMSG= 
 #RM      IFEQ   CP#RM,0
          SA1    A2+B1
          BX6    X1 
          SA6    CIO= 
 #RM      ENDIF 
 #OS      ENDIF 
  
*         REINSTATE THE ERROR CONDITON. 
  
 #OS      IFNE   .OS,2       IF NOT SCOPE 2 
          SX1    B1 
          LX1    35-0 
          SYSTEM RPV,,X1
          SA1    RPVE+2      (X1) = SAVED (SYS=)
          BX6    X1 
          SA6    =XSYS=      RESTORE PREVIOUS CONTENTS
 +        EQ     *           WAIT FOR OP SYS TO PICK UP ERROR 
 #OS      ELSE
          SX6    =XFVLEN-1   (X6) = FILE VECTOR TABLE OFFSET
 RPV10    SA2    RA.ARG+X6   (X2) = FIT ADDRESS FROM FILE VECTOR TABLE
          SA6    =XGT1       TEMP STORE OFFSET
          ZR     X2,RPV11    IF FILE DESELECTED 
          RJ     FA=CLO      CLOSE FILE 
 RPV11    SA1    =XGT1
          SX6    X1-1        (X6) = OFFSET FOR NEXT FILE
          PL     X6,RPV10    IF MORE FILES TO CLOSE 
          SA1    =XXJP
          RJ     =XDXP=      DUMP EXCHANGE PACKAGE
          ABORT              *** TEMPORARY UNTIL SCOPE 2.0 REPRIEVE 
*                            *** RESET METHOD IS AVAILABLE. 
 #OS      ENDIF 
  
  
 #OS      IFNE   .OS,2       IF NOT SCOPE 2 
 RPVA     BSS    0
          ECHO   2,CIOCODE=(4B,14B,104B,120B,144B,160B) 
          POS    60-CIOCODE_S-2 
          VFD    1/1
          POS    0
          BSS    0
 #OS      ENDIF 
 FRA      SPACE  4,8
**        FRA - FIND RELATIVE ADDRESS.
* 
*                GIVEN AN ABSOLUTE ADDRESS, *FRA* FINDS THE ROUTINE 
*         NAME AND RELATIVE ADDRESS BY SEARCHING THE TABLES INSTALLED 
*         ORIGINALLY FOR *RPV* PROCESSING.
* 
*                *FRA* DOES NOT USE A RETURN JUMP CALLING SEQUENCE
*         BECAUSE IT IS LOCATED IN CODE SPACE CHECKSUMMED BY *RPV*. 
* 
* 
*         ENTRY  (X1) = ADDRESS RELATIVE TO RA+0
*                (B7) = EXIT ADDRESS
* 
*         EXIT   TO (B7), WITH ...
*                (X6) = RELATIVE ADDRESS, DPC, *NNNNNN IN * 
*                (X7) = ROUTINE NAME, DPC, L FORMAT 
* 
*         USES   X - 0, 1, 2, 3, 6, 7 
*                A - 2
*                B - 2, 3 
* 
*         CALLS  COD
  
  
          QUAL   FRA
  
 FRA=     SA2    =XFWA1.0 
          SB2    X1          (B2) = ADDRESS RELATIVE TO RA+0
  
*         SEARCH ADDRESS TABLE. 
  
 FRA2     BX6    X2 
          SA2    A2+1        (X2) = NEXT TABLE ENTRY
          SB3    X2 
          ZR     X2,FRA3     IF END OF TABLE
          GE     B2,B3,FRA2  IF ABS ADDR BEYOND CURRENT ENTRY 
  
*         EXTRACT ROUTINE NAME AND FORMAT RELATIVE ADDRESS. 
  
 FRA3     MX7    42 
          SX3    X6          (X3) = ROUTINE FWA 
          BX7    X7*X6       (X7) = ROUTINE NAME, 0L FORMAT 
          IX1    X1-X3       (X1) = ADDRESS RELATIVE TO ROUTINE ORIGIN
          SB3    B7+         SAVE (B7) = RETURN ADDRESS 
          RJ     COD         CONVERT TO OCTAL DISPLAY CODE
          SB7    B3 
          LX2    CHAR        (X2) = ADDRESS (-H- FMT) 
          SX3    2R  &2RIN
          LX3    6
          BX6    X2-X3       (X6) = RELATIVE ADDRESS, *NNNNNN IN *
          JP     B7          EXIT ... 
          SPACE  4
          QUAL   *
  
 FRA=     =      /FRA/FRA=
          ENTRY  FRA= 
 RPV      SPACE  4,8
          BSS    0
 LWARPV   =      *-1         *** END OF CHECKSUMMED REPRIEVE CODE *** 
  
  
 RPVB     DIS    ,* LAST STATEMENT BEGAN AT LINE ........*
 RPVC     DIS    ,* ERROR AT 000000 IN XXXXXXX* 
 RPVD     DIS    ,* LAST OVERLAY LOADED - (0,0)*
  
 RPVE     BSSZ   2           TO SAVE (CDD) AND (COD)
 #OS      IFNE   .OS,2       IF NOT SCOPE 2 
          BSSZ   3           TO SAVE (SYS=), (WNB=) AND (MSG=)
 #RM      IFEQ   CP#RM,0
          BSSZ   1           TO SAVE (CIO=) 
 RPVF     BSSZ   1           COUNT-1 OF FILES TO FLUSH
 #RM      ENDIF 
 #OS      ENDIF 
 RPV      SPACE  4,8
 .TEST    ENDIF 
 SFN      SPACE  4,12 
**        SFN -  SPACE FILL NAME. 
*         AUTHOR (SOMEONE) AT PURDUE. 
*         ENTRY  (X1) NAME LEFT JUSTIFIED 0 FILLED. (0L FORMAT) 
*         EXIT   (X6) 10H FORMAT OF (X1)
*         USES   A2  X3,X6,X7  B2 
  
  
 SFN      SUBR               ENTRY/EXIT...
          SX7    B1 
          SA2    =40404040404040404040B 
          IX7    X1-X7
          BX3    -X7+X1 
          SB2    60-5 
          BX7    X2*X3
          SA2    =1H
          LX3    B2,X7
          IX3    X7-X3
          IX7    X7+X3
          BX2    -X7*X2 
          IX6    X1+X2
          LX6    54 
          EQ     EXIT.
 WOD      SPACE  4,12 
**        WOD -  CONVERT A WORD TO OCTAL DISPLAY CODE 
*         AUTHOR CHRIS WILLIS, MINN.
*         ENTRY  (X1) = WORD TO CONVERT.
*         EXIT   (X6,X7) = CONVERTED WORD.
*         USES   A2,A3,A4,A5  X0,X1,X6,X7 
  
          IFNE   TEST,,1
          ENTRY  WOD
  
 WOD      SUBR               ENTRY/EXIT...
  
*         (X1) =             ABCDE FGHIJ KLMNO PQRST
  
          SA2    WODA        7.... 7.... 7.... 7....
          BX7    X2*X1       A.... F.... K.... P....
          LX1    3           BCDEF GHIJK LMNOP QRSTA
          BX6    X2*X1       B.... G.... L.... Q....
          LX1    3           CDEFG HIJKL MNOPQ RSTAB
          LX7    9*3         .K... .P... .A... .F...
          BX0    X2*X1       C.... H.... M.... R....
          LX6    7*3         ...L. ...Q. ...B. ...G.
          LX1    3           DEFGH IJKLM NOPQR STABC
          IX7    X6+X7       .K.L. .P.Q. .A.B. .F.G.
          BX5    X2*X1       D.... I.... N.... S....
          LX1    3           EFGHI JKLMN OPQRS TABCD
          LX0    5*3         H.... M.... R.... C....
          BX6    X2*X1       E.... J.... O.... T....
          IX7    X7+X0       HK.L. MP.Q. RA.B. CF.G.
          LX5    3*3         ..I.. ..N.. ..S.. ..D..
          LX6    3           ....J ....O ....T ....E
          IX7    X7+X6       HK.LJ MP.QO RA.BT CF.GE
          SA4    A2+B1       .7.7. 7.7.7 ..... .....
          SA3    A4+B1       ..... .7.7. 7.7.7 .....
          BX7    X7+X5       HKILJ MPNQO RASBT CFDGE
          BX2    X7*X4       .K.L. M.N.O ..... .....
          SA5    A3+B1       00000 00000 00000 00000
          BX1    X7*X3       ..... .P.Q. R.S.T .....
          LX7    10*3        RASBT CFDGE HKILJ MPNQO
          IX2    X5+X2       .K.L. M.N.O 00000 00000
          BX0    X7*X4       .A.B. C.D.E ..... .....
          IX0    X0+X5       .A.B. C.D.E 00000 00000
          LX1    15*3        ..... ..... .P.Q. R.S.T
          BX3    X7*X3       ..... .F.G. H.I.J .....
          IX7    X1+X2       .K.L. M.N.O .P.Q. R.S.T
          LX3    15*3        ..... ..... .F.G. H.I.J
          IX6    X0+X3       .A.B. C.D.E .F.G. H.I.J
          EQ     EXIT.
  
 WODA     CON    70000700007000070000B
          CON    07070707070000000000B
          CON    00000070707070700000B
          CON    10H0000000000
          LIST   D
          END 
