Google
 

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?
**************