perm filename SAIL.OPR[S,AIL] blob sn#293960 filedate 1977-07-14 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00012 PAGES VERSION 17-2(6)
RECORD PAGE   DESCRIPTION
 00001 00001
 00003 00002	HISTORY
 00004 00003	Summary of possible Compiler and Exec configurations
 00009 00004	File List
 00011 00005	Compiler creation procedures
 00013 00006	Creation of RUNTIM, LIBSAI
 00019 00007	Creation of shared execs
 00022 00008	Files required (copy or produce) for EXPOrt system.
 00028 00009	Exporting Procedure
 00031 00010	Documentation Aids
 00036 00011	References to other documents
 00037 00012	History of SAIL versions (important SAVE tapes)
 00041 ENDMK
⊗;
COMMENT ⊗HISTORY
AUTHOR,REASON
021  202100000006  ⊗;


COMMENT ⊗
VERSION 17-2(6) 7-11-73 
VERSION 17-2(5) 7-11-73 
VERSION 17-2(4) 1-18-73 BY jrl continue mods for version 17
VERSION 17-2(3) 1-18-73 
VERSION 17-2(2) 1-18-73 
VERSION 17-2(1) 12-13-72 BY JRL PARTIAL UPDATE FOR SAIL VERSION 17

⊗;
Summary of possible Compiler and Exec configurations



I. PROCEDURES FOR CREATION AND MAINTENANCE OF STANFORD SAIL SYSTEM

A. FILE AND SWITCH CONFIGURATIONS FOR VARIOUS SYSTEMS.
 1. See HEAD for Conditional assembly switch definitions, macros which
    use them.
 2. See SAIL for RPG files to make compilers  ---
 3. See FILSPC for library names, segment names, ppn's, default extension etc.
 4. One Segment compiler will be loaded from library.
 5. Two segment compiler will be loaded with SAILOW, to get routines it needs.
 6. Debugging compiler must be loaded with a DDT, should have FTDEBUG on in
    or above SAIL.
 7. Compiler to generate re-entrant code (/H) requires RENSW≠0 in SAIL (default)
 6. See GOGOL for RPG files to make runtime routines.
 7. RUNTIM.REL can be created by assembling HEAD, GOGOL, STRSER, IOSER,...
    together with no special operations. This is all the runtime routines.
 8. LIBSAn.REL is created by running SCISS. Reply Y<cr> to all questions.
 8a.HLBSAn.REL is created by running SCISS, Reply N<cr> to "STANDARD?" and
    request REENTRANT library in both PASS 1 and 2.
 9. The shared runtimes are created via the following mechanism:
   a. CALLIS,HEAD,LOW,FILSPC,GOGOL,STRSER,IOSER,ARYSER,NWORLD are used to get 
      LOWER.REL,
      some fixed-location variables, the UUO trap location, the segment-fetcher,
      and the dispatch to the allocation routines. A unique second segment name
      (of the form SAISGn), its device and PPN locations, are also contained
      therein.
   b. FILSPC and TAILOR are assembled to get TAILOR.REL, a file which when
      loaded provides some global variables with the names (SAISGn, etc.)  which
      should be used for the upper segment file and device -- also parameters
      like write-protection and symbol inclusion for upper segment.  This is 
      done in separate assembly so that these can be changed without re-
      assembling the upper segment (next).
   c. CALLIS,HEAD,UP,ORDER,GOGOL,STRSER,IOSER,ARYSER,NWORLD,LEPRUN,WRDGET
      are assembled to get UPPER.REL, which
      refers to the things in TAILOR as Externals to get name.
   d. Loading UPPER and TAILOR and running it creates SAISGn.REL (name determined
      by FILSPC/TAILOR), the sharable upper segment, by simply writing out
      that part of itself (which has been phased to 400000) which is intended
      to be the upper segment stuff.  In addition, it jams all or part of its
      symbol definitions into the SAILOW-type .REL file with the name that
      FILSPC said.  SAILOW contains the symbol linkages, name, device, and PPN
      (where SAISGn must reside) for SAISGn. Loading SAILOW causes SAISGn to be
      fetched and linked as a segment when the job is started.
 10. Global model segment stuff works similarly -- the file GLB is introduced
      to set the appropriate switch, modifying the definition of the LOWER and
      UPPER assemblies.  GLBSGn and GLBLOW are the corresponding keyed file names.
