Google
 

Trailing-Edge - PDP-10 Archives - bb-d868a-bm - 3-documentation/lnk4-20.doc
There are 3 other files named lnk4-20.doc in the archive. Click here to see a list.


LINK.DOC -- Changes from V3A(560) to V4(765)
March 1978






























COPYRIGHT (C) 1976,1978 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.


THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
TRANSFERRED.

THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.

DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
LNK4.DOC                                                        Page 2


LINK.DOC -- Changes from V3A(560) to V4(765)
March 1978



1.0  SUMMARY

LINK is the linking  loader  for  the  DECSYSTEM-20.   OVRLAY  is  the
overlay handler for the DECSYSTEM-20.

LINK and OVRLAY both run under TOPS-20 Release 3.

LINK and OVRLAY are documented in the DECSYSTEM-20 User's Guide and in
the DECSYSTEM-20 LINK User's Guide.



2.0  EXTERNAL CHANGES

     1.  LINK generates an .EXE file with /SAVE switch.

         a.  /SAVE

         FORMAT     Filespec/SAVE.

         FUNCTION   Directs LINK to create an .EXE file with the given
                    filespec.

         EXAMPLES   *MYPROG
                    *DSKZ:GOODIE.EXE/SAVE/GO

                    Directs LINK to save the linked version of  MYPROG
                    as GOODIE.EXE on DSKZ:.

     2.  Supports PSECT.

         b.  /SET

         FORMAT     /SET:name:address.

                    Name = .HIGH., .LOW., or a PSECT name.

                    Address = an octal address, or a defined symbol.

         FUNCTION   Sets the loading position of a PSECT, or sets  the
                    .HIGH.  or .LOW.  relocation counter.

                    For setting the loading position of a PSECT,  name
                    is the name of the PSECT, and address is a virtual
                    memory address.  The PSECT will begin at the given
                    address.

                    For setting  relocation  counters,  name  gives  a
                    relocation counter (.HIGH.  or .LOW.), and address
                    gives the virtual memory address for the counter.
LNK4.DOC                                                        Page 3


         EXAMPLES   */SET:A:200000
                    *

                    Specifies that the PSECT named A is to  be  loaded
                    with its origin at address 200000.

                    */SET:.HIGH.:400000
                    *

                    Sets the high segment  relocation  counter  .HIGH.
                    to the address 400000.

         c.  /SYMSEG

         FORMAT     /SYMSEG:PSECT:name

         FUNCTION   Places the symbol table at the end of named  PSECT
                    so   that   it  will  not  be  overwritten  during
                    execution or debugging.

         EXAMPLES   */SYMSEG:PSECT:A
                    *

                    Places the symbol table at the end of PSECT A.

         d.  /COUNTER

         FORMAT     /COUNTER

         FUNCTION   Outputs to the  terminal  all  of  the  relocation
                    counter (PSECTs) values.

         e.  The LINK  MAP  files  will  contain  beginnning  and  end
             addresses for all the PSECTs for each module.

         f.  Three new PSECT .Rel blocks are added.  The  descriptions
             of  these  block types supersedes the descriptions in the
             LINK manual.

             Block type 24 -- PSECT header block

                    ---------------------------
                    !    24    !           3  !
                    ---------------------------
                    !           0             !
                    ---------------------------
                    !     PSECT   NAME        !
                    ---------------------------
                    ! ATTRIBUTE ! PSECT INDEX !
                    ---------------------------
                    !     PSECT   ORIGIN      !
                    ---------------------------

             Block type 23 -- PSECT end block
LNK4.DOC                                                        Page 4


                    ---------------------------
                    !    23     !           2 !
                    ---------------------------
                    !     Relocation word     !
                    ---------------------------
                    !       PSECT  NAME       !
                    ---------------------------
                    !       PSECT  BREAK      !
                    ---------------------------

             Block type 22 -- Change PSECT block

                    ---------------------------
                    !         22 !          2 !
                    ---------------------------
                    !            0            !
                    ---------------------------
                    !     PSECT     INDEX     !
                    ---------------------------

             or

                    ---------------------------
                    !        22  !          2 !
                    ---------------------------
                    !            0            !
                    ---------------------------
                    !     PSECT     NAME      !
                    ---------------------------
                    !     PSECT    ORIGIN     !
                    ---------------------------

     3.  New Error Messages:

         ?LNKIPX    INVALID PSECT index.

         ?LNKISS    Insufficient space for symbol  table  after  PSECT
                    XXXXXX.

         ?LNKNPS    Non-existent PSECT specified.

         %LNKPOV    PSECT overlap occurred:  n to m  PSECTS:   XXXXXX,
                    YYYYYY.

         ?LNKRPN    Relocatble PSECT  not  implimented -- /SET  Switch
                    required for PSECT:  XXXXXX.
