Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99g-bb - lnklod.c08
There is 1 other file named lnklod.c08 in the archive. Click here to see a list.
 REP 2/1	;08C1
	SUBTTL	D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN/PAH/PY	24-Jul-83


	;COPYRIGHT (C) 1973, 1983 BY
 WIT
	SUBTTL	D.M.NIXON/DMN/JLd/JBC/RKH/JNG/DCE/MCHC/DZN/PAH/PY	28-Mar-84


	;COPYRIGHT (C) 1973, 1984 BY
 REP 36/1	;08C2
	DECEVR==2046		;DEC EDIT VERSION
 WIT
	DECEVR==2065		;DEC EDIT VERSION
 INS 114/6	;08C3
	;2053	Argcheck the BG area and defer fixups accross overlays.
	;2065	Check .ABS. against zero when computing LOWLOC.
 REP 13/10	;08C4
	SGCHK.:	HRRI	R,2		;[1777] ASSUME HIGH SEG
 WIT
	;**;[2053] Replace at SGCHK.		PY	8-Nov-83
	SGCHK.:	TRNN	FL,R.FLS!R.FHS	;[2053] Forced loading?
		  PJRST	SGCHK0		;[2053] No, no problem
		TRNN	FL,R.FLS	;[2053] Which segment has been faked?
		 SKIPA	T1,[1]		;[2053] Low seg has been faked
		MOVEI	T1,2		;[2053] High seg faked if /SEG:LOW
		HRR	R,T1		;[2053] Setup R For SG.TB; Preserve LH
		MOVE	T1,@SG.TB	;[2053] Get real value for RC table
		EXCH	T1,@RC.TB	;[2053] Restore it, get fake value
		PUSH	P,T1		;[2053] Save fake value to restore later
		PUSH	P,R		;[2053] Remember which segment
		PUSH	P,LL.S2		;[2053] LL.S2 Was also faked by T.3
		HRRZS	LL.S2		;[2053] If we are loading F10, that is
		PUSHJ	P,SGCHK0	;[2053] Now do the fixup
		POP	P,LL.S2		;[2053] Restore LL.S2
		POP	P,R		;[2053] Remember which counter we grabbed
		POP	P,@RC.TB	;[2053] And restore it
		POPJ	P,		;[2053] Return From SY.RF

	SGCHK0:	HRRI	R,2		;[2053] ASSUME HIGH SEG
 REP 3/66	;08C5
	SY.TYP::			;[1405] SET UP TYPECHECK BLOCKS IN GS
		MOVX	W1,PT.SGN	;[1476]
 WIT
	SY.TYP::
	;**;[2053] Insert after SY.TYP		PY	8-Nov-83
	IFN FTOVERLAY,<			;[2053]
		SKIPN	OVERLW		;[2053] Overlayed program?
		 JRST	SYTYP		;[2053] No, don't worry about BG area
		MOVE	T3,ABCNT(W3)	;[2053] Compute ptr to flag word	
		IDIVI	T3,5		;[2053] Byte count to word count
		SKIPE	T4		;[2053] If not exact fit
		AOS	T3		;[2053] Count extra in next word
		ADDI	T3,ABNAM(W3)	;[2053] T3 Points to flag word
		MOVE	T3,(T3)		;[2053] Flags
		TXNN	T3,TPWHO	;[2053] Caller?
		PUSHJ	P,TYP.BG##	;[2053] Callee, typecheck the bound globals
	;	JRST	SYTYP		;[2053] Check the current overlay
	>;[2053] IFN FTOVERLAY

	SYTYP::	MOVX	W1,PT.SGN	;[2053] SET UP TYPECHECK BLOCKS IN GS
 REP 12/66	;08C6
	;[1405] HERE TO PUT UNKNOWN SYBOL'S ARGBLK DATA PTR IN GLOBAL TABLE
 WIT
	;**;[2053] Insert after SY.TY0		PY	8-Nov-83
	IFN FTOVERLAY,<			;[2053]
		SKIPE	ARGOVL		;[2053] Argchecking the BG area?
		 POPJ	P,		;[2053] Yes, don't put it in
	>;[2053] IFN FTOVERLAY
	;[1405] HERE TO PUT UNKNOWN SYMBOL'S ARGBLK DATA PTR IN GLOBAL TABLE
 REP 16/67	;08C7
	SYTY1N:	MOVEI	T1,.L		;[2020] NO TYPCHECKING YET, NEED EXTRA TRIPLET
 WIT
	;**;[2053] Replace after SYTY1A+5 Lines	PY	8-Nov-83
	SYTY1N:				;[2053]
	IFN FTOVERLAY,<			;[2053]
		SKIPE	ARGOVL		;[2053] Typechecking the BG area?
		 POPJ	P,		;[2053] Yes, don't put it in
	>;[2053] IFN FTOVERLAY
		MOVEI	T1,.L		;[2053] NO TYPCHECKING YET, NEED EXTRA TRIPLET
 REP 82/70	;08C8
		PUSH	P,P3			;[1777] SAVE IT
 WIT
	;**;[2053] Insert after COESPC+25 Lines	PY	8-Nov-83
	IFN FTOVERLAY,<			;[2053]
		SKIPE	ARGOVL		;[2053] Argchecking the BG area?
		 JRST	COEOVL##	;[2053] Yes, may have to defer this fixup
	>;[2053] IFN FTOVERLAY
	COESP0::PUSH	P,P3			;[2053] SAVE IT
 REP 97/70	;08C9
		POP	P,T2			;[1474] RESTORE OLD T2 VALUE	
 WIT
	;**;[2053] Replace at COESP0+16 Lines.	PY	8-Nov-83
	COESP1::POP	P,T2			;[2053] RESTORE OLD T2 VALUE	
 REP 101/70	;08C10

 WIT
 REP 35/84	;08C11
		IOR	W1,W2		;[747] ANY THING IN EITHER .ABS. OR .LOW.?
		CAILE	W1,140		;[747]
 WIT
		SKIPN	W1		;[2065] ANYTHING IN .ABS.?
		CAILE	W2,140		;[2065] OR IN .LOW.?
 SUM 187651