*DECK,CONCARD 
          IDENT  CONCARD
          TITLE  CONCARD - CONTROL CARD CRACKER AND I/O BUFFERS 
          COMMENT  CONCARD - CONTROL CARD CRACKER AND I/O BUFFERS 
          SST 
          LIST   F
  
          QUAL   IPARAM 
          IPARAMS 
          QUAL   *
          SPACE  4
**        DECK CONCARD - CONTAINS . . .                                  21FEB77
*         "NISH" - ONE-TIME INITIALIZATIONS WHICH CAN BE OVERLAID WITH   21FEB77
*         BUFFERS, AND "CONCARD", WHICH INTERPRETS THE CONTROL CARD PAR- 21FEB77
*         AMETERS, AND ALSO CAN BE OVERLAID WITH BUFFERS.                21FEB77
*                                                                        21FEB77
 THISOVL  MICRO  1,, 00      THIS DECK,S OVLY RESIDENCE (FOR CCON MACRO) 21FEB77
          SPACE  4                                                       21FEB77
**        CONVRT - CONVERT DISPLAY-CODED DECIMAL TO OCTAL.  USED TO      DON/D
*                  EVALUATE THE BEGIN/END LINE NUMBERS FOR THE O LIST    DON/D
*                  OPTION.                                               DON/D
*                                                                        DON/D
*         INPUT                                                          DON/D
*                X3 = NUMBER (CHARS) TO BE EVALUATED LEFT-JUSTIFIED AND  DON/D
*                     ZERO-FILLED.                                       DON/D
*                                                                        DON/D
*         OUTPUT                                                         DON/D
*                X7 = VALUE                                              DON/D
*                                                                        DON/D
*         USES                                                           DON/D
*                B4                                                      DON/D
*                X2,X3,X4,X6,X7                                          DON/D
*                                                                        DON/D
                                                                         DON/D
 CONVRT   MACRO 
          LOCAL  CONVRT1,CONVRT2
          MX4    54 
          SB4    6
          SX7    B0 
 CONVRT2  LX3    6
          BX6    -X4*X3 
          ZR     X6,CONVRT1 
          BX2    X7 
          LX7    2
          SB4    B4-1 
          IX7    X7+X2
          SX2    X6-1R+ 
          LX7    1           .X7*10 
          SX6    X6-1R0 
          PL     X2,ERR 
          NG     X6,ERR 
          IX7    X6+X7
          ZR     B4,CONVRT1  .CONVERT 6 CHARS ONLY
          EQ     CONVRT2
 CONVRT1  BSS    0
 CONVRT   ENDM
          SPACE  4                                                       21FEB77
*CALL COMSTUF                                                            CONCARD
          SPACE  4                                                       CONCARD
  
          ENTRY  YNT
 YNT      BSSZ   6           Y-FILE NAME TABLE
 YNT.LW   BSSZ   1           YNT LAST WORD
 YNT.ER   DATA   6           YNT TABLE POINTER
 STRTLNE  ENTRY. 0                                                       CONCARD
 ENDLNE   ENTRY. 9999999                                                 CONCARD
 SHRTLST  ENTRY. -1                                                      CONCARD
 IP.PD    EQU    /IPARAM/IP.PD
 IP.PS    EQU    /IPARAM/IP.PS
 JPD      ENTRY. 8LS 6 LPI   JPD PRESET TO 6 LINES/INCH 
 JPS      ENTRY. 0
 LGONAM   ENTRY. 3LLGO                                                   CONCARD
 LOFTABLE VFD    42/0,18/3   LENGTH OF THIS TABLE 
 LOFINFO  VFD    60/0        42/LFN,18/FET ADDR (FILLED IN DYNAMICALLY) 
          VFD    60/0        ZERO TERMINATION WORD OF TABLE 
 LOFSTAT  VFD    30/LOFTABLE,30/0  STATUS WORD FOR SETLOF MACRO CALL
                                                                         CONCARD
*         TABLE FOR LDSET=LIB NAMES FROM S PARAMETER                     CONCARD
                                                                         CONCARD
          ENTRY  LIBTAB                                                  CONCARD
 LIBTAB   BSSZ   8                                                       CONCARD
*                                                                        CONCARD
**        EXECUTABLE CODE IN THE CONCARD MODULE, AND I/O BUFFERS,        CONCARD
*         BOTH ORG AT BUFORG, TO SAVE THE SPACE USED BY THE INIT ROUTS.  CONCARD
                                                                         CONCARD
BUFORG    BSS    0                                                       CONCARD
 DB.ON    EQU    34          .IN LOADER CONTROL WORD                     JUNK 
 CIDDB    EQU    54          IF YOU CHANGE THIS , CHANGE CIDDB IN CEXEC  JUNK 
          EJECT 
**        CONCARD - CONTROL CARD CRACKER AND I/O BUFFERS
* 
*         CODE TO CRACK CONTROL CARD.  THE I/O BUFFERS ARE ORGED TO 
*         LOCATION "CONCARD" THUS THE WORDS PRECEDING CONCARD ARE NOT 
*         DESTROYED 
* 
* 
* 
*         NO REGISTERS ON ENTRY.                                         21FEB77
*         NOR ON EXIT.                                                   21FEB77
* 
* 
*    REGISTORS DURING EXECUTION 
* 
* 
*     X                                B
* 
* 0   OPTIONS                          0
* 1   PARAM IMAGE                      1   ,
* 2   SCRATCH                          2   =
* 3   WORKING PARAM IMAGE              17B
* 4   SCRATCH                          SCRATCH
* 5   LXOR PARAM WORD                  LAST 18 BITS OF PARAM IMAGE
* 6   SCRATCH                          PARAM NUMBER 
* 7   SCRATCH                          SINGLE LETTER PARAM
* 
*     A1  POINTER TO PRESENT PARAM
* 
          SPACE  4
 CONCARD  ENTRY. **          ENTRY/EXIT 
*                                                                        JUNK 
*        FIRST LOOK TO SEE IF DB SHOULD BE SET FROM DEBUG,ON             JUNK 
*                                                                        JUNK 
 #OS      IFNE   SYSNAME,SCOPE2 
          GETLC  LWORD                                                   JUNK 
          SA2    LWORD                                                   JUNK 
          LX2    -DB.ON-1                                                JUNK 
          PL     X2,DBUGOFF  JUMP IF NO DEBUG,ON                         JUNK 
          MX7    59           MARK THAT DB WAS FORCED ON                 JUNK 
          SA7    DBFORCD                                                 JUNK 
          SA3    =XOPTION                                                JUNK 
          SX2    1                                                       JUNK 
          LX2    CIDDB                                                   JUNK 
          BX7    X3+X2       FORCE DEBUG ON                              JUNK 
          SA7    A3           IN OPTION                                  JUNK 
 #OS      ENDIF 
