Google
 

Trailing-Edge - PDP-10 Archives - bb-r775d-bm_tops20_ks_upd_4 - documentation/link.doc
There are 32 other files named link.doc in the archive. Click here to see a list.


LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0(2364)
May 1985






























COPYRIGHT (C) 1985 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.
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)      Page 2


1.0  SUMMARY

LINK is the linking loader for the DECSYSTEM-20.  LINK version 6.0  is
a  development  release designed to provide new features, enhancements
to existing features, internal changes,  and  support  for  Fortran-20
version  10.  It contains long symbol support, several new REL blocks,
and improved handling of extended programs.

LINK version 6.0 supercedes all  previous  versions.   It  runs  under
TOPS-20  versions 4.1(KS), 5.1, 6.0, and 6.1.  Note TOPS-20 5.1 should
include an addition to the splice fork code.  This is  edit  3086  and
was shipped on Autopatch tape 8.

Microcode version 326 (or later) should be installed  inorder  to  use
extended addressing

LINK is documented in the  LINK  Reference  Manual.   This  manual  is
available  as  part of volume 5 of the TOPS-20 Notebooks or separately
as order number AA-41830-TM.
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)      Page 3


2.0  EXTERNAL CHANGES

2.1  Changes To LINK

The following sections contain  summaries  of  all  important  visible
changes that have been made to LINK since version 5.1(2030).  Refer to
the section on internal  changes  for  more  information  on  specific
edits.


     1.  Increased reliability of extended  addressing  support.   All
         known   problems  with  30-bit  addressing  and  multisection
         programs have been fixed in this version.

     2.  Part of a program may occupy  both  section  zero  and  other
         sections.    This  removes  a  restriction  on  the  previous
         version.

     3.  Better error messages.  The following new messages have  been
         added:


         Suffix  Lev  Sev  Standard Message Text
         ------  ---  ---  ---------------------

         CBO 31   31   Cannot build overlays outside section zero

         CCE      8    8   Character Constant not word aligned in call to routine 
             [routine] called from module [module] at location [address]

         CCS 31   31   Cannot create section [octal]
              {Detected in module [symbol] from file [file]}

         CMP 31   28   Common [symbol] declared in multiple psects
             {Detected in module [symbol] from file [file]}

         CSP     31   28   Cannot setup UDDT symbol table pointers
                           {JSYS error text}

         COE  8    8   Both CONCATENATE and OVERLAY attributes specified for
             psect [name]

         CRS  1    1   Creating section [octal]

         MMF 31   31   Memory manager failure

         RWA  8    8   Both READ-ONLY and WRITABLE attributes specified for
             psect [name]

         STL 31   31   Symbol too long

         UIE 31   31   Unexpected internal error during error processing

         UMF 31   31   Unexpected monitor call failure for [JSYS] at PC [octal]
             {JSYS error text} 
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)      Page 4




         The following  LINK  error  messages  have  been  changed  to
         incorporate TOPS20 standard system error messages:


         Suffix  Lev  Sev  Standard Message Text
         ------  ---  ---  ---------------------

         CLD     31   28   Cannot load DDT
                           {JSYS error text}

         DNA     31   28   DDT not available
                           {JSYS error text}

         IAS     31   31   Error inputting area AS {Status [octal]} for file [file]
                           {JSYS error text} 

         IHC     31   31   Error inputting area HC {Status [octal] for file [file]}
                           {JSYS error text} 

         ILC     31   31   Error inputting area LC {Status [octal] for file [file]}
                           {JSYS error text} 

         ILS     31   31   Error inputting area LS {Status [octal]} for file [file]
                           {JSYS error text} 

         ITP     31   31   Error inputting area TP {Status [octal]} for file [file]
                           {JSYS error text} 

         OAS     31   31   Error outputting area AS {Status [octal]} for file [file]
                           {JSYS error text} 

         OHC     31   31   Error outputting area HC {Status [octal] for file [file]}
                           {JSYS error text} 

         OLC     31   31   Error outputting area LC {Status [octal] for file [file]}
                           {JSYS error text} 

         OLS     31   31   Error outputting area LS {Status [octal]} for file [file]
                           {JSYS error text} 

         OTP     31   31   Error outputting area TP {Status [octal]} for file [file]
                           {JSYS error text} 


     4.  Support  of  symbols  up  to  72  characters  long  and  case
         differentiation   in   symbols.   This  includes  .REL  block
         support, entry and display at command level, but no  debugger
         support.

     5.  Improvements to program data vectors including static  memory
         maps and symbol vectors.
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)      Page 5


     6.  Multi-section FORTRAN common blocks.

     7.  FORTRAN extended addressing support.

     8.  New switches:

         /NOJOBDAT
          Prevents LINK from building a JOBDAT or vestigial JOBDAT area.

         /PSCOMMON:psect:common
          Cause the FORTRAN common having the name "common"
          to be loaded into the specified psect.  If "common" is omitted
          the "blank common" is assumed.  This switch must precede any
          attempt to load the specified common and must also precede use
          of the /COMMON switch in declaring the size of the common.

         /REDIRECT:lpsect:hpsect
          Causes LINK to load low segment code into the psect "lpsect"
          and high segment code into the psect "hpsect".  Either
          "lpsect" or "hpsect" may be omitted, and the second colon is 
          optional if "highpsect" is omitted.


     9.  Paging of argument typechecking data so that  larger  FORTRAN
         77 programs may be loaded.

    10.  Long PSECT Names - LINK now supports long  psect  names  with
         the  same restrictions that apply to long symbol names.  This
         feature is supported for switches which require a PSECT  name
         as an argument and with type 1050 REL blocks.

    11.  Map File - This map file format now accommodates long symbols
         and  is therefore slightly different from the format produced
         by LINK version 5.1.




