*DECK     FTN                FTN5 MAIN OVERLAY
          IDENT  FTN
 FTN      SECT   (GLOBAL CELLS AND SYSTEM INTERFACE.) 
 FORTRAN  SPACE  4,10 
***       FORTRAN EXTENDED COMPILER - VERSION 5.
* 
*         BASED ON ANSI X3.9-1978 FORTRAN.
* 
*         CONTROL DATA  PROPRIETARY PRODUCT.
*         COPYRIGHT CONTROL DATA CORP. 1979, 1980, 1981, 1982.
 FTN      SPACE  4
***       FTN - 0.0 OVERLAY OF THE FORTRAN EXTENDED COMPILER
* 
*         CONTENTS
*                COMPILER INSTALLATION PARAMETERS 
*                INTERMIXED COMPASS COMMUNICATION CELLS 
*                SYSTEM INTERFACE SUBROUTINES 
*                FILE MANAGEMENT TABLES 
*                COMPILER GLOBAL CELLS
*                CONTROL STATEMENT OPTION CELLS 
*                COMPILER OVERLAY LOADER
*                COMPILER TERMINATION ROUTINES
 OPTIONS  TITLE  COMPILER INSTALLATION PARAMETERS 
***       COMPILER INSTALLATION PARAMETERS. 
* 
*         THE FOLLOWING OPTIONS MAY BE CHANGED TO MEET INSTALLATION 
*         NEEDS.  THEY ARE LOCATED HERE (RATHER THAN IN THE *OPTIONS* 
*         COMDECK) TO REDUCE THE SIZE OF THE GLOBAL ASSEMBLY TEXT 
*         *FTN5TXT* AND MINIMIZE THE FIELD LENGTH NEEDED FOR ASSEMBLY.
 CONFIG   SPACE  4,10 
***       COMPILER CONFIGURATION. 
* 
* 
*         FTN CAN BE ASSEMBLED IN A *SYSTEM* OR A *TEST* CONFIGURATION. 
* 
*         THE SYSTEM CONFIGURATION IS STANDARD, AND IS INTENDED FOR 
*         CUSTOMER INSTALLATION.
* 
*         THE TEST CONFIGURATION IS INTENDED FOR COMPILER INTERNAL
*         DEBUGGING.  IT IS NOT STRUCTURED FOR SYSTEM INSTALLATION, 
*         REQUIRES MORE FIELD LENGTH, AND COMPILES MORE SLOWLY IN THIS
*         MODE.  THUS, IT IS NEITHER SUITED TO NOR INTENDED FOR USE BY
*         CUSTOMERS.  CONTROL DATA CORP. WILL NOT BE RESPONSIBLE FOR
*         DEFICIENCIES IN TEST MODE COMPILER PERFORMANCE. 
* 
*         COMPILER CONFIGURATION IS CONTROLLED BY THE DEFINITION OR 
*         UNDEFINITION OF THE *UPDATE* SYMBOL *TESTFTN* AT COMPILER 
*         INSTALLATION TIME.  NON-STANDARD PROCEDURES ARE NECESSARY FOR 
*         INSTALLATION IN THE TEST CONFIGURATION. 
 OPTIONS   SPACE 4,10 