LNK4.DOC                                                        Page 5


     4.  Performance Improvements

         a.  Prevent unnecessary clearing of vast amount of core after
             core shuffling.

         b.  Prevent PA1050 from coming back into core after LINK gets
             rid of it.

         c.  Better  paging  and  core  management  scheme  for  large
             PSECTed programs.

         d.  Prevent unnecessary disk overflow of programs with  large
             ( >128k ) core allocation.

     5.  Overflow files now have standard protection.

     6.  One edit (37) was added to OVRLAY.MAC.   This  edit  prevents
         output of a error message when the .OVL and .EXE file version
         inconsistancy check finds one to have a 0 version number.

     7.  LINK will no longer automatically load local symbols into  an
         overlaid program.  Locals will be loaded if /DEBUG, /TEST, or
         /SYMSEG are seen.

     8.  When loading FORTRAN or COBOL programs which are larger  than
         256  pages, LINK will now automatically load the OTS into the
         low segment.  Previous  versions  of  LINK  failed  with  the
         LNKHSL     message    unless    users    explicitely    typed
         /OTS:LOW/SEGMENT:LOW.

     9.  Better long error messages in LNKERR (same ones as in the new
         LINK manual).

     10. LINK will give %LNKPOV (PSECT overlays) warning message  when
         loading TOPS20 Release 3.  The messages may be ignored.



3.0  KNOWN BUGS AND DEFICIENCIES

     1.  To run this  version  of  LINK  under  TOPS20  Release  2  or
         earlier, LINK must be rebuilt (assembled and loaded) with the
         high  segment  origin  set  to  400000  (%HISEG==400000).   A
         problem  in  the  Release  2 PA1050 prevents LINK to run with
         high seg at 540000.

     2.  PSECTed programs with gaps (non-existent pages) in  its  core
         image  must  generate an EXE file.  The RUN or GET of the EXE
         file will set up the correct core image.
LNK4.DOC                                                        Page 6


4.0  INSTALLATION INSTRUCTIONS

4.1  Files Needed to Run LINK and OVRLAY

     <SUBSYS>PA1050.EXE
     <SUBSYS>LINK.EXE
     <SUBSYS>LINK.HLP
     <SUBSYS>*OTS.EXE (i.e., FOROTS.EXE or LIBO10.EXE)
     <SUBSYS>OVRLAY.REL


4.2  Instructions for Loading and Installing LINK and OVRLAY

Mount the tape labeled  Distribution  Tape  on  MTA0:   and  type  the
following commands:

     R DUMPER
     TAPE MTA0:
     REWIND
     DENSITY 1600-BPI
     SKIP 2
     RESTORE <*>LINK.EXE (TO) <SUBSYS>*.*.-1
     RESTORE <*>LINK.HLP (TO) <SUBSYS>*.*.-1
     RESTORE <*>OVRLAY.REL (TO) <SUBSYS>*.*.-1
     REWIND


4.3  Files Needed to Build LINK and OVRLAY

LINK is built from the following files:

     LNK*.MAC
     PLT*.MAC
     HELPER.REL
     SCN7B.REL
     JOBDAT.REL
     C.UNV
     SCNMAC.UNV
     LNKPRD.CMD
     LNKPLT.CMD
     LNKLNK.CCL

OVRLAY is built from the following files:

     OVRLAY.MAC
     MONSYM.UNV
LNK4.DOC                                                        Page 7


4.4  Instruction for Building LINK and OVRLAY

Mount the tape labeled  Distribution  Tape  on  MTA0:   and  type  the
following commands:

     R DUMPER
     TAPE MTA0:
     REWIND
     DENSITY 1600-BPI
     SKIP 3
     RESTORE <*>*.* (TO) <self>*.*
     REWIND
     ^C
     SUBMIT LINK/TIME:1:0:0


4.5  Special Considerations

None.



5.0  INTERNAL CHANGES


5.1  Changes To LINK