2.2  Problems For Which No Solution Is Currently Planned.


     1.  If code or  data  that  contains  fixups  (external,  Polish,
         inter-psect  references,  etc.)  is overwritten at load time,
         LINK can get an illegal memory reference or go into  a  loop.
         This  can  happen  if  psects  overlap,  or  if  LOC or RELOC
         statements are used incorrectly in a MACRO program.  This  is
         a restriction.

     2.  Generation of  a  symbol  file  via  /SYFILE:  requires  that
         symbols be loaded with the program.  This is a restriction.
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)      Page 6


3.0  INSTALLATION INSTRUCTIONS

To install LINK version 6 on your system, copy the files LINK.EXE  and
OVRLAY.REL  from the distribution tape to SYS:, and then copy the file
LINK.HLP from the distribution tape to HLP:.   This  can  be  done  by
mounting the tape labelled Distribution Tape on MTA0:, then typing the
following commands:

     R DUMPER
     TAPE MTA0:
     REWIND
     DENSITY 1600-BPI
     SKIP (to the appropriate save set)
     RESTORE DSK*:<*>LINK.EXE (TO) SYS:*.*.-1, -
     DSK*:<*>OVRLAY.REL (TO) SYS:*.*.-1, -
     DSK*:<*>LINK.HLP (TO) HLP:*.*.-1
     REWIND

To rebuild LINK from sources, mount  the  tape  labelled  Distribution
Tape on MTA0:, then type the following commands:

     R DUMPER
     TAPE MTA0:
     REWIND
     DENSITY 1600-BPI
     SKIP (to the appropriate save set)
     RESTORE DSK*:<*>*.*.* (TO) <self>*.*.*
     REWIND
     CTRL/C
     !At this point, you should TYPE LINK.CTL to see what it does.
     SUBMIT LINK.CTL/TIME/RESTART

The batch control file LINK.CTL contains the procedures  necessary  to
rebuild  LINK  and  OVRLAY  from  sources.  It may have to be modified
slightly to run at your installation, so you should  type  it  to  see
what it does before typing the SUBMIT command above.





4.0  INTERNAL CHANGES


2200 Expand the address field in the fixup blocks built by SY.CHP
     to 30 bits.  Make FXSPTR a static array, and make section zero
     low segment code use the extended addressing code.  Keep the
     LS area chain seperate from the LC area chains.  Fix type 2
     block fixups (other than right half) in non-zero sections.
     Routines: LNKPAR, LNKLOW, LNKCOR, LNKLOD, LNKNEW, LNKOLD


2201 Use the correct deferred fixup for the fullword replacement
     store operator in the type 11 polish block.
     Routine: LNKOLD
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)      Page 7




