Trailing-Edge
-
PDP-10 Archives
-
decuslib10-06
-
43,50417/pascal.hlp
There is 1 other file named pascal.hlp in the archive. Click here to see a list.
PASCAL V.2 HELP FILE 4 pages 23-May-77
Files for Pascal on IPS Systems:
-1. SYS:PASCAL.SAV The dispatcher to the compiler
0. SYS:CROSS.SAV The dispatcher to the cross reference program
1. PUB:PASCAL.EXE The compiler
2. PUB:CROSS.EXE The cross reference program
3. SYS:PASLIB.REL The Pascal library
4. HLP:PASCAL.HLP Help file for the compiler
5. DOC:PASCAL.MAN Pascal User's Manual for the 10
6. DOC:PASCAL.DOC History of DEC-10 Implementation
7. PAS:ACK3.PAS Sample Pascal program
8. PAS:CROSS.PAS Source for the cross reference program
9. PAS:PASCAL.PAS Source for the compiler
10. PAS:LIBPAS.PAS Pascal portion of the library
11. PAS:LIBMAC.MAC Macro portion of the library
Note: on IPS systems, PAS: is defined to be DSKE:[5,63]
Note also that PASCAL is a compiler distributed by DECUS and
as such IPS does not guarantee the correct operation of the
compiler. The compiler is placed on our systems in the hope
that by offering the user community a superior language in
which to express their programs, the art of programming may
be furthered.
The following is extracted from pages 4, 5, and 6 of the users manual,
PASCAL.MAN to illustrate the usage of the compiler. For more detailed
information, list out DOC:PASCAL.MAN.
1. Usage of the PASCAL Compiler
================================
1.1. How to Use the Concise Command Language for PASCAL
-------------------------------------------------------
If the installation has modified the DECSystem-10 Concise Command
Language (CCL) handler [8] to detect the extension PAS and activate
the PASCAL compiler, one simply has to use the standard CCL
commands. Options, as described in Section 1.5., may be appended
according to the CCL conventions. These commands, called
"COMPIL-class" commands, are defined as follows:
<compil-class command> ::= <command name>
[<file name>=]
<file description>
[@<file name>]
[<compiler options>]
[<command options>]
<command name> ::= COMPILE or LOAD or EXECUTE
<compiler options> ::= (<option sequence>)
<command options> ::= /<option sequence>
<option sequence> ::= <option> [/<option>]*
<option> ::= <identifier> [:<unsigned integer>]
<file description> ::= [<device>:] <filename>
[.<extension>] [<ppn>]
[<protection>]
Example:
.COMPILE FILNAM( CODESIZE:1200/DEBUG )/LIST
.LOAD FILNAM( RUNCORE:16/CODE )/CREF
.EXECUTE FILNAM( FORTIO/NOCHECK )/COMPILE
The so-called =- and @-constructions [8] are also supported.
.COMPILE NAMFIL=FILNAM( EXTERN )/LIST
generates relocatable output on NAMFIL.REL and a listing on
LPT:NAMFIL.
If SWITCH.CMD contains the line
( CODESIZE:1200/DEBUG/RUNCORE:20 )
the command
.COMPILE FILNAM@SWITCH
is equivalent to
.COMPILE FILNAM( CODESIZE:1200/DEBUG/RUNCORE:20 )
Depending on the command the program is compiled and/or loaded
and/or executed. The program is compiled if the PAS-file has a
younger creation date than the REL-file -if existent-. The
compilation can be enforced with the COMPILE-option (refer to 1.5.).
- 5-
1.2. How to Use the PASCAL Compiler Directly
--------------------------------------------
The compiler is executed by
.R PASCAL
In this case the compiler will prompt the user at his terminal to
provide file descriptions and compiler-options for source, list and
relocatable object code files (refer to Section 2.1. or 5.7.9. for
more detailed information). The file description has the following
form:
DEVICE: FILNAM.PAS [PROJECT, PROGRAMMER] <PROTECTION>
------- --------------------- ------------
The underlined parts may be omitted. They are by default
DEVICE DSK
[PROJECT, PROGRAMMER] own PPN
<PROTECTION> installation default (usually <057>)
The compiler-options may be appended to each of the following file
descriptions according to the conventions described in Section 1.5..
Example:
.r pascal
OBJECT = filnam.rel/codesize:800 relocatable object
LIST = filnam.lst/code listing
SOURCE = filnam.pas/nocheck/debug source file
If e.g. the file description for OBJECT is defaulted, the compiler
generates relocatable object code on a file named OBJECT (refer to
2.1. and 4.1.). A listing is generated if either the LIST-, CODE- or
CREF-option is specified or just a file description for LIST is
provided.
1.3. How to Run a PASCAL Program
--------------------------------
Compilation starts when the following message is output:
PASCAL: FILNAM [<program name>: <entry>, ...]
After successful compilation the following size information is
output:
HIGHSEG: u K + m WORD(S)
LOWSEG : v K + n WORD(S)
The first line denotes the core requirement for the high-segment
(code) in K, the next line denotes the core requirement for the
low-segment (data) in K.
- 6-
If the compiler has generated relocatable code on FILNAM.REL, the
program is loaded by
.LOAD FILNAM.REL or .LOAD FILNAM
An executable program is obtained by
.SAVE FILNAM w
after loading where w is the total core requirement for the program.
It should be at least u + v + 5. A sharable high-segment is obtained
by
.SSAVE FILNAM w
SSAVE must not be used if the program has been compiled using the
DEBUG-option.
Another way to provide the core requirement for a program is to
compile it with the RUNCORE-option. The value of the option denotes
the maximum core requirement for the low-segment in K words. The
value has to be v + 2 at least.
Example:
.load filnam( runcore:16 )/compile
.ssave filnam
.run filnam
In this case the program itself allocates 16K for its low-segment
each time it is executed and the user need not to take care of the
size of the high-segment.
The program is executed by
.RUN FILNAM
Should more core be required than has been specified when saving or
compiling the program, the command
.RUN FILNAM n
may be used where n stands for the larger core requirement.
If several programs are linked together or it is necessary to get
the correct size of low- and high-segment, the program(s) should be
loaded with the MAP-option like
.LOAD FILNAM,PROC1,PROC2,/SEARCH MYLIB[302,3015]/MAP
The "loader map" can be obtained by
.PRINT <program name>.MAP
After inspection of the loader map one can specify w as the total
size of the low-segment plus the total size of the high-segment plus
the core needed for Stack and Heap. The value of the RUNCORE-option
for later compilations can be evaluated as the total length of the
low-segment plus the size of the heap.