All changes made to LINK version  3A(560)  to  generate  LINK  version
4(765) are summarized below.


;START OF VERSION 4
;561      DCE     19-Jul-76      SPR 20359
;         Fix up returns from F10 subroutines when MIXFOR set
;         Routine: LNKLOD

;562      JNG     20-Jul-76      QAR CSM
;         Prevent ?ILL MEM REF when searching an indexed library if an
;         entry point is encountered that is already partially defined.
;         Routines: LNKOLD

;563      JNG     20-Jul-76      QAR U. Chicago
;         Prevent erroneous ?LNKIMM message when a module is indeed
;         loaded, but not as a result of a /INCLUDE switch (user loaded
;         it directly, or it contained entry point(s) which satisfied
;         some undefined globals in /SEARCH mode).
;         Routines: LNKOLD

;564      JNG     20-Jul-76
;         Make LINK assemble properly with MACRO 52.
;         Routines: LNKERR, LNKLOG

;565      DCE     21-Jul-76      SPR 20150
;         Prevent LINK from doing bad things when loading
;         block type 10 with the /ONLY:LOW switch set.
LNK4.DOC                                                        Page 8


;         ROUTINE: LNKOLD

;566      JNG     21-Jul-76      QAR EVS
;         Prevent incorrect symbol tables in user's core image and maps
;         that indicate that modules end at zero when paging.
;         Routines: LNKCOR

;567      JNG     21-Jul-76      QAR SRM
;         Prevent ?LNKISP message when a deferred global
;         definition is seen for a symbol that is already defined.
;         Routines: LNKOLD,LNKLOW

;570      JNG     22-Jul-76      QAR EVS
;         Prevent loss of local symbols in DDT symbol table when
;         some undefined symbols are present and the LS area is paging.
;         Routines: LNKXIT

;571      JNG     19-Sep-76      QAR U. Ill.
;         Prevent ?ILL MEM REF when one require file requires another.
;         Routines: LNKOLD

;572      JNG     20-Sep-76      QAR EVS
;         Make sure LS addr in core before doing POLISH symbol fixup.
;         Routines: LNKLOD,LNKOLD

;573      JNG     21-Sep-76      QAR EG&G
;         Prevent random USETO when ROOT of a relocatable overlay
;         structure has no external symbols.
;         Routines: LNKOV2

;574      JNG     30-Sep-76      SPR 20115
;         Load OTS into low seg if no high seg exists yet and low
;         seg is larger than 128K (256P).
;         Routines: LNKLOD

;575      JNG     6-Oct-76       SPR 19781
;         On /SAVE/EXECUTE, always specify extension of .LOW to
;         the RUN UUO if a two-segment program so the monitor will
;         ignore any .EXE file of the same name.
;         Routines: LNKXIT

;576      JNG     2-Dec-76
;         Correct usage of PT.SGN & PT.OTH in INTTAB hash table.
;         Routines: LNKOV2

;577      JNG     6-Dec-76       SPR 21566
;         Generate a fixup instead of HALTing when local block names
;         are encountered and the LS area is paging to disk.
;         Routines: LNKPAR,LNKOLD,LNKCOR

;600      JNG     17-Dec-76
;         Change LNKHST &LNKLOW to load with each segment rather than
;         assembling with each file.  This saves much re-assembling when
;         LNKHST is changed.  Also change to use REL:SCAN.REL.
;         Routines: LNKHST,LNKPAR,LNKLOW,LNKEXO,LNKSCN,LNKINI,*.CCL
LNK4.DOC                                                        Page 9



;601      JNG     19-Dec-76      SPR 10-21427
;         Print the correct version in the map if a /VERSION switch
;         has been seen.
;         Routines: LNKMAP

;602      JNG     19-Dec-76      SPR 10-21535
;         Ignore ASCII text in non-loaded library modules.
;         Routines: LNKNEW

;603      JNG     19-Dec-76
;         Delete redundant assembly parameter PPDL, use LN.PPD
;         everywhere.
;         Routines: LNKPAR,LNKOLD

;604      JNG     20-Dec-76      QAR LSS
;         Handle device NUL: correctly in all cases.
;         Routines: LNKCOR,LNKFIO,LNKINI,LNKMAP

;605      JNG     21-Dec-76      QAR EJW
;         Use OUTSTR's instead of OUTCHR's to TTY whenever possible.
;         Routines: LNKLOD,LNKLOG,LNKOV1,LNKWLD