2202 Change the calling convention for the xx.IN and xx.OUT routines
     to use T1 and T2 as 30 bit addresses for the lower and upper
     bounds, instead of T1 as the lower,,upper bounds as 18 bit

     addresses.  Remove the FTFRK2 conditional, as it is always on
     for TOPS-20.  Remove the low segment global NONZER, and all
     references to it.  Use the xx.IN and xx.OUT routines instead of
     bare PMAPs when possible, since these routines know about fixups
     and about section creation.  Remove code from LH.DMP, since it
     does not need to create sections (they will be created by LC.IN).
     Use the TOPS-10 code for initialization for reading the LS area
     for the symbol table, since it is simpler and costs at most one
     extra PMAP. Add the LNKCCS cannot create section message, and
     the LNKMMF Memory Manager Failure message. Remove some error
     messages which can no longer occur.
     Routines: LNKD20, LNKT20, LNKPAR, LNKLOW, LNKCOR, LNKERR, LNKFIO,
               LNKLOD, LNKMAP, LNKOLD, LNKOV1, LNKWLD, LNKXIT


2203 Keep the section numbers of relocated halfwords in the type 11
     block.  Clean up the block and remove an offensive "HALT". Also

     turn on and fix the link (type 12) store operator.
     Routines: LNKLOD, LNKOLD


2204 Don't lose the section number when doing type 10 fixups in
     non-zero sections.
     Routine: LNKOLD


2205 Allocate FORTRAN COMMON blocks in the current psect when loading
     psects.  Load absolute addresses in a psect if they fit in one.
     Allow common blocks larger than a section, and symbolic non-zero
     section addresses. Affects the type 1, 20, 21, 1004, and the
     T.1010-T.1034 blocks.
     Routines: LNKNEW, LNKOLD, LNKWLD


2206 Set read-only attributes correctly for non-zero section psects.
     Routine: LNKXIT


2207 Make psect indices consistent between old and new style REL blocks.
     Routines: LNKINI, LNKOLD


2210 Reserve a static storage area in the low seg to hold long symbol names
     for calls to TRYSYM.
     Routines: LNKPAR, LNKLOW


2211 Add /NOJOBDAT switch to suppress all of JOBDAT (hiseg too).  Revise
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)      Page 8


     automatic JOBDAT suppressor to check FXSBIT, not EXTFLG.
     Routines: LNKPAR, LNKXIT, LNKLOW, LNKWLD


2212 Fix the type 1072 long polish block.
     Routines: LNKPAR, LNKERR, LNKLOD, LNKNEW, LNKOLD


2213 Fix off by one bug when setting the section bits in FXSBIT.
     Routine: LNKCOR


2214 Add 30 bit fixups.  Allow fullword chained fixups to
     use a 30 bit address chain.  Fix a bug involving section
     defaulting of chained fixups in relocatable overlays.
     Routines: LNKPAR, LNKCOR, LNKLOD, LNKOLD, LNKOV1


2215 Fix a wrong AC usage and an off by one caused by edit 2202.
     Also properly unmap LS area pages when printing a load map
     (affects /MAP:NOW) and don't BLT pages to zero if they have
     just been unmapped (performance improvement).
     Routines: LNKCOR, LNKLOD, LNKMAP, LNKOLD


2216 Add or fix long symbol support in TRYSYM, INSRT, LS.ADD,
     SY.QS, and SY.GS.  Make LNKMAP and LNKWLD type long symbols
     correctly.  Remove the LNKESN message.
     Routines: LNKERR, LNKHSH, LNKLOD, LNKLOG, LNKMAP, LNKOLD, LNKWLD


2217 Check character constant descriptors for word aligned byte pointers
     and make sure the section number is added to addresses before calls
     to SGCHK. in the COESPC routine.
     Routine: LNKLOD


2220 More long symbol support.  Add support for typing long symbols
     in commands.  Fix all switch processors to handle them.  Make
     Long symbols legal in all routines which can receive them from
     switch processors.  Fix the map to display these correctly.
     The long symbols supported include globals, common names, and
     psect names.
     Routines: LNKPAR, LNKLOW, LNKLOD, LNKMAP, LNKOLD, LNKSCN,
     LNKWLD, LNKXIT


