

; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 1

; Digital Equipment Corporation

;

;00100  0001	MODULE LNK_OBJPASS1 (IDENT='X01.22') =

;00200  0002	

;00300  0003	BEGIN

;00400  0004	!

;00500  0005	!

;00600  0006	! COPYRIGHT (C) 1976, 1977, 1978

;00700  0007	! DIGITAL EQUIPMENT CORPORATION,  MAYNARD, MASSACHUSETTS  01754

;00800  0008	!

;00900  0009	! THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON  A

;01000  0010	! SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU-

;01100  0011	! SION OF THE ABOVE COPYRIGHT NOTICE.  THIS  SOFTWARE,  OR  ANY

;01200  0012	! OTHER  COPIES  THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE

;01300  0013	! AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON  SUCH  SYSTEM

;01400  0014	! AND  TO  ONE WHO AGREES TO THESE LICENSE TERMS.  TITLE TO AND

;01500  0015	! OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.

;01600  0016	!

;01700  0017	! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT

;01800  0018	! NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL

;01900  0019	! EQUIPMENT CORPORATION.

;02000  0020	!

;02100  0021	! DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF

;02200  0022	! ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

;02300  0023	!

;02400  0024	!

;02500  0025	!

;02600  0026	!

;02700  0027	!

;02800  0028	!++

;02900  0029	!

;03000  0030	! MODULE: LNK_OBJPASS1

;03100  0031	!

;03200  0032	! FACILITY: LINKER

;03300  0033	!

;03400  0034	! ABSTRACT:

;03500  0035	!

;03600  0036	! PASS ONE OF ALL OBJECT MODULES OF THIS LINK.

;03700  0037	!

;03800  0038	! HISTORY:

;03900  0039	!

;04000  0040	!	VERSION: X01.00

;04100  0041	!

;04200  0042	!	AUTHOR: T.J. PORTER 30-DEC-76

;04300  0043	!

;04400  0044	!	MODIFICATIONS:

;04500  0045	!

;04600  0046	! NO.	DATE		PROGRAMMER	PURPOSE

;04700  0047	! ---	----		----------	-------

;04800  0048	! 001	13-JUN-77	T.J. PORTER	OBJECT LIBRARY SUPPORT

;04900  0049	! 002	24-JUN-77	T.J. PORTER	ADD CROSS REFERENCE BY VALUE OF SYMBOLS

;05000  0050	! 003	18-JUL-77	T.J. PORTER	CHECKS FOR SYMBOL,MODULE AND P-SECTION

;05100  0051	!						NAMES OF LEGAL LENGTH

;05200  0052	!						AND LEGAL P-SECTION ALIGNMENT

;05300  0053	! 004	25-JUL-77	T.J. PORTER	ESTIMATE NUMBER OF BYTES OF

;05400  0054	!						DEBUGGER (LOCAL) SYMBOL TABLE

;05500  0055	! 005	10-AUG-77	T.J. PORTER	DEALLOCATE THE UNUSED PART OF 



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 1-1

; Digital Equipment Corporation

;

;05600  0056	!						A P-SECT MAPPING TABLE

;05700  0057	! 006	22-AUG-77	T.J. PORTER	CHANGE LOGICAL NAME FOR SOURCE OF

;05800  0058	!							SYSTEM LIBRARY (SYS$LIBRARY)

;05900  0059	! 007	13-SEP-77	T.J. PORTER	CHECK FOR 0 MODULES AT THE END OF

;06000  0060	!						THE PASS AND REPORT ERROR AND TERMINATE

;06100  0061	! 008	15-SEP-77	T.J. PORTER	FIX ABSOLUTE P-SECTION NON ZERO

;06200  0062	!						CONTRIBUTOR OFFSET BUG

;06300  0063	! 009	22-SEP-77	T.J. PORTER	FILTER OUT SYMBOLS FROM DEBUGGER

;06400  0064	! 010	13-OCT-77	T.J. PORTER	DEFAULT IMAGE IDENT

;06500  0065	! 011	18-OCT-77	T.J. PORTER	LIBRARY SEARCH BUG IF LIST

;06600  0066	!						OF UNDEFINED SYMBOLS EMPTIES

;06700  0067	!						BEFORE CURRENT MODULE ADDS MORE

;06800  0068	! 012	05-DEC-77	T.J. PORTER	DETECT NO P-SECTIONS IN MODULE

;06900  0069	! 013	08-DEC-77	T.J. PORTER	SUPPRESSION OF SYSLIB SYMBOLS AND P-SECTIONS

;07000  0070	! 014	15-DEC-77	T.J. PORTER	FIX WEAK REFERENCE BUG AND ADD

;07100  0071	!						SHAREABLE IMAGE SUPPORT

;07200  0072	! 015	05-JAN-78	T.J. PORTER	PERMIT DEBUGGER IN SHAREABLE IMAGE

;07300  0073	

;07400  0074	! 016	18-JAN-78	T.J. PORTER	TRACE BACK

;07500  0075	! 017	30-MAR-78	T.J. PORTER	SAVE EACH MODULE'S RFA IN ITS

;07600  0076	!						DESCRIPTOR SO PASS 2 CAN DO

;07700  0077	!						A GET BY RFA IN CONCATENATED OBJECT FILES

;07710  0078	! 018	21-APR-78	T.J. PORTER	REQUIRE FILE CLEAN UP

;07720  0079	! 019	10-MAY-78	T.J. PORTER	ARGUMENT CO-ERCION

;07730  0080	! 020	16-MAY-78	T.J. PORTER	MOVE KNOWLEDGE OF SYSTEM DEFAULT

;07740  0081	!						LIBRARY TO LNKOBJFIL

;07750  0082	!						AND REMOVE GBL P-SECTION KLUDGE CHECK

;07760  0083	!						FOR . BLANK .

;07770  0084	! 021	08-JUN-78	T.J. PORTER	FIX ARGUMENT CO-ERCION BUG

;07780  0085	! 022	01-AUG-78	T.J. PORTER	FIX THE SEARCH OF VMSRTL TO BE

;07790  0086	!						SELECTIVE ONLY UNTIL A SYMBOL IS

;07791  0087	!						RESOLVED.

;07800  0088	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2

; Digital Equipment Corporation

;

;07900  0089	     

;08000  0090	!

;08100  0091	!++

;08200  0092	!

;08300  0093	! FUNCTIONAL DESCRIPTION:

;08400  0094	!

;08500  0095	! THIS ROUTINE IS CALLED TO PROCESS ALL OBJECT MODULES

;08600  0096	! DURING PASS ONE OF THE LINK. IT VALIDATES OBJECT MODULE 

;08700  0097	! FORMAT, READS THE MODULE HEADER, ALL GSD AND THE

;08800  0098	! END OF MODULE RECORDS AND BUILDS SYMBOL AND P-SECTION

;08900  0099	! TABLES. IT IS IN THIS ROUTINE ALONE THAT THE LINKER

;09000  0100	! DETERMINES WHETHER THE MODULE IS CONCATENATED. IT IS

;09100  0101	! ALSO HERE THAT ANY USER DEFINED TRANSFER ADDRESS IS

;09200  0102	! EXTRACTED.

;09300  0103	!

;09400  0104	! THIS ROUTINE IGNORES THE CONTENT OF TIR, DBG AND LNK RECORDS.

;09500  0105	!

;09600  0106	!--

;09700  0107	FORWARD ROUTINE

;09800  0108		COUNTDBG,		! COUNT DEBUG RECORDS AND BYTES THEREIN

;09900  0109		CREFILTER : NOVALUE,	! FILTER SYMBOLS AND CROSS REFERENCE THEM

;10000  0110		LNK$PROCSOBJ,		! PROCESS THE OBJS

;10100  0111		PROHDR,			! ROUTINE TO PROCESS MODULE HEADERS

;10200  0112		PROGSD,			! ROUTINE TO PROCESS GSD RECORDS

;10300  0113		PROEOM,			!    "       "    END OF MODULE

;10400  0114		SEQCHK,			!    "       VERIFY CORRECT SEQUENCE OF OBJ RECORDS

;10500  0115		PROPSECTDEF,		! PROCESS P-SECTION DEFINITIONS

;10600  0116		FNDPSCMAPENT,		! MANIPULATE P-SECTION MAPPING TABLE

;10700  0117		SYMBOLS,		! PROCESS SYMBOL DEFINITIONS AND REFERENCES

;10800  0118		ENTPNTS,		! PROCESS ENTRY POINT DEFINITIONS

;10900  0119		PROCEDEF,		! PROCESS PROCEDURE DECLARATIONS

;11000  0120		PROSYMBOL;		! DO ALL THE WORK OF SYMBOL RESOLUTION

;11100  0121	!

;11200  0122	LIBRARY

;11300  0123		'SYS$LIBRARY:STARLET.L32';	! SYSTEM DATA STRUCTURES

;11400  0124	REQUIRE

;11500  0125		'PREFIX';	! SET OF GENERAL MACROS ETC

;11600  0317	REQUIRE

;11700  0318		'OBJFMT';	! OBJECT LANGUAGE DEFINITIONS

;11800  0608	REQUIRE

;11900  0609		'DATBAS';	! INTERNAL DATA BASE DEFINITIONS

;12000  0841	REQUIRE

;12100  0842		'SYMFMT';	! SYMBOL TABLE FORMATS

;12200  0927	!

;12300  0928	EXTERNAL ROUTINE

;12400  0929		CRF$INSRTKEY,			! INSERT A KEY IN CROSS REFERENCE PROGRAM'S TABLE

;12500  0930		CRF$INSRTREF,			! INSERT A REFERENCE IN CROSS REFERENCE TABLE

;12600  0931		LNK$ALLOBLK : NOVALUE,		! DYNAMIC MEMORY ALLOCATION

;12700  0932		LNK$DEALBLK : NOVALUE,		! AND DE-ALLOCATION

;12900  0933		LNK$DIAG : NOVALUE,		! LINKER DIAGNOSTICS

;13000  0934		LNK$ERRMSG : NOVALUE,		! ERROR MESSAGE HANDLER

;13100  0935		LNK$EXIT : NOVALUE,		! EXIT ROUTINE

;13200  0936		LNK$FNDPSCNAM,			! SEARCH FOR A P-SECTION ENTRY BY NAME

;13300  0937		LNK$INSERT,			! INSERT A SYMBOL

;13500  0938		LNK$LIBBUFDEAL : NOVALUE,	! DEALLOCATE LIBRARY BUFFER AND CLI WORK AREA



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-1

; Digital Equipment Corporation

;

;13600  0939		LNK$NXTFIL,			! GET NEXT INPUT FILE

;13700  0940		LNK$NXTREC,			! ROUTINE TO OBTAIN NEXT RECORD OF AN OBJ MODULE

;13800  0941		LNK$PROCSHRIM,			! PROCESS SHAREABLE IMAGES

;13900  0942		LNK$PROCSLIB,			! PROCESS AN OBJECT LIBRARY FILE

;14000  0943		LNK$SEARCH;			! SYMBOL TABLE SEARCH

;14100  0944	!

;14200  0945	EXTERNAL LITERAL

;14300  0946		LNK$M_DBG : BYTLIT,		! DEBUGGER LINKED IN

;14400  0947		LNK$M_EXE : SHORT,		! THIS IS AN EXECUTABLE IMAGE

;14500  0948		LNK$S_BRIEF : SHORT,		! PRODUCING A BRIEF MAP

;14600  0949		LNK$S_CROS : SHORT,		! PRODUCING A CROSS REFERENCE

;14700  0950		LNK$S_DBG : SHORT,		! IMAGE CONTAINS CREF

;14800  0951		LNK$S_IMAGE : SHORT,		! FLAG TO PRODUCE AN IMAGE

;14810  0952		LNK$S_INTFIL : SHORT,		! CURRENT FILE IS AN INTERNALLY SPECIFIED ONE

;15000  0953		LNK$S_LONG : SHORT,		! MAP IS LONG FORM (THEREFORE CREF BY VALUE ALSO)

;15100  0954		LNK$S_MAP : SHORT,		! MAP IS REQUIRED

;15200  0955		LNK$S_SUPDBG : SHORT,		! SUPPRESS DEBUGGER SYMBOLS

;15300  0956		LNK$S_SUPSYS : SHORT,		! SUPPRESS SYSTEM LIBRARY SYMBOLS

;15400  0957		LNK$S_TRACE : SHORT,		! TRACE BACK ENABLED

;15500  0958		OBJ$B_RECTYP : BYTLIT,		! OFFSET IN ANY RECORD TO RECORD TYPE

;15600  0959		OBJ$B_SUBTYP : BYTLIT,		! OFFSET TO SUBTYPE IN ALL RECORDS

;15700  0960		OBJ$C_EOM : SHORT,		! END OF MODULE RECORD TYPE

;15800  0961		OBJ$C_HDR : SHORT,		! MODULE HEADER RECORD TYPE

;15900  0962		OBJ$C_HDR_LNM : SHORT,		! CREATOR/COMPILER NAME SUB HEADER

;16000  0963		OBJ$C_HDR_MHD : SHORT,		! MODULE HEADER SUBTYPE

;16100  0964		OBJ$C_MAXRECSIZ : WORDLIT,	! MAXIMUM RECORD SIZE IN OBJ LANGUAGE

;16200  0965		OBJ$C_PSCALILIM : SHORT,	! MAXIMUM P-SECTION ALIGNMENT

;16300  0966		OBJ$C_STRLVL : SHORT,		! STRUCTURE LEVEL OF LANGUAGE

;16400  0967		OBJ$C_TIR : SHORT,		! TEXT AND RELOCATION INFO RECORD TYPE

;16500  0968		SEV$C_INFOR : SHORT,		! INFORMATION MESSAGES

;16600  0969		SEV$C_DIAG : SHORT,		! DIAGNOSTIC MESSAGE

;16700  0970		SEV$C_FATAL : SHORT,		! FATAL MESSAGES

;16800  0971		ERM$C_BADCCC : BYTLIT,		! BAD COMPILER COMPLETION CODE

;16900  0972		ERM$C_BADPSC : BYTLIT,		! ILLEGAL P-SECTION REFERENCED

;17000  0973		ERM$C_EOMFTL : BYTLIT,		! EOM RECORD SPECIFIES ABORT

;17100  0974		ERM$C_ERRORS : BYTLIT,		! COMPILATION HAD FATAL ERRORS

;17200  0975		ERM$C_EXCPSC : BYTLIT,		! TOO MANY PSECTS DEFINED

;17300  0976		ERM$C_FORMAT : BYTLIT,		! OBJECT MODULE FORMAT ERROR

;17400  0977		ERM$C_GSDTYP : BYTLIT,		! ILLEGAL GSD TYPE

;17405  0978		ERM$C_ILLFMLCNT : BYTLIT,	! ILLEGAL FORMAL ARGUMENT COUNTS

;17500  0979		ERM$C_MODNAM : BYTLIT,		! ILLEGAL MODULE NAME

;17600  0980		ERM$C_MULDEF : BYTLIT,		! MULTIPLE SYMBOL DEFINITION

;17700  0981		ERM$C_MULPSC : BYTLIT,		! MULTIPLE P-SECTUION DEFINITION

;17800  0982		ERM$C_MULTFR : BYTLIT,		! MULTIPLE TRANSFER ADDRESSES

;17900  0983		ERM$C_NOEOM : BYTLIT,		! MISSING END OF MODULE ERROR

;18000  0984		ERM$C_NOMODS : BYTLIT,		! NO MODULES FOUND (IN THE LIBRARIES)

;18100  0985		ERM$C_NOPSCTS : BYTLIT,		! NO PROGRAM SECTIONS FOUND

;18200  0986		ERM$C_NUDFSYMS : BYTLIT,	! NUMBER OF UNDEFINED SYMBOLS

;18300  0987		ERM$C_OVRALI : BYTLIT,		! OVERLAYED P-SECTION WITH DIFFERERENT ALIGNMENT

;18400  0988		ERM$C_PSCALI : BYTLIT,		! ILLEGAL P-SECTION ALIGNMENT

;18500  0989		ERM$C_PSCNXR : BYTLIT,		! P-SECTION CONTAINING TRANSFER ADDRESS IS NOT EXE/REL

;18600  0990		ERM$C_RECLNG : BYTLIT,		! ILLEGAL RECORD LENGTH

;18700  0991		ERM$C_RECTYP : BYTLIT,		! ILLEGAL RECORD TYPE

;18800  0992		ERM$C_SEQNCE : BYTLIT,		! RECORDS IN ILLEGAL SEQUENCE

;18900  0993		ERM$C_SPNAMLNG : BYTLIT,	! SYMBOL OR P-SECTION NAME LENGTH ILLEGAL



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-2

; Digital Equipment Corporation

;

;19000  0994		ERM$C_STRLVL : BYTLIT,		! ILLEGAL STRUCTURE LEVEL IN MODULE

;19100  0995		ERM$C_UDFSYM : BYTLIT,		! EACH UNDEFINED SYMBOL

;19200  0996		ERM$C_WRNERS : BYTLIT;		! COMPILER ISSUED WARNINGS

;19300  0997	!

;19400  0998	EXTERNAL

;19500  0999		LNK$AL_RAB : BLOCK[RAB$C_BLN,BYTE],		! RAB USED TO OPEN THE FILE

;19600  1000		LNK$AL_SYTBLFMT,				! ADDRESS OF SYMBOL LISTING FORMAT DESCRIPTION TABLE

;19700  1001		LNK$AL_VALCTLTB,				! ADDRESS OF CREF BY VALUE CONTROL TABLE

;19800  1002		LNK$AW_VERSION : BLOCK [LID$C_SIZE,BYTE],	! VERSION ARRAY

;20000  1003		LNK$GL_CTLMSK,					! LINK CONTROL MASK

;20025  1004		LNK$GL_CURCLU : REF BLOCK[,BYTE],		! CURRENT CLUSTER POINTER

;20050  1005		LNK$GL_CURFIL : REF BLOCK[,BYTE],		! CURRENT FDB POINTER

;20100  1006		LNK$GL_LIBSYM : REF BLOCK[,BYTE],		! POINTS TO SYMBOL CAUSING LOAD OF LIBRARY MODULE

;20200  1007		LNK$GT_IMGID : VECTOR[,BYTE];			! STORAGE OF IMAGE IDENT

;20300  1008		!

;20400  1009	GLOBAL

;20500  1010		LNK$GL_UDFLST : VECTOR[2] INITIAL(		! UNDEFINED SYMBOL LISTHEAD

;20600  1011					LNK$GL_UDFLST,		! INITIALLY POINTS TO

;20700  1012					LNK$GL_UDFLST),		! ITSELF, SINCE EMPTY

;20800  1013		LNK$GL_DBGESTIM,				! ESTIMATE OF NUMBER OF BYTES FOR DST

;20900  1014		LNK$GW_DBGRECS : WORD,				! NUMBER OF DEBUG RECORDS

;21000  1015		LNK$GW_NFILES : WORD,				! NUMBER OF FILES OPENED

;21100  1016		LNK$GW_NMODULES : WORD,				! NUMBER OF MODULES FOUND

;21200  1017		LNK$GW_NPSECTS : WORD,				! NUMBER OF PSECTS IN TABLE

;21300  1018		LNK$GW_NSYMBOLS : WORD,				! NUMBER OF SYMBOLS IN TABLE

;21400  1019		LNK$GW_NCROSRFS : WORD,				! NUMBER OF CROSS REFERENCES ENTERED

;21500  1020		LNK$GW_NUDFSYMS : WORD;				! NUMBER OF UNDEFINED SYMBOLS

;21600  1021	!

;21700  1022	OWN

;21710  1023		DEFERREDLIST,						! LISTHEAD FOR DEFERRED DEFINITIONS

;21900  1024		OBMODESC	: REF BLOCK[,BYTE],			! POINTER TO CURRENT MODULE TITLE

;22000  1025		MAXRECLNG	: WORD INITIAL(OBJ$C_MAXRECSIZ),	! MAXIMUM LENGTH PERMISSIBLE IN THIS MODULE

;22100  1026		GSDOFFSET	: WORD,					! OFFSET INTO CONCATENATED GSD RECORD

;22200  1027		OBJREC		: REF VECTOR[,BYTE],			! POINTER TO CURRENT RECORD

;22300  1028		SYMBOLSTRING	: REF VECTOR[,BYTE], 			! POINTER TO CURRENT SYMBOL

;22400  1029		SYMTABENT 	: REF BLOCK[,BYTE],			! POINTER TO SYMBOL TABLE ENTRY

;22500  1030		ENTRYMASK	: WORD,					! ENTRY POINT MASK OF CURRENT SYMBOL

;22600  1031		RECLNG		: WORD,					! LENGTH OF CURRENT RECORD

;22700  1032		LASTRECTYP	: BYTE,					! TYPE OF THE PREVIOUS RECORD

;22800  1033		CURRECTYP	: BYTE INITIAL(OBJ$C_EOM),		! TYPE OF THE CURRENT RECORD

;22900  1034		IMAGEIDSTRING	: VECTOR[SYM$C_MAXLNG+1,BYTE];		! DEFAULT IMAGE IDENT STORAGE

;23000  1035	!

;23100  1036	BIND

;23200  1037		RECDISPATCH = PLIT(					! SET UP MAXIMUM ALLOWED RECORD TYPE

;23300  1038				PROHDR,					! 0 - MODULE HEADER

;23400  1039				PROGSD,					! 1 - GSD RECORDS

;23500  1040				SEQCHK,					! 2 - TIR - JUST CHECK CORRECT SEQUENCE

;23600  1041				PROEOM,					! 3 - END OF MODULE

;23700  1042				COUNTDBG,				! 4 - DBG - CHECK SEQUENCE AND COUNT RECORDS AND BYTES

;23800  1043				COUNTDBG) : VECTOR;			! 5 - TBT - COUNT AND CHECK SEQUENCE O.K.

;23900  1044	!

;24000  1045	GLOBAL ROUTINE LNK$OBJPASS1(ARGLIST) =

;24100  1046	BEGIN

;24200  1047	!

;24300  1048	!	THIS IS THE MAIN DRIVING ROUTINE OF PASS ONE. IT OPENS



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-3

; Digital Equipment Corporation

;

;24400  1049	!	EACH FILE AND IF A LIBRARY, CALLS THE LIBRARY PROCESSING ROUTINE

;24500  1050	!	OR IF NOT A LIBRARY ASSUMES IT IS A CONCATENATED OBJ FILE

;24600  1051	!	AND CALLS THE OBJ MODULE PROCESSOR.

;24700  1052	!	WHEN NO MORE FILES REMAIN, IF THERE ARE STILL UNDEFINED SYMBOLS

;24800  1053	!	THE SYSTEM LIBRARY IS MATERAILIZED AS AN INPUT FILE AND

;24900  1054	!	PROCESSED.

;25000  1055	!

;25100  1056	!	ARGLIST CONTAINS THE ADDRESS OF THE ARGUMENT LIST WITH WHICH THE LINKER

;25200  1057	!	WAS ORIGINALLY CALLED. IT IS MERELY PASSED ON TO THE OBJECT

;25300  1058	!	LIBRARY PROCESSOR SO IT CAN RE-CALL CLI TO OBTAIN THE NAMES (IF ANY)

;25400  1059	!	OF MODULES TO BE EXPLICITLY EXTRACTED FROM THE LIBRARY.

;25500  1060	!

;25600  1061	BUILTIN

;25700  1062		INSQUE,					! QUE INSERTION AND

;25800  1063		REMQUE;					! QUE REMOVING INSTRUCTIONS

;25900  1064	LOCAL

;26000  1065		SUFFIX,					! UNDEFINED SYMBOL LIST SUFFIX POINTER

;26100  1066		NXTSYMENT : REF BLOCK[,BYTE];		! FOR SCANNING LIST OF UNDEFINED SYMBOLS

;26200  1067	!

;26300  1068	! BEGIN THE LOOP WHICH OPENS EACH INPUT FILE

;26400  1069	!

;26500  1070	WHILE LNK$NXTFIL() DO						! WHILE THERE REMAIN

;26600  1071	BEGIN								! MORE OBJ FILES

;26700  1072		LNK$GW_NFILES = .LNK$GW_NFILES + 1;			! COUNT THE FILE

;26800  1073		OBMODESC = LNK$GL_CURFIL[FDB$L_OMDLST];			! INITIALIZE CURRENT DESCRIPTOR TO LISTHEAD

;26900  1074		IF .(LNK$GL_CURFIL[FDB$B_FILFLGS])<LNK$S_LIBR,1,0>	! IF THIS INPUT FILE IS A LIBRARY

;27000  1075		THEN (IF NOT LNK$PROCSLIB(.ARGLIST)			! GO PROCESS IT

;27100  1076			THEN RETURN FALSE;)				! AND GIVE UP ON FAILURE

;27200  1077		ELSE IF .(LNK$GL_CURFIL[FDB$B_FILFLGS])<LNK$S_SHR,1,0>	! IF A SHAREABLE IMAGE

;27300  1078			THEN (IF NOT LNK$PROCSHRIM()			! GO PROCESS IT

;27400  1079				THEN RETURN FALSE;)			! AND GIVE UP ON ERRORS

;27500  1080			ELSE IF NOT LNK$PROCSOBJ()			! OTHERWISE ASSUME CONCATENATED OBJECT

;27600  1081				THEN RETURN FALSE;			! EXITING NOW ON FAILURE

;27700  1082		OBMODESC[OMD$L_NXTOMD] = 0;				! ENSURE LAST MODULE HAS NULL FORWARD POINTER

;27800  1083	END;								! END OF USER INPUT FILES

;27900  1084	!

;28000  1085	! NOW CHECK THAT WE DID GET SOME MODULES AND IF SO

;28100  1086	! CHECK FOR UNDEFINED SYMBOLS.

;28300  1087	!

;28400  1088	IF .LNK$GW_NMODULES EQL 0

;28500  1089	THEN LNK$ERRMSG(ERM$C_NOMODS,SEV$C_FATAL);

;30500  1090	IF .LNK$GW_NUDFSYMS NEQ 0					! IF THERE ARE STILL SOME UNDEFINED (STRONG REFS)

;30600  1091	THEN LNK$ERRMSG(ERM$C_NUDFSYMS,SEV$C_DIAG,.LNK$GW_NUDFSYMS);	! THEN REPORT THE NUMBER

;30700  1092	WHILE NOT REMQUE(.LNK$GL_UDFLST,NXTSYMENT)			! AND REMOVE EACH FROM TOP

;30800  1093	DO BEGIN							! OF THE LIST, OUTPUTTING

;30900  1094		IF(.NXTSYMENT[SYM$W_FLAGS] AND SYM$M_WEAK) EQL 0	! THE SYMBOL NAME

;31000  1095		THEN SUFFIX = CSTRING(' ')				! WITH NULL OR 'WEAK'

;31100  1096		ELSE BEGIN

;31200  1097			SUFFIX = CSTRING(' (Weak Reference)');		! SUFFIX DEPENDING ON THE REFERENCE

;31300  1098			NXTSYMENT[SYM$W_FLAGS] = .NXTSYMENT[SYM$W_FLAGS]! BEING WEAK OR STRONG AND

;31400  1099					OR SYM$M_DEF;			! ENSURE WEAKS ARE NOW DEFINED

;31500  1100		     END;

;31600  1101		IF .LNK$GW_NUDFSYMS NEQ 0				! NOW LIST THE SYMBOL PROVIDED

;31700  1102		THEN LNK$ERRMSG(ERM$C_UDFSYM,SEV$C_INFOR,		! NOT ALL WERE WEAK

;31800  1103			NXTSYMENT[SYM$B_NAMLNG],.SUFFIX);



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-4

; Digital Equipment Corporation

;

;31900  1104		NXTSYMENT[SYM$L_VALUE] = 0;				! SET ITS VALUE TO 0

;32000  1105		IF NOT .LNK$GL_CTLMSK<LNK$S_BRIEF,1,0>			! PROVIDED THIS IS NOT A

;32100  1106		AND .LNK$GL_CTLMSK<LNK$S_MAP,1,0>			! BRIEF MAP

;32200  1107		THEN CRF$INSRTKEY(LNK$AL_SYTBLFMT,			! INSERT THE KEY (SYMBOL) IN

;32300  1108				NXTSYMENT[SYM$B_NAMLNG],		! CREF'S TABLE SO THAT WE MAY

;32400  1109				NXTSYMENT[SYM$L_VALUE],			! MAP UNDEFINED SYMBOLS

;32500  1110				.NXTSYMENT[SYM$W_FLAGS]);		! AND IGNORE ERROR FROM CREF