;606      JNG     21-Dec-76
;         Get the protection of .HGH and .XPN files right.
;         Routines: LNKXIT

;607      JNG     7-Jan-77       QAR PMH
;         Make /HELP work on TOPS-20.
;         Routines: LNKINI

;610      JNG     15-Jan-77      SPR 10-21730
;         Modify file spec defaulting routines to handle ersatz devices
;         correctly (e.g. [1,2,3]/DEFAULT:INPUT, then REL:HELPER
;         as an explicit file spec).
;         Routines: LNKFIO,LNKWLD

;611      DMN     21-Jan-77
;         Add support for COBOL-74.
;         Routines: LNKPAR,LNKMAP,LNKLOD,LNKERR

;612      JNG     22-Jan-77      QAR JBS
;         Fix various polish bugs when a symbol is defined via a
;         polish string, esp. if it is then referenced in another.
;         Routines: LNKOLD,LNKLOD

;613      JNG     23-Jan-77      SPR 10-21868
;         Load all user-defined default libraries before considering
;         system default libraries so FOROTS will always go into the
;         right segment.
;         Routines: LNKLOD

;614      JNG     23-Jan-77
;         Re-search FORLIB if more FORTRAN code is seen in ALGLIB.
;         Routines: LNKLOD.
LNK4.DOC                                                       Page 10



;615      JNG     23-Jan-77
;         Never load blank file specs (broken by edit 610).
;         Routines: LNKWLD

;616      JNG     23-Jan-77      SPR 10-21881
;         Give a better error message than HALT if RENAMEs fail
;         in LNKXIT.
;         Routines: LNKXIT

;617      JNG     5-Feb-77
;         Fix .REQUEST/.REQUIRE and /OVERLAY (broken by 610 and 615).
;         Routines: LNKWLD

;620      JNG     6-Feb-77
;         When merging a corrected file spec, don't overwrite the old
;         device unless a new device was specified.
;         Routines: LNKWLD


;621      MCHC    1-NOV-76
;         /SAVE and /SSAVE switches generate an EXE file.
;         /SAVE and /SSAVE no longer takes any argument.
;         The code for generating .SHR/.HGH/.LOW is
;         under conditional assembly FTEXE==0.

;622      MCHC    21-JAN-77
;         Don't do HJBSET if there is no high seg.
;         LNKXIT

;623      JNG     7-Feb-77       SPR 10-21908
;         Don't blow up on two /PLOT switches
;         Routines: LNKOV1

;624      JNG     23-Feb-77      SPR 10-21900
;         Add a long message for ?LNKKIA.
;         Routines: LNKERR

;625      JNG     24-Feb-77      SPR 10-21899
;         Print an extra blank line in the log file after the ELN message.
;         Routines: LNKPAR,LNKLOG,LNKOV1

;626      JNG     25-Feb-77      SPR 10-21898
;         Don't search bound globals when a partial definition is seen
;         Routines: LNKOLD

;627      JNG     27-Feb-77      SPR 10-21896
;         Always type entire list of defining link numbers on %LNKARL
;         message, even if list takes more than 5 character to type.
;         Routines: LNKOV2

;630      JNG     27-Feb-77      SPR 10-21895
;         Don't forget INCLUDEd or EXCLUDEd files after asking
;         the user to correct an incorrect file specification.
;         Routines: LNKLOD
LNK4.DOC                                                       Page 11



;631      JNG     27-Feb-77      SPR 10-21894
;         Print the correct file spec in the LNKEOV message.
;         Routines: LNKOV1

;632      JNG     28-Feb-77
;         Fix $LOCATION to always work, and add $FIXUP.
;         Routines: LNKCOR,LNKLOD,LNKOLD,LNKOV1

;633      JNG     14-Mar-77
;         Don't point any fixups at a Polish string until we're sure
;         we want the Polish (might be /ONLY, non-loaded local, etc.)
;         Routines: LNKOLD

;634      JNG     7-Apr-77       SPR 10-22464
;         Never delete the user's input file on a fatal error, even
;         if its extension is .TMP.
;         Routines: LNKLOG

;635      JNG     10-Apr-77      SPR 10-22351
;         Handle too many %LNKARL messages gracefully.  This edit
;         adds the /ARSIZE switch and the %LNKTMA and ?LNKABT
;         messages.
;         Routines: LNKPAR,LNKLOW,LNKINI,LNKOV1,LNKOV2,LNKSUB,LNKERR