2221 Remove a HLL at COESP2+4 so that the section number is not destroyed
     and the call to SGCHK. works.
     Routine: LNKLOD


2222 Implement the type 1050, 1051, and 1052 rel blocks.  Make
     LINK complain if conflicting psect attributes are seen.
     Fix a bug in edit 2220 which causes the attributes to be
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)      Page 9


     set wrong for new psects with the /SET switch.
     Routines: LNKERR, LNKNEW, LNKOLD, LNKWLD


2223 Implement /REDIRECT and rel block 1131.
     Routines: LNKPAR, LNKLOW, LNKNEW, LNKOLD, LNKWLD


2224 Change QREENT so that an extended addressing program will get
     a reentrant OTS unless the user explicitly says /OTS:NONSHARE.
     Also don't give a reentrant OTS in section zero if the user
     typed /PVBLOCK:HIGH even if there is no high segment yet.
     Routine: LNKLOD


2225 Fix /PVDATA:VERSION:SYMBOL, broken by edit 2220.
     Routine: LNKWLD


2226 Fix up support code for long /INCLUDE and /EXCLUDE so long
     blocks get returned properly.  Also, don't do a long compare
     for the title in a type 6 block, since it is always short.
     Routines: LNKLOD, LNKOLD


2227 Add /PSCOMMON:PSECT:COMMON to allow specification of which
     psect the /COMMON switch should place a common block in.
     Routines: LNKPAR, LNKLOW, LNKLOD, LNKWLD


2230 Check for a common block allocated in a psect which cannot
     be addressed by a psect which needs it, give ?LNKCMP error
     if found.
     Routines: LNKERR, LNKOLD


2231 Fix typo in edit 2223 which causes ?LNKRUM if more than one
     type 1131 block is seen.
     Routine: LNKNEW


2232 Expand edit 2211 to not touch .JBREL if user said /NOJOBDAT.
     Routine: LNKXIT


2233 Make sure that RC.CUR is non-zero if psects have been seen.
     Routine: LNKOLD


2234 Fix /PVDATA:VERSION:CONSTANT, broken by edit 2220.
     Routine: LNKWLD


2235 Give a fatal error if a user attempts overlays in non-zero
     sections.
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)     Page 10


     Routines: LNKOV1, LNKCOR, LNKERR


2236 Don't mess up the stack with long names in the type
     1131 block.
     Routine: LNKNEW


2237 Implement PDV memory maps.
     Routines: LNKXIT, LNKLOW, LNKPAR


2240 Don't attempt to merge chains if the old one starts
     at section,,0 since it can't be resolved once chained.
     Routine: LNKOLD


2241 Setup P1 and P2 even if /NOJOBDAT was specified.  Affects DEBUG.
     Routine: LNKXIT


2242 Create sections for psects, even if nothing has been
     stored in them.
     Routines: LNKCOR, LNKLOD


2243 Fix off-by-one bugs in edit 2242, add code which makes sure
     that RC.HL is always at least RC.CV.  This is because RC.HL
     may not be updated if using /REDIRECT.
     Routine: LNKLOD


2244 Handle psect breaks which for psects which are over one
     section long correctly in the type 23 block.
     Routine: LNKOLD


2245 Implement PDV symbol table vector.
     Routines: LNKXIT, LNKLOW, LNKPAR, LNKWLD


2246 Patch 1070 code so the additive and chained fixups work in all cases.
     Routine: LNKNEW


2247 Add code to use SPLFK% JSYS.  Build the program in an inferior
     fork.  Always use SSAVE% on TOPS-20, put the .EXE file writer
     under a TOPS-10 conditional.  Don't use .LOW. unless code or
     a JOBDAT is actually loaded into it.  Implement the rules for
     deciding whether a JOBDAT should exist.
     Routines: LNKLOW, LNKCOR, LNKFIO, LNKINI, LNKLOD, LNKOLD,
        LNKOV1, LNKOV2, LNKWLD, LNKXIT


2250 Be smarter about PDV space allocation.  Fix bug in memory map which
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)     Page 11


     didn't set attributes correctly in a certain case.  Don't say there's
     a PDV when creating an EXE file after the PDV wouldn't fit.  Fix bug
     with /NOJOBDAT that deleted execution if user program set .JBERR.
     Don't diddle .JBCOR if /NOJOBDAT.
     Routines: LNKXIT, LNKPAR, LNKLOW