*                                                                        JUNK 
DBUGOFF   BSS    0                                                       JUNK 
          SB1    1
          SB2    2
          SB3    17B
          SA1    2           1ST PARM, AT RA+2.                          21FEB77
          SA2    64B         NUMBER OF PARAMS IN BITS 17-0.              21FEB77
          SB4    X2 
          SA3    =XOPTION 
          BX0    X3 
          MX5    0
*                            JUMP IF NO PARAMS...                        21FEB77
          EQ     B4,FINISH
          SB6    B0 
          EQ     NXTA 
 NXTP     BSS    0
          NZ     X5,ERR 
          EQ     B5,B3,FINISH 
          NE     B5,B1,ERR
 NXTPARM  BSS    0
          SA1    A1+1 
  
 NXTA     BSS    0
          SB6    B6+B1
          SB5    X1 
          MX3    42 
          BX3    X3*X1
          LX3    6
 .T       IFNE   TEST,0 
          SB4    X3-1R* 
          ZR     B4,STAR
 .T       ENDIF 
          SB4    X3-33B      ALPHA NUMERIC
          GE     B4,ERR 
          SB7    X3 
          JP     B7+JPLST    JUMP TO PARAM
          SPACE  4
*         PROCESS I PARAMETER 
  
 IPARM    BSS    0
          AX3    6
          LX3    12 
          SB4    X3 
          NE     B4,ERR      JUMP IF NON ZERO 
          EQ     B5,B1,AAA   GO, COMMA                                   21FEB77
          EQ     B5,B3,AAA   GO, PERIOD/CLOSE PAREN                      21FEB77
          NE     B5,B2,ERR   JUMP ON NON =
          SA1    A1+B1
          SB5    X1 
          MX7    42 
          BX1    X7*X1
          LX1    6
          SB4    X1-33B 
          EQ     B4,ERR 
          LX1    54 
          BX7    X1          SAVE NEW FILE NAME IN ILFN 
          SA7    A0 
          EQ     NXTP 
  
 AAA      BSS    0
          SA2    CLFN 
          BX6    X2 
          SA6    A0 
          EQ     NXTP 
          SPACE  4
*         PROCESS B PARAMETER 
  
 BPARM    BSS    0
          AX3    6
          LX3    12 
          SB4    X3 
          NE     B4,ERR      JUMP IF NON ZERO 
          EQ     B5,B1,NXTPARM
          EQ     B5,B3,FINISH 
          NE     B5,B2,ERR   JUMP ON NON =
          SA1    A1+B1
          SB5    X1 
          MX7    42 
          BX1    X7*X1
          LX1    6
          SB4    X1-33B 
          EQ     B4,OVRB
          LX1    54 
          BX7    X1          SAVE NEW FILE NAME IN LGONAM 
          SA7    A0 
          EQ     NXTP 
  
 OVRB     BSS    0
          MX2    59 
          LX2    1RB         TURN OFF B OPTION. 
          BX0    X0*X2
          EQ     NXTP 
          SPACE  4
*         PROCESS * PARAMETER (TEST COMPILER ONLY)
  
 .T       IFNE   TEST,0 
 STAR     NE     B5,B2,ERR
          MX7    0
          MX7    0
          SA1    A1+1 
          SB4    7
          SB5    X1 
          MX2    54 
 STARLP   LX1    6
          BX6    -X2*X1 
          SB7    X6-60
          SB7    -B7
          SX4    1
          LX4    B7,X4
          BX7    X7+X4
          SB4    B4-1 
          NZ     B4,STARLP
          SA7    =XINTOPS 
          EQ     NXTP 
 .T       ENDIF 
          SPACE  4                                                       CONCARD
*         PROCESS E, EL, OR ET PARAMETER                                 CONCARD
 E        BSS    0                                                       CONCARD
          AX3    6           NEXT CHARACTER                              CONCARD
          LX3    12          .                                           CONCARD
          SB7    X3          .                                           CONCARD
          NZ     B7,E0       NOT STAND ALONE E
          SB7    1RE         RESTORE E
          JP     BBBB 
 E0       BSS    0
          SB4    1RL                                                     CONCARD
          NE     B7,B4,E1    NOT EL                                      CONCARD
          SA0    =XEL        EL SO FAR                                   CONCARD
          SX7    1           EL SPECIFICALLY SET
          SA7    ELSET       SET FLAG 
          JP     E3                                                      CONCARD
 E1       SB4    1RT                                                     CONCARD
          EQ     B7,B4,E2                                                CONCARD
          JP     ERR         NOT E, EL, OR ET                            CONCARD
 E2       SA0    =XET        ET SO FAR                                   CONCARD
 E3       AX3    6           EL OR ET, CHK FOR ILL NEXT CHAR             CONCARD
          LX3    12          .                                           CONCARD
          SB7    X3          .                                           CONCARD
          NE     B7,B0,ERR   ELX OR ETX, X ANY CHAR                      CONCARD
          EQ     B5,B2,E4          SEPERATOR IS AN EQUALS                CONCARD
*         PARAMETER IS EL OR ET ONLY                                     CONCARD
          SX7    EL.F        F  (2ND DEFAULT) 
          JP     E10                                                     CONCARD
 E4       SA1    A1+B1             GET NEXT PARAM                        CONCARD
          SB5    X1          CODE                                        CONCARD
          MX7    42                                                      CONCARD
          BX3    X7*X1       CLEAR CODE                                  CONCARD
          LX3    6           POSITION FIRST CHAR OF PARAM                CONCARD
          SB7    X3          FIRST CHAR                                  CONCARD
          SB4    1RD                                                     CONCARD
          NE     B7,B4,E5          NOT EL(OR ET) = D                     CONCARD
          SX7    EL.D        D
          JP     E10                                                     CONCARD
 E5       SB4    1RT                                                     CONCARD
          NE     B7,B4,E6          NOT EL(OR ET) = T                     CONCARD
          SX7    EL.T        T
          JP     E10                                                     CONCARD
 E6       SB4    1RW                                                     CONCARD
          NE     B7,B4,E7          NOT EL(OR ET) = W                     CONCARD
          SX7    EL.W        W
          JP     E10                                                     CONCARD
 E7       SB4    1RF                                                     CONCARD
          NE     B7,B4,E8          NOT EL(OR ET) = F                     CONCARD
          SX7    EL.F        F
          JP     E10                                                     CONCARD
 E8       SB4    1RC                                                     CONCARD
          NE     B7,B4,E9          NOT EL(OR ET) = C                     CONCARD
          SX7    EL.C        C
          JP     E10                                                     CONCARD
 E9       SB4    1R0                                                     CONCARD
          NE     B7,B4,ERR   NOT EL=0 EITHER                             CONCARD
