192 lines
7.5 KiB
Plaintext
192 lines
7.5 KiB
Plaintext
|
(****************************************
|
|||
|
* *
|
|||
|
* 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.
|
|||
|
|