2251 Map out all low segment pages after building an overlay.
     Routine: LNKOV1


2252 Don't overwrite the symbol bits in the switch blocks
     when storing a local switch.
     Routine: LNKWLD


2253 Clear the relocatable bit for .LOW. when doing a /SEG:LOW
     high segment with a FORTRAN style type 3 block.
     Routine: LNKOLD


2254 Change the 18 bit fields for the next title block,
     segment origins and breaks, and psect pointers to
     30 bit fields in the LS area.  Change the pointers
     to these fields to also be 30 bits wide.  Remove
     the FAIL block header chain, as it is not used.
     Routines: LNKPAR, LNKLOW, LNKCOR, LNKINI, LNKMAP,
        LNKNEW, LNKOLD


2255 Change all pointers to the LS area to be 30 bit.
     Replace LSTSYM with two words, LSTGBL and LSTLCL,
     and change all references to it.  Don't pass the
     pointers around in W3, instead get them from the
     globals.  Make the fixup block have the global
     pointer in the second word and the local pointer
     in the third word.  Redo the polish block code
     to store the section number of the LS area in the
     op code, similar to what edit 2203 did for memory
     fixups.
     Routines: LNKLOW, LNKCOR, LNKLOD, LNKNEW, LNKOLD, 
        LNKOV1


2256 Make the runtime symbol table module headers code
     use the new style segment breaks.
     Routine: LNKXIT


2257 Add generic JSYS error handling mechanism (subroutine and macro).
     Routines: LNKPAR, LNKLOW, LNKLOG, LNKERR


2260 Change various aspects of previous edits per inspection: don't
     execute non-zero (/NOJOBDAT) program if there are errors, always
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)     Page 12


     make undefined symbol table vector entry if there's a defined table.
     Routine: LNKXIT


2261 Fix off-by-one in non-zero page attribute setting code.
     Routine: LNKXIT


2262 Implement the type 1160 sparse data block.  Don't create a
     section just because a zero length psect is in it.
     Routines: LNKPAR, LNKLOD, LNKNEW, LNKOLD, LNKOV1


2263 Fix deferred thirty bit additive fixups, which are
     incorrectly treated as chained fixups instead.
     Routine: LNKLOD


2264 Type the module name in the LNKCCS message.  Fix up the
     LNKOxx and LNKIxx errors, add JSYS error typeout.  Don't
     throw away the section number of the symbol in the type
     one block.  Fix up some short error texts in LNKERR.
     Fix a typo in the LNKPMA error which caused it to type
     out as LNKPMC.
     Routines: LNKCOR, LNKERR, LNKLOD, LNKOLD


2265 Don't set attributes of null read-only psects.
     Routine: LNKXIT


2266 Allow long symbols for argument typechecking.
     Routines: LNKLOD, LNKNEW


2267 Fix bug in LNKHSH when short symbol is passed as long.
     Don't try to compensate for bug in LNKLOD.
     Routines: LNKHSH, LNKLOD


2270 Put argument typechecking blocks in a pagable area.
     Fix a bug in edit 2262 which causes bad character
     fixups in large programs.
     Routines: LNKPAR, LNKLOW, LNKCOR, LNKLOD, LNKNEW,
               LNKOV2


2271 Fix default for /ERRORLEVEL with no arguments. Fix
     the maximum values for /ERRORLEVEL, /LOGLEVEL, and
     /SEVERITY.
     Routine: LNKPAR


2272 Set up defaults for /REDIRECT, in case psect is not
     specified in the switch or type 1131 block.
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)     Page 13


     Routines: LNKNEW, LNKOLD, LNKWLD


2273 Fix type 12 blocks, make them work in non-zero sections.
     Routines: LNKLOD, LNKOLD



2274 Fix some error messages in LNKXIT.  Also don't
     try to SSAVE% sections above the highest which
     exists.
     Routine: LNKXIT


2275 Don't let long symbol hash come up with a value of zero.
     Routine: LNKHSH


2276 Improve typeout for /COUNTERS so that it tabs correctly
     in the presence of long symbols or big addresses.
     Routine: LNKWLD


