Trailing-Edge
-
PDP-10 Archives
-
ap-c796e-sb
-
link.bwr
There are 17 other files named link.bwr in the archive. Click here to see a list.
March 1978
COPYRIGHT (C) 1976,1978 BY
DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
TRANSFERRED.
THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
CORPORATION.
DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
This file contains last minute information and warnings relevant
to the LINK v4 release. All bug fixes discovered since the software and
the DOC file were submitted for distribution are listed in here. This
file serves as additional information to LNK4.DOC. Users should refer
to LNK4.DOC (especially, the known problems and deficiencies section)
for full information.
1.
SYMPTOM: User gets error messages about "mixing KA and KI code"
from LINK, when running on KL, and thus loading KL code.
This will occur when loading subprograms produced by
COBOL v12.
SOLUTION: See filcom below:
Add 1 instruction "MOVE P2,T1" at CPUTST+6.
Change 1 instruction at CPUKA:: to:
TXNN T4,KIBIT!KLBIT ;[766]CANNOT HAVE BOTH KA10 AND KI10
File 1) DSK:LNKLOD.MAC created: 1525 09-MAR-1978
File 2) S:LNKLOD.MAC created: 0829 08-MAR-1978
1)1 DECEVR==766 ;DEC EDIT VERSION
1) VERSION
****
2)1 DECEVR==765 ;DEC EDIT VERSION
2) VERSION
**************
1)4 ;START OF LINK V4A
1) ;766 Return cpu table offset in P2 from routine CPUTST.
1)5 SUBTTL LOAD CONTROL
****
2)5 SUBTTL LOAD CONTROL
**************
1)58 MOVE P2,T1 ;[766] OFFSET NEEDED IN P2 AFTER RETURNED
1) JRST @CPUTBL(T1) ;[752] DISPATCH TO RIGHT TEST
****
2)58 JRST @CPUTBL(T1) ;[752] DISPATCH TO RIGHT TEST
**************
1)58 CPUKA:: TXNN T4,KIBIT!KLBIT ;[766]CANNOT HAVE BOTH KA10 AND KI10
1) POPJ P, ;OK
****
2)58 CPUKA:: TXNN T4,KIBIT ;CANNOT HAVE BOTH KA10 AND KI10
2) POPJ P, ;OK
**************
2.
SYMPTOM: When loading programs with large array or large
allocated space(greater than 128k), LINK goes into a loop.
SOLUTION: Clear P2 (which contains core expansion requirement) before
doing the forced dump of lc area in T.1LOW (routine to
update lowest code location; will cause dump of current
window if unnecessary core expansion is requested). LC.DMP
routine will return through LNKCOR. If P2 is not cleared
LNKCOR will try to allocate core.
See following filcom for code change--Change one instruction
at T.1LOW+12:
File 1) DSK:LNKOLD.MAC created: 1538 09-MAR-1978
File 2) S:LNKOLD.MAC created: 1335 01-MAR-1978
1)1 DECEVR==767
1) ;LOCAL ACC DEFINITIONS
****
2)1 DECEVR==765
2) ;LOCAL ACC DEFINITIONS
**************
1)4 ;START OF LINK V4A
1) ;767 Fix a bug to prevent LINK from looping when forced dump of lc is done.
1) COMMENT \
****
2)4 COMMENT \
**************
1)11 SETZ P2, ;[767][732] NO EXPANSION, PREVENT LOOPING
1) PUSHJ P,LC.DMP## ;[742] FORCE CURRENT WINDOW TO DISK
****
2)11 SETZ P3, ;[732]
2) PUSHJ P,LC.DMP## ;[742] FORCE CURRENT WINDOW TO DISK
**************
3.
SYMPTOM: "Core Expansion Error" from LINK, when the undefined symbol
table is to be loaded following a big gap(space with no code)
by means of /SYMSEG:PSECT:name, where "name" is a psect-name
created strictly to place symbol table at a specific address.
SOLUTION: Changes were made in the routine UDF0 (Undefined symbol table
output routine) in LNKXIT to properly page to disk for the
first time if core expansion and shuffling failed.
File 1) DSK:LNKXIT.MAC created: 1101 17-MAR-1978
File 2) S:LNKXIT.MAC created: 1003 03-MAR-1978
1)1 DECEVR==770 ;DEC EDIT VERSION
1) VERSION
****
2)1 DECEVR==765 ;DEC EDIT VERSION
2) VERSION
**************
1)4 ;770 Add code to allow first-time paging in und-symbol table routine.
1)5 SUBTTL ENTER HERE
****
2)5 SUBTTL ENTER HERE
**************
1) ;**;[770] Add 1 instr. at UDF0A +1
1)10 PUSHJ P,CHKPAG ;[770] INCASE PAGE FOR THE FIRST TIME
1) MOVE P4,PATSPC ;NEED TO LEAVE A HOLE FOR PATCHING
****
2)10 MOVE P4,PATSPC ;NEED TO LEAVE A HOLE FOR PATCHING
**************
1) ;**;[770] Swap 2 instrs. at UDF0A+6 and UDF0A+7
1)10 SUB P2,LW.S0(R) ;[770] REMOVE WINDOW OFFSET
1) ADD P2,TAB.LB(R) ;[770] IN CORE
1) CAMG P2,TAB.AB(R) ;ENOUGH CORE?
****
2)10 ADD P2,TAB.LB(R) ;IN CORE
2) SUB P2,LW.S0(R) ;REMOVE WINDOW OFFSET
2) CAMG P2,TAB.AB(R) ;ENOUGH CORE?
**************
1: ;**;[770] Add 1 instr. @UDF0A+14
1)10 SETOM LS.PP ;[770] PREVENT OVERFLOW OF LS AREA
1) PUSHJ P,LNKCOR## ;GET IT
1) ;**;[770] Replace 1 instr @ UDF0A+15 by 2 instrs.
1) JRST [MOVE P2,USYM ;[770] NO CORE, LOOP BACK AND PAGE
1) JRST UDF0A] ;[770]
1) SKIPN TAB.PG(R) ;[570] PAGING?
****
2)10 PUSHJ P,LNKCOR## ;GET IT
2) PUSHJ P,NO.COR## ;TOTAL FAILURE
2) SKIPN TAB.PG(R) ;[570] PAGING?
**************
1) ;**;[770] Delete 1 instr @ UDF0B
1)10 UDF0B: MOVE P2,P4 ;RELATIVE
1) ADD P2,TAB.LB(R) ;FIX IN CORE
1) SUB P2,LW.S0(R) ;REMOVE WINDOW OFFSET
1) ;**;[770] Add 1 instr @ UDF1
1) UDF1: SETZM LS.PP ;[770] CLEAR IT
1) SKIPGE SYMSEG ;[715] PSECT NAME USED?
1) JRST .+3 ;[715] YES, JUMP
****
2)10 UDF0B: PUSHJ P,CHKPAG ;[570] JUST INCASE WE STARTED PAGING
2) MOVE P2,P4 ;RELATIVE
2) ADD P2,TAB.LB(R) ;FIX IN CORE
2) SUB P2,LW.S0(R) ;REMOVE WINDOW OFFSET
2) UDF1: SKIPGE SYMSEG ;[715] PSECT NAME USED?
2) JRST .+3 ;[715] YES, JUMP
**************
4.
SYMPTOM: User gets ILL. INSTR. message from LINK when loading
a large program (> 128k) and shuffling of large core
segment is done. Edit 720 was added original to fix
a problem in building the ARPA monitor. In the release
version of LINK, that edit was broken and the code
change below is required. (ARPA TOPS20 monitor builder
take note).
SOLUTION: Add "PUSH P,T2" and "POP P,T2" back in MOVUP (routine
to move a segment of code upward in LINK's space), so that the
value [CHUNK1,,0] may be pushed onto the stack safely and
cause the POP to be executed twice restoring the stack to
before entering the routine.
File 1) DSK:LNKCOR.MAC created: 1657 21-MAR-1978
File 2) F:LNKCOR.MAC created: 1459 01-MAR-1978
1)1 DECEVR==771 ;DEC EDIT VERSION
1) SALL
****
2)1 DECEVR==765 ;DEC EDIT VERSION
2) SALL
**************
1)3 ;771 Fix bug with getting ILL. INSTR. mssg when shuffling largE core segment.
1)4 SUBTTL SIMPLE TESTS FIRST
****
2)4 SUBTTL SIMPLE TESTS FIRST
**************
1) ;**;[771] Add 1 instr. @ MOVUP1
1)14 PUSH P,T2 ;[771] SAVE WHO WE ARE
1) MOVE T4,TAB.AB(T2) ;TOP
****
2)14 MOVE T4,TAB.AB(T2) ;TOP
**************
1) ;**;[771] Add 1 instr. @ POPLP+2
1)14 POP P,T2 ;[771] CHECK TOP OF THE STACK
1) CAMN T2,[CHUNK1,,0] ;[720] DOING 2 STEPS?
****
2)14 CAMN T2,[CHUNK1,,0] ;[720] DOING 2 STEPS?
**************