*         EITHER EL OR ET = 0. LEGAL FOR ET, BUT NOT FOR EL.             CONCARD
          SB4    =XEL                                                    CONCARD
          SX6    -B4+A0                                                  CONCARD
          ZR     X6,ERR      EL=0                                        CONCARD
          SX7    EL.NULL     NULL 
 E10      SA7    A0                                                      CONCARD
          AX3    6           CHECK FOR ANY OTHER CHAR FOLLOWING LEGAL    CONCARD
          LX3    12          CHAR                                        CONCARD
          SB7    X3          .                                           CONCARD
          NE     B7,ERR      .                                           CONCARD
          EQ     NXTP                                                    CONCARD
          SPACE  4                                                       DON/D
*         PROCESS K PARAMETER                                            DON/D
                                                                         DON/D
 KPARM    BSS    0                                                       DON/D
          MX2    59                                                      DON/D
          LX2    1RK                                                     DON/D
          BX0    -X2+X0      TURN ON K OPTION                            DON/D
          LX2    57-1RK                                                  DON/D
          BX0    -X2+X0      ALSO FORCE TRACEBACK OPTION ON              DON/D
          EQ     NXTP                                                    DON/D
          SPACE  4
 LINDIN   BSS    0
          PL     X6,LINDIN1  JUMP IF NO O PRESET
          BX0    X0+X5
          MX5    0
          SA3    A1 
          CONVRT
          SA7    STRTLNE
          SA1    A1 
          SB5    X1 
          SB4    X1-3        .CHECK FOR END OF LINE 
          ZR     B4,ENDLN1
 CHKEND   EQ     B5,B3,NXTP 
          NE     B5,B1,ERR
          EQ     NXTP 
  
 ENDLN1   SA3    A1+1 
          CONVRT
          SA7    ENDLNE 
          SA1    A1+1 
          SB5    X1 
          EQ     CHKEND 
  
 LINDIN1  EQ     B4,NOLISTT  IF NO O THEN 0 OR 1 ONLY 
          SX7    B4-1 
          NZ     X7,ERR      IT WASNT 0 OR 1
 NOLISTT  SX7    B4 
          MX2    59 
          SA7    SHRTLST
          LX2    1RL
          MX5    0
          BX0    X0*X2
          EQ     NXTP 
          SPACE  4
*         REST   --   PROCESS NORMAL PARAMETERS (SET OPTION BIT)
  
  
 REST     BSS    0
          EQ     B5,B3,BBB
          NE     B5,B1,ERR
 BBB      AX3    6
          LX3    12 
          SB4    X3 
          NE     B4,ERR      JUMP ON NON ZERO 
 BBBB     BSS    0
          SX2    B1 
          LX7    B7,X2
          BX0    X0+X7
          EQ     NXTP 
          SPACE  4
*         PROCESS LIST OPTIONS- LXOR
  
 LXOR     BSS    0
          AX1    18 
          LX1    24          PICK UP NEXT PARAM 
          SX2    B1 
          LX7    X2,B7
          BX5    X5+X7       BUILD LXOR OPTION WORD 
          SA7    LISTOP      . SET LIST OPTION
          SB7    X1 
          EQ     B7,CCC 
          JP     B7+JPLST    JUMP TO PARAM
  
 CCC      BSS    0
          EQ     B5,B1,DDD   JUMP ON ,
          EQ     B5,B3,DDD   JUMP ON TERM 
          NE     B5,B2,ERR
          SA1    A1+B1
          SB5    X1 
          MX7    42 
          BX1    X7*X1
          BX7    X1 
          LX1    6
          SB4    X1-33B 
          BX6    X5 
          LX6    59-1RO 
          PL     B4,LINDIN   JUMP IF A NUMBER FOLLOWS = S 
          EQ     B4,DDDD
          SA4    OLFN        CHECK IF LFN ALREADY SET.
          PL     X4,ERR      ERROR IF TWO OUTPUT LFNS.
          SA7    A4 
          SB4    B5-3 
          NZ     B4,DDD 
          SA1    A1+B1
          SB5    X1 
          LX1    6
          SB4    X1-33B 
          EQ     LINDIN 
  
 DDD      BSS    0
          BX0    X0+X5
 DDDD     BSS    0
          MX5    0
          EQ     NXTP 
          SPACE  3                                                       JUNK 
*         PROCESS D AND DB PARAMS                                        JUNK 
DORDB     BSS    0                                                       JUNK 
          LX1    6                                                       JUNK 
          AX1    18                                                      JUNK 
          LX1    24                                                      JUNK 
          SX4    X1-1RB                                                  JUNK 
          NZ     X4,REST     GO IF IT WAS JUST PLAIN D                   JUNK 
          SB4    CIDDB       OTHERWISE IT WAS DB (WE HOPE)               JUNK 
          SX2    B1                                                      JUNK 
         LX7     B4,X2                                                   JUNK 
         BX0     X0+X7                                                   JUNK 
         AX1     6                                                       JUNK 
         LX1     12                                                      JUNK 
         SB4     X1                                                      JUNK 
         NE      B4,ERR      ERROR IF  DBX                               JUNK 
          EQ     B5,B2,DBOFF  JUMP ON =                                  JUNK 
 ENDCKDB  BSS    0                                                       JUNK 
 #OS      IFEQ   SYSNAME,SCOPE2  IF RUNNING ON SCOPE 2
          SB4    CIDDB       WE DONT WANT CID TURNED ON 
          SX2    B1 
          LX7    B4,X2
          BX0    -X7*X0 
 #OS      ENDIF 
          MX7    0           CLEAR DBFORCD FLAG BECAUSE DB IS EXPLICIT
          SA7    DBFORCD
         EQ      B5,B3,NXTP                                              JUNK 
         EQ      B5,B1,NXTP                                              JUNK 
         EQ      ERR         ERROR IF DB FOLLOWED BY SPECIAL             JUNK 
          SPACE  2                                                       JUNK 
 DBOFF    BSS    0           CHECK FOF DB =0                             JUNK 
          SA1    A1+B1       GET NEXT PARAM                              JUNK 
          MX7    42                                                      JUNK 
          BX7    X7*X1       PRSERVE UPPER BITS                          JUNK 
          LX7    6           MOVE 0 TO LOWER                             JUNK 
          SX7    X7-33B      CHECK IT IS ZERO                            JUNK 
          NZ     X7,ERR       GET OUT OF HERE IF IT ISNT                 JUNK 
          SB4    CIDDB        MASK OUT  DB FLAG                          JUNK 
          SX2    B1                                                      JUNK 
          LX7    B4,X2                                                   JUNK 
          BX0    -X7*X0                                                  JUNK 
          SB5    X1          CHECK DB=0 PROPERLY TERMINATED              JUNK 
          EQ     ENDCKDB                                                 JUNK 
                                                                         JUNK 
          SPACE  4