***       FTN CONTROL STATEMENT.
* 
* 
* 
*  THE  FTN CONTROL STATEMENT CONFORMS TO OPERATING SYSTEM REQUIREMENTS 
*  FOR CONTROL STATEMENTS, HAVING  THE  KEYWORD  FTN  AND  AN  OPTIONAL 
*  PARAMETER LIST.
* 
*         TERMINOLOGY 
* 
*         -  PARAMETER   -  THE  KEYWORD  USED  IN  SPECIFYING  CONTROL 
*            STATEMENT INFORMATION. 
* 
*         -  OPTION - ONE OF A SET OF VALUES ASSIGNED TO A PARAMETER. 
* 
*         -  FIRST DEFAULT (ABBREVIATED FD) - THE  DEFAULT  VALUE  USED 
*            FOR  A PARAMETER WHEN THE PARAMETER DOES NOT APPEAR IN THE 
*            CONTROL STATEMENT.  IT IS INSTALLATION CHANGEABLE. 
* 
*         -  SECOND DEFAULT (ABBREVIATED SD) - THE DEFAULT  VALUE  USED 
*            FOR  A  PARAMETER  WHEN  ONLY THE KEYWORD APPEARS ON THE 
*            CONTROL STATEMENT.  IT IS NOT INSTALLATION CHANGEABLE. 
* 
*         -  INITIAL VALUE  (ABBREVIATED  IV)  -  THE  VALUE  INITIALLY 
*            ASSIGNED TO A MULTIPLE BINARY VALUE PARAMETER (SEE BELOW). 
*            IT IS INSTALLATION CHANGEABLE. 
* 
*         TYPES OF PARAMETERS 
* 
*         THE CONTROL STATEMENT MAY CONTAIN THREE TYPES OF  PARAMETERS. 
* 
*         BINARY VALUE PARAMETER
* 
*         A  BINARY  VALUE  PARAMETER  HAS TWO POSSIBLE SETTINGS (ON OR 
*         OFF).  THE FIRST DEFAULT IS USED  IF  THE  PARAMETER  IS  NOT 
*         SPECIFIED  ON  THE  CONTROL  STATEMENT.  SPECIFICATION OF THE 
*         KEYWORD ALONE  TURNS  THE  PARAMETER  ON  REGARDLESS  OF  THE 
*         DEFAULT.   SPECIFICATION OF "PARAMETER=0" TURNS THE PARAMETER 
*         OFF REGARDLESS OF THE DEFAULT.
* 
*         SPECIFIED VALUE PARAMETER 
* 
*         SPECIFIED VALUE PARAMETERS PROVIDE THE PROCESSOR WITH  VALUES 
*         FOR  SUCH  THINGS  AS  FILE  NAMES, PAGE SIZE, ETC.  MULTIPLE 
*         VALUES ARE SEPARATED BY SLASHES.
* 
*         IF A SPECIFIED VALUE PARAMETER IS OMITTED THE  FIRST  DEFAULT 
*         IS  USED.   IF  ONLY  THE  PARAMETER NAME IS SPECIFIED ON THE 
*         CONTROL  STATEMENT  THE  SECOND  DEFAULT  IS  USED.  IF   THE 
*         PARAMETER IS SPECIFIED WITH A VALUE, THE VALUE IS USED. 
* 
*         MULTIPLE BINARY VALUE PARAMETERS
* 
*         IT  IS  CONVENIENT  TO  COMBINE  A  NUMBER  OF RELATED BINARY 
*         PARAMETERS AS OPTIONS OF A SINGLE PARAMETER.   THIS  TYPE  OF 
*         PARAMETER IS CALLED A MULTIPLE BINARY VALUE PARAMETER.
* 
*         THE FORM OF A MULTIPLE BINARY VALUE PARAMETER IS
* 
*             PARAMETER=OP/OP/OP... 
* 
*         IF THE  PARAMETER IS OMITTED THE FIRST DEFAULT VALUE IS USED. 
*         IF ONLY THE PARAMETER NAME IS SPECIFIED, THE  SECOND  DEFAULT 
*         IS  USED.   IF  THE  FULL  FORM  IS  PRESENT,  THE  FOLLOWING 
*         ALGORITHM IS APPLIED
* 
*             1.  INITIALLY, INITIAL VALUE OPTIONS ARE SELECTED.
* 
*             2.  THE OPTION LIST IS SCANNED FROM LEFT TO RIGHT.
* 
*             3.  "-OP" DESELECTS THE SPECIFIED OPTION. 
* 
*             4.  "OP" ADDS TO THE OPTIONS SELECTED.
* 
*             5.  "0" (ZERO) DESELECTS ALL PREVIOUSLY SELECTED OPTIONS. 
* 
*         MULTIPLE APPEARANCES
* 
*         IF A PARAMETER APPEARS MORE THAN ONCE IN A CONTROL STATEMENT, 
*         THE CONTROL STATEMENT IS IN ERROR.  THE  PROCESSOR  WILL  NOT 
*         PERFORM  THE  REQUESTED  ACTION  AND WILL ABORT TO AN EXIT(S) 
*         WITH NO DUMP IF THE SYSTEM SUPPORTS THAT FACILITY.  THE  ONLY 
*         EXCEPTIONS  TO  THIS  RULE  ARE THE G AND S PARAMETERS, WHERE 
*         MULTIPLE APPEARANCES ADD TO THE SET OF TEXTS SPECIFIED. 
* 
*         THE FOLLOWING PARAMETERS ARE DEFINED. 
* 
*          PARAMETER                   DESCRIPTION
* 
*           AL       THIS PARAMETER SELECTS PLACEMENT OF ALL COMMON 
*                    BLOCKS IN LCM OR UEM UNLESS OVERRIDDEN BY AN EXPLICIT
*                    *LEVEL* STATEMENT.  ALL ELEMENTS OF SUCH A COMMON
*                    BLOCK ARE TREATED AS LEVEL 2 ITEMS. ALL DUMMY ARGS 
*                    OF SUBROUTINES AND FUNCTIONS WILL BE TREATED AS IF 
*                    LEVEL 0 HAD BEEN SPECIFIED FOR THEM UNLESS AN EXPLICIT 
*                    *LEVEL* DECLARATION OVERRIDES. 
* 
*                    BINARY VALUE PARAMETER: FD=0, SD=AUTOMATIC LEVEL 2 AND 0.
* 
*           ANSI=OP  ANSI DIAGNOSTICS.
*                    THIS PARAMETER SPECIFIES WHETHER USE OF NON ANSI 
*                    EXTENSIONS IS TO BE DIAGNOSED AND IF SO, HOW 
*                    SEVERELY.  THE DEFINED VALUES OF "OP" ARE: 
* 
*                     0   NO ANSI DIAGNOSTICS.
* 
*                     T   TRIVIAL ERROR. ANSI ERRORS ARE TREATED AS 
*                         ERRORS WITH THIS SEVERITY.
* 
*                     F   FATAL ERROR. NON-ANSI USAGES RESULT IN A FATAL
*                         ERROR.
* 
*                    SPECIFIED VALUE PARAMETER: FD=0, SD=T. 
* 
*           ARG=ATTR ARGUMENT LIST ATTRIBUTES.
*                    THIS PARAMETER SPECIFIES ATTRIBUTES OF EXTERNAL
*                    PROCEDURE ARGUMENT LISTS GENERATED BY THE PROCESSOR
*                    THE DEFINED OPTIONS ARE: 
* 
*                    COMMON  ARGUMENT LISTS GENERATED FOR EXTERNAL
*                            PROCEDURES WILL BE OF THE FORM SPECIFIED 
*                            FOR INTER-LANGUAGE COMMUNICATION. (SEE 
*                            DAP DCS S1518) 
* 
*                    FIXED   FOR EACH EXTERNAL PROCEDURE IN THE 
*                            EXECUTABLE PROGRAM, ALL ITS REFERENCES HAVE
*                            THE SAME NUMBER OF ARGUMENTS.  (THE
*                            PROCESSOR GENERATED ARGUMENT LISTS WILL NOT
*                            CONTAIN A ZERO TERMINATOR.)
* 
*                    MULTIPLE BINARY VALUE PARAMETER:  FD=0, SD=-COMMON/
*                    FIXED, IV=0.  COMMON IMPLIES -FIXED.  SPECIFICATION
*                    OF BOTH COMMON AND FIXED IS NOT PERMITTED. 
* 
*           B=LFN    BINARY OUTPUT FILE.
*                    THIS PARAMETER SPECIFIES THE FILE WHICH IS TO CONT-
*                    AIN THE BINARY OUTPUT INFORMATION.  B=0 INDICATES
*                    THAT NO BINARY SHOULD BE WRITTEN.
* 
*                    SPECIFIED VALUE PARAMETER: FD=LGO, SD=BIN. 
* 
*           BL       BURSTABLE LISTING. 
*                    THIS PARAMETER CONTROLS PAGE EJECTS IN THE LISTING 
*                    PRODUCED BY THE PROCESSOR. SETTING BL OFF MINIMIZES
*                    PAGE EJECTS AND CONSERVES PAPER. SETTING BL ON 
*                    CAUSES PAGE EJECTS BETWEEN THE PROGRAM UNIT SOURCE 
*                    LISTING, THE CROSS REFERENCE-ATTRIBUTES-MAP LISTING
*                    AND THE OBJECT CODE LISTING. IT ALSO ENSURES THAT
*                    EACH PROGRAM UNIT LISTING CONTAINS AN EVEN NUMBER
*                    OF PAGES, ISSUING A BLANK PAGE AT THE END, IF
*                    NECESSARY. 
* 
*                    BINARY VALUE PARAMETER: FD=0, SD=ISSUE ALL PAGE
*                    EJECTS.
* 
*           CS=SEQ   COLLATING SEQUENCE.
*                    THIS PARAMETER SPECIFIES THE WEIGHT TABLE TO BE
*                    USED FOR THE EVALUATION OF CHARACTER RELATIONAL
*                    EXPRESSIONS.  (SEE SECTION 3.1.5 AND APPENDIX A, 
*                    ERS). THE DEFINED VALUES OF "SEQ" ARE: 
* 
*                    USER     USER SPECIFIED WEIGHT TABLE.
* 
*                    FIXED    FIXED WEIGHT TABLE. 
* 
*                    SPECIFIED VALUE PARAMETER: FD=USER, SD=FIXED.  THE 
*                    EFFECT OF THIS PARAMETER CAN BE OVERRIDDEN BY USE
*                    OF THE COLLATE DIRECTIVE (3.7.3).
* 
*           DB=OP    DEBUGGING OPTION.
*                    THIS PARAMETER SELECTS DEBUGGING OPTIONS.  MULTIPLE
*                    OPTIONS MAY BE SPECIFIED.  THE FOLLOWING OPTIONS 
*                    ARE AVAILABLE: 
* 
*                    TB  ERROR TRACEBACK.  THIS OPTION SELECTS ERROR
*                        TRACEBACK UPON DETECTION OF AN ERROR IN A
*                        LIBRARY ROUTINE. 
* 
*                    SB  SUBSCRIPT BOUNDS CHECK.  THIS OPTION SELECTS 
*                        CHECKING OF ARRAY ELEMENT REFERENCES TO ENSURE 
*                        THAT ALL REFERENCES ARE WITHIN THE ARRAY.
* 
*                    SL  SUBSTRING LIMITS CHECK.  THIS OPTION SELECTS 
*                        CHECKING OF CHARACTER SUBSTRING EXPRESSIONS
*                        TO ENSURE THAT THE SUBSTRING REFERENCES ARE
*                        WITHIN THE STRING. 
* 
*                    ER  ERROR RECOVERY.  THIS OPTION SELECTS OBJECT
*                        TIME REPRIEVE OF EXECUTION ERRORS DETECTED BY
*                        THE OPERATING SYSTEM.  THE ERROR MESSAGE IDENT-
*                        IFIES THE PROGRAM UNIT AND LINE NUMBER CONTAIN-
*                        ING THE ERROR. 
* 
*                    ID  INTERACTIVE DEBUG.  THIS OPTION SELECTS BOTH 
*                        THE OBJECT CODE AND THE SYMBOL AND LINE NUMBER 
*                        TABLES REQUIRED BY INTERACTIVE DEBUG.  THE 
*                        TABLES ARE PRODUCED ON THE BINARY OUTPUT FILE. 
*                        THESE ACTIONS ALSO TAKE PLACE IF THE PROCESSOR 
*                        ENVIRONMENT HAS INTERACTIVE DEBUG SELECTED.
*                        DB=-ID WILL SUPPRESS THESE ACTIONS REGARDLESS
*                        OF THE PROCESSOR ENVIRONMENT.
* 
*                    PMD POST MORTEM DUMP.
* 
*                    ST  SYMBOL TABLE TO BINARY.  THIS OPTION SPECIFIES 
*                        THAT THE SYMBOL AND LINE NUMBER TABLES REQUIRED
*                        BY INTERACTIVE DEBUG ARE TO BE PRODUCED IN THE 
*                        BINARY OUTPUT FILE.  THIS ACTION ALSO TAKES
*                        PLACE IF THE PROCESSOR ENVIRONMENT HAS INTER-
*                        ACTIVE DEBUG SELECTED.  DB=-ST WILL SUPPRESS 
*                        SYMBOL AND LINE NUMBER TABLES REGARDLESS OF THE
*                        PROCESSOR ENVIRONMENT. 
* 
*                    MULTIPLE BINARY VALUE PARAMETER:  FD=0,
*                    SD=TB/SB/SL/ER/PMD,
*                    IV=TB/SB/SL/ER/PMD.
* 
*           DO=OP    DO LOOP CONTROL. 
*                    THIS PARAMETER SPECIFIES THE MANNER IN WHICH DO
*                    LOOPS ARE TO BE INTERPRETED BY THE PROCESSOR.  THE 
*                    FOLLOWING OPTIONS ARE AVAIABLE:  
* 
*                    LONG  LONG LOOPS. THIS OPTION SELECTS THE PROCESS- 
*                          ING OF DO LOOPS THAT PERMITS THE TRIP COUNT
*                          COUNT TO EXCEED 131,071. 
* 
*                    OT    ONE TRIP LOOPS. THIS OPTION SELECTS THE MINI-
*                          MUM TRIP COUNT FOR DO LOOPS TO BE ONE. SET-
*                          TING THIS OPTION FREQUENTLY RESULTS IN MORE
*                          EFFICIENT PROGRAM EXECUTION.  MOST DO LOOPS
*                          HAVE AN ITERATION COUNT OF AT LEAST ONE AND
*                          EXECUTE CORRECTLY UNDER EITHER SETTING OF THE
*                          DO PARAMETER, HOWEVER, IF A DO LOOP HAS AN 
*                          ITERATION COUNT OF ZERO AND DO=OT IS SPECI-
*                          IFIED, THE PROGRAM MAY NOT EXECUTE CORRECTLY.
* 
*                    MULTIPLE BINARY VALUE  PARAMETER:  FD=0, SD=OT,
*                    IV=0.  THE EFFECTS OF THESE OPTIONS CAN BE OVER- 
*                    RIDDEN BY USE OF THE DO DIRECTIVE (ERS, 3.4.5).
* 
*           DS       DIRECTIVE SUPPRESSION. 
*                    THIS PARAMETER SUPPRESSES THE RECOGNITION OF C$
*                    DIRECTIVES, SO THAT THEY ARE TREATED AS COMMENTS.
* 
*                    BINARY VALUE  PARAMETER:  FD=0,  SD=SUPPRESS 
*                    DIRECTIVE RECOGNITION. 
* 
*           EC       USE EXTENDED MEMORY FOR OPT=2 COMPILE TIME TABLES. 
*                    THIS OPTION ALLOWS CCG TO USE ECS/LCM AT COMPILE 
*                    TIME TO AVOID RANDOM I/O MANAGEMENT FOR PROGRAM
*                    BLOCKS. CT.ECS MUST BE NONZERO (SEE *OPTIONS*) AT
*                    BUILD TIME FOR THIS OPTION TO BE MEANINGFUL. 
* 
*                    BINARY VALUE PARAMETER:  FD=USE AS AVAIL,  SD=FD.
* 
*           E=LFN    ERROR FILE.
*                    THIS PARAMETER SPECIFIES THE FILE NAME TO RECEIVE
*                    ERROR LISTING INFORMATION.  IN THE EVENT OF AN 
*                    ERROR (OF EL SPECIFIED SEVERITY OR HIGHER) THE 
*                    ERROR LINE AND DIAGNOSTIC ARE WRITTEN TO THE E 
*                    FILE.  IF FULL LISTING IS ON (L PARAMETER), THE
*                    ERROR LINE AND DIAGNOSTIC ARE ALSO WRITTEN TO THE L
*                    FILE.  IF THE LFN OF THE E FILE IS THE SAME LFN AS 
*                    THE L FILE, THEN THE ERROR LINE AND DIAGNOSTIC ARE 
*                    NOT WRITTEN TO THE E FILE. 
* 
*                    SPECIFIED VALUE PARAMETER:  FD=OUTPUT, SD=ERRS.
*                    E=0 IS AN ERROR. 
* 
*           EL=OP    ERROR LEVEL. 
*                    THIS OPTION INDICATES THE SEVERITY LEVEL OF ERRORS 
*                    TO BE PRINTED ON THE USER'S LISTING.  THE LEVELS 
*                    ARE ORDERED BY INCREASING SERVERITY.  SPECIFICATION
*                    OF A PARTICULAR LEVEL SELECTS THAT LEVEL AND ALL 
*                    MORE SEVERE LEVELS.  THE LEVELS IN INCREASING ORDER
*                    OF SEVERITY ARE: 
* 
*                    D   DEBUG.  THIS IS USED BY THE MAINTENANCE PROJECT
*                        TO FLAG COMPILER OPERATION.  TEST MODE ONLY. 
* 
*                    T   TRIVIAL.   THIS IS USED TO FLAG A SUSPICIOUS 
*                        USAGE.  THE SYNTAX IS CORRECT BUT THE USAGE IS 
*                        QUESTIONABLE.
* 
*                    W   WARNING.  THIS IS AN ERROR WHERE THE SYNTAX IS 
*                        INCORRECT BUT THE PROCESSOR HAS MADE AN ASSUMP-
*                        TION (SUCH AS ADDING A COMMA) AND CONTINUED. 
* 
*                    F   FATAL.  THIS IS AN ERROR WHICH PREVENTS THE
*                        PROCESSOR FROM PROCESSING THE STATEMENT IN 
*                        WHICH IT OCCURS.  UNRESOLVABLE SEMANTIC ERRORS 
*                        ALSO FALL INTO THIS CLASS. SUCH ERRORS MAY NOT 
*                        RELATE TO A SPECIFIC STATEMENT IN THE PROGRAM
*                        UNIT.
* 
*                    C   CATASTROPHIC.  THIS CLASS OF ERROR IS FATAL TO 
*                        COMPILATION. THE PROCESSOR IS UNABLE TO CONTIN-
*                        UE PROCESSING THE CURRENT PROGRAM UNIT. HOWEVER
*                        IT WILL ADVANCE TO THE END OF THE CURRENT PRO- 
*                        GRAM UNIT AND ATTEMPT TO PROCESS A SUBSEQUENT
*                        UNIT.
* 
*                    SPECIFIED VALUE PARAMETER:  FD=T, SD=F.
*                    EL=0 IS AN ERROR.
*                    ERROR. 
* 
*           ET=OP    ERROR TERMINATE. 
*                    THIS PARAMETER SPECIFIES THE ACTION TO BE TAKEN BY 
*                    THE PROCESSOR WHEN IT IS FINISHED  COMPILING.   ET 
*                    MAY  BE  SPECIFIED  WITH  A VALUE OF T, W, F, OR C 
*                    (SEE EL FOR MEANINGS).  IF  ET  IS  SELECTED,  AND 
*                    THERE  WERE  ERRORS  OF  THE SPECIFIED SEVERITY OR 
*                    HIGHER, ABORT THE JOB STEP TO AN EXIT(S).  IF ET=0 
*                    IS  SELECTED,  DO  NOT  ABORT THE JOB STEP EVEN IF 
*                    ERRORS ARE ENCOUNTERED.  T OR W ERRORS WILL ALWAYS 
*                    PRODUCE  A  GOOD BINARY BUT THE ET PARAMETER STILL 
*                    ALLOWS THE JOB STEP TO BE  ABORTED  IF  ERRORS  OF 
*                    THIS  SEVERITY  OCCUR.   F  OR C LEVEL ERRORS WILL 
*                    PRODUCE A SHORT, BAD BINARY  SUFFICIENT  TO  ABORT 
*                    THE LOADER UNLESS THE B OPTION OF DB IS SPECIFIED. 
* 
*                    BINARY VALUE PARAMETER : FD=0, SD=F. 
* 
*           G=GT     GET SYSTEMS TEXT FROM A FILE.
*                    THE OPTION "GT" SPECIFIES THE NAME OF THE FILE TO
*                    BE READ TO OBTAIN A SYSTEM TEXT. THE OPTION "GT" 
*                    MAY HAVE ONE OF THE FORMS: 
* 
*                        1.  LFN
*                        2.  LFN-RECNAME
*                        3.  0
* 
*                    FORM 1 SPECIFIES THE FILE "LFN" AS THE SOURCE OF 
*                    THE SYSTEMS TEXT. FORM 2 SPECIFIES THE NAME OF THE 
*                    RECORD "RECNAME") ON FILE "LFN" WHIGH IS TO BE THE 
*                    SOURCE OF THE SYSTEMS TEXT. MULTIPLE TEXT NAMES ARE
*                    SPECIFIED BY SEPARATING THEM WITH SLASHES.  NOTE 
*                    THAT THE TOTAL NUMBER OF SYSTEM TEXTS ALLOWED (SEE 
*                    S PARAMETER) FROM FILES AND THE SYSTEM IS RESTRICT-
*                    ED BY THE PROCESSOR TO SEVEN. IF G=0 IS SPECIFIED
*                    AND ANY OTHER G=GT IS SPECIFIED (IN ANY ORDER), THE
*                    G=0 IS IGNORED.
* 
*                    SPECIFIED VALUE PARAMETER WITH MULTIPLE VALUES:  
*                    FD=0, SD=SYSTEXT AND NO RECORD NAME. 
* 
*           GO       COMPILE AND EXECUTE. 
*                    THIS PARAMETER SPECIFIES A COMPILE AND GO MODE OF
*                    OPERATION.  GO=0 SPECIFIES NO EXECUTION.  GO MEANS 
*                    COMPILE AND GO.
* 
*                    BINARY VALUE PARAMETER: FD=0, SD=COMPILE AND GO. 
* 
*           I=LFN    INPUT FILE.
*                    THIS PARAMETER SPECIFIES THE SOURCE INPUT FILE TO
*                    THE PROCESSOR. 
* 
*                    SPECIFIED VALUE PARAMETER:  FD=INPUT,  SD=COMPILE. 
*                    I=0 IS AN ERROR. 
* 
*           L=LFN    LISTING FILE.
*                    THIS PARAMETER SPECIFIES THE FILE WHERE THE PROCES-
*                    SOR WRITES THE SOURCE LISTING, DIAGNOSTICS, AND ANY
*                    ADDITIONAL LIST INFORMATION (SEE LO PARAMETER).
* 
*                    SPECIFIED VALUE PARAMETER: FD=OUTPUT, SD=LIST. 
*                    (L=0 SURPRESSES ALL LISTING).
* 
*           LCM=MODE LCM OR ECS STORAGE ACCESS. 
*                    THIS PARAMETER SPECIFIES THE REQUIREMENTS ON ADDR- 
*                    ESS SIZE FOR DATA IN LCM OR ECS STORAGE. (SEE SECT.
*                    8.10 LEVEL STATEMENT.) THE DEFINED VALUES OF "MODE"
*                    ARE: 
* 
*                    D   DIRECT MODE ADDRESSING. THIS IS THE MOST EFFIC-
*                        IENT MODE WHEN LCM OR ECS FIELD LENGTH DOES NOT
*                        EXCEED 131,071 WORDS.  IF LCM OR ECS FIELD 
*                        LENGTH EXCEEDS 131,071 WORDS, D MODE ADDRESSING
*                        IS AN ERROR. 
* 
*                    I   INDIRECT MODE ADDRESSING. THIS IS THE MOST EFF-
*                        ICIENT MODE WHEN LCM OR ECS FIELD LENGTH EXCEED
*                        131,071 WORDS BUT NO SINGLE COMMON BLOCK IS
*                        LARGER THAN 131,071 WORDS. IF ANY COMMON BLOCK 
*                        IS LARGER THAN 131,071 WORDS, I MODE ADDRESSING
*                        IS AN ERROR. 
* 
*                    G   GIANT MODE ADDRESSING. THIS IS THE MODE REQUIR-
*                        ED IF ANY SINGLE COMMON BLOCK IS LARGER THAN 
*                        131,071 WORDS.  LCM=G IMPLIES DO=LONG. 
* 
*                    SPECIFIED VALUE PARAMETER: FD=D, SD=I. 
* 
*           LO=OP    LISTING OPTIONS. 
*                    THE OPTIONS OF THIS PARAMETER SPECIFY WHAT INFORM- 
*                    ATION WILL APPEAR ON THE LIST FILE (L PARAMETER).
*                    MULTIPLE OPTIONS MAY BE SPECIFIED.  THE DEFINED
*                    OPTIONS ARE: 
* 
*                    A   ATTRIBUTES.  A LIST OF PROGRAM ENTITIES AND
*                        THEIR ATTRIBUTES (DATA TYPE, CLASS, ETC.)
* 
*                    C   COMDECK.  LISTING CONTROL FOR COMDECKS.
* 
*                    M   MAP.  A CORRELATION OF PROGRAM ENTITIES AND
*                        PHYSICAL STORAGE.
* 
*                    O   OBJECT CODE LISTING. A LISTING OF THE GENERATED
*                        OBJECT CODE WITH COMPASS MNEMONICS.
* 
*                    R   CROSS REFERENCE LISTING.  A CROSS REFERENCE OF 
*                        PROGRAM ENTITIES SHOWING LOCATIONS OF DEFIN- 
*                        ITION AND USE WITHIN THE PROGRAM.
* 
*                    S   SOURCE.  SOURCE LISTING OF THE PROGRAM.
* 
*                    MULTIPLE BINARY VALUE PARAMETER: FD=S/A, SD=S/A/R, 
*                    IV=S/A.  THE EFFECTS OF THE SPECIFIED OPTIONS CAN
*                    BE CONTROLLED BY USE OF THE LIST DIRECTIVE (3.7.1).
* 
*           ML=STR   MODLEVEL MICRO VALUE.
*                    THIS PARAMETER SPECIFIES THE VALUE OF THE MODLEVEL 
*                    MICRO USED BY COMPASS. THE STRING "STR" CONSISTS OF
*                    1 TO 9 LETTERS AND DIGITS. IF ML IS SPECIFIED WITH 
*                    NO STRING, THE VALUE USED IS THE CURRENT JULIAN
*                    DATE IN THE FORM YYDDD, WHERE YY IS THE YEAR AND 
*                    DDD IS THE NUMBER OF DAYS WITHIN THE YEAR. 
* 
*                    SPECIFIED VALUE PARAMETER: FD=JULIAN DATE, 
*                    SD=JULIAN DATE.
* 
*           MD=OP    MACHINE DEPENDENT DIAGNOSTICS. 
*                    THIS PARAMETER SPECIFIES WHETHER USE OF MACHINE
*                    DEPENDENT LANGUAGE FEATURES IS TO BE DIAGNOSED,
*                    AND IF SO, HOW SEVERLY. THE DEFINED VALUES 
*                    OF "OP" ARE :  
* 
*                    0   NO MACHINE DEPENDENT DIAGNOSTICS 
* 
*                    T   TRIVIAL ERROR.  USES OF MACHINE DEPENDENT
*                        FEATURES ARE TREATED AS ERRORS WITH THIS 
*                        SEVERITY.
* 
*                    F   FATAL ERROR. USE OF MACHINE DEPENDENT
*                        FEATURE RESULTS IN A FATAL ERROR.
* 
*                    SPECIFIED VALUE PARAMETER : FD=0, SD=T.
* 
*           OPT=N    OPTIMIZATION LEVEL.
*                    THIS PARAMETER SPECIFIES THE LEVEL OF OPTIMIZATION 
*                    PERFORMED BY THE PROCESSOR.  THE FOLLOWING OPTIONS 
*                    ARE AVAILABLE: 
* 
*                    0   MINIMUM OPTIMIZATION.  FASTEST COMPILATION.
* 
*                    1   INTERMEDIATE OPTIMIZATION. 
* 
*                    2   MAXIMUM OPTIMIZATION.  SLOWEST COMPILATION.
* 
*                    3   OPT 2, PLUS POTENTIALLY UNSAFE OPTIMIZATIONS.
* 
*                    SPECIFIED VALUE PARAMETER: FD=0,SD=2.
* 
*           PD=N     PRINT DENSITY. 
*                    THIS PARAMETER SPECIFIES THE PRINT DENSITY FOR ALL 
*                    PRINTABLE OUTPUT (L AND E FILES).  THE DESTINATION 
*                    PRINTER MUST BE CAPABLE OF SUPPORTING THE SELECTED 
*                    DENSITY. FOR CONNECTED INTERACTIVE TERMINALS, DEN- 
*                    SITY SELECTION IS SUPPRESSED. THE DEFINED VALUES OF
*                    "N" ARE: 
* 
*                        6   SIX LINES/INCH - SINGLE SPACED.
* 
*                        8   EIGHT LINES/INCH - SINGLE SPACED.
* 
*                    SPECIFIED VALUE PARAMETER: FD=JOB DEFAULT, SD=8. 
* 
*           PL       PRINT LIMIT. 
*                    THIS PARAMETER SPECIFIES THE MAXIMUM NUMBER OF 
*                    RECORDS (PRINT LINES) THAT THE EXECUTING PROGRAM 
*                    MAY WRITE TO THE FILE OUTPUT.  THE LL PARAMETER IS 
*                    OPERATIVE ONLY WHEN THE PROCESSOR RECEIVES A MAIN
*                    PROGRAM. 
* 
*                    SPECIFIED VALUE PARAMETER: FD=5000, SD=50000.
* 
* 
*           PN       PAGINATION.
*                    THIS PARAMETER SPECIFIES THAT PAGE NUMBERING OF THE
*                    OUTPUT LISTING IS CONTINUOUS FROM PROGRAM UNIT TO
*                    PROGRAM UNIT (INCLUDING INTERMIXED COMPASS OUTPUT).
*                    P=0  MEANS THAT PAGE NUMBERS BEGIN AT 1 FOR EACH 
*                    PROGRAM UNIT.
* 
*                    BINARY VALUE PARAMETER: FD=0, SD=CONTINUOUS PAGE 
*                    NUMBERING. 
* 
*           PS=N     PAGE SIZE. 
*                    THIS PARAMETER SPECIFES THE NUMBER OF LINES ON A 
*                    PRINTER PAGE. THE VALUE OF "N" DOES NOT INCLUDE
*                    SPACE FOR TOP AND BOTTOM MARGINS. A VALUE OF "N" 
*                    LESS THAN 4 IS AN ERROR. 
* 
*                    SPECIFIED VALUE PARAMETER: FD=JOB DEFAULT, SD
*                    IS AN ERROR. 
* 
*           PW=N     PAGE WIDTH.
*                    THIS PARAMETER SPECIFIES THE WIDTH OF THE OUTPUT 
*                    LINE. THE PROCESSOR WILL ACCOMODATE THE SHORTER
*                    LINE LENGTH BY REFORMATTING RATHER THAN STRICT 
*                    TRUNCATION.  A VALUE OF "N" LESS THAN 50 OR GREATER
*                    THAN 136 IS AN ERROR.
* 
*                    SPECIFIED VALUE PARAMETER: FD=JOB DEFAULT, SD=72.
* 
*           QC       QUICK SYNTAX CHECK.
*                    THIS PARAMETER SPECIFIES THAT THE PROCESSOR IS TO
*                    PERFORM A SYNTAX CHECK OF THE PROGRAM. NO OBJECT 
*                    CODE IS PRODUCED.
* 
*                    BINARY  VALUE  PARAMETER:  FD=0,  SD=QUICK  SYNTAX 
*                    CHECK. 
* 
*           REW=P    REWIND FILES.
*                    THIS PARAMETER SPECIFIES WHICH FILES ARE TO BE RE- 
*                    WOUND PRIOR TO PROCESSOR INVOCATION. EACH OPTION IS
*                    THE CONTROL STATEMENT PARAMETER ASSOCIATED WITH A
*                    FILE.  THE DEFINED OPTIONS ARE:  
* 
*                    I  REWIND INPUT FILE.
* 
*                    E  REWIND ERROR FILE.
* 
*                    B  REWIND BINARY OUTPUT FILE.
* 
*                    L  REWIND OUTPUT FILE. 
* 
*                    MULTIPLE BINARY VALUE PARAMETER: FD=0, SD=I/B. 
*                    IV=I/E/B.
* 
*           ROUND    ROUNDED ARITHMETIC.
*                    THIS PARAMETER SPECIFIES WHICH ARITHMETIC OPER-
*                    ATIONS ARE TO BE PERFORMED USING ROUNDED ARITHMETIC
*                    THE OPERATIONS CONTROLLED ARE THE ACTUAL MACHINE 
*                    OPERATIONS, WHICH DO NOT IN ALL CASES CORRESPOND TO
*                    FTN LANGUAGE OPERATORS.  (FOR EXAMPLE, SOME EXPON- 
*                    ENTIATIONS ARE TREATED AS MULTIPLICATIONS.)  THE 
*                    DEFINED OPTIONS ARE: 
* 
*                    A   ADDITION.
* 
*                    S   SUBTRACTION. 
* 
*                    M   MULTIPLICATION.
* 
*                    D   DIVISION.
* 
*                    MULTIPLE BINARY VALUE PARAMETER: FD=A/S/M, SD=A/S/ 
*                    M/D, IV=0. 
* 
*           S=ST     SYSTEMS TEXT.
*                    THE OPTION "ST" SPECIFIES THE NAME OF THE SYSTEMS
*                    TEXT TO BE READ BY THE PROCESSOR. THE OPTION "ST"
*                    MAY HAVE ONE OF THE FORMS: 
* 
*                        1.  SNAME
*                        2.  LIB-SNAME
*                        3.  0
* 
*                    FORM 1 SPECIFIES THE SYSTEMS TEXT NAME TO BE 
*                    "SNAME" AND SEARCHES THE GLOBAL LIBRARY SET.  FORM 
*                    2 SPECIFIES THE NAME OF THE LIBRARY "LIB") IN WHICH
*                    SYSTEMS TEXT "SNAME" CAN BE FOUND.  MULTIPLE TEXT
*                    NAMES ARE SPECIFIED BY SEPARATING THEM WITH SLASHES
*                    NOTE THAT THE TOTAL NUMBER OF SYSTEM TEXTS ALLOWED 
*                    (SEE G PARAMETER) FROM FILES AND THE SYSTEM IS RE- 
*                    STRICTED TO SEVEN.  APPEARANCE OF A G PARAMETER
*                    WILL CHANGE THE FIRST DEFAULT OF S TO ZERO.  IF S=0
*                    S=0 IS SPECIFIED AND ANY OTHER S=ST IS SPECIFIED 
*                    (IN ANY ORDER) THE S=0 IS IGNORED. 
* 
*                    SPECIFIED VALUE PARAMETER WITH MULTIPLE VALUES:  
*                    FD=SYSTEXT FOR "SNAME" AND GLOBAL LIBRARY SET, SD
*                    IS THE SAME AS FD. 
* 
*           SEQ      SEQUENCED INPUT. 
*                    THIS PARAMETER SPECIFIES THAT THE PROGRAM IS IN
*                    SEQUENCED LINE FORMAT. 
* 
*                    BINARY VALUE  PARAMETER: FD=0, SD=SEQUENCED INPUT. 
* 
*           TM=OP    TARGET MACHINE.
*                    THE OPTIONS OF THIS PARAMETER SPECIFY ATTRIBUTES 
*                    OF THE OBJECT TIME MACHINE.
* 
*                    NOTE - THE TM PARAMETER IS AVAILABLE ONLY IF THE 
*                           INSTALLATION PARAMETER .MI IS EQUATED TO 1 .
* 
*                    THE DEFINED OPTIONS ARE :  
* 
*                    LCM   THE OBJECT TIME MACHINE WILL HAVE LCM. 
*                          (I.E. LEVEL 2 VARIABLES WILL RESIDE IN LCM)
* 
*                    MULTIPLE BINARY VALUE PARAMETER : SD=0, IV=0.
* 
*                    FD CAUSES NO ACTION, I.E. THE ATTRIBUTES OF THE
*                    TARGET MACHINE ARE THE SAME AS THOSE OF THE COMPILE
*                    TIME MACHINE.
* 
*           X=LFN    EXTERNAL TEXT FILE.
*                    THIS PARAMETER SPECIFIES THE NAME OF THE EXTERNAL
*                    TEXT FILE WHICH A PROCESSOR READS FROM WHEN IT EN- 
*                    COUNTERS A DIRECTIVE IN THE SOURCE WHICH REQUIRES
*                    READING FROM SUCH AN EXTERNAL FILE.
* 
*                    SPECIFIED VALUE PARAMETER, FD=OLDPL, SD=OPL. 
* 
*           STATIC   STATIC LOADING MODE. 
*                    THIS PARAMETER SPECIFIES STATIC LOADING OF 
*                    FORTRAN LIBRARY ROUTINES.
* 
*                    BINARY VALUE PARAMETER : FD=0, SD= STATIC LOADING. 
 OPTIONS  SPACE  4,10 