File List

B.  Original Files (not created during any bootstrapping operation)
 1. Compiler and Execs files
    CALLIS, HEAD, FILSPC
 2. Ptran input
    HEL
 3. Rtran input
    FOO2
 4. Compiler files
    DB, SAIL, PARSE, SYM, HEL2, FOO2, GEN, ARRAYS, STATS,
     EXPRS, TOTAL, COMSER, LEAP, PROCSS
 5. Exec files
    UP, TAILOR, LOW, GLB,GOGOL, STRSER, IOSER, ARYSER,  LEPRUN, MESPRO,
     NWORLD,WRDGET
 6. RPG command files
    IT, THAT, RUN, SGMNT, GSGMNT
 7. Bootstrap programs
    PTRAN.SAI, RTRAN.SAI, MAKTAB.SAI, SCNCMD.SAI
 8. Support software
    EXTRACT.SAI, DATALIST.SAI, GRUMP.FAI, PROFIL.SAI
 9. Export stuff
    TELLEM, DDT, CREF.MAC
 10.Other files.
    BKTBL.BKT or the like. 2OPS2.OPS or the like.
 11.Files of some relevance
    MANUAL.DOC, SAIL.ON, FAIL.ON, 
    ARRSER,EXTEND,SRTSER,SYMSER,SCNCMD,SCNSER,LPDUMP,LPREAD,LP4MAT -- packages

 12.Files to aid in export procedure
    EXAM.FAI

Compiler creation procedures