*         PROCESS S PARAMETER 
  
 LIBSET   BSS    0
          AX3    6
          LX3    12 
          SB4    X3 
          NE     B4,ERR      JUMP IF NON ZERO 
          EQ     B5,B2,LIBB  JUMP ON =
 LIBA     BSS    0
          EQ     B5,B1,NXTPARM
          EQ     B5,B3,FINISH 
          EQ     ERR
  
 LIBB     BSS    0
          MX2    59 
          LX2    1RS
          BX0    X0*X2
          SA1    A1+B1       BRING UP NEXT PARM WORD
          SB5    X1 
          MX7    42 
          BX7    X7*X1
          BX1    X7 
          LX1    6
          SB4    X1-33B 
          EQ     B4,LIBA     JUMP ON S=0 CONDITION
          BX0    -X2+X0 
          SB7    0
          SA0    LIBTAB 
          EQ     LIBD 
  
 LIBC     BSS    0
          SA1    A1+B1
          SB5    X1 
          MX7    42 
          BX7    X7*X1
 LIBD     BSS    0
          SB7    B7+B1       COUNT ENTRIES
          SB4    B7-7 
          EQ     B4,ERR      TOO MANY ENTRIES 
          SA7    A0+B7       STORE ENTRIES
          SX6    B7 
          SA6    A0 
          EQ     B5,B1,NXTPARM
          EQ     B5,B3,FINISH 
          SB4    B5-3 
          EQ     B4,LIBC     ANOTHER ENTRY FOLLOWS
 ERR      BSS    0
          SA4    ERROR
          SX2    B1 
          MX5    0
          LX2    X2,B6
          IX7    X2+X4
          SA7    A4 
          SA1    A1+B1
 EEE      BSS    0
          EQ     B3,B5,FINISH 
          EQ     B1,B5,NXTA 
          SB5    X1 
          SA1    A1+B1
          EQ     EEE
          SPACE  4
*         PROCESS Y PARAMETER 
  
 YPARM    BSS    0
          AX3    6
          LX3    12 
          SB4    X3 
          NE     B4,ERR      NON-ZERO = CONTROL CARD ERROR. 
          EQ     B5,B1,Y2    IF STANDALONE Y, SKIP TO Y2. 
          EQ     B5,B3,Y2    IF STANDALONE Y, SKIP TO Y2. 
          NE     B5,B2,ERR   IF SEPARATOR IS NOT *=*, SKIP TO ERR;
          SA1    A1+B1       ELSE NAME = NEXT PARAMETER.
          SB5    X1 
          MX7    42 
          BX1    X7*X1
          LX1    6
          SB4    X1-33B      IF NAME = 0, 
          EQ     B4,REST     MARK OPTION BIT AND RETURN FOR NEXT PARM 
  
 Y1       SA2    YNT.ER      IF YNT.ER LS 0,
          NG     X2,Y3       SKIP TO Y3 TO ISSUE DIAGNOSTIC;
          SB4    X2          ELSE 
          SA0    YNT.LW      .
          LX1    36          .
          BX6    X1          .
          SA6    A0-B4       YNT[LOC(YNT.LW)-YNT.ER] = NAME.
          SX7    X2-1 
          SA7    A2          YNT.ER = YNT.ER - 1. 
          EQ     REST        MARK OPTION BIT AND RETURN FOR NEXT PARM 
  
 Y2       SA2    =7LSYMTEXT  DEFAULT FILE NAME FOR STANDALONE Y.
          BX1    X2 
          LX1    6
          EQ     Y1          SKIP TO Y1 TO MAKE YNT ENTRY.
  
 Y3       BSS    0           ISSUE DAYFILE DIAGNOSTIC 
          MESSAGE (=C* -SYMPL-  MORE THAN 7 Y PARAMETERS*),,R 
          RJ     =XABTEND    AND ABORT
          SPACE  4
*         PROCESS Z PARAMETER 
  
 ZPARM    BSS    0
          AX3    6
          LX3    12 
          SB4    X3 
          NE     B4,ERR      NON-ZERO = CONTROL CARD ERROR. 
          EQ     B5,B1,Z2    IF STANDALONE Z, SKIP TO Z2. 
          EQ     B5,B3,Z2    IF STANDALONE Z, SKIP TO Z2. 
          NE     B5,B2,ERR   IF SEPARATOR IS NOT *=*, SKIP TO ERR;
          SA1    A1+B1       ELSE NAME = NEXT PARAMETER.
          SB5    X1          .
          MX7    42          .
          BX1    X7*X1       .
          LX1    6           .
          SB4    X1-33B      IF NAME = 0, 
          EQ     B4,REST     MARK OPTION BIT AND RETURN FOR NEXT PARM 
  
 Z1       SA2    =XZNT       IF ZNT " -1, 
          SX2    X2+1 
          NZ     X2,Z3       SKIP TO Z3 TO ISSUE DIAGNOSTIC;
          LX1    54 
          BX6    X1 
          SA6    A2          ELSE ZNT = NAME (WHICH MAY BE 0).
          EQ     REST        MARK OPTION BIT AND RETURN FOR NEXT PARM 
  
 Z2       MX1    0           FOR STANDALONE Z, ZNT = 0. 
          EQ     Z1          SKIP TO Z1 TO MAKE ZNT ENTRY.
  
 Z3       BSS    0           ISSUE DAYFILE DIAGNOSTIC.
          MESSAGE (=C* -SYMPL-  MORE THAN 1 Z PARAMETER*),,R
          RJ     =XABTEND    AND ABORT
          SPACE  4
*         CONTROL CARD PARAMETER SWITCH 
  
 JPLST    EQ     REST        NULL PARAMETER -- IGNORE IT
          EQ     REST        A -- JUST SET THE OPTION BIT FOR NOW 
 +        SA0    LGONAM      B
          EQ     BPARM
          EQ     REST        C
         EQ      DORDB                                                   JUNK 
          EQ     E           E, EL, OR ET                                CONCARD
          EQ     REST        F
          EQ     ERR         G
          EQ     REST        H
 +        SA0    ILFN        I
          EQ     IPARM
          EQ     ERR         J -- GLOBAL OPTIMIZER YANKED BY THIS IDENT 
          EQ     KPARM       K                                           DON/D
          EQ     LXOR        L
          EQ     ERR         M
          EQ     REST        N
          EQ     LXOR        O
          EQ     REST        P
          EQ     ERR         Q
          EQ     LXOR        R
          EQ     LIBSET      S
          EQ     REST        T
          EQ     ERR         U
          EQ     ERR         V
          EQ     REST        W
          EQ     LXOR        X
          EQ     YPARM       Y
          EQ     ZPARM       Z
          EQ     ERR
          SPACE  4
*         FINISHED PROCESSING PARAMETERS
  
 FINISH   BSS    0
          SA1    ERROR
          ZR     X1,NOERROR 
  