;32600  1111	   END;

;32800  1112	LNK$LIBBUFDEAL();			! SO DEALLOCATE CLI WORK AREA AND LIBRARY BUFFERS (IF ANY)

;32900  1113	RETURN TRUE;

;33000  1114	END;





							    .TITLE  LNK_OBJPASS1

							    .IDENT  \X01.22\



							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00000	    .LONG   6

					      00004 P.AAA:  .ADDRESS  PROHDR , PROGSD , SEQCHK , PROEOM , COUNTDBG , COUNTDBG ;

					      0001C P.AAB:  .BYTE   1							      ;

					      0001D 	    .ASCII  \ \							      ;

					      0001E	    .BLKB   2

					      00020 P.AAC:  .BYTE   17							      ;

					      00021 	    .ASCII  \ (Weak Reference)\					      ;

					      00032	    .BLKB   2



							    .PSECT  $OWN$,NOEXE,2



					      00000 DEFERREDLIST:

							    .BLKB   4

					      00004 OBMODESC:

							    .BLKB   4

					      00008 MAXRECLNG:

							    .WORD    OBJ$C_MAXRECSIZ					      ;

					      0000A GSDOFFSET:

							    .BLKB   2

					      0000C OBJREC: .BLKB   4

					      00010 SYMBOLSTRING:

							    .BLKB   4

					      00014 SYMTABENT:

							    .BLKB   4

					      00018 ENTRYMASK:

							    .BLKB   2

					      0001A RECLNG: .BLKB   2

					      0001C LASTRECTYP:

							    .BLKB   1

					      0001D CURRECTYP:

							    .BYTE    OBJ$C_EOM						      ;

					      0001E	    .BLKB   2

					      00020 IMAGEIDSTRING:

							    .BLKB   16



							    .PSECT  $GLOBAL$,NOEXE,2





; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-5

; Digital Equipment Corporation

;

					      00000 LNK$GL_UDFLST::

							    .ADDRESS  LNK$GL_UDFLST , LNK$GL_UDFLST			      ;

					      00008 LNK$GL_DBGESTIM::

							    .BLKB   4

					      0000C LNK$GW_DBGRECS::

							    .BLKB   2

					      0000E LNK$GW_NFILES::

							    .BLKB   2

					      00010 LNK$GW_NMODULES::

							    .BLKB   2

					      00012 LNK$GW_NPSECTS::

							    .BLKB   2

					      00014 LNK$GW_NSYMBOLS::

							    .BLKB   2

					      00016 LNK$GW_NCROSRFS::

							    .BLKB   2

					      00018 LNK$GW_NUDFSYMS::

							    .BLKB   2



						    SYM$C_MAXLNG==	15

						    OBJ$C_MAXRECTYP==	5

						    GPS$C_SIZE==	24

						    PSC$M_PIC==		1

						    PSC$M_LIB==		2

						    PSC$M_OVR==		4

						    PSC$M_REL==		8

						    PSC$M_GBL==		16

						    PSC$M_SHR==		32

						    PSC$M_EXE==		64

						    PSC$M_RD==		128

						    PSC$M_WRT==		256

						    PSC$M_SUPRES==	32768

						    GSY$C_SIZE==	4

						    SYM$S_WEAK==	0

						    SYM$S_DEF==		1

						    SYM$S_UNI==		2

						    SYM$S_REL==		3

						    SYM$S_SHRIMG==	11

						    SYM$S_REDEF==	12

						    SYM$S_SUPRES==	13

						    SYM$S_GSTMISS==	14

						    SYM$S_ENTMSK==	15

						    SYM$M_WEAK==	1

						    SYM$M_DEF==		2

						    SYM$M_UNI==		4

						    SYM$M_REL==		8

						    SYM$M_SHRIMG==	2048

						    SYM$M_REDEF==	4096

						    SYM$M_SUPRES==	8192

						    SYM$M_GSTMISS==	16384

						    SYM$M_ENTMSK==	32768

						    SRF$C_SIZE==	20

						    SDF$C_SIZE==	25

						    EPM$C_SIZE==	27

						    PRO$C_SIZE==	27



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-6

; Digital Equipment Corporation

;

						    FML$C_SIZE==	2

						    ARG$C_SIZE==	2

						    ARG$K_UNKNOWN==	0

						    ARG$K_VALUE==	1

						    ARG$K_REF==		2

						    ARG$K_DESC==	3

						    MHD$C_SIZE==	20

						    EOM$C_SIZE==	7

						    OBJ$C_EOMMIN==	2

						    OBJ$C_EOMMAX==	7

						    TIR$C_STA_GBL==	0

						    TIR$C_STA_SB==	1

						    TIR$C_STA_SW==	2

						    TIR$C_STA_LW==	3

						    TIR$C_STA_PB==	4

						    TIR$C_STA_PW==	5

						    TIR$C_STA_PL==	6

						    TIR$C_STA_UB==	7

						    TIR$C_STA_UW==	8

						    TIR$C_STA_BFI==	9

						    TIR$C_STA_WFI==	10

						    TIR$C_STA_LFI==	11

						    TIR$C_STA_EPM==	12

						    TIR$C_STA_CKARG==	13

						    TIR$C_MAXSTACOD==	13

						    TIR$C_MINSTOCOD==	20

						    TIR$C_STO_SB==	20

						    TIR$C_STO_SW==	21

						    TIR$C_STO_L==	22

						    TIR$C_STO_BD==	23

						    TIR$C_STO_WD==	24

						    TIR$C_STO_LD==	25

						    TIR$C_STO_LI==	26

						    TIR$C_STO_PIDR==	27

						    TIR$C_STO_PICR==	28

						    TIR$C_STO_RSB==	29

						    TIR$C_STO_RSW==	30

						    TIR$C_STO_RL==	31

						    TIR$C_STO_VPS==	32

						    TIR$C_STO_USB==	33

						    TIR$C_STO_USW==	34

						    TIR$C_STO_RUB==	35

						    TIR$C_STO_RUW==	36

						    TIR$C_STO_B==	37

						    TIR$C_STO_W==	38

						    TIR$C_STO_RB==	39

						    TIR$C_STO_RW==	40

						    TIR$C_MAXSTOCOD==	40

						    TIR$C_MINOPRCOD==	50

						    TIR$C_OPR_NOP==	50

						    TIR$C_OPR_ADD==	51

						    TIR$C_OPR_SUB==	52

						    TIR$C_OPR_MUL==	53

						    TIR$C_OPR_DIV==	54

						    TIR$C_OPR_AND==	55



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-7

; Digital Equipment Corporation

;

						    TIR$C_OPR_IOR==	56

						    TIR$C_OPR_EOR==	57

						    TIR$C_OPR_NEG==	58

						    TIR$C_OPR_COM==	59

						    TIR$C_OPR_INSV==	60

						    TIR$C_OPR_ASH==	61

						    TIR$C_OPR_USH==	62

						    TIR$C_OPR_ROT==	63

						    TIR$C_OPR_SEL==	64

						    TIR$C_OPR_REDEF==	65

						    TIR$C_MAXOPRCOD==	65

						    TIR$C_MINCTLCOD==	80

						    TIR$C_CTL_SETRB==	80

						    TIR$C_CTL_AUGRB==	81

						    TIR$C_MAXCTLCOD==	81

						    FDB$C_SIZE==	75

						    LNK$S_NEWUDF==	0

						    LNK$S_LIBR==	1

						    LNK$S_SHR==		2

						    LNK$S_SELSER==	3

						    LNK$S_OPTION==	4

						    LNK$S_DEBUGER==	5

						    LNK$S_LIBEXTR==	6

						    LNK$S_LIBSRCH==	7

						    LNK$M_NEWUDF==	1

						    LNK$M_LIBR==	2

						    LNK$M_SHR==		4

						    LNK$M_SELSER==	8

						    LNK$M_OPTION==	16

						    LNK$M_DEBUGER==	32

						    LNK$M_LIBEXTR==	64

						    LNK$M_LIBSRCH==	128

						    PMT$L_PSCDES==	0

						    PMT$L_MODCON==	1

						    PMT$L_SYMLST==	1

						    PMT$C_SIZE==	8

						    OMD$C_SIZE==	2080

						    OMD$M_NOPSCT==	1

						    OMD$S_NOPSCT==	0

						    OMD$M_NOBIN==	2

						    OMD$S_NOBIN==	1

						    OMD$M_SHRIMG==	4

						    OMD$S_SHRIMG==	2

						    OMD$M_SELSER==	8

						    OMD$S_SELSER==	3

						    OMD$M_MAPMOD==	16

						    OMD$S_MAPMOD==	4

						    OMD$M_DEBUGER==	32

						    OMD$S_DEBUGER==	5

						    PSC$C_SIZE==	43

						    MPC$C_SIZE==	17

						    LID$C_SIZE==	4

						    CLU$C_SIZE==	55

						    CLU$S_BASED==	0

						    CLU$S_SYMBAS==	1



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-8

; Digital Equipment Corporation

;

						    CLU$S_SHRIMG==	2

						    CLU$S_PIC==		3

						    CLU$S_COPY==	4

						    CLU$S_OPEN==	5

						    CLU$S_PENDING==	6

						    FVM$C_SIZE==	12

						    SYM$C_TBLSIZ==	128

						    SYM$C_SIZE==	42

						    RECDISPATCH=	P.AAA

							    .GLOBL  CRF$INSRTKEY, CRF$INSRTREF, LNK$ALLOBLK, LNK$DEALBLK

							    .GLOBL  LNK$DIAG, LNK$ERRMSG, LNK$EXIT, LNK$FNDPSCNAM

							    .GLOBL  LNK$INSERT, LNK$LIBBUFDEAL, LNK$NXTFIL, LNK$NXTREC

							    .GLOBL  LNK$PROCSHRIM, LNK$PROCSLIB, LNK$SEARCH, LNK$M_DBG

							    .GLOBL  LNK$M_EXE, LNK$S_BRIEF, LNK$S_CROS, LNK$S_DBG

							    .GLOBL  LNK$S_IMAGE, LNK$S_INTFIL, LNK$S_LONG, LNK$S_MAP

							    .GLOBL  LNK$S_SUPDBG, LNK$S_SUPSYS, LNK$S_TRACE, OBJ$B_RECTYP

							    .GLOBL  OBJ$B_SUBTYP, OBJ$C_EOM, OBJ$C_HDR, OBJ$C_HDR_LNM

							    .GLOBL  OBJ$C_HDR_MHD, OBJ$C_MAXRECSIZ, OBJ$C_PSCALILIM

							    .GLOBL  OBJ$C_STRLVL, OBJ$C_TIR, SEV$C_INFOR, SEV$C_DIAG

							    .GLOBL  SEV$C_FATAL, ERM$C_BADCCC, ERM$C_BADPSC, ERM$C_EOMFTL

							    .GLOBL  ERM$C_ERRORS, ERM$C_EXCPSC, ERM$C_FORMAT, ERM$C_GSDTYP

							    .GLOBL  ERM$C_ILLFMLCNT, ERM$C_MODNAM, ERM$C_MULDEF, ERM$C_MULPSC

							    .GLOBL  ERM$C_MULTFR, ERM$C_NOEOM, ERM$C_NOMODS, ERM$C_NOPSCTS

							    .GLOBL  ERM$C_NUDFSYMS, ERM$C_OVRALI, ERM$C_PSCALI, ERM$C_PSCNXR

							    .GLOBL  ERM$C_RECLNG, ERM$C_RECTYP, ERM$C_SEQNCE, ERM$C_SPNAMLNG

							    .GLOBL  ERM$C_STRLVL, ERM$C_UDFSYM, ERM$C_WRNERS, LNK$AL_RAB

							    .GLOBL  LNK$AL_SYTBLFMT, LNK$AL_VALCTLTB, LNK$AW_VERSION

							    .GLOBL  LNK$GL_CTLMSK, LNK$GL_CURCLU, LNK$GL_CURFIL, LNK$GL_LIBSYM

							    .GLOBL  LNK$GT_IMGID



							    .PSECT  $CODE$,NOWRT,2



					 0C0C 00000 	    .ENTRY  LNK$OBJPASS1, Save R2,R3,R10,R11			      ; 1045

		         5A	0000G  CF  9E 00002 	    MOVAB   LNK$ERRMSG, R10					      ;

		         5B	0000'  CF  9E 00007 	    MOVAB   LNK$GW_NUDFSYMS, R11				      ;

		  0000G  CF	       00  FB 0000C 1$:     CALLS   #0, LNK$NXTFIL					      ; 1070

		         3B	       50  E9 00011 	    BLBC    R0, 6$						      ;

				  F6   AB  B6 00014 	    INCW    LNK$GW_NFILES					      ; 1072

		         52	0000G  CF  D0 00017 	    MOVL    LNK$GL_CURFIL, R2					      ; 1073

    0000'  CF	         52	       04  C1 0001C 	    ADDL3   #4, R2, OBMODESC					      ;

	   0A	    0A   A2	       01  E1 00022 	    BBC     #1, 10(R2), 2$					      ; 1074

				  04   AC  DD 00027 	    PUSHL   ARGLIST						      ; 1075

		  0000G  CF	       01  FB 0002A 	    CALLS   #1, LNK$PROCSLIB					      ;

				       0A  11 0002F 	    BRB     3$							      ;

	   0B	    0A   A2	       02  E1 00031 2$:     BBC     #2, 10(R2), 4$					      ; 1077

		  0000G  CF	       00  FB 00036 	    CALLS   #0, LNK$PROCSHRIM					      ; 1078

		         0B	       50  E8 0003B 3$:     BLBS    R0, 5$						      ;

				     0086  31 0003E 	    BRW     13$							      ; 1079

		  0000V  CF	       00  FB 00041 4$:     CALLS   #0, LNK$PROCSOBJ					      ; 1080

		         7E	       50  E9 00046 	    BLBC    R0, 13$						      ;

				0000'  DF  D4 00049 5$:     CLRL    @OBMODESC						      ; 1082

				       BD  11 0004D 	    BRB     1$							      ; 1070

				  F8   AB  B5 0004F 6$:     TSTW    LNK$GW_NMODULES					      ; 1088

				       0A  12 00052 	    BNEQ    7$							      ;

		         7E	       00  9A 00054 	    MOVZBL  #SEV$C_FATAL, -(SP)					      ; 1089



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-9

; Digital Equipment Corporation

;

		         7E	  00G  8F  9A 00057 	    MOVZBL  #ERM$C_NOMODS, -(SP)				      ;

		         6A	       02  FB 0005B 	    CALLS   #2, LNK$ERRMSG					      ;

				       6B  B5 0005E 7$:     TSTW    LNK$GW_NUDFSYMS					      ; 1090

				       0D  13 00060 	    BEQL    8$							      ;

		         7E	       6B  3C 00062 	    MOVZWL  LNK$GW_NUDFSYMS, -(SP)				      ; 1091

		         7E	       00  9A 00065 	    MOVZBL  #SEV$C_DIAG, -(SP)					      ;

		         7E	  00G  8F  9A 00068 	    MOVZBL  #ERM$C_NUDFSYMS, -(SP)				      ;

		         6A	       03  FB 0006C 	    CALLS   #3, LNK$ERRMSG					      ;

		         52	  E8   BB  0F 0006F 8$:     REMQUE  @LNK$GL_UDFLST, NXTSYMENT				      ; 1092

				       49  1D 00073 	    BVS     12$							      ;

		         07	  1E   A2  E8 00075 	    BLBS    30(NXTSYMENT), 9$					      ; 1094

		         53	0000'  CF  9E 00079 	    MOVAB   P.AAB, SUFFIX					      ; 1095

				       09  11 0007E 	    BRB     10$							      ; 1094

		         53	0000'  CF  9E 00080 9$:     MOVAB   P.AAC, SUFFIX					      ; 1097

		    1E   A2	       02  88 00085 	    BISB2   #2, 30(NXTSYMENT)					      ; 1099

				       6B  B5 00089 10$:    TSTW    LNK$GW_NUDFSYMS					      ; 1101

				       0F  13 0008B 	    BEQL    11$							      ;

				       53  DD 0008D 	    PUSHL   SUFFIX						      ; 1102

				  08   A2  9F 0008F 	    PUSHAB  8(NXTSYMENT)					      ; 1103

		         7E	       00  9A 00092 	    MOVZBL  #SEV$C_INFOR, -(SP)					      ; 1102

		         7E	  00G  8F  9A 00095 	    MOVZBL  #ERM$C_UDFSYM, -(SP)				      ;

		         6A	       04  FB 00099 	    CALLS   #4, LNK$ERRMSG					      ;

				       62  D4 0009C 11$:    CLRL    (NXTSYMENT)						      ; 1104

	   CB	  0000G  CF	       00  E0 0009E 	    BBS     #LNK$S_BRIEF, LNK$GL_CTLMSK, 8$			      ; 1105

	   C5	  0000G  CF	       00  E1 000A4 	    BBC     #LNK$S_MAP, LNK$GL_CTLMSK, 8$			      ; 1106

		         7E	  1E   A2  3C 000AA 	    MOVZWL  30(NXTSYMENT), -(SP)				      ; 1107

				       52  DD 000AE 	    PUSHL   NXTSYMENT						      ;

				  08   A2  9F 000B0 	    PUSHAB  8(NXTSYMENT)					      ; 1108

				0000G  CF  9F 000B3 	    PUSHAB  LNK$AL_SYTBLFMT					      ; 1107

		  0000G  CF	       04  FB 000B7 	    CALLS   #4, CRF$INSRTKEY					      ;

				       B1  11 000BC 	    BRB     8$							      ; 1092

		  0000G  CF	       00  FB 000BE 12$:    CALLS   #0, LNK$LIBBUFDEAL					      ; 1112

		         50	       01  D0 000C3 	    MOVL    #1, R0						      ; 1113

					   04 000C6 	    RET     							      ;

				       50  D4 000C7 13$:    CLRL    R0							      ; 1045

					   04 000C9 	    RET     							      ;



; Routine Size:  202 bytes





;33100  1115	GLOBAL ROUTINE LNK$PROCSOBJ (MODRFA) =

;33200  1116	BEGIN

;33300  1117	!

;33400  1118	! READ AND PROCESS ALL REQUIRED OBJECT MODULE RECORDS OF THE FILE JUST OPENED

;33500  1119	! THAT IS, KEEP READING RECORDS TO END OF FILE EXCEPT IF THIS

;33600  1120	! FILE IS A LIBRARY, STOP AT THE FIRST END OF MODULE RECORD.

;33700  1121	!	MODRFA EXISTS IN THE CASE OF A LIBRARY MODULE OR SHAREABLE IMAGE AND

;33800  1122	!	IS A POINTER TO THE RECORD FILE ADDRESS OF THE MODULE.

;33900  1123	!

;34000  1124	MAP MODRFA : REF BLOCK[,BYTE];				! REALLY A POINTER

;34100  1125	!

;34200  1126	BIND AUXFNB = LNK$GL_CURFIL[FDB$AL_AUXFNB] : BLOCK[,BYTE];	! AUXILIRIARY FILENAME BLOCK

;34300  1127	!

;34400  1128	WHILE LNK$NXTREC(OBJREC,RECLNG)				! IF THERE IS ANOTHER RECORD

;34500  1129	DO BEGIN



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-10

; Digital Equipment Corporation

;

;34600  1130	IF NOT

;34700  1131		BEGIN

;34800  1132		IF .RECLNG GTRU .MAXRECLNG			! AND ITS LENGTH IS ILLEGAL

;34900  1133		THEN

;35000  1134		    (LNK$ERRMSG(ERM$C_RECLNG,SEV$C_INFOR,	! OUTPUT AN ERROR AND EXIT LOOP

;35100  1135				LNK$GL_CURFIL[FDB$Q_USRNAMDSC],.RECLNG);

;35200  1136		    FALSE)

;35300  1137		ELSE

;35400  1138			BEGIN					! LENGTH OF RECORD OR SO

;35500  1139			IF (LASTRECTYP = .CURRECTYP;		! COPY OLD CURRENT TO LAST TYPE

;35600  1140			    CURRECTYP = .OBJREC[OBJ$B_RECTYP]) 	! AND GET NEW TYPE

;35700  1141			LSSU .RECDISPATCH[-1]			! CHECK IT IS LEGAL AND IF

;35800  1142			THEN

;35900  1143			    (.RECDISPATCH[.CURRECTYP])() 	! SO DISPATCH TO RECORD SPECIFIC ROUTINE

;36000  1144			ELSE

;36100  1145			    (LNK$ERRMSG(ERM$C_RECTYP,SEV$C_INFOR, ! ELSE OUTPUT ERROR

;36200  1146				LNK$GL_CURFIL[FDB$Q_USRNAMDSC],.CURRECTYP);

;36300  1147			    FALSE)

;36400  1148			END

;36500  1149		END

;36600  1150	THEN

;36700  1151		BEGIN						! IF ANY ERROR SEEN ABOVE, OR

;36800  1152		LNK$ERRMSG(ERM$C_FORMAT,SEV$C_FATAL,		! IF RECORD SPECIFIC ROUTINE RETURNS

;36900  1153			.AUXFNB[NAM$B_RSL],.AUXFNB[NAM$L_RSA]);	!

;37000  1154		RETURN FALSE;					! FALSE HAVE A FORMAT ERROR OUTPUT

;37100  1155		END;						! MESSAGE AND EXIT

;37200  1156	IF .CURRECTYP EQL OBJ$C_EOM				! IF THAT RECORD WAS AN EOM

;37300  1157	AND (.(LNK$GL_CURFIL[FDB$B_FILFLGS])<LNK$S_LIBR,1,0>	! AND THE FILE IS A LIBRARY

;37400  1158	    OR (.OBMODESC[OMD$B_FLAGS] AND OMD$M_SHRIMG) NEQ 0)	! OR CONTAINS A SHAREABLE IMAGE

;37500  1159	THEN BEGIN						! THEN THE FILE IS DONE

;37600  1160		OBMODESC[OMD$L_MODVBN] = .MODRFA[MODVBN];	! AS SOON AS WE EXTRACT THE RFA

;37700  1161		OBMODESC[OMD$W_BYTOFF] = .MODRFA[MODBYTE];	! OF THE MODULE

;37800  1162		RETURN TRUE;

;37900  1163	     END;

;38000  1164	END;				! OF RECORDS LOOP

;38100  1165	!

;38200  1166	IF .CURRECTYP NEQ OBJ$C_EOM				! ALL RECORDS ARE READ AND PROCESSED -

;38300  1167	THEN

;38400  1168		BEGIN						! CHECK LAST IN THIS FILE WAS END OF MODULE

;38500  1169		LNK$ERRMSG(ERM$C_NOEOM,SEV$C_INFOR,OBMODESC[OMD$B_NAMLNG]);	! AND OUTPUT MESSAGES IF NOT, THEN

;38600  1170		LNK$ERRMSG(ERM$C_FORMAT,SEV$C_FATAL,.AUXFNB[NAM$B_RSL],		! RETURN FAILURE

;38700  1171				.AUXFNB[NAM$L_RSA]);				!

;38800  1172		RETURN FALSE;

;38900  1173		END;

;39000  1174	RETURN TRUE;				! FINALLY RETURN AFTER NO MORE

;39100  1175	END;					! OF PASS 1 OBJ READING ROUTINE











					 0F84 000CA 	    .ENTRY  LNK$PROCSOBJ, Save R2,R7,R8,R9,R10,R11		      ; 1115

		         57	0000G  CF  9E 000CC 	    MOVAB   LNK$ERRMSG, R7					      ;

		         58	0000G  CF  9E 000D1 	    MOVAB   LNK$GL_CURFIL, R8					      ;

		         59	       00  D0 000D6 	    MOVL    #OBJ$C_EOM, R9					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-11

; Digital Equipment Corporation

;

		         5A	       00  D0 000D9 	    MOVL    #SEV$C_INFOR, R10					      ;

		         5B	0000'  CF  9E 000DC 	    MOVAB   CURRECTYP, R11					      ;

	   52	         68	       13  C1 000E1 	    ADDL3   #19, LNK$GL_CURFIL, R2				      ; 1126

				  FD   AB  9F 000E5 1$:     PUSHAB  RECLNG						      ; 1128

				  EF   AB  9F 000E8 	    PUSHAB  OBJREC						      ;

		  0000G  CF	       02  FB 000EB 	    CALLS   #2, LNK$NXTREC					      ;

		         7F	       50  E9 000F0 	    BLBC    R0, 7$						      ;

		    EB   AB	  FD   AB  B1 000F3 	    CMPW    RECLNG, MAXRECLNG					      ; 1132

				       11  1B 000F8 	    BLEQU   2$							      ;

		         7E	  FD   AB  3C 000FA 	    MOVZWL  RECLNG, -(SP)					      ; 1134

	   7E	         68	       0B  C1 000FE 	    ADDL3   #11, LNK$GL_CURFIL, -(SP)				      ; 1135

		         7E	       5A  9A 00102 	    MOVZBL  R10, -(SP)						      ; 1134

		         7E	  00G  8F  9A 00105 	    MOVZBL  #ERM$C_RECLNG, -(SP)				      ;

				       39  11 00109 	    BRB     4$							      ;

		    FF   AB	       6B  90 0010B 2$:     MOVB    CURRECTYP, LASTRECTYP				      ; 1139

	   50	    EF   AB 00000000G  8F  C1 0010F 	    ADDL3   #OBJ$B_RECTYP, OBJREC, R0				      ; 1140

		         50	       60  9A 00118 	    MOVZBL  (R0), R0						      ;

		         6B	       50  90 0011B 	    MOVB    R0, CURRECTYP					      ;

		  0000'  CF	       50  D1 0011E 	    CMPL    R0, RECDISPATCH-4					      ; 1141

				       11  1E 00123 	    BGEQU   3$							      ;

		         50	       6B  9A 00125 	    MOVZBL  CURRECTYP, R0					      ; 1143

		         50	0000'CF40  D0 00128 	    MOVL    RECDISPATCH[R0], R0					      ;

		         60	       00  FB 0012E 	    CALLS   #0, (R0)						      ;

		         52	       50  E9 00131 	    BLBC    R0, 8$						      ;

				       13  11 00134 	    BRB     5$							      ;

		         7E	       6B  9A 00136 3$:     MOVZBL  CURRECTYP, -(SP)					      ; 1145

	   7E	         68	       0B  C1 00139 	    ADDL3   #11, LNK$GL_CURFIL, -(SP)				      ; 1146

		         7E	       5A  9A 0013D 	    MOVZBL  R10, -(SP)						      ; 1145

		         7E	  00G  8F  9A 00140 	    MOVZBL  #ERM$C_RECTYP, -(SP)				      ;

		         67	       04  FB 00144 4$:     CALLS   #4, LNK$ERRMSG					      ;

				       3D  11 00147 	    BRB     8$							      ; 1152

		         59	       6B  91 00149 5$:     CMPB    CURRECTYP, R9					      ; 1156

				       97  12 0014C 	    BNEQ    1$							      ;

		         50	       68  D0 0014E 	    MOVL    LNK$GL_CURFIL, R0					      ; 1157

	   09	    0A   A0	       01  E0 00151 	    BBS     #1, 10(R0), 6$					      ;

		         50	  E7   AB  D0 00156 	    MOVL    OBMODESC, R0					      ; 1158

	   86	    0F   A0	       02  E1 0015A 	    BBC     #2, 15(R0), 1$					      ;

		         50	  E7   AB  D0 0015F 6$:     MOVL    OBMODESC, R0					      ; 1160

		         51	  04   AC  D0 00163 	    MOVL    MODRFA, R1						      ;

		    08   A0	       61  D0 00167 	    MOVL    (R1), 8(R0)						      ;

		    0C   A0	  04   A1  B0 0016B 	    MOVW    4(R1), 12(R0)					      ; 1161

				       27  11 00170 	    BRB     9$							      ; 1162

		         59	       6B  91 00172 7$:     CMPB    CURRECTYP, R9					      ; 1166

				       22  13 00175 	    BEQL    9$							      ;

	   7E	    E7   AB	       10  C1 00177 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1169

		         7E	       5A  9A 0017C 	    MOVZBL  R10, -(SP)						      ;

		         7E	  00G  8F  9A 0017F 	    MOVZBL  #ERM$C_NOEOM, -(SP)					      ;

		         67	       03  FB 00183 	    CALLS   #3, LNK$ERRMSG					      ;

				  04   A2  DD 00186 8$:     PUSHL   4(R2)						      ; 1170

		         7E	  03   A2  9A 00189 	    MOVZBL  3(R2), -(SP)					      ;

		         7E	       00  9A 0018D 	    MOVZBL  #SEV$C_FATAL, -(SP)					      ;

		         7E	  00G  8F  9A 00190 	    MOVZBL  #ERM$C_FORMAT, -(SP)				      ;

		         67	       04  FB 00194 	    CALLS   #4, LNK$ERRMSG					      ;

				       04  11 00197 	    BRB     10$							      ; 1172

		         50	       01  D0 00199 9$:     MOVL    #1, R0						      ; 1174



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-12