**        INTERNAL DEBUGGING OPTIONS (TEST MODE ONLY) 
* 
*         THE FOLLOWING OPTIONS ARE AVAILABLE IN TEST MODE ONLY.
* 
*         CONTROL STATEMENT PARAMETER OPTIONS --
* 
*         BREAK=NN           CALLS INTERACTIVE DEBUG PACKAGE ON ENTRY 
*                TO OVERLAY NN.  VALUES ARE - 
*                00 - BREAK ON ENTRY TO QCG FRONT END, AFTER
*                       FIRST TIME ONLY INITIALIZATION
*                10 - BREAK ON ENTRY TO QCG FRONT END, AFTER
*                       COMPASS CALLS 
*                20 - BREAK ON LOADING CCG CRADLE 
*                21 - BREAK ON LOADING CCG FRONT END
*                22 - BREAK ON LOADING CCG
*                23 - BREAK ON LOADING CCG REAR END 
*                OVERLAY NUMBERS MAY BE CONCATENATED. 
*                FD = NO BREAKS,  SD = ALL OVERLAYS 
* 
*         CPL=N  COMPILE TIME PAGE LIMIT. USEFUL FOR UNPREDICTABLE
*                SNAPS AND LOOPS.  FD=200, SD=999 PAGES.
*                IF (LO=O) IS ON, FD=500. 
* 
*         IDP=AANN   ENABLE COMPILER BREAKS 
*                SAME AS *SNAP* BELOW BUT IF ENABLED, IDP IS CALLED 
*                FOR AN INTERACTIVE SESSION.
* 
*         RFL=NN INITIAL FIELD LENGTH (ASSUMED OCTAL).
*                FD=(DEPENDS ON LOADER), SD=(MIN FL FOR CURRENT MODE) 
* 
*         SNAP=AANN          ENABLES COMPILER SNAPS 
*                AA - STRING OF ALPHABETICS DESIGNATING WHICH SNAPS 
*                     TO ENABLE.
*                NN - STRING OF NUMERICS DESIGNATING THE AREA TO SNAP.
*                (EG. SNAP=AB2, ENABLES SNAPS A AND B IN CCG) 
*                FD = NO SNAPS,  SD = SET BIT 59 OF CO.SNAP 
* 
*         SPY=LL/UL    INVOKES SPY AND CALLS PRNTSPY TO PROCESS DOSSIER 
*                LL - FWA OF AREA TO SPY (OCTAL)
*                UL - LWA OF AREA TO SPY (OCTAL)
*                FD = NO SPY,  SD = RA.ORG/100000 
*                     LL AND UL WILL BE TRUNCATED TO NEAREST 100B.
*                     THE SPY BINWIDTH WILL BE THE SMALLEST POWER OF 2
*                     WHICH WILL ALLOW THE RANGE BEING SPIED TO FIT 
*                     IN THE 2046B SPY BINS.  I.E.  -BW-   -RANGE-
*                                                    1     1 TO 2046 WDS
*                                                    2     TO 4114
*                                                    10    TO 20460 
*                                                    20    TO 41140 
*                                                    40    TO 102300
* 
*         SENSE SWITCH USAGES - 
* 
*         SWITCH,5           CALL IDP IN (0,0) OVERLAY INITIALIZATION 
*                IMMEDIATELY AFTER LOADER ENTRY AND X0,A0 HAVE
*                BEEN SAVED.
*         SWITCH,6           INHIBIT COMPILE TIME RPV.
 OPTIONS  SPACE  4,10 