*         ERRORS ON CONTROL CARD- PUT MESSAGE IN DAYFILE AND LISTING
*         AND ABORT 
  
          SB2    -B1
          SX0    B1 
 LOOP     BSS    0
          BX7    X1*X0
          AX1    1
          SB2    B2+B1
          ZR     X7,LOOP
          SX7    B2 
          SA7    ERRORCT
          BX6    X1 
          SA6    ERROR
          SA1    MESSLST
          RJ     =XBINDEC 
          MESSAGE  NUMPARM,,R 
          SA1    ERROR
          ZR     X1,DONE
          SX0    1
          SA2    ERRORCT
          SB1    X0 
          SB2    X2 
          EQ     LOOP 
  
*         STORE LISTABLE OUTPUT FILE NAME IN OUTPUT FET/FIT AND OPEN
*         FILE SO ABTEND CAN OUTPUT AN ERROR MESSAGE BEFORE ABORTING
  
 DONE     BSS    0
          SA4    OLFN 
          PL     X4,BYOLFN
          SA4    =6LOUTPUT
 BYOLFN   BSS    0
 #RM      IFEQ   CP#RM,0
          SA3    F.OUT       FET WORD 1 
          RJ     CFF         CHANGE FILE NAME IN FET
 #RM      ELSE
          STORE  FI.OUT,LFN=X4
          STORE  FI.OUT,RL=110
          OPEN   F.OUT,WRITENR,R
 #RM      ENDIF 
          RJ     =XABTEND 
          SPACE  4
*         NO ERRORS ON CONTROL CARD- OPEN FILES 
  
 NOERROR  BSS    0
  
*         PROCESS THE A-OPTION IF IT WAS SET... 
*         -SET ET=T 
*         -SEND THE USER A MESSAGE TELLING A-OPTION ACCEPTED AS -ET=F-
* 
*         THIS CODE MUST BE PULLED BEFORE XMIT OF SYMPL 2.0 
  
          SX1    2           MASK -OPTION- TO SEE IF A-PARM SET 
          BX1    X1*X0
          ZR     X1,NOERR0   ..BYPASS IF A-PARM NOT SET 
          SX7    EL.T        SET ET=T JUST TO BE NICE...
          SA7    =XET 
          MESSAGE APWARN,,R 
  
 NOERR0   BSS    0
  
*         DEFAULT *EL* PARAMETER TO *ET* IF...
*                ((*EL* .GT. *ET*) .AND. (*EL* IS DEFAULTED)) 
* 
*         THIS PREVENTS THE USER FROM BEING ABORTED FOR ERRORS
*         WHICH ARE NOT PRINTED.
  
          SA1    ELSET
          NZ     X1,FIN1     JIF IF EL NOT SPECIFICALLY SET 
          SA2    =XET        IF ET=D OR ET=W
          SB4    EL.T 
          SB7    X2            THEN SET EL=ET 
          GT     B7,B4,FIN1  JIF ET>T 
          BX7    X2          SET EL=ET
          SA7    =XEL 
FIN1      BSS    0
          BX6    X0 
          SA3    LISTOP 
          SX1    1
          NZ     X3,NOERR1   . IF NO LIST OPTIONS SET FORCE L 
          LX1    1RL
          BX6    X1+X6
 NOERR1   BSS    0
          MX0    1           TURN OFF X-R-O-B BITS IF T ON. 
          LX0    1RT+1
          BX0    X0*X6
          ZR     X0,STOREOPT
          SA1    XROBMASK 
          BX6    -X1*X6 
 #OS      IFNE   SYSNAME,SCOPE2 
 STOREOPT BSS   0            .IF  DEBUG OPTION SELECTED (G)  THEN        JUNK 
          MX0   1                TURN ON TRACEBACK  AND  W-OPTION        JUNK 
          LX0    CIDDB+1         CID DEBUG OPTION                        JUNK 
          BX1   X0*X6                                                    JUNK 
          SA6    =XOPTION                                                JUNK 
          ZR    X1,NODEBUG                                               JUNK 
          SA2   WANDTR      .W AND TRACE OPTIONS                         JUNK 
          BX6   X2+X6                                                    JUNK 
          SA1    DBFORCD                                                 JUNK 
          SA6   =XOPTION                                                 JUNK 
          ZR     X1,NODEBUG   DB PARAM NOT SET BY LOADER COMMAND         JUNK 
*            PUT OUT MESSAGE IF DB WAS FORCED ON AND NOT TURNED OFF      JUNK 
*              AGAIN                                                     JUNK 
          MESSAGE DEBUGON,,R                                             JUNK 
                                                                         JUNK 
 NODEBUG  BSS    0                                                       JUNK 
 #OS      ELSE
 STOREOPT SA6    =XOPTION 
 #OS      ENDIF 
  
*         STORE SOURCE INPUT FILE NAME IN FET/FIT AND OPEN FILE 
  
          SA4    ILFN 
 #RM      IFEQ   CP#RM,0
          SA3    F.IN        FET WORD 1 
          RJ     CFF         CHANGE FILE NAME IN FET
 #RM      ELSE
          STORE  FI.IN,LFN=X4 
 #RM      ENDIF 
          OPEN   F.IN,READNR,R
          READ   F.IN 
  
*         STORE LISTABLE OUTPUT FILE NAME IN FET/FIT AND OPEN FILE
  
          SA4    OLFN 
 +        PL     X4,*+1      DEFAULT IS OUTPUT. 
          SA4    =6LOUTPUT
 #OS      IFEQ   SYSNAME,4   NOS OR NOS/BE
  
*         IF THIS JOB STEP IS ABORTED FOR ANY REASON, NOS WILL NOT
*         FLUSH THE OUTPUT BUFFER UNLESS WE EXPLICITLY ASK IT TO. 
*         THE CURRENT WAY TO DO THIS IS VIA THE SETLOF/GETLOF MECHANISM.
*         NOS/BE GENEROUSLY ACCEPTS THE MACRO FOR COMPATABILITY, SO 
*         THAT WE STILL DO NOT NEED ANY NOS ONLY CODE IN THE COMPILER.
  
          SA1    F.OUT+1     SET FLUSH BIT IN OUTPUT FET
          MX7    1
          LX7    37          FET+1, BIT 36 (COMPASS NOTATION) 
          BX7    X7+X1
          SA7    A1 
  
          SX7    F.OUT       *OUTPUT* FET ADDRESS 
          BX7    X4+X7       42/LFN,18/FET
          SA7    LOFINFO
          SETLOF LOFSTAT     MAKE CALL TO NOS TO ENSURE BUFFER FLUSHING 
 #OS      ENDIF 
 #RM      IFEQ   CP#RM,0
          SA3    F.OUT       FET WORD 1 
          RJ     CFF         CHANGE FILE NAME IN FET
 #RM      ELSE
          STORE  FI.OUT,LFN=X4
          OPEN   F.OUT,WRITENR,R
 #RM      ENDIF 
          EQ     CONCARD                                                 21FEB77
          TITLE  NISH - COMPILER ONE-TIME INITIALIZATIONS                21FEB77
                                                                         CONCARD
