Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ IntroductionA. System overviewB. Program executionC. FilestoreD. GEORGE commandsE. Introduction to Multiple On-line Programming (MOP)F. Input of background jobsG. Editing filesI. Budgeting, scheduling and accountingJ. Monitoring filesL. FORTRANM. ALGOLN. Assemblers PLASYD, PLANP. ConsolidatorQ. LibrariesR. Data storage □ Sections S-Z unavailable □ S. Large program organisationT. User utilitiesV. Graphics packagesW. Other packagesX. Efficient use of the 1906AY. 1906A hardwareZ. Peripheral equipmentList of reference manualsIndex
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLLiteratureICL 1906A manuals1906A Reference Manual
ACLLiteratureICL 1906A manuals1906A Reference Manual
ACL ACD C&A INF CCD CISD Archives
Further reading

IntroductionA. System overviewB. Program executionC. FilestoreD. GEORGE commandsE. Introduction to Multiple On-line Programming (MOP)F. Input of background jobsG. Editing filesI. Budgeting, scheduling and accountingJ. Monitoring filesL. FORTRANM. ALGOLN. Assemblers PLASYD, PLANP. ConsolidatorQ. LibrariesR. Data storage
Sections S-Z unavailable
S. Large program organisationT. User utilitiesV. Graphics packagesW. Other packagesX. Efficient use of the 1906AY. 1906A hardwareZ. Peripheral equipmentList of reference manualsIndex

P. Consolidator

P.1 ACTION OF THE CONSOLIDATOR

Consolidation is the name given to the process of converting semicompiled output from a compiler into a binary program which can be run. Most of the standard compilers produce output which has to be consolidated (one exception being ALGOL68). Using a standard method of producing programs ready to run means that various semicompiled libraries can be used, and output from more than one compiler can be linked together.

The GEORGE 4 consolidator normally used at ACL is XPCH. This usually produces sparse programs (Y.3.2.3), but can produce programs in any of the addressing or branch modes (Part Y). It cannot, however, produce an overlay program. If overlays are needed, the GEORGE 3 consolidator XPCK (Part S) must be used.

P.1.1 CALLING XPCH

Usually, consolidation follows immediately after compilation, with the necessary parameters being passed by the compiler or the TASK system. In this case, the user provides the information required (such as library names, listing options etc) to the compiler, and links libraries to channels via the macro (LIB parameter in TASK). If the binary program is produced directly from pre-compiled files, XPCH must be called directly (CONS parameter in TASK) and the necessary steering information provided explicitly.

P.1.2 METHOD OF CONSOLIDATION

Files linked to XPCH are specified either as libraries or as a complete file. The latter will be linked in regardless of preceding references unless a segment of the same name has already been loaded. However, all libraries are scanned once in order. It is therefore necessary to arrange the order of segments within library files, and the files themselves, so that routines are correctly linked. For example, if B calls A, and A comes before B in order (either in the same file or in a previous file), the linking will only be correct if A has been loaded by something else (such as an earlier reference). If duplicate routines are encountered, the first is taken as the required one and references are linked to this. If, however, subsequent routines of the same name are forcibly included, they will be loaded and will take up store space although no references to them will be made. If a routine with the required name exists but is of the wrong mode, then XPCH will not load it.

Users with Assembly Code programs (Part N), or FORTRAN programs using ENTRY, should note that XPCH will satisfy a reference to a CUEd (or GLABEL) name (as opposed to a routine name) only if the routine containing the CUE has already been loaded (either by specific reference or included in a complete file using a SEMI parameter, for example). This can be an advantage. Suppose a program contains calls to a number of different output devices, with attendant routines. It is possible for unwanted routines to be removed by including a routine which contains the names of the unwanted routines as CUEs. If this routine is loaded first, the unwanted routines will not be loaded and store space will be saved.

P.2 GEORGE 4 CONSOLIDATOR XPCH

XPCH allows the user to produce a binary program up to 3M words long. The actual amount of store used can be varied at run time, since storage is only allocated to parts that are actually used. It is possible to define sections of a program as 'pure1, in which case checks are made to prevent these sections being overwritten. For example, the instructions produced by compiling a FORTRAN routine are placed in a 'pure1 area. The use of such areas also speeds program running, since it is not necessary to copy pure areas when deleting them from core (via the paging system).

The user of high level languages does not need to know about the control of store, since the compiler will make the necessary allocations. The 3M words available are divided into 48 quires, each 64K words long. A sparse program will usually occupy only a small part of its virtual store, the size of the program being the maximum number of pages it may use. Sparse programs usually operate in 22-bit address mode and extended branch mode (Y.2.1). The GEORGE 3 consolidator can only produce dense programs.

P.2.1 CORE LAYOUT