2277 Implement new /DEBUG code for extended programs.  Load XDDT or UDDT
     according to what the user program looks like.
     Routines: LNKPAR, LNKLOW, LNKWLD, LNKERR, LNKXIT


2300 Remove F40 code and long error messages.  Conditional
     or remove long errors which are not needed.  Fix a
     problem with the definition of ERSTR, which is a forward
     referenced local and also a JSYS name.  Remove FTFRK code.
     Routines: LNKPAR, LNKLOW, LNKCOR, LNKINI, LNKLOD, LNKLOG,
        LNKSUB, LNKWLD


2301 Fix up error messages involved in TOPS-20 native files.
     Routines: LNKPAR, LNKLOW, LNKCOR, LNKERR, LNKFIO, LNKLOD,
     LNKLOG, LNKNEW, LNKOLD, LNKXIT


2302 Fix off-by-one bugs in LC.IN and LC.OUT.  Was allocating n-1 pages
     in all but boundry cases.
     Routine: LNKCOR


2303 Fix problem with non-symbolic type 1004 blocks in wake
     of edit 2262.
     Routine: LNKNEW


2304 Make various changes per inspection: add long error messages for new
     DDT errors, change some labels, move a macro, use local instead of
     global temporary storage.
     Routines: LNKLOG, LNKPAR, LNKERR, LNKXIT, LNKLOW
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)     Page 14




2305 Make 1070 blocks and 1002 blocks handle long symbol names.  Allocate
     storage for a long symbol used as a value.
     Routines: LNKNEW, LNKLOD, LNKOLD, LNKLOW


2306 Implement long PDV names.  Make /PVDATA:VERSION take a
     version number word.  Implement the EXPORT keyword as a
     synonym for START.  Make /PVDATA:MEMORY work.  Put the
     PDV symbol vector in the same psect as the symbol table
     so it's attributes won't conflict.  Put the PDV before
     the symbol table if they are in the same psect.  Use a
     fullword for the symbol table length.  Create a PDV by
     default for TOPS-20 style programs.
     Routines: LNKPAR, LNKLOW, LNKINI, LNKSCN, LNKWLD, LNKXIT


2307 Remove some incorrect tests which generate LNKPEL errors.
     Fix argument typechecking code which could create a bad
     SIXBIT symbol for six character names.
     Routines: LNKNEW, LNKOLD


2310 Implement the type 1074 long common name rel block.
     Routines: LNKLOD, LNKNEW


2311 Fix PDVs in high segment, or with symbol vector in high
     segment.  Set bit zero when appropriate for symbol vector
     pointer.
     Routine: LNKXIT


2312 Allow PDV names with $, ., % not in quotes.  Make sure
     the name is ASCIZ.  Make sure the PDV map address is
     always stored in the PDV.
     Routines: LNKSCN, LNKXIT


2313 Make character data (types 1004 and 1160) work
     in overlays.
     Routine: LNKNEW


2314 Handle /DEBUG when SPLFK% fails at LNKXIT time.  Allow special case
     of DDTing LINK when user program also wants UDDT in section 0.
     Remove LINK's PDV before GET%ing user program.  Clear PSI table
     addresses left over from PA1050 when exiting to user program.
     Routines: LNKPAR, LNKXIT


2315 Add {JSYS error text} for CLD, CSP, and DNA error documentation.
     Routine: LNKERR
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)     Page 15



2316 Fix incorrect test which causes spurious LNKMEF errors.
     Routine: LNKOV1


2317 Fix edit 2247 to save copy-on-write page attributes correctly.
     Routine: LNKXIT


2320 Create empty read-only pages when necessary.
     Routine: LNKXIT


2321 Fix a problem with moving the HC area when /SEG:LOW
     or /REDIRECT.
     Routine: LNKCOR


2322 Make LNKCCE a fatal error and add long error text.
     Routines: LNKLOD,LNKERR


2323 Add case sensitive symbol typein and typeout, using
     "/" and "\" as case shifters.
     Routines: LNKLOG, LNKSCN


2324 Expand edit 2064 to cover thirty-bit chained fixups.
     Supercedes edit 2064.
     Routine: LNKOLD,LNKNEW


2325 Add another case to the TOPS-20 editable messages,
     and fix one which is incorrect.
     Routine: LNKLOG


