174 lines
6.8 KiB
Plaintext
174 lines
6.8 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. *
|
|||
|
* *
|
|||
|
****************************************)
|
|||
|
IMPLEMENTATION MODULE CompPara;
|
|||
|
|
|||
|
BEGIN
|
|||
|
(* the following variables are used to define the format of *)
|
|||
|
(* the listing generated by the compiler *)
|
|||
|
|
|||
|
CPpageLength := 60;
|
|||
|
(* number of lines per page : initial value is 60 *)
|
|||
|
(* valid range: 40..65535 (if out of range: 60 is taken) *)
|
|||
|
|
|||
|
CPpageWidth := 79;
|
|||
|
(* 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 := TRUE;
|
|||
|
(* defines whether a formfeed at last character *)
|
|||
|
(* is generated or not: initial value is TRUE *)
|
|||
|
|
|||
|
CPffAtBegin := FALSE;
|
|||
|
(* 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 := TRUE;
|
|||
|
(* defines whether a headerline is generated on each *)
|
|||
|
(* page or not: initial value is TRUE *)
|
|||
|
|
|||
|
CPdate := FALSE;
|
|||
|
(* 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 := FALSE;
|
|||
|
(* defines whether a footerline is generated on each *)
|
|||
|
(* page or not: initial value is FALSE *)
|
|||
|
|
|||
|
CPfooterText := "";
|
|||
|
(* 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 := 8;
|
|||
|
(* initial value of distributed version is 8: *)
|
|||
|
(* defined by the (8259A) interrupt controller(s) *)
|
|||
|
|
|||
|
|
|||
|
(* definition of interface to Run-Time-Support system *)
|
|||
|
|
|||
|
CPRTSfunctVector := 228;
|
|||
|
(* 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 := TRUE; (* initial value is TRUE *)
|
|||
|
|
|||
|
(* the following options define the interactive behaviour of the compiler *)
|
|||
|
|
|||
|
CPinteractiv := TRUE; (* initial value is TRUE *)
|
|||
|
(* whether compiler may be stopped by typing a key *)
|
|||
|
|
|||
|
CPstatistic := TRUE; (* initial value is TRUE *)
|
|||
|
(* whether compiler displays some statistic values *)
|
|||
|
|
|||
|
CPquery := FALSE; (* 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 := TRUE; (* initial value is TRUE *)
|
|||
|
(* whether compiler falls automatically in query mode *)
|
|||
|
(* if it didn't find the file by the default mechanism *)
|
|||
|
|
|||
|
CPdebug := TRUE; (* initial value is TRUE *)
|
|||
|
(* whether compiler generates a reference file *)
|
|||
|
(* that would be used by the debugger, or not *)
|
|||
|
|
|||
|
CPversion := FALSE; (* initial value is FALSE *)
|
|||
|
(* whether compiler displays version info or not *)
|
|||
|
|
|||
|
CPlister := FALSE; (* initial value is FALSE *)
|
|||
|
(* whether compiler generates a listing file or not *)
|
|||
|
|
|||
|
CPerrorLister := TRUE; (* 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 := TRUE; (* initial value: TRUE *)
|
|||
|
(* whether compiler goes to lister if error detected *)
|
|||
|
(* in pass1 and terminates compilation, or not *)
|
|||
|
|
|||
|
CPafterPass2 := FALSE; (* 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 := TRUE;
|
|||
|
(* for option 'S': initial value is TRUE *)
|
|||
|
|
|||
|
CPrangetest := TRUE;
|
|||
|
(* for option 'R': initial value is TRUE *)
|
|||
|
|
|||
|
CPindextest := TRUE;
|
|||
|
(* for option 'T': initial value is TRUE *)
|
|||
|
|
|||
|
END CompPara.
|
|||
|
|