**        NISH - INITIALIZATION OF SYSID AND FL MANAGEMENT VALUES 
*         NO ENTRY NOR EXIT PARAMETERS                                   CONCARD
                                                                         CONCARD
 NISH     ENTRY. **                                                      21FEB77
                                                                         CONCARD
*         GET SYSTEM ID...                                               21FEB77
*                                                                        21FEB77
          SA1    =XVERA1
          SA2    A1+1 
          BX6    X1 
          SA3    =XMODLEV 
          BX7    X2 
          SA6    =XSYSID+1
          SA7    =XSYSID3 
          BX6    X3 
          SA6    =XSYSID-1   STORE MODLEVEL(BLANK FOR RELEASED COMPILER)
  
*         GET HHA FROM 54-TABLE IF PRESENT, ELSE USE THE VALUE
*         "SYMTAB" DEFINED IN SYMTEXT.  IF HHA FROM 
*         54-TABLE, STORE IT AT SYMTAB, WHICH EQUATES TO SYSTART
*         WHEN SYMBOL TABLE IS IN SCM.  FOR SYMBOL TABLE
*         IN LCM, INITIALIZE SYSTART = "COM08." IN COMSTUF. 
  
          SA1    100B 
          BX3    X1 
          LX6    X1 
          AX1    18 
          SX2    777754B
          AX3    54 
          IX3    X3-X2
          NZ     X3,FINC     . NOT A 54 TABLE 
          SA1    104B        . HIGHEST HIGH 
          SX1    X1 
          ZR     X1,FINA     IN CASE 54-TABLE HHA NOT INITIALIZED.
          EQ     FINDD
  
 FINC     BSS    0
          NG     X6,FINA     . FL NOT SET 
 FINDD    BSS    0
          SX7    X1+21B 
          SA7    =XSYMTAB    SYMBOL TABLE ORIGIN IF SCM RESIDENT. 
          SX5    X7-1 
          EQ     FINB 
  
 FINA     BSS    0
          SA5    =XSYMTAB 
 FINB     BSS    0
          LX5    18 
          SA4    =XLDMASK 
          IX6    X5+X4
          SA6    A4 
          SPACE  4
          IFNE   SYMTBLV,0,2                                             CONCARD
          SX6    COM08.                                                  CONCARD
          SA6    SYSTART     SYMBOL TABLE ORIGIN IF LCM RESIDENT. 
                                                                         CONCARD
*         GET OUR FL FROM THE SYSTEM                                     CONCARD
                                                                         CONCARD
          MEMORY SCM,FIELDLN,R                                           CONCARD
          SA1    FIELDLN           MAKE FIELDLN 60-BITS RJ               CONCARD
          BX6    X1                                                      CONCARD
          AX6    30                                                      CONCARD
          SA6    A1                                                      CONCARD
          SA6    VERY1FL           FL AT THE VERY START                  CONCARD
                                                                         CONCARD
          IFEQ   SYMTBLV,0,1                                             21FEB77
          SA6    STRTFLD     WILL BE USED IF HIGHER THAN MIN             CONCARD
                                                                         CONCARD
*         SETUPS FOR FL MANAGEMENT...                                    21FEB77
*         ASK HOW MUCH IS MAX...                                         21FEB77
                                                                         CONCARD
          MX6    29                                                      CONCARD
          SA6    MAXFIEL                                                 CONCARD
          MEMORY CM,MAXFIEL,R                                            CONCARD
          SA4    MAXFIEL                                                 CONCARD
          BX7    X4                                                      CONCARD
          AX7    30          RIGHT-JUSTIFY MAXFIEL. 
          SA7    A4 
                                                                         CONCARD
 #LEV     IFNE   SYMTBLV,0                                               CONCARD
*         GET LCMFL AND MAX LCMFL                                        CONCARD
                                                                         CONCARD
          MEMORY LCM,LCMFL,R                                             CONCARD
          MX6    29          SET BITS 59-30 TO -1,                       21FEB77
          SA6    MAXLCM                                                  21FEB77
          MEMORY LCM,MAXLCM,R    WHICH FINDS OUT MAX.                    21FEB77
          SA1    LCMFL             NOW MAKE THESE BOTH RJ NUMBERS        CONCARD
          SA2    MAXLCM                                                  CONCARD
          BX6    X1                                                      CONCARD
          BX7    X2                                                      CONCARD
          AX6    30                                                      CONCARD
          AX7    30                                                      CONCARD
          SA6    A1                                                      CONCARD
          SA6    VERY1LCF                                                CONCARD
          SA6    STRTFLD           WILL BE USED IF BIGGER THAN OUR MIN   CONCARD
          SA7    A2                                                      CONCARD
 #LEV     ENDIF                                                          CONCARD
                                                                         CONCARD
                                                                         CONCARD
*         SINCE IT IS POSSIBLE TO ALTER OPTIONS WITHIN A COMPILATION WE  CONCARD
*         SAVE THE OPTIONS SET AS A RESULT OF THE CONTROL CARD FOR THE   CONCARD
*         NEXT COMPILE                                                   CONCARD
                                                                         CONCARD
          SA1    OPTION                                                  CONCARD
          BX6    X1                                                      CONCARD
          SA6    SAVOPT      SAVE CONTROL CARD OPTIONS                   CONCARD
                                                                         21FEB77
*         SET FIRST WORD OF OUTBUF TO ZERO TO ENABLE CONTROL TO          SMPA105
*         DETERMINE WHETHER THE OUTPUT BUFFER NEEDS TO BE FLUSHED        SMPA105
*         AT THE END OF THE COMPILER RUN.                                SMPA105
                                                                         SMPA105
          MX7    0                                                       SMPA105
          SA7    OUTBUF                                                  SMPA105
                                                                         SMPA105
*         DETERMINE LWA OF THE (0,0) OVLY.  GET RIGHT NAME AND BITS FOR  21FEB77
*         OVERLAY CALL. . .                                              21FEB77
                                                                         21FEB77
          SB1    1                                                       CONCARD
          SA3    100B                                                    CONCARD
          SA5    101B                                                    CONCARD
          AX3    54                                                      CONCARD
          SX4    777754B                                                 CONCARD
          IX3    X3-X4                                                   CONCARD
          ZR     X3,SKIPP54                                              CONCARD
          SA5    65B         . NOT A 54 TABLE                            CONCARD
 SKIPP54  BSS    0                                                       CONCARD
          SX7    X5                                                      CONCARD
          SA7    LWA00       SAVE LWA OF 0,0                             CONCARD
          SA4    64B                                                     CONCARD
          SA5    65B                                                     CONCARD
          SA3    NUCLEUS                                                 CONCARD
          MX6    42                                                      CONCARD
          BX7    X6*X4       GET FILE OR LIBRARY NAME                    CONCARD
          IX6    X3-X7                                                   CONCARD
          ZR,X6  NUCL                                                    CONCARD
          ZR,X7  NUCL        ZERO MEANS LOAD FROM 'SYSOVL'               CONCARD
          SA7    LOAD        SAVE FILE/LIBRARY NAME                      CONCARD
 NUCL     BSS    0                                                       CONCARD
          LX5    59-18                                                   CONCARD
          NG     X5,OUT      CHECK FOR FILE LOAD                         CONCARD
          SA3    LDMASK      HERE FOR FILE LOAD                          CONCARD
          MX7    59                                                      CONCARD
          LX7    42                                                      CONCARD
          BX7    X7*X3       MASK OF LIBRARY LOAD BITS                   CONCARD
          SA7    A3                                                      CONCARD
 OUT      BSS    0                                                       CONCARD
                                                                         CONCARD
          MX1    0           PARAM FOR INITIAL CALL                      CONCARD
          RJ     =XMORESPC                                               21FEB77