; Digital Equipment Corporation

;

					   04 0019C 	    RET     							      ;

				       50  D4 0019D 10$:    CLRL    R0							      ; 1115

					   04 0019F 	    RET     							      ;



; Routine Size:  214 bytes





;39200  1176	ROUTINE PROHDR=

;39300  1177	BEGIN

;39400  1178	!

;39500  1179	!++

;39600  1180	!	PROCESS MODULE HEADER RECORDS AS FOLLOWS:

;39700  1181	!		(1) VALIDATE SEQUENCE

;39800  1182	!		(2) IGNORE ALL BUT MAIN MODULE HEADERS

;39900  1183	!		(3) VERIFY STRUCTURE LEVEL IS LESS THAN

;40000  1184	!		    OR EQUAL TO OBJ$C_STRLVL

;40100  1185	!		(4) VERIFY MAXIMUM RECORD LENGTH 

;40200  1186	!		    PARAMETER IS LESS THAN OR EQUAL TO

;40300  1187	!		    OBJ$C_MAXRECSIZ

;40400  1188	!		(5) RECORD MAXIMUM RECORD LENGTH PARAMETER

;40500  1189	!                   FOR CHECKING SUBSEQUENT RECORDS

;40600  1190	!		(6) CHECK MODULE TITLE > 0 AND LESS THAN OR

;40700  1191	!		    EQUAL TO SYM$C_MAXLNG CHARACTERS

;40800  1192	!		(7) ALLOCATE AN OBJECT MODULE DESCRIPTOR

;40900  1193	!		    AND PUT ON END OF THE LIST (WHOSE

;41000  1194	!		    HEAD IS FILE DESCRIPTOR BLOCK).

;41100  1195	!		(8) COPY IN THE MODULE TITLE

;41200  1196	!		(9) INITIALIZE FLAGS AND P-SECTION COUNT IN

;41300  1197	!			THE OBJECT MODULE DESCRIPTOR

;41400  1198	!--

;41500  1199	!

;41600  1200	BIND

;41700  1201		MHDREC = OBJREC[OBJ$B_SUBTYP] : BLOCK[,BYTE];

;41800  1202	!

;41900  1203	IF NOT SEQCHK() THEN RETURN FALSE;				! VALIDATE CORRECT SEQUENCE OF RECORD

;42000  1204	IF .OBJREC[OBJ$B_SUBTYP] NEQ OBJ$C_HDR_MHD THEN RETURN TRUE;	! IGNORE ALL HEADERS EXCEPT MAIN ONES

;42100  1205	LNK$GW_NMODULES = .LNK$GW_NMODULES + 1;				! COUNT THIS MODULE

;42200  1206	IF .MHDREC[MHD$B_STRLVL] GTRU OBJ$C_STRLVL			! COMPARE ITS OBJ FORMAT

;42300  1207	THEN BEGIN							! LEVEL AND IF BEYOND THIS

;42400  1208		LNK$ERRMSG(ERM$C_STRLVL,SEV$C_INFOR,			! VERSION OF THE LINKER

;42500  1209				2,LNK$AW_VERSION[LID$W_MAJOR],		! ISSUE THE APPROPRIATE

;42600  1210				2,LNK$AW_VERSION[LID$W_MINOR],		! ERROR MESSAGE

;42700  1211				.MHDREC[MHD$B_STRLVL],OBJ$C_STRLVL);	! AND GIVE UP

;42800  1212		RETURN FALSE;						! NOW

;42900  1213	     END;

;43000  1214	IF (MAXRECLNG = .MHDREC[MHD$W_RECSIZ]) GTRU OBJ$C_MAXRECSIZ	! COMPARE MAX WITH MAX ALLOWED

;43100  1215	THEN BEGIN							! AND IF GREATER

;43200  1216		LNK$ERRMSG(ERM$C_RECLNG,SEV$C_INFOR,			! ISSUE ERROR MESSAGE

;43300  1217				LNK$GL_CURFIL[FDB$Q_USRNAMDSC],.MAXRECLNG);

;43400  1218		RETURN FALSE;						! AND GIVE UP

;43500  1219	     END;

;43600  1220	IF .MHDREC[MHD$B_NAMLNG] GTRU SYM$C_MAXLNG			! CHECK MODULE NAME IS WITHIN LEGAL

;43700  1221	OR .MHDREC[MHD$B_NAMLNG] EQL 0					! LENGTH RANGE

;43800  1222	THEN BEGIN							! AND IF NOT ISSUE ERROR

;43900  1223		LNK$ERRMSG(ERM$C_MODNAM,SEV$C_INFOR,.MHDREC[MHD$B_NAMLNG],	! MESSAGE



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-13

; Digital Equipment Corporation

;

;44000  1224				SYM$C_MAXLNG);				! AND RETURN FATAL ERROR

;44100  1225		RETURN FALSE;

;44200  1226	     END;

;44300  1227	LNK$ALLOBLK(OMD$C_SIZE,.OBMODESC);				! ALLOCATE AN OBJECT MODULE DESCRIPTOR

;44400  1228	OBMODESC = ..OBMODESC;						! LINKED TO THE LAST AND

;44500  1229	OBMODESC[OMD$L_MODVBN] = .LNK$AL_RAB[RAB$L_RFA0];		! THIS IS NOW THE LAST. CAPTURE THE

;44600  1230	OBMODESC[OMD$W_BYTOFF] = .LNK$AL_RAB[RAB$W_RFA4];		! MODULE'S RFA FOR LATER

;44700  1231	OBMODESC[OMD$B_NAMLNG] = .MHDREC[MHD$B_NAMLNG];			! COPY THE STRING LENGTH

;44800  1232	CH$COPY(.MHDREC[MHD$B_NAMLNG],MHDREC[MHD$T_NAME],0,		! AND THE STRING ZERO FILLED

;44900  1233			SYM$C_MAXLNG,OBMODESC[OMD$T_NAME]);		! INTO THE DESCRIPTOR

;45000  1234	OBMODESC[OMD$B_HIPSCT] = -1;					! SET HIGHEST POSSIBLE P-SECTION NUMBER

;45100  1235	OBMODESC[OMD$B_FLAGS] = OMD$M_NOPSCT OR OMD$M_NOBIN OR		! FLAG NO P-SECTS AND NO BINARY YET

;45200  1236			(.LNK$GL_CURFIL[FDB$B_FILFLGS] AND (LNK$M_SHR	! EXTRACT THE SELECTIVE SEARCH AND SHARE-

;45300  1237				OR LNK$M_SELSER));			! ABLE IMAGE ATTRIBUTES FROM FILE DESCRIPTOR

;45400  1238	IF NOT .LNK$GL_CTLMSK<LNK$S_INTFIL,1,0>				! IF THIS IS NOT THE INTERNAL

;45500  1239	THEN OBMODESC[OMD$B_FLAGS] = .OBMODESC[OMD$B_FLAGS] OR		! THEN SET TO MAP THE MODULE

;45600  1240					OMD$M_MAPMOD			! ON PASS 2

;45700  1241	ELSE OBMODESC[OMD$B_FLAGS] = .OBMODESC[OMD$B_FLAGS] AND		! IF IT IS THHE INTERNAL FILE

;45800  1242					NOT OMD$M_MAPMOD;		! ASSUME FOR NOW NOT MAPPED

;45900  1243	CH$FILL(0,PMT$C_SIZE*256,OBMODESC[OMD$AL_PSCMAP]);		! AND CLEAR IT

;46000  1244	OBMODESC[OMD$L_ALLOC] = 0;					! INITIALLY ZERO ALLOCATION

;46100  1245	IF NOT .(OBMODESC[OMD$B_FLAGS])<LNK$S_DEBUGER,1,0>		! IF THIS IS NOT A DEBUGGER MODULE

;46200  1246	AND .LNK$GT_IMGID[0] EQL 0					! IF THERE IS NO IMAGE IDENT SET UP

;46300  1247	THEN BEGIN							! AS YET

;46400  1248		BIND MODIDSTRING = MHDREC[MHD$T_NAME] +			! POINT TO THE MODULE ID IN HEADER

;46500  1249				.MHDREC[MHD$B_NAMLNG] : VECTOR[,BYTE];	! RECORD (COUNTED STRING)

;46600  1250		IF (IMAGEIDSTRING[0] = MINU(.MODIDSTRING[0],		! EXTRACT THE LENGTH MINIMIZED WITH

;46700  1251					SYM$C_MAXLNG)) NEQ 0		! MAXIMUM ALLOWED STRING LENGTH

;46800  1252		THEN CH$MOVE(.IMAGEIDSTRING[0],MODIDSTRING[1],		! AND IF NOT NULL SAVE

;46900  1253				IMAGEIDSTRING[1]);			! SAVE IT TILL END OF MODULE SO THAT

;47000  1254	     END;						! WE MAY USE IT IF THIS HAS A TRANSFER ADDRESS

;47100  1255	RETURN TRUE;

;47200  1256	END;			! OF MODULE HEADER PROCESSING











					 0FFC 001A0 PROHDR: .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11		      ; 1176

		         5A	       00  D0 001A2 	    MOVL    #SEV$C_INFOR, R10					      ;

		         5B	0000'  CF  9E 001A5 	    MOVAB   OBMODESC, R11					      ;

	   52	    08   AB 00000000G  8F  C1 001AA 	    ADDL3   #OBJ$B_SUBTYP, OBJREC, R2				      ; 1201

		  0000V  CF	       00  FB 001B3 	    CALLS   #0, SEQCHK						      ; 1203

		         7E	       50  E9 001B8 	    BLBC    R0, 6$						      ;

	   50	    08   AB 00000000G  8F  C1 001BB 	    ADDL3   #OBJ$B_SUBTYP, OBJREC, R0				      ; 1204

		         00	       60  91 001C4 	    CMPB    (R0), #OBJ$C_HDR_MHD				      ;

				       03  13 001C7 	    BEQL    1$							      ;

				     0103  31 001C9 	    BRW     11$							      ;

				0000'  CF  B6 001CC 1$:     INCW    LNK$GW_NMODULES					      ; 1205

		         00	  01   A2  91 001D0 	    CMPB    1(R2), #OBJ$C_STRLVL				      ; 1206

				       21  1B 001D4 	    BLEQU   2$							      ;

		         7E	       00  9A 001D6 	    MOVZBL  #OBJ$C_STRLVL, -(SP)				      ; 1208

		         7E	  01   A2  9A 001D9 	    MOVZBL  1(R2), -(SP)					      ;

				0000G  CF  9F 001DD 	    PUSHAB  LNK$AW_VERSION+2					      ; 1210

				       02  DD 001E1 	    PUSHL   #2							      ; 1208



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-14

; Digital Equipment Corporation

;

				0000G  CF  9F 001E3 	    PUSHAB  LNK$AW_VERSION					      ; 1209

				       02  DD 001E7 	    PUSHL   #2							      ; 1208

		         7E	       5A  9A 001E9 	    MOVZBL  R10, -(SP)						      ;

		         7E	  00G  8F  9A 001EC 	    MOVZBL  #ERM$C_STRLVL, -(SP)				      ;

		  0000G  CF	       08  FB 001F0 	    CALLS   #8, LNK$ERRMSG					      ;

				       42  11 001F5 	    BRB     6$							      ; 1212

		         50	  02   A2  3C 001F7 2$:     MOVZWL  2(R2), R0						      ; 1214

		    04   AB	       50  B0 001FB 	    MOVW    R0, MAXRECLNG					      ;

	      00000000G  8F	       50  D1 001FF 	    CMPL    R0, #OBJ$C_MAXRECSIZ				      ;

				       13  1B 00206 	    BLEQU   3$							      ;

		         7E	  04   AB  3C 00208 	    MOVZWL  MAXRECLNG, -(SP)					      ; 1216

	   7E	  0000G  CF	       0B  C1 0020C 	    ADDL3   #11, LNK$GL_CURFIL, -(SP)				      ; 1217

		         7E	       5A  9A 00212 	    MOVZBL  R10, -(SP)						      ; 1216

		         7E	  00G  8F  9A 00215 	    MOVZBL  #ERM$C_RECLNG, -(SP)				      ;

				       19  11 00219 	    BRB     5$							      ;

		         58	  04   A2  9E 0021B 3$:     MOVAB   4(R2), R8						      ; 1220

		         0F	       68  91 0021F 	    CMPB    (R8), #15						      ;

				       04  1A 00222 	    BGTRU   4$							      ;

				       68  95 00224 	    TSTB    (R8)						      ; 1221

				       14  12 00226 	    BNEQ    7$							      ;

				       0F  DD 00228 4$:     PUSHL   #15							      ; 1223

		         7E	       68  9A 0022A 	    MOVZBL  (R8), -(SP)						      ;

		         7E	       5A  9A 0022D 	    MOVZBL  R10, -(SP)						      ;

		         7E	  00G  8F  9A 00230 	    MOVZBL  #ERM$C_MODNAM, -(SP)				      ;

		  0000G  CF	       04  FB 00234 5$:     CALLS   #4, LNK$ERRMSG					      ;

				     0097  31 00239 6$:     BRW     12$							      ; 1225

				       6B  DD 0023C 7$:     PUSHL   OBMODESC						      ; 1227

		         7E	0820   8F  3C 0023E 	    MOVZWL  #2080, -(SP)					      ;

		  0000G  CF	       02  FB 00243 	    CALLS   #2, LNK$ALLOBLK					      ;

		         7B	       9B  D0 00248 	    MOVL    @OBMODESC, OBMODESC					      ; 1228

		         56	       6B  D0 0024B 	    MOVL    OBMODESC, R6					      ; 1229

		    08   A6	0000G  CF  D0 0024E 	    MOVL    LNK$AL_RAB+16, 8(R6)				      ;

		    0C   A6	0000G  CF  B0 00254 	    MOVW    LNK$AL_RAB+20, 12(R6)				      ; 1230

		    10   A6	       68  90 0025A 	    MOVB    (R8), 16(R6)					      ; 1231

		         50	       68  9A 0025E 	    MOVZBL  (R8), R0						      ; 1232

		         59	  05   A2  9E 00261 	    MOVAB   5(R2), R9						      ;

	   00	         69	       50  2C 00265 	    MOVC5   R0, (R9), #0, #15, 17(R6)				      ;

		    11   A6	       0F     00269									      ;

		    0E   A6	       01  8E 0026C 	    MNEGB   #1, 14(R6)						      ; 1234

		         57	  0F   A6  9E 00270 	    MOVAB   15(R6), R7						      ; 1235

		         50	0000G  CF  D0 00274 	    MOVL    LNK$GL_CURFIL, R0					      ; 1236

		         50	  0A   A0  9A 00279 	    MOVZBL  10(R0), R0						      ;

		         50 FFFFFFF3   8F  CA 0027D 	    BICL2   #-13, R0						      ;

	   67	         50	       03  89 00284 	    BISB3   #3, R0, (R7)					      ; 1235

	   05	  0000G  CF	       00  E0 00288 	    BBS     #LNK$S_INTFIL, LNK$GL_CTLMSK, 8$			      ; 1238

		         67	       10  88 0028E 	    BISB2   #16, (R7)						      ; 1239

				       03  11 00291 	    BRB     9$							      ; 1238

		         67	       10  8A 00293 8$:     BICB2   #16, (R7)						      ; 1241

	   00	         6E	       00  2C 00296 9$:     MOVC5   #0, (SP), #0, #2048, 32(R6)				      ; 1243

		    20   A6	0800   8F     0029A									      ;

				  04   A6  D4 0029F 	    CLRL    4(R6)						      ; 1244

	   29	         67	       05  E0 002A2 	    BBS     #5, (R7), 11$					      ; 1245

				0000G  CF  95 002A6 	    TSTB    LNK$GT_IMGID					      ; 1246

				       23  12 002AA 	    BNEQ    11$							      ;

		         51	       68  9A 002AC 	    MOVZBL  (R8), R1						      ; 1248



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-15

; Digital Equipment Corporation

;

		         51	       59  C0 002AF 	    ADDL2   R9, R1						      ;

		         50	       61  9A 002B2 	    MOVZBL  (R1), R0						      ; 1250

		         0F	       50  91 002B5 	    CMPB    R0, #15						      ;

				       03  1B 002B8 	    BLEQU   10$							      ;

		         50	       0F  D0 002BA 	    MOVL    #15, R0						      ;

		    1C   AB	       50  90 002BD 10$:    MOVB    R0, IMAGEIDSTRING					      ;

				       50  D5 002C1 	    TSTL    R0							      ; 1251

				       0A  13 002C3 	    BEQL    11$							      ;

		         50	  1C   AB  9A 002C5 	    MOVZBL  IMAGEIDSTRING, R0					      ; 1252

      1D   AB	    01   A1	       50  28 002C9 	    MOVC3   R0, 1(R1), IMAGEIDSTRING+1				      ;

		         50	       01  D0 002CF 11$:    MOVL    #1, R0						      ; 1255

					   04 002D2 	    RET     							      ;

				       50  D4 002D3 12$:    CLRL    R0							      ; 1176

					   04 002D5 	    RET     							      ;



; Routine Size:  310 bytes





;47300  1257	ROUTINE PROGSD =

;47400  1258	BEGIN

;47500  1259	!

;47600  1260	!++

;47700  1261	!	VERIFY GSD RECORDS AND DISPATCH ON THE FOUR SUB-TYPES:

;47800  1262	!		(0) P-SECTION DEFINITION

;47900  1263	!		(1) SYMBOL DEFINITION/REFERENCE

;48000  1264	!		(2) ENTRY POINT DEFINITION

;48100  1265	!		(3) PROCEDURE DECLARATION

;48200  1266	!--

;48300  1267	!

;48400  1268	BIND

;48500  1269		GSDDISPATCH = PLIT (

;48600  1270				PROPSECTDEF,

;48700  1271				SYMBOLS,

;48800  1272				ENTPNTS,

;48900  1273				PROCEDEF) : VECTOR;

;49000  1274	!

;49100  1275	LOCAL

;49200  1276		GSDTYPE;

;49300  1277	!

;49400  1278	IF NOT SEQCHK()

;49500  1279	THEN RETURN FALSE;

;49600  1280	GSDOFFSET = OBJ$B_SUBTYP;

;49700  1281	!

;49800  1282	WHILE .GSDOFFSET LSSU .RECLNG DO

;49900  1283	BEGIN

;50000  1284	IF ( GSDTYPE = .OBJREC[.GSDOFFSET]) GEQU .GSDDISPATCH[-1]

;50100  1285	THEN BEGIN

;50200  1286		LNK$ERRMSG(ERM$C_GSDTYP,SEV$C_INFOR,

;50300  1287			LNK$GL_CURFIL[FDB$Q_USRNAMDSC],.GSDTYPE);

;50400  1288		RETURN FALSE;

;50500  1289	     END

;50600  1290	ELSE

;50700  1291		IF NOT ( .GSDDISPATCH[.GSDTYPE])()

;50800  1292		THEN RETURN FALSE;

;50900  1293	!



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 2-16

; Digital Equipment Corporation

;

;51000  1294	END;		! OF LOOP ON A CONCATENATED GSD RECORD

;51100  1295	!

;51200  1296	RETURN TRUE;	! SO RETURN TRUE -- SUCCESS

;51300  1297	!

;51400  1298	END;		! AND END OF THE GSD PROCESSOR







							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00034	    .LONG   4

					      00038 P.AAD:  .ADDRESS  PROPSECTDEF , SYMBOLS , ENTPNTS , PROCEDEF	      ;



						    GSDDISPATCH=	P.AAD





							    .PSECT  $CODE$,NOWRT,2



					 0804 002D6 PROGSD: .WORD   Save R2,R11						      ; 1257

		         5B	0000'  CF  9E 002D8 	    MOVAB   GSDOFFSET, R11					      ;

		  0000V  CF	       00  FB 002DD 	    CALLS   #0, SEQCHK						      ; 1278

		         43	       50  E9 002E2 	    BLBC    R0, 4$						      ;

		         6B	  00G  8F  9B 002E5 	    MOVZBW  #OBJ$B_SUBTYP, GSDOFFSET				      ; 1280

		    10   AB	       6B  B1 002E9 1$:     CMPW    GSDOFFSET, RECLNG					      ; 1282

				       35  1E 002ED 	    BGEQU   3$							      ;

		         50	       6B  3C 002EF 	    MOVZWL  GSDOFFSET, R0					      ; 1284

		         50	  02   AB  C0 002F2 	    ADDL2   OBJREC, R0						      ;

		         52	       60  9A 002F6 	    MOVZBL  (R0), GSDTYPE					      ;

		  0000'  CF	       52  D1 002F9 	    CMPL    GSDTYPE, GSDDISPATCH-4				      ;

				       16  1F 002FE 	    BLSSU   2$							      ;

				       52  DD 00300 	    PUSHL   GSDTYPE						      ; 1286

	   7E	  0000G  CF	       0B  C1 00302 	    ADDL3   #11, LNK$GL_CURFIL, -(SP)				      ; 1287

		         7E	       00  9A 00308 	    MOVZBL  #SEV$C_INFOR, -(SP)					      ; 1286

		         7E	  00G  8F  9A 0030B 	    MOVZBL  #ERM$C_GSDTYP, -(SP)				      ;

		  0000G  CF	       04  FB 0030F 	    CALLS   #4, LNK$ERRMSG					      ;

				       12  11 00314 	    BRB     4$							      ; 1288

		         50	0000'CF42  D0 00316 2$:     MOVL    GSDDISPATCH[GSDTYPE], R0				      ; 1291

		         60	       00  FB 0031C 	    CALLS   #0, (R0)						      ;

		         C7	       50  E8 0031F 	    BLBS    R0, 1$						      ;

				       04  11 00322 	    BRB     4$							      ; 1292

		         50	       01  D0 00324 3$:     MOVL    #1, R0						      ; 1296

					   04 00327 	    RET     							      ;

				       50  D4 00328 4$:     CLRL    R0							      ; 1257

					   04 0032A 	    RET     							      ;



; Routine Size:  85 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3

; Digital Equipment Corporation

;

;00100  1299	ROUTINE PROPSECTDEF =

;00200  1300	BEGIN

;00300  1301	!

;00400  1302	!++

;00500  1303	!	PROCESS P-SECTION DEFINITIONS AS FOLLOWS:

;00600  1304	!		(0) CHECK LEGAL P-SECTION NAME AND ALIGNMENT PARAMETER

;00700  1305	!		(1) SEARCH FOR P-SECTION DEFINED

;00800  1306	!		(2) IF DEFINED:

;00900  1307	!			1. CHECK COMPATIBLE ATTRIBUTES

;01000  1308	!			2. IF OVERLAYED, CHECK EQUAL ALIGNMENT

;01100  1309	!			3. MAXIMIZE P-SECTIONS'S BASE ALIGNMENT

;01200  1310	!			4. GO TO (3)

;01300  1311	!		    IF NOT DEFINED:

;01400  1312	!			1. INSERT IN P-SECTION LIST

;01500  1313	!			2. COPY FLAGS AND ALIGNMENT

;01600  1314	!		(3) ALLOCATE A MODULE CONTRIBUTION ENTRY AND INSERT

;01700  1315	!			IT LEXICALLY IN THE LIST BY MODULE NAME

;01800  1316	!		(4) UPDATE CURRENT BASE BY THIS ALIGNMENT THEN COPY

;01900  1317	!			CURRENT BASE INTO MAPPING TABLE ENTRY

;02000  1318	!		(5) ADD THAT ROUND UP TO PSECTIONS ACCUMULATED LENGTH

;02100  1319	!		(6) ADD P-SECTIONS LENGTH CONTRIBUTION TO THE ACCUMULATION

;02200  1320	!			IF CONCATENATED. IF OVERLAYED, MAXIMIZE LENGTH.

;02300  1321	!		(7) COPY CONTRIBUTION LENGTH INTO MAPPING TABLE ENTRY

;02400  1322	!		(8) COPY ALIGNMENT INTO MAPPING TABLE

;02500  1323	!		(9) COPY MODULE DESCRIPTOR ADDRESS INTO MAPPING TABLE

;02600  1324	!		(10) COUNT THIS P-SECTION AND CLEAR NO P-SECTIONS FLAG

;02700  1325	!		(11) IF NECESSARY EXTEND MODULE DESCRIPTOR FOR ANOTHER

;02800  1326	!			P-SECTION AND INSERT ADDRESS OF P-SECTION

;02900  1327	!			IN TABLE.

;03000  1328	!		(12) IF ANY PREMATURE SYMBOL DEFINITIONS, REMOVE EACH FROM

;03100  1329	!			LIST, ADDING P-SECTION BASE TO RELOCATABLE VALUES

;03200  1330	!			AND LINKING THEM ON THE P-SECION'S LIST OF SYMBOLS

;03300  1331	!--

;03400  1332	!

;03500  1333	LOCAL

;03600  1334		PSCTDESC : REF BLOCK[,BYTE],				! CURRENT P-SECT DESCRIPTOR

;03700  1335		MODPSCONTRIBLK : REF BLOCK[,BYTE],			! MODULE CONTRIBUTION DATA BLOCK

;03800  1336		CURCONTRIBLK : REF BLOCK[,BYTE],			! PREVIOUS AND NEXT MODULE

;03900  1337		NXTCONTRIBLK : REF BLOCK[,BYTE],			! PSECTION CONTRIBUTION BLOCKS

;04000  1338		PSCOPE,							! P-SECTION SEARCH SCOPE

;04100  1339		PSCTMAPENT : REF VECTOR,				! P-SECTION MAPPING TABLE ENTRY

;04200  1340		AROUND,							! ROUND UP FOR ALIGNMENT

;04300  1341		PREMSYMLST,						! SAVE PREMATURE SYMBOL LIST

;04400  1342		PREMSYM : REF BLOCK[,BYTE];				! PREMATURELY DEFINED SYMBOL

;04500  1343	BIND

;04600  1344		LENGTH = AROUND,

;04700  1345		PSCTDEF = OBJREC[.GSDOFFSET] : BLOCK[,BYTE];

;04800  1346	!

;04900  1347	!	FIRST CHECK FOR LEGAL P-SECTION NAME AND ALIGNMENT

;05000  1348	!

;05100  1349	IF .PSCTDEF[GPS$B_NAMLNG] GTRU SYM$C_MAXLNG			! CHECK NAME WITHIN THE LEGAL

;05200  1350	OR .PSCTDEF[GPS$B_NAMLNG] EQL 0					! RANGE FOR SYMBOL AND P-SECTION

;05300  1351	THEN (LNK$ERRMSG(ERM$C_SPNAMLNG,SEV$C_INFOR,.PSCTDEF[GPS$B_NAMLNG],	! NAMES AND IF NOT ISSUE

;05400  1352				SYM$C_MAXLNG);   RETURN FALSE);			! AN ERROR AND RETURN FAILURE

;05500  1353	IF .PSCTDEF[GPS$B_ALIGN] GTRU OBJ$C_PSCALILIM			! IF THE ALIGNMENT IS GREATER



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-1

; Digital Equipment Corporation

;

;05600  1354	THEN (LNK$ERRMSG(ERM$C_PSCALI,SEV$C_INFOR,.PSCTDEF[GPS$B_ALIGN],! THAN THE MAXIMUM, ISSUE AN

;05700  1355				OBJ$C_PSCALILIM); RETURN FALSE);	! ERROR AND RETURN FAILURE

;05800  1356	!

;05900  1357	!	SEARCH FOR P-SECTION DEFINED, CREATING DESCRIPTOR IF NOT.

;06000  1358	!