*CALL     COMFCIP - COMPILER INSTALLATION PARAMETERS
 FILES    TITLE  INTERNAL FILE NAMES
**        INTERNAL FILE NAMES.
  
 IN       MICRO  1,, "SV.I" 
 ERRS     MICRO  1,, "SV.E" 
  
          IFC    EQ,/"SV.L"/0/,2
 OUT      MICRO  1,,
          SKIP   1
 OUT      MICRO  1,, "SV.L" 
  
  
 EOUT     MICRO  1,, "SV.E" 
  
 LGO      MICRO  1,, "SV.B" 
  
 .TEST    IFEQ   TEST,OFF   IF NOT TEST MODE
 IL       MICRO  1,, ZZZZZSA
 PB       MICRO  1,, ZZZZZSB
 REF      MICRO  1,, ZZZZZSC
 OPT      MICRO  1,, ZZZZZSD
 .TEST    ELSE
 IL       MICRO  1,, FTNIL
 PB       MICRO  1,, FTNPB
 REF      MICRO  1,, FTNREF 
 OPT      MICRO  1,, FTNOPT 
 .TEST    ENDIF 
 COMPCOM  TITLE  /COMPCOM/ INTERFACE
**        PROVIDE DEFINITIONS FOR /COMPCOM/.
  