INIT8     BSS    0                                                       CONCARD
                                                                         CONCARD
#LEV      IFNE   SYMTBLV,0     IF LCM, THAT DIDNT GET FL FOR COMPILER    CONCARD
          SA1    SYMTAB                                                  CONCARD
          SX6    X1+SCMPADD    ADD SLOP FOR LCM                          CONCARD
          SX6    X6+77B 
          AX6    6           ROUND UP TO MULTIPLE OF 100B.
          LX6    6
          SA6    FIELDLN                                                 CONCARD
          SA1    MAXFIEL
          IX2    X1-X6
          PL     X2,GETSCM   IF MAXFIEL LS FIELDLN ABORT
          MESSAGE (=C* -SYMPL-  INSUFFICIENT SCM FL*),,R
          RJ     =XABTEND 
 GETSCM   LX6    30          ELSE REQUEST SCM FIELDLN.
          SA6    ANS                                                     CONCARD
          MEMORY  CM,ANS,R                                               CONCARD
#LEV      ENDIF                                                          CONCARD
  
 #OS      IFNE   SYSNAME,SCOPE2 
  
*         BECAUSE NOS/BE CAN RUN ON A CYBER 176 (WHICH HAS LCM),
*         OR EITHER NOS OR NOS/BE CAN RUN ON AN MACHINE WITH ECS
*         WE SET SYSTEMN DYNAMICALLY.  SYSTEMN IS 
*         USED BY PF12 TO DETERMINE RESIDENCE OF LEVEL2 DATA.  THIS IS
*         NECESSARY SO THAT LEVEL2 RESIDENCE IS DETERMINED BY THE 
*         MACHINE THE COMPILER IS RUNNING ON AND NOT BY THE MACHINE THE 
*         COMPILER WAS BUILT ON 
*         (IN PARTICULAR THIS IS NECESSARY SO THAT A COMPILER THAT WAS
*         BUILT ON A LOWER CYBER CAN EXECUTE ON A CYBER 176 AND CREATE
*         AN LCM COMPILER)
*         NOTICE THE ONLY TIME WE NEED CHANGE SYSTEMN IS WHEN WE ARE
*         EXECUTING ON A CYBER 176 OR AN MACHINE WITH ECS BECAUSE 
*         THE COMPILER COULD HAVE BEEN CREATED ON A LOWER CYBER.
*         THE REVERSE DIRECTION IS NOT SUPPORTED. 
  
          GETMC  CELL1       GET MACHINE TYPE (AND OTHER JUNK)
          SA1    CELL1
          BX4    X1          BITS 19-18 NON-ZERO INDICATE TYPE OF 176 
          MX0    2
          LX4    59-19
          BX4    X0*X4
          NZ     X4,SYSNSET  THIS IS A CY176 - SET LCM FLAG 
  
          BX4    X1 
          LX4    59-20       BIT 20 IS ECS POSSIBLE FLAG
          PL     X4,SAMESYS  JIF NO ECS   (NO LCM ACTION) 
          BX4    X1 
          MX0    12          BITS 47-36 INDICATE SIZE OF ECS/1000 
          LX4    59-47       CHECK TO SEE IF ANY ECS IF PRESENTLY AVAIL 
          BX4    X0*X4
          ZR     X4,SAMESYS  JIF NO ECS (NO LCM ACTION) 
  
*         WE ARE EXECUTING ON A CYBER 176. LEVEL2 DATA GOES TO LCM
  
 SYSNSET  BSS    0           SET SYSTEMN TO SCOPE 2 (SHOW LCM AVAIL)
          SX7    2
          SA7    =XSYSTEMN
 SAMESYS  BSS    0
 #OS      ENDIF 
  
*         INITIALIZE PAGE SIZE PARAMETERS 
  
          GETPAGE  PGSIZE    GET PAGE SIZE PARAMETERS 
          SA3    PGSIZE      GET JOB PAGE SIZE PARAMETERS 
          MX0    -4 
          LX3    59-27       POSITION JPD 
          BX6    -X0*X3 
          SB7    X6-8 
          MX0    -8 
          LX3    8           POSITION JPS 
          BX6    -X0*X3 
          SA6    JPS         SET JPS
          NZ     B7,PD6      IF PRINT DENSITY IS NOT 8
          SA3    =8LT 8 LPI   SET JPD TO 8 LINES/INCH 
          BX6    X3 
          SA6    JPD
 PD6      BSS    0
  
          EQ   NISH                                                      CONCARD
  
 #RM      IFEQ   CP#RM,0
          TITLE  CFF - CHANGE FILE NAME IN FET
**        CFF - CHANGE FILE NAME IN FET 
* 
*         CHANGES FILE NAME IN FET RETAINING THE EXISTING MODE BIT AND
*         SETTING THE CIO COMPLETE BIT. 
* 
*         INPUT-
*                A3 = FET ADDRESS 
*                X3 = FET WORD 1
*                X4 = NEW FILE NAME LEFT-JUSTIFIED WITH ZERO-FILL 
* 
  
 CFF      BSS    1
          SX7    2
          BX3    X7*X3       EXTRACT FILE MODE BIT
          SX7    X3+1        TURN CIO COMPLETE BIT ON 
          IX7    X4+X7       42/NEW NAME,16/0,1/OLD MODE BIT,1/1
          SA7    A3          UPDATE FET WORD 1
          EQ     CFF
 #RM      ENDIF 
          TITLE  CONCARD - DATA AREA
 OLFN     DATA   -1 
 ILFN     DATA   L+INPUT+ 
 CLFN     DATA   L+COMPILE+ 
          DATA   H+COPYRIGHT CONTROL DATA CORPORATION 1972,1973,1974+ 
          DATA   H+,1975,1976,1977,1978,1979,1980,1981,1982.+ 
 ERROR    BSSZ   1
 ERRORCT  BSSZ   1
 MESSLST  CON    NUMPARM
          CON    =20
          CON    ERRORCT
          CON    =2 