;636      JNG     17-Apr-77
;         Make TTYIT preserve T1, avoid ^H's to the TTY.
;         Routines: LNKINI

;637      JNG     17-Apr-77
;         Always give batch jobs the continuation error text on fatal
;         errors, since there is no user to type "continue".
;         Routines: LNKLOG

;640      JNG     17-Apr-77
;         Avoid further disk overflow in LNKMAP if possible.
;         Routines: LNKMAP,LNKCOR

;641      MCHC    10-FEB-77
;         Always do HC.OUT of what's in core to ensure updated vestigial 
;         JOBDAT before generating an EXE file.
;         LNKXIT

;642      MCHC    11-FEB-77
;         Uses EXE file extension for the disk file generated as result of
;         not having enough core (in JBNC).
;         LNKXIT

;643      MCHC    15-FEB-77
;         Fix bug with switch settings of P4, used to indicated an
;         EXE directory entry whould be output in XCMPRL routine.

;644      MCHC    15-FEB-77
;         Don't do JSYS 147(RESET) if EXIT rather than START is requested.
;         This prevent PA1050 to come back into core.
LNK4.DOC                                                       Page 12


;         LNKXIT (TOPS20==1)

;645      MCHC    10-MAR-77
;         While expanding LC to accomodate the symbol table at end
;         and there is no more core (error return from LNKCOR) and no paging yet
;         in LSREQ, page out to disk for the first time.
;         LNKXIT.

;646      MCHC    10-MAR-77
;         Dont touch a high seg page after the high seg is removed in %LOW
;         LNKXIT

;647      MCHC    26-Apr-77
;         Don't clear unneeded memory in LNKXIT (better VM performance)
;         Routines: LNKXIT

;650      JNG     28-Apr-77
;         Use VM on TOPS-10 if available under FTVM.
;         Routines: LNKPAR,LNKLOW,LNKINI,LNKCOR,LNKOLD,LNKLOG,LNKMAP,
;                   LNKERR,LNKOV1,LNKOV2,LNKXIT,LNKWLD

;651      JNG     2-May-77       SPR 10-22609
;         Put the overlay file where the user specifies.
;         Routines: LNKOV1

;652      JNG     13-Jun-77      SPR 10-22456
;         Avoid bad .SAV file when paging to disk.  Much of user's
;         program will be overwritten with some word from the program.
;         Routines: LNKXIT

;653      JNG     13-Jun-77      SPR 10-22957
;         Fix /SYSLIB with an argument.  Broken by edit 457.
;         Routines: LNKWLD

;654      JNG     15-Jun-77      SPR 10-22528
;         Don't lose common block names from local symbol table.
;         Routines: LNKLOD,LNKOLD

;655      JNG/JLd 24-Jun-77      SPR 10-23152
;         Don't print an erroneous module name in the map when the start
;         address is specified with a switch.
;         Routines: LNKWLD

;656      JNG     11-Jul-77      QAR JMF
;         Don't try to supercede an old output file if we find it
;         on the user's library.
;         Routines: LNKFIO

;657      JNG     12-Jul-77      QAR JMF
;         Don't blow up while trying to delete temp files on a fatal
;         error if IO.EMG area doesn't exist.
;         Routines: LNKLOG

;660      JNG     12-Jul-77      QAR DMN
;         Clear all .LINK storage at the end of each overlay.
LNK4.DOC                                                       Page 13


;         Routines: LNKOV1

;661      JNG     13-Jul-77      QAR BLISS-36
;         Make the %LNKMDS message only a warning level (L%W).
;         Routines: LNKLOD,LNKERR

;662      JNG     14-Jul-77      QAR DZN
;         Update NAMPTR in T.776 so block-structured symbol
;         files will work.
;         Routines: LNKOLD

;663      JNG     30-Sep-77      SPR 10-24037
;         Save GS.FR over LNKCOR call in LNK999.
;         Routines: LNK999

;664      JNG     6-Oct-77       QAR Gene Spadi
;         Don't destroy last word of bound globals on /NODE:0.
;         Routines: LNKOV1

;665      JNG     7-Oct-77
;         Fix core management bug with overlays. Broken by edit 650.
;         Routines: LNKOV1

;666      JNG     24-Oct-77
;         Fix edits 650 and 665, this time for sure.
;         Routines: LNKOV1