**        DEFINE MICROS FOR /COMPCOM/.
  
          IFC    EQ,/"SV.ET"/0/,2 
 CP.ABORT MICRO  1,, 0
          SKIP   1
 CP.ABORT MICRO  1,, 1
  
 CP.BLF   MICRO  1,, 1S59*"BV.BL" 
 CP.F=    MICRO  1,, -3      VALUE OF PROCESSOR *F
  
          IFC    EQ,/"BV.PN"/OFF/,2 
 CP.PAGE  MICRO  1,, 0       DO NOT PROPAGATE PAGE NUMBERS
          SKIP   1
 CP.PAGE  MICRO  1,, 1S59    PROPAGATE PAGE NUMBERS 
  
          IFC    EQ,/"SV.L"/OFF/,2
 CP.LISTF MICRO  1,, 0
          SKIP   1
 CP.LISTF MICRO  1,, 1
  
 LISTRM   MICRO  1,, -       DO NOT LIST I/O SUBROUTINES
 COMPCOM  SPACE  4
**        DEFINE FET MACRO FOR /COMPCOM/. 
  
 .RM      IFEQ   CP#RM,0
 FET      MACRO 
          BSS    8
  ENDM
  
 .RM      ENDIF 
 COMPCOM  SPACE  4
          USE    /COMPCOM/
  
**        THE FOLLOWING BSS ALIGNS COMPCOM AND RESERVES 3 WORDS FOR 
*         FUTURE 54 TABLE ENTRY POINTS.  PLEASE NOTE THAT ANY CHANGES 
*         WILL AFFECT INTERMIXED COMPASS SUBPROGRAMS. 
  
 LDR.EP   =      3           RESERVED FOR ENTRY POINTS
          BSS    LDR.EP 
          LIST   -F 
*CALL     COMPCOM - COMPILER / ASSEMBLER COMMUNICATION AREA.
 COMPCOM  TITLE  /COMPCOM/ INTERFACE
**        LINK FTN TO /COMPCOM/.
  
          LIST   F,X
 COMPCOM  SPACE  4,10 
**        EQUATE FTN AND /COMPCOM/ LOCATIONS. 
  
  
 CP.ABT   EQUENT CP.ABORT    *ABORT IF FATAL ERRORS* FLAG 
 CP.ERCT  EQUENT CP.ERRCT    TOTAL NUMBER OF (ET=) RELEVANT ERRORS
 CP.FLIN  EQUENT CP.LINE+2   FTN SOURCE LISTING LINE FWA
 CP.IFMT  EQUENT CP.IFORM    SOURCE FILE FORMAT 
 CP.LSTF  EQUENT CP.LISTF    MASTER OUTPUT LISTING FLAG 
 CP.MXFL  EQUENT CP.MAXFL    MAXIMUM FIELD LENGTH USED
 CP.STXT  EQUENT CP.STEXT    LIST OF SYSTEM TEXTS USED BY COMPASS 
 CP.XTXT  EQUENT CP.XNAME    COMPASS XTEXT NAME 
 CP.ILFL  EQUENT CP.CDC      INITIAL LCM FIELD LENGTH 
  
          ENTRY  CP.AFLL
          ENTRY  CP.AFLS
          ENTRY  CP.BLF 
          ENTRY  CP.CARD
          ENTRY  CP.CPU 
          ENTRY  CP.LCOM
          ENTRY  CP.LIB 
          ENTRY  CP.MODL
          ENTRY  CP.NFLL
          ENTRY  CP.NFLS
          ENTRY  CP.PAGE
          ENTRY  CP.PCOM
          ENTRY  CP.PD
          ENTRY  CP.PS
          ENTRY  CP.PW
          ENTRY  CP.EPAG
          ENTRY  CP.ILFL
  
          IFNE   CP#RM,7,1
          ENTRY  SYS=,RCL=,WNB=,MSG=
 COMPCOM  SPACE  4,10 
**        DEFINE LOCAL NAMES FOR /COMPCOM/ FETS AND FITS. 
  
  
 .RM      IFEQ   CP#RM,0     IF USING CIO I/O 
 F.IN     =      CP.IFET
 F.LGO    =      CP.BFET
 F.OUT    =      CP.OFET
 F.ERRS   =      CP.EFET
  
 .RM      ELSE               IF USING 7RM I/O 
  
 FI.ERRS  =      CP.EFIT
 FI.IN    =      CP.IFIT
 FI.LGO   =      CP.BFIT
 FI.OUT   =      CP.OFIT
 FI.ERRS  =      CP.EFIT
 .RM      ENDIF 
 FLREQ    TITLE  COMPILER FIELD LENGTH REQUIREMENTS 
**        COMPILER FIELD LENGTH REQUIREMENTS. 
* 
*         THE FOLLOWING SYMBOLS AND MICROS SPECIFY THE MINIMUM CM/SCM 
*         FIELD LENGTH REQUIREMENTS (WHICH VARY WITH COMPILER CONFIGU-
*         RATION) AND THE NOMINAL DEFAULT AND MAXIMUM FIELD LENGTHS 
*         REQUESTED WHEN JOB FL IS SYSTEM-CONTROLLED. 
  
  
 IB.FL    SET    Z.INB+Z.OUTB      ADD FOR CIO BUFFERS
 IB.FL    SET    IB.FL/100B*100B   TRUNCATE TO NEAREST 100B 
  
 IT.FL    =      12000B*TEST       INCREMENT FOR TEST MODE
  
 MIN.FL   EQU    MIN.TABS+NOM.INC 
  
  
**        PROGRAM UNIT INITIAL FIELD LENGTH 
  
 INT.FL   BSZENT            1 
 FETS     TITLE  FILE MANAGEMENT TABLES 
**        FET - A MACRO TO FORM FETS AND PSEUDO FETS
  
  
          PURGMAC FET 
  
 FET      MACRO  NAME,FIRST,MODE
          LOCAL  REORG
* 
* 
**        FET FOR CIO I/O.
* 
* 
 .RM      IFEQ   CP#RM,0
 REORG    SET    0
*         CHECK FOR EXISTING /COMPCOM/ FET DEFINITION.
 .CD      IF     DEF,F.NAME 
 REORG    SET    1
*         TO REDEFINE /COMPCOM/ FET.
          ORG    F.NAME 
 .CD      ELSE
 F.NAME   BSS    0
 .CD      ENDIF 
* 
*         FORM FET. 
* 
          VFD    42/0L"NAME",18/MODE+1
          VFD    36/0,6/3,18/FIRST
          CON    FIRST
          CON    FIRST
          CON    FIRST+Z.NAME_B 
*         (I.CBSET)          PASS 1 BUFFER RESET PARAMS.
          VFD    24/0,18/Z.NAME_B,18/FIRST
          BSSZ   2                 RANDOM FILE INFO 
 .CD      IFEQ   REORG,1
*         RETURN TO NOMINAL BLOCK.
          USE    *
 .CD      ENDIF 
 .RM      ENDIF 
* 
* 
**        PSEUDO FET FOR RECORD MANAGER I/O.
* 
* 
 .RM      IFEQ   CP#RM,7
*                            DEFINE PSEUDO-FET BASE ADDRESS.
 F.NAME   BSS    0
*         (I.FIT)            FLAGS AND FIT POINTER. 
*                            1/HOLD BUF FLAG, 1/SPILL FLAG, 58/FIT ADDR 
*                *HOLDING BUFFER EXISTS* FLAG  ( 1=YES, 0=NO )
          VFD    1/1*Z.NAME_B/Z.NAME_B
*                *FILE SPILLED* FLAG           ( 1=YES, 0=NO )
          VFD    1/0
*                RESERVED FOR CDC.
          VFD    1/1         *UNCONDITIONAL FLUSH FLAG* 
          VFD    39/0        *RESERVED FOR CDC* 
*                FIT ADDRESS. 
          VFD    18/FI.NAME 
*                            HOLDING BUFFER CONTROL PARAMETERS. 
 .HB      IFNE   Z.NAME_B,0 