ELSET     DATA   0           ZERO IF EL PARAMETER IS DEFAULTED
 APWARN   DATA   C+ -A- PARAMETER ACCEPTED AS ET=T +
 NUMPARM  DIS    0,* -SYMPL-  PARAMETER    IN ERROR*
 XROBMASK VFD    36/1,6/1,3/1,13/1,2/0    MASK FOR OPTIONS X-R-O-B. 
 LWORD    DATA   0                                                       JUNK 
 DBFORCD  DATA   0                                                       JUNK 
 DEBUGON  DIS    0,* -SYMPL-  DB OPTION FORCED ON *                      JUNK 
 WANDTR   VFD   3/1,34/1,23/0    TRACE AND W OPTIONS                     JUNK 
 LISTOP   DATA   0
 CELL1    BSSZ   1           TEMP FOR GETMC USAGE 
 PGSIZE   BSSZ   2           PAGE SIZE PARAMETER BLOCK
          TITLE  FETS/FITS AND I/O BUFFERS
*         FOLLOWING ARE THE I/O BUFFERS, FETS (AND FITS).  THEY ARE 
*         ORGED TO BUFORG.                                               21FEB77
*         FETS/FITS FOR ALL FILES EXCEPT CNS AND LGO ARE DECLARED HERE. 
*         ALL CIO BUFFERS EXCEPT FOR CNS, LGO, AND YFIL ARE ALSO HERE.
*         A FET/FIT AND BUFFER FOR LGO ARE DECLARED IN INIT40,
*         AND ALSO (FOR SYMPL TEXT GENERATION) IN INIT14. 
*         THE FET/FIT DECLARED HERE FOR YFI IS USED ONLY BY CONTROL 
*         TO CLOSE Y=FILES. 
*         A FET/FIT AND BUFFER FOR YFIL ARE DECLARED IN INIT15. 
*         THE FET/FIT AND BUFFER FOR CNS ARE DECLARED IN PHASE20. 
          SPACE  4
          ORG    BUFORG                                                  CONCARD
          SPACE  4
*         I/O BUFFERS 
*         FOR CRM I/O THESE ARE THE FILE HOLDING BUFFERS. 
*         FOR NON-CRM I/O THESE ARE THE CIO BUFFERS 
          SPACE  4
          ENTRY  CFLBUF 
          ENTRY  PSTBUF 
          ENTRY  CRFBUF 
          ENTRY  ICFBUF 
          ENTRY  OUTBUF                                                  SMPA105
          ENTRY  ILNBUF 
          SPACE  4
 CFLBUF   BSS    LC.CFL 
 PSTBUF   BSS    LC.PST 
 CRFBUF   BSS    LC.CRF 
 ICFBUF   EQU    CRFBUF 
 OUTBUF   BSS    LC.OUT 
 INBUF    BSS    LC.IN
 ILNBUF   BSS    LC.ILN 
          SPACE  4
*         ILFAT (ILNFAT) - FILE ASSOCIATION TABLE FOR THE INTERMEDIATE
*                          LANGUAGE FILE
* 
*         THIS TABLE RECORDS THE END OF RECORDS ON FILE ILN.  IT IS USED
*         TO DICTATE THE ORDER IN WHICH THE RECORDS OF THE ILN ARE READ.
*         AN ENTRY IS MADE DURING SYNTAX ANALYSIS BY ROUTINE HATCHK EACH
*         TIME A PROCEDURE IS BEGUN OR ENDED.  THE ENTRIES ARE LINKED 
*         SO THAT THE ILN CAN BE READ BY DECREASING LEVEL OF NESTING. 
  
          ENTRY  ILFAT
 ILFAT    BSS    ILSIZ
 ILNFAT   EQENT  ILFAT
          SPACE  4
*         THE FOLLOWING WORDS MUST REMAIN IN ORDER.  THEY ARE ADDRESSED 
*         BY ILN-M (M=1,2,3,4)
  
*         ILN-4 = CURRENT FILE POSITION OF ILN DURING WRITING PHASE 
*               = LAST FILE POSITION OF ILN DURING READING PHASE
*                 (THIS IS REALLY JUST THE NUMBER OF WORDS ON THE FILE+1
*                 FOR CRM THIS CORRESPONDS TO WA.  FOR DIRECT CIO THE 
*                 THE RSA AND OFFSET CAN BE CALCULATED FROM THIS. 
*         ILN-3 = NOT USED
*         ILN-2 = POINTER TO CURRENT ILNFAT ENTRY.
*         ILN-1 = NUMBER OF WORDS LEFT IN RECORD DURING READING PHASE 
  
          DATA   1
          BSSZ   3
          ENTRY  ILN
 ILN      BSS    0
          TITLE  FETS/FITS
*         FETS AND FITS 
          SPACE  4
*         CFL - CODE FILE 
  
          WFILE  CFL
          SPACE  4
*         CRF - CROSS REFERENCE FILE
  
          WFILE  CRF
          SPACE  4
*         ICF - INTERMEDIATE CODE FILE
  
          FET    ICF,ICFBUF,BINARY
 #RM      IFNE   CP#RM,0
          ENTRY  FI.ICF 
 FI.ICF   FILE   LFN="ICF",FO=WA,RT=U,MRL=(LC.ICF*10),EO=A,PD=IO,CF=U 
 #RM      ENDIF 
          SPACE  4
*         PST - PRESET FILE 
  
          WFILE  PST
          SPACE  4
*         ILN - INTERMEDIATE LANGUAGE FILE
  
          FET    ILN,ILNBUF,BINARY
 #RM      IFNE   CP#RM,0
          ENTRY  FI.ILN 
 FI.ILN   FILE   LFN="ILN",FO=WA,RT=U,MRL=(LC.ILN*10),PD=IO,EO=A,CF=U 
 #RM      ENDIF 
          SPACE  4
*         INPUT - SOURCE INPUT FILE 
  
          FET    IN,INBUF,CODED 
 #RM      IFNE   CP#RM,0,1
 FI.IN    FILE   LFN="IN",PD=INPUT,RT=W,EX=(=XABTEND),OF=N,CF=N 
          SPACE  4
*         OUTPUT - LISTABLE OUTPUT FILE 
  
          FET    OUT,OUTBUF,CODED 
 #RM      IFNE   CP#RM,0,1
 FI.OUT   FILE   LFN="OUT",PD=OUTPUT,RT=W,EX=(=XABTEND),OF=N,CF=N 
          SPACE  4
*         YFI - SYMPL TEXT INPUT FILES
  
          FET    YFI,ICFBUF,BINARY    ICFBUF IS NEVER USED BY YFI.
 #RM      IFNE   CP#RM,0               IT ONLY PROVIDES A DUMMY 
          ENTRY  FI.YFI                BUFFER ADDR HERE.
 FI.YFI   FILE   LFN="YFIL",RT=W,PD=INPUT,MRL=(LC.ICF*10) 
 #RM      ENDIF 
          SPACE  4
          SPACE  4
          END 