;667      JNG     25-Oct-77
;         Call correct paging routine to move window way up.
;         Routines: LNKLOD

;670      JNG     25-Oct-77
;         Don't overwrite DY.LNK in core shuffler.
;         Routines: LNKCOR

;671      JNG     25-Oct-77      SPR 10-24076
;         Don't leave a bad relocation table pointer lying around
;         if an overlay has no relocation table or "other" relocation
;         table, but the previous overlay did.
;         Routines: LNKOV1

;672      JNG     25-Oct-77      QAR JLd
;         Handle PPN's in request/require blocks correctly.
;         Routines: LNKLOD

;673      JNG     25-Feb-78
;         Update all of LINK's error messages to reflect the latest
;         LINK manual.  The FON, ILI, and LIT messages have been
;         replaced by the MSR, IRB, and RBS messages.  All of the
;         long messages in LNKERR have been replaced by the
;         explanation of the error from appendix B of the LINK manual.
;         Routines: LNKERR,LNKOLD,LNKLOD

;674      JNG     26-Feb-78
;         GETTAB the full path that LINK was run from so we can
LNK4.DOC                                                       Page 14


;         GETSEG our other high segments, even if we were run
;         from an SFD.  Requires TOPS-10 6.04 or later.
;         Routines: LNKPAR,LNKLOW,LNKINI

;675      (Withdrawn)

;676      JNG     26-Feb-78
;         Move the POPLP routine from LNKLOW to LNKINI.
;         Routines: LNKLOW, LNKINI, LNKCOR

;677      JNG     27-Feb-78
;         On TOPS-20, don't load symbols by default if loading
;         overlays, since they cause much overhead at runtime.
;         They will still be loaded on /SYMSEG or /DEBUG or /TEST.
;         Routines: LNKINI,LNKLOD,LNKOV1,LNKOV2,LNKWLD

;700      MCHC    6-MAY-77
;         Put in PSECT index check in polish block handling.
;         LNKOLD

;701      MCHC    26-May-77
;         Check for libaray search processing in block type 100.
;         LNKOLD

;702      MCHC    26-May-77
;         Save AC R on stack before a PUSHJ @ in Type 776 processing.
;         LNKOLD

;703      MCHC    26-May-77
;         Add CBL79, BLISS36, and BASIC-2 to list of compiler types.

;704      MCHC    5-JUL-77
;         Don't write out EXE-dir for non-existant pages.
;         LNKLOD, LNKXIT

;705      MCHC    6-JUL-77
;         Wait for the file to be loaded before doing /SYMSEG.
;         LNKWLD

;706      MCHC    26-JUL-77
;         Add RC.NTB which contains a pointer to relocation tables that
;         are ordered by the order seen by LINK.  This is the permanent
;         order that will be kept throughout the entire load.
;         Any delayed fixups containing PSECT index must be converted
;         to the permanent index number by this table.
;         LNKLOW, LNKINI, LNKWLD, LNKOLD

;707      MCHC    2-AUG-77
;         Keep global fixup chains separate if the first chain doesn't
;         come before the new chain.
;         LNKOLD

;710      MCHC    2-AUG-77
;         Move hiseg to begin at 540000.
;         LNKPAR
LNK4.DOC                                                       Page 15



;711      MCHC    8-AUG-77
;         Fix bug in MAP when only 1 PSECT in a module.
;         LNKOLD, LNKMAP

;712      MCHC    8-AUG-77
;         Add a check for PSECT index when a global is defined and
;         stored fixups are being checked.
;         LNKLOD

;713      MCHC    12-AUG-77
;         Fix bug with a sparse EXE-directory.
;         LNKXIT

;714      MCHC    16-AUG-77
;         Add PSECT-name as a global symbol having
;         origin as its value.
;         LNKWLD

;715      MCHC    1-SEP-77
;         Modify SYMSEG to to take PSECT name.
;         LNKPAR, LNKLOW, LNKWLD, LNKXIT

;716      MCHC    9-SEP-77
;         Performance improvements for loading large PSECTed programs:
;         1.      When moving the window down, write out what we have
;                 and read in only as much as LN.WD.
;         2.      When moving the window up, and the addr is already
;                 out on disk, don't bother to expand, just write
;                 out what we have and read in as much as LN.WD.
;         LNKLOD