;06100  1359	IF ( .OBMODESC[OMD$B_FLAGS] AND OMD$M_SHRIMG) NEQ 0		! IF THIS IS A SHAREABLE IMAGE

;06200  1360	THEN PSCOPE = 0							! THEN P-SECTION SEARCH IS ONLY IN THIS CLUSTER

;06300  1361	ELSE PSCOPE = .PSCTDEF[GPS$W_FLAGS] AND PSC$M_GBL;		! ELSE SCOPE DEPENDS ON P-SECTION SCOPE

;06400  1362	IF LNK$FNDPSCNAM(PSCTDEF[GPS$B_NAMLNG],.PSCOPE,PSCTDESC)	! GET DESCRIPTOR ADDRESS

;06500  1363	THEN BEGIN							! AND IF FOUND

;06600  1364		IF .PSCTDEF[GPS$W_FLAGS] NEQ (.PSCTDESC[PSC$W_FLAGS]	! CHECK COMPATIBLE

;06700  1365						AND NOT PSC$M_SUPRES)

;06800  1366		THEN LNK$ERRMSG(ERM$C_MULPSC,SEV$C_DIAG,		! ATTRIBUTES, ISSUING ERROR

;06900  1367			OBMODESC[OMD$B_NAMLNG],PSCTDEF[GPS$B_NAMLNG]);	! IF NOT

;07000  1368		IF (.PSCTDEF[GPS$W_FLAGS] AND PSC$M_OVR) NEQ 0		! IF OVERLAYED

;07100  1369		THEN IF .PSCTDEF[GPS$B_ALIGN] NEQ .PSCTDESC[PSC$B_ALIGN]! CHECK EQUAL

;07200  1370			THEN LNK$ERRMSG(ERM$C_OVRALI,SEV$C_DIAG,	! ALIGNMENT

;07300  1371			  OBMODESC[OMD$B_NAMLNG],PSCTDEF[GPS$B_NAMLNG]);! AND ERROR

;07400  1372		IF .PSCTDEF[GPS$B_ALIGN] GTRU .PSCTDESC[PSC$B_ALIGN]	! MAXIMIZE

;07500  1373		THEN PSCTDESC[PSC$B_ALIGN] = .PSCTDEF[GPS$B_ALIGN];	! THE ALIGNMENT

;07600  1374	     END

;07700  1375	!

;07800  1376	!	P-SECTION IS NOT YET DEFINED - SO DO THAT

;07900  1377	!

;08000  1378	ELSE BEGIN							! AND INSERT P-SECTION

;08100  1379		LNK$GW_NPSECTS = .LNK$GW_NPSECTS + 1;			! AFTER COUNTING IT

;08200  1380		PSCTDESC[PSC$B_ALIGN]=.PSCTDEF[GPS$B_ALIGN];		! INSERT ALIGNMENT

;08300  1381		PSCTDESC[PSC$W_FLAGS]=.PSCTDEF[GPS$W_FLAGS];		! COPY THE FLAGS

;08400  1382		IF .LNK$GL_CTLMSK<LNK$S_INTFIL,1,0>			! IF THIS IS THE INTERNAL (SYSLIB) FILE

;08500  1383		AND .LNK$GL_CTLMSK<LNK$S_SUPSYS,1,0>			! AND SYSLIB SUPPRESSION IS ON

;08600  1384		THEN PSCTDESC[PSC$W_FLAGS] = .PSCTDESC[PSC$W_FLAGS]	! THEN SUPPRESS THIS

;08700  1385					OR PSC$M_SUPRES;		! P-SECTION

;08800  1386		PSCTDESC[PSC$L_MPCLST] = 0;				! INITIALIZE CONTRIBUTION DESCRIPTOR LIST

;08900  1387		PSCTDESC[PSC$L_SYMLST] = 0;				! LIST OF SYMBOLS STILL EMPTY

;08910  1388		IF (.OBMODESC[OMD$B_FLAGS] AND OMD$M_SHRIMG) NEQ 0	! IF A SHAREABLE IMAGE P-SECTION

;08920  1389		THEN PSCTDESC[PSC$L_BASE] = .PSCTDEF[GPS$L_ALLOC]	! ITS BASE IS GIVEN BY SIZE FIELD

;09010  1390		ELSE PSCTDESC[PSC$L_BASE] = 0;				! INITIALIZE ITS BASE

;09100  1391		PSCTDESC[PSC$L_LENGTH] = 0;				! AND LENGTH

;09200  1392	     END;

;09300  1393	!

;09400  1394	!	NOW TO CREATE A BLOCK OF DATA DESCRIBING THIS

;09500  1395	!	MODULE'S CONTRIBUTION TO THE P-SECTION, LINK THE

;09600  1396	!	BLOCK TO END OF THE P-SECTION MODULAR CONTRIBUTION LIST

;09700  1397	!	AND POINT MODULE DESCRIPTOR

;09800  1398	!	MAPPING TABLE ENTRY AT THIS BLOCK.

;09900  1399	!

;10000  1400	LNK$ALLOBLK(MPC$C_SIZE,MODPSCONTRIBLK);				! ALLOCATE THE BLOCK

;10100  1401	MODPSCONTRIBLK[MPC$L_NXTMPC] = 0;				! CLEAR POINTER TO NEXT CONTRIB DESCRIPTOR

;10200  1402	MODPSCONTRIBLK[MPC$L_OWNOMD] = .OBMODESC;			! SET THE OWNER POINTER

;10300  1403	CURCONTRIBLK = PSCTDESC[PSC$L_MPCLST];				! START AT LISTHEAD IN PSECT DESCRIPTOR

;10400  1404	WHILE(NXTCONTRIBLK = .CURCONTRIBLK[MPC$L_NXTMPC]) NEQ 0		! GO DOWN SINGLY LINKED LIST

;10500  1405	DO CURCONTRIBLK = .NXTCONTRIBLK;				! NOT YET AT THE END

;10600  1406	CURCONTRIBLK[MPC$L_NXTMPC]=.MODPSCONTRIBLK;			! JUST LINK ON END

;10700  1407	!

;10800  1408	IF .OBMODESC[OMD$B_HIPSCT] EQL 255					! IF 256 PSECTS HAVE ALREADY



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-2

; Digital Equipment Corporation

;

;10900  1409	AND (.OBMODESC[OMD$B_FLAGS] AND OMD$M_NOPSCT) EQL 0

;11000  1410	THEN BEGIN								! BEEN SEEN FOR THIS MODULE

;11100  1411		LNK$ERRMSG(ERM$C_EXCPSC,SEV$C_INFOR,				! ISSUE AN ERROR MESSAGE

;11200  1412			OBMODESC[OMD$B_NAMLNG]);

;11300  1413		RETURN FALSE;							! AND GIVE UP

;11400  1414	     END;

;11500  1415	!

;11600  1416	OBMODESC[OMD$B_FLAGS] = .OBMODESC[OMD$B_FLAGS] AND NOT OMD$M_NOPSCT;	! CLEAR NO PSECTS FLAG

;11700  1417	OBMODESC[OMD$B_HIPSCT] = .OBMODESC[OMD$B_HIPSCT]+1;			! COUNT NEW P-SECTION

;11800  1418	PSCTMAPENT = FNDPSCMAPENT(.OBMODESC[OMD$B_HIPSCT]);			! GET MAP TABLE ENTRY

;11900  1419	PREMSYMLST = .PSCTMAPENT[PMT$L_SYMLST];					! SAVE PREMATURE SYMBOL LIST

;12000  1420	PSCTMAPENT[PMT$L_PSCDES] = .PSCTDESC;					! POINT IT TO PSECTION DESCRIPTOR

;12100  1421	PSCTMAPENT[PMT$L_MODCON] = .MODPSCONTRIBLK;				! AND TO THE NEW CONTRIBUTION BLOCK.

;12200  1422	MODPSCONTRIBLK[MPC$B_ALIGN] = .PSCTDEF[GPS$B_ALIGN];			! COPY ITS ALIGNMENT

;12300  1423	MODPSCONTRIBLK[MPC$L_OFFSET] = 0;					! ASSUME ABSOLUTE AND/OR OVERLAYED

;12400  1424										! AND THUS 0 OFFSET CONTRIBUTION

;12500  1425	IF (.PSCTDEF[GPS$W_FLAGS] AND PSC$M_REL) NEQ 0				! THAT IS ALL FOR ABSOLUTE

;12510  1426	AND (.OBMODESC[OMD$B_FLAGS] AND OMD$M_SHRIMG) EQL 0			! AND SHAREABLE

;12600  1427	THEN BEGIN								! P-SECTIONS

;12700  1428	IF (.PSCTDEF[GPS$W_FLAGS] AND PSC$M_OVR) EQL 0				! SKIP IF OVERLAYED

;12800  1429	THEN BEGIN								! P-SECTION. IF CONCAT

;12900  1430		AROUND = (1 ^.PSCTDEF[GPS$B_ALIGN]) - 1;			! ENATED, COMPUTE THE ROUNDING

;13000  1431		MODPSCONTRIBLK[MPC$L_OFFSET]=.PSCTDESC[PSC$L_BASE]+.AROUND;			! ADD IT IN 

;13100  1432		MODPSCONTRIBLK[MPC$L_OFFSET]=.MODPSCONTRIBLK[MPC$L_OFFSET] AND NOT .AROUND;	! AND TRUNCATE 

;13200  1433		AROUND = .MODPSCONTRIBLK[MPC$L_OFFSET]-.PSCTDESC[PSC$L_BASE];			! THEN COMPUTE AMOUNT ADDED

;13300  1434		PSCTDESC[PSC$L_BASE] = .PSCTDESC[PSC$L_BASE]+.AROUND+			! UPDATE THE BASE FOR NEXT

;13400  1435						.PSCTDEF[GPS$L_ALLOC];			! CONTRIBUTOR.

;13500  1436		PSCTDESC[PSC$L_LENGTH] = .PSCTDESC[PSC$L_BASE];				! WHICH IS ALSO TOTAL LENGTH

;13600  1437	     END

;13700  1438	ELSE BEGIN								! FOR OVERLAYED

;13800  1439		IF .PSCTDEF[GPS$L_ALLOC]GTRU .PSCTDESC[PSC$L_LENGTH]		! P-SECTION MAXIMIZE

;13900  1440		THEN PSCTDESC[PSC$L_LENGTH] = .PSCTDEF[GPS$L_ALLOC];		! THE ALLOCATION

;14000  1441	     END;

;14100  1442	MODPSCONTRIBLK[MPC$L_LENGTH] = .PSCTDEF[GPS$L_ALLOC];			! SET MODULE'S CONTRIBUTION

;14200  1443	OBMODESC[OMD$L_ALLOC] = .OBMODESC[OMD$L_ALLOC] +			! FINALLY ACCUMULATE THE 

;14300  1444					.MODPSCONTRIBLK[MPC$L_LENGTH];		! CONTRIBUTION

;14400  1445	END;

;14500  1446	!

;14600  1447	!	NOW GO DOWN THE LIST OF PREMATURE SYMBOLS

;14700  1448	!		(THOSE AWAITING DEFINITION OF THIS PSECTION)

;14800  1449	!		AND RELOCATE THEM (IF THEY ARE RELOCATABLE)

;14900  1450	!		AND THEN LINK THEM ON TO THE P-SECTON LIST

;15000  1451	!

;15100  1452	WHILE (PREMSYM=.PREMSYMLST) NEQ 0 DO				! RELOCATABLE AND THERE

;15200  1453	BEGIN								! ARE SOME PREMATURE

;15300  1454		IF(.PREMSYM[SYM$W_FLAGS] AND SYM$M_REL) NEQ 0		! FOR EACH THAT IS

;15400  1455									! RELOCATABLE, ADD IN

;15500  1456		THEN PREMSYM[SYM$L_VALUE]=.PREMSYM[SYM$L_VALUE]+	! THE BASE OFFSET

;15600  1457					.MODPSCONTRIBLK[MPC$L_OFFSET];	! OF THE MODULE'S

;15700  1458		PREMSYMLST = .PREMSYM[SYM$L_PSCLST];			! TAKE IT OFF LIST

;15800  1459		PREMSYM[SYM$L_PSCLST] = .PSCTDESC[PSC$L_SYMLST];	! AND PUT ON THE

;15900  1460		PSCTDESC[PSC$L_SYMLST] = PREMSYM[SYM$C_START];		! P-SECTION SYMBOL LIST

;16000  1461	END;

;16100  1462	LENGTH = PSCTDEF[GPS$T_NAME] - PSCTDEF[GPS$C_START] +		! COMPUTE THE OFFSET OF NEXT GSD

;16200  1463			.PSCTDEF[GPS$B_NAMLNG];



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-3

; Digital Equipment Corporation

;

;16300  1464	GSDOFFSET = .GSDOFFSET + .LENGTH;				! FROM LENGTH OF THIS

;16400  1465	RETURN TRUE;

;16500  1466	END;		! OF P-SECTION PROCESSOR











					 0FFC 0032B PROPSECTDEF:

							    .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11		      ; 1299

		         59	       00  D0 0032D 	    MOVL    #OBJ$C_PSCALILIM, R9				      ;

		         5A	       00  D0 00330 	    MOVL    #SEV$C_INFOR, R10					      ;

		         5B	0000'  CF  9E 00333 	    MOVAB   OBMODESC, R11					      ;

		         5E	       08  C2 00338 	    SUBL2   #8, SP						      ;

		         54	  06   AB  3C 0033B 	    MOVZWL  GSDOFFSET, R4					      ; 1345

		         54	  08   AB  C0 0033F 	    ADDL2   OBJREC, R4						      ;

		         58	  08   A4  9E 00343 	    MOVAB   8(R4), R8						      ; 1349

		         0F	       68  91 00347 	    CMPB    (R8), #15						      ;

				       04  1A 0034A 	    BGTRU   1$							      ;

				       68  95 0034C 	    TSTB    (R8)						      ; 1350

				       0E  12 0034E 	    BNEQ    2$							      ;

				       0F  DD 00350 1$:     PUSHL   #15							      ; 1351

		         7E	       68  9A 00352 	    MOVZBL  (R8), -(SP)						      ;

		         7E	       5A  9A 00355 	    MOVZBL  R10, -(SP)						      ;

		         7E	  00G  8F  9A 00358 	    MOVZBL  #ERM$C_SPNAMLNG, -(SP)				      ;

				       16  11 0035C 	    BRB     3$							      ;

		         56	  01   A4  9E 0035E 2$:     MOVAB   1(R4), R6						      ; 1353

		         59	       66  91 00362 	    CMPB    (R6), R9						      ;

				       15  1B 00365 	    BLEQU   4$							      ;

		         7E	       59  9A 00367 	    MOVZBL  R9, -(SP)						      ; 1354

		         7E	       66  9A 0036A 	    MOVZBL  (R6), -(SP)						      ;

		         7E	       5A  9A 0036D 	    MOVZBL  R10, -(SP)						      ;

		         7E	  00G  8F  9A 00370 	    MOVZBL  #ERM$C_PSCALI, -(SP)				      ;

		  0000G  CF	       04  FB 00374 3$:     CALLS   #4, LNK$ERRMSG					      ;

				     01A0  31 00379 	    BRW     22$							      ; 1355

		         50	       6B  D0 0037C 4$:     MOVL    OBMODESC, R0					      ; 1359

	   04	    0F   A0	       02  E1 0037F 	    BBC     #2, 15(R0), 5$					      ;

				       50  D4 00384 	    CLRL    PSCOPE						      ; 1360

				       0B  11 00386 	    BRB     6$							      ; 1359

		         50	  02   A4  3C 00388 5$:     MOVZWL  2(R4), PSCOPE					      ; 1361

		         50 FFFFFFEF   8F  CA 0038C 	    BICL2   #-17, PSCOPE					      ;

				  04   AE  9F 00393 6$:     PUSHAB  PSCTDESC						      ; 1362

				       50  DD 00396 	    PUSHL   PSCOPE						      ;

				       58  DD 00398 	    PUSHL   R8							      ;

		  0000G  CF	       03  FB 0039A 	    CALLS   #3, LNK$FNDPSCNAM					      ;

		         4D	       50  E9 0039F 	    BLBC    R0, 9$						      ;

	   57	         54	       02  C1 003A2 	    ADDL3   #2, R4, R7						      ; 1364

		         52	  04   AE  D0 003A6 	    MOVL    PSCTDESC, R2					      ;

		         50	       67  3C 003AA 	    MOVZWL  (R7), R0						      ;

      19   A2	         0F	       00  ED 003AD 	    CMPZV   #0, #15, 25(R2), R0					      ;

				       50     003B2									      ;

				       12  13 003B3 	    BEQL    7$							      ;

				       58  DD 003B5 	    PUSHL   R8							      ; 1366

	   7E	         6B	       10  C1 003B7 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1367

		         7E	       00  9A 003BB 	    MOVZBL  #SEV$C_DIAG, -(SP)					      ; 1366



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-4

; Digital Equipment Corporation

;

		         7E	  00G  8F  9A 003BE 	    MOVZBL  #ERM$C_MULPSC, -(SP)				      ;

		  0000G  CF	       04  FB 003C2 	    CALLS   #4, LNK$ERRMSG					      ;

	   18	         67	       02  E1 003C7 7$:     BBC     #2, (R7), 8$					      ; 1368

		    18   A2	       66  91 003CB 	    CMPB    (R6), 24(R2)					      ; 1369

				       12  13 003CF 	    BEQL    8$							      ;

				       58  DD 003D1 	    PUSHL   R8							      ; 1370

	   7E	         6B	       10  C1 003D3 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1371

		         7E	       00  9A 003D7 	    MOVZBL  #SEV$C_DIAG, -(SP)					      ; 1370

		         7E	  00G  8F  9A 003DA 	    MOVZBL  #ERM$C_OVRALI, -(SP)				      ;

		  0000G  CF	       04  FB 003DE 	    CALLS   #4, LNK$ERRMSG					      ;

		    18   A2	       66  91 003E3 8$:     CMPB    (R6), 24(R2)					      ; 1372

				       43  1B 003E7 	    BLEQU   13$							      ;

		    18   A2	       66  90 003E9 	    MOVB    (R6), 24(R2)					      ; 1373

				       3D  11 003ED 	    BRB     13$							      ; 1362

				0000'  CF  B6 003EF 9$:     INCW    LNK$GW_NPSECTS					      ; 1379

		         50	  04   AE  D0 003F3 	    MOVL    PSCTDESC, R0					      ; 1380

		    18   A0	       66  90 003F7 	    MOVB    (R6), 24(R0)					      ;

	   57	         54	       02  C1 003FB 	    ADDL3   #2, R4, R7						      ; 1381

		    19   A0	       67  B0 003FF 	    MOVW    (R7), 25(R0)					      ;

	   0B	  0000G  CF	       00  E1 00403 	    BBC     #LNK$S_INTFIL, LNK$GL_CTLMSK, 10$			      ; 1382

	   05	  0000G  CF	       00  E1 00409 	    BBC     #LNK$S_SUPSYS, LNK$GL_CTLMSK, 10$			      ; 1383

		    1A   A0	  80   8F  88 0040F 	    BISB2   #128, 26(R0)					      ; 1385

				  04   A0  7C 00414 10$:    CLRQ    4(R0)						      ; 1386

		         51	       6B  D0 00417 	    MOVL    OBMODESC, R1					      ; 1388

	   07	    0F   A1	       02  E1 0041A 	    BBC     #2, 15(R1), 11$					      ;

		    0C   A0	  04   A4  D0 0041F 	    MOVL    4(R4), 12(R0)					      ; 1389

				       03  11 00424 	    BRB     12$							      ; 1388

				  0C   A0  D4 00426 11$:    CLRL    12(R0)						      ; 1390

				  10   A0  D4 00429 12$:    CLRL    16(R0)						      ; 1391

				       5E  DD 0042C 13$:    PUSHL   SP							      ; 1400

				       11  DD 0042E 	    PUSHL   #17							      ;

		  0000G  CF	       02  FB 00430 	    CALLS   #2, LNK$ALLOBLK					      ;

		         53	       6E  D0 00435 	    MOVL    MODPSCONTRIBLK, R3					      ; 1401

				       63  D4 00438 	    CLRL    (R3)						      ;

		         50	       6B  D0 0043A 	    MOVL    OBMODESC, R0					      ; 1402

		    04   A3	       50  D0 0043D 	    MOVL    R0, 4(R3)						      ;

		         52	  04   AE  D0 00441 	    MOVL    PSCTDESC, R2					      ; 1403

	   51	         52	       04  C1 00445 	    ADDL3   #4, R2, CURCONTRIBLK				      ;

		         55	       61  D0 00449 14$:    MOVL    (CURCONTRIBLK), NXTCONTRIBLK			      ; 1404

				       05  13 0044C 	    BEQL    15$							      ;

		         51	       55  D0 0044E 	    MOVL    NXTCONTRIBLK, CURCONTRIBLK				      ; 1405

				       F6  11 00451 	    BRB     14$							      ; 1404

		         61	       53  D0 00453 15$:    MOVL    R3, (CURCONTRIBLK)					      ; 1406

		    FF   8F	  0E   A0  91 00456 	    CMPB    14(R0), #255					      ; 1408

				       16  12 0045B 	    BNEQ    16$							      ;

		         12	  0F   A0  E8 0045D 	    BLBS    15(R0), 16$						      ; 1409

				  10   A0  9F 00461 	    PUSHAB  16(R0)						      ; 1412

		         7E	       5A  9A 00464 	    MOVZBL  R10, -(SP)						      ; 1411

		         7E	  00G  8F  9A 00467 	    MOVZBL  #ERM$C_EXCPSC, -(SP)				      ;

		  0000G  CF	       03  FB 0046B 	    CALLS   #3, LNK$ERRMSG					      ;

				     00A9  31 00470 	    BRW     22$							      ; 1413

		         50	       6B  D0 00473 16$:    MOVL    OBMODESC, R0					      ; 1416

		    0F   A0	       01  8A 00476 	    BICB2   #1, 15(R0)						      ;

				  0E   A0  96 0047A 	    INCB    14(R0)						      ; 1417

		         7E	  0E   A0  9A 0047D 	    MOVZBL  14(R0), -(SP)					      ; 1418



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-5

; Digital Equipment Corporation

;

		  0000V  CF	       01  FB 00481 	    CALLS   #1, FNDPSCMAPENT					      ;

		         55	  04   A0  D0 00486 	    MOVL    4(PSCTMAPENT), PREMSYMLST				      ; 1419

		         60	       52  7D 0048A 	    MOVQ    R2, (PSCTMAPENT)					      ; 1420

		    10   A3	       66  90 0048D 	    MOVB    (R6), 16(R3)					      ; 1422

		         51	  08   A3  9E 00491 	    MOVAB   8(R3), R1						      ; 1423

				       61  D4 00495 	    CLRL    (R1)						      ;

	   50	         67	       03  E1 00497 	    BBC     #3, (R7), 19$					      ; 1425

		         50	       6B  D0 0049B 	    MOVL    OBMODESC, R0					      ; 1426

	   48	    0F   A0	       02  E0 0049E 	    BBS     #2, 15(R0), 19$					      ;

	   2A	         67	       02  E0 004A3 	    BBS     #2, (R7), 17$					      ; 1428

	   50	         01	       66  78 004A7 	    ASHL    (R6), #1, R0					      ; 1430

	   57	         50	       01  C3 004AB 	    SUBL3   #1, R0, AROUND					      ;

	   61	    0C   A2	       57  C1 004AF 	    ADDL3   AROUND, 12(R2), (R1)				      ; 1431

		         61	       57  CA 004B4 	    BICL2   AROUND, (R1)					      ; 1432

	   57	         61	  0C   A2  C3 004B7 	    SUBL3   12(R2), (R1), AROUND				      ; 1433

	   56	    0C   A2	       57  C1 004BC 	    ADDL3   AROUND, 12(R2), R6					      ; 1434

		         50	  04   A4  D0 004C1 	    MOVL    4(R4), R0						      ; 1435

      0C   A2	         56	       50  C1 004C5 	    ADDL3   R0, R6, 12(R2)					      ; 1434

		    10   A2	  0C   A2  D0 004CA 	    MOVL    12(R2), 16(R2)					      ; 1436

				       0E  11 004CF 	    BRB     18$							      ; 1428

		         50	  04   A4  D0 004D1 17$:    MOVL    4(R4), R0						      ; 1439

		    10   A2	       50  D1 004D5 	    CMPL    R0, 16(R2)						      ;

				       04  1B 004D9 	    BLEQU   18$							      ;

		    10   A2	       50  D0 004DB 	    MOVL    R0, 16(R2)						      ; 1440

		    0C   A3	       50  D0 004DF 18$:    MOVL    R0, 12(R3)						      ; 1442

		         50	       6B  D0 004E3 	    MOVL    OBMODESC, R0					      ; 1443

		    04   A0	  0C   A3  C0 004E6 	    ADDL2   12(R3), 4(R0)					      ;

		         50	       55  D0 004EB 19$:    MOVL    PREMSYMLST, PREMSYM					      ; 1452

				       17  13 004EE 	    BEQL    21$							      ;

	   03	    1E   A0	       03  E1 004F0 	    BBC     #3, 30(PREMSYM), 20$				      ; 1454

		         60	       61  C0 004F5 	    ADDL2   (R1), (PREMSYM)					      ; 1456

		         55	  04   A0  D0 004F8 20$:    MOVL    4(PREMSYM), PREMSYMLST				      ; 1458

		    04   A0	  08   A2  D0 004FC 	    MOVL    8(R2), 4(PREMSYM)					      ; 1459

		    08   A2	       50  D0 00501 	    MOVL    PREMSYM, 8(R2)					      ; 1460

				       E4  11 00505 	    BRB     19$							      ; 1452

		         54	       54  C2 00507 21$:    SUBL2   R4, R4						      ; 1462

		         50	       68  9A 0050A 	    MOVZBL  (R8), R0						      ;

		         54	       50  C0 0050D 	    ADDL2   R0, R4						      ;

	   57	         54	       09  C1 00510 	    ADDL3   #9, R4, LENGTH					      ;

		    06   AB	       57  A0 00514 	    ADDW2   LENGTH, GSDOFFSET					      ; 1464

		         50	       01  D0 00518 	    MOVL    #1, R0						      ; 1465

					   04 0051B 	    RET     							      ;

				       50  D4 0051C 22$:    CLRL    R0							      ; 1299

					   04 0051E 	    RET     							      ;



; Routine Size:  500 bytes





;16600  1467	ROUTINE FNDPSCMAPENT(PSCTNUM) =

;16700  1468	BEGIN

;16800  1469	!

;16900  1470	!	THIS ROUTINE RETURNS THE ADDRESS OF THE MAPPING

;17000  1471	!	TABLE ENTRY FOR P-SECTION NUMBER "PSCTNUM" IN

;17100  1472	!	THE CURRENT MODULE.

;17200  1473	!	THE P-SECT MAPPING TABLE IS AN ARRAY APPENDED



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-6

; Digital Equipment Corporation

;

;17300  1474	!	TO THE MODULE DESCRIPTOR BLOCK. IT IS INITIALLY

;17400  1475	!	ALLOCATED WITH SPACE SUFFICIENT FOR 256

;17500  1476	!	ENTRIES AND IS TRUNCATED TO CORRECT NUMBER ON END OF MODULE

;17600  1477	!

;17700  1478	RETURN OBMODESC[OMD$AL_PSCMAP]+.PSCTNUM*PMT$C_SIZE

;17800  1479	END;











					 0000 0051F FNDPSCMAPENT:

							    .WORD   Save nothing					      ; 1467

		         50	  04   AC  D0 00521 	    MOVL    PSCTNUM, R0						      ; 1478

		         50	0000'DF40  7E 00525 	    MOVAQ   @OBMODESC[R0], R0					      ;

		         50	       20  C0 0052B 	    ADDL2   #32, R0						      ;

					   04 0052E 	    RET     							      ; 1467



; Routine Size:  16 bytes





;17900  1480	ROUTINE SYMBOLS =

;18000  1481	BEGIN

;18100  1482	!

;18200  1483	LOCAL

;18300  1484		LENGTH;

;18400  1485	!

;18500  1486	BIND

;18600  1487		SYMBOLREC = OBJREC[.GSDOFFSET] : BLOCK[,BYTE];

;18700  1488	!

