Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ Contents □ 1. Introduction □ 2. Basic symbols and comments □ 3. Identifiers, accumulators and cells □ 4. Types and values □ 5. Addresses and storage allocation □ 6. Simple cell designation □ 7. Assignment statements □ 8. Integer accumulator assignments □ 9. Real accumulator assignments □ 10. Long accumulator assignments □ 11. Cell assignments □ 12. Block structure □ 13. Procedures and labels □ 14. Conditional and control statements □ 15. Functions □ 16. Cell declarations □ 17. Synonym declarations □ 18. Storage allocation □ 19. Subcompilation and global storage □ 20. Define statements, conditional compilation and include statements □ 21. Compiler directives □ 22. FORTRAN/PLASYD mixed programming □ 23. ALGOL/PLASYD mixed programming □ 24. Useful library routines □ 25. Use of TASK macro to compile PLASYD programs □ 26. SMO cell designation □ 27. Compiler output □ 28. PLAN instructions not provided for in PLASYD □ Appendices □ 1: Errors and comments □ 2: 1900 character set □ 3: Syntax definitions in alphabetical order □ 4: Use of program XMED □ 5: 1900 order code □ 6: Code genereated for typical PLASYD statements □ 7: A sample PLASYD program □ 8: Less commonly used directives □ References
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
⟶ ACL ⟶ Literature ⟶ ICL 1906A manuals ⟶ PLASYD
⟶ ACL ⟶ Literature ⟶ ICL 1906A manuals ⟶ PLASYD
ACL ACD C&A INF CCD CISD Archives
Further reading ⇓

□ Contents □ 1. Introduction □ 2. Basic symbols and comments □ 3. Identifiers, accumulators and cells □ 4. Types and values □ 5. Addresses and storage allocation □ 6. Simple cell designation □ 7. Assignment statements □ 8. Integer accumulator assignments □ 9. Real accumulator assignments □ 10. Long accumulator assignments □ 11. Cell assignments □ 12. Block structure □ 13. Procedures and labels □ 14. Conditional and control statements □ 15. Functions □ 16. Cell declarations □ 17. Synonym declarations □ 18. Storage allocation □ 19. Subcompilation and global storage □ 20. Define statements, conditional compilation and include statements □ 21. Compiler directives □ 22. FORTRAN/PLASYD mixed programming □ 23. ALGOL/PLASYD mixed programming □ 24. Useful library routines □ 25. Use of TASK macro to compile PLASYD programs □ 26. SMO cell designation □ 27. Compiler output □ 28. PLAN instructions not provided for in PLASYD
Appendices
□ 1: Errors and comments □ 2: 1900 character set □ 3: Syntax definitions in alphabetical order □ 4: Use of program XMED □ 5: 1900 order code □ 6: Code genereated for typical PLASYD statements □ 7: A sample PLASYD program □ 8: Less commonly used directives □ References

21. COMPILER DIRECTIVES

21.1 Syntax

file          ::= filename|filename (integer)
subfile       ::= subfilename|subfilename (integer)
subdescrip    ::= file. subfile|file|. subfile

The integer is, in each case, the generation number of the file or subfile.

sendto        ::= SENDTO (file. subfile)|SEND TO (file. subfile)
addto         ::= ADDTO (file. subfile)|ADD TO (file. subfile) 
dumpon        ::= DUMPON (file)|DUMP ON (file) 
libfile       ::= LIBRARY (file. subfile) 
semifile      ::= SEMICOMPILED (file. subfile) 
nameline      ::= NAME (name)
where name is the four character name of  the program
trusted       ::= TRUSTED (integer)
priority      ::= PRIORITY (integer)
progmode      ::= PROGRAM MODE (pmodedescrip)
pmodedescrip  ::= mdα,  mdβ,  mdδ|mdα,  mdβ|mdα
where α β δ = a b c in any combination
mda           ::= 15AM|22AM
mdb           ::= DBM|EBM
mdc           ::= 15CH|22CH|MIXAM
updown        ::= UPPER, LOWER|LOWER, UPPER|UPPER|LOWER
progeven      ::= PROGEVEN (UPDOWN)
ignore        ::= IGNORE (updown)
segments      ::= SEGMENTS
namelist      ::= name, namelist|name
overlay       ::= OVERLAY (integer, integer) namelist
overcommon    ::= OVERCOMMON (integer) namelist
segmode       ::= SEGMENT MODE (smodedescrip)
smodedescrip  ::= mdα, mdβ|mdα
where α β  = d e in either order
mdd             ::= 15AM|22AM|MIXAM
mde             ::= DBM|EBM|MIXBM
segeven         ::= SEGEVEN (updown)|SEGEVEN
smomacro        ::= SMOMACRO
compilesmo      ::= COMPILESMO
localseg        ::= LOCAL SEGMENTS
globalseg       ::= GLOBAL SEGMENTS
local           ::= LOCAL  localtail
localtail       ::= ALL|: namelist|ALL BUT:namelist
macrofile       ::= MACROFILE (file)
publicfile      ::= PUBLICFILE (file)
readfrom        ::= READ FROM (subdescrip)
listlevel       ::= LIST|SHORTLIST|NOLIST
tabset          ::= TAB integer
switch          ::= SWITCH(numberlist)
numberlist      ::= integer, nunberlist|integer

