TITLE LNKHST - REVISION HISTORY OF LINK SUBTTL D.M.NIXON/DMN/JLd/RKH/JBC/JNG/DCE/MCHC/PAH/DZN/PY/MFB/JBS/HD 24-Dec-85 SEARCH LNKPAR ;[2030] TWOSEG %HISEG ;[2030] ;[2030] One-line copyright for executable files ASCIZ / COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1973,1986. ALL RIGHTS RESERVED. / ;[2030] ;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1973,1985,1986. ALL RIGHTS RESERVED. ; ;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. ; CUSTVR==0 ;CUSTOMER VERSION DECVER==6 ;DEC VERSION DECMVR==0 ;DEC MINOR VERSION DECEVR==2376 ;DEC EDIT VERSION LNKVER==: LOC 137 .JBVER: EXP LNKVER RELOC SUBTTL REVISION HISTORY ;START OF VERSION 1A ;37 ADD GARBAGE COLLECTOR AT CLANS ;40 ADD GENERAL GARBAGE COLLECTOR ;41 ADD LNKFSI MESSAGE ;42 TAB.PT NOT REDUCED WHEN CORE GIVEN BACK ;43 FORTRAN-10 LOCAL SYMBOLS IN COMMON NOT FIXED UP CORRECTLY ;44 REMOVE ALL REFERENCES TO XF (INDEX CONTAINING DY.LB) ;45 HASH INITIAL SYMBOLS AT ASSEMBLY TIME ;46 ADD KLUDGE FEATURE ;47 INTEGRATE WITH SCAN %4, ADD DATE75 HACK ;50 HANDLE PAGING DURING LOCAL SYMBOL OUTPUT CORRECTLY ;51 FIX BUG IF UNDEF SYMBOLS BUT DON'T WANT TO KEEP LOCAL SYMS ;52 ADD ASCII TEXT BLOCK ;53 FIX RETURNS FROM DVMOV. ROUTINE ;54 ADD KIONLY D.P. INST. ;55 STORE VERSION NUMBER (.JBVER) IN .RBVER OF SAVE FILE ;56 FIX LOOP AT JBEX2A IF CORE IMAGE IS MULTIPLE OF 2000 ;57 SETUP VESTIGIAL JOB DATA AREA EVEN IF NOT A SAVE FILE ;60 ADD /VERSION SWITCH ;61 ADD STORE CODE IN CORE FOR T.3 TWOSEG FIXUPS ;62 FIX BUG IN BLOCK TYPE 11 (POLISH FOR FORTRAN-10) ;63 REMOVE MULTIPLY-DEFINED SYMBOLS FROM SYMBOL TABLE (IN CORE) ;64 REDUCE CORE SIZE IF ALL OF CORE IS TAKEN ;65 TENEX SPEEDUPS ;66 SAVE JOB DATA AREA ON /SAVE IF DDT, SYMBOLS AND ALL CODE IN HIGH SEG ;67 PUT ADDITIVE GLOBAL REQUESTS IN UNDEF TABLE ;70 FIX ADDRESS CHECK PROBLEM ;71 MAKE ALL INFO MESSAGES STANDARD FORM ;72 (11315) CTYPE NOT CLEARED ON UNKNOWN COMPILER TYPE ;73 (11314) PREVENT EXECUTION IF UNDEF SYMBOLS ;74 (11389) FIX ILL MEM REF ON FILE/SYSLIB ;75 FIX ALGOL OWN BLOCK, CALL ADCHK. ROUTINE ;76 FIX BUG IF DWFS. PAGES FOR FIRST TIME ;77 RESET VERBOSITY IF LNKERR GETSEG FAILS ;100 FIX ILL MEM REL ON /SAVE IF LAST BLOCK FILLS ALL OF CORE ;101 FIXES FOR FAIL CODE WITH UNDEF GLOBALS IN BLOCK 11 ;102 TEST FOR MISSING END BLOCK (TYPE 5) ;103 SAVE AND RESTORE BOTH HALVES OF FL ON EDITED LOOKUP ERROR ;104 PUT FAIL BLOCKS IN MAP OUTPUT AND SYMBOL TABLE ;105 MAKE BLOCK TYPE 12 WORK ;106 ALLOW HIGH SEG CODE TO BE LOADED AT ADDRESS OTHER THAT 400000 ;107 CHANGE KLUDGE TO MIXFOR (SEE EDIT #46) ;110 (11889) /BACK:1 GOT ILL MEM REF (SOSJ _ SOJG) ;111 MAKE MIXFOR WORK EVEN IF NOT IN /SEARCH MODE ;112 CHECK FOR PER FILE /SEARCH AT LODTST ;113 MAKE MIXFOR KNOW ABOUT F40 ARRAY REFERENCES IN ARGS ;114 FIX LOG FILE TO DSK (NOT ASSIGNED AS LOG) ;115 MAKE /NOSYMS WORK CORRECTLY ;116 FIX UNDEFINED SYMBOL COUNT IN FAIL BLOCKS ;START OF VERSION 1B ;117 (12058) ADD MISSING POPJ P, AT FORKI+2 ;120 /SYMSEG:HIGH WITH NO HIGH CODE GIVES ILL MEM REF ;121 (12145) .VERSW DOESN'T PRESERVE P4, /VER:1(20) FAILS ;122 (11940) MAKE /MAP/SAVE PRODUCE BOTH FILES NOT JUST THE LAST ONE ;123 MAKE LOADING OF VERY LARGE (GT. 128K) MUCH EASIER ;124 ADD /ONLY SWITCH (ARGS ARE BOTH, LOW, HIGH) ;125 WRITE MAPS WITH 2 SYMBOLS PER LINE ;126 CHANGE CALLING SEQUENCE FOR T.1STR AND PG.LSG, PG.HSG TO BE P2 & P3 ;127 (12311) BUGS IN FORCED LOAD OF F40 CODE TO HIGH SEGMENT ;130 (12315) NOT ALL SYMBOL COPIED WHEN PREVIOUSLY REQUESTED COMMON IS DEFINED ;131 CHANGE JOBDAT SYMBOLS FOR V/M, ADD V/M FEATURES ;132 FIX BUG IN EDIT #122 ;133 BUG IN LOADING LIBSAI IN T.11EV RETURN ;134 (12431) ABS SYMBOLS OCCASIONALLY SHOW AS REL IN MAP ;START OF VERSION 2 ;135 ADD OVERLAY CAPABILITY (LNKOV1,LNKOV2,LNKOVS) ;136 FIX VARIOUS BUGS ;137 ADD SUPPORT FOR PLOTTER PACKAGE ;140 (12617) FIX ?IO TO UNASSIGNED CHANNEL WITH /SYMBOL:TRIPLET ;141 TURN ON ASCII TEXT BLOCK AND FIX BUGS IN IT ;142 (12520) FIX BUG IF PROGRAM LARGER THAN 36*128 WORDS ;143 MAKE /INCLUDE WORK BETTER (DOCUMENTATION CHANGE ALSO) ;144 (12772) FIX LOOP IN LNKMAP IF EVEN NO. OF SFDS ;145 IMPLEMENT USER LIBRARIES & /USELIB SWITCH ;146 (12860) MAKE S%E ENTER ERRORS FATAL (S%F) ;147 TURN ON MIXFOR FEATURE ;150 REMOVE EDIT #71 (PEF MESSAGE) ;151 (12491) CALL OSCAN CORRECTLY ;152 FIX LOOP IF /NOINIT AND UNDEFINED SYMBOLS ;153 FIX BUG IN EDITS 122 AND 132 ;154 (12991) ONLY LOOK AT RIGHT HALF OF .JBERR TO DELETE EXECUTION ;155 (12988) FIX TEST FOR COBDDT AT RUN UUO TIME ;156 MAKE FOO/DEBUG WORK CORRECTLY ;157 (12640) IF .FORLB=-1 DO NOT WARN USER IF F10 CODE LOADED ;160 (12736) ADD WORDS FREE IN EACH SEGMENT TO MAP OUTPUT ;161 ADD LANGUAGE TYPE TO /USERLIB SWITCH ;162 USE W3 RATHER THAN W1 IN INDEXED LIBRARIES ;163 MAKE /ONLY WITH F-10 CODE NOT DEFAULT TO BOTH SEGS IN LOW ;164 MAKE CPU TEST OF REL FILES MORE GENERAL ;165 INTEGRATE WITH SCAN %5(356) ;166 READ BACK THE RADIX50 SYMBOLS OUTPUT BY /SYMBOL ;167 CHANGE ARGUMENTS TO /OTS SWITCH ;170 INTEGRATE WITH BLISS PLOTTER SUBROUTINES ;171 (13234) FIX BUG IF FORTRAN-10 PROG TOO BIG ;172 (13243) BUG IF MORE THAN 1 BLOCK TYPE 16 (OR 17) SEEN ;173 TEST ASCIZ BLOCK TYPE FOR VALID FIRST CHAR ;174 FIX RELOCATABLE OVERLAY BUGS ;175 CHANGE /RESET TO /NODE ;176 MAKE START BLOCK (7) BE TWO WORDS LONG ;177 FIX ADDRESS CHECK BUG IN LNKXIT IF PAGING SYMBOLS ;200 LOAD REENTRANT OVERLAY HANDLER ;201 MAKE FORDDT LOAD CORRECTLY ;202 REMOVE CORE UUO BEFORE GETSEG ;203 LINK ALL DDT SYMBOL TABLES IN OVERLAYS CORRECTLY ;204 FIX VARIOUS SFU AND EXPANSION BUGS ;205 LIST NO. OF GLOBALS AND MIN. HASH SIZE IN MAP ;206 FIX GLOBAL CHAINS IN UNDEF AND NOT ALL IN CORE ;207 MAKE OVERLAY OVERHEAD TABLES SMALLER ;210 (13461) MORE OF #172, HANDLE TYPE 16 CORRECTLY ;211 FIX ZEROS IN MONITOR SYMBOL TABLE ;212 YET ANOTHER ZEROS IN SYMBOL TABLE BUG ;213 (12531) LOW SEG OF TWOSEG CORE IMAGE BAD ;214 (12939) CORE EXP BUG IN F40 CODE IF EXPANDS IN MIDDLE OF DATAS ;215 ADD TEXT FOR OVRLAY MESSAGES TO LNKERR ;216 (13559) ADD ZSV ERROR MESSAGE ;217 FIX PDLOV IN BLOCK TYPE 11 CODE IF CORE MOVES ;220 HANDLE COMMON REFERENCED BEFORE BEING DEFINED CORRECTLY ;221 GET THE PROTECTION CODE OF XPN FILES CORRECT ;222 (12773) DO UPDATE MODE RIGHT FOR SFD DEFAULT PATHS ;START OF VERSION 2A ;244 DATE75 FIX TO MAKE LOW SEG FILE HAVE CORRECT DATE (ALSO LISTED BELOW) ;START OF VERSION 2B ;223 FIXUP PRIMARY TRIPLET AFTER ADDITIVE FIXUPS HAVE BEEN DONE ;224 PUT SECOND SYMBOL FOR COMMON BLOCK IN RADIX50 SYMBOL TABLE ;225 ADD SUPPORT FOR PSECT (MACRO VERSION 51) ;226 FIX UNDEFINED SYMBOL PROBLEM (117 NOT SET UP) ;227 (13779) TEST TEMP LOCAL SWITCH AT T.37 (COBOL CODE) ;230 ADD CHECK THAT LOW SEG DATA BASE IS SAME SIZE IN EACH SEGMENT ;231 (13869) P1 NOT RESTORED IN TIME IN XX.INI ;232 (13920) UNRELOCATE POLISH POINTER TO FIXUP AREA ;233 (13932) INFINITE LOOP IF UNDEF SYMBOLS AND TYPE 16 BLOCKS ;234 NUL:/SAVE CAUSES PAGING ON NUL: DEVICE, USE DSK INSTEAD ;235 (13845) ERRONEOUS SAVE FILE IF PAGED AND READING ZEROS ;236 CORE EXP BUG AT SY.RUA, P1 IS DESTROYED BEFORE STORE ;237 (13931) CHANGE RPR ERROR TO NBR ;240 FIX I/O TO UNASSIGNED CHAN IF /SAVE AND HIGH FILE ALREADY EXISTS ;241 SEPARATE LOW SEG REL CODE FROM ABS CODE FOR HIGHEST LOC CALCULATIONS ;242 HANDLE USER PAGE FAULT HANDLER CORRECTLY ;243 ADD SIMULA TO KNOWN PROCESSORS ;244 DATE75 FIX TO MAKE LOW SEG FILE HAVE CORRECT DATE ;245 JLd 31-Oct-74 SPR 10-14009 ; Make the overlay file stay on same structure on supersede ; Routines: LNKOV1, LNKFIO, LNKWLD, LNKERR ;246 JLd 18-Nov-74 SPR 10-14212 ; Fix problems with the core overflow expansion calc. ; which cause inefficient use of core. ; Routines: LNKCOR ;247 JLd 11-Dec-74 SPR 10-14344 ; Fix the debug switch to load the debugger specified, and ; symbols for the main program when switch follows main. ; Routines: LNKWLD, LNKXIT. ;250 JLd 13-Dec-74 SPR 10-14363 ; Change generation of fixups for map routine so will store ; the address limits. ; Routine: LNKOLD ;251 JLd 19-Dec-74 SPR 10-14366 ; Fix /SEG:LOW to create the FX area if necessary ; when saving high segment code. ; Routine: LNKLOD ;252 JLd 24-Dec-74 SPR 10-14538 ; Fix problem with /INCLUDE with /SEARCH when loading an ; indexed library. ; Routine: LNKOLD ;253 JLd 28-Dec-74 SPR 10-14535 ; Correct several problems with ASCII test blocks: ; . make ASCII blocks work with CCL entry ; . make multi-line blocks work ; . give error message if SCAN can't finsih block ; Routines: LNKNEW, LNKSCN, LNKWLD, LNKERR ;254 JLd 28-Dec-74 SPR 10-14674 ; Switches which are deferred until after the file is ; opened must be disconnected from the file spec block to ; prevent double dispatching (2nd time with invalid code) ; whenever the file spec. is edited. ; Routine: LNKWLD ;255 JLd 2-Jan-75 SPR 10-14669 ; Prevent type ahead from causing a halt in SCAN. ; Stop clearing to end of line when end-of-line found. ; Routine: SCAN (SCAN Edit 524) ;256 JLd 2-Jan-75 SPR 10-14669 ; Make "/:" without a key word legal ; Routine: LNKWLD ;257 JLd 9-Jan-75 ; Restore the proper P1 when creating FX -- cancel edit 231 ; Routine: LNKCOR ;260 JLd 9-Jan-75 SPR 10-14872 ; Fix to load large F40 programs in small core ; Routine: LNKF40 ;261 JLd 24-Jan-75 SPR 10-15063 ; Correct problems with loading a null overlay structure ; (root only), and /PLOTing it. ; Routines: LNKOV2, LNKPLT ;262 JLd 6-Feb-75 SPR 10-15063 ; React gracefully when /LINK switch is omitted ; Routnies: LNKOV1, LNKLOW, LNKWLD, LNKERR ;263 JLd 6-Feb-75 SPR 10-15063 ; Increase the /PLOT stack size for large overlay structures ; Routine: LNKPLT ;264 JLd 13-Feb-75 SPR 10-15135 ; Deal with file specification errors correctly when ; processing commands from an indirect file. ; Routines: LNKSCN, SCAN (v. 6) ;265 DMN 17-Feb-75 ; Implement EXE files (new SAVE format) ; Routines: LNKPAR, LNKXIT, LNKSCN, LNKWLD ;266 JLd 22-Feb-75 SPR 10-15226 ; Load symbols correctly when overflow to DSK. ; Routine: LNKXIT ;267 JLd 23-Feb-75 SPR 10-15226 ; Take window into account when calc. offset for ; module header (type 0) symbol in DDT symbol table ; Routine: LNKXIT ;270 JLd 24-Feb-75 SPR 10-15248 ; Fix initialization of high segment Job Data Area ; when done after disk overflow ; Routine: LNKXIT ;271 JLd 27-Feb-75 SPR 10-15255 ; Suppress searching Bound Globals during symbol table ; rehash.; keep the PDL in bounds. ; Routine: LNKHSH ;272 JLd 27-Feb-75 SPR 10-15255 ; Make the force rehashing for /HASHSIZE work. ; Routines: LNKWLD, LNKHSH ;273 DMN/JLd 27-Feb-75 SPR 10-15273 ; Fix up disk overflow decision making ; Routine: LNKCOR ;274 JLd/DMN 3-Mar-75 SPR 10-15263 ; Allow COMMON in the HIGH segment to be loaded with DATA ; defined in a module loaded in the LOW segment ; Routines: LNKF40, LNKOLD, LNKPAR ;275 DMN 6-Mar-75 NONE ; Add the rest of the code necessary to support SIMULA ; finish edit 243. ; Routines: LNKLOD, LNKERR ;276 DMN/ILG 7-Mar-75 SPR 10-15507 ; Fix MULTIPLY-DEFINED GLOBALS when a .REQUIRES ; in one .REQUIRED file .REQUIRES another. ; Routines: LNKOLD ;277 JLd 13-Mar-75 SPR 10-15405 ; Allow editing of file spec. when LOOKUP error while ; loading from default libraries. ; Routines: LNKLOW, LNKWLD ;300 JLd 30-Mar-75 SPR 10-15706 ; Correct problem with /OVERLAY not working unless first ; switch, and make permanent excludes work. ; Routine: LNKOV1 ;301 JLd 30-Mar-75 SPR 10-15706 ; Issue proper error message when no more room ; during DSK overflow. ; Routine: LNKCOR ;305 JLd 21-Apr-75 SPR 10-15843 ; Correct the mixed CPU test to give the message ; at the right time. ; Routine: LNKLOD ;317 RKH 25-Apr-75 SPR 10-15716 ; Correct initialization before call to TRYSYM to ; search symbol table ; Routine: LNKOLD ;320 RKH 25-Apr-75 SPR 10-15858 ; Reinitialize user virtual address before call to ; page in segment ; Routine: LNKOLD ;322 JLd 1-May-75 ; Set up LSYM and other control variables so LNKCOR will ; handle symbols properly. ; Routines: LNKOV2, LNKXIT ;324 JLd 8-May-75 ; Don't deallocate the channel and area for LS until ; no longer needed. ; Routine: LNKXIT ;325 JLd 13-May-75 ; Fix special case of TWOSEG code forced into one ; segment when high segment break is same as start ; (length of zero). ; Routines: LNKLOD, LNKOLD ;326 JLd 19-May-75 ; Fix more normal case broken by edit 252 of loading ; indexed library with /INCLUDE specified, and more than ; one file being loaded. ; Routine: LNKOLD ;330 JLd 19-May-75 ; Make symbol channel go away after loading symbols into ; the root of an overlay program. ; Routine: LNKXIT ;331 JLd 19-May-75 ; Don't loose the Control Section, EXTTAB's and ENTTAB's; ; count them in occupied core. ; Routine: LNKOV1 ; ;332 RKH 20-May-75 ; Restore base of GS area before processing ; Routine: LNKOV2 ; ;333 RKH 21-May-75 ; Isert code to handle successful zero return of GETTAB ; Routine: LNKINI ; ;334 RKH 28-May-75 ; Change dispatch AC so that LINK item type is saved ; Routine: LNKOLD ;335 JLd 30-May-75 ; Fix problems with size of symbols in root of ; program with overlays. prevent confusing LNKCOR ; Routine: LNKXIT ; ;336 RKH 31-MAY-75 ; Fix /RUN switch to work properly ; Routine: LNKXIT ; ;337 RKH 31-May-75 ; Isert check for no core to zero before BLT ; and prevent possible ILL MEM REF ; Routine: LNKXIT ;340 DMN 6-Jun-75 ; Change name of duplicate flag from S.NAM to S.LNM ; Routines: LNKPAR,LNKHST,LNKNGW,LNKHSH,LNKOLD ;341 JBC 26-Jun-75 ; Include edit 327 in maintenance sources. Label edits 223,232,233 ; Routine: LNKLOD ;342 SRM 26-Jun-75 ; Include edit 315 in maintenance sources ; Routine: LNKPLT ;343 SRM 26-Jun-75 ; Include edits 302,307 in maintenance sources ; Routine: LNKWLD ;344 SRM 26-Jun-75 ; Include edit 304 in maintenance sources ; Routine: LNKMAP ;345 SRM 26-Jun-75 ; Include edit 303 in maintenance sources. Label edit 230 ; Routine: LNKPAR ;346 SRM 26-Jun-75 ; Include edit 302 in maintenance sources. Label edit 230 ; Routine: LNKINI ;347 JBC 26-Jun-75 ; Include edits 303,310,311 in maintenance sources. Label edits 227,236,241 ; Routine: LNKOLD ;350 JBC 26-Jun-75 ; Remove references to RSYM ; Routines: LNKLOW,LNKOLD ;351 SRM 26-Jun-75 ; Label edit 237 ; Routine: LNKERR ;352 SRM 26-Jun-75 ; Label edit 237 ; Routine: LNKOV1 ;353 JBC 26-Jun-75 ; Remove edit 225 ; Routines: LNKINI,LNKLOW,LNKMAP,LNKOLD,LNKPAR,LNKWLD,LNKXIT ;354 JBC 26-Jun-75 ; Label edit 234 ; Routine: LNKCOR ;355 JBC 26-Jun-75 ; Label edit 230 ; Routine: LNKEXO ;356 JBC 26-Jun-75 ; Label edit 240 ; Routine: LNKFIO ;357 JBC 26-Jun-75 ; Label edits 224,226,234,235,241,242 ; Routine: LNKXIT ;360 JBC 27-Jun-75 ; Remove edit 336 ; Routine: LNKXIT ;361 JNG 2-Jul-75 ; Fix ill mem ref caused by edit 274 ; Routine: LNKF40 ;362 JNG 2-Jul-75 ; Always set up the preamble area at OVR8, since edit ; 322 made LNKXIT not set it up. ; Routine: LNKOV2 ;363 JBC 2-Jul-75 ; Update minor version # ; Routines: LNK999,LNKCST,LNKEXO,LNKMAP,LNKOVS,LNKPAR,LNKSUB ;364 JNG 9-Jul-75 SPR 10-16732 ; Generate a fixup instead of giving up if the TITLE ; block has been paged out when a HISEG block is encountered. ; Routines: LNKPAR,LNKCOR,LNKOLD ;365 JNG 10-Jul-75 ; Give an error message if an invalid fixup is encountered. ; Routines: LNKCOR ;366 DMN 10-Jul-75 ; Only use 18 bit addresses to call CHKSEG from T.2CHK ; Routine: LNKOLD ;367 DMN 10-Jul-75 ; Keep correct W3 on Polish fixups when symbol just defined ; Routine: LNKLOD ;370 DMN 10-Jul-75 ; Fix LNKINS error detect ; Routine: LNKFIO ;371 JNG 10-Jul-75 ; Move definition of .ERSFU to avoid undefined global. ; Routines: LNKCOR,LNKOLD ;372 JNG 11-Jul-75 ; Don't print the path of an overlay on /MAP:NOW, since ; the information is not yet set up and would be hard to find. ; Routines: LNKMAP ;373 JNG 16-Jul-75 ; Load COMMON correctly on a /SEGMENT:HIGH. ; Routines: LNKOLD ;374 JNG 17-Jul-75 SPR 10-16727 ; Avoid ILL MEM REF in LNKLOD because of edit 273. ; Routines: LNKCOR ;375 JNG 17-Jul-75 SPR 10-16557 ; T.COMM sometimes inserts COMMON into the local symbol ; table. Since everybody that calls T.COMM also inserts COMMON ; into the local symbol upon return, it sometimes gets in twice. ; Solution: Make T.COMM always insert COMMON into the local ; symbol table, and don't insert it when T.COMM returns. ; Routines: LNKOLD,LNKLOD,LNKF40 ;376 JNG 18-Jul-75 SPR 10-16500 ; Do not try to overlay F40 code, since this is not ; supported and doesn't work anyway. ; Routines: LNKLOD,LNKSUB ;377 JNG 18-Jul-75 SPR 10-16728 ; Fix several bugs involving the /SET switch. ; Add new error message if trying to /SET below a segment origin. ; Routines: LNKWLD,LNKERR ;400 JNG 20-Jul-75 SPR 10-16638 ; Do defaulting of output paths right and support SFD's. ; Routines: LNKPAR,LNKLOW,LNKWLD,LNKFIO ;401 JNG 22-Jul-75 ; Remove hack to give same checksums on save files as 5.06. ; Routines: LNKXIT ;402 JNG 22-Jul-75 ; Make /TEST again unique to one character. ; (It conflicts with /TMPCOR in SCAN 7). ; Routines: LNKPAR ;403 JNG 24-Jul-75 ; Fix HALT in LNKXIT if generating new style symbol file. ; Routines: LNKXIT ;404 JNG 31-Jul-75 ; Replace edits 316,323,334, and 340, which got lost. ; Routines: LNKOLD,LNKOV1,LNKERR,LNKNEW,LNKPAR,LNKHSH ;405 JNG 3-Aug-75 ; Recover if EOF is encountered while reading ASCII text. ; Routines: LNKLOD,LNKNEW ; ;406 RKH 9-Aug-75 ; Made DDT default if no argument ; to /TEST or /DEBUG switches. ; Routine: LNKWLD ; ;407 RKH 11-Aug-75 ; Correct problem with /NODE:-1 to prevent ; node before root and give error message. ;410 JNG 11-Aug-75 ; Avoid ?LNKISN if a node has no internal symbols. ; Edit 261 tried, but didn't do the whole job. ; Routines: LNKHST, LNKOV2 ;411 JNG 14-Aug-75 ; Fix problems when processing multiple line ASCII text ; containing file specs. Note: until SCAN is fixed, ; LINK will have the /K switch, which is a complete no-op ; and meant for internal use only. ; Routines: LNKPAR,LNKLOW,LNKSCN,LNKWLD,LNKNEW ;412 RKH 18-Aug-75 ; Preserve W3 when doing fixups to prevent problems when ; loading block type 21. ; Routines: LNKLOD ;413 JNG 18-Aug-75 ; Fix some small bugs in the handling of ELN message. ; Routines: LNKOV1 ;414 JNG 18-Aug-75 ; Make sure FUNCT. gets loaded somewhere in the root. ; Modules: LNKOV1 ;415 JNG 19-Aug-75 ; Keep LSYM and NAMPTR up to date in LNKOV2 to avoid ; ?ILL MEM REF when trying to expand LS area. ; Routines: LNKOV2,LNKCOR ;416 JNG 20-Aug-75 ; Update GS.FR instead of GS.PT when copying global ; symbol table into bound global area to prevent lost globals. ; Routines: LNKOV1 ;417 JNG 21-Aug-75 ; Remove the LNKF40 portion of edit 274 pending a rewrite ; of this section of code, since it broke more than it fixed. ; Routines: LNKF40 ;420 JNG 21-Aug-75 ; Always print a "]" on informational messages to TTY. ; Routines: LNKLOG ;421 JNG 26-Aug-75 SPR 10-17000 ; Always give %LNKMSN and %LNKSSN when a user requests ; an unimplemented function. ; Routines: LNKWLD ;422 JNG 27-Aug-75 SPR 10-17225 ; Temporarily shut off /SEG: while processing fixups to ; prevent confusion, esp. when loading F10 code. ; Routines: LNKLOD ;423 JNG 31-Aug-75 SPR 10-15734 ; Prevent ?ILL ADDR IN UUO in LNKXIT when loading overlays ; in a small amount of core and loading local symbols. ; Routines: LNKOV2,LNKXIT ;424 JNG 2-Sept-75 SPR 10-15734 ; Improve the long message for the FSN error. ; Routines: LNKERR ;425 JNG 2-Sep-75 SPR 10-15734 ; Do not require FUNCT. to be loaded into the root if there ; are no requests for it (user wrote own overlay handler). ; Routines: LNKOV1 ;426 JNG 2-Sep-75 SPR 10-15844 ; Do not output prompt characters while processing ASCII text. ; Routines: LNKSCN ;427 JNG 2-Sep-75 ; Don't destroy SCAN's ACs while processing ASCII text. ; Routines: LNKSCN ;430 JNG 2-Sep-75 ; Don't zap F.ASCI in TXTKOM. ; Routines: LNKSCN ;431 JNG 2-Sep-75 ; Make the /ESTIMATE switch work. ; Routines: LNKWLD ;432 JNG 2-Sep-75 ; Fix a typo in edit 417. ; Routines: LNKF40 ;433 JNG 3-Sep-75 ; Support the /RUN switch correctly, i.e. ignore it unless ; execution has not been requested. ; Routines: LNKSCN,LNKXIT ;434 JNG 4-Sep-75 ; Don't clear OFFSET and OSCANF just before doing an ; edit correction since this confuses .TYPRE in SCAN. ; Routines: LNKLOG ;435 RKH 4-Sep-75 ; Keep HC.S0 up to date when loading F40 code to prevent the code ; from being zeroed in LNKXIT. ; Routines: LNKF40 ;436 JNG 4-Sep-75 ; Clear ^O when prompting the user to make sure the "*" gets out. ; Routines: LNKSCN ; ;START OF VERSION 2C ; ;437 RKH 22-Sep-75 ; Prevent LNKDUZ errors when processing redundant right ; hand fixups by flushing the request. ; Routine: LNKOLD ;440 RKH 23-Sep-75 ; Change macro in LNKPAR so /ONLY can be a global switch ; Routine: LNKPAR ;441 RKH 25-Sep-75 ; Correct loading of COMMON when /SEGMENT:HIGH ; IS USED. PREVENT COMMON size from increasing by 1 ; (caused by edit 373) and improper loading (caused ; by edit 241). ; Routine: LNKOLD ;442 JNG 10-Oct-75 SPR 10-16809 ; Add a general routine to move some data by either RENAME ; or copy. Call this routine from several places in LNKXIT ; to prevent doing the wrong thing or getting ?LNKCNW messages. ; Routines: LNKERR,LNKXIT ;443 JNG 21-Oct-75 SPR 10-17617 ; Avoid losing some of the local symbols if loading them into ; core or into the .SAV file and symbol segment is paging. ; Routines: LNKXIT ;444 JNG 21-Oct-75 SPR 17618/17686 ; Don't lose libraries defined with the USELIB macro. ; Routines: LNKINI ;450 RKH 14-Nov-75 ; Correct code to give error when FORTRAN code is loaded ; then F40 code and /MIXFOR is not set. ; Routine: LNKLOD ;451 RKH 14-Nov-75 SPR 10-17881 ; Insert error message to identify file and module ; when LNKFON is given. ; Routine: LNKLOD ;452 RKH 14-Nov-75 SPR 10-17882 ; Prevent only the module name from being printed on top ; of page when the astrisk seperators were printed on the ; preceding page. ; Routine: LNKMAP ;453 RKH 18-Nov-75 SPR 10-17637 ; Correct listing of map index to prevent repeating names ; and losing others. ; Routine: LNKMAP ;454 JNG 21-Nov-75 ; Allow (but ignore) block type 1060 (trace blocks) for MAKLIB. ; Routines: LNKPAR, LNKNEW ;455 RKH 10-Dec-75 ; Do not bomb on absolute code seen after a HISEG ; pseudo-op (Link item type 3). Broken by edit 441 ; Routines: LNKOLD ;456 JNG 9-Jan-76 SPR 16640 ; Fix forced loading of F40 programs, as edits 274, 361, 417, ; and 432 attempted to do. Allow DATA statements in one ; segment to initialize COMMON defined in another segment. ; Shrink LNKF40 by 3 pages of code. ; Routines: LNKF40, LNKLOD ;457 JNG 10-Jan-76 SPR 17194 ; Load FORJAK properly on /MIXFOR even if one flavor ; of FORTRAN isn't seen until libraries are searched. ; Routines: LNKLOD, LNKOLD, LNKLOW ;460 JNG 11-Jan-76 SPR 17100 ; Don't generate a bad EXTTAB if multiple ambiguous requests ; in the same link. ; Routines: LNKOV2 ;461 JNG 11-Jan-76 ; Prevent loop in LNKCOR when loading overlays. ; Routines: LNKOV2 ;462 JNG 16-Jan-76 SPR 17774 ; Prevent EOF error in LNKXIT when /MIXFOR and paging ; by restoring R in .MXFOR after SEGCHK wipes it. ; Routines: LNKLOD ;463 JNG 16-Jan-76 SPR 17774 ; Avoid losing symbols after printing a map. ; Routines: LNKMAP ;464 JNG 17-Jan-76 SPR 17814 ; Implement the /MISSING switch and LNKIMM message. ; Routines: LNKPAR,LNKERR,LNKWLD,LNKLOD,LNKLOG ;465 JNG 17-Jan-76 SPR 17880 ; Redo block type dispatch, since it thinks block type 100 is ; reserved for customers when it is reserved for DEC. Move ; the code to handle .ASSIGN (block type 100) out of LNKCST ; and into LNKOLD. The block types are defined as follows: ; 0 37 Reserved for DEC (LNKOLD) ; 40 77 Reserved for customers (LNKCST) ; 100 377 Reserved for DEC (LNKOLD) ; 400 401 Reserved for DEC (LNKF40) ; 402 577 Reserved for customers (LNKCST) ; 600 677 Reserved for customer special file types (LNKCST) ; 700 777 Reserved for DEC special file types (LNKOLD) ; 1000 1677 Reserved for DEC (LNKNEW) ; 1700 1777 Reserved for DEC special file types (LNKNEW) ; 2000 3777 Reserved for customers (LNKCST) ; 4000 777777 Reserved for ASCII text (LNKNEW) ; Note that this contradicts the software notebooks in that DEC ; has now reserved types 700-777, since type 776 was already ; RADIX50 symbol files, and type 777 was MACRO universal files. ; Routines: LNKLOD,LNKOLD,LNKCST ;466 JNG 4-Feb-76 SPR 18030 ; Prevent a loop in LNKOV1 on a /NODE switch when loading ; relocatable overlays, esp. in small amounts of core. ; Routines: LNKOV1 ;467 JNG 5-Feb-76 SPR 18030 ; Set RC.PT to relocatable zero instead of absolute zero ; when the RC area is set up but the current overlay has ; no relocation info. This prevents ?ADDRESS CHECK in LNKOV2. ; Routines: LNKCOR, LNKOV2, LNKXIT ;470 JNG 9-Feb-76 SPR 18030 ; Preserve left half of R when filling in global requests so ; relocatable overlays will work (relocation tables will be right) ; Routines: LNKLOD ;471 DGS/JNG 13-Feb-76 ; Add code to support ALGOL debugging system. ; Routines: LNKPAR,LNKLOW,LNKCOR,LNKLOD,LNKOLD,LNKXIT,LNKNEW,LNKWLD,LNKERR ;472 JNG 20-Feb-76 SPR 18161 ; Update hl.s1 on a /COMMON switch in case nothing more ; is loaded. Make COMMON defined by switch only appear in ; the map once. ; Routines: LNKWLD ;473 JNG 21-Feb-76 SPR 18455 ; Delete all .TMP files when exiting due to a fatal error. ; Routines: LNKLOG ;474 JNG 21-Feb-76 SPR 18453 ; Print the module name that caused the error in all F40 ; produced error messages. ; Routines: LNKF40,LNKERR ;475 JNG 21-Feb-76 SPR 18452 ; Replace all calls to .TYVER in LNKSUB with calls ; to .TVERW in SCAN to save space. ; Routines: LNKSUB,LNKMAP ;476 JNG 21-Feb-76 SPR 18558 ; Insert missing FTOVERLAY conditionals. ; Routines: LNKHSH,LNKXIT ;477 JNG 28-Feb-76 QAR EG&G ; Count bound globals in global symbol table size when rehashing ; to avoid later ?LNKSIF errors. ; Routines: LNKHSH ;500 JNG 28-Feb-76 QAR RDH ; Fix bugs when reading in RADIX-50 symbol files, and ; allow /INCLUDE & /EXCLUDE to work with them. ; Routines: LNKOLD ;501 JNG 29-Feb-76 ; Support SFD's on input symbol files and output overlay ; files. LINK could not find symbol files in the default ; path, and HALTed in LNKXIT when loading overlays. ; Routines: LNKFIO ;502 JNG 29-Feb-76 ; Increase PDL size from 40 to 60, to avoid ?PDL OV error ; when indirect file went away during a switch. ; Routines: LNKPAR ;503 JNG 1-Mar-76 QAR BYU ; Fix bug in map routines printing index header at bottom of ; previous page instead of top of new page, caused by page output ; routine allowing pages to be LN.LPP+1 lines long, instead ; of LN.LPP lines. Since pages have been 56 lines long ; all this time anyway, increase LN.LPP to 56 to do it right. ; Routines: LNKPAR, LNKMAP ;504 JNG 8-Mar-76 QAR BYU ; Don't zero every 200'th word of the LS area when loading ; overlays. ; Routines: LNKOV1 ;505 JNG 8-Mar-76 QAR EG&G ; Avoid ?LNKISN due to truncated EXTTAB. ; Routines: LNKOV1 ;506 JNG 8-Mar-76 QAR EG&G ; Don't pull global symbols defined in a higher link into the ; current symbol table when searching a library containing ; alternate definitions for those symbols. ; Routines: LNKOLD ;507 JNG 9-Mar-76 QAR EG&G ; Avoid informational messages in map file when using /ERR:0 ; Routines: LNKMAP ;510 JNG 11-Mar-76 QAR EG&G ; Generate correct fixup for relocatable symbols in LS area. ; Routines: LNKPAR,LNKLOD,LNKCOR ;511 JNG 13-Mar-76 QAR EG&G ; Make sure LS area fixups get done properly on /LINK. ; Routines: LNKCOR,LNKOV1 ;512 DMN/JNG 15-Mar-76 QAR JMF/DLM ; Don't lose fixups when a chained request for a symbol is seen ; and an earlier request exists but is now completely paged out. ; Routines: LNKLOD ;513 JNG 15-Mar-76 ; Combine common functions of T.776 and T.6 into subroutines. ; Routines: LNKOLD ;514 JNG 15-Mar-76 ; Setup LH(R) correctly in RB.1 for relocatable overlays. ; Routines: LNKOLD ;515 JNG 17-Mar-76 QAR EG&G ; Prevent total confusion in overlay file when the LC area ; overflows to the disk in other than the root link. Respect ; PH.ADD always when paging and doing fixups. Make sure the ; ?W.S1 pointers always have PH.ADD subtracted from them. ; Routines: LNKOLD,LNKLOD ;516 JNG 21-Mar-76 QAR EG&G ; Correctly handle the case of LS area completely full, LNKCOR ; call is to expand LS area, and more of LS must be paged out ; to satisfy the request. This avoids %LNKSFU errors. ; Routines: LNKCOR ;517 JNG 21-Mar-76 ; Make the first word of new symbol files (ALGOL) be ; type,,count. Also, change ABLLEN to LN.ABL. ; Routines: LNKPAR,LNKOLD,LNKNEW,LNKCOR,LNKXIT,LNKLOD ;520 JNG 21-Mar-76 ; Delete LNKTMP as a module of LINK. ; Routines: LNKTMP ;521 JNG 21-Mar-76 QAR EG&G ; Initialize library searching data on /LINK so default ; libraries will be searched in overlays. ; Routines: LNKOV1 ;522 JNG 22-Mar-76 QAR EG&G ; Get relocation bits right when filling in chained page fault ; fixups (PFF.xx). ; Routines: LNKLOD ;523 JNG 28-Mar-76 QAR NIH ; Cut disk overhead to 15% of current when high segment paging. ; This was broken by edit 320. ; Routines: LNKOLD ;524 JNG 28-Mar-76 QAR BYU ; Don't zero random words if symseg area reduced to one page. ; Routines: LNKXIT ;525 JNG 28-Mar-76 QAR RAP ; Avoid ?LNKCEF when core available by reducing wrong segment. ; Routines: LNKCOR ;526 JNG 29-Mar-76 QAR JMT ; Don't set reloc bits unless loading reloc overlays. ; This is a fix to edit 522. ; Routines: LNKLOD ;527 JNG 4-Apr-76 ; Save R1 over TTLREL call in 776 processor. ; Routines: LNKOLD ;530 JNG 4-Apr-76 ; Change triplet flag bit definitions to their true values and ; use the TXxx macros from C to reference them. This makes ; it much easier to re-arrange them later. ; Routines: LNKPAR,LNKINI,LNKWLD,LNKLOD,LNKHSH,LNKOLD,LNKF40, ; LNKCOR,LNKMAP,LNKXIT,LNKOV1,LNKOV2,LNKNEW ;531 JNG 13-Apr-76 SPR 18744 ; Redo file type dispatch, and give a better error messgae if ; the user attempts to load a MACRO Universal file. ; Routines: LNKOLD,LNKERR ;532 JNG 1-May-76 ; Get usage of CTYPE, MNTYPE, and various triplets in the ; LS area coordinated to fix several small bugs with library ; searching and printing maps when paging. ; Routines: LNKOLD,LNKLOD,LNKMAP ;533 JNG 4-May-76 SPR 19053 ; Prevent LNKI4T message when loading large F40 programs ; due to incorrect byte count in BITC. ; Routines: LNKF40 ;534 JNG 5-May-76 SPR 18399 ; Correct several problems while command scanning: ; . Don't print a "*" if .OSCAN finds a SWITCH.INI entry ; . Put all file specs from the same .TEXT block in order ; . Don't apply switches from lines other than the first of one ; .TEXT block to the current file ; . Get sticky switches right on all command lines ; . Add a /CRLF switch to reset defaults as if a CRLF was seen ; . Allow multiple /LINK switches on one line ; Routines: LNKSCN,LNKWLD,LNKPAR,LNKLOW,LNKNEW,LNKOV1 ;535 JNG 7-May-76 SPR 18774 ; Don't forget to search user libraries on the next link after ; one for which one library pass loaded enough modules (at least ; one) to satisfy all remaining undefined globals. ; Routines: LNKLOD ;536 JNG 7-May-76 ; Define the temporary symbol bits in LNKOV2 so that they ; will not conflict with the link number field of the symbol entry ; Routines: LNKOV2 ;537 JNG 8-May-76 SPR 19226 ; Put both high and low files in user's default path on /SAVE. ; Routines: LNKFIO ;540 JNG 8-May-76 SPR 19288 ; Get the map right on /ONLY:HIGH and with zero length modules. ; Routines: LNKOLD,LNKMAP ;541 JNG 9-May-76 SPR 19325 ; Fixup all call by name F40 subroutine prologue instructions ; [PUSH 0,N(16)] when loading with /MIXFOR. ; Routines: LNKLOD ;542 JNG 14-May-76 SPR 19689 ; Make subroutine entry points be defined correctly after MIXFOR ; fixup when the LC area is paging. ; Routines: LNKLOD ;543 JNG 17-May-76 SPR 19335 ; Fix LNKDUZ error when real definition supercedes partial ; definition, and make library searching smarter about already ; having partial definitions. ; Routines: LNKLOD, LNKOLD, LNKCOR, LNKPAR ;544 JNG 23-May-76 ; SOUP in LINK version 3 stuff for TOPS-20 ; Routines: LNKCOR,LNKPAR,LNKOLD,LNKLOD,LNKWLD,LNKXIT,LNKERR ;545 JNG 23-May-76 QAR RDH ; Make the .LINK pseudo op work when paging. ; Routines: LNKPAR, LNKOLD ;546 JNG 25-May-76 ; Delete an extra instruction inserted by SOUP in edit 544. ; Routines: LNKOLD ;547 JNG 26-May-76 ; Make LINK assemble with MACRO 51. ; Routines: LNKXIT ;550 JNG 27-May-76 QAR DLM ; Prevent ILL UUO on polish fixup to non-loaded local. ; Routines: LNKOLD ;551 JNG 27-May-76 ; Change /SYMBOL to /SYFILE ; Routines: LNKPAR,LNKWLD ;552 JNG 27-May-76 ; Organize .REQUEST/.REQUIRE data base & define offsets properly. ; Routines: LNKPAR,LNKOLD ;553 JNG 27-May-76 ; Put edit 302 in once again (lost long ago). ; Routines: LNKOLD ;554 JNG 28-May-76 ; Prevent ILL MEM REF on switches like /SAVE which have ; multi-word values. ; Routines: LNKPAR,LNKSCN ;555 JNG 19-Jun-76 QAR E.S.E ; Fix some bugs relating to ALGOL 7 support: ; . Always load global symbols into core (low seg) for ALGOL ; . Make the ALGOL symbol files have .RBSIZ exactly right ; Routines: LNKLOD,LNKXIT ;556 JNG 19-Jun-76 ; Temporarily solve problem of HALT in LNKCOR when paging ; caused by edit 543 by checking in paging routines for existence ; of GS area and bypassing some code if no GS area. This ; can cause DDT symbol tables in core to be slightly wrong, but ; the real solution - re-doing part of LNKXIT so that the GS ; area can be kept around longer - is far too complex to do for ; the 2C/3A release of LINK. ; Routines: LNKCOR ;557 JNG 19-Jun-76 ; Clean up the listing for release. ; Routines: Almost all of them ;START OF VERSION 3 ;445 DMN 5-Nov-75 ; include previous edits to fix polish symbol table fixups ; routine: LNKOLD, LNKLOD ;446 DMN 5-nov-75 ; change switches and defaults to more useful values under TOPS20 ; routine: LNKPAR, LNKWLD, LNKXIT, LNKERR, LNKCOR ; ;447 DMN 7-nov-75 ; add 3 new polish operators ; routine: LNKOLD ;START OF VERSION 3A ;560 JNG 20-Jun-76 ; Release on both TOPS-10 and TOPS-20 as LINK version 3A(560) ; Routines: All. ;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. ; 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 ;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. ;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 ;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. ; 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. ; 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 ; 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 ;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 ; symbol table upper limit. ; If not specified limit default to next PSECT origin. ; If limit .GT. 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 ;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 ;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 ; 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. ;START OF VERSION 4A ;766 MCHC 17-MAR-78 ; Store correct KL code(offset calculated by JFFO) for inconsistancy ; check of modules to come. ; LNKLOD ;767 MCHC 17-MAR-78 ; Clear AC P2(required size) when coing forced dump of LC area, ; which returns through LNKCOR and will cause looping if ; garbage is in it. ; LNKOLD ;770 MCHC 17-MAR-78 ; Add code to allow paging for the first time in routine to ; output undefined symbols(especially if undefined symbol table ; does not begin at end of a chunk of code.) ; LNKXIT ;771 MCHC 23-MAR-78 ; Fix bug in doing large (.GT. 400000) pop loop in 2 chunks. ; LNKCOR ;772 MCHC 23-MAR-78 ; Edit 770 did not adjust start of symbol table that came after ; the undefined symbol table. ; If /SET:FOO:nnnnnn/SYMSEG:PSECT:FOO is used so that a PSECT ; was created just for the symbol table, the following should ; happen: ; PAT..=nnnnnn ; .JBUSY (117)/ -U,,PAT..+100 ; where U is the length of undefined symbol table ; .JBSYM (116)/ -L,,PAR..+100+U ; where L is the length of the symbol table ; LNKXIT ;773 JNG 30-Apr-78 ; Fix GSDLT in LNKXIT to not leave some area's UB ; pointing beyond .JBREL if the GS area is already gone. ; Routines: LNKXIT ;774 JNG 30-Apr-78 SPR 10-25711 ; Fix bad calculation of UW in EXE file writer. ; Routines: LNKXIT ;775 DZN 1-May-78 SPR 20-11396 ; Make sure /DEBUG:FORTRAN loads the starting address of ; FORDDT and not the user's program (unless explicit /START). ; Routines: LNKWLD ;776 DZN 4-May-78 SPR 10-23733 ; Fix address check and lost .JBVER when loading small programs ; with /SAVE and no data in core-image pages 0 or 1. ; Routines: LNKXIT ;777 DZN 18-May-78 SPR 10-24008 ; Fix allocation of COMMON blocks when a COMMON block is first ; referenced but not defined, then later defined. Also document ; SY.RF as destroying P1-P4. ; Routines: LNKOLD, LNKLOD ;START OF LINK 5I ;1000 MCHC 14-Mar-78 ; Support block type 1070 -- long symbol names. ; Set assembly switches for extended symbols and new blocks: ; .EXSYM==-1 ; .NWBLK==-1 ; LNKPAR, LNKLOW, LNKOLD, LNKNEW,LNKMAP,LNKWLD ;1001 MCHC 5-May-78 ; Add block type 1072 -- Polish block supporting long names. ; LNKOLD, LNKNEW ;1002 MCHC 8-Jun-78 ; Add code to do insert of long name plus a fixup triplet. ; LNKNEW, LNKOLD ;1100 DZN 23-May-78 SPR 10-24042 ; Fix LNKMAP to correctly free the index blocks it uses for sorting, ; to keep the integrity of the DY area. ; Routines: LNKMAP ;1101 JNG 29-May-78 SPR 10-23623 ; Fix LINK to correctly load indexed libraries that contain modules ; which have no entry points and thus do not appear in the index ; when indexed with MAKLIB. ; Routines: LNKOLD,LNKLOD,LNKWLD,LNKLOW ;1102 DZN 18-Jun-78 SPR 20-11085 ; Fix paging routines to detect moving a window past 512P. In this ; case, make the end of the window set right at 512P. ; Routines: LNKLOD ;1103 DZN 19-Jun-78 ; See that the list of .REQUEST/.REQUIRE blocks is not freed twice, ; to preserve the integrety of the DY area. ; Routines: LNKLOD ;1104 JNG 20-Jun-78 ; Fix address checks when dumping LC or HC area to disk. Remove ; edit 750 in LH.DMP, so we will never try to shrink the current ; area by more pages than the area has. ; Routines: LNKCOR ;1105 JNG 20-Jun-78 ; Fix edit 740 to not destroy an AC that held the input file's PPN. ; This caused LINK to not be able to find a file when the user gave ; an explicit path including SFDs. ; Routines: LNKFIO ;1106 JNG 27-Jun-78 QAR RDH ; Update HL.S1 from RC.CV of the highest PSECT loaded at the end of ; loading. This causes the EXE file generator to allocate all of ; the pages that it should if the last PSECT ends with a BLOCK statement. ; Routines: LNKLOD ;1107 MCHC 3-Aug-78 ; Fix bug in .SETEX--routine to expand RC.TB and RC.NTB tables ; in DY area by obtaining bigger spaces, copying the data from ; the old tables, and freeing the old table spaces. ; The bug was in address calculation in freeing one of the tables. ; The code is re-arranged to do a DY.GET followed by DY.RET ; then another DY.GET and DY.RET ; LNKWLD ;1110 MCHC 7-Aug-78 ; Type out the PSECT name as part of the error message when a ; non-existent one is used with /SYMSEG in GETSST routine. ; Don't clear the name from memory cell, loop back without restoring the ; stack and treat this case as a default case. ; LNKXIT ;1111 MCHC 7-Aug-78 ; Fix LNKXIT core management bug introduced by edit 772. ; LNKXIT ;1112 JNG 15-Aug-78 SPR 10-25902 ; Fix one off bugs in map printing segment lengths in K/P and ; words free. ; Routines: LNKPAR, LNKMAP ;1113 DZN 25-Aug-78 SPR 20-12001 ; Fix memory management problems when plotting the overlay ; tree. See that LINK never shrinks back on TOPS-20 until final ; placement of the loaded program. Add LNKPOT message to tell user ; when LINK is plotting the overlay tree. ; Routines: LNKCOR, LNKXIT, LNKPLT, LNKERR ;1114 DZN 1-Sep-78 SPR 20-11999 ; Zero count of COBOL symbol words and ALGOL OWNs loaded when ; done loading a module, so they don't get counted in subsequent ; modules in the same file. ; Routines: LNKOLD, LNKLOD ;1115 DZN 2-Sep-78 SPR 20-11997 ; Add LNKHCL message to complain when loading high segment code ; into a link other than the root in an overlaid program. ; Routines: LNKERR, LNKOLD ;1116 JNG 7-Sep-78 ; Put back part of the code removed by edit 716. Performance ; improvements are only kosher as long as the code removed is ; unneeded. ; Routines: LNKLOD ;1117 DZN 14-Sep-78 ; Make /INCLUDE:args also set include mode, as it did long ago. ; But also add /NOINCLUDE to turn off include mode but not ; delete the original args. ; Routines: LNKPAR, LNKWLD ;1120 DZN 22-Sep-78 SPR 10-26135 ; Fix CPU mismatch checks so that they work. Remove edit 766, ; revamp all CPU check code to use a bit mask of valid CPUs, ; delete the LNKKIA message and add LNKCCD, and change the ; map to include the correct information. Also, make the map ; show which CPUs the entire program can be run on. ; Routines: LNKPAR, LNKERR, LNKOLD, LNKLOD, LNKINI, LNKMAP, LNKLOW ;1121 JNG 4-Oct-78 QAR JMF ; Fix LNKXIT bug so .JBSYM ptr won't include the undefined symbol ; table. This was broken by edit 772. ; Routines: LNKXIT ;1122 DZN 5-Oct-78 SPR 10-26222 ; Remove edit 740, which attempted to use SCAN's /VERSION switch, ; rather than LINK's. SCAN's switch is a file-specific switch, which ; is not the way LINK wants it to work. However, still fix the original ; problem (having to type /VERSION to 6 characters to work) by making ; LINK's /VERSION switch unique to any abbreviation. ; Routines: LNKPAR, LNKSCN, LNKWLD, LNKFIO ;1123 DZN 10-Oct-78 SPR 10-26580 ; Use HRLI instead of HRL to load ENTER error flag. ; Routines: LNKFIO ;1124 DZN 11-Oct-78 SPR 10-26712 ; Edit 636 broke LINK's ability to be run execute-only. Fix ; this by making the TTY log routine once more return into the ; potentially execute-only high segment properly. ; Routine: LNKINI ;1125 JNG 1-Nov-78 SPR 10-26379 ; Don't try to run the high segment file on /SAVE/RUN (or /SAVE/DEBUG) ; when generating an EXE file. This fixes ?nnnLHC.EXE not found when ; the user types the above switches and the HC area has overflowed. ; Routines: LNKXIT ;1126 JNG 1-Nov-78 SPR 10-26433 ; If all 7.01 GETTABs to determine where we came from are not available, ; use the contents of the ACs to do GETSEG UUOs. ; Routines: LNKINI ;1127 JNG 14-Nov-78 QAR DIB ; Set up the module length for PAT.. in the runtime symbol table. ; Routine: LNKXIT ;1130 DZN 26-Jan-79 SPR 10-27212 ; Make LINK honor /MAXCOR correctly when a request for memory in a ; pagable area is made. In this case, edit 650 made LINK count the ; memory request toward the /MAXCOR value, even though the window ; can simply be moved. ; Routine: LNKCOR ;1131 DZN 26-Jan-79 SPR 10-27123 ; Make LINK decide to load a non-sharable OTS if the low segment ; has grown within 40 pages of the origin of the OTS high segment ; rather than letting the low segment grow past it first. ; Otherwise, the low segment may cross the beginning of the OTS ; during the system library search when it is too late to fix it. ; Routine: LNKLOD ;1132 JNG 30-Jan-79 SPR 10-26576 ; Re-work EXE file writer to fix several problems, including: ; . PSECTs above the high segment not written properly. ; . Absolute code not loaded correctly. ; . Bad EXE directory if loading overlays and small /SPACE switch. ; . PSECT attributes not written into the EXE file. ; . Page 1 written into page 0 if page 1 is lowest page containing code. ; . Address checks when writing the EXE file. ; . Bad EXE file if EXE directory is longer than two pages. ; . ?LNKCNW or bad DDT symbol table when loading PSECTs. ; Routines: LNKPAR, LNKINI, LNKLOD, LNKOLD, LNKWLD, LNKXIT. ;1133 JNG 30-Jan-79 SPR 10-26576 ; Add a long message for the LNKSTL message. ; Routine: LNKERR ;1134 JNG 30-Jan-79 SPR 10-27024 ; Avoid address check in LNKXIT while writing EXE file if lowest ; code loaded is between 2000 and 377777, but the program being ; loaded is not so large that LINK needs to overflow to disk. ; This edit is an extract of part of edit 1132. ; Routines: LNKXIT ;1135 DZN 31-Jan-79 SPR 10-26792 ; Force PG.SU to expand anyway if a request crosses a page boundary ; and the window is not at least two pages long. ; Routine: LNKLOD ;1136 JNG 31-Jan-79 SPR 10-26518 ; Avoid IO to unassigned channel in LNKXIT while writing an EXE file ; if segment ends on last word of a page and LINK is not paging to disk. ; This edit is an extract of part of edit 1132. ; Routine: LNKXIT ;1137 JNG 1-Feb-79 SPR 20-12411 ; Don't change RC.CUR in T.24. Also set default PSECT name to left- ; justified .LOW. (not right-justified) if name not given in block. ; Routine: LNKOLD ;1140 JNG 6-Feb-79 SPR 10-26410 ; Clear LSTSYM when a non-loaded local is encountered. ; Routine: LNKOLD ;1141 JNG 15-Feb-79 SPR 10-26290 ; Make the EXE file writer stop writing when it passes the size ; of the user program, instead of writing the entire LC area. ; This edit supercedes edit 1136 and is an extract of edit 1132. ; Routine: LNKXIT ;1142 JNG 16-Feb-79 ; Fix problems with multiple /SET:.HIGH.s introduced by edit 1132. ; Routine: LNKWLD ;1143 JNG 16-Feb-79 QAR CKS ; Make sure symbols never get into the LS area before a module name. ; If they try (/NOINITIAL/SET), dummy up a module name from the symbol. ; Routine: LNKLOD ;1144 DZN 16-Feb-79 SPR 20-12473 ; Clean up code to run the .EXE file so that PA1050 is not left in ; memory on TOPS-20, and so that more of the final messages use .ERR. ; instead of OUTSTRs. ; Routines: LNKERR, LNKLOG, LNKLOW, LNKPAR, LNKWLD, LNKXIT ;1145 DZN 22-Feb-79 ; Load local symbols and store symbol table pointers on TOPS-20 if ; /DEBUG:DDT and leaving program in memory. Broken by edit 1144. ; Routines: LNKXIT, LNKWLD ;1146 DZN 8-Mar-79 SPR 10-26290 ; Change the 'Not enough core to load' message to 'Program too complex'. ; Then cause more cases to force .EXE file generation (e.g., PSECTs above ; high segment, gaps between PSECTS). ; Routines: LNKPAR, LNKXIT, LNKERR ;1147 JNG 12-Mar-79 ; Avoid bad EXE file if lowest location loaded is above 400000, LINK ; is overflowing to disk, and lowest location loaded was not the first ; location loaded (i.e., load was not monotonic). ; Routine: LNKXIT ;1150 DZN 14-Mar-79 SPR 10-27632 ; Make LOGINI in LNKINI.MAC use standard LKNFIO routines to set up the log ; file, so that the default path of a log file is preserved over the ; ENTER. ; Routine: LNKINI ;1151 JNG 29-Mar-79 ; Add the new Job Data Area location .JBEDV to the initial symbols. ; Routine: LNKINI ;1152 JNG 3-Apr-79 ; Get EXE file right when loading overlays. Broken by 1132. ; Routines: LNKOV1, LNKXIT ;1153 JNG 12-Apr-79 QAR JBD ; Give LNKIPX message if a Define PSECT block (type 24) contains ; an invalid PSECT index. ; Routine: LNKOLD ;1154 JNG 12-Apr-79 QAR JBD ; Re-write T.23 to fix the following problems: ; . Don't re-define the PSECT indices in terms of the order of block 23s. ; . Don't require a name of zero in the first block 23. ; . Don't do a set PSECT (block type 22) action on block type 23. ; . Expect PSECT index instead of name in first word (name still works). ; Routine: LNKOLD ;1155 JNG 13-Apr-79 QAR JBD ; Allow PSECT .HIGH. to be synonymous with TWOSEG. ; Routines: LNKOLD, LNKWLD ;1156 JNG 13-Apr-79 QAR JBD ; Relocate the breaks in block type 5 with respect to .LOW. ; every time, even if the current PSECT is not .LOW.. ; Routine: LNKOLD ;1157 JNG 13-Apr-79 QAR DZN ; Suppress the PSECT name global symbols to DDT typeout. ; Routine: LNKWLD ;1160 JNG 14-Apr-79 QAR TW/JMF ; Don't put junk in runtime undefined symbol table for symbols ; that are used in Polish blocks. ; Routine: LNKXIT ;1161 JNG 4-May-79 SPR 10-27727 ; Clean up Psect printout in map. ; Routines: LNKSUB, LNKMAP. ;1162 JNG 4-May-79 SPR 20-12825 ; Set up DDT's symbol table pointers on /DEBUG/SAVE. This edit is ; an extract of edit 1144. ; Routines: LNKXIT ;1163 JNG 8-May-79 QAR DC ; Never mark .HIGH. as relocatable, since we default its origin. ; This was broken by edit 1155. ; Routine: LNKWLD ;1164 JNG 8-May-79 SPR 10-27598 ; Don't overwrite the first page of the FX area when writing a map ; if the LS area is paging and the last piece of the area exactly ; fits into the window. ; Routine: LNKMAP ;1165 DZN 15-May-79 SPR 10-27925 ; Zero LSTSYM whenever a call to SY.RLS says a symbol requested for symbol ; table fixup was not the last symbol loaded. This prevents symbol fixup ; requests from finding a long-obsolete symbol in LSTSYM that just happens ; to match. ; Routine:LNKLOD ;1166 JNG 15-May-79 ; Don't allow PSECT indices in Polish blocks unless the first halfword ; was the default PSECT index for the block. ; Routine: LNKOLD. ;1167 JNG 17-May-79 QAR 10-3081 ; Don't allow symbols typed as switch arguments to begin with digits. ; Routines: LNKSCN ;1170 JNG 23-May-79 SPR 10-27945, QAR 10-3070, 10-3087 ; Fix some memory management problems in LNKXIT when not writing an ; EXE file. ; Routine: LNKXIT ;1171 JNG 30-May-79 QAR 10-3049 ; Fix edit 1146 to say LNKPCL even on TOPS-10 if it doesn't like ; the PSECT attributes. ;1172 JNG 5-Jun-79 ; Fix many memory management problems when writing a runtime symbol ; table, especially when psects are involved. ; Routines: LNKPAR, LNKINI, LNKOV1, LNKOV2, LNKWLD, LNKXIT ;1173 JNG 10-Jun-79 ; Update RC.HL on /COMMON. ; Routine: LNKWLD ;1174 DZN 10-Jun-79 SPRs 20-12548, 20-12244, QAR 10-03199 ; Revamp all error messages. ; . Label all messages with E$$xxx:: or Ennxxx:: so messages can be found ; when debugging. E$$xxx should be the label of the .ERR. (or its ; preceeding PUSH P,[channel]) that defines the .ERxxx text block. ; Ennxxx should be the label of all other .ERR.s with the same assigned ; mnemonic, with nn starting at 01. ; . Include the module and file name in which an error was detected in all ; applicable messages. ; . Make .OERR. synonamous with OUTSTR for use in place of .ERR. when a ; message must be printed with an OUTSTR, so that all such messages can ; be found easily. ; . Make the list of messages and long text in LNKERR and the actual ; messages in LINK agree. ; . Fix log device being a terminal other than the controlling one. ; . Clean up the wording of all messages to be more consistent. ; Routines: All ;1175 JNG 12-Jun-79 ; Fix /START and /UPTO with symbols as arguments. ; Routines: LNKLOD, LNKWLD, LNKERR ;1176 JNG 12-Jun-79 ; Disallow /SYMSEG:PSECT:name with /OVERLAY. ; Routine: LNKWLD ;1177 JNG 12-Jun-79 ; Make /VERSION in global context not lose local switches. ; Routines: LNKPAR, LNKWLD ;1200 JNG 13-Jun-79 ; If loading reentrant FOROTS, search SYS:FORLIB/SEGMENT:LOW. ; This is required for FOROTS version 6 and later. ; Routine: LNKLOD ;1201 JNG 13-Jun-79 ; Disallow /SEGMENT:PSECT, which worked because it used the same ; keyword table as /SYMSEG. ; Routines: LNKPAR, LNKLOD, LNKOV1, LNKOV2, LNKWLD ;1202 JNG 14-Jun-79 ; Fix /VERSION after 1172, and make LINK assemble on TOPS-20 ; after edit 1174. ; Routines: LNKPAR, LNKFIO, LNKLOG, LNKXIT. ;1203 JNG 14-Jun-79 ; Add support for Extended FORTRAN. ; Routines: LNKPAR, LNKMAP, LNKLOD, LNKERR ;1204 JNG 14-Jun-79 ; Check for programs that extend beyond location 777777, and ; issue the LNKPTL message. ; Routines: LNKLOW, LNKOLD, LNKLOD, LNKERR ;1205 JNG/DZN 14-Jun-79 SPR 10-27954 ; Re-claim some wasted blocks in .OVL files. ; Routine: LNKOV1 ;1206 JNG 15-Jun-79 ; Fix a NO.COR in LNK999 that edit 1174 missed. ; Routine: LNK999 ;1207 JNG 29-Jun-79 ; Make the LNKCMX message continue loading, so the user can run ; the program if he wants to. ; Routine: LNKLOD ;1210 JNG 29-Jun-79 ; Allow 1-word block type 5's, so SAIL output will load. Also ; allow a program break of exactly 1,,0 (bypass the LNKPBI check). ; Routine: LNKOLD ;1211 JNG 29-Jun-79 QAR 10-3303 ; Fix typo in LNKDRC message, avoid Illegal UUO. Broken by 1174. ; Routine: LNKWLD ;1212 DZN 4-Jul-79 ; Fix various typos and other loose ends in the aftermath of 1174. ; Routines: LNKERR, LNKLOD, LNKLOG, LNKNEW, LNKXIT ;1213 JNG 5-Jul-79 ; Eliminate the ISD message; on multiple partial definitions, just ; ignore them if their values agree, and give the MDS message if ; they don't. ; Routines: LNKPAR, LNKOLD, LNKLOD, LNKERR ;1214 DZN 9-Jul-79 QAR 10-03315 ; Fix mismatched angle brackets so PIP's /V switch doesn't complain. ; Comments should not contain angle brackets unless they actually ; terminate conditionals, repeats, etc. ; Routines: LNKHST, LNKCOR, LNKOV1, LNKXIT ;1215 JNG 23-Jul-79 QAR R.ACE ; Use RC.HL for .ABS. and .LOW. for LOWLOC update at CHKLLC, since ; RC.CV may not be correct. In particular, RC.CV for .ABS. is always ; zero. ; Routine: LNKLOD ;1216 JNG 23-Jul-79 QAR CKS ; Preserve P1/P2 in SYMOUT, avoid illegal memory reference if ; undefined symbols exist. ; Routine: LNKXIT ;1217 DZN 25-Jul-79 ; Clean up the listings for release. Update all copyright notices. ; Remove all editing lines. Break pages in good places. ; Routines: All ;1220 DZN 24-Aug-79 ; Release on both TOPS-10 and TOPS-20 as version 4A(1220). ; Routines: All ;START OF VERSION 5 ;1221 DZN 1-Oct-79 ; Allow monitor commands to include LINK commands, in the form ; .R LINK (commands) or @LINK commands. ; Routine: LNKSCN ;1222 DZN 1-Oct-79 ; Allow the full Radix-50 character set in the argument of the ; /NOREQUESTS: switch. ; Routine: LNKPAR ;1223 DZN 2-Oct-79 ; Make the argument to /SEVERITY: be decimal instead of octal. This is ; more consistent with the other message controlling switches, and the ; LINK manual. ; Routine: LNKPAR ;1224 DZN 19-Oct-79 QAR 10-03507 ; Check the format of polish blocks more carefully, complaining about ; invalid formats. Add the LNKNSO, LNKISM, LNKNAP and LNKJPB messages, and ; remove the LNKISO message. LNKJPB is a warning so that FAIL programs ; will load. ; Routines: LNKOLD, LNKERR ;1225 DZN 25-Oct-79 SPR 20-13384 ; Force /UPTO: just below the high segment origin of the runtime OTS ; (unless user has specified /UPTO:). This keeps the symbol table (if ; one is loaded) from growing into the area of memory that the OTS will ; try to go. The program will still not be runnable but the user will get ; the correct message. Make the OTS origins compiler-specific instead of ; hard-wired 400000. ; Routine: LNKLOD ;1226 DZN 12-Nov-79 SPR 20-13384 ; Default /SEGMENT:LOW in all non-root overlay links. This keeps users ; from having to type it all the time, especially if /OTS:NONSHAR was ; specified (/OTS:NONSHAR defaults to /SEGMENT:DEFAULT for Fortran ; programs, frequently causing high segment code in non-root links). ; Routines: LNKOV1, LNKLOD ;1227 DZN 8-Jan-80 ; Allow multiple COBOL-74 modules to be loaded without receiving an ; erroneous LNKCMC message. Broken by edit 1174. ; Routine: LNKLOD ;1230 DZN 24-Jan-80 SPRs 10-28964, 10-28965 ; Rewrite DVSUP. to handle the complete problem of initializing an ; overflow file in the same area (structure and path) as its associated ; output file. Then make the area overflow routines use DVSUP. properly. ; This solves the problem of overflow and output files ending up on the ; wrong (and potentially non-existent) area. ; Routines: LNKFIO, LNKCOR, LNKOV1, LNKLOD, LNKPAR, LNKWLD ;1231 DZN 28-Jan-80 SPR 10-29122 ; Make sure the high segment is properly accounted for if only ; /SET:.HIGH.:n is seen, so that .JBHRL is properly set up. ; Routine: LNKOLD ;1232 DZN 29-Feb-80 SPR 10-29203 ; See that overlay links do not lose their start addresses when symbolic. ; Broken by edit 1175. ; Routines: LNKLOD, LNKOV1 ;1233 PY 29-Feb-80 SPR 10-29290 ; See that RC.CV is not reset to RC.HL after a module if /SET: ; sets the relocation counter down. ; Routine: LNKOLD ;1234 PY 5-Mar-80 ; If there are multiple overlapped PSECTs, one PSECT name will be ; printed as garbage in some LNKPOV messages. ; Routine: LNKLOD ;1235 MFB 5-Mar-80 ; Clear LOGSUB to avoid possible IO TO UNASSIGNED CHANNEL when ; the log file has already been closed. ; Routine: LNKXIT ;1236 PY 6-Mar-80 ; Teach LINK about KS10 CPUs. ; Routine: LNKPAR ;1237 PY 7-Mar-80 ; Make LNKCCD Message 'Fatal but continues', instead of 'Fatal' ; Routine: LNKOLD ;1240 PY 13-Mar-80 ; Fix the /CPU switch, broken since KL CPU was added. Make it ; accept multiple CPUs, and add error LNKCPU. Make switch ; available on TOPS-20. ; Routines: LNKPAR, LNKOLD, LNKWLD, LNKERR ;1241 PY 21-Mar-80 ; Make the /SET switch give the LNKZSV error if given with no ; arguments, instead of the fatal LNKISN error. ; Routine: LNKWLD ;1242 PY 3-Apr-80 ; Test for High Seg above 700000 on TOPS-20, and make LINK ; generate an EXE file if it is. This prevents LINK from ; trying to make PA1050 overwrite itself during the REMAP. ; Routines: LNKPAR, LNKXIT ;1243 MFB 9-Apr-80 SPR 10-29396 ; Make LINK handle left half fixups to a global symbol ; correctly (this case is confused with a global suppressed ; symbol). No longer generates an LNKISP message when trying ; to resolve the fixup. ; Routines: LNKPAR, LNKOLD ;1244 PY 16-Apr-80 ; Remove PA1050 from memory if user program is going to be run but ; is not in a .EXE file. Simulate the CORE UUO in the accumulators ; with a PMAP% JSYS, and PMAP PA1050 away in the phased code. ; Remove edit 644, which should not be in phased code. ; Routines: LNKPAR, LNKXIT ;1245 PY 23-Apr-80 ; Fix Typo in edit 1224 ; Routine: LNKOLD ;1246 PY 25-Apr-80 ; Prevent a default high segment being generated if a /SYMSEG:HIGH ; appears before any high segment code. Programs which have high ; segments at other than 400000 will then load correctly. ; Routines: LNKLOD, LNKWLD ;1247 PY 25-Apr-80 ; Print LNKOSL message if /SYMSEG:HIGH or /SYMSEG:PSECT: ; appear before the /OVERLAY switch. ; Note: This edit requires edit 1246. ; Routine: LNKOV1 ;1250 PY 28-Apr-80 SPR 20-14184 ; Clear the date and time bits in the extended lookup/enter ; blocks in DVUPD. this keeps PA1050 from using the bits ; to set the time last written. (TOPS-20 only) ; Routine: LNKFIO ;1251 PY 29-Apr-80 ; Fix test in PG.SU so LINK will not attempt to expand windows ; beyond available memory. ; Routine LNKLOD ;1252 PY 5-May-80 ; Remove edit 1221 on TOPS-20. Rescan will not work because of ; a SCAN restriction. ;1253 PY 14-May-80 ; Remove edit 1233, which breaks COBOL programs. ; Routine: LNKOLD ;1254 PY 21-May-80 ; Update X macro in MAKLIB macro to use arguments C and D ; Since PROCESSORS macro now expects them. ;1255 PY 23-May-80 ; Make /SET: and rel block type 24 work when the PSECT name has ; been forward referenced as a global symbol. ;1256 PY 28-May-80 ; Add code to put processor type in P4 before QREENT is called in ; overlayed programs. Eliminates wrong decisions, possible ; ILL-MEM-REFs. ;1257 PY 3-Jun-80 ; If a program is overlaid, reset RC.HL for .ABS. to the highest ; absolute location in the root node. This solves problems when ; writing .EXE files. ; Routines: LNKLOW, LNKOV1, LNKXIT ;1260 PY 5-Jun-80 ; /SYMSEG with no argument (a non-preferred usage) should default ; to /SYMSEG:LOW, but defaults to /SYMSEG:HIGH after edit 1201 ; Routines: LNKPAR ;1261 PY 5-Jun-80 ; If LINK determines that a program is too complex and needs an ; EXE file, many errors can occur, including bad a JOBDAT area, ; or an OPEN error on the EXE file. ; Routine: LNKXIT ;1262 PY 13-Jun-80 ; Make LNKCMX print once only. ; Routines: LNKLOD, LNKLOW ;1263 PY 30-Jun-80 ; Make expressions of the form: ABC=:XYZ## work when ; loaded in an overlay. ; Routine: LNKOV1 ;1264 PY 09-Jul-80 ; Fix LINK so that /PLOT will not cause %LNKDLT error, or ; other problems. Broken by edit 1144 ; Routines: LNKLOW, LNKPAR, LNKPLT, PLTGBL ;1265 PY 09-Aug-80 ; Make ALGDDT work with overlays by putting the .SYM file ; name in the first OWN block of an overlaid program. ; Routines: LNKLOD, LNKOV1 ;1266 PY 31-Aug-80 ; Correct code so LINK won't loop infinitely when an overlay ; has a local symbol table so long LINK must read it in pieces. ; Routine: LNKOV1 ;1267 PY 31-Aug-80 ; Teach LINK about /DEBUG:ALGOL and about ALGDDT. ; Routines: LNKPAR, LNKWLD, LNKXIT ;1270 PY 4-Sep-80 ; Put in a request for the start address if it is a symbol so ; it will be loaded if the module is loaded in /SEARCH mode. ; Routine: LNKWLD ;1271 PY 7-Oct-80 ; Make FORLIB load into the low segment by default if the main ; program is not a FORTRAN program. ; Routine: LNKLOD ;1272 PY 30-Oct-80 ; Fix bug in Edit 1244 which causes the PMAP% which is supposed ; to remove PA1050 to fail if the users program ends on the end ; of a page. ; Routine: LNKXIT ;1273 PY 2-Dec-80 SPR 20-14571, 10-30269 ; Cause RC.HL in .HIGH. and .LOW. to refer to the highest ; addresses loaded in the current module, rather than the ; highest addresses loaded in the segment. Keep the highest ; location loaded in HP.S1 and HP.S2. Then at LNKXIT ; time, set RC.HL to be the highest address in the segment ; to be consistent for the .EXE file writer. This causes ; the current high and low segment values to be the highest ; in the module, rather than the highest in the segment, ; allowing users to /SET the LOW or HIGH segments down ; without disturbing REL files which count on the T.5LS ; and T.5THS adjustments. This edit supercedes edits ; 1233 and 1253. ; Routines: LNKOLD, LNKLOW, LNKXIT ;1274 PY SPR 10-30464 ; Add code to expand the Polish stack if it is not ; large enough for a given Polish expression. ; Routines: LNKLOW, LNKOLD ;1275 PY SPR 10-30508 ; Fix core management bug which occurs if an area has ; overflowed to disk, has no pages in memory, and is ; being expanded on a VM system. This happens to the ; Algol symbols area if it has overflowed, causing ; the first AS area page to be swapped with the first ; LS area page, producing %LNKSFU errors. ; Routine: LNKCOR ;1276 PY SPR 10-30571 ; If a .REL file is being loaded /SEARCH and /SEG:HIGH, ; Don't set up the RC.TB tables for a second high segment ; in T.6 until sure the module will be loaded. ; Routine: LNKOLD ;1277 PY SPR 20-15585 ; If a /LINK switch is seen ending an overlay link, and ; no /NODE switch is seen before the next module is loaded ; print a fatal "LNKNSM /NODE switch missing" error. ;1300 PY 27-Feb-81 ; Implement the /LIMIT switch, as /LIMIT:NAME:ADDRESS ; where NAME is a psect name and ADDRESS is the upper ; bound of the psect, i.e. the first address where it ; is not legal to load the psect. If a psect exceeds ; it's bounds, inhibit chained fixups so that LINK ; will not hang if psects overlap unexpectedly. ; Routines: LNKPAR,LNKERR,LNKINI,LNKLOD,LNKLOW,LNKOLD ; LNKWLD,LNKXIT ;1301 PY 12-Mar-81 SPR 10-30667 ; Make the /VERBOSITY switch use the same flags as the ; /MESSAGE switch in SCAN. Add code to handle the case ; of /MESSAGE:NOPREFIX. Also change some messages at ; exit time to look at the verbosity bits. ; Routines: LNKPAR,LNKERR,LNKINI,LNKLOG,LNKLOW,LNKPAR ; LNKSCN,LNKWLD,LNKXIT ;1302 PY 12-Mar-81 ; Fix problem with edit 1273 which makes LINK hang if ; no files are loaded. ; Routine: LNKXIT ;1303 PY 17-Mar-81 ; Change the LNKLMN message to include the file name. ; Routines: LNKOLD, LNKNEW ;1304 PY 20-Mar-81 ; Make TWOSEG work with Psects. ; Routines: LNKINI, LNKLOW, LNKOLD, LNKWLD ;1305 PY 20-Mar-81 ; Fix problem with edit 1273 which could cause low seg ; code not to be written to .EXE file if low seg overflows ; to disk. ; Routines: LNKLOD, LNKXIT ;1306 PY 30-Mar-81 ; Output LNKMPT error if psects and twoseg code mixed in ; the same module. ; Routines: LNKLOW, LNKOLD, LNKERR ;1307 PY 13-Apr-81 ; Implement the /SUPPRESS switch. /SUPPRESS:SYMBOL will ; cause that symbol to be undefined even if it has been ; previously defined. ; Routine: LNKWLD ;1310 PY 13-Apr-81 ; Make the LNKOFS message use the long error text. ; Routine: LNKOV1 ;1311 PY 13-Apr-81 ; Fix bug in edit 1301. ;1312 PY 21-Apr-81 ; Load a nonsharable OTS, default segment, if user ; specified /SYMSEG:HIGH ; Routine: LNKLOD ;1313 PY 4-May-81 ; Fix edit 730 so that LINK will not lose the /LINK ; switch or produce a fatal error message if the ; /DEBUG switch is not local to the same file as ; the /LINK switch or if the /LINK switch is global. ; Routine: LNKWLD ;1314 PY 9-Jun-81 ; If a program has more than 400 contiguous non-zero pages, and ; LINK has enough memory to keep more than 400 pages in core, it ; will not write these pages into the EXE file because the dump ; mode IOWD in the EXE file writer will go positive. ; Routine: LNKXIT ;1315 PY 17-Jun-81 ; Fix the MAKLIB macro to use bits for language types so that ; FORTRAN and Extended FORTRAN will work properly. ; Routines: LNKINI, LNKLOD ;1316 PY 1-Jul-81 ; With Edit 1305 installed, TWOSEG root nodes of overlaid ; programs will not be written to the .EXE file correctly. ; Routine: LNKOV2 ;1317 PY 14-Jul-81 ; Fix calculation of .JBCOR which will be off by one page if ; the program low segment ends on a page boundary. ; Routine: LNKXIT ;1320 PY 14-Jul-81 ; Fix code at T3HOLD to know about new rel blocks and ; about ASCII text blocks. This allows compilers to ; generate code with new rel blocks or ASCII text blocks ; and to have it loaded /SEG:LOW even if they do not ; produce a high segment break in the type 3 block. ; Routine: LNKLOD ;1321 PY 20-Aug-81 ; Make SIMDDT work like ALGDDT. This means not loading ; a SIMDDT.REL, and starting the program at the re-enter ; address if a /DEBUG:SIMULA or /DEBUG:SIMDDT switch ; is seen. This edit requires edit 1267. ; Routines: LNKWLD, LNKXIT ;1322 PY 8-Sep-81 ; Remove a HALT from LNKMAP, which occurs if a PSECT ; description crosses the end of a window and the LS area ; has overflowed. Handle this case by moving the window. ; Routine: LNKMAP ;1323 PY 13-Nov-81 ; Fix a bug with edit 1244 which may cause pages to be ; lost when loading a large program with a low high segment ; origin and not requesting a .EXE file. ; Routine: LNKXIT ;1324 PY 15-Nov-81 ; Make /USERLIB also use bits for the compiler type. ; Routine: LNKWLD ;1325 PY 19-Nov-81 ; If an undefined symbol has secondary right half chained ; fixups, output them for DDT. ; Routine: LNKXIT ;1326 PY 26-Jan-82 ; Use the new COMPT. UUO which will remove PA1050 without ; affecting the users vestigial JOBDAT area. This fixes ; problems with TOPS-20 CCOC words. (TOPS-20 ONLY) ; Routines: LNKPAR, LNKXIT ;1327 PY 3-Feb-82 ; Fix a case of left half additive fixup missed by edit ; 1243. This case occurs if the defining global is loaded ; before the left half request. ;1330 PY 10-Feb-81 ; Add the following to the legal Radix-50 codes for the Type 2 ; block: ; ; 30 Global left half deferred symbol definition ; 34 Global both halves deferred symbol definition ; 70 Global left half deferred DDT suppressed symbol definition ; 74 Global both halves deferred DDT suppressed symbol definition ; ; These are intended to replace the 44 and 64 codes for these ; functions. The 44 and 64 blocks will mean: ; ; 44 Global DDT suppressed definition, not deferred ; 64 Global right half deferred DDT suppressed symbol definition ; ; This will solve problems with the 44 and 64 functions which have ; never completely worked, and allow compilers to specifiy whether ; left half global definitions should be DDT suppressed or not. ; Routine: LNKOLD ; 1331 PY SPR 20-17252 ; Certain messages such as LNKELN may print an extra CRLF on the ; terminal before the right bracket. Fix this so the extra CRLF ; only goes to the log file. ;1331-1400 Maintenance edits to LINK V4A. ;1400 DZN 2-Mar-80 ; Implement writable overlays for Fortran SAVE statement. ; . Use OVRPAR.MAC for overlay file definitions. ; . Add DI.WPT, DI.FLG to overlay file directory, CS.OVL to control ; section. ; . Add writable link table to the overlay file. ;1401 PAH ; Performance enhancements to overflow and .EXE file handling. ; Routines: LNKPAR,LNKLOW,LNKOLD,LNKLOD,LNKCOR,LNKXIT ;1402 PAH ; Performance enhancements to .REL file handling. ; Routines: LNKOLD,LNKLOD,LNKLOW ;1403 PAH ; Streamline the initialization code on Tops-20. ; Routine: LNKINI ;1404 PAH ; New .REL block types T.1120-T.1137 for load-time arg type checking. ; Routines: LNKNEW,LNKLOD ;1405 PAH ; New .REL block types T.1010-T.1034. ; Routine: LNKNEW ;1406 PAH ; Remember to get and store the .REL file's creation time and date for ; /MAP. Broken in edit 1402. ; Routine: LNKFIO ;1407 PAH 23-Dec-80 ; Fix the opening of overlay files, broken in edit 1401. Also fix ; PPNs in command lines, broken in the same edit. ; Routine: LNKFIO ;1410 PAH 23-Dec-80 ; Clear T3 before the GETJI in LNKINI added in edit 1403. ; Routine: LNKINI ;1411 PAH 12-Jan-81 ; Add AT.NC and AT.NC PSECT attributes for extended addressing. ; Routine: LNKPAR ;1412 PAH 20-Jan-81 ; Make file overflow routines use nonzero sections if the user's ; program is being loaded into nonzero sections. ; Routine: LNKCOR,LNKOLD,LNKNEW ;1413 PAH 26-Jan-81 ; Add code in LNKMAP to handle native overflow files properly. ; Routine: LNKMAP ;1415 PAH 2-Feb-81 ; Write ALGOL .SYM files on channel TC, not channel DC. ; Routine: LNKXIT ;1416 PAH 16-Mar-81 ; Put an ERJMP after the GTFDB in DVLKP. so asking for files ; on NUL: doesn't cause an illegal instruction trap. ; Routine: LNKFIO ;1417 PAH 14-Apr-81 ; For TOPS-20, skip T.14 block correctly instead of clearing ; buffer. ; Routine: LNKOLD ;1420 PAH 27-Apr-81 ; Save the address in T2 accross a call to the E$$FTH error. ; Routine: LNKLOD ;1421 PAH 4-May-81 ; Display the creation date for the .REL file correctly in ; maps -- broken when nativizing .REL file input. ; Routine: LNKOLD ;1422 PAH 5-May-81 ; Add PASCAL to the list of supported libraries. ; Routines: LNKPAR ;1423 PAH 5-May-81 ; Implement Program Data Vectors. ; Routines: LNKPAR,LNKLOW,LNKWLD,LNKOLD,LNKXIT,LNKNEW ;1424 PAH 10-May-81 ; Implement /MAXNODE. ; Routines: LNKPAR,LNKWLD,LNKOV1 ;1425 PAH 10-Jun-81 ; Extended addressing support code under FTFRK2 feature test. ; Routines: LNKOLD,LNKXIT,LNKCOR,LNKINI,LNKWLD ;1426 PAH 4-Aug-81 ; Order the routines in LNKNEW correctly and delete duplicate T.1042- ; T.1044 introduced during a merge. ;1427 PAH 5-Aug-81 ; Put an ERJMP after the PDVOP% JSYS to remove LINK's own PDV to ; avoid ?Illegal instruction... on pre-Release 5 TOPS-20 systems. ; Routines: LNKXIT ;1430 PAH 5-Aug-81 ; Remove .NWBLK conditional code forcing an error from type 1060 ; MAKLIB trace blocks. ; Routines: LNKNEW ;1431 PAH 2-Oct-81 ; Correct typo in comparisons at PDV2:, preventing correct handling ; of /PVDATA:PROGRAM, /PVDATA:CBLOCK and /PVDATA:START. ; Routines: LNKWLD ;1432 PAH 2-Oct-81 ; Make ?LNKNSM /NODE SWITCH MISSING AFTER /LINK a warning, not an ; error -- some programs that loaded perfectly well before are ; prevented from doing so by making this an error. ; Routines: LNKERR, LNKLOD ;1433 DMN 2-Oct-81 ; Distinguish COBOL-68,COBOL-74 and new COBOL for possible future ; COBOL release. ; Routines: LNKLOD,LNKERR,LNKPAR ;1434 DMN 2-Oct-81 ; New Blocktype 1004 for byte pointer initialization. ; Routines: LNKLOW,LNKLOD,LNKNEW,LNKERR ;1435 DMN 2-Oct-81 ; PASCAL library search and debugger support. ; Routines: LNKPAR,LNKLOD,LNKLOW,LNKERR,LNKWLD ;1436 PAH 2-Oct-81 ; Use the connected directory, not the logged-in directory, ; in the MYPPN global under TOPS-20. Fixes ALGOL symbol file ; lookup, which was broken by edit 1407. ; Routines: LNKINI ;1437 PAH 7-Oct-81 ; Defer detroying the LC overflow file under TOPS-20 until the ; last possible moment. ; Routines: LNKXIT ;1440 PAH 12-Oct-81 ; Apply edits 1120,1237 and 1240 to blocks in LNKNEW. ; Routines: LNKNEW ;1441 PAH 14-Oct-81 ; Now that LNKNSM is a nonfatal error be sure it returns properly. ; Routines: LNKLOD ;1442 PAH 19-Oct-81 ; Prevent the attempt to write out section-zero pages on the first ; call to LC.OUT when a nonzero-section program is being loaded. ; Also enforce some restrictions on nonzero-section programs. ; Routines: LNKCOR,LNKWLD,LNKLOW,LNKOLD,LNKLOD ;1443 PAH 28-Oct-81 ; Make sure LINK-10 doesn't have the program data vector .REL ; block code. ; Routines: LNKNEW ;1444 PAH 29-Oct-81 ; Make sure all new n-bit relocation blocks coexist with .HIGH. ; and .LOW. correctly. ; Routines: LNKNEW ;1445 PAH/DMN 3-Nov-81 ; Correct typo in POINT pseudo-op under T.1004 block support. ;1446 PAH 16-Nov-81 ; Fix bad dates in MAP files on the -20. ;1447 PAH 30-Nov-81 ; Move /MAXCODE code into LNKWLD so the -10 multiseg LINK ; builds again. ;1450 PAH 30-Nov-81 ; Define PRGFRK symbol for fork handle, build nonzero sections ; in own fork. ;1451 PAH 8-Dec-81 ; When searching PASLIB force load to low segment as default. ;1452 PAH 10-Dec-81 ; Lengthen LITYPE dispatch table to include all the new blocks. ; Also handle TWOSEG programs correctly if the highseg is ; considered to have psect index 2 in the new blocks. ;1453 PAH 17-Dec-81 ; Fix calculation of data block length in T.11XX. ;1454 PAH 21-Dec-81 ; Calculate default SYMLIM correctly. ;1455 PAH 21-Dec-81 ; Fix infinite loop in TTLLUP in LNKXIT. ; Modules: LNKXIT ;1456 PAH 8-Jan-82 ; Change to T.112X and T.113X block definition: only one ; relocation block word, since only three data words are ; relocatable. ; Modules: LNKNEW ;1457 PAH 15-Feb-82 ; Renamed to Edit 1470. ; ;1460 PAH 16-Jan-82 ; Turn off UUO simulation for programs in nonzero sections to avoid ; troubles with START and DDT EXEC commands and prevent any JOBDAT ; initialization. ; Modules: LNKXIT ;1461 PAH 19-Feb-82 ; Don't do an OPENF on the .EXE file JFN if an SSAVE JSYS is going ; to use it. ; Modules: LNKFIO ;1462 PAH 22-Feb-82 ; Add JOVIAL to list of known processors. ; Modules: LNKPAR ;1463 PAH 24-Feb-82 ; Restructure reading of the FXSPTR section-specific fixup data. ; Also don't lose the section number in doing Type 11 polish stores. ; Modules: LNKLOD, LNKOLD ;1464 PAH 25-Feb-82 ; Get the right window for the PDV when putting one in a non-zero ; section. ; Modules: LNKXIT ;1465 PAH 22-Mar-82 ; Change "Extended Fortran" to "G-Floating Fortran" in .MAP ; file output. ; Modules: LNKPAR ;1466 PAH 24-Mar-82 ; Don't lose section numbers in inter-psect references. ; Modules: LNKOLD ; Start of Version 5A ;1467 PAH 22-Feb-82 ; Correct typo at T1004C -- change D.IN1 call to D.CNT. ; Make D.CNT global. ; Modules: LNKNEW,LNKLOD ;1470 PAH 15-Feb-82 ; Prevent the address calculation in T.1S6 from turning on ; index register bits of a byte pointer if the address overflows. ; Also correct some stack discipline troubles in T.1004 block ; processing. ; Modules: LNKNEW ;1471 PAH 24-Mar-82 ; Remove use of PB.1 and T.11XX code from 1130 block support. ; Also restructure use of T.11XX coroutine for typechecking blocks, ; which have only one relocation word. ; Modules: LNKNEW ;1472 PAH 2-Apr-82 ; Don't truncate the last character of a six-character function ; name, and don't lose the char count. ; Modules: LNKNEW,LNKPAR ;1473 PAH 14-May-82 ; Make sure IFE/IFN FTFRK2 angle bracking is done to exclude ; extended addressing-related code on -10s and Model A -20s. ; Modules: LNKOLD ;1474 PAH 9-Apr-82 ; Count 2ndary argument descriptors properly when processing ; arg lists in ARGSCN. ; Modules: LNKLOD ;1475 PAH 9-Apr-82 ; Don't mark unknown subroutine or function names as global ; requests when storing the 2ndary symbol triplets for argchecking. ; Modules: LNKLOD ;1477 PAH 16-Apr-82 ; Bugfixes for special character fixup handling in typechecking code. ; Rewrite SY.TY2 to pick up the right descriptors, also save R in ; TMATCH. ; Modules: LNKLOD ;1500-1677 Maintenance-related Edits ; ;1500 PAH 12-May-82 ; Compute correct .REL file length if file size is given in ; less than 36-bit bytes. ; Modules: LNKFIO ;1501 PAH 14-May-82 ; Don't lose section number for PSECT relocation in T.11EV. ; Modules: LNKOLD ;1502 AHM 17-May-82 ; Suppress typeout of garbage symbol names in the %LNKFTH ; message. ; Modules: LNKOLD ;1503 AHM 17-May-82 ; Do thirty-bit relocation, not eighteen-bit relocation, ; on start addresses in type 1010-1034 blocks. ; Modules: LNKNEW ;1504 PAH 18-May-82 ; Fix typo at T.2+2 in LNKOLD that ruins 30-bit relocation of ; symbols. ; Modules: LNKOLD ;1505 AHM 18-May-82 ; Set correct upper bound for psects that can cross section ; boundaries -- currently off by one. ; Modules: LNKWLD ;1506 HD 27-May-82 ; Conditionalize UUOs and add JSYS calls where needed for handling ; the LS overflow and EXE files when building an overlay program. ; Modules: LNKXIT,LNKOV1 ;1507 PAH 2-Jun-82 ; Correct typo under TOPS20 conditional in DVCLS. ; Modules: LNKFIO ;1510 HD/PY 7-Jun-82 ; Test for include mode as well as library mode at LNKNEW+4. ; Modules: LNKNEW ;1511 HD 7-Jun-82 ; Don't destroy T1 unnecessarily. ; Modules: LNKFIO ;1512 AHM 16-Jun-82 ; Prevent MACRO programs with concatenated PSECTs from overlaying ; if the last selected default PSECT before the end of module is 0. ; Module: LNKOLD ;1513 HD 23-Jun-82 ; Don't destroy T1 at DVDLF. either. ; Modules: LNKFIO ;1514 HD 1-Jul-82 ; On the -20, don't BLT out mapped pages when shrinking area LC -- ; unmap them. ; Modules: LNKOV1 ;1515 PAH 26-Jul-82 ; Bracket out .NWBLK code in LNKMAP at TTLSRC until the problem with ; typeout of symbols for empty modules can be identified and fixed. ; Module: LNKMAP ;1516 PAH 27-Jul-82 ; Fix bad test at CHKRS0+3. ; Module: LNKXIT ;1517 PAH 27-Jul-82 ; Yank edit 1512, has bad side-effects. ; Module: LNKOLD ;1520 PY 29-JUL-82 ; Remove IFE TOPS20 Conditional around call to GBCK.L at LSREDU+17 ; to prevent certain large program form looping. This edit will be ; installed as a maintenance edit at a later date and given a ; maintenance edit number. ; Module: LNKCOR ;1521 HD 12-Aug-82 ; Get all of overlay links symbol table in .EXE file. ; Module: LNKXIT ;1522 PAH 16-Aug-82 ; Change JBGCM/JBGCMV to PMAP segments into place, instead of doing ; BLTs, on the -20. Cures missing pages when loading large programs. ; Module: LNKXIT ;1523 PAH 25-Aug-82 ; Remove code that sets PASDT% to zero before PASLIB search. ; Module: LNKLOD ;1524 PAH 25-Aug-82 ; Be sure PASDDT gets an entry in STLOCN specifying STADDR as the ; start address for PASCAL programs being debugged. ; Module: LNKXIT ;1525 PY 10-Sep-82 ; Adjust TAB.PT when overflowing LC or HC to disk. Solves problems ; if these areas overflow while symbols are being written. ; Module: LNKCOR ;1526 PY 28-Sep-82 ; Rewrite the TOPS-20 feature test files. Add edit history, ; remove debug switch from production version, add extended ; addressing and new rel block switches to debug version, and ; remove overlay feature test since it's the default. ; Modules: LNKT20, LNKD20 ;1527 PAH 9-Sept-82 FORTRAN ALPHA TEST QAR #20-03010 ; Save IO.CHN over the call to DY.GET in DVVRG2 so testing to see if ; the file being opened is an .EXE by checking IO.CHN still works. ; If paging begins during the DY.GET call, IO.CHN may get smashed and ; the bad channel number causes an ?I-O to Unassigned Channel error. ; Module: LNKFIO ;1530 PAH 15-Sept-82 FORTRAN ALPHA TEST QAR #20-0301? ; Use stack temporary space rather than asking for DY area space ; when constructing file names to avoid running out of storage when ; opening overflow files ( causing pushdown stack overflow. ; Module: LNKFIO ;1531 HD 7-Oct-82 FORTRAN ALPHA TEST QAR #20-03028 ; Check to see if the address being written to the .EXE file ; is before the current window and if so unmap the current ; window and map in the previous window. ** maintenance edit 1527 ** ; Modules: LNKXIT ;1532 PAH/HD 20-Oct-82 LINK 5.1 FIELD TEST QAR #10-04002 ; When shrinking a window remap the upper half of the window, not ; the lower half. Since this increases the odds of having written ; the JOBDAT into the .TMP overflow file but having some other part ; of the program mapped by the time the .EXE file writer is invoked, ; be sure to test JOBPTR, not LW.S1, when deciding whether to write ; the JOBDAT at XCMPRS. ; Modules: LNKXIT,LNKCOR ;1533 PY 22-Oct-82 ; Call LS.OUT to unmap LS pages when bringing in a new window ; in LNKMAP. Also remove code which BLTs the unused part of ; the window to zero. This prevents zeroing part of the LS ; overflow file. (TOPS-20 only). ; Module: LNKMAP ;1534 PAH 11-Nov-82 ; Save and refix TAB.PT(R) over the call to LNKCOR in SYMOU2. It ; is not updated correctly in LNKCOR if the area overflows and ; low free core makes it necessary to shrink the window. Edit 1525 ; cured most but not all of these cases. ; Module: LNKXIT ;1535 PAH 10-Dec-82 ; Complete the missing bits to implement the ERROR keyword to ; the /MAP switch: put a test in LNKLOG before giving up on ; fatal errors and fix LNKMAP so it doesn't simply EXIT when ; MAPSW=$MAPERR ; Modules: LNKMAP,LNKLOG ;1536 PAH 21-Dec-82 ; Have LINK-20 handle multi-section LS areas correctly, doing ; 30-bit arithmetic and comparisons when writing and reading ; .TMP files. ; Modules: LNKCOR, LNKXIT, LNKOLD. ;1537 PAH 21-Dec-82 ; Correct typo in edit 1506. ; Cures ?Illegal instruction on PMAPs. ; Modules: LNKOV1. ;1540 PY 22-Dec-82 ; Another case of zeroing the LS overflow file when ; generating a map. ; Routine: LNKMAP ;1541 PY 28-Dec-82 ; Fix some overlay related problems. Unmap and close ; overflow files when deleting them. Handle more than ; 400000 octal words of symbols in an overlay better. ; Routines: LNKFIO, LNKMAP, LNKOV1 ;1542 PAH 25-Jan-83 ; Don't add NONZER into a 30-bit address. ; Module: LNKCOR ;1543 PAH 25-Jan-83 ; LS.IN and LS.OUT should not use EXTFLG, it causes ; ?LNKMEF and attempts to create section 0 when programs ; are loaded into nonzero sections and the LS area overflows. ; Module: LNKCOR ;1544 HD 28-Jan-83 ; When sending overlay plots to LPT: correct calculations for ; end of a buffer. Change SETZ DIGITS to SETZM DIGITS ; at DECPLT ; Module: PLTIO ;1545 PY 1-Feb-83 ; Add couple missing continuation bits to errors which reference ; .ETIMF so the module name will be typed out on those errors. ; Routine: LNKLOD ;1546 HD 3-Feb-83 ; Change the macro for user defined libraries at SETUSE+17 so that ; it use a compiler type bit and not a compiler type code. ; Routine: LNKINI ;1547 PAH 14-Mar-83 SPR #20-18906 ; Replaces edit 1500. Fixes two cases edit 1500 did not handle ; right: zero bytesize and bytesizes that don't divide into ; 36 neatly. ;1700 PAH 17-May-82 ; Move FOROTS origin to 500000 for FORTRAN V6 and beyond. ; Modules: LNKPAR ;1701 PAH 19-May-82 ; Correct typo introduced during merge of V5A sources in T.1130. ; Modules: LNKNEW ;1702 HD 19-May-82 ; Don't put a triplet with a spurious value into the LS area ; when a previously-unknown symbol is seen in association with ; a typechecking block. ; Modules: LNKLOD ;1703 PAH 27-May-82 ; Deallocate unneeded typechecking triplets. Also permit searching ; bound globals for overlaid programs doing typechecking. ; Modules: LNKLOD ;1704 PAH 2-Jun-82 ; Add code to handle type 1045 blocks and to write the writable ; overlay table in the .OVL file. ; Modules: LNKOV1,LNKOV2,LNKNEW,LNKLOW ;1705 PAH 2-Jun-82 ; Treat /DEBUG:PASDDT like /DEBUG:FORDDT. ; Modules: LNKWLD ;1706 PAH 7-Jun-82 ; Accept COMMONs in type 1045 blocks and set all ancestral links ; writable. ; Modules: LNKNEW ;1707 PAH 8-Jun-82 ; Correct typo in edit 1706. ; Modules: LNKNEW ;1710 PAH 8-Jun-82 ; Don't miss marking the last writable link in a load. ; Modules: LNKOV1 ;1711 PAH 10-Jun-82 ; Put CHKCHX routine under the FTFRK2 conditional. ; Modules: LNKLOD ;1712 PAH 16-Jun-82 ; Call WRTPTR not WRTDAT at T1045C+3. ; Modules: LNKNEW ;1713 AHM 16-Jun-82 ; Add long explanation for the LNKNHN message. ; Modules: LNKERR ;1714 AHM 16-Jun-82 ; Defer updating RC.CV until end of module. ; Modules: LNKNEW ;1715 AHM 16-Jun-82 ; Avoid exceeding a PSECT limit. ; Modules: LNKOLD ;1716 AHM 16-Jun-82 ; Correct type 1070 block relocation. Also speed up the loops. ; Modules: LNKNEW, LNKOLD ;1717 AHM 16-Jun-82 ; Correctly relocate Type 1070 symbol definitions. ; Modules: LNKOLD ;1720 AHM 16-Jun-82 ; Correct typo at REL.TB+2L causing wild transfer of control. ; Modules: LNKNEW ;1721 AHM 16-Jun-82 ; Streamline space allocation for PSECTs being loaded using ; Type 101X blocks. ; Modules: LNKNEW ;1722 AHM 16-Jun-82 ; Don't lose right half relocation when the left half of the ; data word is absolute, at RLADD. ; Modules: LNKNEW ;1723 PAH 17-Jun-82 ; Don't typecheck on nonexistent arguments if there's a mismatch ; between caller and function in number of arguments but this ; isn't to be treated as an error. ; Modules: LNKLOD ;1724 PAH 18-Jun-82 ; Add a new action code to the coercion block handling. Code 4 is ; a no-op and suppresses even information-class messages about a ; particular attribute mismatch. ; Modules: LNKLOD ;1725 PAH 19-Jun-82 ; Change references to Extended FORTRAN to be GFloating FORTRAN. ; Modules: LNKLOD,LNKERR ;1726 AHM 19-Jun-82 ; Don't lose the last word in a 1010 block. Also minor changes ; for speed. ; Modules: LNKNEW ;1727 AHM 19-Jun-82 ; Use RC.CV not RC.IV of the relocation block when calculating ; the first address into which data should be loaded. ; Modules: LNKNEW ;1730 PAH 22-Jun-82 ; Add code to type 101X block processing to deal with overlays ; and to test limits. ; Modules: LNKNEW ;1731 PAH 22-Jun-82 ; Make TOOBIG and T.1OVE global so they can be called from LNKNEW. ; Edit 1730 needs this edit. ; Modules: LNKOLD ;1732 AHM 22-Jun-82 ; Fix ?LNKIVC that may occur when processing deferred fixups for ; a nonzero section. ; Modules: LNKLOD ;1733 AHM 22-Jun-82 ; Suppress unnecessary typeout of ?LNKFTH message for section-local ; references and don't miss truncation of negative numbers with ; more than a halfword of precision. ; Modules: LNKLOD ;1734 PAH 23-Jun-82 ; Edit 1733 put a free -1 in the left half for all deferred right ; half fixups...this edit corrects that. ; Modules: LNKLOD ;1735 PAH 23-Jun-82 ; Correct typo introduced installing edit 1733. ; Modules: LNKLOD ;1736 PAH 25-Jun-82 ; Strip all FMXFOR code, this is desupported. ; Modules: LNKPAR,LNKOLD,LNKWLD,LNKLOW,LNKLOD,LNKINI ;1737 AHM 25-Jun-82 ; Some final fixups in nonzero sections which have been deferred ; because the chain wanders out of the window are never done. ; Modules: LNKLOD ;1740 AHM 25-Jun-82 ; Don't try to create the lower section if the window falls across ; a section boundary when doing fixups. ; Modules: LNKLOD ;1741 AHM 25-Jun-82 ; Don't add in a section number if the address already has one at ; SEGCK4. ; Modules: LNKLOD ;1742 AHM 25-Jun-82 ; Don't lose the section number when doing type 1004 blocks. ; Modules: LNKNEW ;1743 PAH 29-Jun-82 ; Correct typo in edit 1724. ; Modules: LNKLOD ;1744 hd 8-JUL-82 ; Suppress loading if there are compilation errors ; with the EXECUTE command ; Modules: LNKINI ;1745 PAH 12-Jul-82 ; In T.1045, preserve the contents of T4 across the call to DY.GET. ; Modules: LNKNEW ;1746 PAH 12-Jul-82 ; Don't give an error message if, while doing a type 3 character fixup ; for typechecking, it is noticed that the argument is a character ; expression or variable. ; Module: LNKLOD ;1747 HD 13-JUL-82 ; Reserve 10(octal) location at GLBBEG for global symbols needed for ; maintenance edits ; Module: LNKLOW ;1750 PAH 15-Jul-82 ; Move origin of LINK-10 up to 540000. ; Module: LNKPAR ;1751 PAH 19-Jul-82 ; Type out argument number in decimal for all the typechecking ; messages. ; Module: LNKLOD ;1752 HD 21-JUL-82 ; Have map file state if an overlay is Relocatable, Absolute, Writable. ; Module: LNKMAP ;1753 PAH 21-Jul-82 ; Make the error LNKCMX into a warning. ; Module: LNKLOD,LNKERR ;1754 PAH 27-Jul-82 ; Type 1072 block support. ; Module: LNKNEW,LNKPAR,LNKLOW ;1755 PAH 28-JUL-82 ; Put back -10 specific code at LHSET0 cures an ?ill mem ref ; from GBCK.L. But put a loop test in GBCK.L to prevent this ; kind of failure anyway ; Module: LNKCOR ;1756 AHM 29-JUL-82 ; Make PSECT breaks keep their section number during relocation ; Module: LNKOLD ; ;1757 AHM 29-JUL-82 ; Correct an off by one error in the calculation of the last word of ; PDV in edit 1423 ; Module: LNKXIT ;1760 AHM 29-JUL-82 ; Keep the section number in the last word of the PDV ; Module: LNKXIT ;1761 AHM 29-JUL-82 ; Keep the section number of start addresses during relocation ; Module:LNKOLD ;1762 AHM 29-JUL-82 ; Don't throw away PDV prematurely so that start address for programs in ; non-zero sections get set correctly ; Module: LNKXIT ;1763 AHM 29-JUL-82 ; Add one to the size of the fixup chain table when it is being ; deallocated. ; Module: LNKCOR ;1764 AHM 29-JUL-82 ; Make entry vectors work in non-zero sections ; Module: LNKOLD,LNKLOW,LNKXIT ;1765 PAH 2-Aug-82 ; Put the non-extended-addressing code back at T.7 ( was removed ; by edit 1764 ). ; Module: LNKOLD ;1766 HD 11-Aug-82 ; Remove a line of code at T.23+3 that was inserted in edit 1715. ; Module: LNKOLD ;1770 HD 11-Aug-82 ; Change a JRST CPOPJ to a POPJ P, at TSTSEG+5 ; Module: LNKNEW ;1771 HD 11-Aug-82 ; Add 1 to T2 at to get the last word of the fixup chain table ; corrects a deficiency in edit 1763 ; Module: LNKCOR ;1772 HD 11-AUG-82 ; Make conditionals inserted in 1765 TOPS20 not FTFRK2 conditionals ; Modules:LNKOLD, LNKLOW ;1773 HD 12-AUG-82 ; Supply the start address for XSVEC% in JBEX1A ; Modules:LNKXIT ;1774 PAH 12-Aug-82 ; Turn .NWBLK conditional in LNKPAR on by default. ; Modules: LNKPAR ;1775 HD 13-Aug-82 ; fix edit 1764 so that absolute start addresses work ; Modules: LNKOLD ;1776 PAH 20-Aug-82 ; Restructure T.1AD and those routines using it. ; Modules: LNKOLD,LNKNEW ;1777 HD 15-Sept-82 ; Fix type checking for case where caller's argument descriptor and ; function argument descriptor are not both in LINK's current window. ; Modules: LNKLOD ;2000 PAH 6-Oct-82 ; Do not try to return the storage pointed to by PDVPRV if there ; is none. Cures ?LNKRUM from nonzero-section programs without ; program data vectors. ; Modules: LNKXIT ;2001 PAH 12-Oct-82 ; Make sure T3 contains the pointer to the right typechecking triplet ; before calling RTSECT to return it. Cures return to free storage of ; formal descriptors, which should never happen. ; Modules: LNKLOD ;2002 PY 13-Oct-82 ; Implement the /PLTTYP switch to allow selection of printer ; or plotter style overlay plots. ; Routines: LNKPAR, LNKLOW, LNKOV1, LNKPLT ;2003 PAH ; Make ?LNKCCD a warning, not an error. ; Routines: LNKOLD ;2004 PY/PAH ; Add rewritten LNKD20 and LNKT20 parameter files. ; Routines: LNKD20,LNKT20 ;2005 PY 1-Nov-82 ; Improve argument checking and coercion. Add code to type ; the caller's module name in errors. Rework error code, add ; LNKAMM, LNKLMM, LNKNVR, LNKPMA, LNKTMM, LNKURV, and LNKWNA ; messages to specify the type of mismatch. Add code to handle ; secondary descriptors. Special case return values which must ; only be checked against other return values. Add an implicit ; bit needed by FORTRAN. Comment the offsets in the parameter ; file. Add supporting code for variable severity messages. ; Routines: LNKPAR, LNKERR, LNKLOD, LNKLOG, LNKNEW ;2006 PY 8-Nov-82 ; Fix a few problems related to PDVs, entry vectors, and ; extended addressing. Allow PDVs to cross page boundaries. ; Use a SEVEC instead of an XSVEC% in section zero. Use a length ; of 1 instead of JRST as default when not in section zero. Zero ; the entry vector length when using the /START switch. ; Routines: LNKWLD, LNKXIT ;2007 PY 9-Nov-82 ; Add long error messages for LNKFTH, LNKTML, LNKUCB. ; Routines: LNKERR, LNKLOD, LNKNEW, LNKOV1 ;2010 PY 9-Nov-82 ; Fix incorrect byte pointer parameter which causes ; errors when type checking secondary descriptors. ; Routine: LNKPAR ;2011 PY 9-Nov-82 ; Move /PLTTYP to LNKWLD so it can be used before /PLOT. ; Routines: LNKOV1, LNKWLD ;2012 PY 9-Nov-82 ; Although formal,,actual do not mean much when referring ; to a function return, make the coersion block use the ; order called-routine,,caller to be consistent. Also ; handle -1 properly. ; Routine: LNKLOD ;2013 PY 10-Nov-82 ; Fix /NOSYSLIB, broken by edit 1225. ; Routine: LNKLOD ;2014: PY 11-Nov-82 ; Fix NUL: ; Routine: LNKFIO ;2015 PY 12-Nov-82 ; Preserve the length of the function name accross calls ; to TMATCH, since it clobbers it but needs it correct ; every time it's called. ; Routine: LNKLOD ;2016 PY 12-Nov-82 ; Fix /PVBLOCK:HIGH, and cases where the PDV contains the ; only non-zero words on the page. ; Routine: LNKXIT ;2017 PY 18-Nov-82 ; Add parameter which indicates the number of words to allocate ; for the ASCIZ representation of a TOPS-10 filespec on TOPS-20. ; Routines: LNKPAR, LNKFIO ;2020 PY 7-Dec-82 ; Instead of using one GS secondary triplett for each typechecking ; block, chain them together and use only one GS secondary for all ; typechecking for a symbol. Reduces fragmenting of the GS area. ; Routines: LNKPAR, LNKLOD, LNKNEW ;2021 PY 13-Dec-82 ; If the LC or HC areas overflow but a .EXE file is not needed ; make the pages in the overflow file private. ; Routine: LNKXIT ;2022 PAH 28-Dec-82 ; Tighten up termination conditions for the loop at T1045C in LNKNEW. ; Cures ?Ill mem reads amd writes when FORTRAN overlays are built. ; Routine: LNKNEW. ;2023 HD 29-Dec-82 ; If a PMAP fails with a Quota Exceeded violation try expunging the ; directory and the retry the PMAP. ; routines:LNKCOR,LNKXIT. ;2024 HD 6-Jan-83 ; Fix edit 2024 and typo in edit 1536. ; Routines: LNKCOR,LNKXIT ;2025 PAH 6-Jan-83 ; At FOR.L0, define FOROT% as 400010 rather than using the ; OTSTBL value for FORTRAN. Fortran v6 and v7 FORLIB doesn't ; use this symbol for an OTS transfer vector base, but FORTRAN ; v5A libraries need it. ; Routines: LNKLOD ;2026 PAH 6-Jan-83 ; Clean up the listings for release. Update all copyright notices. ; Remove all edit banners. ; Routines: All ;2027 HD 7-Jan-83 ; Conditionalize PMAP error code in LNKXIT ; Routines: LNKXIT ;2030 PAH 20-Jan-83 ; Shorten copyright statement in executable files and ; move it to the high segment. ;2031 PY 27-Jan-83 ; Don't set the writable overlay bit when processing type 1045 ; blocks (FORTRAN SAVE statement) unless actually doing an ; overlay load. Prevents undesirable searching of OVRLAY.REL ; Routine: LNKNEW ;2032 PY 3-Feb-83 ; Allocate space in the LC overflow file before reading the ; root node back in under TOPS-20. ; Routine: LNKXIT ;2033 PY 14-Feb-83 ; Allow a page, rather than a disk block of overlap when ; Copying the LS overflow area into the overlay temporary ; file under TOPS-20, since the core manager no longer ; allows LW.LS to be on a disk block boundary. ; Routine: LNKOV1 ;2034 PY 17-Feb-83 ; Fix bug in TOPS-20 code which tests for .IODMP instead ; of .IODPR, and remove edit 1531 which attempted to fix ; the symptoms of this problem. ; Routines: LNKFIO, LNKXIT ;2035 PY 17-Feb-83 ; Don't map in non-existant pages at JBGMV0 copy-on-write, ; because then they cannot be created as private pages. ; Fixes Illegal memory READ at JBGMV1. ; Routine: LNKXIT ;2036 PY 28-Feb-83 ; Fix up support for JOVIAL compiler type, add ADA compiler ; type. ; Routine: LNKPAR ;2037 PY 12-Apr-83 SPR 10-33725 ; Fix an ILL-MEM-REF when there is no additive fixup, and ; there is an extended symbol which is the last thing in ; the GS area. ; Routine: LNKLOD ;2040 PY 13-Apr-83 ; If LSYM is on a page boundary, and the LS area is ; paging, SYMINI can get confused because LSYM is ; pointing to a page which has never been written. ; It will try to LS.OUT out the wrong pages, and will ; PMAP away everything from the top of the LS area to ; the end of section zero (and part of section one). ; Routine: LNKXIT ;2041 PY 22-Apr-83 ; Increase LN.FL, which is the size of an ASCIZ ; filespec. Prevents clobbering the stack when an ; explicit PPN is given which translates to a very ; long directory specification. ; Routine: LNKPAR ;2042 PY 2-Jun-83 SPR 10-33916 ; Protect pointers to the LC and GS areas when ; calling TR.WLK, since that routine calls DY.GET ; which may move those areas. ; Routine: LNKOV2 ;2043 HD 12-Jul-83 SPR 20-19327 ; Prevent JBEXE1 form calling BLTJDA if JOBPTR is zero. BLTJDA tries ; to return DY area that it doesn't have causing LINK to die with a ; LNKRUM error. ; Routine: LNKXIT ;2044 PY 13-Jul-83 SPR 20-19374 ; Always map out the window in CNA.LS under TOPS-20. ; It is always mapped when expanding the LS area ; during the LNKCOR call. Also, map the page after ; top of the area, not the top page of the area. ; Routine: LNKCOR ;2045 PY 24-Jul-83 SPR 20-19403 ; Fix typechecking code to not destroy the first ; secondary triplet if it is not an argchecking ; triplet. ; Routine: LNKLOD ;2046 PY 24-Jul-83 ; Occasionally garbage collect the DY area if ; many typechecking blocks have been returned. ; Routines: LNKPAR, LNKLOW, LNKLOD ;2047 PY 29-Aug-83 ; Remove some code which tries to force common block ; data into the high segment when loading /SEG:HIGH. ; It will go there if it is supposed to because the ; address of the common block will be in the high seg. ; Routine: LNKOLD ;2050 JBS 6-Oct-83 ; Make ?LNKSUP message appear in column 1 for batch jobs. ; Fix to edit 1744. ; Routine: LNKINI ;2051 JBS 31-Oct-83 ; Fix bug where if user didn't have access to first directory in ; DSK:, LINK would say "send an SPR". ; Routine: LNKCOR ;2052 JBS 1-Nov-83 ; Don't die when making the .EXE file if LINK doesn't have write ; access to the directory. ; Routine: LNKXIT ;2053 PY 8-Nov-83 ; Make argument checking and the character fixup work ; across overlays and segments. ; Routines: LNKPAR, LNKLOW, LNKLOD, LNKOV1, LNKOV2 ;2054 PY 16-Nov-83 ; Don't forget the LS overflow area just because it all fits ; in memory, as it may be mapped on the -20. ; Routine: LNKXIT ;2055 PY 16-Nov-83 ; Put the number of words desired in the correct accumulator ; before calling DY.GET. Eliminates potential ?LNKRUM ; Routine: LNKXIT ;2056 JBS 2-Dec-83 ; Print LNKXCT message when executing programs in non-zero sections. ; Routine: LNKXIT ;2057 JBS 25-Jan-84 ; Don't go into infinite loop if symbol table is fouled up at T.5LP. ; Routine: LNKOLD ;2060 HD 1-Feb-84 SPR# 10-34488 ; Set up PPN and PATH, block if necessary, for RUN UUO at RUNEX2. Store ; information where it won't get lost when core shrinks. ; Routine: LNKXIT ;2061 HD 13-Feb-84 ; Fix typo in edit 2060. ; Routine: LNKXIT ;2062 PY 6-Mar-84 ; Set up dummy entries for TYP.BG and COEOVL for multiple high segment ; LINK. ; Routine: LNKSUB ;2063 HD 6-Mar-84 ; Increase the value of .TLEN to 100 so that .TEMP will be large enough ; to hold a path block. ; Routine: LNKLOW ;2064 PAH 23-Mar-84 SPR #10-34493 ; Zero P1 in T11CHR/T11CHL/T11CHF before calling SY.CHR/SY.CHL/SY.CHF ; from the T.11 code to avoid HALT from testing flag bits in a ; nonexistent fixup block in RT.FX when loading relocatable overlays. ; Routine: LNKOLD ;2065 PY 28-Mar-84 SPR 10-34610 ; Test RC.HL for .ABS. against zero, not 140 when computing the correct ; value for LOWLOC in CHKLLC. ; Routine: LNKLOD ;2066 JBS 7-May-84 ; Fix 2060 to get PPN from right place and check for default [0,0]. ; Routine: LNKXIT ;2067 JBS 10-May-84 ; Fix edit 2014 for NUL:. Was POPJing to data and blowing up. ; Routine: LNKFIO ;2070 HD 17-May-84 ; Check only the right half of .JBERR to determine whether or not to ; suppress loading. Conditionalize .SGNAM. ; Routines: LNKINI, LNKXIT ;2071 JBS 21-May-84 ; Remove OPDEFs of JSYSes and .GTxxx bits, remove definitions of PDV ; entry names (all of these are in .UNV files). ; Routines: LNKPAR, LNKSCN ;2072 PAH 19-Jul-84 ; Fix two bugs in the 102X block processor: first, skip the first ; relocation byte in a 102X block when picking up the relocation ; for the start address and subsequent data. Second, fix a typo ; that stores the relocated data in the wrong halfword. ; Routines: LNKNEW ;2073 PY 20-Jul-84 SPR 20-20272 ; Add the table base, not the pointer to it, when doing ; FORTRAN save. Eliminates LNKPEL, LNKOLC, and other ; errors in programs with more than 18 overlays. ; Routine: LNKNEW ;2074 PY 14-Aug-84 ; Calculate the window size correctly when the window ; crosses a page in PG.MOV. ; Routine: LNKLOD ;2075 HD 12-Sept-84 ; Remove .SGNAM, .SGPPN, and .SGDEV from the code and add a fatal ; error message if the GETTAB fails. ; Routine: LNKINI ;2076 HD 8-Oct-84 SPR# 10-34915 ; Fix check in %PLOT for previously seen file spec so that LNKINS error ; does not occur if /MAP and /PLOT occcur on the same command line. ; Routine: LNKOV1 ;2077 HD 2-Nov-84 SPR# 10-34930 ; Set RC.HL during processing of /NEWPAGE so PAT.. and/or symbol table ; starts on page boundary. ; Routine: LNKWLD ;2100 HD 10-Dec-84 ; Add long error text for LNKUSB error. ; Routine: LNKERR ;2101 JBS 17-Dec-84 ; Fix off-by-one loop bug in "DVDPB.". ; Routine: LNKFIO ;2102 PAH (Superceded in LINK 6.0) ; Fix off-by-one byte pointer that results in bad FORTRAN character ; data initialization if the string in the .REL file falls exactly ; on a multiple of ten pages. ; Routine: LNKNEW ;2103 PAH 8-Feb-85 ; Detect structure mismatches when typechecking. ; Routines: LNKPAR, LNKLOD ; Start of Version 6 ;2200 PY 22-Nov-83 ; 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 PY 30-Nov-83 ; Use the correct deferred fixup for the fullword replacement ; store operator in the type 11 polish block. ; Routine: LNKOLD ;2202 PY 8-Dec-83 ; 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 PY 14-Dec-83 ; 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 PY 16-Dec-83 ; Don't lose the section number when doing type 10 fixups in ; non-zero sections. ; Routine: LNKOLD ;2205 PY 20-Dec-83 ; 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 JBS 27-Dec-83 ; Set read-only attributes correctly for non-zero section psects. ; Routine: LNKXIT ;2207 PY 27-Dec-83 ; Make psect indices consistent between old and new style REL blocks. ; Routines: LNKINI, LNKOLD ;2210 HD 4-Jan-84 ; Reserve a static storage area in the low seg to hold long symbol names ; for calls to TRYSYM. ; Routines: LNKPAR, LNKLOW ;2211 JBS 4-Jan-84 ; Add /NOJOBDAT switch to suppress all of JOBDAT (hiseg too). Revise ; automatic JOBDAT suppressor to check FXSBIT, not EXTFLG. ; Routines: LNKPAR, LNKXIT, LNKLOW, LNKWLD ;2212 PY 9-Jan-84 ; Fix the type 1072 long polish block. ; Routines: LNKPAR, LNKERR, LNKLOD, LNKNEW, LNKOLD ;2213 PY 10-Jan-84 ; Fix off by one bug when setting the section bits in FXSBIT. ; Routine: LNKCOR ;2214 PY 11-Jan-84 ; 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 PY 13-Jan-84 ; 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 PY/HD 18-Jan-84 ; 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 HD 26-Jan-84 ; 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 PY 26-Jan-84 ; 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 HD 27-Jan-84 ; Remove a HLL at COESP2+4 so that the section number is not destroyed ; and the call to SGCHK. works. ; Routine: LNKLOD ;2222 PY 30-Jan-84 ; 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 ; set wrong for new psects with the /SET switch. ; Routines: LNKERR, LNKNEW, LNKOLD, LNKWLD ;2223 PY 1-Feb-84 ; Implement /REDIRECT and rel block 1131. ; Routines: LNKPAR, LNKLOW, LNKNEW, LNKOLD, LNKWLD ;2224 PY 7-Feb-84 ; 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 PY 7-Feb-84 ; Fix /PVDATA:VERSION:SYMBOL, broken by edit 2220. ; Routine: LNKWLD ;2226 PY 10-Feb-84 ; 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 PY 14-Feb-84 ; 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 PY 15-Feb-84 ; 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 PY 16-Feb-84 ; Fix typo in edit 2223 which causes ?LNKRUM if more than one ; type 1131 block is seen. ; Routine: LNKNEW ;2232 JBS 22-Feb-84 ; Expand edit 2211 to not touch .JBREL if user said /NOJOBDAT. ; Routine: LNKXIT ;2233 PY 22-Feb-84 ; Make sure that RC.CUR is non-zero if psects have been seen. ; Routine: LNKOLD ;2234 PY 23-Feb-84 ; Fix /PVDATA:VERSION:CONSTANT, broken by edit 2220. ; Routine: LNKWLD ;2235 PY 23-Feb-84 ; Give a fatal error if a user attempts overlays in non-zero ; sections. ; Routines: LNKOV1, LNKCOR, LNKERR ;2236 PY 24-Feb-84 ; Don't mess up the stack with long names in the type ; 1131 block. ; Routine: LNKNEW ;2237 JBS 24-Feb-84 ; Implement PDV memory maps. ; Routines: LNKXIT, LNKLOW, LNKPAR ;2240 PY 1-Mar-84 ; 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 JBS 7-Mar-84 ; Setup P1 and P2 even if /NOJOBDAT was specified. Affects DEBUG. ; Routine: LNKXIT ;2242 PY 28-Mar-84 ; Create sections for psects, even if nothing has been ; stored in them. ; Routines: LNKCOR, LNKLOD ;2243 PY 5-Apr-8