;18800  1489	ENTRYMASK = 0;			! ZERO THE ENTRY MASK SINCE NONE EXISTS

;18900  1490	!

;19000  1491	IF ( .SYMBOLREC[GSY$W_FLAGS] AND SYM$M_DEF) EQL 0

;19100  1492	THEN BEGIN

;19200  1493		LENGTH = SYMBOLREC[SRF$T_NAME] - SYMBOLREC[SRF$C_START] +

;19300  1494				.SYMBOLREC[SRF$B_NAMLNG];

;19400  1495		SYMBOLSTRING = SYMBOLREC[SRF$B_NAMLNG];	! POINT TO THE SYMBOL STRING

;19500  1496	     END

;19600  1497	ELSE BEGIN

;19700  1498		LENGTH = SYMBOLREC[SDF$T_NAME] - SYMBOLREC[SDF$C_START] +

;19800  1499				.SYMBOLREC[SDF$B_NAMLNG];

;19900  1500		SYMBOLSTRING = SYMBOLREC[SDF$B_NAMLNG];	! POINT TO THE SYMBOL

;20000  1501	     END;

;20100  1502	IF NOT PROSYMBOL(0)				! GO PROCESS THIS SYMBOL

;20200  1503	THEN RETURN FALSE;				! AND EXIT IF FAILURE

;20300  1504	GSDOFFSET = .GSDOFFSET + .LENGTH;	! UPDATE THE GSD OFFSET FOR NEXT

;20400  1505	RETURN TRUE;

;20500  1506	END;











					 0804 0052F SYMBOLS:.WORD   Save R2,R11						      ; 1480

		         5B	0000'  CF  9E 00531 	    MOVAB   GSDOFFSET, R11					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-7

; Digital Equipment Corporation

;

		         50	       6B  3C 00536 	    MOVZWL  GSDOFFSET, R0					      ; 1487

		         50	  02   AB  C0 00539 	    ADDL2   OBJREC, R0						      ;

				  0E   AB  B4 0053D 	    CLRW    ENTRYMASK						      ; 1489

	   16	    02   A0	       01  E0 00540 	    BBS     #1, 2(R0), 1$					      ; 1491

	   51	         50	       50  C3 00545 	    SUBL3   R0, R0, R1						      ; 1493

		         52	  04   A0  9A 00549 	    MOVZBL  4(R0), R2						      ;

		         51	       52  C0 0054D 	    ADDL2   R2, R1						      ;

	   52	         51	       05  C1 00550 	    ADDL3   #5, R1, LENGTH					      ;

		    06   AB	  04   A0  9E 00554 	    MOVAB   4(R0), SYMBOLSTRING					      ; 1495

				       14  11 00559 	    BRB     2$							      ; 1491

	   51	         50	       50  C3 0055B 1$:     SUBL3   R0, R0, R1						      ; 1498

		         52	  09   A0  9A 0055F 	    MOVZBL  9(R0), R2						      ;

		         51	       52  C0 00563 	    ADDL2   R2, R1						      ;

	   52	         51	       0A  C1 00566 	    ADDL3   #10, R1, LENGTH					      ;

		    06   AB	  09   A0  9E 0056A 	    MOVAB   9(R0), SYMBOLSTRING					      ; 1500

				       7E  D4 0056F 2$:     CLRL    -(SP)						      ; 1502

		  0000V  CF	       01  FB 00571 	    CALLS   #1, PROSYMBOL					      ;

		         07	       50  E9 00576 	    BLBC    R0, 3$						      ;

		         6B	       52  A0 00579 	    ADDW2   LENGTH, GSDOFFSET					      ; 1504

		         50	       01  D0 0057C 	    MOVL    #1, R0						      ; 1505

					   04 0057F 	    RET     							      ;

				       50  D4 00580 3$:     CLRL    R0							      ; 1480

					   04 00582 	    RET     							      ;



; Routine Size:  84 bytes





;20600  1507	ROUTINE ENTPNTS =

;20700  1508	BEGIN

;20800  1509	!

;20900  1510	LOCAL

;21000  1511		LENGTH;

;21100  1512	!

;21200  1513	BIND

;21300  1514		SYMBOLREC = OBJREC[.GSDOFFSET] : BLOCK[,BYTE];

;21400  1515	!

;21500  1516	ENTRYMASK = .SYMBOLREC[EPM$W_MASK];				! EXTRACT THE ENTRY POINT MASK

;21600  1517	!

;21700  1518	LENGTH = SYMBOLREC[EPM$T_NAME] - SYMBOLREC[EPM$C_START] +

;21800  1519				.SYMBOLREC[EPM$B_NAMLNG];

;21900  1520	SYMBOLSTRING = SYMBOLREC[EPM$B_NAMLNG];				! POINT TO THE SYMBOL

;22000  1521	IF NOT PROSYMBOL(SYM$M_ENTMSK)					! GO PROCESS THE SYMBOL

;22100  1522	THEN RETURN FALSE;						! AND EXIT IF FAILURE

;22200  1523	GSDOFFSET = .GSDOFFSET + .LENGTH;				! ELSE UPDATE THE OFFSET FOR NEXT

;22300  1524	RETURN TRUE;

;22400  1525	END;











					 0804 00583 ENTPNTS:.WORD   Save R2,R11						      ; 1507

		         5B	0000'  CF  9E 00585 	    MOVAB   GSDOFFSET, R11					      ;

		         50	       6B  3C 0058A 	    MOVZWL  GSDOFFSET, R0					      ; 1514

		         50	  02   AB  C0 0058D 	    ADDL2   OBJREC, R0						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-8

; Digital Equipment Corporation

;

		    0E   AB	  09   A0  B0 00591 	    MOVW    9(R0), ENTRYMASK					      ; 1516

	   51	         50	       50  C3 00596 	    SUBL3   R0, R0, R1						      ; 1518

		         52	  0B   A0  9A 0059A 	    MOVZBL  11(R0), R2						      ;

		         51	       52  C0 0059E 	    ADDL2   R2, R1						      ;

	   52	         51	       0C  C1 005A1 	    ADDL3   #12, R1, LENGTH					      ;

		    06   AB	  0B   A0  9E 005A5 	    MOVAB   11(R0), SYMBOLSTRING				      ; 1520

		         7E	8000   8F  3C 005AA 	    MOVZWL  #32768, -(SP)					      ; 1521

		  0000V  CF	       01  FB 005AF 	    CALLS   #1, PROSYMBOL					      ;

		         07	       50  E9 005B4 	    BLBC    R0, 1$						      ;

		         6B	       52  A0 005B7 	    ADDW2   LENGTH, GSDOFFSET					      ; 1523

		         50	       01  D0 005BA 	    MOVL    #1, R0						      ; 1524

					   04 005BD 	    RET     							      ;

				       50  D4 005BE 1$:     CLRL    R0							      ; 1507

					   04 005C0 	    RET     							      ;



; Routine Size:  62 bytes





;22500  1526	ROUTINE PROCEDEF =

;22600  1527	BEGIN

;22700  1528	!

;22800  1529	!	A PROCEDURE DEFINITION IS AN EXTENDED ENTRY POINT DEFINITION, CARRYING WITH

;22900  1530	!	IT A DESCRIPTION OF THE PROCEDURE'S FORMAL ARGUMENTS. PROCESSING THESE CONSISTS

;23000  1531	!	IN NORMAL SYMBOL DEFINITION PROCESSING FOLLOWED BY:-