21.2 Program Description

Program description directives occur before the first segment of the program and may not be repeated unless this is specifically permitted in the description of the individual directive. Their effect lasts until the end of compilation. The directives described in the present chapter will be adequate for the majority of programs. Descriptions of less commonly used directives will be given in an appendix.

21.2.1 SENDTO

This directive is used to specify the output file and subfile to which the semicompiled generated by the PLASYD compiler, is to be sent, and there must be one such directive. The filename given is irrelevant when the compiler is run under GEORGE.

21.2.2 SEMICOMPILED and LIBRARY

The SEMICOMPILED and LIBRARY directives specify files containing previously compiled segments, which are to be consolidated with the segments currently being compiled. If a SEMICOMPILED directive is used, all the segments in the named file will be consolidated. If LIBRARY, only those segments which have been referred to by earlier segments will be consolidated. There may be any number of LIBRARY and SEMICOMPILED directives, subject to the consolidator limitation of twelve input files. This number includes the file currently being processed. The filename specified in the SEMICOMPILED and LIBRARY directives is irrelevant.

21.2.3 NAME

This directive specifies the four character program name of the binary to be produced from the source currently being compiled. The characters must be alphanumeric and the first must be a letter. More than four characters may be given up to a maximum of twelve, but only the first four are significant. If this directive is omitted, a default name of XXXX is assumed. The program name serves no useful function, but it is printed on the compiler and consolidator listing and may therefore be of some use as a form of comment.

21.2.4 PROGRAM MODE

The address and branch modes in which a program is to be run are specified by means of a PROGRAM MODE directive. The address mode may be specified as 15AM or as 22AM. If it is not specified 15AM is assumed. The branch mode may be specified as DBM or EBM. If it is not specified, DBM is assumed. The consolidator address checking mode may be specified as 15CH, 22CH, or MIXAM, the latter meaning no checks. If it is not specified the specified or assumed address mode parameter is used. If the directive is omitted completely, the assumed settings are:

PROGRAM MODE (15AM, DBM, 15CH)

15AM corresponds to the FORTRAN directive COMPACT DATA and 22AM to EXTENDED DATA. DBM corresponds to the FORTRAN directive COMPACT PROGRAM and EBM to EXTENDED PROGRAM.

21.3 Segment Description

SEGMENT DESCRIPTION directives are placed before any segment of a multisegment program or before the lone segment if there is only one. They may be repeated before subsequent segments, and unless stated to the contrary their effect lasts until they are reset by another directive of the same type, or until the end of the compilation.

21.3.1 MACROFILE and PUBLICFILE

These directives are used to specify the file containing library source texts, to be used by INCLUDE statements. If both MACROFILE and PUBLICFILE directives are given, the compiler will search for the required subfile in the macrofile before searching the publicfile. The filenames specified are irrelevant under GEORGE, as the operating system will provide the files required.

21.3.2 LOCAL SEGMENTS and GLOBAL SEGMENTS, LOCAL Directive

The LOCAL SEGMENTS directive informs the compiler that global labels and procedure names in subsequent segments will only be referenced from the overlay in which they appear. The GLOBAL SEGMENTS directive specifies that subsequent global labels and procedure names may be referenced from other overlays. The default setting is GLOBAL SEGMENTS and if this is not altered a substantial amount of overlay changing code will be incorporated, which will not be required in a non-overlaid program. The LOCAL directive specifies which of the global labels in a segment following are to be referenced only from the same overlay and which external labels referenced from that segment are in the same overlay. There are three forms of this directive:

LOCAL ALL;                 all labels in the same overlay 
LOCAL: namelist;           specified labels in the same overlay
LOCAL ALL BUT: namelist;   labels other than those specified are in the same overlay.

If a LOCAL SEGMENTS directive is in force, all global labels must be declared local to their overlay. This may conveniently be done by preceding each segment with a LOCAL ALL directive. Note that a LOCAL directive only refers to the segment immediately following.

21.4 Program Source and Listing Control

The following directives are all optional and their effects last until they are reset by a directive of similar type, unless specified differently.

21.4.1 Compiler Listing Levels

There are three directives which may be used to specify the amount of output required from the compiler. The directive NOLIST will suppress all compiler output. SHORTLIST will cause those lines to which the compiler has added error messages or comments to be listed. LIST will produce full listing of the source code, with any error messages and comments, plus a detailed list of the core store required by each segment. The default setting is LIST.

21.4.2 Switch Bit Settings

If it is desired to use the conditional compilation facility as described in Section 20.3, the appropriate bits in the switch word may be set by means of the SWITCH directive. If several bits are to be set at the same time, this may be done by giving a list of numbers within one SWITCH directive or by giving several directives. For example the following sequences will both set 2, 4 and 6 of the switch word.

(a)  SWITCH (2)                        (b)  SWITCH (2,4,6) 
     SWITCH (4) 
     SWITCH (6)

Note that bits 0 to 10 may be used for controlling conditional compilation, but the bit 0 is also used to indicate that a listing of the semicompiled code produced by the compiler is required. Note also that the effect of switch directives only lasts until the end of the segment they precede.

⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site