;717      MCHC    19-SEP-77
;         Setup correct LINK addr to give back when reading from disk
;         is less than current core size.
;         LNKLOD

;720      MCHC    19-SEP-77
;         Allow moving up of a block larger than 400000 by separating
;         it into two steps.
;         Also do the reverse BLT(POP loop) in memory rather than in the
;         ACs on -20.
;         LNKLOW, LNKCOR

;721      MCHC    19-SEP-77
;         Change /SYMSEG to /SYMSEG:PSECT:psectname for taking
;         PSECTNAME.
;         LNKPAR, LNKWLD

;722      MCHC    20-SEP-77
;         Implement PSECT attributes.
;         LNKPAR, LNKOLD, LNKXIT

;723      MCHC    20-SEP-77
;         Add /UPTO:octalnumber to allow user specification of
LNK4.DOC                                                       Page 16


;         symbol table upper limit.
;         If not specified limit default to next PSECT origin.
;         If limit > next-PSECT-origin, overlaying will occur.
;         LNKPAR, LNKWLD, LNKXIT

;724      MCHC    23-SEP-77
;         Check for symbol table range in INGAP routine.
;         LNKXIT

;725      MCHC    26-SEP-77
;         Fix bug with incrementing process page when writing out
;         overlay symbol table into EXE file.
;         LNKXIT

;726      MCHC    20-OCT-77
;         Fix bug in INGAP routine in LNKXIT.

;727      MCHC    3-NOV-77
;         Give "Insufficient space" error message when symbol table
;         has to be truncated to avoid overlay into high segment.
;         LNKINI, LNKWLD,LNKXIT

;730      MCHC    10-NOV-77
;         Allow proper loading of /DEBUG:XXX with /LINK.
;         LNKLOW, LNKWLD, LNKOV1


;731      MCHC    17-NOV-77      QAR 10-02191(Stevens)
;         Replace SEARCH C with SEARCH MACTEN, UUOSYM.
;         Use symbols .SVXXX from UUOSYM.
;         LNKPAR, LNKXIT


;732      MCHC    29-NOV-77
;         Fix bugs related to loading code into the last page 777.
;         LNKPAR, LNKLOW, LNKINI, LNKOLD, LNKXIT


;733      MCHC    30-NOV-77
;         Fix bug with allocated high seg pages generating bad EXE format.
;         LNKXIT

;734      MCHC    12-DEC-77      Stevens(QAR 10-02197)
;         Add KL in CPUs.  Do mix code check for KL & KA, and KL & KI.
;         LNKPAR, LNKLOD

;735      MCHC    12-DEC-77      Stevens(QAR 10-02198)
;         Remove REPEAT 0 around polish operators:
;                 MAX(20), MIM(21), EQ(22), LNK(23), DEF(24)
;         and polish store operators:  MOVEM(-7)
;         LNKOLD

;736      MCHC    12-DEC-77      Stevens(QAR 10-02203)
;         Change overflow file protection to standard protection.
;         LNKCOR
LNK4.DOC                                                       Page 17




;737      MCHC    15-DEC-77
;         Clear link list pointer after it's given back
;         LNKLOD


;740      PAH     17-DEC-77      Worcester Tech(QAR 10-02183)
;         Remove /VERSION switch handling.  Add handling of
;         F.VER SCAN block field to DVOUT. and DVINP.
;         LNKPAR, LNKSCN, LNKWLD, LNKFIO

;741      MCHC    29-DEC-77      
;         After a new segment is read in core from disk, and fixup chain
;         is traversed for possible fixups in to the new segment,
;         compare the fixup address with the window range.
;         LNKLOD

;742      MCHC    30-DEC-77
;         Don't force dump of one page unless first code is over 128k.
;         LNKOLD, LNKXIT

;743      MCHC    10-JAN-78      EG&G(QAR 10-02217)
;         When calculating offset relative to a block, use symbol .DBM
;         LNKOV2

;744      MCHC    10-JAN-78      Worcester Tech(QAR 10-02244)
;         Fix bug with EXE-file size calculation for LINK to
;         pre-allocate enough blocks.
;         LNKXIT


;745      MCHC    11-JAN-78
;         Set default symbol table limit to 777777. If .HIGH. encountered,
;         the defualt symbol table limit is adjusted to .FRESP+1 words
;         before high segment origin.
;         LNKPAR, LNKOLD

