(****************************************
*                                       *
*     MODULA-2 Multi-Pass Compiler      *
*     ****************************      *
*                                       *
*     Implementation for Intel 8086     *
*                                       *
*                                       *
*     CompPara:                         *
*                                       *
*     parameter module to configurate   *
*     the Modula-2 compiler             *
*     implementation module may be      *
*     changed by the user               *
*                                       *
*                                       *
*  Version:                             *
*     1.10   Nov 23' 1984               *
*                                       *
*                                       *
*  Copyright (C) 1984 Logitech.         *
*      All Rights Reserved.             *
*                                       *
*  This program is a trade secret of    *
*  Logitech, and it is not to be        *
*  reproduced, published, disclosed     *
*  to others, copied, adapted,          *
*  distributed or displayed without     *
*  the prior authorization of Logitech  *
*                                       *
*  Licensee agrees to attach or embed   *
*  this notice on all copies of the     *
*  program, including partial copies    *
*  or modified versions thereof.        *
*                                       *
****************************************)
DEFINITION MODULE CompPara;

  EXPORT QUALIFIED
    CPpageLength, CPpageWidth, (* listing definition *)
    CPffAtEnd, CPffAtBegin,
    CPheader, CPdate,
    CPfooter, CPfooterText,
    CPpriorityLevels,          (* interrupt system definition: 8259A   *)
    CPRTSfunctVector,          (* interrupt vector to access to RTS functions *)
    CPemulator,                (* default settings of compiler options *)
    CPinteractiv,
    CPstatistic,
    CPquery, CPautoquery,
    CPdebug, CPversion,
    CPlister, CPerrorLister,
    CPafterPass1, CPafterPass2,(* defines moment of listing generation *)
    CPstacktest, CPrangetest,  (* default settings of program-source options *)
    CPindextest;

  VAR

  (* the following variables are used to define the format of *)
  (* the listing generated by the compiler                    *)

    CPpageLength,
       (* number of lines per page       : initial value is 60  *)
       (* valid range: 40..65535 (if out of range: 60 is taken) *)

    CPpageWidth: CARDINAL;
       (* number of characters per line  : initial value is 79 *)
       (* valid range: 50..150  (if out of range: 79 is taken) *)

    (* the next two parameters are used to define the page eject *)

    CPffAtEnd: BOOLEAN;
       (* defines whether a formfeed at last character  *)
       (* is generated or not: initial value is TRUE    *)

    CPffAtBegin: BOOLEAN;
       (* defines whether a formfeed at first character *)
       (* is generated or not: initial value is FALSE   *)

    (* the next two parameters define the header of each page *)

    CPheader: BOOLEAN;
       (* defines whether a headerline is generated on each *)
       (* page or not: initial value is TRUE                *)

    CPdate: BOOLEAN;
       (* defines whether date in headerline is generated *)
       (* or not: initial value is FALSE                  *)


    (* a header line has the following format:                       *)
    (* Modula-2/86       Date         filename.ext        Page    n  *)
    (* e.g.                                                          *)
    (* Modula-2/86       Nov 16'83    COMPPARA.DEF        Page    1  *)


    (* the next two parameters define the footer of each page *)

    CPfooter: BOOLEAN;
       (* defines whether a footerline is generated on each *)
       (* page or not: initial value is FALSE               *)

    CPfooterText: ARRAY [0..149] OF CHAR;
       (* string of pagewidth characters that defines the footerline  *)
       (* normally used for Copyright text: initially an empty string *)


  (* definition of interrupt system: number of priority levels *)

    CPpriorityLevels: CARDINAL;
       (* initial value of distributed version is 8:     *)
       (* defined by the (8259A) interrupt controller(s) *)


  (* definition of interface to Run-Time-Support system  *)

    CPRTSfunctVector: CARDINAL;
       (* defines the interrupt vector to acces the RTS              *)
       (* RTS: Runtime Support: Assembley part of Modula-2/86 System *)
       (* normally 228: may be only changed if RTS is changed        *)


  (* the following boolean variable defines whether code for an        *)
  (* 8087 coprocessor or an 8087 emulator is generated by the compiler *)

    CPemulator: BOOLEAN; (* initial value is TRUE *)

  (* the following options define the interactive behaviour of the compiler *)

    CPinteractiv: BOOLEAN; (* initial value is TRUE *)
       (* whether compiler may be stopped by typing a key *)

    CPstatistic: BOOLEAN; (* initial value is TRUE *)
       (* whether compiler displays some statistic values *)

    CPquery: BOOLEAN; (* initial value is FALSE *)
       (* whether compiler asks for the symbol files of  *)
       (* the imported modules or tries to find them by  *)
       (* the default strategy:                          *)
       (* build filename from module name by taking      *)
       (* the 8 first characters and the extension 'SYM' *)

    CPautoquery: BOOLEAN; (* initial value is TRUE *)
       (* whether compiler falls automatically in query mode  *)
       (* if it didn't find the file by the default mechanism *)

    CPdebug: BOOLEAN; (* initial value is TRUE *)
       (* whether compiler generates a reference file *)
       (* that would be used by the debugger, or not  *)

    CPversion: BOOLEAN; (* initial value is FALSE *)
       (* whether compiler displays version info or not  *)

    CPlister: BOOLEAN; (* initial value is FALSE *)
       (* whether compiler generates a listing file or not *)

    CPerrorLister: BOOLEAN; (* initial value is TRUE *)
       (* whether compiler generates automatically an  *)
       (* error listing if errors occured or not       *)

  (* moment of listing generation in case of errors *)

    (* if both variables are set to FALSE the listing *)
    (* will be generated after pass3                  *)
    (* the functions of the different passes are:     *)
    (*    pass1 checks syntactic of program           *)
    (*    pass2 checks declaration parts (allocation) *)
    (*    pass3 checks bodys (compatibility test)     *)


    CPafterPass1: BOOLEAN; (* initial value: TRUE *)
       (* whether compiler goes to lister if error detected *)
       (* in pass1 and terminates compilation, or not       *)

    CPafterPass2: BOOLEAN; (* initial value: FALSE *)
       (* whether compiler goes to lister if error detected *)
       (* in pass2 and terminates compilation, or not       *)

  (* the following boolean variables are used to define the default *)
  (* setting of the corresponding testcode options:                 *)
  (* TRUE means: default is '+'; FALSE means: default is '-'        *)

    CPstacktest: BOOLEAN;
       (* for option 'S': initial value is TRUE *)

    CPrangetest: BOOLEAN;
       (* for option 'R': initial value is TRUE *)

    CPindextest: BOOLEAN;
       (* for option 'T': initial value is TRUE *)

END CompPara.