*         (I.FIRST), (I.IN), (I.OUT), (I.LIMIT) 
          DUP    4,1
          VFD    42/0,18/** 
*         (I.HBSET)          HOLDING BUFFER RESET VALUES. 
          VFD    24/0,18/Z.NAME_B,18/** 
 .HB      ENDIF 
 .RM      ENDIF 
* 
*         DECLARE GLOBAL FILE SYMBOLS AS ENTRY POINTS.
          ENTRY  F.NAME 
* 
*         FORM FILE VECTOR TABLE FOR JOB COMMUNICATIONS AREA (RA.ARG).
* 
*         /FVEC-HERE/ APPEARS AT *FVTBL*. 
 FVEC     RMT 
          FVEC   NAME 
 FVEC     RMT 
* 
 FET      ENDM
 FETS     SPACE  4
  
**        CIO CODE VALUES FOR FILE MODES. 
  
  
 BINARY   EQU    2
 CODED    EQU    0
 FET/FIT  SPACE  4,10 
**        SCRATCH FILE DISPOSITION. 
*         (APPLIES ONLY WHEN RECORD MANAGER I/O IS SELECTED.) 
* 
*         SELECT *CLOSE FLAG* (CF) PARAMETER FOR EACH SCRATCH FILE FIT. 
*         THE PARAMETER MAY BE ALTERED DURING COMPILER INITIALIZATION,
*         TO COMPLY WITH CONTROL STATEMENT OPTION SELECTIONS. 
  
  
 .RM      IFGE   CP#RM,6
 .TEST    IFEQ   TEST,OFF   IF NOT TEST MODE
*                SYSTEM MODE COMPILER - UNLOAD SCRATCH FILES. 
 SFD      MICRO  1,, U
 .TEST    ELSE
*                TEST MODE COMPILER - REWIND SCRATCH FILES. 
 SFD      MICRO  1,, R
 .TEST    ENDIF 
 .RM      ENDIF 
 FET/FIT  SPACE  4,10 
**        FET/FIT AREAS.
* 
* 
 INPUT    SPACE  4,10 
**        INPUT  -  FORTRAN SOURCE INPUT FILE.
  
  
          FET    IN,IBUF,CODED
 OUTPUT   SPACE  4,10 
**        OUTPUT  -  LISTABLE OUTPUT FILE.
  
  
          FET    OUT,OBUF,CODED 
          SPACE  4
**        ERRS - ERROR LISTING FILE 
  
  
          FET    ERRS,0,CODED 
 LGO      SPACE  4,10 
**        LGO  -  EXECUTABLE BINARY (LOAD-AND-GO) FILE. 
  
  
          FET    LGO,0,BINARY 
 PB       SPACE  4,10 
**        PB - PRE BINARY FILE. 
  
  
          FET    PB,0,BINARY
 .RM      IFEQ   CP#RM,7
 FI.PB    FILE   LFN="PB",FO=SQ,OF=R,CF="SFD",PD=IO,EO=T,CM=NO,BT=,RT=W 
          BSSZ   FI.PB+20D-*
 .RM      ENDIF 
 F.SLST   EQUENT F.PB        CCG INTERFACE NAME 
 IL       SPACE  4,10 
**        IL - INTERMEDIATE LANGUAGE. 
  
  
          FET    IL,0,BINARY
 .RM      IFEQ   CP#RM,7
 FI.IL    FILE   LFN="IL",FO=SQ,OF=R,CF="SFD",PD=IO,EO=T,CM=NO,BT=,RT=W 
          BSSZ   FI.IL+20D-*
 .RM      ENDIF 
 REFMAP   SPACE  4,10 
**        REFMAP  -  LONG REFERENCE MAP SCRATCH FILE. 
  
  
          FET    REF,0,BINARY 
 .RM      IFEQ   CP#RM,7
 FI.REF   FILE   LFN="REF",FO=SQ,OF=R,CF="SFD",PD=IO,EO=T,CM=NO,BT=,RT=W
          BSSZ   FI.REF+20D-* 
 .RM      ENDIF 
 FTNIO    SPACE  4,10 
**        DEFINE OUTPUT FILE NAME FOR FORTRAN-CODED I/O.
  
  
          IFEQ   TEST,ON,1   IF TEST MODE 
 OUTPUT"FC" EQUENT F.OUT
 CELLS    TITLE  CONSTANTS, DATA, FLAGS, TEMP STORAGE 
 CELLS    SPACE  4,10 
**        MISCELLANEOUS FLAGS.
  
  
          ENTRY  FTIFL
 FTIFL    VFD    12/0,18/**,30/0   INITIAL CM/SCM FIELD LENGTH
 JOT      CONENT 0           JOB ORIGIN TYPE (0 - BATCH, 1 - TERMINAL)
 MAX.FL   CONENT 7777777776BS30    JOB STEP MAX FL (-1 FOR MEMORY CALL) 
 NOM.FL   CONENT 0           NOMINAL FL FOR THIS MODE 
 OT.DAL   CONENT .DAL        OBJECT TIME DIRECT-ACCESS LCM (0=NO, 1=YES)
 OT.RM    CONENT OT#RM-6     OBJECT TIME I/O (0=6RM, 1=7RM) 
 RAPFLAG  CONENT 0           1S59 IF READ ALREADY PERFORMED, ELSE 0 
 RS.PD    CONENT 0           JOB DEFAULT PRINT DENSITY IMAGE
 TIME0    CONENT 0           COMPILATION START TIME IN MILLISECONDS 
 TIME1    CONENT 0           PROGRAM UNIT START TIME IN MILLISECONDS
 ENOT=L   CONENT 0           1 IF EFILE .NE. LFILE. 0 OTHERWISE 
 CO.CELLS SPACE  4,10 
**        FLAGS ASSOCIATED WITH THE CONTROL STATEMENT OPTIONS.
* 
*         UNLESS OTHERWISE SPECIFIED, A FLAG IS *ON* (1S59) OR
*         *OFF* (0).
  
  
 CO.AL    CONENT 1S59*"BV.AL"      ON IF AUTOMATIC LEVEL
 CO.ANSI  CONENT 1R"SV.ANSI"       ANSI (1R0,1RT,1RF) 
 CO.ARGC  CONENT 1S59*"BV.ARGC"    ON IF COMMON ARGUMENT LISTS
 CO.ARGF  CONENT 1S59*"BV.ARGF"    ON IF FIXED LENGTH ARGUMENT LISTS
 CO.DBB   EQUENT CP.ERCT           ON IF BINARY REGARDLESS
 CO.DBER  CONENT 2RER              ON IF ERROR RECOVERY 
 CO.DBID  CONENT 1S59*"BV.DBID"    ON IF INTERACTIVE DEBUG
 CO.DBPM  CONENT 1S59*"BV.DBPM"    ON IF POST MORTEM DUMP 
 CO.DBSB  CONENT 1S59*"BV.DBSB"    ON IF SUBSCRIPT BOUNDS CHECKING
 CO.DBSL  CONENT 1S59*"BV.DBSL"    ON IF SUBSTRING LIMITS CHECKING
 CO.DBST  CONENT 1S59*"BV.DBST"    ON IF SYMBOL TABLE TO BINARY 
 CO.DBTB  CONENT 1S59*"BV.DBTB"    ON IF ERROR TRACEBACK
 CO.DS    CONENT 1S59*"BV.DS"      ON IF DIRECTIVE SUPPRESSION
 CO.EC    CONENT 1S59*"BV.EC"      ON IF ECS USE AT COMPILE TIME OK 
 CO.EL    CONENT 1R"SV.EL"         ERROR LEVEL (1RT,1RW,1RF,1RC)
 CO.ET    CONENT 1R"SV.ET"         ERROR TERMINATE (1R0,1RT,1RW,1RF,1RC)
 CO.GO    CONENT 1S59*"BV.GO"      LFN IF GO SELECTED, ELSE 0 
 CO.LCM   CONENT 1R"SV.LCM"        LCM=(G,D,I) = (-1,0,+1)
 CO.LL    CONENT "SV.LL"           OBJECT TIME LINE LIMIT 
 CO.MD    CONENT 1R"SV.MD"         MD=(1R0,1RT,1RF) 
 CO.OPT   CONENT "SV.OPT"          (0, 1, 2)
 CO.PS    CONENT 1S59              1S59 IF PS NOT SELECTED
 CO.PW    CONENT "SV.PW"           PAGE WIDTH (NUMBER OF CHARS) 
 CO.PWE   CONENT "SV.PW"           MUST FOLLOW CO.PW
 CO.PWT   EQUENT "SV.PWT"          PAGE WIDTH FOR TTY 
 CO.REWB  CONENT 1S59*"BV.REWB"    ON IF REWIND B FILE
 CO.REWE  CONENT 1S59*"BV.REWE"    ON IF REWIND E FILE
 CO.REWI  CONENT 1S59*"BV.REWI"    ON IF REWIND I FILE
 CO.REWL  CONENT 1S59*"BV.REWL"    ON IF REWIND L FILE
 CO.RNDA  CONENT 1S59*"BV.RNDA"    ON IF ROUNDING ADDS
 CO.RNDS  CONENT 1S59*"BV.RNDS"    ON IF ROUNDING SUBTRACTS 
 CO.RNDM  CONENT 1S59*"BV.RNDM"    ON IF ROUNDING MULTIPLIES
 CO.RNDD  CONENT 1S59*"BV.RNDD"    ON IF ROUNDING DIVIDES 
 CO.SEQ   CONENT 1S59*"BV.SEQ"     ON IF SEQUENCED INPUT
 CO.STAT  CONENT 1S59*"BV.STAT"    ON IF STATIC, ELSE 0 
          IFEQ   .MI,1,1
 CO.TMLC  CONENT "BV.TMLC"+1       NZ IF TARGET MACHINE HAS LCM 
 CO.UO    CONENT 1S59*"BV.UO"      ON IF UNSAFE OPT OK
 CO.WPL   CONENT 0           PAGE WIDTH CONTROL WORD FOR L FILE 
 CO.WPE   CONENT 0           PAGE WIDTH CONTROL WORD FOR E FILE 
 CO.C$    SPACE  4,10 
**        FLAGS ASSOCIATED WITH THE CONTROL STATEMENT OPTIONS WHICH MAY 
*         BE RESET BY C$ DIRECTIVES.
* 
*         THESE FLAGS MUST STAY IN SYNCH WITH CORRESPONDING VALUES IN 
*         WO.C$ IN PUC. 
  
  
 CO.C$    BSSENT 0
  
 CO.CS    CONENT 0L"SV.CS"         COLLATING SEQUENCE 0=FIXED,1=USER
 CO.DOLG  CONENT 1S59*"BV.DOLG"    ON IF LONG DO LOOPS
 CO.DOOT  CONENT 1S59*"BV.DOOT"    ON IF ONE TRIP DO LOOPS
 CO.LOA   CONENT 1S59*"BV.LOA"     ON IF ATTRIBUTE LIST 
 CO.LOM   CONENT 1S59*"BV.LOM"     ON IF ADDRESS MAP
 CO.LOO   CONENT 1S59*"BV.LOO"     ON IF OBJECT LIST
 CO.LOR   CONENT 1S59*"BV.LOR"     ON IF CROSS REFERENCE
 CO.LOS   CONENT 1S59*"BV.LOS"     ON IF SOURCE LISTING 
 CO.QC    CONENT 1S59*"BV.QC"      ON IF QUICK CHECK
  
 L.C$     EQUENT *-CO.C$
 TEST     SPACE  4,10 
**        TEST MODE ONLY FLAGS. 
  
  
 .TEST    IFEQ   TEST,ON     IF TEST MODE 
 .OS2     IFNE   .OS,2
 CO.BRK   CONENT 0           LIST OF OVERLAY NRS (0L FMT) AS SET UP BY
*                              *BREAK* CS OPTION. 
*                              E.G.  BREAK=2122  WOULD BE  4L2122 
*                              (CO.BRK) = 1 FOR BREAK *ALL* 
 .OS2     ENDIF 
  
 CO.CPL   CONENT 200         COMPILE TIME PAGE LIMIT
 CO.IDP   CONENT 0           IDP BREAK FLAGS
 CO.RFL   CONENT 0           COMPILER INITIAL FL
 CO.SNAP  CONENT 0           .NZ. IF SNAPS DESIRED
 CO.SPP   CONENT 0           SYSTEM PROGRAMMER PACKAGE FLAG 
 .TEST    ENDIF 
 LCMFLAGS SPACE  4,10 
**        FLAGS ASSOCIATED WITH LCM USAGE ( OPT .GE. 2 )
  
  
 LCM.OA   CONENT 0           ORIGIN OF ALLOCATABLE LCM
 LCM.MM   CONENT 0           MEMORY MODE ( = 1S59 IF REDUCE MODE )
 LCM.MU   CONENT 0           MEMORY USED
 LCM.FL   EQUENT CP.AFLL     LCM FIELD LENGTH ( ACTUAL )
 TEMPS    SPACE  4,10 
**        GLOBAL TEMPORARY STORAGE CELLS. 
* 
*         THESE SCRATCH CELLS ARE AVAILABLE TO ANY USER AT ANY TIME.
*         THEY ARE INTENDED FOR USE WITH IN-LINE CODE, AND SHOULD NOT 
*         BE EXPECTED TO SURVIVE OVER SUBROUTINE CALLS. 
  
  
 GT1      EQUENT CP.LINE
 GT2      EQUENT CP.LINE+1
 CCG      SPACE  4,10 
**        CCG INTERFACE NAMES FOR VARIOUS CELLS.
  
  
 HO$ER    EQUENT CO.DBER
 HO$TB    EQUENT CO.DBTB
 HO$IE    EQUENT CO.EL
 HO$LCM   EQUENT CO.LCM 
 HO$LO$S  EQUENT CO.LOS 
 HO$MFLS  EQUENT MAX.FL 
 HO$OBL   EQUENT Z.ILB/2-1
          IFEQ   TEST,ON,1
 HO$SNAP  EQUENT CO.SNAP
 HO$UO    EQUENT CO.UO
 HO$ARGC  EQUENT CO.ARGC
 OVERLAY  EJECT 
**        NAMES/FLAGS FOR OVERLAYS LOADED BY FTN. 
  
  
 FTNLFN   CONENT 0L"FTNOVL"  FTN LIBRARY OR FILE NAME 
          ENTRY  FTNLDR 
 FTNLDR   VFD    6/**,6/**,12/2140B,18/**,18/**    LOAD REQUEST WORD
 CMPSLDR  VFD    6/01,6/00,12/0140B,18/**,18/CP.ORG 
 FTNHHA   CONENT 0           OVERLAY HHA
 TITLE    SPACE  4,10 
**        DEFINE MAIN TITLE LINE. 
  
  
 .TEST    IFEQ   TEST,ON     IF TEST MODE 
 MODLVL   MICRO  1,, "MODLVL" 
 MODLVL   MICRO  1,9,$"MODLVL"*T*      $
 .TEST    ENDIF 
  
 TARGET   MICRO  1,4,$"MODEL"    $
  
 O.TITL   BSSENT 0
  
          LIST   A
*CALL COMFTTL 
          LIST   *
  
  
*         TEMPLET TO LIST CURRENT VALUES OF THE FOLLOWING FORTRAN 
*         CONTROL CARD PARAMETERS.  (DO,ARG,CS,DB,PL) 
*         THESE VALUES APPEAR ON THE SECOND LINE OF THE FIRST PAGE
*         OF EACH PROGRAM UNIT OUTPUT LISTING.
  
 O.CPV    CONENT 10H                             SKIP TO NEXT LINE
          DIS    2,DO= LONG/ OT,ARG= CO 
          DIS    2,MMON/ FIXED,CS= USER 
 O.TA     BSSENT 0
          DIS    2,/ FIXED,DB= TB/ SB/
          DIS    2,SL/ ER/ ID/ PMD/ ST, 
          VFD    6/0,36/6HAL,PL=,18/0 
          DATA   10H                             PRINT LIMIT
 L.PWA    CONENT 10H                             USED WHEN IN PW MODE 
  
 L.TWO    EQUENT *-O.CPV
 L.TA     EQUENT O.TA-O.CPV                      PW MODE
 L.TB     EQUENT *-O.TA                          PW MODE
  
*         THIRD LINE OF FIRST PAGE
*         OF EACH PROGRAM UNIT.    - FORTRAN CALL CARD
  
 O.CC     CONENT 1H                             SKIP TO NEXT LINE 
          DATA   1H ,1H ,1H ,1H ,1H ,1H         FORTRAN CALL CARD 
 O.C      BSSENT 0                              FIRST 120 
          DATA   1H ,1H ,1H ,1H ,1H ,1H         CHARACTERS
 L.PWB    CONENT 1H                             USED WHEN IN PW MODE
  
 L.TITL   EQUENT TL.PAGE+1-O.TITL 
 L.TTLA   EQUENT TL.PAGE+1-O.TTLA-1 
 L.TTLB   EQUENT O.TTLA-TL.PTYP     2ND TITLE LENGTH IN PW MODE 
  
 L.CC     EQUENT L.PWB-O.CC 
 L.CCA    EQUENT O.C-O.CC                       PW MODE 
 L.CCB    EQUENT *-O.C                          PW MODE 
  
*         COMPUTE OFFSET INTO ERROR FILE
  
 ERFO     EQUENT L.TITL+L.TWO+L.CC+1
  
          SPACE  4,8
**        DEFINE ERROR LIST TITLE LINE. 
  
          LOC    O.TITL 
  
          LIST   A
*CALL COMFTTL 
          LOC    *O 
          LIST   *
 LOVER    TITLE  LOAD OVERLAYS
**        LOAD OVERLAYS.
 LDCOM    SPACE  4,10 
**        FORM LOADER REQUEST FOR LOADING *COMPASS* ASSEMBLER 
*         (1,0) OVERLAY.
  
  
 LDCOM    BSSENT 0
          SA5    LCM.FL 
          SA4    CPOVL       NAME OF COMPASS (1,0) OVERLAY
          BX6    X5 
          SA6    CP.NFLL     CP.NFLL = CP.AFLL , SO WE KEEP OUR LCM 
          BX6    X4 
          SA1    CMPSLDR     OVERLAY LEVEL, LDR FLAGS, FWA LOAD 
          EQ     LOV
  
 CPOVL    DATA   0L"CP.NAME"
 FTN5OVL  DATA   6LFTN500 
 LOVER    SPACE  4,10 
**        LOVER - LOAD COMPILER OVERLAY.
* 
*         ENTRY  (X2) = 64*P+S
*                (X7) = FWA LOAD. 
*                P = PRIMARY OVERLAY LEVEL. 
*                S = SECONDARY. 
*                (FTNLDR) = LOADER REQUEST FLAGS. 
*                (FTNLFN) = FILE OR LIBRARY NAME. 
  
  
 LOVER    BSSENT             ENTRY... 
          SA5    FTN5OVL
          SA3    FTNLDR 
          LX2    4*6
          IX6    X5+X2       FORM OVERLAY NAME
          SA4    FTNLFN 
          LX2    -4*6+48     POSITION OVERLAY LEVELS
          BX7    X7+X3
          BX1    X2+X7       (X1) = 12/ 0P0S,  9/ FLAGS,  39/ FWA 
*         EQ     LOV
 LOV      SPACE  4,10 
**        LOV - REQUEST OVERLAY LOAD. 
* 
*         ENTRY  (X4) = LIBRARY OR FILE NAME, 0L FORMAT 
*                        (OVERLAY NAME IF COMPASS OVERLAY)
*                (X6) = OVERLAY NAME, 0L FORMAT 
*                (X1) = LOADER REQUEST WORD 1, FORMAT --
*                       12/OVERLAY LEVEL (0P0S),
*                        9/LOADER REQUEST FLAGS,
*                        3/0, 
*                       18/0       SET TO LWA+1 FOR LOAD
*                       18/FWA LOAD 
*                (CP.NFLS) = LWA+1 OF LOAD. 
  
  
 LOV      SA5    CP.NFLS
          LX5    18          SET LWA+1 AVAILABLE FOR LOAD 
          BX7    X1+X5
          SA7    RA.ORG      SAVE (X7) = LDR REQUEST WORD 1 
          SA6    LOVOVR      SAVE OVERLAY NAME
          SA7    RA.LDP+1    OVL LVL, FLAGS, ADDR TO LDR REQUEST WORD 1 
          SA6    A7+B1       OVERLAY NAME TO LDR REQUEST WORD 2 
          BX7    X4 
          SA7    A7-B1       LIBRARY OR FILE NAME TO LDR REQUEST WORD 0 
          =X6    0
          SA6    RA.LDR      CLEAR LOADER COMMUNICATIONS CELL 
  
  
**        CANCEL REPRIEVE REQUEST 
  
          RPVOFF GT1         TURN OFF REPRIEVE
  
  
**        TURN OFF SPY. 
  
          IFEQ   .SPY,ON,1   IF SPY OPTION
          CALL   OFFSPY      TURN *SPY* OFF 
  
  
**        LOAD OVERLAY. 
  
          LOADREQ  RA.LDP,RCL  REQUEST OVERLAY LOAD 
          SA2    RA.LDP+1 
          SB7    X2          (B7) = ENTRY POINT ADDRESS IN NEW OVERLAY
          LX2    59-36       LOADER ERROR STATUS BIT TO B59 
          MI     X2,LOV3     IF LOADER COULD NOT LOAD OVERLAY 
  
  
**        CALL P-MONITOR PPU PROGRAM *SPY*. 
  
 .SPY     IFEQ   .SPY,ON     IF SPY OPTION
          SA1    LOVOVR      NAME OF OVERLAY LOADED 
          SA2    CPOVL       NAME OF COMPASS (1,0) OVERLAY
          IX6    X1-X2
          ZR     X6,LOV2     IF COMPASS OVERLAY 
          CALL   ONSPY
 .SPY     ENDIF 
  
  
**        TRANSFER CONTROL TO NEWLY-LOADED OVERLAY. 
  
 LOV2     JP     B7          TO NEW OVERLAY 
  
  
**        PROCESS ERROR IN LOADING OVERLAY. 
  
 LOV3     MESSAGE LOVERM
          EQ     ABTFTN      ABORT
  
 LOVERM   DIS    1, CANT LOAD 
 LOVOVR   BSSZ   1           SAVED NAME OF OVERLAY TO BE LOADED (0L FMT)
 STOP     SPACE  4,10 
**        *COMPASS* ASSEMBLER RETURN POINT. 
  
 STOP     SB1    1
          MX6    1
          SA6    RAPFLAG     SET READ ALREADY PERFORMED FLAG
 LDPRI    SPACE  4,10 
**        LOAD *FTN* PRIMARY OVERLAY. 
  
 LDPRI    BSSENT 0
          SA2    CP.NFLS
          SA1    FTNHHA 
          =X1    X1+1 
          IX2    X2-X1
          PL     X2,LDP7     IF ROOM FOR PRIMARY
          SA2    MAX.FL 
          AX2    30 
          IX2    X2-X1
          MI     X2,MEMERR   IF NOT ENOUGH MEMORY 
          SX1    X1+2*FLSZ
          LX1    30 
          BX6    X1 
          SA6    GT1
          MEMORY SCM,GT1,RCL
          SA2    GT1         NEW FL 
          AX2    30 
          BX6    X2 
          SX7    X2-FLSZ     LEAVE A SAFETY ZONE
          SA7    CP.NFLS     UPDATE TO CURRENT UNRESERVED FL
          SA6    CP.AFLS     UPDATE TO CURRENT FL 
          SA2    CP.MXFL     CURRENT MAX FL USED
          MX7    X2+X6       SELECT LARGER OF CP.AFLS, CP.MXFL
          SA7    CP.MXFL     UPDATE IT
  
 LDP7     SX2    0100B       (1,0)
          SA4    CO.OPT 
*         SX7    FWA10       (ASSUMES FWA10 = FWA20)
          ZR     X4,LDP10    IF CALLING QCG 
          SX2    0200B       (2,0)
  
 LDP10    LOVER  X2,=XFWA20 
 ENDFTN   TITLE  TERMINATE COMPILATION
  
 ABTFTN   BSSENT 0           HERE TO DIE... 
          ABORT  ,NODUMP,S   TO *EXIT(S)* (WITHOUT DUMP)
  
  
 MEMERR   SPACE  4,10 
**        MEMERR - OUTPUT INSUFFICIENT MEMORY ERROR MESSAGE 
* 
*         ENTRY  (X1) = AMOUNT OF MEMORY NEEDED 
* 
*         CALLS  COD
* 
*         USES   X - 1,2,6  A - 2,6 
  
 MEMERR   BSSENT
          CALL   COD
          SA2    MSG.FL+2 
          MX1    60-36
          BX1    -X1*X6 
          LX1    12 
          IX6    X2+X1
          SA6    A2          INSERT MIN FL IN ERROR MSG TEXT
          MESSAGE MSG.FL     ISSUE DAYFILE MESSAGE
          EQ     ABTFTN      ABORT
  
 MSG.FL   DIS    2,  FTN5 NEEDS AT LEAS 
          VFD    12/2RT ,36/0,12/2RB
          DIS    ,/"SCM" FL./ 
 TIMER    SPACE  4,10 
 TESTMODE TITLE  TESTMODE SUBROUTINES 
 .TEST    IFEQ   TEST,ON     IF TEST MODE 
 .OS      IFNE   .OS,2       IF NOT SCOPE 2 
IDPCHK    SPACE  4,10 
**        IDPCHK - CHECKS IF CALL TO *IDP* VIA *BREAK=PS* 
* 
*         ENTRY  (CO.BRK) = OVERLAY NRS (0P0S) FORM 
*                (RA.ORG) = OVERLAY LAST LOADED 
* 
*         EXIT   (B7) = 0 IF IDP NOT REQUESTED, -1 IF REQUESTED 
* 
*         USES   X - 0-4, 6, 7
*                A - 1, 2 
*                B - NONE 
  
  
 IDPCHK   SUBR   =           ENTRY/EXIT...
          SA1    CO.BRK 
          =B7    0
          MX0    -2*CHAR
          ZR     X1,EXIT.    IF NO BREAKS 
          =X6    X1-1 
          ZR     X6,IDP2     IF BREAK *ALL* 
          SA2    RA.ORG 
          AX2    48-0 
          SX4    2R00 
          MX3    1
 IDP1     LX1    2*CHAR 
          BX6    -X0*X1 
          LX3    2*CHAR 
          ZR     X6,EXIT.    IF END OF OVR LIST OR (BREAK=PS) NOT SELECT
          MI     X3,EXIT.    IF FINISHED CHECKING ENTIRE WORD 
          IX7    X6-X4       (X7) = OVERLAY NRS IN (0P0S) FORM
          BX6    X7-X2
          NZ     X6,IDP1     IF NOT CALLING *IDP* FOR THIS OVERLAY
 IDP2     SB7    -1          SET TO *CALL IDP BEFORE OVERLAY START* 
          EQ     EXIT.
  
  
 .TEST    ENDIF 
 OFFSPY   SPACE  4,10 
**        OFFSPY - TURN OFF P-MONITOR PPU PROGRAM *SPY*.
* 
*         ENTRY  NO REGISTER REQUIREMENTS.
* 
*         EXIT   *SPY* IS TURNED OFF. 
* 
*         USES   X - 1, 2, 6
*                A - 1, 6 
*                B - NONE 
* 
*         CALLS  RECALL (WNB=)
  
  
 .SPY     IFEQ   .SPY,ON     IF SPY OPTION INSTALLED
  
 OFFSPY   SUBR   =           ENTRY/EXIT...
          SA1    SPYP+1 
          ZR     X1,EXIT.    IF *SPY* NOT ON, EXIT... 
          MX6    1
          SA6    A1          TELL *SPY* TO STOP 
          RECALL A1 
          BX6    X6-X6
          SA6    SPYP+1 
          EQ     EXIT.       EXIT...
 ONSPY    SPACE  4,11 
**        ONSPY - TURN ON P-MONTITOR PPU PROGRAM *SPY*. 
* 
*         ENTRY  NONE 
* 
*         EXIT   *SPY* IS TURNED ON.
* 
*         USES   X - 1, 2, 6, 7 
*                A - 1, 2, 6, 7 
*                B - NONE 
* 
*         CALLS  SYS= 
  
  
 ONSPY    SUBR   =           ENTRY/EXIT...
          SA1    SPYW 
          SA2    RA.ORG      (X2) = SAVED OVERLAY CONTROL FLAGS, ETC. 
          ZR     X1,EXIT.    IF *SPY* OPTION NOT SELECTED 
          AX2    48-0        (X2) = OVERLAY LEVEL 
          BX6    X1 
          SA1    SPYO 
          ZR     X2,SPY1     IF (0,0) OVERLAY 
          SX2    X2+2R00
          LX2    30 
 SPY1     BX7    X1+X2       5LFTN_P_S (3LFTN FOR (0,0))
          SA6    A1-B1       LIMITS TO SPY PARAMETER LIST 
          SA7    SPYP        OVERLAY LEVEL TO LIST (SPYP) 
          SYSTEM SPY,RCL,A6 
          EQ     EXIT.
  
 SPYW     BSZENT 1           CONTROL STATEMENT SPY PARAMS 
*         *SPY* REQUEST PARAMETER LIST
 SPYP     BSSZ   1           7LOVL0P0S
          BSSZ   1           12/BINW,12/:,12/LO,12/HI,12/0
 SPYO     DATA   3LFTN
  
 .SPY     ENDIF 
 .OS      ENDIF 
*CALL     COMCCOD            CONVERT OCTAL DIGITS 
          ENTRY  COD
 COD=     EQUENT COD
          TITLE  BUFFERS AND FILE VECTOR SETUP AREA.
 BUFFERS  EJECT  4,10 
**        ALLOCATE SPACE FOR INPUT/OUTPUT BUFFERS.
  
  
          USE    BUFFERS
 BUFFERS  BSS    0           START OF BUFFER AREA 
  
 .RM      IFEQ   CP#RM,0     IF USING CIO 
 IBUF     BSSENT "BUFL" 
 OBUF     BSSENT 0
 .RM      ELSE
 IBUF     EQUENT 0
 OBUF     EQUENT 0
 .RM      ENDIF 
 FIN.FTN  BSSENT 0
          ORG    BUFFERS     RESET TO START OF BUFFER AREA
 FVTBL    SPACE  4,10 
**        FILE VECTOR TABLE.
* 
*         GENERATE TABLE OF DEFAULT FILE NAMES, FET/FIT POINTERS, AND 
*         TABLE ORDINALS.  THE TABLE IS MOVED TO THE JOB COMMUNICATIONS 
*         AREA, BEGINNING AT *RA.ARG*.
* 
*         AFTER THE TABLE IS MOVED TO LOW CORE, THE ENTRY FOR A FILE
*         CAN BE REFERENCED BY THE SYMBOL *FV.NAME*, WHERE *NAME* IS
*         THE FILE NAME.
* 
*         THE TABLE IS FORMED BY THE *FVEC* MACRO, USING REMOTE CALLS 
*         ISSUED FROM THE *FET* MACRO.
 FVEC     SPACE  4,10 
**        FVEC - MACRO TO FORM FILE VECTOR TABLE ENTRIES. 
* 
* 
*         FVEC      FILE
* 
*         ENTRY  *FILE* = FILE NAME 
* 
*         EXIT   TABLE ENTRY IS FORMED. 
*                FV.*FILE* IS DEFINED AND DECLARED AN ENTRY POINT.
* 
*         USES   NONE 
* 
*         CALLS  NONE 
  
  
          PURGMAC FVEC
  
 FVEC     MACRO  FILE 
 FV.FILE  BSSENT
 .RM      IFEQ   CP#RM,0
          VFD    42/0L"FILE",18/F.FILE
 .RM      ELSE
          VFD    42/0L"FILE",18/FI.FILE 
 .RM      ENDIF 
 FVEC     ENDM
  
*         FORM TABLE ENTRIES. 
  
 FVTBL    BSSENT 0           DEFINE FILE VECTOR TABLE BASE ADDRESS
          LOC    RA.ARG      ULTIMATE TABLE ADDRESS (AFTER MOVE)
 RPV=FVT  BSSENT             DEFINE FWA VECTOR FOR RPV
  
          LIST   D
 FVEC     HERE               *RMT* GENERATED BY *FET* MACRO 
          CON    -1          END OF FILE VECTOR TABLE 
          LIST   *
  
          DIS    6, COPYRIGHT CONTROL DATA CORP. 1979, 1980, 1981, 1982 
          LOC    *O 
          USE    *
  
*         FVLEN, AS FOLLOWS, SHOULD ONLY BE USED BY INIT00
*         AS THE TABLE IS DYNAMIC.
  
 FVLEN    EQUENT *-FVTBL     DEFINE TABLE LENGTH
          ERRPL  RA.ORG+L54.00+LDR.EP+CP.LCOM+FIN.FTN-B=FTN+"BUFL"-CP.OR
,G
          SPACE  4
          LIST   D
          END 