;746      MCHC    11-JAN-78
;         Add a CHKBND routine to check for PSECT overlap right before
;         going to LNKXIT.
;         LNKLOD


;747      MCHC    18-JAN-78
;         After relocation table is sorted, make sure LOWLOC is updated,
;         especially if there was no code in .LOW. but space allocated,
;         before going to LNKXIT.
;         LNKLOD

;750      MCHC    24-JAN-78
;         Reserve 2 page windows to allow code to come in that spans
;         the page boundary.
;         LNKPAR, LNKINI, LNKCOR
LNK4.DOC                                                       Page 18


;751      MCHC    25-JAN-78
;         Fix bug with calculation of space to give back in PG.SD.
;         LNKLOD

;752      MCHC    26-JAN-78
;         Add code in CPUTST routine to convert a CPU-code from Block 6
;         into correct dispatch table offset for inconsistency check
;         routines.  Also, remove part of edit 734, and make KL check
;         same as KI.
;         LNKLOD

;753      MCHC    20-FEB-78
;         Fix bug in routine SETRCY--save current RC slot, and move to new
;         place.
;         LNKOLD

;754      MCHC    20-FEB-78
;         When LC(or HC) needs to be paged for the first time for adding
;         symbol table at end, prevent overflow of LS area.
;         LNKXIT

;755      MCHC    22-FEB-78
;         Add a table TAB.ZE and some code to allow zeroing of free space
;         (the space between TAB.AB and TAB.UB) for only the areas needed,
;         meaning either the AB or the UB value was changed.  This prevents
;         unnecessary BLTs and improves loading performance for medium
;         to large programs.
;         LNKLOW, LNKCOR

;756      MCHC    22-FEB-78
;         Fix bug in PSECT attribute bit definitions.
;         LNKPAR

;757      MCHC    22-FEB-78
;         Type out value of RC.HL(highest location) rather than RC.CV
;         (current value) for overlayable PSECT when doing /COUNTER.
;         Dont'clear RC.HL for overlayable PSECTs in Block 5 processing.
;         LNKWLD, LNKOLD

;760      MCHC    22-FEB-78
;         Expand PSECT overlap checks to check each PSECT with all others.
;         LNKXIT

;761      MCHC    22-FEB-78
;         Define a relocatable PSECT bit in PSECT attribute.  Give error
;         if code is generated into PSECT of unknown origin(relocatable
;         PSECT not implemented in this version).
;         LNKPAR, LNKLOW, LNKWLD, LNKOLD

;762      MCHC    25-FEB-78
;         When paging occurs with high LOWLOC value(lowest code addr.),
;         read in the right pages at the start of EXE file generation.
;         LNKXIT

;763      MCHC    28-FEB-78
LNK4.DOC                                                       Page 19


;         Add block 24 so that:
;
;         Block 22               SET PSECT block                      
;                 Contains PSECT index(or PSECT name if block 24 not used).
;                 Used to set the current relocation counters.
;                 Interspersed in block 1s and block 2s.
;         Block 23               PSECT end block
;                 Contains PSECT name and break.
;                 A set of block 23s appears at end of a load module.
;                 Maybe used to order PSECTs, if block 24s are not used.
;         Block 24               PSECT header block
;                 Contains PSECT name, attributes, PSECT index  and origin.
;                 A set of block 24s appears at the start of a load module.
;                 Creates a relocation counter if needed for this PSECT.
;                 Orders the PSECTs of a module.
;         If block 24s are not used: Block 22 must supply the PSECT name, and
;         block 23s are used for ordering.   A zero origin in block 22 is
;         assumed to be a relocatable PSECT.  Thus, /SET switch is required
;         to set origin.
;         LNKWLD, LNKOLD

;764      MCHC    28-FEB-78
;         Update LOWLOC (the lowest location) in GETSST(get start of symbol
;         table) routine incase symbol table is lower than code.
;         LNKXIT

;765      MCHC    28-FEB-78
;         Release on both TOPS-10 and TOPS-20 as LINK version 4(765)
;         Routines: All.



6.0  SUGGESTIONS

The following is  a  list  of  suggestions  accumulated  from  various
sources.   The  appearance of a suggested change in this list does not
imply any commitment or intent on the part of  DEC  to  implement  any
such change.

     1.  Change .JBHGH to be relocatable.

     2.  LINK to search REL:  for library files if it  fails  to  find
         them in SYS:.



[End of LNK4.DOC]