A semicompiled segment consists of code, and data which may be local (and unnamed) or COMMON. One COMMON area can be nominated as the stack (ALGOL, TOPGLOBAL directive in PLASYD, or #ELASTIC directive in PLAN). Code and data are placed in the following areas:

  1. Lower Data: This must reside in the first 4K of the virtual store, and is subdivided into:
    Lower Workspace         (Impure)  LW
    Lower Variable          (Impure)  LV
    Common Lower Variable   (Impure)  CLV
    Lower Preset            (Impure)  LP
    Common Lower Preset     (Impure)  CLP
    Lower Pure              (Pure)    LR
    Common Lower Pure       (Pure)    CLR
    Literals                (Pure)    LT
    
    The compilers usually determine where data is placed.
  2. Pure Part: This contains those sections of program marked as Pure (usually by the compiler). It is preceded by the Replacers (RR) for the whole program (the addresses generated by Replaced Branch instructions Y.2.1.2). Each segment is followed by its own Pure Upper Data (UR). All Pure COMMON Upper Data (CUR) follows after the segments.
  3. Impure Part: This normally starts in quire 4 (unless the Pure Part would overlap). It contains sections of program code marked Impure, together with Impure Upper Data (Upper Preset (UP) followed by Upper Variable (UV)). All Impure COMMON Upper Data (CUP and CUV) follow after the segments. Note that any Pure Upper Data associated with Impure segments is stored in the Impure Part, and is not protected.
  4. Stack: This is stored in quire 8 (unless the Impure Part would overlap). It is an Impure area (TOP) which can be expanded.

Store Layout Example

Lower Data           LW               Quire 0
                     LV
                     CLV
                     LP
                     CLP
                     LR
                     CLR
                     LT
Replacers            RR
                     
Pure                 PSEG1
                     UR
                     PSEG2 
                     UR 
                     CUR
                     
Impure               SEG3              Quire 4 
                     UP
                     uv
                     SEGA 
                     UP 
                     UV 
                     CUP
                     CUV
                     
STACK                TOP               Quire 8

Dense programs are ordered in the same way, but the sections are not put into separate quires.

The layout can be changed by the user, but this option should be used with care and is not discussed further.

P.2.2 INPUT/OUTPUT AND PARAMETERS

XPCH accepts parameters from a basic file on *CR0 and files containing semicompiled segments on *DA1, *DA2, etc. At most, 12 files can be read. The listing, if any, is produced on *LP0 and the binary program is either written to a file or left in store ready to run. In general, it is preferable to avoid the first option and use the SAVE command to copy the core image to a file (D.4.3).

The steering parameters are only required if XPCH is called directly. As with other ICL programs, many of the parameters require filenames. These may be dummy filenames, but should be distinct, although it is possible to force a second read of a library by using the same dummy filename twice. The possible parameters are:

*IN (filename)

This specifies a semicompiled file which will be completely included. One of these parameters must be present.

*LIB (filename)

This specifies a library file. Semicompiled segments will only be included if they have been previously referenced.

XPCH will work faster if any libraries have been set up by XFYZ or NULLIB (Part Q).

*OUT (filename)

This defines a file on which the binary object program is to be written. If omitted, the binary program is left in store.

*APPEND (filename)

The binary program is appended to an existing file. The parameters are terminated by:

****

Files are scanned in the order of the parameters. Errors in parameters give rise to:

HALTED: PE

The listing may contain one of the following error codes:

Code Meaning
B   Unrecognised parameter
D   Parameter line too long
E   File or subfile name contains illegal character
F   No left parenthesis
H   File or subfile name too long
I   File or subfile name does not start with letter
J   No right parenthesis
K   No full stop
M   No filename
N   More than one *OUT or *APPEND
O   Invalid combination of parameters
P   No *IN parameter
Y   Parameter incomplete
02  Invalid format - terminator assumed 
     (This message will not cause a halt)

P.2.3 ERRORS

The following errors are possible:

Error             Meaning
HALTED: NEED ED   The parameters do not match the files provided.
HALTED: ER        Message output on listing.
HALTED: YY        Message output on listing.
DISPLAY: MO       Program is incomplete.  Consolidation will continue 
                  with segments missing.
HALTED: QQ        This can occur in a consolidated program and indicates 
                  a call to a missing segment at run time.
HALTED: ST        Needs more store to consolidate.

Lineprinter messages:

INVALID FILE STRUCTURE                      Usually means compilation errors.
INVALID SEMICOMPILED FORMAT                 Usually means compilation errors.
CANNOT FIND SUBFILE name                    Usually means compilation errors.
LOWER DATA > 4096 WORDS                     This means that the program must be 
                                            redesigned to lessen LOWER data use, 
                                            or overlays may be required.
LOWER UNIT VIOLATION ON LOADING             Sparse FORTRAN program >4096 words of LOWER.
MISSING AND OMITTED SEGMENTS List of names  The consolidator does not stop.
ADDRESS FOR MISSING AND OMITTED SEGMENTS    Address of SUSWT QQ order inserted for missing cues.
UNEXPECTED CUE FOUND                        A global name has been used incorrectly.  
                                            For example, the same name has been used for a 
                                            subroutine and a BLOCK COMMON area in FORTRAN.
INCOMPATIBLE MODE: SEGMENT                  The segment is omitted.

P.2.4 LISTING

The order of the listing output from XPCH is:

  1. Parameter errors, if any.
  2. Program name, mode setting.
  3. List of missing segments, if any.
  4. Start addresses of storage class areas and cued items in the object program, together with type and name, printed in ascending address order. In a sparse program, items are listed in their respective quires.
  5. Size of object program.
  6. Filename of file if *OUT or *APPEND have been used, together with last bucket used.
  7. Further error messages, if any.

Example:

CONSOLIDATED BY XPCHIA     DATE 10/09/71   TIME 18/37/00
     *IN (SEMICOM FILE)
     *OUT (PROGRAM FILE)
     *SPARSE
     *SHARE
     *QUIRE 17, R (NOTWRITEAREA)
     *PURE (SEGA, SEGB)
COMM.02 COMMONA1,   COMMONA2 
COMM.03 ****
SPARSE PROGRAM #RELJ   (MIXED AM -  STARTS   IN  22AM/EBM/SHARABLE)
-------------------------------------------------------------------
MISSING AND OMITTED SEGMENTS
  OMIT      SEG3
  MISS      BLANK
QUIRE  0
--------
LOWER DATA  
LENGTH 1103 WORDS = 2 PAGES
LW    *55           45
LV    *60           48
LP    *1044         548
LR    *1427         791
      *2112        1098
PURE PART
LENGTH 158 WORDS  = 1 PAGE
*PURE
RR    *10000       4096
SEG   *10016       4110    SEGA (9 WORDS)
                        ENT       4110  ENTA
SEG   *10027       4119    SEGB (5 WORDS)
CUR   *10034       4129    COMMONA1
CUR   *10667       4151    COMMONA2
DEFAULT PURE
SEG   *10074       4156    SEGC  (48 WORDS)
CUR   *10156       4206
      *10156       4206    COMA
QUIRE 4
-------
IMPURE PART
LENGTH   1000096  WORDS  = 977 PAGES
OVERSPILL HAS OCCURRED INTO QUIRES  5-19
SEG          *1000000   262144      IMPSEG   (90 WORDS) 
CUV          *1000140   262240      MILLIONLONGCOMMON
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
QUIRE 20      (SPECIFIED AS QUIRE 8 BUT SHIFTED DUE TO OVERSPILL)
--------  
CHARACTERISTIC: E/R/W = IMPURE 
LENGTH 69600 WORDS    = 68 PAGES 
OVERSPILL HAS OCCURRED INTO QUIRE 21
     TOP *5000000 1310720         TOPCOMM
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
QUIRE 22  (SPECIFIED AS QUIRE 17 BUT SHIFTED DUE TO OVERSPILL)
-------
CHARACTERISTIC: R
LENGTH 500 WORDS = 1 PAGE
     CUP  *5400000 1441792      NOTWRITEAREA
     *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
ADDRESS FOR MISSING AND OMITTED SEGMENTS  *1426  790
SIZE 1074176 WORDS = 1049 PAGES
LAST BUCKET USED OF PROGRAM FILE (0) IS 20

P.3 CONSOLIDATION USING TASK

The following is a brief description of the use of TASK in accessing XPCH. Further details can be obtained from the TASK manual.

P.3.1 SIMPLE CONSOLIDATION

Specifying a compiler and omitting the NOCONS parameter will automatically call XPCH. For example:

TASK FORTRAN,*CR FRED

The parameter OVERLAY will call the GEORGE 3 consolidator XPCK, and. should only be used if overlays are required (Part S). In this case, it may be necessary to specify a larger store for XPCK by using the parameter:

CCORE size

XPCH will automatically expand, if required, up to the given MAXSIZE when it will halt ST. In this case the job should be rerun with a larger MAXSIZE.

The standard languages such as FORTRAN and ALGOL will cause standard libraries to be scanned. The user does not need to provide a LIB parameter for these (Part Q).

P.3.2 MULTIPLE SEGMENTS

It is possible to compile and consolidate several segments together in one run of TASK by using the LINK parameter. The LINK parameter is also needed if SEMI or LIB parameters are used and no steering lines have been provided for the compilers (such as LIBRARY(B), SEMICOMPILED(A) in FORTRAN). For example:

TASK FORTRAN,*CR FRED,LINK,LIB (26,NAGLIBF)
TASK PLASYD,*CR SUBS,NOCONS,ER,FORTRAN,*CR FRED,LINK

P.3.3 DIRECT USE OF CONSOLIDATOR

If no compiler is required, the CONS parameter should be used as the first parameter. This parameter can also be used to provide a parameter file for XPCH. In this case, the specified file will contain the parameters described in N.2.2. Note also that explicit parameters must be provided for standard libraries in this case. For example:

TASK CONS CPAR,SEMI FRED-SEM 
TASK FORTRAN,*CR FRED,CONS CPAR

File CPAR might contain in the second example:

*IN(A)
*LIB(B)
*LIST
****

It is also possible to omit CONS if a LINK parameter is present. The following two examples are equivalent:

TASK LINK,SEMI FRED-SEM 
TASK CONS,LINK,SEMI FRED-SEM
⇑ 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