C. CREATING SAIL COMPILERS
 (parts 1 and 2 are automatically done by parts 3 and 4 if
  necessary, but are included here for clarity.

 1. Create production tables, reserved-word list for RTRAN
   a. COMPILE PTRAN.SAI and RTRAN.SAI (require SCNCMD.SAI,WNTSLS) if no DMPs.
   b. RU PTRAN
   c. *PROD←HEL
   d. *

 2. Create reserved word tables
   a. RU RTRAN
   b. *RESTAB←PROD,FOO2
   c. *

 3. Two-segment debugging compiler
   a. COMPILE @THAT
   b. R LOADER
   c. */Y/VSAIL<alt>
   d. SAVE SAILD, or SAILII, or something reasonable.

 4. Two-segment non-debugging compiler.
   a. COMPILE @IT
   b. R LOADER
   c. */Y/SSAIL/V<alt>
   d. START
   e. SAVE SAIL, can also place on system.


Creation of RUNTIM, LIBSAI

D. CREATION OF SINGLE-SEGMENT, NON-LIBRARY RUNTIME ROUTINES

  1. COMPILE @RUN
  2. Load RUNTIM.REL with SAIL-compiled programs -- provides
     all runtime routines at maximum cost.
 
E. CREATION OF LIBRARY OF SAIL RUNTIME ROUTINES
1. Current library version number in ORDER (following "NAM") and FILSpc
2. RU SCISS[S,AIL]
3. SCISS will ask the question "STANDARD?" before PASS 1 and before
   PASS2 (unless PASS 1 was totally suppressed). To get the standard LIBSAn
   simply reply Y<cr> to both questions. Otherwise type N<cr> and then you
   will get a list of options.

   PASS 1

	1  PASS 2 NOW
	2  DON'T CHAIN TO FAIL
	3  DON'T CREATE INTERMEDIATE FILES
	4  MAKE REENTRANT LIBRARY
	5  SELECT ENTRIES FROM PROMPT-LIST
	6  SPECIFY ENTRIES EXPLICITLY
	7  DON'T DELETE INTERMEDIATE FILES (PASS 2)
	8  DON'T MAKE A LIBRARY(PASS 2)

   Type the indices of those options you wish to invoke:

   1. Pass 2 now means don't create the SAIxxx.FAI files or call FAIL.
      This makes sense only if SCISS has been run before and the SAIxxx.REL
      files still exist. This option will cause the copying of the .REL files
      (which ones, may be specified by invoking options 5 or 6) to form a
      library (unless inhibited by option 8) and then deleting the .FAI and
      .REL files (unless inhibited by option 7). The library will be named
      HLBSAn if option 4 is requested (The .REL files should have been created
      by running SCISS with a REENTRANT library requested during the first pass).

   2. Don't chain to FAIL means just create the .FAI files. Don't assemble them.
	
   3. Don't create intermediate files. Don't create the .FAI files but
      unless inhibited assemble the .FAI files generated previously.

   4. Make REENTRANT library means to make a HLBSAn instead of a LIBSAn.
	(command must be given to both PASS 1 and PASS 2)

   5. Select entries from prompt-list means that SCISS will type the
      library entries and let you indicate whether you desire that entry in
       the library. This option and the next are very useful in avoiding
      reassembling everything when an assembly error has occurred in one or
      two library entries. SCISS will type the names of the library entries
      like SAICOR, pausing for your response:
		Y<cr> retain this entry
		N<cr> omit this entry
		DONE  dispose of the rest of the entries as you did the
		      last (all Y or N)

   6. Specify entries explicitly - type the names of the entries you want
      (SAILOR etc) separated by <cr>. After all the names you want
      type DONE<cr>

   7. Don't delete intermediate files- don't delete the .FAI or .REL
      files (only meaningful if doing PASS 2 now)

   8. Don't make library.(only meaningful doing PASS 2 now).

  
PASS 2

   An important thing to remember is that SCISS doesn't remember what you
requested at the beginning of PASS 1 so if you want something unusual
(e.g. a reentrant library or a library without certain entries) you are
going to have to tell SCISS again.

	1 DON'T DELETE INTERMEDIATE FILES
	2 DON'T MAKE A LIBRARY
	3 MAKE A REENTRANT LIBRARY
	4 SELECT ENTRIES FROM PROMPT-LIST
	5 SPECIFY ENTRIES EXPLICITLY

These have the same meaning as they did in PASS 1.

				GOOD LUCK WITH SCISS

Creation of shared execs

F.  CREATION OF SHARED, STANDARD (non-global model) EXECS

 1. When changing the transfer vector, making major changes, or creating 
        special	systems, change FILXXX (SAISGn), not SLOFIL (SAILOW) in FILSPC,
 	by incrementing n for production systems.  Also change the global
	equivalents in GLB.

 2. Other FILSPC parameters of interest may be changed:
	SGDEVC -- the device (default device for global model) in SIXBIT
	 (merely a definition for it)
	SGPPNN -- the PPN (default for global) for the segment in SIXBIT
	LOCSYM -- on if local symbols are to be transferred from UPPER to
	 SAILWn.
	NOPROT -- on if the upper segment is to be left unprotected
	 (Stanford  non-global only) -- these latter two switches are likely 
	 set together.

3.  JOBVER in GOGOL should be <'SGn',,SAIL version> for grins.  The production 
	lower segment name should be SYS:SAILOW, or the LOADER should be
	told about the change. (soon RPG will do the /Y, not LOADER--then
        LOADER can be real ignorant).

 4. LOA @SGMNT (@GSGMNT), see GOGOL.  This assembles TAILOR, UPPER, and
	LOWER.  It loads TAILOR and UPPER.  Changes to FILSPC (GLB) will
	cause only TAILOR and LOWER to be reassembled.

 5. Start the job.  Created as if from nowhere will be SAISGn.REL, and SAILOW.REL
	as specified in FILSPC.  They go together, in that if SAILOW properly
	specified the device and PPN, etc. when a job containing it is started,
	the right segment will come up.

 6. I suggest a SAILWT and SAISGT on [S,AIL] with all debugging aids deployed.

 7. All this goes more or less symmetrically for GLBSGn, GLBLOW (try to keep
	versions synched).
Files required (copy or produce) for EXPOrt system.

II. CREATING AN EXPORT SYSTEM

A. Required files for EXPO SAIL (transfer to T,AIL, modified as specified)
 1. To get working SAIL abroad:
	TELLEM[S,AIL]
	LOADER.REL[T,AIL] -- from CSP,SYS DEC v54 modified, although any 
	  v54 with SAILSW and FAILSW on will work if prodded (try to delete need)
	SAIL.REL[T,AIL] (assembled from IFN'd files described below.
	DDT.REL[1,3] hopefully DEC latest modified (soon)
	LIBSAn.REL[T,AIL] and EXPO-ized library (with HEAD), created by SCISS

 2. To modify compiler or Execs.
    a. Used by SAIL and RUNTIM
	HEAD[IFN←S,AIL]*
	FILSPC[IFN]

    b. SAIL only
	SAIL[IFN etc.]*
	PARSE[IFN]
	HEL2[S,AIL]*
	FOO2[S,AIL]* (CLRBUF excised in version sent to DECUS)
	PROD[T,AIL] created by PTRAN (possibly screwed up in DECUS version).
	PROD.QQQ[T,AIL] created by PTRAN
	RESTAB[T,AIL] created by RTRAN
	SYM[IFN]
	GEN[IFN]
	ARRAY[IFN]
	EXPRS[IFN]
	STATS[IFN]
	LEAP[IFN]
	TOTAL[IFN]
	PROCSS[IFN]
	COMSER[IFN]
    c. Execs only
	UP[IFN] (segment-tailoring file)
	LOW[IFN] (low part tailoring file)
	TAILOR[IFN] (FILSPC parameterizes it -- used to create final segments)
	GOGOL[IFN←SAIL]*
	STRSER[IFN←SAIL]
	IOSER [IFN]
	ARYSER [IFN]
	NWORLD[IFN]
	LEPRUN[IFN] (possibly screwed up in DECUS version).
	WRDGET
	ORDER (library description for SCISS)
ON, probably
    d. Used by PTRAN, RTRAN
	HEL[S,AIL]*
	FOO2[S,AIL]*
    e. Required Software support (in addition to LOADER and DDT above)
	FAIL.REL[T,AIL] from CSP,SYS
	PTRAN.SAI[S,AIL]
	RTRAN.SAI[S,AIL]
	SCNCMD.SAI[1,DCS]*
	WNTSLS.SAI[S,AIL]
	MAKTAB.SAI[S,AIL] (makes 2OPS2.OPS)
 4. Extra files to complete SAIL Features
	2OPS2.OPS (created by MAKTAB -- transfer to SYS for START_CODE)
	BKTBL.BKT[1,3] parameter file for STDBRK
 5. Optional helpful files
	FAIL[CSP,SYS]*
	DDT[S,AIL]
	CREF.MAC[S,AIL]
	SCISS.SAI[S,AIL]* makes LIBSAI.REL when run, uses CCL
	PROFIL.SAI, User program to list KOUNTER files.
	SCNSER.SAI, SCNCMD.SAI -- REQUIREd by PROFIL.
	EXTRACT.SAI[S,AIL] removes interesting stuff from SAIL CREF
	DATALIST.SAI[S,AIL] makes sense out of it.
	SAIL.DOC, FAIL.ON[CSP,SYS] -- final manuals.
	EXAM.FAI[S,AIL] -- EX on [T,AIL] to get list of files with
		line numbers -- don't send out
	IFN.SAI[S,AIL] -- don't send out -- pre-conditionally assembles

 6. Files not necessary to most people, provided after EOT as separate list,
     may be ignored by most people.
	ARRSER,EXTEND,SRTSER,SYMSER,SCNCMD,SCNSER -- FIGURE 'EM OUT

 * modifications:
	HEL -- turn off global switch
	FOO2 -- delete Stanford-only routines
	SCNCMD--turn off STANSW
	FAIL -- turn off STANSW
	HEAD, GOGOL, SAIL -- change conditional switches if you
		don't like the defaults (two-segment, ftdebug, etc.)
	LOADER--set appropriate switches (.052 OK as defaulted if SAILSW
		and FAILSW are on).
	SCISS -- STANSW off.
Exporting Procedure


B. Exporting Procedure (on T,AIL)

 1. Create IFN file, containing all necessary IFN transfer commands --
	put on [T,AIL] as IFN or something.
 2. Copy QQIFN.RPG←IFN. (RPG file gets deleted occasionally)
 3. Make an IFN.REL from IFN.SAI[S,AIL]; start it at RPG location.
 4. If errors occur, edit IFN to delete already assembled things, go
     back to step 2.
 5. Rename all .UPD files to null ext. files, (except LOW.FAI, UP.FAI)
 6. Copy over all additional files needed for SAIL system test; make
     mods as given above.
 7. Run PTRAN and RTRAN to create PROD, etc.
 8. Run FAIL (glom IT from somewhere, modify, create DB) to make an
      SAIL -- load with modified DDT. (block structure).
 9. Patch CALLI TMPCOR (find it by running to ILLUUO) to JFCL, save as SAIL.
10. See if it will compile something, iterate till it will.
11. Modify SCISS as given, run it to get LIBSAn.
13. Run Sciss again if HLBSAn desired.
14. Make SAILOW, SAISGn, etc. as described on page 1.
15. Copy and modify as shown the remaining files as described above.
16. EX EXAM[S,AIL] to check for `T' and line-numbered files, remove
    the directories and line numbers, delete spurious files.
17. FAILSAFE all first section files to tape
18. After EOT, FAILSAFE the optional files, most of which must be loaded
    from a previous tape.
19. Send hard-copy of TELLEM,a manual if necessary, and the tape.

Documentation Aids

III. DATALIST AND EXTRACT DOCUMENTATION PROGRAMS

1. ADD LINE #s TO ALL FILES, FIX UP "BEND RESTAB" IN RESTAB

2. COM /CREF /COM @THAT (with (xlr) in FAIL string)

3. R CREF
4. *DSK:SAIL.CRF←SAIL.LST
5. *DSK:CREFIL←SAIL.LST/S
6. *↑C

7. EX EXTRACT[S,AIL]
 
8. EX DATALIST
9. P

10.RENAME PRTCRF=CREFIL or DEL CREFIL

11. Examine DIRECT -- if it's OK, delete everything else
    and list it -- otherwise back up as necessary.
C. DATALIST, EXTRACT -- hairy SAIL programs


These programs, combined with a CREF listing of the compiler, provide
a  large  file  full of useful summations and cross-references to the
code of the compiler.  Proceed in the following fashion:

1.  Make a listing file via FAIL  of  the  selected  version  of  the
compiler, starting out with
	,SAIL/C←HEAD(XLR),SAIL,....  The (XLR) is important to select
the proper listing options.

2.  Assemble our version of CREF.MAC.  Load and run it, following the
script as:
	*DSK:SAIL.CRF←SAIL.LST
	*DSK:CREFIL←SAIL.LST/S
	*↑C

This  forms one complete CREF listing, and one (CREFIL) with just the
cross-reference tables in it.

3. EX EXTRACT

This SAIL program removes  from  the  body  of  SAIL.CRF  just  those
portions which are useful for the remaining procedures.

4. EX DATALIST Then type P<cr> to continue.

This  program  uses  EXTRACT  (the  result  of the previous step) and
CREFIL to make a file containing:

a. A summary of all DATA names in  the  compiler,  along  with  their
locations (EDIT10 (STOPGAP) and CREF numbers, block and file names)

b.   A  summary  of  all  the  DSCR  macro  names  (DSCR  stands  for
DESCRIPTION, and is ignored by FAIL), and their locatons --  usually,
the DSCR's describe routines.

c.  A  nice  listing of all the data declarations, their accompanying
comments, etc., wherever they appear in the compiler.

d.  An expansion of all the DSCRS in the  file,  giving  a  standard,
formatted description of all the major routines.

e.  An  alphabetical  summarized  cross-reference  of  all  the  data
declarations.

f.  An alphabetical summarized  cross-reference  of  all  the  DSCR'd
routines.

5. After verifying that DIRECT (the result of DATALIST) is OK, delete
all intermediate files.  You'll  also  have  to  list  the  CREF,  of
course,  to  get  anything  out  of the CREF line numbers provided in
DIRECT.

This file should be very helpful in learning some  things  about  the
compiler.


References to other documents

For Conditional assembly switches and their parameter files,
	see HEAD

For Command files for various and sundry above procedures,
	see SAIL (early pages) and GOGOL (early pages).

For History of implementations (and bugs they fixed) see FILSPC,
	page 2.

For Export Users' installation instructions, see TELLEM.

For New Features as told to Users, see NEWMAN

For brief descriptions of changes which are or should soon be in
 SAIL manual, see DOCS.UPD (usually more current and concise than NEWMAN).

History of SAIL versions (important SAVE tapes)

A. Tape labeled A
   9-7-71
   556 bpi =128 word records, 7-track SAVE format
   IFN'ed EXPORT version
   2 logical tapes, as per this and the TELLEM document

	This version will form the base files for DECUS distribution of
   SAIL.  I will really try not to
   allow subsequent featueres and fixes to weaken my resolve to make this
   the base set unless the bugs are blatent. This set of files was also
   send to CASE (Alan Rosenfeld) and Western Electric in Princeton.

B. Tape labeled B
   9-7-71
   556 bpi =128 word records, 7-track SAVE format
   logical tape #1 -- COMPLETE S,AIL
   logical tape #2 -- FAIL, RAID, DDT, LOADER, TJ, MAKER, MANUAL, packages, etc.

	This version (see A) will form my base set for future mods for R.
   Sproull, Suppyes, Erman, etc.  If changes are made, I'll send SOUP files
   along with the initial distribution.

D. Tape labelled D (BLISS files on C)
   11-3-71
   556 bpi =128 word records, 7-track SAVE format
   IFN'ed EXPORT version
   2 logical tapes, as per this and the TELLEM document

	This is identical to (A) above.  It was written because tape A has
   data errors, and because PROFIL, SCNSER, and SCNCMD were on logical tape
   2 instead of 1. Otherwise, not a bit is different (although it should be,
   since %SIZES is SIZES in SAIL -- bug to be fixed next SOUP.
F.	2-15-72 [S,AIL] DAEMON FORMAT
		[S,AIL] to date.  These files represent a probably 
		non-working set of files, some stage of SAIL development.
		Some, but not many of the changes since last release are
		contained in them.  This area was saved to supplement
		the next group.  Any file not found there should be con-
		sidered current in this area.
	2-15-72 [AIL,DCS] DAEMON FORMAT
		The "pre-cut" version of SAIL.  To my knowledge, it works
		correctly, although many changes were made.  I've tested it
		on many programs.  This version represents many changes
		for fixes and features not considered major.  It does not
		include the work of RHT, HJS, JRL.  It was created to 
		provide a base for sending updates to other people, before
		the world collapses.  Hopefully, no corrections will have
		to be added to it (it should be good enough).  This is
		known to assemble at least adequate copies of the compiler,
		and all types of runtimes.  If the file you want doesn't
		exist here, look on the [S,AIL] dump above.