2326 Make 1003 (long title) blocks work.
     Routines: LNKNEW,LNKLOW,LNKPAR,LNKOLD


2327 Don't convert external psect index to internal twice.
     Routine: LNKNEW


2330 Add TOPS-20 conditionals where needed.  Replace a
     label which was accidentally removed.  Add xx.IN
     and xx.OUT routines for TOPS-10.  Add missing
     angle brackets in LNKERR.
     Routines: LNKLOW, LNKCOR, LNKERR, LNKLOG, LNKXIT


2331 When returning the secondary triplet after fixups,
     if the secondary is not the last one move the other
     secondaries up, and return the last one.  This will
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)     Page 16


     keep the remaining triplets contiguous.
     Routine: LNKLOD


2332 Get fullword value for symbol fixups.
     Routine: LNKOLD


2333 Make the 1070 code set the fixup block flags in all cases when 
     processing a fixup request.
     Routine: LNKNEW


2334 Fix symbol typein when there is a non-symbolic default.
     Use the symbol typeout routine for errors.  Fix
     /PVDATA:VERSION with an octal numeric argument.
     Routine: LNKSCN


2335 Don't allocate space for the PDV memory map or
     symbol vector if not actually building them.
     Re-install some code which is needed on TOPS-10.
     Use nnnLNK if no better PDV name is available.
     Routine: LNKXIT


2336 Produce correct symbol vector when explicit
     /pvdata:memory is seen.
     Routine: LNKXIT


2336 Catch CFORK% JSYS errors.
     Routine: LNKINI


2340 Check for bad psect index in type 1074 block.
     Routine: LNKNEW


2341 Handle strange octal psect origins correctly.
     Routine: LNKWLD


2342 Add LNKPTP long error, fix cases where TP overflow
     happens or the GS area moves while doing argument
     typechecking.
     Routines: LNKERR, LNKLOD


2343 Fix some problems with the type 1160 block, add
     LNKUSD long error message.
     Routines: LNKERR, LNKLOD, LNKNEW


2344 Add compiler type for C.
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)     Page 17


     Routine: LNKPAR


2345 Clean up and fix 1003 block code.
     Routine: LNKNEW


2346 Don't try to GET% the EXE file if it was not
     written to disk.
     Routine: LNKXIT


2347 Use argument block for COMPT. which removes
     PA1050.
     Routine: LNKXIT


2350 Use LC/HC.IN and .OUT properly to map non-existant
     read only pages.
     Routine: LNKXIT


2351 Fix E$$UMF routine to print JSYS names.
     Routine: LNKLOG


2352 Don't allocate more pages than will fit in LC area in
     STUFDD.
     Routine: LNKXIT


2353 Remove improper symbols from LNKXIT, move SPLFK%
     argument block definitions into LNKPAR.
     Routines: LNKPAR, LNKXIT


2354 Make map file display long symbols - case senstivity - and 1003
     title block information
     Routine:LNKMAP


2355 Handle debuggers which don't start at the normal start
     address (such as ALGDDT) properly.
     Routine: LNKXIT


2356 Remove unnecessary TOPS20 conditionals.  Move NAMCMP
     to LNKSUB.  Fix overflow problem in exe file writer
     when more than one section of pages has the same attributes.
     Routines: LNKLOW, LNKLOD, LNKNEW, LNKOLD, LNKSUB, LNKWLD,
        LNKXIT


2357 Set up correct channel for save/get when splice fork
     fails.
LINK.DOC -- Changes from LINK 5.1(2030) to LINK 6.0 (2364)     Page 18


     Routine: LNKXIT


2360 Fix problem with edit 2355.
     Routine: LNKXIT


2361 Fix fencepost error in calculation of PDV size.
     Routine: LNKXIT


2362 Fix the /DEBUG:DDT code; store the DDT start
     address in EXECSW when it is stored in STADDR, since
     it is calculated after the debugger address table
     lookup.
     Routine: LNKXIT


2363 Don't use DDT's start address if the user requested
     some other debugger and /TEST:DDT.
     Routine: LNKXIT


2364 Use the correct value (HL.S1) for highest location loaded when
     calculating the number of pages for SSAVE JSYS.
     Routine: LNKXIT