;23100  1532	!		(1) VALIDATION OF THE FORMAT OF FORMAL DESCRIPTION (I.E. JUST CHECK

;23200  1533	!			THAT MINIMUM NUMBER OF ARGUMENTS SPECIFIED IS LESS THAN

;23300  1534	!			OR EQUAL TO THE MAXIMUM.

;23400  1535	!		(2) ALLOCATION OF AN ARGUMENT VALIDATION DATA ARRAY WHICH

;23500  1536	!			HAS THE FOLLOWING FORMAT:

;23600  1537	!				------------

;23700  1538	!				!  N+2     ! LENGTH OF ARRAY WHERE N = MAXIMUM # ARGUMENTS

;23800  1539	!				------------

;23900  1540	!				!  MIN     ! MINIMUM NUMBER OF ARGS

;24000  1541	!				------------

;24100  1542	!				! PASS M 1 ! PASSING MECHANISM OF ARG 1

;24200  1543	!				------------

;24300  1544	!				! PASS M 2 !    "        "         "  2

;24400  1545	!				------------

;24500  1546	!				   ETC TO N ARGUMENTS

;24600  1547	!

;24700  1548	!	NOTE THAT ONLY THE VALIDATION CONTROL BYTE, ARGUMENT PASSING MECHANISM

;24800  1549	!	IS EXTRACTED FROM THE FORMAL ARGUMENT DESCRIPTORS. THE REST OF SUCH

;24900  1550	!	DESCRIPTORS IS IGNORED.

;25000  1551	!

;25100  1552	!	THE SYMBOL TABLE ENTRY POINTS TO THIS ARRAY. NOTE THAT MULTIPLE DEFINITION OF THE

;25200  1553	!	SAME PROCEDURE WILL REPLACE THE VALIDATION DATA WITH NEW DATA.

;25300  1554	LOCAL

;25400  1555		ARGCOUNT;

;25500  1556	!

;25600  1557	IF NOT ENTPNTS() THEN RETURN FALSE				! PROCESS THE ENTRY POINT SYMBOL PART

;25700  1558	ELSE BEGIN

;25800  1559		BIND	ARGVALDATA = SYMTABENT[SYM$L_VALDATA] : REF VECTOR[,BYTE],	! NAME THE VALIDATION DATA ARRAY

;25900  1560			FORMALS = OBJREC[.GSDOFFSET] : BLOCK[,BYTE];		! AND THE FORMAL DESCRIPTION

;26000  1561		IF .FORMALS[FML$B_MINARGS] GTRU .FORMALS[FML$B_MAXARGS]		! IF THERE IS AN INCONSISTENT

;26100  1562		THEN BEGIN							! DESCRIPTION OF FORMALS



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-9

; Digital Equipment Corporation

;

;26200  1563			LNK$ERRMSG(ERM$C_ILLFMLCNT,SEV$C_DIAG,			! OUTPUT ERROR MESSAGE

;26300  1564				.FORMALS[FML$B_MINARGS],.FORMALS[FML$B_MAXARGS],

;26400  1565				SYMTABENT[SYM$B_NAMLNG]);

;26500  1566			RETURN FALSE;

;26600  1567		     END;

;26700  1568		GSDOFFSET = .GSDOFFSET + FML$C_SIZE;			! UPDATE RECORD POINTER

;26800  1569		IF .SYMTABENT[SYM$L_VALDATA] NEQ 0			! IF VALIDATION DATA ALREADY EXISTS

;26900  1570		THEN BEGIN						! MUST BE A NEW DEFINITION

;27000  1571			LNK$DEALBLK(.ARGVALDATA[0],ARGVALDATA[0]);	! SO DISPOSE OF OLD DATA

;27100  1572			SYMTABENT[SYM$L_VALDATA] = 0;			! AND FORGET IT

;27200  1573		     END;

;27300  1574		IF (ARGCOUNT = .FORMALS[FML$B_MAXARGS] ) EQL 0		! IF MAXIMUM NUMBER ARGUMENTS

;27400  1575		THEN RETURN TRUE;					! IS ZERO, ALL DONE

;27500  1576		LNK$ALLOBLK(.ARGCOUNT+2,SYMTABENT[SYM$L_VALDATA]);	! ALLOCATE A VALIDATION DATA BLOCK

;27600  1577		ARGVALDATA[0] = .ARGCOUNT + 2;				! SET ITS SIZE

;27700  1578		ARGVALDATA[1] = .FORMALS[FML$B_MINARGS];		! SAVE MINIMUM ARGUMENT SPECIFICATION

;27800  1579		INCR I FROM 1 TO .ARGCOUNT				! BEGIN A LOOP THROUGH

;27900  1580		DO BEGIN						! ALL FORMAL ARGUMENT DESCRIPTORS

;28000  1581			BIND ARGDESC = OBJREC[.GSDOFFSET] : BLOCK[,BYTE]; ! POINT TO NEXT DESCRIPTOR

;28100  1582			ARGVALDATA[.I+1] = .ARGDESC[ARG$V_PASSMECH];	  ! EXTRACT THE PASSING MECHANISM

;28200  1583			GSDOFFSET = .GSDOFFSET + .ARGDESC[ARG$B_BYTECNT]+ ! AND UPDATE RECORD POINTER

;28300  1584					ARG$C_SIZE;

;28400  1585		   END;

;28500  1586		RETURN TRUE;

;28600  1587	     END;

;28700  1588	END;











					 083C 005C1 PROCEDEF:

							    .WORD   Save R2,R3,R4,R5,R11				      ; 1526

		         5B	0000'  CF  9E 005C3 	    MOVAB   GSDOFFSET, R11					      ;

		    B7   AF	       00  FB 005C8 	    CALLS   #0, ENTPNTS						      ; 1557

		         2A	       50  E9 005CC 	    BLBC    R0, 1$						      ;

	   55	    0A   AB	       26  C1 005CF 	    ADDL3   #38, SYMTABENT, R5					      ; 1559

		         53	       6B  3C 005D4 	    MOVZWL  GSDOFFSET, R3					      ; 1560

		         53	  02   AB  C0 005D7 	    ADDL2   OBJREC, R3						      ;

		    01   A3	       63  91 005DB 	    CMPB    (R3), 1(R3)						      ; 1561

				       1A  1B 005DF 	    BLEQU   2$							      ;

	   7E	    0A   AB	       08  C1 005E1 	    ADDL3   #8, SYMTABENT, -(SP)				      ; 1565

		         7E	  01   A3  9A 005E6 	    MOVZBL  1(R3), -(SP)					      ; 1563

		         7E	       63  9A 005EA 	    MOVZBL  (R3), -(SP)						      ;

		         7E	       00  9A 005ED 	    MOVZBL  #SEV$C_DIAG, -(SP)					      ;

		         7E	  00G  8F  9A 005F0 	    MOVZBL  #ERM$C_ILLFMLCNT, -(SP)				      ;

		  0000G  CF	       05  FB 005F4 	    CALLS   #5, LNK$ERRMSG					      ;

				       62  11 005F9 1$:     BRB     7$							      ; 1566

		         6B	       02  A0 005FB 2$:     ADDW2   #2, GSDOFFSET					      ; 1568

	   54	    0A   AB	       26  C1 005FE 	    ADDL3   #38, SYMTABENT, R4					      ; 1569

				       64  D5 00603 	    TSTL    (R4)						      ;

				       12  13 00605 	    BEQL    3$							      ;

				       65  DD 00607 	    PUSHL   (R5)						      ; 1571

		         7E	  00   B5  9A 00609 	    MOVZBL  @0(R5), -(SP)					      ;

		  0000G  CF	       02  FB 0060D 	    CALLS   #2, LNK$DEALBLK					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-10

; Digital Equipment Corporation

;

	   54	    0A   AB	       26  C1 00612 	    ADDL3   #38, SYMTABENT, R4					      ; 1572

				       64  D4 00617 	    CLRL    (R4)						      ;

		         52	  01   A3  9A 00619 3$:     MOVZBL  1(R3), ARGCOUNT					      ; 1574

				       3A  13 0061D 	    BEQL    6$							      ;

				       54  DD 0061F 	    PUSHL   R4							      ; 1576

				  02   A2  9F 00621 	    PUSHAB  2(ARGCOUNT)						      ;

		  0000G  CF	       02  FB 00624 	    CALLS   #2, LNK$ALLOBLK					      ;

		         50	       65  D0 00629 	    MOVL    (R5), R0						      ; 1577

		         51	  02   A2  9E 0062C 	    MOVAB   2(ARGCOUNT), R1					      ;

		         60	       51  90 00630 	    MOVB    R1, (R0)						      ;

		    01   A0	       63  90 00633 	    MOVB    (R3), 1(R0)						      ; 1578

				       51  D4 00637 	    CLRL    I							      ; 1579

				       1A  11 00639 	    BRB     5$							      ;

		         53	       6B  3C 0063B 4$:     MOVZWL  GSDOFFSET, R3					      ; 1581

		         53	  02   AB  C0 0063E 	    ADDL2   OBJREC, R3						      ;

		    01 A140	       63  90 00642 	    MOVB    (R3), 1(I)[R0]					      ; 1582

		         54	       6B  3C 00647 	    MOVZWL  GSDOFFSET, R4					      ; 1583

		         53	  01   A3  9A 0064A 	    MOVZBL  1(R3), R3						      ;

		         53	       54  C0 0064E 	    ADDL2   R4, R3						      ;

	   6B	         53	       02  A1 00651 	    ADDW3   #2, R3, GSDOFFSET					      ;

	   E2	         51	       52  F3 00655 5$:     AOBLEQ  ARGCOUNT, I, 4$					      ; 1579

		         50	       01  D0 00659 6$:     MOVL    #1, R0						      ; 1586

					   04 0065C 	    RET     							      ;

				       50  D4 0065D 7$:     CLRL    R0							      ; 1526

					   04 0065F 	    RET     							      ;



; Routine Size:  159 bytes





;28800  1589	ROUTINE PROSYMBOL (ENTMSKFLG) =

;28900  1590	BEGIN

;29000  1591	!

;29100  1592	!++

;29200  1593	!	THIS ROUTINE DOES ALL THE WORK OF PROCESSING SYMBOLS ON

;29300  1594	!	PASS 1, INCLUDING ENTRY POINTS, SIMPLE SYMBOL DEFINITIONS

;29400  1595	!	AND REFERENCES AND PROCEDURE NAMES. THE FOLLOWING OPERATIONS

;29500  1596	!	ARE PERFORMED.

;29600  1597	!		(1) IF THE CURRENT OBJECT MODULE IS A SELECTIVE

;29700  1598	!		    SEARCH MODULE, THEN ONLY DEFINITIONS ARE

;29800  1599	!		    CONSIDERED. THESE ARE IGNORED UNLESS THERE

;29900  1600	!		    IS A CURRENT OUTSTANDING REFERENCE TO THAT SYMBOL.

;30000  1601	!		(2) IF A DEFINITION ALREADY EXISTS IN THE TABLE AND THIS

;30100  1602	!		    INCOMING SYMBOL IS A DEFINITION, PRODUCE AN ERROR UNLESS

;30200  1603	!		    THEY ARE EQUAL, ABSOLUTE SYMBOLS OR UNLESS THIS

;30300  1604	!		    IS A SELECTIVE SEARCH MODULE

;30400  1605	!		(3) IF THERE IS NO SYMBOL IN THE TABLE, INSERT THIS

;30500  1606	!		    ONE.

;30600  1607	!		(4) IF THE ENTRY FOUND IS A REFERENCE AND THE IN

;30700  1608	!		    COMING SYMBOL IS A DEFINITION, THE FLAGS, DATA TYPE

;30800  1609	!		    AND VALUE ARE COPIED INTO THE ENTRY AFTER REMOVING IT

;30900  1610	!		    FROM THE UNDEFINED LIST.

;31000  1611	!		(5) IF THE P-SECTION SPECIFICATION HAS BEEN SEEN,

;31100  1612	!		    THE BASE OF THIS MODULE'S CONTRIBUTION TO THE P-SECTION IS

;31200  1613	!		    ADDED, AND THE SYMBOL LINKED ON TO THE P-SECTION

;31300  1614	!		    SYMBOL LIST.



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-11

; Digital Equipment Corporation

;

;31400  1615	!		(6) IF P-SECTION HAS NOT BEEN SEEN, FIND THE MAPPING

;31500  1616	!		    TABLE ENTRY AND LINK THIS SYMBOL ON TO ITS

;31600  1617	!		    LIST OF PREMATURELY DEFINED SYMBOLS. THE SYMBOL

;31700  1618	!		    WILL BE RELOCATED WHEN P-SECTION IS DEFINED.

;31800  1619	!		(7) UNDEFINED SYMBOLS ARE LINKED ON TO THE UNDEFINED

;31900  1620	!		    SYMBOL LIST AND A COUNT OF THEM IS KEPT IF THE

;32000  1621	!		    REFERENCES TO THEM ARE NOT WEAK.

;32100  1622	!

;32200  1623	!	ENTMSKFLG IS A FLAG MASK TO BE OR'ED WITH THE SYMBOL DEFINITION

;32300  1624	!	FLAGS WHEN ENTERING A DEFINITION.

;32400  1625	!

;32500  1626	!

;32600  1627	!--

;32700  1628	!

;32800  1629	LOCAL

;32900  1630		NXTSYMENT : REF BLOCK[,BYTE],				! USED AS POINTER IN SCAN OF UNDEFINED LIST

;33000  1631		PSCTMAPENT : REF VECTOR,				! POINTER TO MAPPING TABLE ENTRY

;33100  1632		PSCTDESC : REF BLOCK[,BYTE],				! POINTER TO P-SECT DESCRIPTION

;33200  1633		MODPSCONTRIBLK : REF BLOCK[,BYTE];			! POINTER TO THIS MODULE'S 

;33300  1634									! CONTRIBUTION BLOCK

;33400  1635	BIND

;33500  1636		SYMBOLREC = OBJREC[.GSDOFFSET] : BLOCK[,BYTE];

;33600  1637	!

;33700  1638	BUILTIN

;33800  1639		INSQUE,							! INSERTS ENTRIES IN INDEFINED LIST

;33900  1640		REMQUE;							! REMOVES THEM

;34000  1641	!

;34100  1642	!	FIRST CHECK VALID SYMBOL NAME

;34200  1643	!

;34300  1644	IF .SYMBOLSTRING[0] GTRU SYM$C_MAXLNG				! IF THE SYMBOL LENGTH IS OUTSIDE

;34400  1645	OR .SYMBOLSTRING[0] EQL 0					! LEGAL RANGE

;34500  1646	THEN (LNK$ERRMSG(ERM$C_SPNAMLNG,SEV$C_INFOR,.SYMBOLSTRING[0],	! ISSUE AN ERROR MESSAGE AND

;34600  1647				SYM$C_MAXLNG);   RETURN FALSE);		! RETURN FAILURE

;34700  1648	!

;34800  1649	IF (.OBMODESC[OMD$B_FLAGS] AND OMD$M_SELSER) NEQ 0		! IF SELECTIVE SEARCH

;34900  1650	AND (.SYMBOLREC[GSY$W_FLAGS] AND SYM$M_DEF) NEQ 0		! MODULE, AND THIS IS A

;35000  1651	THEN BEGIN							! DEFINITION, IGNORE IT UNLESS

;35100  1652		IF NOT LNK$SEARCH(SYMBOLSTRING[0],SYMTABENT)		! IT HAS ALREADY 

;35110  1653		THEN BEGIN

;35200  1654		     IF .(LNK$GL_CURCLU[CLU$W_FLAGS])<CLU$V_PENDING>	! BEEN INSERTED AND THIS

;35210  1655		     THEN BEGIN						! IS INTERNAL SHARED IMAGE

;35220  1656			LOCAL	DEFERREDSYM : REF BLOCK[,BYTE];		! POINTER TO DESCRIPTOR

;35230  1657			LNK$ALLOBLK(SYM$C_SIZE,DEFERREDSYM);		! ALLOCATE A DESCRIPTOR

;35240  1658			CH$MOVE(.SYMBOLSTRING[0]+1,SYMBOLSTRING[0],	! IN WHICH TO SAVE THE SYMBOL

;35250  1659					DEFERREDSYM[SYM$B_NAMLNG]);	! FOR POSSIBLE LATER USE

;35260  1660			DEFERREDSYM[SYM$W_FLAGS] = .SYMBOLREC[GSY$W_FLAGS]	! SET THE FLAGS

;35270  1661						OR .ENTMSKFLG OR SYM$M_SHRIMG;	!

;35280  1662			IF .LNK$GL_CTLMSK<LNK$S_SUPSYS,1,0>			! IF SYSTEM SYMBOLS ARE

;35290  1663			THEN DEFERREDSYM[SYM$W_FLAGS] = .DEFERREDSYM[SYM$W_FLAGS] ! SUPRESSED THEN MARK

;35292  1664								OR SYM$M_SUPRES; ! THIS AS SUPRESSED

;35294  1665			DEFERREDSYM[SYM$B_DATYP] = .SYMBOLREC[GSY$B_DATYP];	! SET DATA TYPE

;35296  1666			DEFERREDSYM[SYM$L_VALUE] = .SYMBOLREC[SDF$L_VALUE];	! GET ITS VALUE

;35298  1667			DEFERREDSYM[SYM$W_ENTMSK] = .ENTRYMASK;			! REGISTER SAVE MASK

;35300  1668			PSCTMAPENT = FNDPSCMAPENT (.SYMBOLREC[SDF$B_PSINDX]);	! FIND P-SECTION

;35302  1669										! MAPPING TABLE ENTRY



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 3-12

; Digital Equipment Corporation

;

;35304  1670			PSCTDESC = .PSCTMAPENT[PMT$L_PSCDES];			! THEN P-SECTION DESCRIPTOR

;35308  1671			MODPSCONTRIBLK = .PSCTMAPENT[PMT$L_MODCON];		! AND MODULE'S CONTRIBUTION

;35310  1672			DEFERREDSYM[SYM$L_VALUE] = .DEFERREDSYM[SYM$L_VALUE]+	! BLOCK AND ADD

;35312  1673					 .MODPSCONTRIBLK[MPC$L_OFFSET];		! THE OFFSET FROM

;35314  1674			DEFERREDSYM[SYM$L_PSCLST] = .PSCTDESC;			! P-SECT BASE

;35316  1675			DEFERREDSYM[SYM$L_COLIST] = .DEFERREDLIST;		! LINK ON DEFERRED DEFINITION

;35318  1676			DEFERREDLIST = .DEFERREDSYM;				! LIST FOR LATER

;35320  1677		     END;							! LIST

;35330  1678		     RETURN TRUE;

;35335  1679		     END;

;35340  1680	     END



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 4

; Digital Equipment Corporation

;

;35400  1681	ELSE IF NOT LNK$SEARCH(SYMBOLSTRING[0],SYMTABENT)		! IF NOT A SELECTIVE SEARCH

;35500  1682		THEN BEGIN						! OR IT IS A REFERENCE

;35600  1683			LNK$INSERT(SYMBOLSTRING[0],SYMTABENT);			! AND SYMBOL IS NOT IN THE TABLE

;35700  1684			LNK$GW_NSYMBOLS = .LNK$GW_NSYMBOLS + 1;			! INSERT IT AND COUNT IT

;35800  1685			SYMTABENT[SYM$W_FLAGS] = .SYMBOLREC[GSY$W_FLAGS] AND	! EXTRACT THE INTERESTING

;35900  1686						(SYM$M_WEAK OR SYM$M_REL OR	! SYMBOL FLAGS (OMITTING DEF FOR

;36000  1687							SYM$M_UNI);		! NOW INTO THE TABLE ENTRY

;36100  1688			IF .LNK$GL_CTLMSK<LNK$S_INTFIL,1,0>			! IF THIS IS THE INTERNAL (SYSTEM

;36200  1689			AND .LNK$GL_CTLMSK<LNK$S_SUPSYS,1,0>			! LIBARY FILE) AND THE DSUPPRESSION

;36300  1690			THEN SYMTABENT[SYM$W_FLAGS] = .SYMTABENT[SYM$W_FLAGS] OR ! IS ON THEN SUPPRESS THIS

;36400  1691							SYM$M_SUPRES;		! SYMBOL

;36500  1692			IF (.SYMBOLREC[GSY$W_FLAGS] AND SYM$M_DEF) EQL 0	! AND IF IT WAS A REFERENCE

;36600  1693			THEN BEGIN						! JUST INSERTED IN TABLE

;36700  1694				NXTSYMENT = LNK$GL_UDFLST;			! SCAN DOWN THE UNDEFINED

;36800  1695				WHILE (NXTSYMENT = .NXTSYMENT[SYM$L_UDFLINK])	! SYMBOL LIST

;36900  1696						NEQ LNK$GL_UDFLST DO		! TO THE END IF NECESSARY

;37000  1697				IF CH$GTR(.NXTSYMENT[SYM$B_NAMLNG],		! LOOKING FOR ONE THAT

;37100  1698					NXTSYMENT[SYM$T_NAME],.SYMTABENT[SYM$B_NAMLNG],	! FOLLOWS THIS

;37200  1699					SYMTABENT[SYM$T_NAME])				! LEXICALLY

;37300  1700				THEN EXITLOOP;					! AND WE THEN HAVE THE

;37400  1701				INSQUE(SYMTABENT[SYM$L_UDFLINK],		! THIS UNDEFINED SYMBOL

;37500  1702					.NXTSYMENT[SYM$L_UDFBLINK]);		! AND IT IS PERHAPS END OF LIST

;37600  1703				IF (.SYMTABENT[SYM$W_FLAGS] AND SYM$M_WEAK) EQL 0 ! IF THE REFERENCE IS NOT WEAK

;37700  1704				THEN BEGIN					! REFERENCE

;37800  1705					LNK$GW_NUDFSYMS = .LNK$GW_NUDFSYMS + 1;	! COUNT AS UNDEFINED ALSO

;37900  1706					IF .(LNK$GL_CURFIL[FDB$B_FILFLGS])	! IF THE CURRENT FILE IS A SEARCH

;38000  1707						<LNK$S_LIBSRCH,1,0>		! LIBRARY AND THE MODULE IS PULLED

;38100  1708					AND .LNK$GL_LIBSYM NEQ 0		! IN TO RESOLVE AN UNDEFINED SYMBOL

;38200  1709					AND (.LNK$GL_LIBSYM EQL LNK$GL_UDFLST	! AND THE LIST HAS EMPTIED DURING

;38300  1710					    OR					! THE PROCESSING OF THIS MODULE OR

;38400  1711					    CH$LSS(.SYMTABENT[SYM$B_NAMLNG],	! IF THE REFERENCE JUST INSERTED

;38500  1712						SYMTABENT[SYM$T_NAME],		! LEXICALLY PRECEEDS THE ONE WHICH

;38600  1713						.LNK$GL_LIBSYM[SYM$B_NAMLNG],	! WILL BE SEARCHED FOR NEXT,

;38700  1714						LNK$GL_LIBSYM[SYM$T_NAME]))	! SET THE NEW UNDEFINED SYMBOLS FLAG

;38800  1715					THEN (LNK$GL_CURFIL[FDB$B_FILFLGS])	! FOR THE FILE SO THAT THE LIBRARY

;38900  1716						<LNK$S_NEWUDF,1,0> =		! SEARCH WILL RETURN TO THE TOP OF

;39000  1717							TRUE;			! UNDEFINED LIST ONE MORE TIME

;39100  1718				     END;

;39200  1719				CREFILTER(FALSE);			! AFTER CROSS REFERENCING

;39300  1720			     	RETURN TRUE;				! AND WE ARE DONE WITH THIS

;39400  1721			     END;					! UNRESOLVED REFERENCE SO RETURN SUCCESS

;39500  1722									! INSERTING A NEW DEFINITION FOR FIRST

;39600  1723			SYMTABENT[SYM$L_UDFLINK] = 0;			! TIME, SO ZERO FLAGS AND UNDEFINED LIST

;39700  1724									! POINTER WHICH WE USE LATER

;39800  1725		     END;						! AND CONTINUE

;39900  1726	IF (.SYMTABENT[SYM$W_FLAGS] AND SYM$M_DEF) NEQ 0		! IF THE ENTRY IN

;40000  1727	THEN BEGIN							! THE SYMBOL TABLE IS

;40100  1728		IF (.OBMODESC[OMD$B_FLAGS] AND OMD$M_SELSER) NEQ 0	! A DEFINITION AND

;40200  1729		THEN RETURN TRUE					! THIS IS SELECTIVE

;40300  1730		ELSE IF (.SYMBOLREC[GSY$W_FLAGS] AND SYM$M_DEF) EQL 0	! SEARCH, IGNORE SYMBOL.

;40400  1731		THEN BEGIN						! IGNORE REFERENCE TO

;40500  1732			CREFILTER(FALSE);				! DEFINED SYMBOL EXCEPT FOR CROSS-REF

;40600  1733			RETURN TRUE;					! AND ALL DONE

;40700  1734		     END;

;40800  1735	!



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 4-1

; Digital Equipment Corporation

;

;40900  1736	!	HERE WE HAVE A MULTIPLE DEFINITION FROM A NON SELECTIVE

;41000  1737	!	SEARCH MODULE. IF BOTH DEFINITIONS ARE ABSOLUTE AND

;41100  1738	!	THE VALUES ARE EQUAL ALL IS WELL. OTHERWISE WE

;41200  1739	!	HAVE AN ERROR.

;41300  1740	!

;41400  1741		IF .SYMBOLREC[SDF$L_VALUE] EQL .SYMTABENT[SYM$L_VALUE]

;41500  1742		AND (.SYMBOLREC[GSY$W_FLAGS] AND SYM$M_REL) EQL 0

;41600  1743		AND (.SYMTABENT[SYM$W_FLAGS] AND SYM$M_REL) EQL 0

;41700  1744		THEN RETURN TRUE;

;41710  1745		IF .LNK$GL_CTLMSK<LNK$S_INTFIL,1,0>			! ALSO IGNORE IF IT IS

;41720  1746		AND .(OBMODESC[OMD$B_FLAGS])<OMD$S_SHRIMG,1,0>		! INTERNAL SHARED IMAGE

;41730  1747		THEN RETURN TRUE

;41800  1748		ELSE BEGIN

;41900  1749			LNK$ERRMSG (ERM$C_MULDEF,SEV$C_DIAG,SYMBOLSTRING[0],

;42000  1750					OBMODESC[OMD$B_NAMLNG]);

;42100  1751			IF (.SYMBOLREC[GSY$W_FLAGS] AND SYM$M_REL) EQL 0	! IF BOTH ARE ABSOLUTE

;42200  1752			AND (.SYMTABENT[SYM$W_FLAGS] AND SYM$M_REL) EQL 0	! THEN WE SIMPLY RE-DEFINE

;42300  1753			THEN SYMTABENT[SYM$L_VALUE] = .SYMBOLREC[SDF$L_VALUE];	! THE VALUE

;42400  1754			RETURN TRUE;

;42500  1755		     END;

;42600  1756	     END

;42700  1757	!

;42800  1758	!	THE ENTRY IN THE SYMBOL TABLE IS EITHER A NEW REFERENCE

;42900  1759	!	JUST INSERTED OR A REFERENCE AWAITING DEFINITION.

;43000  1760	!

;43100  1761	!	IF THIS IS AN INCOMING DEFINITION WE PROCEED TO DEFINE THE

;43200  1762	!	SYMBOL. THAT IS:

;43300  1763	!			IF UDFLINK FIELD IS NON ZERO, THE TABLE ENTRY

;43400  1764	!			IS ON THE UNDEFINED SYMBOL LIST, SO REMOVE IT

;43500  1765	!			AND DECREMENT THE UNDEFINED COUNT (PROVIDED IT IS

;43600  1766	!			NOT A WEAK REFERENCE).

;43700  1767	!

;43800  1768	!			THEN COPY INTO THE SYMBOL TABLE ENTRY THE FLAGS,

;43900  1769	!			VALUE, ENTRY MASK, DATA TYPE AND FINALLY

;44000  1770	!			LINK THE SYMBOL ON THE OWNING P-SECTION LIST

;44100  1771	!

;44200  1772	!	IF THIS IS (ANOTHER) INCOMING REFERENCE, AND IT IS

;44300  1773	!	NOT A WEAK REFERENCE, ENSURE THAT THE SYMBOL TABLE ENTRY IS

;44400  1774	!	ALSO NOT A WEAK REFERENCE AND THAT THIS STRONG REFERENCE

;44500  1775	!	TO AN UNDEFINED SYMBOL IS COUNTED.

;44600  1776	!

;44700  1777	ELSE BEGIN

;44800  1778		IF (.SYMBOLREC[GSY$W_FLAGS] AND SYM$M_DEF) EQL 0		! IF THIS IS

;44900  1779		THEN BEGIN							! ANOTHER REFERENCE

;45000  1780			CREFILTER(FALSE);					! CROSS REFERENCE IT THEN

;45100  1781										! IF WEAK, IGNORE IT

;45200  1782			IF(.SYMBOLREC[GSY$W_FLAGS] AND SYM$M_WEAK) NEQ 0	! SINCE ONE WE HAVE IS AT LEAST WEAK

;45300  1783			THEN RETURN TRUE;					! AND NOTHING TO BE DONE

;45400  1784			IF (.SYMTABENT[SYM$W_FLAGS] AND SYM$M_WEAK) NEQ 0	! IF A STRONG REFERENCE AND SYMBOL TABLE

;45500  1785			THEN BEGIN						! ENTRY IS WEAK

;45600  1786				SYMTABENT[SYM$W_FLAGS] = .SYMTABENT[SYM$W_FLAGS]! MAKE SURE IT IS STRONG

;45700  1787							AND NOT SYM$M_WEAK;	! AND COUNT THE STRONG

;45800  1788				LNK$GW_NUDFSYMS = .LNK$GW_NUDFSYMS + 1;		! REFERENCE

;45900  1789			     END;

;46000  1790			RETURN TRUE;						! AND THAT'S IT FOR REFERENCES.



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 4-2

; Digital Equipment Corporation

;

;46100  1791		     END;

;46200  1792	!

;46300  1793	! AND NOW FOR A DEFINITION

;46400  1794	!

;46500  1795		IF .SYMTABENT[SYM$L_UDFLINK] NEQ 0			! IF THIS SYMBOL TABLE ENTRY IS ON

;46600  1796		THEN BEGIN						! UNDEFINED SYMBOL LIST,

;46700  1797			REMQUE(SYMTABENT[SYM$L_UDFLINK],NXTSYMENT);	! REMOVE FROM THE LIST

;46800  1798			IF .NXTSYMENT EQL .LNK$GL_LIBSYM		! IF THE ONE REMOVED IS THE ONE TO SEARCH

;46900  1799			THEN LNK$GL_LIBSYM = .NXTSYMENT[SYM$L_UDFLINK];	  ! FOR NEXT, MOVE TO ONE BEYOND

;47000  1800			IF (.SYMTABENT[SYM$W_FLAGS] AND SYM$M_WEAK) EQL 0 ! IF IT IS NOT A WEAK REFERENCE

;47100  1801			THEN LNK$GW_NUDFSYMS = .LNK$GW_NUDFSYMS - 1;	 ! DECREMENT NUMBER UNDEFINED

;47150  1802			IF .(LNK$GL_CURCLU[CLU$W_FLAGS])<CLU$V_PENDING> 	! CLEAR CLUSTER PENDING

;47160  1803			THEN BEGIN

;47170  1804				(LNK$GL_CURCLU[CLU$W_FLAGS])<CLU$V_PENDING> = FALSE;

;47180  1805				(OBMODESC[OMD$B_FLAGS])<OMD$S_SELSER,1,0> = FALSE; ! AND TURN OFF SELECTIVE

;47190  1806			     END;

;47200  1807		     END;

;47300  1808		SYMTABENT[SYM$W_FLAGS] = .SYMBOLREC[GSY$W_FLAGS] OR	! COPY THE FLAGS PRESERVING

;47400  1809						.ENTMSKFLG OR		! THE ENTRY POINT DEFINITION FLAG

;47500  1810					(.SYMTABENT[SYM$W_FLAGS] AND	! ALONG WITH THE SUPPRESSION

;47600  1811						(SYM$M_UNI OR SYM$M_SUPRES));	! AND UNIVERSAL FLAGS

;47700  1812		(SYMTABENT[SYM$W_FLAGS])<SYM$S_SHRIMG,1,0> = .(OBMODESC[OMD$B_FLAGS])<OMD$S_SHRIMG,1,0>;	! COPY SHR IMAGE FLAG

;47800  1813		SYMTABENT[SYM$B_DATYP] = .SYMBOLREC[GSY$B_DATYP];		! COPY DATA TYPE

;47900  1814		SYMTABENT[SYM$L_VALUE] = .SYMBOLREC[SDF$L_VALUE];		! COPY THE VALUE

;48000  1815		SYMTABENT[SYM$W_ENTMSK] = .ENTRYMASK;				! COPY THE MASK

;48100  1816		CREFILTER(TRUE);						! CROSS REFERENCE IT

;48200  1817		PSCTMAPENT = FNDPSCMAPENT (.SYMBOLREC[SDF$B_PSINDX]);		! FIND P-SECTION

;48300  1818										! MAPPING TABLE ENTRY

;48400  1819		IF (PSCTDESC = .PSCTMAPENT[PMT$L_PSCDES]) NEQ 0			! IF P-SECTION IS

;48500  1820		THEN BEGIN							! DEFINED, GET THIS

;48600  1821			MODPSCONTRIBLK = .PSCTMAPENT[PMT$L_MODCON];		! MODULE'S CONTRIBUTION

;48700  1822			SYMTABENT[SYM$L_VALUE] = .SYMTABENT[SYM$L_VALUE]+	! BLOCK AND ADD

;48800  1823					 .MODPSCONTRIBLK[MPC$L_OFFSET];		! THE OFFSET FROM

;48900  1824			SYMTABENT[SYM$L_PSCLST] = .PSCTDESC[PSC$L_SYMLST];	! P-SECT BASE

;49000  1825			PSCTDESC[PSC$L_SYMLST] = SYMTABENT[SYM$C_START];	! LINK SYMBOL

;49100  1826										! ON TO P-SECT

;49200  1827		     END							! LIST

;49300  1828		ELSE BEGIN							! P-SECTION NOT

;49400  1829			SYMTABENT[SYM$L_PSCLST] = .PSCTMAPENT[PMT$L_SYMLST];	! DEFINED YET, SO

;49500  1830			PSCTMAPENT[PMT$L_SYMLST] = SYMTABENT[SYM$C_START];	! LINK SYMBOL

;49600  1831										! ON LIST OFF

;49700  1832		     END;							! MAPPING TABLE

;49800  1833		IF .LNK$GL_CTLMSK<LNK$S_LONG,1,0>			! IF A LONG FORM MAP IS REQUIRED

;49900  1834		AND (.SYMTABENT[SYM$W_FLAGS] AND (SYM$M_REL OR		! AND THIS SYMBOL IS NOT GOING TO BE

;50000  1835						SYM$M_SUPRES)) EQL 0

;50100  1836		THEN CRF$INSRTREF(LNK$AL_VALCTLTB,			! RELOCATED LATER, INSERT THIS

;50200  1837					SYMTABENT[SYM$L_VALUE],		! SYMBOL AS A REFERENCE TO ITS

;50300  1838					SYMTABENT[SYM$B_NAMLNG],	! OWN VALUE

;50400  1839					.SYMTABENT[SYM$W_FLAGS],0);	!

;50500  1840		RETURN TRUE;

;50600  1841	     END;			! END OF DEFINITION

;50700  1842	END;			! END OF SYMBOL ROUTINE









; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 4-3

; Digital Equipment Corporation

;





					 0FFC 00660 PROSYMBOL:

							    .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11		      ; 1589

		         5A	0000'  CF  9E 00662 	    MOVAB   LNK$GL_UDFLST, R10					      ;

		         5B	0000'  CF  9E 00667 	    MOVAB   SYMTABENT, R11					      ;

		         5E	       04  C2 0066C 	    SUBL2   #4, SP						      ;

		         57	  F6   AB  3C 0066F 	    MOVZWL  GSDOFFSET, R7					      ; 1636

		         57	  F8   AB  C0 00673 	    ADDL2   OBJREC, R7						      ;

		         50	  FC   AB  D0 00677 	    MOVL    SYMBOLSTRING, R0					      ; 1644

		         0F	       60  91 0067B 	    CMPB    (R0), #15						      ;

				       04  1A 0067E 	    BGTRU   1$							      ;

				       60  95 00680 	    TSTB    (R0)						      ; 1645

				       14  12 00682 	    BNEQ    2$							      ;

				       0F  DD 00684 1$:     PUSHL   #15							      ; 1646

		         7E	       60  9A 00686 	    MOVZBL  (R0), -(SP)						      ;

		         7E	       00  9A 00689 	    MOVZBL  #SEV$C_INFOR, -(SP)					      ;

		         7E	  00G  8F  9A 0068C 	    MOVZBL  #ERM$C_SPNAMLNG, -(SP)				      ;

		  0000G  CF	       04  FB 00690 	    CALLS   #4, LNK$ERRMSG					      ;

				     0285  31 00695 	    BRW     28$							      ; 1647

		         50	  F0   AB  D0 00698 2$:     MOVL    OBMODESC, R0					      ; 1649

	   03	    0F   A0	       03  E0 0069C 	    BBS     #3, 15(R0), 3$					      ;

				     0082  31 006A1 	    BRW     6$							      ;

	   7D	    02   A7	       01  E1 006A4 3$:     BBC     #1, 2(R7), 6$					      ; 1650

				       5B  DD 006A9 	    PUSHL   R11							      ; 1652

				  FC   AB  DD 006AB 	    PUSHL   SYMBOLSTRING					      ;

		  0000G  CF	       02  FB 006AE 	    CALLS   #2, LNK$SEARCH					      ;

		         7A	       50  E8 006B3 	    BLBS    R0, 7$						      ;

		         50	0000G  CF  D0 006B6 	    MOVL    LNK$GL_CURCLU, R0					      ; 1654

	   63	    24   A0	       06  E1 006BB 	    BBC     #6, 36(R0), 5$					      ;

				       5E  DD 006C0 	    PUSHL   SP							      ; 1657

				       2A  DD 006C2 	    PUSHL   #42							      ;

		  0000G  CF	       02  FB 006C4 	    CALLS   #2, LNK$ALLOBLK					      ;

		         50	  FC   BB  9A 006C9 	    MOVZBL  @SYMBOLSTRING, R0					      ; 1658

				       50  D6 006CD 	    INCL    R0							      ;

		         56	       6E  D0 006CF 	    MOVL    DEFERREDSYM, R6					      ; 1659

      08   A6	    FC   BB	       50  28 006D2 	    MOVC3   R0, @SYMBOLSTRING, 8(R6)				      ; 1658

		         50	  02   A7  3C 006D8 	    MOVZWL  2(R7), R0						      ; 1661

		         50	  04   AC  C8 006DC 	    BISL2   ENTMSKFLG, R0					      ;

      1E   A6	         50	0800   8F  A9 006E0 	    BISW3   #2048, R0, 30(R6)					      ;

	   04	  0000G  CF	       00  E1 006E7 	    BBC     #LNK$S_SUPSYS, LNK$GL_CTLMSK, 4$			      ; 1662

		    1F   A6	       20  88 006ED 	    BISB2   #32, 31(R6)						      ; 1664

		    20   A6	  01   A7  90 006F1 4$:     MOVB    1(R7), 32(R6)					      ; 1665

		         66	  05   A7  D0 006F6 	    MOVL    5(R7), (R6)						      ; 1666

		    1C   A6	  04   AB  B0 006FA 	    MOVW    ENTRYMASK, 28(R6)					      ; 1667

		         7E	  04   A7  9A 006FF 	    MOVZBL  4(R7), -(SP)					      ; 1668

		  FE17   CF	       01  FB 00703 	    CALLS   #1, FNDPSCMAPENT					      ;

		         55	       50  D0 00708 	    MOVL    R0, PSCTMAPENT					      ;

		         59	       65  D0 0070B 	    MOVL    (PSCTMAPENT), PSCTDESC				      ; 1670

		         58	  04   A5  D0 0070E 	    MOVL    4(PSCTMAPENT), MODPSCONTRIBLK			      ; 1671

		         66	  08   A8  C0 00712 	    ADDL2   8(MODPSCONTRIBLK), (R6)				      ; 1672

		    04   A6	       59  D0 00716 	    MOVL    PSCTDESC, 4(R6)					      ; 1674

		    18   A6	  EC   AB  D0 0071A 	    MOVL    DEFERREDLIST, 24(R6)				      ; 1675

		    EC   AB	       56  D0 0071F 	    MOVL    R6, DEFERREDLIST					      ; 1676

				     01F3  31 00723 5$:     BRW     27$							      ; 1678



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 4-4

; Digital Equipment Corporation

;

				       5B  DD 00726 6$:     PUSHL   R11							      ; 1681

				  FC   AB  DD 00728 	    PUSHL   SYMBOLSTRING					      ;

		  0000G  CF	       02  FB 0072B 	    CALLS   #2, LNK$SEARCH					      ;

		         03	       50  E9 00730 7$:     BLBC    R0, 8$						      ;

				     009A  31 00733 	    BRW     15$							      ;

				       5B  DD 00736 8$:     PUSHL   R11							      ; 1683

				  FC   AB  DD 00738 	    PUSHL   SYMBOLSTRING					      ;

		  0000G  CF	       02  FB 0073B 	    CALLS   #2, LNK$INSERT					      ;

				  14   AA  B6 00740 	    INCW    LNK$GW_NSYMBOLS					      ; 1684

		         54	       6B  D0 00743 	    MOVL    SYMTABENT, R4					      ; 1685

      1E   A4	    02   A7	FFF2   8F  AB 00746 	    BICW3   #-14, 2(R7), 30(R4)					      ;

	   0A	  0000G  CF	       00  E1 0074E 	    BBC     #LNK$S_INTFIL, LNK$GL_CTLMSK, 9$			      ; 1688

	   04	  0000G  CF	       00  E1 00754 	    BBC     #LNK$S_SUPSYS, LNK$GL_CTLMSK, 9$			      ; 1689

		    1F   A4	       20  88 0075A 	    BISB2   #32, 31(R4)						      ; 1690

	   6A	    02   A7	       01  E0 0075E 9$:     BBS     #1, 2(R7), 14$					      ; 1692

		         56	       6A  9E 00763 	    MOVAB   LNK$GL_UDFLST, NXTSYMENT				      ; 1694

		         56	       66  D0 00766 10$:    MOVL    (NXTSYMENT), NXTSYMENT				      ; 1695

		         50	       6A  9E 00769 	    MOVAB   LNK$GL_UDFLST, R0					      ; 1696

		         50	       56  D1 0076C 	    CMPL    NXTSYMENT, R0					      ;

				       12  13 0076F 	    BEQL    11$							      ;

		         51	  08   A6  9A 00771 	    MOVZBL  8(NXTSYMENT), R1					      ; 1697

		         50	  08   A4  9A 00775 	    MOVZBL  8(R4), R0						      ; 1698

	   00	    09   A6	       51  2D 00779 	    CMPC5   R1, 9(NXTSYMENT), #0, R0, 9(R4)			      ; 1697

		    09   A4	       50     0077E									      ;

				       E3  1B 00781 	    BLEQU   10$							      ;

		    04   B6	       64  0E 00783 11$:    INSQUE  (R4), @4(NXTSYMENT)					      ; 1701

		         50	       6B  D0 00787 	    MOVL    SYMTABENT, R0					      ; 1703

		         36	  1E   A0  E8 0078A 	    BLBS    30(R0), 13$						      ;

				  18   AA  B6 0078E 	    INCW    LNK$GW_NUDFSYMS					      ; 1705

		         54	0000G  CF  D0 00791 	    MOVL    LNK$GL_CURFIL, R4					      ; 1706

	   29	    0A   A4	       07  E1 00796 	    BBC     #7, 10(R4), 13$					      ;

				0000G  CF  D5 0079B 	    TSTL    LNK$GL_LIBSYM					      ; 1708

				       23  13 0079F 	    BEQL    13$							      ;

		         51	0000G  CF  D0 007A1 	    MOVL    LNK$GL_LIBSYM, R1					      ; 1709

		         52	       6A  9E 007A6 	    MOVAB   LNK$GL_UDFLST, R2					      ;

		         52	       51  D1 007A9 	    CMPL    R1, R2						      ;

				       12  13 007AC 	    BEQL    12$							      ;

		         53	  08   A0  9A 007AE 	    MOVZBL  8(R0), R3						      ; 1711

		         52	  08   A1  9A 007B2 	    MOVZBL  8(R1), R2						      ; 1713

	   00	    09   A0	       53  2D 007B6 	    CMPC5   R3, 9(R0), #0, R2, 9(R1)				      ; 1711

		    09   A1	       52     007BB									      ;

				       04  1E 007BE 	    BGEQU   13$							      ;

		    0A   A4	       01  88 007C0 12$:    BISB2   #1, 10(R4)						      ; 1716

				       7E  D4 007C4 13$:    CLRL    -(SP)						      ; 1719

		  0000V  CF	       01  FB 007C6 	    CALLS   #1, CREFILTER					      ;

				       61  11 007CB 	    BRB     18$							      ; 1720

				  00   BB  D4 007CD 14$:    CLRL    @SYMTABENT						      ; 1723

		         50	       6B  D0 007D0 15$:    MOVL    SYMTABENT, R0					      ; 1726

	   58	    1E   A0	       01  E1 007D3 	    BBC     #1, 30(R0), 19$					      ;

		         50	  F0   AB  D0 007D8 	    MOVL    OBMODESC, R0					      ; 1728

	   6D	    0F   A0	       03  E0 007DC 	    BBS     #3, 15(R0), 20$					      ;

	   DE	    02   A7	       01  E1 007E1 	    BBC     #1, 2(R7), 13$					      ; 1730

		         50	       6B  D0 007E6 	    MOVL    SYMTABENT, R0					      ; 1741

		         60	  05   A7  D1 007E9 	    CMPL    5(R7), (R0)						      ;

				       0A  12 007ED 	    BNEQ    16$							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 4-5

; Digital Equipment Corporation

;

	   05	    02   A7	       03  E0 007EF 	    BBS     #3, 2(R7), 16$					      ; 1742

	   55	    1E   A0	       03  E1 007F4 	    BBC     #3, 30(R0), 20$					      ; 1743

	   09	  0000G  CF	       00  E1 007F9 16$:    BBC     #LNK$S_INTFIL, LNK$GL_CTLMSK, 17$			      ; 1745

		         50	  F0   AB  D0 007FF 	    MOVL    OBMODESC, R0					      ; 1746

	   46	    0F   A0	       02  E0 00803 	    BBS     #2, 15(R0), 20$					      ;

	   7E	    F0   AB	       10  C1 00808 17$:    ADDL3   #16, OBMODESC, -(SP)				      ; 1750

				  FC   AB  DD 0080D 	    PUSHL   SYMBOLSTRING					      ; 1749

		         7E	       00  9A 00810 	    MOVZBL  #SEV$C_DIAG, -(SP)					      ;

		         7E	  00G  8F  9A 00813 	    MOVZBL  #ERM$C_MULDEF, -(SP)				      ;

		  0000G  CF	       04  FB 00817 	    CALLS   #4, LNK$ERRMSG					      ;

	   2D	    02   A7	       03  E0 0081C 	    BBS     #3, 2(R7), 20$					      ; 1751

		         50	       6B  D0 00821 	    MOVL    SYMTABENT, R0					      ; 1752

	   25	    1E   A0	       03  E0 00824 	    BBS     #3, 30(R0), 20$					      ;

		    00   BB	  05   A7  D0 00829 	    MOVL    5(R7), @SYMTABENT					      ; 1753

				       1E  11 0082E 18$:    BRB     20$							      ; 1754

	   1C	    02   A7	       01  E0 00830 19$:    BBS     #1, 2(R7), 21$					      ; 1778

				       7E  D4 00835 	    CLRL    -(SP)						      ; 1780

		  0000V  CF	       01  FB 00837 	    CALLS   #1, CREFILTER					      ;

		         0E	  02   A7  E8 0083C 	    BLBS    2(R7), 20$						      ; 1782

		         50	       6B  D0 00840 	    MOVL    SYMTABENT, R0					      ; 1784

		         07	  1E   A0  E9 00843 	    BLBC    30(R0), 20$						      ;

		    1E   A0	       01  8A 00847 	    BICB2   #1, 30(R0)						      ; 1787

				  18   AA  B6 0084B 	    INCW    LNK$GW_NUDFSYMS					      ; 1788

				     00C8  31 0084E 20$:    BRW     27$							      ; 1790

				  00   BB  D5 00851 21$:    TSTL    @SYMTABENT						      ; 1795

				       31  13 00854 	    BEQL    24$							      ;

		         56	  00   BB  0F 00856 	    REMQUE  @SYMTABENT, NXTSYMENT				      ; 1797

		  0000G  CF	       56  D1 0085A 	    CMPL    NXTSYMENT, LNK$GL_LIBSYM				      ; 1798

				       05  12 0085F 	    BNEQ    22$							      ;

		  0000G  CF	       66  D0 00861 	    MOVL    (NXTSYMENT), LNK$GL_LIBSYM				      ; 1799

		         50	       6B  D0 00866 22$:    MOVL    SYMTABENT, R0					      ; 1800

		         03	  1E   A0  E8 00869 	    BLBS    30(R0), 23$						      ;

				  18   AA  B7 0086D 	    DECW    LNK$GW_NUDFSYMS					      ; 1801

		         50	0000G  CF  D0 00870 23$:    MOVL    LNK$GL_CURCLU, R0					      ; 1802

	   0D	    24   A0	       06  E1 00875 	    BBC     #6, 36(R0), 24$					      ;

		    24   A0	  40   8F  8A 0087A 	    BICB2   #64, 36(R0)						      ; 1804

		         50	  F0   AB  D0 0087F 	    MOVL    OBMODESC, R0					      ; 1805

		    0F   A0	       08  8A 00883 	    BICB2   #8, 15(R0)						      ;

		         50	       6B  D0 00887 24$:    MOVL    SYMTABENT, R0					      ; 1808

		         52	  02   A7  3C 0088A 	    MOVZWL  2(R7), R2						      ;

		         52	  04   AC  C8 0088E 	    BISL2   ENTMSKFLG, R2					      ;

		         51	  1E   A0  3C 00892 	    MOVZWL  30(R0), R1						      ; 1810

		         51 FFFFDFFB   8F  CA 00896 	    BICL2   #-8197, R1						      ;

      1E   A0	         51	       52  A9 0089D 	    BISW3   R2, R1, 30(R0)					      ; 1809

		         51	  F0   AB  D0 008A2 	    MOVL    OBMODESC, R1					      ; 1812

      0F   A1	         01	       02  EF 008A6 	    EXTZV   #2, #1, 15(R1), R2					      ;

				       52     008AB									      ;

	   01	         03	       52  F0 008AC 	    INSV    R2, #3, #1, 31(R0)					      ;

				  1F   A0     008B0									      ;

		    20   A0	  01   A7  90 008B2 	    MOVB    1(R7), 32(R0)					      ; 1813

		         60	  05   A7  D0 008B7 	    MOVL    5(R7), (R0)						      ; 1814

		    1C   A0	  04   AB  B0 008BB 	    MOVW    ENTRYMASK, 28(R0)					      ; 1815

				       01  DD 008C0 	    PUSHL   #1							      ; 1816

		  0000V  CF	       01  FB 008C2 	    CALLS   #1, CREFILTER					      ;

		         7E	  04   A7  9A 008C7 	    MOVZBL  4(R7), -(SP)					      ; 1817



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 4-6

; Digital Equipment Corporation

;

		  FC4F   CF	       01  FB 008CB 	    CALLS   #1, FNDPSCMAPENT					      ;

		         55	       50  D0 008D0 	    MOVL    R0, PSCTMAPENT					      ;

		         50	       6B  D0 008D3 	    MOVL    SYMTABENT, R0					      ; 1822

		         59	       65  D0 008D6 	    MOVL    (PSCTMAPENT), PSCTDESC				      ; 1819

				       13  13 008D9 	    BEQL    25$							      ;

		         58	  04   A5  D0 008DB 	    MOVL    4(PSCTMAPENT), MODPSCONTRIBLK			      ; 1821

		         60	  08   A8  C0 008DF 	    ADDL2   8(MODPSCONTRIBLK), (R0)				      ; 1822

		    04   A0	  08   A9  D0 008E3 	    MOVL    8(PSCTDESC), 4(R0)					      ; 1824

		    08   A9	       50  D0 008E8 	    MOVL    R0, 8(PSCTDESC)					      ; 1825

				       09  11 008EC 	    BRB     26$							      ; 1819

		    04   A0	  04   A5  D0 008EE 25$:    MOVL    4(PSCTMAPENT), 4(R0)				      ; 1829

		    04   A5	       50  D0 008F3 	    MOVL    R0, 4(PSCTMAPENT)					      ; 1830

	   1C	  0000G  CF	       00  E1 008F7 26$:    BBC     #LNK$S_LONG, LNK$GL_CTLMSK, 27$			      ; 1833

		  2008   8F	  1E   A0  B3 008FD 	    BITW    30(R0), #8200					      ; 1835

				       14  12 00903 	    BNEQ    27$							      ;

				       7E  D4 00905 	    CLRL    -(SP)						      ; 1836

		         7E	  1E   A0  3C 00907 	    MOVZWL  30(R0), -(SP)					      ;

				  08   A0  9F 0090B 	    PUSHAB  8(R0)						      ; 1838

				       50  DD 0090E 	    PUSHL   R0							      ; 1836

				0000G  CF  9F 00910 	    PUSHAB  LNK$AL_VALCTLTB					      ;

		  0000G  CF	       05  FB 00914 	    CALLS   #5, CRF$INSRTREF					      ;

		         50	       01  D0 00919 27$:    MOVL    #1, R0						      ; 1840

					   04 0091C 	    RET     							      ;

				       50  D4 0091D 28$:    CLRL    R0							      ; 1589

					   04 0091F 	    RET     							      ;



; Routine Size:  704 bytes





;50800  1843	ROUTINE CREFILTER(DEFINITION) : NOVALUE =

;50900  1844	BEGIN

;51000  1845	!

;51100  1846	!	THIS ROUTINE FILTERS FROM THE CROSS REFERENCE THE SYMBOLS

;51200  1847	!	OF THE DEBUGGER AND ALSO MASKS THEM FROM APPEARING IN ANY

;51300  1848	!	OTHER SYMBOL TABLE OUTPUT. (STB FILE OR GST OF IMAGE)

;51400  1849	!

;51500  1850	!	IT ALSO DECIDES IF ANY CROSS REFERENCE IS TO BE DONE

;51600  1851	!	AT ALL.

;51700  1852	!

;51800  1853	!	THE ARGUMENT "DEFINITION" HAS VALUE TRUE OR FALSE.

;51900  1854	!

;52000  1855	BIND

;52100  1856		SYMBOLREC = OBJREC[.GSDOFFSET] : BLOCK[,BYTE];

;52200  1857	!

;52300  1858	IF .(LNK$GL_CURFIL[FDB$B_FILFLGS])<LNK$S_DEBUGER,1,0>		! IF THIS FILE CONTAINS THE DEBUGGER

;52400  1859	THEN BEGIN

;52500  1860		IF .DEFINITION						! AND IF THIS IS A DEFINITION

;52600  1861		THEN SYMTABENT[SYM$W_FLAGS] = .SYMTABENT[SYM$W_FLAGS] OR! SUPPRESS IT FROM STB OUTPUT

;52700  1862						SYM$M_SUPRES;

;52800  1863		IF .LNK$GL_CTLMSK<LNK$S_SUPDBG,1,0>			! IF ALSO SUPRESSING

;52900  1864		THEN RETURN;						! DEBUGGER SYMBOLS FROM MAP

;53000  1865	     END;							! THAT IS ALL

;53100  1866	IF .LNK$GL_CTLMSK<LNK$S_BRIEF,1,0>				! IF A BRIEF MAP THEN

;53200  1867	THEN RETURN;							! ALSO ALL DONE

;53300  1868	IF .LNK$GL_CTLMSK<LNK$S_INTFIL,1,0>				! IF THIS IS THE INTERNAL (SYSLIB) FILE



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 4-7

; Digital Equipment Corporation

;

;53400  1869	AND .LNK$GL_CTLMSK<LNK$S_SUPSYS,1,0>				! AND ITS CONTENTS ARE SUPPRESSED

;53500  1870	THEN IF NOT .LNK$GL_CTLMSK<LNK$S_CROS,1,0>			! IF NO CROSS REFERENCE

;53600  1871	     OR NOT .DEFINITION						! OR THIS IS A REFERENCE

;53700  1872	     OR (.SYMTABENT[SYM$W_FLAGS] AND SYM$M_SUPRES) NEQ 0	! OR THE SYMBOL HAS BEEN SUPPRESSED

;53800  1873		THEN RETURN						! THEN ALL DONE

;53900  1874		ELSE OBMODESC[OMD$B_FLAGS] = .OBMODESC[OMD$B_FLAGS]	! BUT IF SYMBOL IS ENTERED

;54000  1875						OR OMD$M_MAPMOD;	! MAKE SURE MODULE GETS MAPPED

;54100  1876	IF .DEFINITION							! IF THIS IS A DEFINITION MUST

;54200  1877	THEN BEGIN

;54300  1878		CRF$INSRTKEY(LNK$AL_SYTBLFMT,SYMTABENT[SYM$B_NAMLNG],	! AT LEAST ENTER THE VALUE

;54400  1879				SYMTABENT[SYM$L_VALUE],			! BY ADDRESS AND PASSING

;54500  1880				.SYMTABENT[SYM$W_FLAGS]);		! THE FLAGS AS VALUE FLAGS

;54600  1881	     END;

;54700  1882	IF .LNK$GL_CTLMSK<LNK$S_CROS,1,0>			! IF A CROSS REFERENCE IS BEING PRODUCED

;54800  1883	THEN BEGIN

;54900  1884		CRF$INSRTREF(LNK$AL_SYTBLFMT,				! THEN INSERT THIS REFERENCE

;55000  1885					SYMTABENT[SYM$B_NAMLNG],	! IN THE TABLE KEPT BY

;55100  1886					OBMODESC[OMD$B_NAMLNG],		! CROSS REFERENCE PROGRAM

;55200  1887					(.SYMBOLREC[GSY$W_FLAGS] AND	! PASSING ONLY THE WEAK FLAG

;55300  1888						SYM$M_WEAK),.DEFINITION);	! WITH THE REFERENCE

;55400  1889		LNK$GW_NCROSRFS = .LNK$GW_NCROSRFS + 1;			! AND COUNT IT

;55500  1890	     END;

;55600  1891	RETURN;

;55700  1892	END;











					 0E04 00920 CREFILTER:

							    .WORD   Save R2,R9,R10,R11					      ; 1843

		         59	       00  D0 00922 	    MOVL    #LNK$S_CROS, R9					      ;

		         5A	0000G  CF  9E 00925 	    MOVAB   LNK$GL_CTLMSK, R10					      ;

		         5B	0000'  CF  9E 0092A 	    MOVAB   SYMTABENT, R11					      ;

		         52	  F6   AB  3C 0092F 	    MOVZWL  GSDOFFSET, R2					      ; 1856

		         52	  F8   AB  C0 00933 	    ADDL2   OBJREC, R2						      ;

		         50	0000G  CF  D0 00937 	    MOVL    LNK$GL_CURFIL, R0					      ; 1858

	   0F	    0A   A0	       05  E1 0093C 	    BBC     #5, 10(R0), 2$					      ;

		         07	  04   AC  E9 00941 	    BLBC    DEFINITION, 1$					      ; 1860

		         50	       6B  D0 00945 	    MOVL    SYMTABENT, R0					      ; 1861

		    1F   A0	       20  88 00948 	    BISB2   #32, 31(R0)						      ;

	   60	         6A	       00  E0 0094C 1$:     BBS     #LNK$S_SUPDBG, LNK$GL_CTLMSK, 5$			      ; 1863

	   5C	         6A	       00  E0 00950 2$:     BBS     #LNK$S_BRIEF, LNK$GL_CTLMSK, 5$			      ; 1866

	   1C	         6A	       00  E1 00954 	    BBC     #LNK$S_INTFIL, LNK$GL_CTLMSK, 3$			      ; 1868

	   18	         6A	       00  E1 00958 	    BBC     #LNK$S_SUPSYS, LNK$GL_CTLMSK, 3$			      ; 1869

	   50	         6A	       59  E1 0095C 	    BBC     R9, LNK$GL_CTLMSK, 5$				      ; 1870

		         4C	  04   AC  E9 00960 	    BLBC    DEFINITION, 5$					      ; 1871

		         50	       6B  D0 00964 	    MOVL    SYMTABENT, R0					      ; 1872

	   44	    1E   A0	       0D  E0 00967 	    BBS     #13, 30(R0), 5$					      ;

		         50	  F0   AB  D0 0096C 	    MOVL    OBMODESC, R0					      ; 1874

		    0F   A0	       10  88 00970 	    BISB2   #16, 15(R0)						      ; 1875

		         15	  04   AC  E9 00974 3$:     BLBC    DEFINITION, 4$					      ; 1876

		         50	       6B  D0 00978 	    MOVL    SYMTABENT, R0					      ; 1880

		         7E	  1E   A0  3C 0097B 	    MOVZWL  30(R0), -(SP)					      ; 1878

				       50  DD 0097F 	    PUSHL   R0							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 4-8

; Digital Equipment Corporation

;

				  08   A0  9F 00981 	    PUSHAB  8(R0)						      ;

				0000G  CF  9F 00984 	    PUSHAB  LNK$AL_SYTBLFMT					      ;

		  0000G  CF	       04  FB 00988 	    CALLS   #4, CRF$INSRTKEY					      ;

	   1F	         6A	       59  E1 0098D 4$:     BBC     R9, LNK$GL_CTLMSK, 5$				      ; 1882

				  04   AC  DD 00991 	    PUSHL   DEFINITION						      ; 1884

      02   A2	         01	       00  EF 00994 	    EXTZV   #0, #1, 2(R2), -(SP)				      ;

				       7E     00999									      ;

	   7E	    F0   AB	       10  C1 0099A 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1886

	   7E	         6B	       08  C1 0099F 	    ADDL3   #8, SYMTABENT, -(SP)				      ; 1885

				0000G  CF  9F 009A3 	    PUSHAB  LNK$AL_SYTBLFMT					      ; 1884

		  0000G  CF	       05  FB 009A7 	    CALLS   #5, CRF$INSRTREF					      ;

				0000'  CF  B6 009AC 	    INCW    LNK$GW_NCROSRFS					      ; 1889

					   04 009B0 5$:     RET     							      ; 1843



; Routine Size:  145 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5

; Digital Equipment Corporation

;

;00100  1893	ROUTINE PROEOM =

;00200  1894	BEGIN

;00300  1895	!

;00400  1896	!	PROCESS END OF MODULE RECORDS:

;00500  1897	!		(1) VALIDATE SEQUENCE

;00600  1898	!		(2) INTERPRET COMPILER COMPLETION CODE,

;00700  1899	!		    ISSUING APPROPRIATE ERROR OR WARNING

;00800  1900	!		    MESSAGE

;00900  1901	!		(3) VALIDATE THE TRANSFER ADDRESS

;01000  1902	!			(IF ANY) FOR:

;01100  1903	!			(A) P-SECTION DEFINED

;01200  1904	!			(B) P-SECTION EXECUTABLE AND RELOCATABLE

;01300  1905	!			(C) ADDRESS IS WITHIN THAT P-SECTION

;01400  1906	!			(D) NOT A MULTIPLE SPECIFICATION -( RETAIN THE FIRST)

;01500  1907	!		(4) RECORD THE  TRANSFER ADDRESS, SEPARATING AN ADDRESS IN

;01600  1908	!			THE DEBUGGER FROM THAT OF THE USER.

;01700  1909	!		(5) TRUNCATE THE MODULE DESCRIPTOR (MAPPING TABLE PORTION) TO ITS

;01800  1910	!			CORRECT SIZE FOR NUMBER OF P-SECTS CONTRIBUTED TO.

;01900  1911	!

;02000  1912	EXTERNAL LITERAL

;02100  1913		LNK$_FATALERROR;

;02200  1914	BIND

;02300  1915		PSCTMAP = OBMODESC[OMD$AL_PSCMAP] : VECTOR,

;02400  1916		EOMREC = OBJREC[OBJ$B_RECTYP] : BLOCK[,BYTE],

;02500  1917		SYMBOLREC = OBJREC[.GSDOFFSET] : BLOCK[,BYTE];

;02600  1918	GLOBAL

;02700  1919		LNK$GL_DBGTFR,				! DEBUGGER TRANSFER ADDRESS

;02800  1920		LNK$GL_DBGTFPS : REF BLOCK[,BYTE],	! POINTER TO P-SECT CONTAINING IT

;02900  1921		LNK$GL_TFRADR,				! TRANSFER ADDRESS

;03000  1922		LNK$GL_TFRPSC : REF BLOCK[,BYTE];	! POINTER TO THE PSECTION DESCRIPTOR

;03100  1923	OWN

;03200  1924		COMPILECODS : VECTOR[3,BYTE]

;03300  1925				INITIAL (BYTE (ERM$C_WRNERS,	! TABLE OF MESSAGES

;03400  1926					ERM$C_ERRORS,		! FOR THE COMPILER

;03500  1927					ERM$C_EOMFTL));		! COMPLETION CODES

;03600  1928	LOCAL

;03700  1929		COMCODE,

;03800  1930		DEFERREDSYM : REF BLOCK[,BYTE],			! POINTER TO DEFERRED SYMBOL

;03900  1931		MODPSCONTRIBLK : REF BLOCK[,BYTE],		! THE MODULE'S CONTRIBUTION TO P-SECT

;04000  1932		PSCTNUM,					! P-SECTION NUMBER OF TRANSFER ADDRESS

;04100  1933		TFRADR,						! TEMP FOR TRANSFER ADDRESS

;04200  1934		TFRPSC : REF BLOCK[,BYTE],			! TEMP FOR P-SECT DESC. ADDR.

;04300  1935		UNUSEDBYTES,					! NUMBER OF BYTES OF MAPPING TABLE UNUSED

;04400  1936		UNUSEDPSECTMAP;					! ADDRESS OF FIRST UNUSED ENTRY

;04500  1937	!

;04600  1938	IF NOT SEQCHK() THEN RETURN FALSE;				! VALIDATE THE SEQUENCE OF EOM

;04700  1939	IF .RECLNG NEQ OBJ$C_EOMMIN					! AND ITS LENGTH

;04800  1940	AND .RECLNG NEQ OBJ$C_EOMMAX

;04900  1941	THEN BEGIN

;05000  1942		LNK$ERRMSG(ERM$C_RECLNG,SEV$C_INFOR,			! AND ISSUE ERROR

;05100  1943				LNK$GL_CURFIL[FDB$Q_USRNAMDSC],.RECLNG);

;05200  1944		RETURN FALSE;						! THEN GIVE UP

;05300  1945	     END;

;05400  1946	IF (COMCODE = .EOMREC[EOM$B_COMCOD]) NEQ 0			! IF NON ZERO COMPILATION CPLETE CODE

;05500  1947	THEN BEGIN							! CHECK



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5-1

; Digital Equipment Corporation

;

;05600  1948		IF .COMCODE GTRU 3

;05700  1949		THEN ( LNK$ERRMSG(ERM$C_BADCCC,SEV$C_INFOR,		! IF AN ILLEGAL COMPLETION

;05800  1950			OBMODESC[OMD$B_NAMLNG],.COMCODE);		! CODE OUTPUT

;05900  1951			RETURN FALSE;);					! MESSAGE AND RETURN

;06000  1952		LNK$ERRMSG(.COMPILECODS[.COMCODE-1],SEV$C_INFOR,

;06100  1953				OBMODESC[OMD$B_NAMLNG]);		! OUTPUT THE

;06200  1954									! COMPLETION CODE MESSAGE

;06300  1955		IF .COMCODE EQL 3					! CHECK FOR ACTION

;06400  1956		THEN LNK$EXIT(LNK$_FATALERROR);			! TO BE PERFORMED -- EXIT IF 3

;06500  1957		IF .COMCODE EQL 2					! DISABLE IMAGE IF 2

;06600  1958		THEN LNK$GL_CTLMSK<LNK$S_IMAGE,1,0> = FALSE;

;06700  1959	     END;

;06800  1960	IF .OBMODESC[OMD$B_HIPSCT] EQL 255				! IF HIGHEST NUMBERED P-SECT

;06900  1961	AND (.OBMODESC[OMD$B_FLAGS] AND OMD$M_NOPSCT) NEQ 0		! IS 255 AND STILL NO DEFINITIONS

;07000  1962	THEN BEGIN							! BEEN SEEN

;07100  1963		LNK$ERRMSG(ERM$C_NOPSCTS,SEV$C_INFOR,			! THERE IS A FORMAT ERROR

;07200  1964				OBMODESC[OMD$B_NAMLNG]);		! ISSUE MESSAGE

;07300  1965		RETURN FALSE;						! AND GIVE UP

;07400  1966	     END;

;07500  1967	IF .RECLNG EQL OBJ$C_EOMMAX					! IF RECORD HAS MAXIMUM LENGTH

;07600  1968	THEN BEGIN							! A TRANSFER ADDRESS EXISTS, SO

;07700  1969		PSCTNUM = .EOMREC[EOM$B_PSINDX];			! GET THE P-SECTION INDEX AND

;07800  1970		IF .PSCTNUM GTRU .OBMODESC[OMD$B_HIPSCT]

;07900  1971		OR (.OBMODESC[OMD$B_FLAGS] AND OMD$M_NOPSCT) NEQ 0

;08000  1972		THEN BEGIN						! GET P-SECTION INDEX AND

;08100  1973			LNK$ERRMSG(ERM$C_BADPSC,SEV$C_INFOR,		! IF P-SECTION NOT DEFINED 

;08200  1974				OBMODESC[OMD$B_NAMLNG],.PSCTNUM);

;08300  1975			RETURN FALSE;					! OUTPUT ERROR

;08400  1976		     END

;08500  1977		ELSE BEGIN

;08600  1978			IF (TFRPSC = .PSCTMAP[.PSCTNUM*PMT$C_SIZE/4]) EQL 0	! SET THE POINTER TO THAT P-SECTION

;08700  1979			THEN (LNK$ERRMSG(ERM$C_BADPSC,SEV$C_INFOR,

;08800  1980				OBMODESC[OMD$B_NAMLNG],.PSCTNUM);

;08900  1981				RETURN FALSE;);					! ISSUING AN ERROR IF UNDEFINED

;09000  1982			IF (.TFRPSC[PSC$W_FLAGS] AND PSC$M_EXE) EQL 0		! IF THE P-SECTION CONTAINING THE

;09100  1983			OR							! TRANSFER ADDRESS IS NOT

;09200  1984			(.TFRPSC[PSC$W_FLAGS] AND PSC$M_REL ) EQL 0		! EXECUTABLE AND RELOCATABLE

;09300  1985			THEN LNK$ERRMSG(ERM$C_PSCNXR,SEV$C_DIAG,		! THEN ISSUE AN ERROR MESSAGE

;09400  1986				OBMODESC[OMD$B_NAMLNG]);

;09500  1987			MODPSCONTRIBLK = .PSCTMAP[.PSCTNUM*PMT$C_SIZE/4 + 1];

;09600  1988			TFRADR = .EOMREC[EOM$L_TFRADR] +			! BUT IN ANY CASE COMPUTE THE

;09700  1989						.MODPSCONTRIBLK[MPC$L_OFFSET];	! ADDRESS RELATIVE TO THE WHOLE P-SECT

;09800  1990			IF NOT .(LNK$GL_CURFIL[FDB$B_FILFLGS])<LNK$S_DEBUGER,1,0>	! IF THE CURRENT INPUT FILE

;09900  1991										! DOES NOT CONTAIN THE DEBUGGER

;10000  1992			AND .LNK$GL_TFRPSC EQL 0				! AND NO PREVIOUS TRANSFER

;10100  1993			THEN BEGIN						! ADDRESS WAS SPECIFIED

;10200  1994				LNK$GL_TFRPSC = .TFRPSC;			! THEN THIS IS THE USER'S

;10300  1995				LNK$GL_TFRADR = .TFRADR;			! TRANSFER ADDRESS

;10400  1996				IF .LNK$GT_IMGID[0] EQL 0			! IF STILL NO IMAGE IDENT

;10500  1997				THEN CH$MOVE(.IMAGEIDSTRING[0]+1,IMAGEIDSTRING[0],! THEN MOVE IN THE ONE OF

;10600  1998					LNK$GT_IMGID[0]);			! THIS MODULE AS SAVED ON MHD RECORD

;10700  1999			     END

;10800  2000			ELSE IF .(LNK$GL_CURFIL[FDB$B_FILFLGS])			! OTHERWISE IF THIS IS THE DEBUGGER

;10900  2001					<LNK$S_DEBUGER,1,0>			! FILE AND THERE HAS NOT

;11000  2002				AND .LNK$GL_DBGTFPS EQL 0			! PREVIOUSLY BEEN A DEBUGGER TRANSFER



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5-2

; Digital Equipment Corporation

;

;11100  2003				THEN BEGIN					! ADDRESS, MAKE THIS THE

;11200  2004					LNK$GL_DBGTFPS = .TFRPSC;		! DEBUGGER TRANSFER ADDRESS

;11300  2005					LNK$GL_DBGTFR = .TFRADR;		!

;11400  2006				     END					! 

;11500  2007				ELSE LNK$ERRMSG(ERM$C_MULTFR,SEV$C_DIAG,	! BEEN DEFINED ALREADY SO

;11600  2008					OBMODESC[OMD$B_NAMLNG]);		! OUTPUT THE NOTIFICATION

;11700  2009		     END;

;11800  2010	     END;				! END OF TRANSFER ADDRESS PROCESSING

;11900  2011	!

;12000  2012	IF (UNUSEDBYTES = PMT$C_SIZE*(255 - .OBMODESC[OMD$B_HIPSCT])) NEQ 0	! IF THERE IS SOME UNUSED MAPPING TABLE

;12100  2013	THEN BEGIN

;12200  2014		UNUSEDPSECTMAP = FNDPSCMAPENT(.OBMODESC[OMD$B_HIPSCT]) +! GET ADDRESS OF THE FIRST UNUSED

;12300  2015					PMT$C_SIZE;			! TABLE ENTRY

;12400  2016		LNK$DEALBLK(.UNUSEDBYTES,.UNUSEDPSECTMAP);		! AND GO DEALLOCATE IT

;12500  2017	     END;

;12600  2018	MAXRECLNG = OBJ$C_MAXRECSIZ;		! RESET TO MAX ALLOWED BY LANGUAGE

;12700  2019	!

;12800  2020	!	IF THIS IS THE INTERNAL SHARED IMAGE AND THERE ARE SOME

;12900  2021	!	SYMBOLS ON THE DEFERRED SYMBOL LIST THEN, IF THIS SHARED

;13000  2022	!	IMAGE RESOLVED SOMETHING, ENTER ALL SYMBOLS FROM THE

;13100  2023	!	DEFERRED LIST INTO THE SYMBOL TABLE.

;13200  2024	!

;13300  2025	IF .(LNK$GL_CURCLU[CLU$W_FLAGS])<CLU$V_PENDING>		! IF NOTHING WAS RESOLVED

;13305  2026	OR NOT .(OBMODESC[OMD$B_FLAGS])<OMD$S_SHRIMG,1,0>	! OR THIS IS NOT THE SHARED IMAGE

;13310  2027	OR NOT .LNK$GL_CTLMSK<LNK$S_INTFIL,1,0>			! OF AN INTERNAL FILE

;13315  2028	OR ( NOT .LNK$GL_CTLMSK<LNK$S_SHR,1,0>			! OR WE HAVE NO MORE UNDEFINED SYMBOLS

;13320  2029	      AND .LNK$GW_NUDFSYMS EQL 0)			! IN OTHER THAN A SHAREABLE IMAGE

;13325  2030	THEN BEGIN

;13330  2031		DEFERREDLIST = 0;				! WE HAVE NO NEED OF THE DEFERRED

;13335  2032		RETURN TRUE;					! SYMBOL DEFINITION LIST

;13340  2033	     END;

;13500  2034	DEFERREDSYM = .DEFERREDLIST;				! GET FIRST DEFERRED SYMBOL

;13600  2035	WHILE .DEFERREDSYM NEQ 0				! LOOP FOR ALL OF THEM

;13700  2036	DO BEGIN

;13800  2037		LOCAL

;14000  2038			PSCTDESC : REF BLOCK[,BYTE];		! POINTER TO P-SECTION DESCRIPTOR

;14100  2039		LNK$SEARCH(DEFERREDSYM[SYM$B_NAMLNG],SYMTABENT);	! FIND POSITION IN SYMBOL

;14200  2040		LNK$INSERT(DEFERREDSYM[SYM$B_NAMLNG],SYMTABENT);	! TABLE ENTRY AND INSERT SYMBOL

;14300  2041		SYMTABENT[SYM$W_FLAGS] = .DEFERREDSYM[SYM$W_FLAGS];	! AND COPY THE PARAMETERS

;14400  2042		SYMTABENT[SYM$L_VALUE] = .DEFERREDSYM[SYM$L_VALUE];	! TO NEW ENTRY 

;14500  2043		SYMTABENT[SYM$B_DATYP] = .DEFERREDSYM[SYM$B_DATYP];	! ...

;14600  2044		SYMTABENT[SYM$W_ENTMSK] = .DEFERREDSYM[SYM$W_ENTMSK];	! ...

;14700  2045		PSCTDESC = .DEFERREDSYM[SYM$L_PSCLST];			! FIND THE P-SECTION DESCRIPTOR

;14800  2046		SYMTABENT[SYM$L_PSCLST] = .PSCTDESC[PSC$L_SYMLST];	! AND LINK THE SYMBOL ON THE

;14900  2047		PSCTDESC[PSC$L_SYMLST] = .SYMTABENT;			! P-SECTION LIST

;15000  2048		DEFERREDSYM = .DEFERREDSYM[SYM$L_COLIST];		! GET NEXT ON THE DEFERRED LIST

;15050  2049		CREFILTER(TRUE);					! AND GO CROSS REFERENCE IT (IF NECESSARY)

;15100  2050	   END;

;15105  2051	DEFERREDLIST = 0;

;15200  2052	RETURN TRUE;

;15300  2053	END;				! END OF EOM PROCESSING







							    .PSECT  $OWN$,NOEXE,2



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5-3

; Digital Equipment Corporation

;



					      00030 COMPILECODS:

							    .BYTE    ERM$C_WRNERS, ERM$C_ERRORS, ERM$C_EOMFTL		      ;



							    .PSECT  $GLOBAL$,NOEXE,2



					      0001A	    .BLKB   2

					      0001C LNK$GL_DBGTFR::

							    .BLKB   4

					      00020 LNK$GL_DBGTFPS::

							    .BLKB   4

					      00024 LNK$GL_TFRADR::

							    .BLKB   4

					      00028 LNK$GL_TFRPSC::

							    .BLKB   4



							    .GLOBL  LNK$_FATALERROR



							    .PSECT  $CODE$,NOWRT,2



					 0FFC 009B1 PROEOM: .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11		      ; 1893

		         58	0000G  CF  9E 009B3 	    MOVAB   LNK$ERRMSG, R8					      ;

		         59	0000'  CF  9E 009B8 	    MOVAB   LNK$GL_TFRPSC, R9					      ;

		         5A	       00  D0 009BD 	    MOVL    #SEV$C_INFOR, R10					      ;

		         5B	0000'  CF  9E 009C0 	    MOVAB   OBMODESC, R11					      ;

	   57	         6B	       20  C1 009C5 	    ADDL3   #32, OBMODESC, R7					      ; 1915

	   56	    08   AB 00000000G  8F  C1 009C9 	    ADDL3   #OBJ$B_RECTYP, OBJREC, R6				      ; 1916

		         50	  06   AB  3C 009D2 	    MOVZWL  GSDOFFSET, R0					      ; 1917

		         50	  08   AB  C0 009D6 	    ADDL2   OBJREC, R0						      ;

		  0000V  CF	       00  FB 009DA 	    CALLS   #0, SEQCHK						      ; 1938

		         7E	       50  E9 009DF 	    BLBC    R0, 6$						      ;

		         02	  16   AB  B1 009E2 	    CMPW    RECLNG, #2						      ; 1939

				       19  13 009E6 	    BEQL    1$							      ;

		         07	  16   AB  B1 009E8 	    CMPW    RECLNG, #7						      ; 1940

				       13  13 009EC 	    BEQL    1$							      ;

		         7E	  16   AB  3C 009EE 	    MOVZWL  RECLNG, -(SP)					      ; 1942

	   7E	  0000G  CF	       0B  C1 009F2 	    ADDL3   #11, LNK$GL_CURFIL, -(SP)				      ; 1943

		         7E	       5A  9A 009F8 	    MOVZBL  R10, -(SP)						      ; 1942

		         7E	  00G  8F  9A 009FB 	    MOVZBL  #ERM$C_RECLNG, -(SP)				      ;

				       18  11 009FF 	    BRB     2$							      ;

		         52	  01   A6  9A 00A01 1$:     MOVZBL  1(R6), COMCODE					      ; 1946

				       3E  13 00A05 	    BEQL    5$							      ;

		         03	       52  D1 00A07 	    CMPL    COMCODE, #3						      ; 1948

				       0F  1B 00A0A 	    BLEQU   3$							      ;

				       52  DD 00A0C 	    PUSHL   COMCODE						      ; 1949

	   7E	         6B	       10  C1 00A0E 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1950

		         7E	       5A  9A 00A12 	    MOVZBL  R10, -(SP)						      ; 1949

		         7E	  00G  8F  9A 00A15 	    MOVZBL  #ERM$C_BADCCC, -(SP)				      ;

				       79  11 00A19 2$:     BRB     9$							      ;

	   7E	         6B	       10  C1 00A1B 3$:     ADDL3   #16, OBMODESC, -(SP)				      ; 1953

		         7E	       5A  9A 00A1F 	    MOVZBL  R10, -(SP)						      ; 1952

		         7E	  2B AB42  9A 00A22 	    MOVZBL  COMPILECODS-1[COMCODE], -(SP)			      ;

		         68	       03  FB 00A27 	    CALLS   #3, LNK$ERRMSG					      ;

		         03	       52  D1 00A2A 	    CMPL    COMCODE, #3						      ; 1955

				       0B  12 00A2D 	    BNEQ    4$							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5-4

; Digital Equipment Corporation

;

			    00000000G  8F  DD 00A2F 	    PUSHL   #LNK$_FATALERROR					      ; 1956

		  0000G  CF	       01  FB 00A35 	    CALLS   #1, LNK$EXIT					      ;

		         02	       52  D1 00A3A 4$:     CMPL    COMCODE, #2						      ; 1957

				       06  12 00A3D 	    BNEQ    5$							      ;

	   00	  0000G  CF	       00  E5 00A3F 	    BBCC    #LNK$S_IMAGE, LNK$GL_CTLMSK, 5$			      ; 1958

		         50	       6B  D0 00A45 5$:     MOVL    OBMODESC, R0					      ; 1960

		    FF   8F	  0E   A0  91 00A48 	    CMPB    14(R0), #255					      ;

				       13  12 00A4D 	    BNEQ    7$							      ;

		         0F	  0F   A0  E9 00A4F 	    BLBC    15(R0), 7$						      ; 1961

				  10   A0  9F 00A53 	    PUSHAB  16(R0)						      ; 1964

		         7E	       5A  9A 00A56 	    MOVZBL  R10, -(SP)						      ; 1963

		         7E	  00G  8F  9A 00A59 	    MOVZBL  #ERM$C_NOPSCTS, -(SP)				      ;

		         68	       03  FB 00A5D 	    CALLS   #3, LNK$ERRMSG					      ;

				       35  11 00A60 6$:     BRB     10$							      ; 1965

		         07	  16   AB  B1 00A62 7$:     CMPW    RECLNG, #7						      ; 1967

				       7D  12 00A66 	    BNEQ    14$							      ;

		         55	  02   A6  9A 00A68 	    MOVZBL  2(R6), PSCTNUM					      ; 1969

		         52	       6B  D0 00A6C 	    MOVL    OBMODESC, R2					      ; 1970

      0E   A2	         08	       00  ED 00A6F 	    CMPZV   #0, #8, 14(R2), PSCTNUM				      ;

				       55     00A74									      ;

				       11  1F 00A75 	    BLSSU   8$							      ;

		         0D	  0F   A2  E8 00A77 	    BLBS    15(R2), 8$						      ; 1971

	   53	         55	       03  78 00A7B 	    ASHL    #3, PSCTNUM, R3					      ; 1978

		         53	       04  C6 00A7F 	    DIVL2   #4, R3						      ;

		         54	     6743  D0 00A82 	    MOVL    (R7)[R3], TFRPSC					      ;

				       12  12 00A86 	    BNEQ    11$							      ;

				       55  DD 00A88 8$:     PUSHL   PSCTNUM						      ; 1979

				  10   A2  9F 00A8A 	    PUSHAB  16(R2)						      ; 1980

		         7E	       5A  9A 00A8D 	    MOVZBL  R10, -(SP)						      ; 1979

		         7E	  00G  8F  9A 00A90 	    MOVZBL  #ERM$C_BADPSC, -(SP)				      ;

		         68	       04  FB 00A94 9$:     CALLS   #4, LNK$ERRMSG					      ;

				     0118  31 00A97 10$:    BRW     23$							      ; 1981

	   05	    19   A4	       06  E1 00A9A 11$:    BBC     #6, 25(TFRPSC), 12$					      ; 1982

	   0E	    19   A4	       03  E0 00A9F 	    BBS     #3, 25(TFRPSC), 13$					      ; 1984

	   7E	         6B	       10  C1 00AA4 12$:    ADDL3   #16, OBMODESC, -(SP)				      ; 1986

		         7E	       00  9A 00AA8 	    MOVZBL  #SEV$C_DIAG, -(SP)					      ; 1985

		         7E	  00G  8F  9A 00AAB 	    MOVZBL  #ERM$C_PSCNXR, -(SP)				      ;

		         68	       03  FB 00AAF 	    CALLS   #3, LNK$ERRMSG					      ;

		         50	  04 A743  D0 00AB2 13$:    MOVL    4(R7)[R3], MODPSCONTRIBLK				      ; 1987

	   51	    03   A6	  08   A0  C1 00AB7 	    ADDL3   8(MODPSCONTRIBLK), 3(R6), TFRADR			      ; 1988

		         50	0000G  CF  D0 00ABD 	    MOVL    LNK$GL_CURFIL, R0					      ; 1990

	   25	    0A   A0	       05  E0 00AC2 	    BBS     #5, 10(R0), 16$					      ;

				       69  D5 00AC7 	    TSTL    LNK$GL_TFRPSC					      ; 1992

				       1C  12 00AC9 	    BNEQ    15$							      ;

		         69	       54  D0 00ACB 	    MOVL    TFRPSC, LNK$GL_TFRPSC				      ; 1994

		    FC   A9	       51  D0 00ACE 	    MOVL    TFRADR, LNK$GL_TFRADR				      ; 1995

				0000G  CF  95 00AD2 	    TSTB    LNK$GT_IMGID					      ; 1996

				       31  12 00AD6 	    BNEQ    18$							      ;

		         50	  1C   AB  9A 00AD8 	    MOVZBL  IMAGEIDSTRING, R0					      ; 1997

				       50  D6 00ADC 	    INCL    R0							      ;

    0000G  CF	    1C   AB	       50  28 00ADE 	    MOVC3   R0, IMAGEIDSTRING, LNK$GT_IMGID			      ;

				       22  11 00AE5 14$:    BRB     18$							      ; 1990

	   0F	    0A   A0	       05  E1 00AE7 15$:    BBC     #5, 10(R0), 17$					      ; 2000

				  F8   A9  D5 00AEC 16$:    TSTL    LNK$GL_DBGTFPS					      ; 2002

				       0A  12 00AEF 	    BNEQ    17$							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5-5

; Digital Equipment Corporation

;

		    F8   A9	       54  D0 00AF1 	    MOVL    TFRPSC, LNK$GL_DBGTFPS				      ; 2004

		    F4   A9	       51  D0 00AF5 	    MOVL    TFRADR, LNK$GL_DBGTFR				      ; 2005

				       0E  11 00AF9 	    BRB     18$							      ; 2000

	   7E	         6B	       10  C1 00AFB 17$:    ADDL3   #16, OBMODESC, -(SP)				      ; 2008

		         7E	       00  9A 00AFF 	    MOVZBL  #SEV$C_DIAG, -(SP)					      ; 2007

		         7E	  00G  8F  9A 00B02 	    MOVZBL  #ERM$C_MULTFR, -(SP)				      ;

		         68	       03  FB 00B06 	    CALLS   #3, LNK$ERRMSG					      ;

		         50	       6B  D0 00B09 18$:    MOVL    OBMODESC, R0					      ; 2012

		         51	  0E   A0  9A 00B0C 	    MOVZBL  14(R0), R1						      ;

		         51	FF01   C1  9E 00B10 	    MOVAB   -255(R1), R1					      ;

		         51	       08  C4 00B15 	    MULL2   #8, R1						      ;

		         52	       51  CE 00B18 	    MNEGL   R1, UNUSEDBYTES					      ;

				       52  D5 00B1B 	    TSTL    UNUSEDBYTES						      ;

				       15  13 00B1D 	    BEQL    19$							      ;

		         7E	  0E   A0  9A 00B1F 	    MOVZBL  14(R0), -(SP)					      ; 2014

		  F9F7   CF	       01  FB 00B23 	    CALLS   #1, FNDPSCMAPENT					      ;

		         50	       08  C0 00B28 	    ADDL2   #8, UNUSEDPSECTMAP					      ;

				       50  DD 00B2B 	    PUSHL   UNUSEDPSECTMAP					      ; 2016

				       52  DD 00B2D 	    PUSHL   UNUSEDBYTES						      ;

		  0000G  CF	       02  FB 00B2F 	    CALLS   #2, LNK$DEALBLK					      ;

		    04   AB	0000G  8F  B0 00B34 19$:    MOVW    #OBJ$C_MAXRECSIZ, MAXRECLNG				      ; 2018

		         50	0000G  CF  D0 00B3A 	    MOVL    LNK$GL_CURCLU, R0					      ; 2025

	   67	    24   A0	       06  E0 00B3F 	    BBS     #6, 36(R0), 22$					      ;

		         50	       6B  D0 00B44 	    MOVL    OBMODESC, R0					      ; 2026

	   5F	    0F   A0	       02  E1 00B47 	    BBC     #2, 15(R0), 22$					      ;

	   59	  0000G  CF	       00  E1 00B4C 	    BBC     #LNK$S_INTFIL, LNK$GL_CTLMSK, 22$			      ; 2027

	   05	  0000G  CF	       02  E0 00B52 	    BBS     #2, LNK$GL_CTLMSK, 20$				      ; 2028

				  F0   A9  B5 00B58 	    TSTW    LNK$GW_NUDFSYMS					      ; 2029

				       4E  13 00B5B 	    BEQL    22$							      ;

		         52	  FC   AB  D0 00B5D 20$:    MOVL    DEFERREDLIST, DEFERREDSYM				      ; 2034

				       52  D5 00B61 21$:    TSTL    DEFERREDSYM						      ; 2035

				       46  13 00B63 	    BEQL    22$							      ;

				  10   AB  9F 00B65 	    PUSHAB  SYMTABENT						      ; 2039

				  08   A2  9F 00B68 	    PUSHAB  8(DEFERREDSYM)					      ;

		  0000G  CF	       02  FB 00B6B 	    CALLS   #2, LNK$SEARCH					      ;

				  10   AB  9F 00B70 	    PUSHAB  SYMTABENT						      ; 2040

				  08   A2  9F 00B73 	    PUSHAB  8(DEFERREDSYM)					      ;

		  0000G  CF	       02  FB 00B76 	    CALLS   #2, LNK$INSERT					      ;

		         50	  10   AB  D0 00B7B 	    MOVL    SYMTABENT, R0					      ; 2041

		    1E   A0	  1E   A2  B0 00B7F 	    MOVW    30(DEFERREDSYM), 30(R0)				      ;

		         60	       62  D0 00B84 	    MOVL    (DEFERREDSYM), (R0)					      ; 2042

		    20   A0	  20   A2  90 00B87 	    MOVB    32(DEFERREDSYM), 32(R0)				      ; 2043

		    1C   A0	  1C   A2  B0 00B8C 	    MOVW    28(DEFERREDSYM), 28(R0)				      ; 2044

		         51	  04   A2  D0 00B91 	    MOVL    4(DEFERREDSYM), PSCTDESC				      ; 2045

		    04   A0	  08   A1  D0 00B95 	    MOVL    8(PSCTDESC), 4(R0)					      ; 2046

		    08   A1	       50  D0 00B9A 	    MOVL    R0, 8(PSCTDESC)					      ; 2047

		         52	  18   A2  D0 00B9E 	    MOVL    24(DEFERREDSYM), DEFERREDSYM			      ; 2048

				       01  DD 00BA2 	    PUSHL   #1							      ; 2049

		  FD77   CF	       01  FB 00BA4 	    CALLS   #1, CREFILTER					      ;

				       B6  11 00BA9 	    BRB     21$							      ; 2035

				  FC   AB  D4 00BAB 22$:    CLRL    DEFERREDLIST					      ; 2051

		         50	       01  D0 00BAE 	    MOVL    #1, R0						      ; 2052

					   04 00BB1 	    RET     							      ;

				       50  D4 00BB2 23$:    CLRL    R0							      ; 1893

					   04 00BB4 	    RET     							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5-6

; Digital Equipment Corporation

;



; Routine Size:  516 bytes





;15400  2054	ROUTINE COUNTDBG =

;15500  2055	BEGIN

;15600  2056	!

;15700  2057	!	ROUTINE TO COUNT THE NUMBER OF DEBUG (TYPES 4 AND 5) RECORDS SEEN AND TO

;15800  2058	!	TOTAL THE NUMBER OF BYTES CONTAINED FOR USE AS AN ESTIMATE OF THE

;15900  2059	!	SIZE OF DEBUG SYMBOL TABLE TO BE WRITTEN AT END OF BINARY

;16000  2060	!	IF THE DEBUGGER IS LINKED IN. ALSO IF AN EXECUTABLE IMAGE

;16100  2061	!	WITH THE DEBUGGER IS BEING PRODUCED, TURN OFF THE NO BINARY FLAG FOR

;16200  2062	!	THIS MODULE (PROVIDED IT IS NOT THE DEBUGGER ITSELF).

;16300  2063	!

;16400  2064	IF NOT SEQCHK() THEN RETURN FALSE;			! CHECK LEGAL SEQUENCE

;16500  2065	IF .(OBMODESC[OMD$B_FLAGS])<LNK$S_DEBUGER,1,0>		! IF THIS IS THE DEBUGER ITSELF

;16600  2066	THEN RETURN TRUE;					! IGNORE ANY DEBUG RECORDS

;16700  2067	LNK$GL_DBGESTIM = .LNK$GL_DBGESTIM + .RECLNG;		! ADD IN THE LENGTH OF THIS RECORD

;16800  2068	LNK$GW_DBGRECS = .LNK$GW_DBGRECS + 1;			! AND COUNT THE RECORD

;16900  2069	IF .LNK$GL_CTLMSK<LNK$S_DBG,1,0>			! IF IT CONTAINS THE DEBUGGER IT NOW HAS

;17000  2070	OR .LNK$GL_CTLMSK<LNK$S_TRACE,1,0>			!

;17100  2071	THEN (OBMODESC[OMD$B_FLAGS])<OMD$S_NOBIN,1,0> = FALSE;	! BINARY WE CARE ABOUT

;17200  2072	RETURN TRUE;						! AND THAT IS ALL

;17300  2073	END;











					 0000 00BB5 COUNTDBG:

							    .WORD   Save nothing					      ; 2054

		  0000V  CF	       00  FB 00BB7 	    CALLS   #0, SEQCHK						      ; 2064

		         2C	       50  E9 00BBC 	    BLBC    R0, 3$						      ;

		         50	0000'  CF  D0 00BBF 	    MOVL    OBMODESC, R0					      ; 2065

	   1E	    0F   A0	       05  E0 00BC4 	    BBS     #5, 15(R0), 2$					      ;

		         51	0000'  CF  3C 00BC9 	    MOVZWL  RECLNG, R1						      ; 2067

		  0000'  CF	       51  C0 00BCE 	    ADDL2   R1, LNK$GL_DBGESTIM					      ;

				0000'  CF  B6 00BD3 	    INCW    LNK$GW_DBGRECS					      ; 2068

	   06	  0000G  CF	       00  E0 00BD7 	    BBS     #LNK$S_DBG, LNK$GL_CTLMSK, 1$			      ; 2069

	   04	  0000G  CF	       00  E1 00BDD 	    BBC     #LNK$S_TRACE, LNK$GL_CTLMSK, 2$			      ; 2070

		    0F   A0	       02  8A 00BE3 1$:     BICB2   #2, 15(R0)						      ; 2071

		         50	       01  D0 00BE7 2$:     MOVL    #1, R0						      ; 2072

					   04 00BEA 	    RET     							      ;

				       50  D4 00BEB 3$:     CLRL    R0							      ; 2054

					   04 00BED 	    RET     							      ;



; Routine Size:  57 bytes





;17400  2074	ROUTINE SEQCHK =

;17500  2075	!

;17600  2076	!	ROUTINE WHICH VALIDATES THAT RECORDS ARE IN CORRECT SEQUENCE.

;17700  2077	!	RETURNS VALUE FALSE IF NOT, TRUE OTHERWISE. ALSO TURNS OFF THE NO

;17800  2078	!	BINARY FLAG WHEN A TIR RECORD IS SEEN.

;17900  2079	!



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5-7

; Digital Equipment Corporation

;

;18000  2080	BEGIN

;18100  2081	OWN

;18200  2082		MHDSEEN : BYTE INITIAL (FALSE),		! FLAG MHD SUB-HEADER AS YET NOT SEEN

;18300  2083		LNMSEEN : BYTE INITIAL (FALSE);		! FLAG THAT COMPILER NAME SUB-HEADER IS SEEN

;18400  2084	BIND

;18500  2085		HDRSUBTYP = OBJREC[OBJ$B_SUBTYP] : BYTE;

;18600  2086	!

;18700  2087	IF .CURRECTYP EQL OBJ$C_HDR

;18800  2088	THEN							! IF THIS RECORD IS A HEADER

;18900  2089		IF .HDRSUBTYP EQL OBJ$C_HDR_MHD			! AND IT IS THE MAIN MODULE HEADER

;19000  2090		THEN						! THEN WE HAVE VALID SEQUENCE

;19100  2091			IF .LASTRECTYP EQL OBJ$C_EOM		! IF AND ONLY IF THE PREVIOUS

;19200  2092			THEN (MHDSEEN = TRUE;			! RECORD WAS END OF MODULE.  IF THAT

;19300  2093				LNMSEEN = FALSE;		!

;19400  2094			      RETURN TRUE)			! IS THE CASE SET MHD RECORD

;19500  2095			ELSE (LNK$ERRMSG(ERM$C_SEQNCE,		! SEEN AND RETURN. ELSE REPORT ERROR

;19600  2096				SEV$C_INFOR);

;19700  2097			      RETURN FALSE)

;19800  2098		ELSE

;19900  2099			IF .MHDSEEN				! IF SOME OTHER KIND OF HEADER

;20000  2100			THEN (IF .HDRSUBTYP EQL OBJ$C_HDR_LNM	! WE MUST HAVE SEEN A MAIN HEADER

;20100  2101				THEN LNMSEEN = TRUE;

;20200  2102				RETURN TRUE)

;20300  2103			ELSE (LNK$ERRMSG (ERM$C_SEQNCE,SEV$C_INFOR);

;20400  2104			      RETURN FALSE)			! ALREADY.  REPORT ERROR IF NOT.

;20500  2105	ELSE

;20600  2106		IF .MHDSEEN

;20700  2107		AND .LNMSEEN

;20800  2108		THEN						! IF WE HAVE SEEN A MAIN HEADER

;20900  2109			BEGIN

;21000  2110			IF .CURRECTYP EQL OBJ$C_EOM		! THEN TURN OFF FLAG ON END OF MODULE.

;21100  2111			THEN MHDSEEN = FALSE			! SEQUENCE ERROR IF HAVE NOT SEEN

;21200  2112			ELSE IF .CURRECTYP EQL OBJ$C_TIR

;21300  2113				THEN (OBMODESC[OMD$B_FLAGS])<OMD$S_NOBIN,1,0> = FALSE;

;21400  2114			RETURN TRUE;				! MAIN HEADER AND THIS IS NOT ONE.

;21500  2115			END

;21600  2116		ELSE (LNK$ERRMSG (ERM$C_SEQNCE,SEV$C_INFOR);

;21700  2117		      RETURN FALSE);

;21800  2118	END;







							    .PSECT  $OWN$,NOEXE,2



					      00033 MHDSEEN:.BYTE   0							      ;

					      00034 LNMSEEN:.BYTE   0							      ;







							    .PSECT  $CODE$,NOWRT,2



					 0C04 00BEE SEQCHK: .WORD   Save R2,R10,R11					      ; 2074

		         5A	       00  D0 00BF0 	    MOVL    #OBJ$C_EOM, R10					      ;

		         5B	0000'  CF  9E 00BF3 	    MOVAB   MHDSEEN, R11					      ;

	   52	    D9   AB 00000000G  8F  C1 00BF8 	    ADDL3   #OBJ$B_SUBTYP, OBJREC, R2				      ; 2085



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5-8

; Digital Equipment Corporation

;

		         00	  EA   AB  91 00C01 	    CMPB    CURRECTYP, #OBJ$C_HDR				      ; 2087

				       1E  12 00C05 	    BNEQ    2$							      ;

		         00	       62  91 00C07 	    CMPB    (R2), #OBJ$C_HDR_MHD				      ; 2089

				       0B  12 00C0A 	    BNEQ    1$							      ;

		         5A	  E9   AB  91 00C0C 	    CMPB    LASTRECTYP, R10					      ; 2091

				       36  12 00C10 	    BNEQ    5$							      ;

		         6B	       01  B0 00C12 	    MOVW    #1, MHDSEEN						      ; 2092

				       2D  11 00C15 	    BRB     4$							      ; 2094

		         2E	       6B  E9 00C17 1$:     BLBC    MHDSEEN, 5$						      ; 2099

		         00	       62  91 00C1A 	    CMPB    (R2), #OBJ$C_HDR_LNM				      ; 2100

				       25  12 00C1D 	    BNEQ    4$							      ;

		    01   AB	       01  90 00C1F 	    MOVB    #1, LNMSEEN						      ; 2101

				       1F  11 00C23 	    BRB     4$							      ; 2102

		         20	       6B  E9 00C25 2$:     BLBC    MHDSEEN, 5$						      ; 2106

		         1C	  01   AB  E9 00C28 	    BLBC    LNMSEEN, 5$						      ; 2107

		         5A	  EA   AB  91 00C2C 	    CMPB    CURRECTYP, R10					      ; 2110

				       04  12 00C30 	    BNEQ    3$							      ;

				       6B  94 00C32 	    CLRB    MHDSEEN						      ; 2111

				       0E  11 00C34 	    BRB     4$							      ; 2110

		         00	  EA   AB  91 00C36 3$:     CMPB    CURRECTYP, #OBJ$C_TIR				      ; 2112

				       08  12 00C3A 	    BNEQ    4$							      ;

		         50	  D1   AB  D0 00C3C 	    MOVL    OBMODESC, R0					      ; 2113

		    0F   A0	       02  8A 00C40 	    BICB2   #2, 15(R0)						      ;

		         50	       01  D0 00C44 4$:     MOVL    #1, R0						      ; 2114

					   04 00C47 	    RET     							      ;

		         7E	       00  9A 00C48 5$:     MOVZBL  #SEV$C_INFOR, -(SP)					      ; 2116

		         7E	  00G  8F  9A 00C4B 	    MOVZBL  #ERM$C_SEQNCE, -(SP)				      ;

		  0000G  CF	       02  FB 00C4F 	    CALLS   #2, LNK$ERRMSG					      ;

				       50  D4 00C54 	    CLRL    R0							      ; 2074

					   04 00C56 	    RET     							      ;



; Routine Size:  105 bytes





;21900  2119	END

;22000  2120	ELUDOM













;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  $GLOBAL$       	    44    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $OWN$          	    53    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $PLIT$         	    72  NOWRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $CODE$         	  3159  NOWRT,  RD ,  EXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)









;				LIBRARY STATISTICS



; Bliss-32 7.352	Saturday 22-AUG-1978 04:53:37	DBB3:[LINKER.SRC]LNKOBJPS1.B32;7				Page 5-9

; Digital Equipment Corporation

;

;

;					     -------- Symbols --------    Blocks

;	File				     Total    Loaded   Percent      Read

;

;  DBA4:[SYSLIB]STARLET.L32;1		      2688         6         0       111











; Size:		3159 code + 169 data bytes

; Run Time:	02:36.4

; Elapsed Time:	02:39.4

; Memory Used:	431 pages

; Compilation Complete

