

; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 1

; Digital Equipment Corporation

;

;00100  0001	MODULE LNK_OBJPASS2 (IDENT='X01.16') =

;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_OBJPASS2

;03100  0031	!

;03200  0032	! FACILITY: LINKER

;03300  0033	!

;03400  0034	! ABSTRACT: PASS 2 OF OBJECT MODULES

;03500  0035	!

;03600  0036	! HISTORY:

;03700  0037	!

;03800  0038	!	VERSION: X01.00

;03900  0039	!

;04000  0040	!	AUTHOR: T.J. PORTER 11-APR-77

;04100  0041	!

;04200  0042	!	MODIFICATIONS:

;04300  0043	!

;04400  0044	! NO.	DATE		PROGRAMMER	PURPOSE

;04500  0045	! ---	----		----------	-------

;04600  0046	! 001	18-JUL-77	T.J. PORTER	CHECK LEGAL SYMBOL NAMES AND

;04700  0047	!					STORE REPEAT COUNTS

;04800  0048	! 002	25-JUL-77	T.J. PORTER	MANIPULATION OF DEBUG DATA TO

;04900  0049	!						END OF IMAGE FILE

;05000  0050	! 003	19-SEP-77	T.J. PORTER	CORRECT ROTATE AND SHIFT BUG

;05100  0051	! 004	16-OCT-77	T.J. PORTER	FILTER DBG RECORDS FROM DEBUGGER

;05200  0052	!						AND REMEMBER P-SECT CONTEXT FOR TRUNCATION ERRORS

;05300  0053	! 005	21-OCT-77	T.J. PORTER	FIX POSITION DEPENDENCE BUG ON STACK

;05400  0054	!						GLOBAL AND IMPLEMENT PDL FOR

;05500  0055	!						ADD AND SUB OPERATORS



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 1-1

; Digital Equipment Corporation

;

;05600  0056	! 006	10-DEC-77	T.J. PORTER	SUPPRESS SYSTEM LIBRARY MODULES FROM MAP

;05700  0057	! 007	19-DEC-77	T.J. PORTER	SHAREABLE IMAGES

;05800  0058	! 008	05-JAN-78	T.J. PORTER	PERMIT DEBUGGER IN SHAREABLE IMAGES

;05900  0059	! 009	18-JAN-78	T.J. PORTER	TRACE BACK

;06000  0060	! 010	21-APR-78	T.J. PORTER	REQUIRE FILE CLEAN UP

;06100  0061	! 011	25-APR-78	T.J. PORTER	SUPPRESSION OF EMPTY IMAGE PAGES

;06200  0062	! 012	09-MAY-78	T.J. PORTER	ADD RE-DEFINITION TIR COMMAND

;06300  0063	! 013	10-MAY-78	T.J. PORTER	ADD ARGUMENT CO-ERCION LOGIC OF TIR COMMANDS

;06400  0064	! 014	08-JUN-78	T.J. PORTER	FIX BUGS IN ARGUMENT CO-ERCION

;06500  0065	! 015	06-JUL-78	T.J. PORTER	ENSURE CREF GETS NEW FLAGS ON

;06600  0066	!						UNIVERSALIZATION OF ENTRY POINTS

;06610  0067	! 016	25-JUL-78	T.J. PORTER	STOPIDR OF RELOCATABLE MAKES IMAGE NON PIC

;06700  0068	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2

; Digital Equipment Corporation

;

;06900  0069	!

;07000  0070	!++

;07100  0071	!

;07200  0072	! FUNCTIONAL DESCRIPTION:

;07300  0073	!

;07400  0074	!

;07500  0075	!	THIS MODULE CONTAINS THE ROUTINES WHICH IMPLEMENT THE SECOND OBJECT

;07600  0076	!	MODULE PASS OF THE LINK. SINCE THE DATA STRUCTURES RELATING

;07700  0077	!	OBJECT MODULES AND FILES WERE BUILT DURING PASS 1, IT IS NOW ONLY

;07800  0078	!	NECESSARY TO FOLLOW THE LINKED LISTS TO ACQUIRE EACH OBJECT

;07900  0079	!	MODULE.

;08000  0080	!	PASS 2 IS CONCERNED WITH WRITING THE BINARY TO THE

;08100  0081	!	OUTPUT IMAGE AND PRODUCTION OF THE MODULE SYNOPSIS OF THE

;08200  0082	!	OUTPUT MAP LISTING. THEREFORE, THIS PASS IGNORES GSD

;08300  0083	!	RECORDS COMPLETELY.

;08400  0084	!--

;08500  0085	!

;08600  0086	LIBRARY

;08700  0087		'SYS$LIBRARY:STARLET.L32';			! SYSTEM USERS DATA STRUCTURE DEFINITIONS

;08800  0088	REQUIRE

;08900  0089		'PREFIX';			! MACROS ETC.

;09000  0281	REQUIRE

;09100  0282		'DATBAS';			! INTERNAL DATA BASE

;09200  0514	REQUIRE

;09300  0515		'SYMFMT';			! SYMBOL TABLE FORMATS

;09400  0600	REQUIRE

;09500  0601		'OBJFMT';			! OBJECT LANGUAGE FORMATS

;09600  0891	REQUIRE

;09700  0892		'TIRAUX';			! AUXILIARY MACROS FOR TIR DATA

;09800  0980	!

;09900  0981	STRUCTURE

;10000  0982		DOUBLEVECTOR [I,J;N,UNIT=4,EXT=1]=

;10100  0983				[2*UNIT*N]

;10200  0984				(DOUBLEVECTOR + 2*UNIT*I + UNIT*J);

;10300  0985	!

;10400  0986	FORWARD ROUTINE

;10500  0987		PROHDRS,					! PASS 2 PROCESSING OF HEADER RECORDS

;10600  0988		PROTIRDBG,					! PASS 2 ON TIR AND DBG RECORDS

;10700  0989		PUSH,						! PUSHES VALUES ON INTERNAL STACKS

;10800  0990		POP;						! REMOVES THEM

;10900  0991	!

;11000  0992	EXTERNAL ROUTINE

;11100  0993		CRF$INSRTKEY : ADDRESSING_MODE(GENERAL),	! INSERT A KEY DESCRIPTION IN CREF TABLES

;11200  0994		LNK$NXTOBJMOD,					! ACQUIRE NEXT OBJECT MODULE

;11300  0995		LNK$NXTREC,					! READ RECORDS SEQUENTIALLY

;11400  0996		LNK$MAPMHD,					! MAP MODULE HEADER INFORMATION

;11500  0997		LNK$MAPLNG,					! MAP THE COMPILER NAME

;11600  0998		LNK$DIAG,

;11700  0999		LNK$ERRMSG,					! ERROR MESSAGES

;11800  1000		LNK$SEARCH,					! SYMBOL TABLE SEARCHER

;11900  1001		LNK$WRTIMGBYTS;					! WRITE BYTE STREAM TO IMAGE

;12000  1002	!

;12100  1003	EXTERNAL LITERAL

;12200  1004		OBJ$B_RECTYP : BYTLIT,				! OFFSET TO RECORD TYPE

;12300  1005		OBJ$B_SUBTYP : BYTLIT,				! OFFSET TO SUB-TYPE FOR THOSE HAVING THEM



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-1

; Digital Equipment Corporation

;

;12400  1006		OBJ$C_HDR_MHD : SHORT,				! MAIN MODULE HEADER SUB-TYPE

;12500  1007		OBJ$C_HDR_LNM : SHORT,				! COMPILER IDENTIFICATION SUB-TYPE

;12600  1008		OBJ$C_TIR : SHORT,				! TIR RECORD TYPE

;12700  1009		OBJ$C_DBG : SHORT,				! DEBUG DATA RECORD TYPE

;12800  1010		OBJ$C_TBT : SHORT,				! TRACE BACK TABLES

;12900  1011		OBJ$C_STOREPLIM : WORDLIT,			! LIMIT ON REPEATED STROES

;13000  1012		ERM$C_EOMSTK : BYTLIT,				! STACK NOT COLLAPSED AT EOM

;13100  1013		ERM$C_FORMAT : BYTLIT,				! ILLEGAL FORMAT

;13200  1014		ERM$C_ILLREP : BYTLIT,				! ILLEGAL REPEAT COUNT ON STORE

;13300  1015		ERM$C_ILLTIR : BYTLIT,				! ILLEGAL TIR COMMAND

;13400  1016		ERM$C_INTSTKOV : BYTLIT,			! INTERNAL STACK OVERFLOW

;13500  1017		ERM$C_INTSTKUN : BYTLIT,			! INTERNAL STACK UNDERFLOW

;13600  1018		ERM$C_NOEPM : BYTLIT,				! ATTEMPT TO STACK ENTRYPOINT MASK

;13700  1019		ERM$C_NOTPSECT : BYTLIT,			! SET RELOC. BASE TO OTHER THAN PSECT CONTEXT

;13800  1020		ERM$C_RECTYP : BYTLIT,				! ILLEGAL RECORD

;13900  1021		ERM$C_SPNAMLNG : BYTLIT,			! ILLEGAL SYMBOL NAME LENGTH

;14000  1022		ERM$C_TIRLNG : BYTLIT,				! TIR COMMAND DATA O'FLOWS RECORD

;14100  1023		ERM$C_TIRNYI : BYTLIT,				! UNIMPLEMEMTED TIR COMMAND

;14200  1024		ERM$C_TRUNC : BYTLIT,				! TRUNCATION ERRORS

;14300  1025		ERM$C_TRUNCDAT : BYTLIT,			! WITH DATA OUTPUT

;14400  1026		ERM$C_UDEFPSC : BYTLIT,				! REFERENCE TO UNDEFINED P-SECTION

;14500  1027		ERM$C_USEUNDEF : BYTLIT,			! USING AN UNDEFINED SYMBOL

;14600  1028		LNK$S_BRIEF : SHORT,				! BRIEF MAP

;14700  1029		LNK$S_DBG : SHORT,				! FLAG THAT DEBUGGER IS LINKED IN

;14800  1030		LNK$S_DBGREC : SHORT,				! CURRENT RECORD IS DEBUG DATA

;14900  1031		LNK$S_EXE : SHORT,				! IMAGE IS EXECUTABLE

;15000  1032		LNK$S_IMAGE : SHORT,				! IMAGE BEING PRODUCED FLAG

;15100  1033		LNK$S_LONG : SHORT,				! PRODUCING A FULL MAP

;15200  1034		LNK$S_MAPOPN : SHORT,				! MAP IS STILL OPEN

;15210  1035		LNK$S_PICIMG : SHORT,				! IMAGE IS PIC

;15300  1036		LNK$S_SYS : SHORT,				! PRODUCING A SYSTEM IMAGE

;15400  1037		LNK$S_TRACE : SHORT,				! TRACEBACK ENABLED

;15500  1038		SEV$C_FATAL : SHORT,				! FATAL SEVERITY CODE

;15600  1039		SEV$C_DIAG : SHORT,				! DIAGNOSTIC SEVERITY

;15700  1040		SEV$C_INFOR : SHORT;				! INFORMATIONAL

;15800  1041	!

;15900  1042	EXTERNAL

;16000  1043		LNK$AL_SYTBLFMT,				! SYMBOL TABLE FORMAT DESCRIPTION BLOCK

;16100  1044		LNK$GL_CTLMSK,					! LINK CONTROL MASK

;16200  1045		LNK$GL_CURISD : REF BLOCK[,BYTE],		! ADDRESS OF ISD OWNING CURRENT P-SECT

;16300  1046		LNK$GL_LOCN,					! CURRENT LOCATION COUNTER

;16400  1047		LNK$GL_DSTLOCN,					! CURRENT LOCATION IN DEBUG SYMBOL TABLE

;16500  1048		LNK$GL_CURFIL : REF BLOCK[,BYTE];		! POINTER TO CURRENT FILE DESCRIPTOR

;16600  1049	!

;16700  1050	GLOBAL LITERAL

;16800  1051		STK$C_SIZE = 25;				! INTERNAL STACK SIZE

;16900  1052	!

;17000  1053	OWN

;17100  1054		OBMODESC : REF BLOCK[,BYTE],			! CURRENT OBJ DESCRIPTOR

;17200  1055		OBJREC : REF VECTOR[,BYTE],			! CURRENT OBJ RECORD

;17300  1056		COMPUSTACK : VECTOR[STK$C_SIZE],		! COMPUTATION STACK

;17400  1057		PDLSTACK : VECTOR[STK$C_SIZE,BYTE],		! PDL STACK

;17500  1058		PSECTSTACK : DOUBLEVECTOR[STK$C_SIZE],		! STACK TO RECORD P-SECTION CONTEXT

;17600  1059		STACKPOINTER : BYTE,				! INTERNAL STACK POINTER

;17700  1060		RECLNG : WORD;					! RECORD LENGTH



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-2

; Digital Equipment Corporation

;

;17800  1061	!

;17900  1062	GLOBAL ROUTINE LNK$OBJPASS2=

;18000  1063	BEGIN

;18100  1064	!

;18200  1065	!	MAIN ROUTINE TO READ RECORDS SEQUENTIALLY FROM OBJECT

;18300  1066	!	MODULE FILES AND DISPATCH ON RECORD TYPE

;18400  1067	!

;18500  1068	OWN

;18600  1069		TIRLOCN;							! SAVED LOCATION IN IMAGE BINARY

;18700  1070	LOCAL	AUXFNB : REF BLOCK[,BYTE];

;18800  1071	!

;18900  1072	STACKPOINTER = STK$C_SIZE;						! SET STACK POINTER

;19000  1073	WHILE LNK$NXTOBJMOD(OBMODESC) DO						! WHILE THERE

;19100  1074	BEGIN										! IS ANOTHER OBJECT

;19200  1075		WHILE LNK$NXTREC(OBJREC,RECLNG) DO					! MODULE CONTINUE

;19300  1076		BEGIN									! READING ITS

;19400  1077			IF NOT ( CASE .OBJREC[OBJ$B_RECTYP] FROM 0 TO OBJ$C_MAXRECTYP OF! RECORDS AND

;19500  1078				SET							! DISPATCH ON TYPE

;19600  1079				[0]   : BEGIN						! HEADERS

;19700  1080					IF NOT PROHDRS()				! IF AN ERROR

;19800  1081					THEN FALSE					! QUIT IMMEDIATELY

;19900  1082					ELSE BEGIN					! OTHERWISE IF THAT WAS THE

;20000  1083						IF .OBJREC[OBJ$B_SUBTYP] EQL OBJ$C_HDR_LNM ! CREATOR IDENT RECORD

;20100  1084						AND (.OBMODESC[OMD$B_FLAGS] AND		! OF A SHAREABLE IMAGE

;20200  1085							(OMD$M_SHRIMG OR OMD$M_NOBIN))	! OR MODULE WITHOUT

;20300  1086								NEQ 0			! ANY BINARY

;20400  1087						THEN EXITLOOP				! ALL DONE WITH MODULE

;20500  1088						ELSE TRUE				! OTHERWISE CONTINUE

;20600  1089					     END

;20700  1090					END;

;20800  1091				[2] : 							! TIR

;20900  1092					IF .LNK$GL_CTLMSK<LNK$S_IMAGE,1,0>		! IF THE IMAGE FILE IS

;21000  1093					THEN BEGIN					! STILL OPEN

;21100  1094						LNK$GL_CTLMSK<LNK$S_DBGREC,1,0> = FALSE; ! RESET POSSIBLE DBG

;21200  1095						LNK$GL_LOCN = .TIRLOCN;			! RECORD FLAG AND LOCATION

;21300  1096						IF NOT PROTIRDBG()			! COUNTER AND PROCESS IT

;21400  1097						THEN FALSE				! AND QUIT ON ERROR

;21500  1098						ELSE BEGIN				! OTHERWISE SAVE NEW

;21600  1099							TIRLOCN = .LNK$GL_LOCN;		! LOCATION COUNTER

;21700  1100							TRUE				! AND CONTINUE

;21800  1101						     END

;21900  1102					     END

;22000  1103					ELSE EXITLOOP;

;22100  1104				[4,5] :	BEGIN

;22200  1105					IF NOT .LNK$GL_CTLMSK<LNK$S_IMAGE,1,0>		! IF NO IMAGE UNDER

;22300  1106					THEN EXITLOOP;					! PRODUCTION QUIT NOW

;22400  1107					IF (.LNK$GL_CTLMSK<LNK$S_DBG,1,0>		! IN THE CASE OF DBG

;22500  1108					    OR (.LNK$GL_CTLMSK<LNK$S_TRACE,1,0>		! OR TRACEBACK RECORDS

;22600  1109						AND (.OBJREC[OBJ$B_RECTYP] EQL OBJ$C_TBT))) ! IF WE GOT THE DEBUGGER

;22700  1110					AND NOT .LNK$GL_CTLMSK<LNK$S_SYS,1,0>		! LINKED INTO EXECUTABLE

;22800  1111					AND NOT .(OBMODESC[OMD$B_FLAGS])<OMD$S_DEBUGER,1,0> ! AND THIS IS NOT IT

;22900  1112					THEN BEGIN

;23000  1113						LNK$GL_CTLMSK<LNK$S_DBGREC,1,0> = TRUE;	! SET THE DEBUG CONTEXT FLAG

;23100  1114						LNK$GL_LOCN = .LNK$GL_DSTLOCN;		! AND LOCATION COUNTER

;23200  1115						IF NOT PROTIRDBG()			! AND GO PROCESS IT



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-3

; Digital Equipment Corporation

;

;23300  1116						THEN FALSE				! QUIT NOW ON ERRORS

;23400  1117						ELSE BEGIN				! OTHERWISE

;23500  1118							LNK$GL_DSTLOCN = .LNK$GL_LOCN;	! SAVE UPDATED POINTER

;23600  1119							TRUE				! AND CONTINUE

;23700  1120						     END

;23800  1121					     END

;23900  1122					ELSE TRUE					! IGNORE IT

;24000  1123					END;

;24100  1124				[3]   : BEGIN						! EOM -

;24200  1125					IF .STACKPOINTER EQL STK$C_SIZE			! IF STACKS HAVE BEEN

;24300  1126					THEN EXITLOOP;					! COLLAPSED ALL DONE

;24400  1127					LNK$ERRMSG(ERM$C_EOMSTK,SEV$C_INFOR,		! ELSE REPORT THAT STACK

;24500  1128						OBMODESC[OMD$B_NAMLNG],			! STILL HAS N 

;24600  1129						(STK$C_SIZE - .STACKPOINTER));		! LONGWORDS ON IT

;24700  1130					FALSE;						! WHICH BECOMES FATAL

;24800  1131				      	END;

;24900  1132			  [INRANGE]   : TRUE;						! IGNORE OTHERS

;25000  1133			  [OUTRANGE]  : BEGIN						! ERROR ON

;25100  1134					   LNK$ERRMSG(ERM$C_RECTYP,SEV$C_INFOR,		! ILLEGAL TYPES

;25200  1135						      LNK$GL_CURFIL[FDB$Q_USRNAMDSC],

;25300  1136							.OBJREC[OBJ$B_RECTYP]);

;25400  1137					   FALSE;

;25500  1138				        END;

;25600  1139				TES)

;25700  1140			THEN BEGIN							! IF AN ERROR IN

;25800  1141				AUXFNB = LNK$GL_CURFIL[FDB$AL_AUXFNB];		! POINT TO AUXILIARY FILENAME BLOCK

;25900  1142				LNK$ERRMSG(ERM$C_FORMAT,SEV$C_FATAL,			! PROCESSING RECORD-

;26000  1143						.AUXFNB[NAM$B_RSL],.AUXFNB[NAM$L_RSA]);	! ISSUE FORMAT ERROR

;26100  1144				RETURN FALSE;						! AND GIVE UP

;26200  1145			     END;

;26300  1146		END;								! END OF RECORD LOOP

;26400  1147	LNK$GL_CURISD = 0;

;26500  1148	END;									! END OF MODULES LOOP

;26600  1149	LNK$GL_CURFIL = 0;

;26700  1150	RETURN TRUE;								! END OF PASS 2

;26800  1151	END;									! RETURNING SUCCESS





							    .TITLE  LNK_OBJPASS2

							    .IDENT  \X01.16\



							    .PSECT  $OWN$,NOEXE,2



					      00000 OBMODESC:

							    .BLKB   4

					      00004 OBJREC: .BLKB   4

					      00008 COMPUSTACK:

							    .BLKB   100

					      0006C PDLSTACK:

							    .BLKB   25

					      00085	    .BLKB   3

					      00088 PSECTSTACK:

							    .BLKB   200

					      00150 STACKPOINTER:

							    .BLKB   1



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-4

; Digital Equipment Corporation

;

					      00151	    .BLKB   1

					      00152 RECLNG: .BLKB   2

					      00154 TIRLOCN:.BLKB   4



						    SYM$C_MAXLNG==	15

						    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

						    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

						    OBJ$C_MAXRECTYP==	5

						    GPS$C_SIZE==	24



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-5

; Digital Equipment Corporation

;

						    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

						    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



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-6

; Digital Equipment Corporation

;

						    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

						    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

						    STOCTL$C_SIZE==	2

						    STK$C_SIZE==	25

							    .GLOBL  CRF$INSRTKEY, LNK$NXTOBJMOD, LNK$NXTREC, LNK$MAPMHD

							    .GLOBL  LNK$MAPLNG, LNK$DIAG, LNK$ERRMSG, LNK$SEARCH, LNK$WRTIMGBYTS

							    .GLOBL  OBJ$B_RECTYP, OBJ$B_SUBTYP, OBJ$C_HDR_MHD, OBJ$C_HDR_LNM

							    .GLOBL  OBJ$C_TIR, OBJ$C_DBG, OBJ$C_TBT, OBJ$C_STOREPLIM

							    .GLOBL  ERM$C_EOMSTK, ERM$C_FORMAT, ERM$C_ILLREP, ERM$C_ILLTIR



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-7

; Digital Equipment Corporation

;

							    .GLOBL  ERM$C_INTSTKOV, ERM$C_INTSTKUN, ERM$C_NOEPM, ERM$C_NOTPSECT

							    .GLOBL  ERM$C_RECTYP, ERM$C_SPNAMLNG, ERM$C_TIRLNG, ERM$C_TIRNYI

							    .GLOBL  ERM$C_TRUNC, ERM$C_TRUNCDAT, ERM$C_UDEFPSC, ERM$C_USEUNDEF

							    .GLOBL  LNK$S_BRIEF, LNK$S_DBG, LNK$S_DBGREC, LNK$S_EXE

							    .GLOBL  LNK$S_IMAGE, LNK$S_LONG, LNK$S_MAPOPN, LNK$S_PICIMG

							    .GLOBL  LNK$S_SYS, LNK$S_TRACE, SEV$C_FATAL, SEV$C_DIAG

							    .GLOBL  SEV$C_INFOR, LNK$AL_SYTBLFMT, LNK$GL_CTLMSK, LNK$GL_CURISD

							    .GLOBL  LNK$GL_LOCN, LNK$GL_DSTLOCN, LNK$GL_CURFIL



							    .PSECT  $CODE$,NOWRT,2



					 0FEC 00000 	    .ENTRY  LNK$OBJPASS2, Save R2,R3,R5,R6,R7,R8,R9,R10,R11	      ; 1062

		         55	0000G  CF  9E 00002 	    MOVAB   LNK$GL_CURFIL, R5					      ;

		         56	0000G  CF  9E 00007 	    MOVAB   LNK$GL_LOCN, R6					      ;

		         57	       00  D0 0000C 	    MOVL    #LNK$S_DBGREC, R7					      ;

		         58	       00  D0 0000F 	    MOVL    #LNK$S_IMAGE, R8					      ;

		         59	       00  D0 00012 	    MOVL    #SEV$C_INFOR, R9					      ;

		         5A	0000G  CF  9E 00015 	    MOVAB   LNK$GL_CTLMSK, R10					      ;

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

		  0150   CB	       19  90 0001F 	    MOVB    #25, STACKPOINTER					      ; 1072

				       5B  DD 00024 1$:     PUSHL   R11							      ; 1073

		  0000G  CF	       01  FB 00026 	    CALLS   #1, LNK$NXTOBJMOD					      ;

		         03	       50  E8 0002B 	    BLBS    R0, 2$						      ;

				     00EE  31 0002E 	    BRW     19$							      ;

				0152   CB  9F 00031 2$:     PUSHAB  RECLNG						      ; 1075

				  04   AB  9F 00035 	    PUSHAB  OBJREC						      ;

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

		         03	       50  E8 0003D 	    BLBS    R0, 4$						      ;

				     00D5  31 00040 3$:     BRW     18$							      ;

	   52	    04   AB 00000000G  8F  C1 00043 4$:     ADDL3   #OBJ$B_RECTYP, OBJREC, R2				      ; 1077

	   05	         00	       62  8F 0004C 	    CASEB   (R2), #0, #5					      ;

	 003E	       FFE1	     001D     00050 5$:     .WORD   6$-5$,-						      ;

	 005A	       005A	     008F     00056		    2$-5$,-						      ;

								    8$-5$,-						      ;

								    15$-5$,-						      ;

								    10$-5$,-						      ;

								    10$-5$						      ;

		         7E	       62  9A 0005C 	    MOVZBL  (R2), -(SP)						      ; 1134

	   7E	         65	       0B  C1 0005F 	    ADDL3   #11, LNK$GL_CURFIL, -(SP)				      ; 1135

		         7E	       59  9A 00063 	    MOVZBL  R9, -(SP)						      ; 1134

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

				     008D  31 0006A 	    BRW     16$							      ;

		  0000V  CF	       00  FB 0006D 6$:     CALLS   #0, PROHDRS						      ; 1080

		         60	       50  E9 00072 	    BLBC    R0, 13$						      ;

	   50	    04   AB 00000000G  8F  C1 00075 	    ADDL3   #OBJ$B_SUBTYP, OBJREC, R0				      ; 1083

		         00	       60  91 0007E 	    CMPB    (R0), #OBJ$C_HDR_LNM				      ;

				       AE  12 00081 	    BNEQ    2$							      ;

		         50	       6B  D0 00083 	    MOVL    OBMODESC, R0					      ; 1084

		         06	  0F   A0  93 00086 	    BITB    15(R0), #6						      ;

				       B4  12 0008A 	    BNEQ    3$							      ;

				       A3  11 0008C 7$:     BRB     2$							      ;

	   AE	         6A	       58  E1 0008E 8$:     BBC     R8, LNK$GL_CTLMSK, 3$				      ; 1092

	   00	         6A	       57  E5 00092 	    BBCC    R7, LNK$GL_CTLMSK, 9$				      ; 1094

		         66	0154   CB  D0 00096 9$:     MOVL    TIRLOCN, LNK$GL_LOCN				      ; 1095

		  0000V  CF	       00  FB 0009B 	    CALLS   #0, PROTIRDBG					      ; 1096



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-8

; Digital Equipment Corporation

;

		         5C	       50  E9 000A0 	    BLBC    R0, 17$						      ;

		  0154   CB	       66  D0 000A3 	    MOVL    LNK$GL_LOCN, TIRLOCN				      ; 1099

				       87  11 000A8 	    BRB     2$							      ; 1062

	   6A	         6A	       58  E1 000AA 10$:    BBC     R8, LNK$GL_CTLMSK, 18$				      ; 1105

	   09	         6A	       00  E0 000AE 	    BBS     #LNK$S_DBG, LNK$GL_CTLMSK, 11$			      ; 1107

	   27	         6A	       00  E1 000B2 	    BBC     #LNK$S_TRACE, LNK$GL_CTLMSK, 14$			      ; 1108

		         00	       62  91 000B6 	    CMPB    (R2), #OBJ$C_TBT					      ; 1109

				       22  12 000B9 	    BNEQ    14$							      ;

	   1E	         6A	       00  E0 000BB 11$:    BBS     #LNK$S_SYS, LNK$GL_CTLMSK, 14$			      ; 1110

		         50	       6B  D0 000BF 	    MOVL    OBMODESC, R0					      ; 1111

	   C5	    0F   A0	       05  E0 000C2 	    BBS     #5, 15(R0), 7$					      ;

	   00	         6A	       57  E2 000C7 	    BBSS    R7, LNK$GL_CTLMSK, 12$				      ; 1113

		         66	0000G  CF  D0 000CB 12$:    MOVL    LNK$GL_DSTLOCN, LNK$GL_LOCN				      ; 1114

		  0000V  CF	       00  FB 000D0 	    CALLS   #0, PROTIRDBG					      ; 1115

		         27	       50  E9 000D5 13$:    BLBC    R0, 17$						      ;

		  0000G  CF	       66  D0 000D8 	    MOVL    LNK$GL_LOCN, LNK$GL_DSTLOCN				      ; 1118

				       AD  11 000DD 14$:    BRB     7$							      ; 1062

		         19	0150   CB  91 000DF 15$:    CMPB    STACKPOINTER, #25					      ; 1125

				       32  13 000E4 	    BEQL    18$							      ;

		         7E	0150   CB  9A 000E6 	    MOVZBL  STACKPOINTER, -(SP)					      ; 1129

	   6E	         19	       6E  C3 000EB 	    SUBL3   (SP), #25, (SP)					      ;

	   7E	         6B	       10  C1 000EF 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1128

		         7E	       59  9A 000F3 	    MOVZBL  R9, -(SP)						      ; 1127

		         7E	  00G  8F  9A 000F6 	    MOVZBL  #ERM$C_EOMSTK, -(SP)				      ;

		  0000G  CF	       04  FB 000FA 16$:    CALLS   #4, LNK$ERRMSG					      ;

	   53	         65	       13  C1 000FF 17$:    ADDL3   #19, LNK$GL_CURFIL, AUXFNB				      ; 1141

				  04   A3  DD 00103 	    PUSHL   4(AUXFNB)						      ; 1142

		         7E	  03   A3  9A 00106 	    MOVZBL  3(AUXFNB), -(SP)					      ;

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

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

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

				       0D  11 00116 	    BRB     20$							      ; 1144

				0000G  CF  D4 00118 18$:    CLRL    LNK$GL_CURISD					      ; 1147

				     FF05  31 0011C 	    BRW     1$							      ; 1073

				       65  D4 0011F 19$:    CLRL    LNK$GL_CURFIL					      ; 1149

		         50	       01  D0 00121 	    MOVL    #1, R0						      ; 1150

					   04 00124 	    RET     							      ;

				       50  D4 00125 20$:    CLRL    R0							      ; 1062

					   04 00127 	    RET     							      ;



; Routine Size:  296 bytes





;26900  1152	ROUTINE PROHDRS =

;27000  1153	BEGIN

;27100  1154	!

;27200  1155	!	PROCESS HEADER RECORDS AS FOLLOWS:

;27300  1156	!

;27400  1157	!		IF HEADER TYPE 0 (MAIN MODULE HEADER) CALL THE MAP

;27500  1158	!			ROUTINE THAT DESCRIBES A MODULE.

;27600  1159	!

;27700  1160	!		IF A LANGUAGE PROCESSOR HEADER TYPE, CALL THE MAP

;27800  1161	!			ROUTINE THAT OUTPUTS THAT DATA.

;27900  1162	!

;28000  1163	!		IGNORE ALL OTHER SUB-TYPES.



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-9

; Digital Equipment Corporation

;

;28100  1164	!

;28200  1165	IF (.OBMODESC[OMD$B_FLAGS] AND OMD$M_MAPMOD) EQL 0	! IF MODULE NOT FLAGGED FOR MAP

;28300  1166	AND NOT .LNK$GL_CTLMSK<LNK$S_LONG,1,0>			! AND THIS IS NOT A FULL MAP

;28400  1167	THEN RETURN TRUE;					! FORGET IT

;28500  1168	IF NOT .LNK$GL_CTLMSK<LNK$S_MAPOPN,1,0>			! ALSO FORGET IT IF

;28600  1169	THEN RETURN TRUE;					! MAP IS NOT OPEN

;28700  1170	IF .OBJREC[OBJ$B_SUBTYP] EQL OBJ$C_HDR_MHD		! IF THIS IS MAIN HEADER

;28800  1171	THEN LNK$MAPMHD(.OBJREC,.OBMODESC)			! GO MAP SOME INFO

;28900  1172	ELSE IF .OBJREC[OBJ$B_SUBTYP] EQL OBJ$C_HDR_LNM		! OR IF THE COMPILER IDENTIFICATION

;29000  1173		THEN LNK$MAPLNG(OBJREC[OBJ$B_SUBTYP]+1,.RECLNG-2);	! HEADER GO MAP THAT DATA

;29100  1174	RETURN TRUE;						! RETURN SUCCESS

;29200  1175	END;











					 0004 00128 PROHDRS:.WORD   Save R2						      ; 1152

		         50	0000'  CF  D0 0012A 	    MOVL    OBMODESC, R0					      ; 1165

	   06	    0F   A0	       04  E0 0012F 	    BBS     #4, 15(R0), 1$					      ;

	   37	  0000G  CF	       00  E1 00134 	    BBC     #LNK$S_LONG, LNK$GL_CTLMSK, 3$			      ; 1166

	   31	  0000G  CF	       00  E1 0013A 1$:     BBC     #LNK$S_MAPOPN, LNK$GL_CTLMSK, 3$			      ; 1168

	   52	  0000'  CF 00000000G  8F  C1 00140 	    ADDL3   #OBJ$B_SUBTYP, OBJREC, R2				      ; 1170

		         00	       62  91 0014A 	    CMPB    (R2), #OBJ$C_HDR_MHD				      ;

				       0D  12 0014D 	    BNEQ    2$							      ;

				       50  DD 0014F 	    PUSHL   R0							      ; 1171

				0000'  CF  DD 00151 	    PUSHL   OBJREC						      ;

		  0000G  CF	       02  FB 00155 	    CALLS   #2, LNK$MAPMHD					      ;

				       15  11 0015A 	    BRB     3$							      ; 1170

		         00	       62  91 0015C 2$:     CMPB    (R2), #OBJ$C_HDR_LNM				      ; 1172

				       10  12 0015F 	    BNEQ    3$							      ;

		         7E	0000'  CF  3C 00161 	    MOVZWL  RECLNG, -(SP)					      ; 1173

		         6E	       02  C2 00166 	    SUBL2   #2, (SP)						      ;

				  01   A2  9F 00169 	    PUSHAB  1(R2)						      ;

		  0000G  CF	       02  FB 0016C 	    CALLS   #2, LNK$MAPLNG					      ;

		         50	       01  D0 00171 3$:     MOVL    #1, R0						      ; 1174

					   04 00174 	    RET     							      ; 1152



; Routine Size:  77 bytes





;29300  1176	ROUTINE PROTIRDBG=

;29400  1177	BEGIN

;29500  1178	!

;29600  1179	!	PROCESS TEXT INFORMATION AND DEBUG RECORDS AS FOLLOWS:

;29700  1180	!

;29800  1181	LABEL

;29900  1182		STACKGROUP,

;30000  1183		STOREGROUP,

;30100  1184		OPERATEGROUP,

;30200  1185		SETLOCATION,

;30300  1186		AUGLOCATION;

;30400  1187	!

;30500  1188	OWN

;30600  1189		CURPSECT : REF BLOCK[,BYTE],			! CURRENT P-SECTION DESCRIPTOR ADDRESS



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-10

; Digital Equipment Corporation

;

;30700  1190		CURPSECTBASE,					! BASE ADDRESS OF CURRENT CONTRIBUTION

;30800  1191		STKDATLNGTBL : VECTOR[TIR$C_MAXSTACOD+1,BYTE] INITIAL(	! STACK COMMAND DATA LENGTH TABLE

;30900  1192	!

;31000  1193					   BYTE(1,		! 0 - STACK GLOBAL - AT LEAST ONE BYTE FOLLOWS

;31100  1194						1,		! 1 - STACK SIGNED BYTE - ONE BYTE MUST FOLLOW

;31200  1195						2,		! 2 - STACK SIGNED WORD - TWO BYTES MUST FOLLOW

;31300  1196						4,		! 3 - STACK LONGWORD - FOUR BYTES MUST FOLLOW

;31400  1197						2,		! 4 - STACK P-SECTION BASE PLUS BYTE - TWO DATA BYTES

;31500  1198						3,		! 5 -   "       "       "   "   WORD - THREE DATA BYTES

;31600  1199						5,		! 6 -   "       "       "   "  LONGWORD - FIVE DATA BYTES

;31700  1200						1,		! 7 - STACK UNSIGNED BYTES - ONE BYTE MUST FOLLOW

;31800  1201						2,		! 8 - STACK UNSIGNED WORD - TWO BYTES MUST FOLLOW

;31900  1202						0,		! 9 - STACK BYTE FROM IMAGE - NO DATA BYTES

;32000  1203						0,		! 10 - STACK WORD FROM IMAGE - NO DATA BYTES

;32100  1204						0,		! 11 - STACK LONGWORD FROM IMAGE - NO DATA BYTES

;32200  1205						1,		! 12 - STACK ENTRY POINT MASK - AT LEAST ONE BYTE REQUIRED

;32300  1206						2+ARG$C_SIZE)),! 13 - STACK RESULT OF ARGUMENT CHECK.

;32400  1207	!

;32500  1208		STORECTLTBL : BLOCKVECTOR[TIR$C_MAXSTOCOD-TIR$C_MINSTOCOD	! THIS IS THE

;32600  1209					+1 ,STOCTL$C_SIZE,BYTE]		! STORE COMMAND CONTROL TABLE

;32700  1210									! EACH ENTRY OF WHICH HAS TWO BYTES, BEING

;32800  1211									! THE FLAGS AND OUTPUT BYTE COUNT (RESPECTIVELY)

;32900  1212									! FOR THE CORRESPONDING STORE COMMAND.

;33000  1213	!								! SEE 'TITAUX' FOR FURTHER DETAILS.

;33100  1214									! COMMAND TIR$C_MINSTOCOD + ...

;33200  1215			INITIAL ( BYTE (0,1,				! 0 - STORE SIGNED BYTE

;33300  1216					0,2,				! 1 - STORE SIGNED WORD

;33400  1217					0,4,				! 2 - STORE LONGWORD

;33500  1218					STOCTL$M_DISPL,1,		! 3 - STORE BYTE DISPLACED

;33600  1219					STOCTL$M_DISPL,2,		! 4 - STORE WORD DISPLACED

;33700  1220					STOCTL$M_DISPL,4,		! 5 - STORE LONGWORD DISPLACED

;33800  1221					6^STOCTL$S_MBZBIT,1,		! 6 - STORE SHORT LITERAL

;33900  1222					0,4,				! 7 - STORE POSITION INDEPENDENT LONGWORD DATA REF

;34000  1223					0,5,				! 8 - STORE POSITION INDEPENDENT CODE REFERENCE

;34100  1224									! WHICH IS ADDRESSING MODE FOLLOWED BY LONGWORD

;34200  1225					STOCTL$M_REP,1,			! 9 - REPEATED SIGNED BYTE

;34300  1226					STOCTL$M_REP,2,			! 10 - REPEATED SIGNED WORD

;34400  1227					STOCTL$M_REP,4,			! 11 - REPEATED LONGWORD

;34500  1228					0,0,				! 12 - ARBITRARY BIT FIELD ***NYI***

;34600  1229					8^STOCTL$S_MBZBIT,1,		! 13 - UNSIGNED BYTE

;34700  1230					16^STOCTL$S_MBZBIT,2,		! 14 - UNSIGNED WORD

;34800  1231					STOCTL$M_REP OR (8^STOCTL$S_MBZBIT) ,1,	! 15 - REPEATED UNSIGNED BYTE

;34900  1232					STOCTL$M_REP OR (16^STOCTL$S_MBZBIT),2,	! 16 - REPEATED UNSIGNED WORD

;35000  1233					STOCTL$M_CONMBZ OR (8^STOCTL$S_MBZBIT) ,1,	! 17 - BYTE (-128 TO +255)

;35100  1234					STOCTL$M_CONMBZ OR (16^STOCTL$S_MBZBIT),2,	! 18 - WORD (-32K TO + 65K)

;35200  1235					STOCTL$M_REP OR STOCTL$M_CONMBZ OR	! 19 - REPEATED BYTE (-128 TO +255)

;35300  1236						(8^STOCTL$S_MBZBIT),1,

;35400  1237					STOCTL$M_REP OR STOCTL$M_CONMBZ OR	! 20 - REPEATED WORD (-32K TO +65K)

;35500  1238						(16^STOCTL$S_MBZBIT),2));

;35600  1239	!

;35700  1240	LOCAL

;35800  1241		ENDRECADDR,						! END OF CURRENT RECORD

;35900  1242		TIROFFSET,						! OFFSET OF CURRENT COMMAND

;36000  1243		COMMANDTYPE,						! COMMAND CODE

;36100  1244		OUTPUTARRAY : VECTOR[5,BYTE],				! OUTPUT OF STORE COMMANDS



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-11

; Digital Equipment Corporation

;

;36200  1245		PDL,							! POSITION DEPENDENCE LEVEL

;36300  1246		BYTECOUNT,						! LENGTH OF BYTES TO WRITE OUT

;36400  1247		DATALNG;						! BYTES OF DATA IN COMMAND

;36500  1248	!

;36600  1249	BIND TIRREC = OBJREC : REF VECTOR[,BYTE],			! RENAME THE RECORD

;36700  1250	     VALUE = OUTPUTARRAY[1];					! LEAVES ONE BYTE FOR POSSIBLE ADDRESS MODE

;36800  1251	!

;36900  1252	TIROFFSET = 1;						! START AT FIRST BYTE PAST RECORD TYPE CODE

;37000  1253	ENDRECADDR = TIRREC[0] + .RECLNG;			! COMPUTE END ADDRESS + 1

;37100  1254	WHILE .TIROFFSET LSSU .RECLNG DO

;37200  1255	BEGIN

;37300  1256	!

;37400  1257	!	STEP THROUGH THE CONCATENATED SEQUENCE OF THE COMMANDS

;37500  1258	!	IN THIS RECORD.

;37600  1259	!

;37700  1260	IF (COMMANDTYPE = .TIRREC[.TIROFFSET]) GTRU 127				! IF COMMAND IS

;37800  1261	THEN BEGIN								! STORE IMMEDIATE

;37900  1262		TIROFFSET = .TIROFFSET+1;					! POINT PAST THE

;38000  1263		BYTECOUNT = 256 -.COMMANDTYPE;					! BYTECOUNT AND

;38100  1264		IF TIRREC[.TIROFFSET + .BYTECOUNT] GTRU .ENDRECADDR		! CHECK THERE ARE

;38200  1265		THEN BEGIN							! THAT MANY STILL

;38300  1266			LNK$ERRMSG(ERM$C_TIRLNG,SEV$C_INFOR,			! IN THE RECORD

;38400  1267				OBMODESC[OMD$B_NAMLNG],.BYTECOUNT);		! ISSUE ERROR MESSAGE AND

;38500  1268			RETURN FALSE;						! GIVE UP IF NOT

;38600  1269	             END;

;38700  1270		IF NOT LNK$WRTIMGBYTS(.BYTECOUNT,TIRREC[.TIROFFSET],)		! OTHERWISE WRITE

;38800  1271		THEN RETURN FALSE;

;38900  1272		TIROFFSET = .TIROFFSET + .BYTECOUNT;				! THE STREAM AND

;39000  1273	      END								! UPDATE THE OFFSET

;39100  1274	ELSE BEGIN								! NOT A STORE IMMEDIATE

;39200  1275	!

;39300  1276		BIND COMMANDATA = TIRREC[.TIROFFSET+1]

;39400  1277					: BLOCK[,BYTE];			! NAME THE DATA PART OF COMMAND

;39500  1278	!

;39600  1279		IF NOT ( SELECTONE .COMMANDTYPE OF

;39700  1280		  SET

;39800  1281		  [0 TO TIR$C_MAXSTACOD] :					! PROCESS STACK GROUP

;39900  1282		STACKGROUP : BEGIN

;40000  1283	!

;40100  1284			    LOCAL

;40200  1285				ARGNUM,						! INDEX TO ARGUMENT TO BE CHECKED

;40300  1286				ARGDESC : REF BLOCK[,BYTE],			! POINTER TO ARGUMENT DESCRIPTOR

;40400  1287				PSECTNUM,					! P-SECTION NUMBER

;40500  1288				SYMDESC : REF BLOCK[,BYTE];			! SYMBOL DESCRIPTOR POINTER

;40600  1289	!

;40700  1290			DATALNG = .STKDATLNGTBL[.COMMANDTYPE];			! GET EXPECTED DATA LENGTH

;40800  1291			IF (COMMANDATA[SIGNED_BYTE] + .DATALNG) GTRU .ENDRECADDR! AND CHECK THAT IT EXISTS

;40900  1292			THEN BEGIN						! AND IF NOT ISSUE

;41000  1293				LNK$ERRMSG(ERM$C_TIRLNG,SEV$C_INFOR,		! AN ERROR MESSAGE

;41100  1294					OBMODESC[OMD$B_NAMLNG],.DATALNG);	! TO THAT EFFECT

;41200  1295				LEAVE STACKGROUP WITH FALSE;			! AND GIVE UP

;41300  1296			     END;

;41400  1297			PDL = 0;						! INITIALIZE AS PIC

;41500  1298			PSECTNUM = -1;						! NOT P-SECTION RELATIVE

;41600  1299			CASE .COMMANDTYPE FROM 0 TO TIR$C_MAXSTACOD OF			! CASE ON THE PARTIC-



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-12

; Digital Equipment Corporation

;

;41700  1300			SET								! ULAR STACK COMMANDS

;41800  1301			[TIR$C_STA_GBL,							! STACK GLOBAL AND

;41900  1302			TIR$C_STA_EPM,							! ENTRY POINT MASK

;42000  1303			TIR$C_STA_CKARG]:						! ARGUMENT CHECK

;42100  1304				BEGIN					

;42200  1305				DATALNG = .DATALNG+.COMMANDATA[SYMBOLENG];		! UPDATE THE ACTUAL

;42300  1306				IF .COMMANDTYPE EQL TIR$C_STA_CKARG			! IF ARGUMENT CHECK

;42400  1307				THEN BEGIN						! COMMAND

;42500  1308					ARGNUM = .(COMMANDATA[SYMBOLENG] + 1 + 		! FETCH THE ARGUMENT

;42600  1309							.COMMANDATA[SYMBOLENG])<0,8,0>;	! NUMBER AS AN UNSIGNED BYTE

;42700  1310					ARGDESC = 2 + COMMANDATA[SYMBOLENG] +		! AND COMPUTE ADDRESS

;42800  1311							.COMMANDATA[SYMBOLENG];		! WITHIN RECORD

;42900  1312					DATALNG = .DATALNG + .ARGDESC[ARG$B_BYTECNT];	! THEN UPDATE DATA COUNT

;43000  1313				     END;

;43100  1314				IF (COMMANDATA[SYMBOLENG] +.DATALNG) GTRU .ENDRECADDR	! NOW

;43200  1315				THEN BEGIN						! CHECK ALL THERE

;43300  1316					LNK$ERRMSG(ERM$C_TIRLNG,SEV$C_INFOR,		! AND ERROR MESSAGE

;43400  1317					   OBMODESC[OMD$B_NAMLNG],.DATALNG);		! IF NOT

;43500  1318					LEAVE STACKGROUP WITH FALSE;			! GIVE UP NOW

;43600  1319				     END;

;43700  1320				IF .COMMANDATA[SYMBOLENG] GTRU SYM$C_MAXLNG		! DATA IS PRESENT NOW

;43800  1321				OR .COMMANDATA[SYMBOLENG] EQL 0				! SO CHECK LEGAL SYMBOL

;43900  1322				THEN (LNK$ERRMSG(ERM$C_SPNAMLNG,SEV$C_INFOR,		! LENGTH AND IF NO GOOD

;44000  1323						.COMMANDATA[SYMBOLENG],SYM$C_MAXLNG);	! ISSUE AN ERROR MESSAGE

;44100  1324					RETURN FALSE);					! AND RETURN FAILURE

;44200  1325				IF NOT LNK$SEARCH(COMMANDATA[SYMBOLENG],SYMDESC)	! GO LOOK UP SYMBOL.

;44300  1326				THEN BEGIN

;44400  1327					IF .COMMANDTYPE NEQ TIR$C_STA_CKARG		! IF NOT FOUND

;44500  1328					THEN VALUE = 0					! VALUE IS ZERO

;44600  1329					ELSE VALUE = TRUE;				! EXCEPT FOR CHECK ARG

;44700  1330					LNK$ERRMSG(ERM$C_USEUNDEF,SEV$C_DIAG,		! ISSUE ERROR

;44800  1331						OBMODESC[OMD$B_NAMLNG],

;44900  1332						COMMANDATA[SYMBOLENG]);			! MESSAGE

;45000  1333				     END

;45100  1334				ELSE BEGIN						! FOUND SYMBOL - CHECK

;45200  1335					IF .COMMANDTYPE EQL TIR$C_STA_EPM		! THAT, IF THIS IS A

;45300  1336					THEN IF (.SYMDESC[SYM$W_FLAGS] AND		! STACK OF ENTRY MASK

;45400  1337											! WE ACTUALLY HAVE ONE

;45500  1338						SYM$M_ENTMSK) EQL 0			! AND ISSUE ERROR IF

;45600  1339											! NOT MASK FIELD WILL

;45700  1340					THEN LNK$ERRMSG(ERM$C_NOEPM,			! BE ZERO IN DESCRIPTOR

;45800  1341						SEV$C_DIAG,OBMODESC[OMD$B_NAMLNG],

;45900  1342						COMMANDATA[SYMBOLENG]);

;46000  1343					IF (.SYMDESC[SYM$W_FLAGS] AND			! NOW CHECK WHAT WE

;46100  1344						SYM$M_DEF) EQL 0			! FOUND WAS A DEFINITION

;46200  1345					THEN LNK$ERRMSG(ERM$C_USEUNDEF,			! AND IF NOT ISSUE

;46300  1346						SEV$C_DIAG,OBMODESC[OMD$B_NAMLNG], 	! UNDEFINED SYMBOL REF

;46400  1347						COMMANDATA[SYMBOLENG]);			! ERROR (VALUE = 0)

;46500  1348					IF .COMMANDTYPE EQL TIR$C_STA_GBL		! NOW PICK UP SYMBOL

;46600  1349					THEN BEGIN

;46700  1350						VALUE = .SYMDESC[SYM$L_VALUE];		! VALUE OF SYMBOL

;46800  1351						IF (.SYMDESC[SYM$W_FLAGS] AND		! AND IF RELOCATABLE SET

;46900  1352								SYM$M_REL) NEQ 0	! POS. DEP. LEVEL = 1

;47000  1353						THEN PDL = 1;				! 

;47100  1354					     END



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 2-13

; Digital Equipment Corporation

;

;47200  1355					ELSE IF .COMMANDTYPE EQL TIR$C_STA_EPM

;47300  1356					THEN VALUE = .SYMDESC[SYM$W_ENTMSK];		! FOR STACK ENTRY POINT MASK

;47400  1357					IF .COMMANDTYPE EQL TIR$C_STA_CKARG		! VALUE IS THE MASK. FOR

;47500  1358					THEN BEGIN					! CHECK ARGUMENT ...

;47600  1359						BIND ARGVALDATA = SYMDESC[SYM$L_VALDATA]! POINT TO THE VALIDATION

;47700  1360								: REF VECTOR[,BYTE];	! DATA ARRAY

;47800  1361						IF .ARGVALDATA EQL 0			! BUT IF NONE

;47900  1362						THEN VALUE = TRUE			! SET INDICATOR

;48000  1363						ELSE IF (.ARGVALDATA[0] - 3) LSSU	! IF NOT ENOUGH ARGS

;48100  1364									.ARGNUM		!

;48200  1365							THEN VALUE = TRUE		! ALSO ASSUME MATCH

;48300  1366							ELSE IF .ARGVALDATA[2+.ARGNUM]	! OTHERWISE

;48400  1367								EQL .ARGDESC[ARG$V_PASSMECH]

;48500  1368								THEN VALUE = TRUE	! SET INDICATOR ON

;48600  1369								ELSE VALUE = FALSE;	! EQUALITY OF PASSING 

;48700  1370											! MECHANISMS

;48800  1371					     END;

;48900  1372				     END;

;49000  1373				END;

;49100  1374			[TIR$C_STA_SB] : VALUE = .COMMANDATA[SIGNED_BYTE];		! GET A SIGN EXTENDED BYTE

;49200  1375			[TIR$C_STA_SW] : VALUE = .COMMANDATA[SIGNED_WORD];		! GET SIGN EXTENDED WORD

;49300  1376			[TIR$C_STA_LW] : VALUE = .COMMANDATA[LONGWORD];			! GET LONGWORD DATA

;49400  1377			[TIR$C_STA_PB,

;49500  1378			TIR$C_STA_PW,

;49600  1379			TIR$C_STA_PL] : BEGIN

;49700  1380					PDL = 1;					! VALUE IS POSITION DEPENDENT

;49800  1381					PSECTNUM = .COMMANDATA[PSECT_INDEX];		! EXTRACT PSECT NUMBER

;49900  1382					CASE .COMMANDTYPE FROM TIR$C_STA_PB TO

;50000  1383						TIR$C_STA_PL OF SET

;50100  1384					[TIR$C_STA_PB] : VALUE = .COMMANDATA[PSECT_B_OFFSET];	! GET A BYTE OFFSET

;50200  1385					[TIR$C_STA_PW] : VALUE = .COMMANDATA[PSECT_W_OFFSET];	! WORD OFFSET

;50300  1386					[TIR$C_STA_PL] : VALUE = .COMMANDATA[PSECT_L_OFFSET];	! LONGWORD OFFSET

;50400  1387						 TES

;50500  1388					END;

;50600  1389			[TIR$C_STA_UB] : VALUE = .COMMANDATA[UNSIGNED_BYTE];			! UNSIGNED BYTE

;50700  1390			[TIR$C_STA_UW] : VALUE = .COMMANDATA[UNSIGNED_WORD];			! UNSIGNED WORD

;50800  1391			[INRANGE] : BEGIN							! ALL OTHERS ARE

;50900  1392					LNK$ERRMSG(ERM$C_TIRNYI,SEV$C_INFOR,			! NOT YET IMPLE-

;51000  1393							.COMMANDTYPE,OBMODESC[OMD$B_NAMLNG]);	! MENTED - SAY

;51100  1394												! SO AND GIVE UP

;51200  1395					LEAVE STACKGROUP WITH FALSE;				! UP

;51300  1396				    END;

;51400  1397			TES;

;51500  1398			LEAVE STACKGROUP WITH PUSH (.VALUE,.PSECTNUM,.PDL);! NOW PUSH THE

;51600  1399									! VALUES AND RETURN

;51700  1400			END;						! WITH ITS CODE - END OF STACK GROUP



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3

; Digital Equipment Corporation

;

;00100  1401	!

;00200  1402		  [TIR$C_MINSTOCOD TO TIR$C_MAXSTOCOD] :			! PROCESS STORE GROUP

;00300  1403		STOREGROUP : BEGIN

;00400  1404	!

;00500  1405			    LOCAL

;00600  1406				STOCMDINDEX,					! INDEX INTO THE GROUP

;00700  1407				CORRECTVALUE,					! CORRECTED STORE VALUE

;00800  1408				OUTPUTADDR,					! ADDRESS OF OUTPUT STREAM

;00900  1409				MBZMASK,					! ASK COMPUTED TO CORRECT THE VALUE

;01000  1410				OUTBYTECOUNT,					! NUMBER OF BYTES TO WRITE OUT

;01100  1411				LOWESTMBZBIT,					! FOR COMPUTING MBZ FIELDS

;01200  1412				REPEATCOUNT;					! STORE REPEATED COUNTS

;01300  1413	!

;01400  1414			DATALNG = 0;							! MOST DON'T HAVE ANY DATA

;01500  1415			STOCMDINDEX = .COMMANDTYPE - TIR$C_MINSTOCOD;			! CREATE USEFUL INDEX

;01600  1416			OUTBYTECOUNT = .STORECTLTBL[.STOCMDINDEX,STOCTL$B_BYTES];	! GET OUTPUT BYTE COUNT

;01700  1417			IF (.STORECTLTBL[.STOCMDINDEX,STOCTL$B_FLAGS]			! IF THIS IS A

;01800  1418					AND STOCTL$M_REP) NEQ 0				! REPEATED STORE,

;01900  1419			THEN BEGIN

;02000  1420				IF NOT POP (REPEATCOUNT,PDL)				! GET TOP OF STACK

;02100  1421				THEN LEAVE STOREGROUP WITH FALSE;			! GIVING UP ON ERROR

;02200  1422				IF .REPEATCOUNT GTRU OBJ$C_STOREPLIM			! CHECK REASONABLE

;02300  1423				THEN BEGIN						! REPEAT COUNT AND

;02400  1424					LNK$ERRMSG(ERM$C_ILLREP,SEV$C_INFOR,		! ISSUE ERROR IF BAD

;02500  1425						OBMODESC[OMD$B_NAMLNG],.REPEATCOUNT,	! THEN GIVE UP

;02600  1426							OBJ$C_STOREPLIM);		!

;02700  1427					LEAVE STOREGROUP WITH FALSE;			! ON COMMAND.

;02800  1428				     END;

;02900  1429			     END

;03000  1430			ELSE REPEATCOUNT = 1;						! NO REPEAT, SO SET TO 1.

;03100  1431			IF NOT POP (VALUE,PDL)						! ATTEMPT TO GET

;03200  1432			THEN LEAVE STOREGROUP WITH FALSE;				! VALUE TO BE STORED

;03300  1433			IF (.STORECTLTBL[.STOCMDINDEX,STOCTL$B_FLAGS] AND STOCTL$M_DISPL)	! GIVING UP ON FAILURE

;03400  1434						NEQ 0					! IF A DISPLACE

;03500  1435			THEN VALUE = .VALUE - .LNK$GL_LOCN -				! COMMAND, SUBTRACT

;03600  1436						.OUTBYTECOUNT;				! CURRENT LOCATION COUNTER

;03700  1437											! AND OUTPUT BYTE COUNT

;03800  1438			LOWESTMBZBIT = .STORECTLTBL[.STOCMDINDEX,STOCTL$V_MBZBIT];	! GET NUMBER OF LOWEST

;03900  1439			IF (.STORECTLTBL[.STOCMDINDEX,STOCTL$B_FLAGS] AND STOCTL$M_CONMBZ)! BIT WHICH MUST BE ZERO

;04000  1440						NEQ 0

;04100  1441			THEN IF .VALUE<.LOWESTMBZBIT,1,0> NEQ 0				! IF A CONDITIONALLY MBZ

;04200  1442				THEN LOWESTMBZBIT = 0;					! FIELD, SUPPRESS MBZ IF

;04300  1443											! VALUE IS NEGATIVE

;04400  1444			IF .LOWESTMBZBIT EQL 0						! IF THERE IS NOT AN

;04500  1445			THEN CORRECTVALUE = .VALUE < 0,MIN(32,8*.OUTBYTECOUNT),1>	! MBZ FIELD, CORRECT

;04600  1446											! VALUE IS SIGN EXTEN-

;04700  1447			ELSE BEGIN							! SION OF THE FIELD

;04800  1448											! TO BE WRITTEN.

;04900  1449				MBZMASK = (1^.LOWESTMBZBIT) -1;				! OTHERWISE, MASK

;05000  1450											! VALUE TO GET CORRECT

;05100  1451				CORRECTVALUE = .VALUE AND .MBZMASK;			! ONE

;05200  1452			     END;

;05300  1453			IF .VALUE NEQ .CORRECTVALUE					! IF VALUE DOES

;05400  1454			THEN BEGIN

;05500  1455				LNK$ERRMSG(ERM$C_TRUNC,SEV$C_DIAG,			! NOT MATCH THE



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-1

; Digital Equipment Corporation

;

;05600  1456					OBMODESC[OMD$B_NAMLNG],

;05700  1457					CURPSECT[PSC$B_NAMLNG],				! CORRECTED VERSION,

;05800  1458					(.LNK$GL_LOCN - .CURPSECTBASE));		! ISSUE TRUNCATION ERROR

;05900  1459				LNK$ERRMSG(ERM$C_TRUNCDAT,SEV$C_INFOR,			! GIVING MODULE, PSECTION,

;06000  1460						.VALUE,.CORRECTVALUE,			! OFFSET, THEN COMPUTED VALUE,

;06100  1461						.LNK$GL_LOCN);				! WRITTEN VALUE AND VIRTUAL ADDRESS

;06200  1462				VALUE = .CORRECTVALUE;					! GET THE CORRECT VALUE

;06300  1463			     END;

;06400  1464			IF .COMMANDTYPE NEQ TIR$C_STO_PICR				! IF THIS IS A

;06410  1465			AND .COMMANDTYPE NEQ TIR$C_STO_PIDR

;06500  1466			THEN OUTPUTADDR = OUTPUTARRAY[1]

;06510  1467			ELSE IF .COMMANDTYPE EQL TIR$C_STO_PIDR				! IF A STORE PIC DATA REF

;06520  1468			     THEN BEGIN

;06530  1469				OUTPUTADDR = OUTPUTARRAY[1];				! FOUR BYTES GO

;06540  1470				IF .PDL NEQ 0						! BUT IF TARGET IS

;06550  1471				THEN LNK$GL_CTLMSK<LNK$S_PICIMG,1,0> = FALSE;		! RELOCATABLE, IMAGE

;06560  1472				END							! IS NON PIC

;06600  1473			     ELSE BEGIN							! STORE POSITION INDEPEN-

;06700  1474				OUTPUTADDR = OUTPUTARRAY[0];				! DENT CODE REFERENCE

;06800  1475				IF .PDL EQL 0						! THEN ADJUST POINTER

;06900  1476				THEN OUTPUTARRAY[0] = ABSADDRMODE			! ABSOLUTE IF PDL = 0

;07000  1477				ELSE BEGIN	

;07100  1478					VALUE = .VALUE-.LNK$GL_LOCN-			! PC RELATIVE (SO COMPUTE

;07200  1479							.OUTBYTECOUNT;			! DISPLACEMENT

;07300  1480					OUTPUTARRAY[0] = PCRELADDRMODE;			! IF PDL > 0

;07400  1481				     END;

;07500  1482			     END;

;07600  1483			LEAVE STOREGROUP WITH LNK$WRTIMGBYTS(.OUTBYTECOUNT,.OUTPUTADDR,	! FINALLY OUTPUT BYTES

;07700  1484								.REPEATCOUNT);		! AND RETURN THE RESULT

;07800  1485			END;								! OF THE OPERATION

;07900  1486	!

;08000  1487		  [TIR$C_MINOPRCOD TO TIR$C_MAXOPRCOD] :			! PROCESS OPERATOR GROUP

;08100  1488		OPERATEGROUP : 	BEGIN

;08200  1489				BUILTIN ROT;

;08300  1490				LOCAL

;08400  1491					SYMDESC : REF BLOCK[,BYTE],

;08500  1492					VALUE2,

;08600  1493					PDL2;

;08700  1494	!

;08800  1495				DATALNG = 0;

;08900  1496				IF .COMMANDTYPE EQL TIR$C_OPR_NOP

;09000  1497				THEN LEAVE OPERATEGROUP WITH TRUE;

;09100  1498				IF .COMMANDTYPE EQL TIR$C_OPR_REDEF		! IF THIS IS A RE-DEFINITION COMMAND

;09200  1499				THEN BEGIN						! FIRST VALIDATE THE TIR STREAM

;09300  1500					DATALNG = 1 + .COMMANDATA[SYMBOLENG];		! SET LENGTH OF DATA

;09400  1501					IF (COMMANDATA[SYMBOLENG] +.DATALNG) GTRU 

;09500  1502							.ENDRECADDR			! LENGTH OF DATA AND

;09600  1503					THEN BEGIN					! CHECK ALL THERE

;09700  1504						LNK$ERRMSG(ERM$C_TIRLNG,SEV$C_INFOR,	! AND ERROR MESSAGE

;09800  1505						   OBMODESC[OMD$B_NAMLNG],.DATALNG);	! IF NOT

;09900  1506						LEAVE OPERATEGROUP WITH FALSE;		! GIVE UP NOW

;10000  1507					     END;

;10100  1508					IF .COMMANDATA[SYMBOLENG] GTRU SYM$C_MAXLNG	! DATA IS PRESENT NOW

;10200  1509					OR .COMMANDATA[SYMBOLENG] EQL 0			! SO CHECK LEGAL SYMBOL

;10300  1510					THEN (LNK$ERRMSG(ERM$C_SPNAMLNG,SEV$C_INFOR,	! LENGTH AND IF NO GOOD



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-2

; Digital Equipment Corporation

;

;10400  1511						.COMMANDATA[SYMBOLENG],SYM$C_MAXLNG);	! ISSUE AN ERROR MESSAGE

;10500  1512						RETURN FALSE);				! AND RETURN FAILURE

;10600  1513					IF NOT .LNK$GL_CTLMSK<LNK$S_SHR,1,0>		! IF NOT PRODUCING A SHAREABLE IMAGE

;10700  1514					THEN LEAVE OPERATEGROUP WITH TRUE;		! FORGET IT

;10800  1515					IF NOT LNK$SEARCH(COMMANDATA[SYMBOLENG],SYMDESC)! GO LOOK UP SYMBOL.

;10900  1516					OR (.SYMDESC[SYM$W_FLAGS] AND SYM$M_DEF) EQL 0	! CHECK IT FOR A DEFINITION

;11000  1517					THEN BEGIN

;11100  1518						LNK$ERRMSG(ERM$C_USEUNDEF,SEV$C_DIAG,	! ISSUE ERROR IF NOT THERE

;11200  1519							OBMODESC[OMD$B_NAMLNG],

;11300  1520							COMMANDATA[SYMBOLENG]);	 

;11400  1521						LEAVE OPERATEGROUP WITH TRUE;		! AND FORGET IT

;11500  1522					     END;

;11600  1523					IF (.SYMDESC[SYM$W_FLAGS] AND (SYM$M_REDEF OR	! IF THE SYMBOL HAS A RE-DEF

;11700  1524							SYM$M_SHRIMG)) NEQ 0		! PENDING OR IS FROM SOME

;11800  1525					THEN LEAVE OPERATEGROUP WITH TRUE;		! OTHER IMAGE FORGET IT

;11900  1526					SYMDESC[SYM$L_NEWVAL] = .LNK$GL_LOCN;		! OTHERWISE SET ITS NEW VALUE

;12000  1527					SYMDESC[SYM$W_FLAGS] = .SYMDESC[SYM$W_FLAGS] OR	! AND SET THE RE-DEF

;12100  1528							SYM$M_REDEF OR SYM$M_UNI;	! PENDING AND UNIVERSAL

;12200  1529					IF .LNK$GL_CTLMSK<LNK$S_MAPOPN,1,0>		! IF THERE WAS A MAP OPENED

;12300  1530					AND NOT .LNK$GL_CTLMSK<LNK$S_BRIEF,1,0>		! AND IT WAS NOT A BRIEF

;12400  1531					THEN CRF$INSRTKEY(LNK$AL_SYTBLFMT,SYMDESC[SYM$B_NAMLNG], ! TELL CREF

;12500  1532							SYMDESC[SYM$L_VALUE],			! ABOUT NEW

;12600  1533							.SYMDESC[SYM$W_FLAGS]);			! FLAGS

;12700  1534					LEAVE OPERATEGROUP WITH TRUE;

;12800  1535				     END;

;12900  1536				IF NOT POP(VALUE,PDL)				! FOR ALL OTHERS, GET TOP VALUE

;13000  1537				THEN LEAVE OPERATEGROUP WITH FALSE;		! FROM STACK - ERROR IF NONE

;13100  1538				IF .COMMANDTYPE NEQ TIR$C_OPR_NEG

;13200  1539				AND .COMMANDTYPE NEQ TIR$C_OPR_COM

;13300  1540				THEN IF NOT POP(VALUE2,PDL2)			! GET SECOND VALUE IF A BINARY

;13400  1541					THEN LEAVE OPERATEGROUP WITH FALSE;	! OPERATOR - ERROR IF NONE

;13500  1542				CASE .COMMANDTYPE FROM TIR$C_OPR_ADD TO		! THEN DISPATCH ON COMMAND

;13600  1543					TIR$C_MAXOPRCOD OF SET

;13700  1544				[TIR$C_OPR_ADD] : BEGIN

;13800  1545						VALUE = .VALUE + .VALUE2;	! ADD THE TWO VALUES

;13900  1546						PDL = .PDL + .PDL2;		! AND THE TWO POS. DEP. LEVELS

;14000  1547						TRUE;

;14100  1548						  END;

;14200  1549				[TIR$C_OPR_SUB] : BEGIN

;14300  1550						VALUE = .VALUE2 - .VALUE;	! SUBTRACT THE VALUES AND

;14400  1551						PDL = .PDL2 - .PDL;		! AND POSITION DEPENDENCE LEVELS

;14500  1552						TRUE;

;14600  1553						  END;

;14700  1554				[TIR$C_OPR_NEG] : BEGIN

;14800  1555						VALUE = -.VALUE;

;14900  1556						TRUE;

;15000  1557						  END;

;15100  1558				[TIR$C_OPR_COM] : BEGIN

;15200  1559						VALUE = -1 - .VALUE;

;15300  1560						TRUE;

;15400  1561						  END;

;15500  1562				[TIR$C_OPR_MUL] : BEGIN

;15600  1563						VALUE = .VALUE*.VALUE2;

;15700  1564						TRUE;

;15800  1565						  END;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-3

; Digital Equipment Corporation

;

;15900  1566				[TIR$C_OPR_DIV] : BEGIN

;16000  1567						VALUE = .VALUE2/.VALUE;

;16100  1568						TRUE;

;16200  1569						  END;

;16300  1570				[TIR$C_OPR_IOR] : BEGIN

;16400  1571						VALUE = .VALUE OR .VALUE2;

;16500  1572						TRUE;

;16600  1573						  END;

;16700  1574				[TIR$C_OPR_EOR] : BEGIN

;16800  1575						VALUE = (.VALUE OR .VALUE2) AND 

;16900  1576								NOT(.VALUE AND .VALUE2);

;17000  1577						TRUE;

;17100  1578						  END;

;17200  1579				[TIR$C_OPR_AND] : BEGIN

;17300  1580						VALUE = .VALUE AND .VALUE2;

;17400  1581						TRUE;

;17500  1582						  END;

;17600  1583				[TIR$C_OPR_ROT] : BEGIN

;17700  1584						VALUE = ROT(.VALUE2, .VALUE);

;17800  1585						TRUE;

;17900  1586						  END;

;18000  1587				[TIR$C_OPR_ASH] : BEGIN

;18100  1588						VALUE = .VALUE2 ^ .VALUE;

;18200  1589						TRUE;

;18300  1590						  END;

;18400  1591				[TIR$C_OPR_SEL] : BEGIN

;18500  1592						IF .VALUE EQL TRUE			! IF TOP LONGWORD IS

;18600  1593						THEN LEAVE OPERATEGROUP WITH TRUE;	! IS TRUE, ALL DONE

;18700  1594						VALUE = .VALUE2;			! OTHERWISE MOVE VALUE2

;18800  1595						PDL = .PDL2;				! TO VALUE 3, DISCARDING

;18900  1596						IF NOT POP(VALUE2,PDL2)			! WHAT EVER WAS THERE

;19000  1597						THEN LEAVE OPERATEGROUP WITH FALSE;	! BUT CHECK SOMETHING WAS

;19100  1598						  END;

;19200  1599				[INRANGE] : BEGIN

;19300  1600						LNK$ERRMSG(ERM$C_TIRNYI,SEV$C_INFOR,

;19400  1601								.COMMANDTYPE,

;19500  1602								OBMODESC[OMD$B_NAMLNG]);

;19600  1603						LEAVE OPERATEGROUP WITH FALSE;

;19700  1604					   END;

;19800  1605				TES;

;19900  1606				LEAVE OPERATEGROUP WITH PUSH(.VALUE,-1,.PDL);

;20000  1607				END;

;20100  1608	!

;20200  1609		[TIR$C_CTL_SETRB] :						! PROCESS SETTING OF RELOCATION BASE

;20300  1610		SETLOCATION : BEGIN

;20400  1611				IF (CURPSECT = .PSECTSTACK[.STACKPOINTER,0]) EQL 0	! SET POINTER TO CURRENT P-SECTION

;20500  1612				THEN BEGIN						! DESCRIPTOR AND IF ZERO

;20600  1613					LNK$ERRMSG(ERM$C_NOTPSECT,SEV$C_DIAG,		! REPORT AS DIAGNOSTIC

;20700  1614						OBMODESC[OMD$B_NAMLNG]);

;20800  1615				     END

;20900  1616				ELSE LNK$GL_CURISD = .CURPSECT[PSC$L_ISECT];		! SET CURRENT ISD ADDRESS

;21000  1617				CURPSECTBASE = .PSECTSTACK[.STACKPOINTER,1];		! SET BASE OF THIS MODULES CONTRIBUTION

;21100  1618				IF NOT POP (VALUE,PDL)					! GIVE UP IF THAT FAILS

;21200  1619				THEN LEAVE SETLOCATION WITH FALSE;

;21300  1620				DATALNG = 0;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-4

; Digital Equipment Corporation

;

;21400  1621				LNK$GL_LOCN = .VALUE;					! OTHERWISE SET IT

;21500  1622				LEAVE SETLOCATION WITH TRUE;

;21600  1623				END;

;21700  1624	!

;21800  1625		[TIR$C_CTL_AUGRB] :						! PROCESS AUGMENTS TO RELOCATION BASE

;21900  1626		AUGLOCATION : BEGIN

;22000  1627				DATALNG = 4;						! FOUR BYTES OF DATA

;22100  1628				IF (COMMANDATA[LONGWORD] + .DATALNG) GTRU .ENDRECADDR	! CHECK THE INCREMENT EXISTS

;22200  1629				THEN BEGIN						! AND IF NOT ISSUE THE

;22300  1630					LNK$ERRMSG(ERM$C_TIRLNG,SEV$C_INFOR,		! ERROR MESSAGE

;22400  1631						OBMODESC[OMD$B_NAMLNG],4);

;22500  1632					LEAVE AUGLOCATION WITH FALSE;			! AND GIVE UP

;22600  1633				     END;

;22700  1634				LNK$GL_LOCN = .LNK$GL_LOCN + .COMMANDATA[LONGWORD];	! IF AUGMENT, DO THAT

;22800  1635				LEAVE AUGLOCATION WITH TRUE;

;22900  1636				END;

;23000  1637		  [OTHERWISE] : BEGIN						! IF NOT IN ONE

;23100  1638		    	       LNK$ERRMSG(ERM$C_ILLTIR,SEV$C_INFOR,		! OF THE ABOVE GROUPS, ISSUE

;23200  1639				  OBMODESC[OMD$B_NAMLNG],.COMMANDTYPE);		! ILLEGAL TIR

;23300  1640			       FALSE;						! MESSAGE AND

;23400  1641			       END;

;23500  1642		  TES)

;23600  1643		THEN RETURN FALSE;						! RETURN IF ERROR

;23700  1644		TIROFFSET = .TIROFFSET + 1 + .DATALNG ;				! UPDATE RECORD OFFSET

;23800  1645		END;

;23900  1646	END;									! END OF THIS RECORD

;24000  1647	RETURN TRUE;

;24100  1648	END;







							    .PSECT  $OWN$,NOEXE,2



					      00158 CURPSECT:

							    .BLKB   4

					      0015C CURPSECTBASE:

							    .BLKB   4

					      00160 STKDATLNGTBL:

							    .BYTE   1, 1, 2, 4, 2, 3, 5, 1, 2, 0, 0, 0, 1, 4		      ;

					      0016E	    .BLKB   2

					      00170 STORECTLTBL:

							    .BYTE   0, 1, 0, 2, 0, 4, 2, 1, 2, 2, 2, 4, 48, 1, 0, 4, 0, 5, -  ;

								    1, 1, 1, 2, 1, 4, 0, 0, 64, 1, -128, 2, 65, 1, -127, 2, - ;

								    68, 1, -124, 2, 69, 1, -123, 2			      ;



						    TIRREC=		OBJREC





							    .PSECT  $CODE$,NOWRT,2



					 0FFC 00175 PROTIRDBG:

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

		         5E	       28  C2 00177 	    SUBL2   #40, SP						      ;

		         55	       01  D0 0017A 	    MOVL    #1, TIROFFSET					      ; 1252

		         5B	0000'  CF  3C 0017D 	    MOVZWL  RECLNG, ENDRECADDR					      ; 1253



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-5

; Digital Equipment Corporation

;

		         5B	0000'  CF  C0 00182 	    ADDL2   TIRREC, ENDRECADDR					      ;

    0000'  CF	         10	       00  ED 00187 1$:     CMPZV   #0, #16, RECLNG, TIROFFSET				      ; 1254

				       55     0018D									      ;

				       03  1A 0018E 	    BGTRU   2$							      ;

				     0594  31 00190 	    BRW     95$							      ;

		         50	0000'  CF  D0 00193 2$:     MOVL    TIRREC, R0						      ; 1260

		         54	     6540  9A 00198 	    MOVZBL  (TIROFFSET)[R0], COMMANDTYPE			      ;

	      0000007F   8F	       54  D1 0019C 	    CMPL    COMMANDTYPE, #127					      ;

				       42  1B 001A3 	    BLEQU   6$							      ;

				       55  D6 001A5 	    INCL    TIROFFSET						      ; 1262

	   6E 00000100   8F	       54  C3 001A7 	    SUBL3   COMMANDTYPE, #256, BYTECOUNT			      ; 1263

	   51	         55	       6E  C1 001AF 	    ADDL3   (SP), TIROFFSET, R1					      ; 1264

		         51	       50  C0 001B3 	    ADDL2   R0, R1						      ;

		         5B	       51  D1 001B6 	    CMPL    R1, ENDRECADDR					      ;

				       12  1B 001B9 	    BLEQU   4$							      ;

				       6E  DD 001BB 	    PUSHL   BYTECOUNT						      ; 1266

	   7E	  0000'  CF	       10  C1 001BD 3$:     ADDL3   #16, OBMODESC, -(SP)				      ; 1267

		         7E	       00  9A 001C3 	    MOVZBL  #SEV$C_INFOR, -(SP)					      ; 1266

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

				     054B  31 001CA 	    BRW     93$							      ;

				       7E  D4 001CD 4$:     CLRL    -(SP)						      ; 1270

				0000'DF45  9F 001CF 	    PUSHAB  @TIRREC[TIROFFSET]					      ;

				  08   AE  DD 001D4 	    PUSHL   BYTECOUNT						      ;

		  0000G  CF	       03  FB 001D7 	    CALLS   #3, LNK$WRTIMGBYTS					      ;

		         03	       50  E8 001DC 	    BLBS    R0, 5$						      ;

				     0549  31 001DF 	    BRW     96$							      ;

		         55	       6E  C0 001E2 5$:     ADDL2   BYTECOUNT, TIROFFSET				      ; 1272

				       A0  11 001E5 	    BRB     1$							      ; 1260

		         53	  01 A540  9E 001E7 6$:     MOVAB   1(TIROFFSET)[R0], R3				      ; 1276

				       54  D5 001EC 	    TSTL    COMMANDTYPE						      ; 1279

				       03  18 001EE 	    BGEQ    8$							      ;

				     019A  31 001F0 7$:     BRW     37$							      ;

		         0D	       54  D1 001F3 8$:     CMPL    COMMANDTYPE, #13					      ;

				       F8  14 001F6 	    BGTR    7$							      ;

		         57	0000'CF44  9A 001F8 	    MOVZBL  STKDATLNGTBL[COMMANDTYPE], DATALNG			      ; 1290

	   50	         53	       57  C1 001FE 	    ADDL3   DATALNG, R3, R0					      ; 1291

		         5B	       50  D1 00202 	    CMPL    R0, ENDRECADDR					      ;

				       5B  1A 00205 	    BGTRU   12$							      ;

				  18   AE  D4 00207 	    CLRL    PDL							      ; 1297

		         5A	       01  CE 0020A 	    MNEGL   #1, PSECTNUM					      ; 1298

	   0D	         00	       54  CF 0020D 	    CASEL   COMMANDTYPE, #0, #13				      ; 1299

	 0124	       011E	     001C     00211 9$:     .WORD   10$-9$,-						      ;

	 0130	       0130	     012A     00217		    25$-9$,-						      ;

	 015C	       0156	     0130     0021D		    26$-9$,-						      ;

	 0162	       0162	     0162     00223		    27$-9$,-						      ;

		       001C	     001C     00229		    28$-9$,-						      ;

								    28$-9$,-						      ;

								    28$-9$,-						      ;

								    33$-9$,-						      ;

								    34$-9$,-						      ;

								    35$-9$,-						      ;

								    35$-9$,-						      ;

								    35$-9$,-						      ;

								    10$-9$,-						      ;

								    10$-9$						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-6

; Digital Equipment Corporation

;

		         50	       63  9A 0022D 10$:    MOVZBL  (R3), R0						      ; 1305

		         57	       50  C0 00230 	    ADDL2   R0, DATALNG						      ;

				  04   AE  D4 00233 	    CLRL    4(SP)						      ; 1306

		         0D	       54  D1 00236 	    CMPL    COMMANDTYPE, #13					      ;

				       1E  12 00239 	    BNEQ    11$							      ;

				  04   AE  D6 0023B 	    INCL    4(SP)						      ;

		         50	       63  9A 0023E 	    MOVZBL  (R3), R0						      ; 1308

		         50	       53  C0 00241 	    ADDL2   R3, R0						      ;

		         56	  01   A0  9A 00244 	    MOVZBL  1(R0), ARGNUM					      ;

		         50	       63  9A 00248 	    MOVZBL  (R3), R0						      ; 1310

		         50	       53  C0 0024B 	    ADDL2   R3, R0						      ;

	   58	         50	       02  C1 0024E 	    ADDL3   #2, R0, ARGDESC					      ;

		         50	  01   A8  9A 00252 	    MOVZBL  1(ARGDESC), R0					      ; 1312

		         57	       50  C0 00256 	    ADDL2   R0, DATALNG						      ;

	   50	         53	       57  C1 00259 11$:    ADDL3   DATALNG, R3, R0					      ; 1314

		         5B	       50  D1 0025D 	    CMPL    R0, ENDRECADDR					      ;

				       05  1B 00260 	    BLEQU   13$							      ;

				       57  DD 00262 12$:    PUSHL   DATALNG						      ; 1316

				     FF56  31 00264 	    BRW     3$							      ; 1317

		         0F	       63  91 00267 13$:    CMPB    (R3), #15						      ; 1320

				       03  1B 0026A 	    BLEQU   15$							      ;

				     02A6  31 0026C 14$:    BRW     58$							      ;

				       63  95 0026F 15$:    TSTB    (R3)						      ; 1321

				       F9  13 00271 	    BEQL    14$							      ;

				  1C   AE  9F 00273 	    PUSHAB  SYMDESC						      ; 1325

				       53  DD 00276 	    PUSHL   R3							      ;

		  0000G  CF	       02  FB 00278 	    CALLS   #2, LNK$SEARCH					      ;

		         25	       50  E8 0027D 	    BLBS    R0, 18$						      ;

		         0D	       54  D1 00280 	    CMPL    COMMANDTYPE, #13					      ; 1327

				       05  13 00283 	    BEQL    16$							      ;

				  21   AE  D4 00285 	    CLRL    VALUE						      ; 1328

				       04  11 00288 	    BRB     17$							      ; 1327

		    21   AE	       01  D0 0028A 16$:    MOVL    #1, VALUE						      ; 1329

				       53  DD 0028E 17$:    PUSHL   R3							      ; 1330

	   7E	  0000'  CF	       10  C1 00290 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1331

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

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

		  0000G  CF	       04  FB 0029D 	    CALLS   #4, LNK$ERRMSG					      ;

				     00E0  31 002A2 	    BRW     36$							      ; 1325

				       59  D4 002A5 18$:    CLRL    R9							      ; 1335

		         0C	       54  D1 002A7 	    CMPL    COMMANDTYPE, #12					      ;

				       1F  12 002AA 	    BNEQ    19$							      ;

				       59  D6 002AC 	    INCL    R9							      ;

		         50	  1C   AE  D0 002AE 	    MOVL    SYMDESC, R0						      ; 1336

	   14	    1E   A0	       0F  E0 002B2 	    BBS     #15, 30(R0), 19$					      ; 1338

				       53  DD 002B7 	    PUSHL   R3							      ; 1340

	   7E	  0000'  CF	       10  C1 002B9 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1341

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

		         7E	  00G  8F  9A 002C2 	    MOVZBL  #ERM$C_NOEPM, -(SP)					      ;

		  0000G  CF	       04  FB 002C6 	    CALLS   #4, LNK$ERRMSG					      ;

		         52	  1C   AE  D0 002CB 19$:    MOVL    SYMDESC, R2						      ; 1343

	   14	    1E   A2	       01  E0 002CF 	    BBS     #1, 30(R2), 20$					      ; 1344

				       53  DD 002D4 	    PUSHL   R3							      ; 1345

	   7E	  0000'  CF	       10  C1 002D6 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1346

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



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-7

; Digital Equipment Corporation

;

		         7E	  00G  8F  9A 002DF 	    MOVZBL  #ERM$C_USEUNDEF, -(SP)				      ;

		  0000G  CF	       04  FB 002E3 	    CALLS   #4, LNK$ERRMSG					      ;

				       54  D5 002E8 20$:    TSTL    COMMANDTYPE						      ; 1348

				       0F  12 002EA 	    BNEQ    21$							      ;

		    21   AE	       62  D0 002EC 	    MOVL    (R2), VALUE						      ; 1350

	   0E	    1E   A2	       03  E1 002F0 	    BBC     #3, 30(R2), 22$					      ; 1351

		    18   AE	       01  D0 002F5 	    MOVL    #1, PDL						      ; 1353

				       08  11 002F9 	    BRB     22$							      ; 1348

		         05	       59  E9 002FB 21$:    BLBC    R9, 22$						      ; 1355

		    21   AE	  1C   A2  3C 002FE 	    MOVZWL  28(R2), VALUE					      ; 1356

		         7E	  04   AE  E9 00303 22$:    BLBC    4(SP), 36$						      ; 1357

		         52	       26  C0 00307 	    ADDL2   #38, R2						      ; 1359

				       62  D5 0030A 	    TSTL    (R2)						      ; 1361

				       16  13 0030C 	    BEQL    23$							      ;

		         50	  00   B2  9A 0030E 	    MOVZBL  @0(R2), R0						      ; 1363

		         50	       03  C2 00312 	    SUBL2   #3, R0						      ;

		         56	       50  D1 00315 	    CMPL    R0, ARGNUM						      ;

				       0A  1F 00318 	    BLSSU   23$							      ;

	   50	         56	       62  C1 0031A 	    ADDL3   (R2), ARGNUM, R0					      ; 1366

		         68	  02   A0  91 0031E 	    CMPB    2(R0), (ARGDESC)					      ; 1367

				       06  12 00322 	    BNEQ    24$							      ;

		    21   AE	       01  D0 00324 23$:    MOVL    #1, VALUE						      ; 1368

				       5B  11 00328 	    BRB     36$							      ; 1366

				  21   AE  D4 0032A 24$:    CLRL    VALUE						      ; 1369

				       56  11 0032D 	    BRB     36$							      ; 1357

		    21   AE	       63  98 0032F 25$:    CVTBL   (R3), VALUE						      ; 1374

				       50  11 00333 	    BRB     36$							      ; 1299

		    21   AE	       63  32 00335 26$:    CVTWL   (R3), VALUE						      ; 1375

				       4A  11 00339 	    BRB     36$							      ; 1299

		    21   AE	       63  D0 0033B 27$:    MOVL    (R3), VALUE						      ; 1376

				       44  11 0033F 	    BRB     36$							      ; 1299

		    18   AE	       01  D0 00341 28$:    MOVL    #1, PDL						      ; 1380

		         5A	       63  9A 00345 	    MOVZBL  (R3), PSECTNUM					      ; 1381

	   02	         04	       54  CF 00348 	    CASEL   COMMANDTYPE, #4, #2					      ; 1382

	 0014	       000D	     0006     0034C 29$:    .WORD   30$-29$,-						      ;

								    31$-29$,-						      ;

								    32$-29$						      ;

		    21   AE	  01   A3  98 00352 30$:    CVTBL   1(R3), VALUE					      ; 1384

				       2C  11 00357 	    BRB     36$							      ; 1382

		    21   AE	  01   A3  32 00359 31$:    CVTWL   1(R3), VALUE					      ; 1385

				       25  11 0035E 	    BRB     36$							      ; 1382

		    21   AE	  01   A3  D0 00360 32$:    MOVL    1(R3), VALUE					      ; 1386

				       1E  11 00365 	    BRB     36$							      ; 1299

		    21   AE	       63  9A 00367 33$:    MOVZBL  (R3), VALUE						      ; 1389

				       18  11 0036B 	    BRB     36$							      ; 1299

		    21   AE	       63  3C 0036D 34$:    MOVZWL  (R3), VALUE						      ; 1390

				       12  11 00371 	    BRB     36$							      ; 1299

	   7E	  0000'  CF	       10  C1 00373 35$:    ADDL3   #16, OBMODESC, -(SP)				      ; 1393

				       54  DD 00379 	    PUSHL   COMMANDTYPE						      ; 1392

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

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

				     0393  31 00382 	    BRW     93$							      ;

				  18   AE  DD 00385 36$:    PUSHL   PDL							      ; 1398

				       5A  DD 00388 	    PUSHL   PSECTNUM						      ;

				     02EE  31 0038A 	    BRW     82$							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-8

; Digital Equipment Corporation

;

		         14	       54  D1 0038D 37$:    CMPL    COMMANDTYPE, #20					      ; 1279

				       03  18 00390 	    BGEQ    39$							      ;

				     0142  31 00392 38$:    BRW     53$							      ;

		         28	       54  D1 00395 39$:    CMPL    COMMANDTYPE, #40					      ;

				       F8  14 00398 	    BGTR    38$							      ;

				       57  D4 0039A 	    CLRL    DATALNG						      ; 1414

	   50	         54	       14  C3 0039C 	    SUBL3   #20, COMMANDTYPE, STOCMDINDEX			      ; 1415

				0000'CF40  3F 003A0 	    PUSHAW  STORECTLTBL+1[STOCMDINDEX]				      ; 1416

		         56	       9E  9A 003A5 	    MOVZBL  @(SP)+, OUTBYTECOUNT				      ;

		         52	0000'CF40  3E 003A8 	    MOVAW   STORECTLTBL[STOCMDINDEX], R2			      ; 1417

		         35	       62  E9 003AE 	    BLBC    (R2), 41$						      ;

				  18   AE  9F 003B1 	    PUSHAB  PDL							      ; 1420

				  18   AE  9F 003B4 	    PUSHAB  REPEATCOUNT						      ;

		  0000V  CF	       02  FB 003B7 	    CALLS   #2, POP						      ;

		         24	       50  E9 003BC 	    BLBC    R0, 40$						      ;

	      00000000G  8F	  14   AE  D1 003BF 	    CMPL    REPEATCOUNT, #OBJ$C_STOREPLIM			      ; 1422

				       21  1B 003C7 	    BLEQU   42$							      ;

		         7E	0000G  8F  3C 003C9 	    MOVZWL  #OBJ$C_STOREPLIM, -(SP)				      ; 1424

				  18   AE  DD 003CE 	    PUSHL   REPEATCOUNT						      ;

	   7E	  0000'  CF	       10  C1 003D1 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1425

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

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

		  0000G  CF	       05  FB 003DE 	    CALLS   #5, LNK$ERRMSG					      ;

				     0345  31 003E3 40$:    BRW     96$							      ; 1176

		    14   AE	       01  D0 003E6 41$:    MOVL    #1, REPEATCOUNT					      ; 1430

				  18   AE  9F 003EA 42$:    PUSHAB  PDL							      ; 1431

				  25   AE  9F 003ED 	    PUSHAB  VALUE						      ; 1176

		  0000V  CF	       02  FB 003F0 	    CALLS   #2, POP						      ; 1431

		         EB	       50  E9 003F5 	    BLBC    R0, 40$						      ;

	   0C	         62	       01  E1 003F8 	    BBC     #1, (R2), 43$					      ; 1433

	   50	    21   AE	0000G  CF  C3 003FC 	    SUBL3   LNK$GL_LOCN, VALUE, R0				      ; 1435

      21   AE	         50	       56  C3 00403 	    SUBL3   OUTBYTECOUNT, R0, VALUE				      ;

	   62	         05	       03  EF 00408 43$:    EXTZV   #3, #5, (R2), LOWESTMBZBIT				      ; 1438

				       50     0040C									      ;

	   0A	         62	       02  E1 0040D 	    BBC     #2, (R2), 44$					      ; 1439

      21   AE	         01	       50  EF 00411 	    EXTZV   LOWESTMBZBIT, #1, VALUE, R1				      ; 1441

				       51     00416									      ;

				       02  13 00417 	    BEQL    44$							      ;

				       50  D4 00419 	    CLRL    LOWESTMBZBIT					      ; 1442

				       50  D5 0041B 44$:    TSTL    LOWESTMBZBIT					      ; 1444

				       14  12 0041D 	    BNEQ    46$							      ;

	   50	         56	       03  78 0041F 	    ASHL    #3, OUTBYTECOUNT, R0				      ; 1445

		         20	       50  D1 00423 	    CMPL    R0, #32						      ;

				       03  15 00426 	    BLEQ    45$							      ;

		         50	       20  D0 00428 	    MOVL    #32, R0						      ;

      21   AE	         50	       00  EE 0042B 45$:    EXTV    #0, R0, VALUE, CORRECTVALUE				      ;

				       52     00430									      ;

				       0E  11 00431 	    BRB     47$							      ; 1444

	   50	         01	       50  78 00433 46$:    ASHL    LOWESTMBZBIT, #1, R0				      ; 1449

				       50  D7 00437 	    DECL    MBZMASK						      ;

		         52	       50  D2 00439 	    MCOML   MBZMASK, CORRECTVALUE				      ; 1451

	   52	    21   AE	       52  CB 0043C 	    BICL3   CORRECTVALUE, VALUE, CORRECTVALUE			      ;

		         52	  21   AE  D1 00441 47$:    CMPL    VALUE, CORRECTVALUE					      ; 1453

				       39  13 00445 	    BEQL    48$							      ;

	   7E	  0000G  CF	0000'  CF  C3 00447 	    SUBL3   CURPSECTBASE, LNK$GL_LOCN, -(SP)			      ; 1458



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-9

; Digital Equipment Corporation

;

	   7E	  0000'  CF	       1B  C1 0044F 	    ADDL3   #27, CURPSECT, -(SP)				      ; 1457

	   7E	  0000'  CF	       10  C1 00455 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1456

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

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

		  0000G  CF	       05  FB 00462 	    CALLS   #5, LNK$ERRMSG					      ;

				0000G  CF  DD 00467 	    PUSHL   LNK$GL_LOCN						      ; 1459

				       52  DD 0046B 	    PUSHL   CORRECTVALUE					      ;

				  29   AE  DD 0046D 	    PUSHL   VALUE						      ;

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

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

		  0000G  CF	       05  FB 00477 	    CALLS   #5, LNK$ERRMSG					      ;

		    21   AE	       52  D0 0047C 	    MOVL    CORRECTVALUE, VALUE					      ; 1462

		         1C	       54  D1 00480 48$:    CMPL    COMMANDTYPE, #28					      ; 1464

				       0B  13 00483 	    BEQL    49$							      ;

		         1B	       54  D1 00485 	    CMPL    COMMANDTYPE, #27					      ; 1465

				       06  13 00488 	    BEQL    49$							      ;

		         51	  21   AE  9E 0048A 	    MOVAB   OUTPUTARRAY+1, OUTPUTADDR				      ; 1466

				       38  11 0048E 	    BRB     52$							      ; 1464

		         50	  18   AE  D0 00490 49$:    MOVL    PDL, R0						      ; 1470

		         1B	       54  D1 00494 	    CMPL    COMMANDTYPE, #27					      ; 1467

				       10  12 00497 	    BNEQ    50$							      ;

		         51	  21   AE  9E 00499 	    MOVAB   OUTPUTARRAY+1, OUTPUTADDR				      ; 1469

				       50  D5 0049D 	    TSTL    R0							      ; 1470

				       27  13 0049F 	    BEQL    52$							      ;

	   21	  0000G  CF	       00  E5 004A1 	    BBCC    #LNK$S_PICIMG, LNK$GL_CTLMSK, 52$			      ; 1471

				       1F  11 004A7 	    BRB     52$							      ; 1467

		         51	  20   AE  9E 004A9 50$:    MOVAB   OUTPUTARRAY, OUTPUTADDR				      ; 1474

				       50  D5 004AD 	    TSTL    R0							      ; 1475

				       07  12 004AF 	    BNEQ    51$							      ;

		    20   AE	  9F   8F  90 004B1 	    MOVB    #-97, OUTPUTARRAY					      ; 1476

				       10  11 004B6 	    BRB     52$							      ; 1475

	   50	    21   AE	0000G  CF  C3 004B8 51$:    SUBL3   LNK$GL_LOCN, VALUE, R0				      ; 1478

      21   AE	         50	       56  C3 004BF 	    SUBL3   OUTBYTECOUNT, R0, VALUE				      ;

		    20   AE	       11  8E 004C4 	    MNEGB   #17, OUTPUTARRAY					      ; 1480

				  14   AE  DD 004C8 52$:    PUSHL   REPEATCOUNT						      ; 1483

				       51  DD 004CB 	    PUSHL   OUTPUTADDR						      ;

				       56  DD 004CD 	    PUSHL   OUTBYTECOUNT					      ;

		  0000G  CF	       03  FB 004CF 	    CALLS   #3, LNK$WRTIMGBYTS					      ;

				     01AC  31 004D4 	    BRW     83$							      ;

		         32	       54  D1 004D7 53$:    CMPL    COMMANDTYPE, #50					      ; 1279

				       03  18 004DA 	    BGEQ    55$							      ;

				     01A9  31 004DC 54$:    BRW     85$							      ;

	      00000041   8F	       54  D1 004DF 55$:    CMPL    COMMANDTYPE, #65					      ;

				       F4  14 004E6 	    BGTR    54$							      ;

				       57  D4 004E8 	    CLRL    DATALNG						      ; 1495

		         32	       54  D1 004EA 	    CMPL    COMMANDTYPE, #50					      ; 1496

				       65  13 004ED 	    BEQL    61$							      ;

	      00000041   8F	       54  D1 004EF 	    CMPL    COMMANDTYPE, #65					      ; 1498

				       03  13 004F6 	    BEQL    56$							      ;

				     009E  31 004F8 	    BRW     64$							      ;

		         57	       63  9A 004FB 56$:    MOVZBL  (R3), DATALNG					      ; 1500

				       57  D6 004FE 	    INCL    DATALNG						      ;

	   50	         53	       57  C1 00500 	    ADDL3   DATALNG, R3, R0					      ; 1501

		         5B	       50  D1 00504 	    CMPL    R0, ENDRECADDR					      ;

				       03  1B 00507 	    BLEQU   57$							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-10

; Digital Equipment Corporation

;

				     FD56  31 00509 	    BRW     12$							      ;

		         0F	       63  91 0050C 57$:    CMPB    (R3), #15						      ; 1508

				       04  1A 0050F 	    BGTRU   58$							      ;

				       63  95 00511 	    TSTB    (R3)						      ; 1509

				       0F  12 00513 	    BNEQ    59$							      ;

				       0F  DD 00515 58$:    PUSHL   #15							      ; 1510

		         7E	       63  9A 00517 	    MOVZBL  (R3), -(SP)						      ;

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

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

				     01F4  31 00521 	    BRW     93$							      ;

	   6C	  0000G  CF	       02  E1 00524 59$:    BBC     #2, LNK$GL_CTLMSK, 63$				      ; 1513

				  10   AE  9F 0052A 	    PUSHAB  SYMDESC						      ; 1515

				       53  DD 0052D 	    PUSHL   R3							      ;

		  0000G  CF	       02  FB 0052F 	    CALLS   #2, LNK$SEARCH					      ;

		         09	       50  E9 00534 	    BLBC    R0, 60$						      ;

		         50	  10   AE  D0 00537 	    MOVL    SYMDESC, R0						      ; 1516

	   16	    1E   A0	       01  E0 0053B 	    BBS     #1, 30(R0), 62$					      ;

				       53  DD 00540 60$:    PUSHL   R3							      ; 1518

	   7E	  0000'  CF	       10  C1 00542 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1519

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

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

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

				       40  11 00554 61$:    BRB     63$							      ; 1176

		         50	  10   AE  D0 00556 62$:    MOVL    SYMDESC, R0						      ; 1523

		  1800   8F	  1E   A0  B3 0055A 	    BITW    30(R0), #6144					      ;

				       34  12 00560 	    BNEQ    63$							      ;

		    22   A0	0000G  CF  D0 00562 	    MOVL    LNK$GL_LOCN, 34(R0)					      ; 1526

		         51	  1E   A0  3C 00568 	    MOVZWL  30(R0), R1						      ; 1527

	   01	         0C	       01  F0 0056C 	    INSV    #1, #12, #1, R1					      ;

				       51     00570									      ;

      1E   A0	         51	       04  A9 00571 	    BISW3   #4, R1, 30(R0)					      ; 1528

	   1A	  0000G  CF	       00  E1 00576 	    BBC     #LNK$S_MAPOPN, LNK$GL_CTLMSK, 63$			      ; 1529

	   14	  0000G  CF	       00  E0 0057C 	    BBS     #LNK$S_BRIEF, LNK$GL_CTLMSK, 63$			      ; 1530

		         7E	  1E   A0  3C 00582 	    MOVZWL  30(R0), -(SP)					      ; 1531

				       50  DD 00586 	    PUSHL   R0							      ;

				  08   A0  9F 00588 	    PUSHAB  8(R0)						      ;

				0000G  CF  9F 0058B 	    PUSHAB  LNK$AL_SYTBLFMT					      ;

	      00000000G  00	       04  FB 0058F 	    CALLS   #4, CRF$INSRTKEY					      ;

				     0186  31 00596 63$:    BRW     94$							      ; 1176

				  18   AE  9F 00599 64$:    PUSHAB  PDL							      ; 1536

				  25   AE  9F 0059C 	    PUSHAB  VALUE						      ; 1176

		  0000V  CF	       02  FB 0059F 	    CALLS   #2, POP						      ; 1536

		         15	       50  E9 005A4 	    BLBC    R0, 65$						      ;

		         3A	       54  D1 005A7 	    CMPL    COMMANDTYPE, #58					      ; 1538

				       16  13 005AA 	    BEQL    66$							      ;

		         3B	       54  D1 005AC 	    CMPL    COMMANDTYPE, #59					      ; 1539

				       11  13 005AF 	    BEQL    66$							      ;

				  0C   AE  9F 005B1 	    PUSHAB  PDL2						      ; 1540

				  0C   AE  9F 005B4 	    PUSHAB  VALUE2						      ;

		  0000V  CF	       02  FB 005B7 	    CALLS   #2, POP						      ;

		         03	       50  E8 005BC 65$:    BLBS    R0, 66$						      ;

				     0169  31 005BF 	    BRW     96$							      ;

	   0E	         33	       54  CF 005C2 66$:    CASEL   COMMANDTYPE, #51, #14				      ; 1542

	 0048	       002A	     001E     005C6 67$:    .WORD   68$-67$,-						      ;

	 0058	       0075	     004F     005CC		    69$-67$,-						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-11

; Digital Equipment Corporation

;

	 0041	       003A	     005F     005D2		    72$-67$,-						      ;

	 FDAD	       0088	     FDAD     005D8		    73$-67$,-						      ;

	 FDAD	       0091	     007F     005DE		    76$-67$,-						      ;

								    74$-67$,-						      ;

								    75$-67$,-						      ;

								    70$-67$,-						      ;

								    71$-67$,-						      ;

								    35$-67$,-						      ;

								    78$-67$,-						      ;

								    35$-67$,-						      ;

								    77$-67$,-						      ;

								    80$-67$,-						      ;

								    35$-67$						      ;

		    21   AE	  08   AE  C0 005E4 68$:    ADDL2   VALUE2, VALUE					      ; 1545

		    18   AE	  0C   AE  C0 005E9 	    ADDL2   PDL2, PDL						      ; 1546

				       65  11 005EE 	    BRB     79$							      ; 1542

      21   AE	    08   AE	  21   AE  C3 005F0 69$:    SUBL3   VALUE, VALUE2, VALUE				      ; 1550

      18   AE	    0C   AE	  18   AE  C3 005F7 	    SUBL3   PDL, PDL2, PDL					      ; 1551

				       75  11 005FE 	    BRB     81$							      ; 1542

		    21   AE	  21   AE  CE 00600 70$:    MNEGL   VALUE, VALUE					      ; 1555

				       6E  11 00605 	    BRB     81$							      ; 1542

		    21   AE	  21   AE  D2 00607 71$:    MCOML   VALUE, VALUE					      ; 1559

				       67  11 0060C 	    BRB     81$							      ; 1542

		    21   AE	  08   AE  C4 0060E 72$:    MULL2   VALUE2, VALUE					      ; 1563

				       60  11 00613 	    BRB     81$							      ; 1542

      21   AE	    08   AE	  21   AE  C7 00615 73$:    DIVL3   VALUE, VALUE2, VALUE				      ; 1567

				       57  11 0061C 	    BRB     81$							      ; 1542

		    21   AE	  08   AE  C8 0061E 74$:    BISL2   VALUE2, VALUE					      ; 1571

				       50  11 00623 	    BRB     81$							      ; 1542

	   51	    21   AE	  08   AE  C9 00625 75$:    BISL3   VALUE2, VALUE, R1					      ; 1575

		         50	  08   AE  D2 0062B 	    MCOML   VALUE2, R0						      ; 1576

	   50	    21   AE	       50  CB 0062F 	    BICL3   R0, VALUE, R0					      ;

      21   AE	         51	       50  CB 00634 	    BICL3   R0, R1, VALUE					      ; 1575

				       3A  11 00639 	    BRB     81$							      ; 1542

		         50	  08   AE  D2 0063B 76$:    MCOML   VALUE2, R0						      ; 1580

		    21   AE	       50  CA 0063F 	    BICL2   R0, VALUE						      ;

				       30  11 00643 	    BRB     81$							      ; 1542

      21   AE	    08   AE	  21   AE  9C 00645 77$:    ROTL    VALUE, VALUE2, VALUE				      ; 1584

				       27  11 0064C 	    BRB     81$							      ; 1542

      21   AE	    08   AE	  21   AE  78 0064E 78$:    ASHL    VALUE, VALUE2, VALUE				      ; 1588

				       1E  11 00655 79$:    BRB     81$							      ; 1542

		         01	  21   AE  D1 00657 80$:    CMPL    VALUE, #1						      ; 1592

				       29  13 0065B 	    BEQL    84$							      ;

		    21   AE	  08   AE  D0 0065D 	    MOVL    VALUE2, VALUE					      ; 1594

		    18   AE	  0C   AE  D0 00662 	    MOVL    PDL2, PDL						      ; 1595

				  0C   AE  9F 00667 	    PUSHAB  PDL2						      ; 1596

				  0C   AE  9F 0066A 	    PUSHAB  VALUE2						      ;

		  0000V  CF	       02  FB 0066D 	    CALLS   #2, POP						      ;

		         66	       50  E9 00672 	    BLBC    R0, 88$						      ;

				  18   AE  DD 00675 81$:    PUSHL   PDL							      ; 1606

		         7E	       01  CE 00678 	    MNEGL   #1, -(SP)						      ;

				  29   AE  DD 0067B 82$:    PUSHL   VALUE						      ;

		  0000V  CF	       03  FB 0067E 	    CALLS   #3, PUSH						      ;

		         55	       50  E9 00683 83$:    BLBC    R0, 88$						      ;

				       7F  11 00686 84$:    BRB     91$							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-12

; Digital Equipment Corporation

;

	      00000050   8F	       54  D1 00688 85$:    CMPL    COMMANDTYPE, #80					      ; 1279

				       57  12 0068F 	    BNEQ    89$							      ;

		         50	0000'  CF  9A 00691 	    MOVZBL  STACKPOINTER, R0					      ; 1611

				0000'CF40  7F 00696 	    PUSHAQ  PSECTSTACK[R0]					      ;

		  0000'  CF	       9E  D0 0069B 	    MOVL    @(SP)+, CURPSECT					      ;

				       14  12 006A0 	    BNEQ    86$							      ;

	   7E	  0000'  CF	       10  C1 006A2 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1614

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

		         7E	  00G  8F  9A 006AB 	    MOVZBL  #ERM$C_NOTPSECT, -(SP)				      ;

		  0000G  CF	       03  FB 006AF 	    CALLS   #3, LNK$ERRMSG					      ;

				       0B  11 006B4 	    BRB     87$							      ; 1611

		         50	0000'  CF  D0 006B6 86$:    MOVL    CURPSECT, R0					      ; 1616

		  0000G  CF	  14   A0  D0 006BB 	    MOVL    20(R0), LNK$GL_CURISD				      ;

		         50	0000'  CF  9A 006C1 87$:    MOVZBL  STACKPOINTER, R0					      ; 1617

				0000'CF40  7F 006C6 	    PUSHAQ  PSECTSTACK+4[R0]					      ;

		  0000'  CF	       9E  D0 006CB 	    MOVL    @(SP)+, CURPSECTBASE				      ;

				  18   AE  9F 006D0 	    PUSHAB  PDL							      ; 1618

				  25   AE  9F 006D3 	    PUSHAB  VALUE						      ; 1176

		  0000V  CF	       02  FB 006D6 	    CALLS   #2, POP						      ; 1618

		         4D	       50  E9 006DB 88$:    BLBC    R0, 96$						      ;

				       57  D4 006DE 	    CLRL    DATALNG						      ; 1620

		  0000G  CF	  21   AE  D0 006E0 	    MOVL    VALUE, LNK$GL_LOCN					      ; 1621

				       37  11 006E6 	    BRB     94$							      ; 1176

	      00000051   8F	       54  D1 006E8 89$:    CMPL    COMMANDTYPE, #81					      ; 1279

				       18  12 006EF 	    BNEQ    92$							      ;

		         57	       04  D0 006F1 	    MOVL    #4, DATALNG						      ; 1627

	   50	         53	       57  C1 006F4 	    ADDL3   DATALNG, R3, R0					      ; 1628

		         5B	       50  D1 006F8 	    CMPL    R0, ENDRECADDR					      ;

				       05  1B 006FB 	    BLEQU   90$							      ;

				       04  DD 006FD 	    PUSHL   #4							      ; 1630

				     FABB  31 006FF 	    BRW     3$							      ; 1631

		  0000G  CF	       63  C0 00702 90$:    ADDL2   (R3), LNK$GL_LOCN					      ; 1634

				       16  11 00707 91$:    BRB     94$							      ; 1176

				       54  DD 00709 92$:    PUSHL   COMMANDTYPE						      ; 1638

	   7E	  0000'  CF	       10  C1 0070B 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1639

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

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

		  0000G  CF	       04  FB 00718 93$:    CALLS   #4, LNK$ERRMSG					      ;

				       0C  11 0071D 	    BRB     96$							      ; 1643

		         55	  01 A745  9E 0071F 94$:    MOVAB   1(DATALNG)[TIROFFSET], TIROFFSET			      ; 1644

				     FA60  31 00724 	    BRW     1$							      ; 1254

		         50	       01  D0 00727 95$:    MOVL    #1, R0						      ; 1647

					   04 0072A 	    RET     							      ;

				       50  D4 0072B 96$:    CLRL    R0							      ; 1176

					   04 0072D 	    RET     							      ;



; Routine Size:  1465 bytes





;24200  1649	ROUTINE PUSH (VALUE, PSECTNUM, POSDEPLVL) =

;24300  1650	BEGIN

;24400  1651	!

;24500  1652	!	THIS ROUTINE IMPLEMENTS THE PUSHING OF VALUES ON THE LINKERS

;24600  1653	!	INTERNAL STACKS. INPUT PARAMETERS ARE:

;24700  1654	!		VALUE	   =	VALUE TO BE PLACED ON STACK



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-13

; Digital Equipment Corporation

;

;24800  1655	!		PSECTNUM   =	THE MODULE RELATIVE P-SECTION INDEX TO

;24900  1656	!				WHICH THE STACKED VALUE IS RELATIVE

;25000  1657	!		POSDEPLVL  =	THE POSITION DEPENDENCE LEVEL OF THE VALUE

;25100  1658	!				BEING STACKED.

;25200  1659	!				NORMALLY = 1 FOR AN ADDRESS (E.G. A

;25300  1660	!					     RELOCATED SYMBOL)

;25400  1661	!					   0 FOR A SCALER.

;25500  1662	!	IF PSECTNUM = -1 THEN THE VALUE IS NOT TO BE RELATIVE TO A 

;25600  1663	!	P-SECTION BASE ADDRESS. IF, HOWEVER, PSECTNUM IS NOT -1, THEN

;25700  1664	!	THE OBJECT MODULE DESCRIPTOR IS ACCESSED TO DETERMINE IF THIS

;25800  1665	!	MODULE HAS SUCH A P-SECTION (FOUND ON PASS 1) AND TO COMPUTE

;25900  1666	!	THE BASE ADDRESS OF THIS MODULE'S CONTRIBUTION TO THAT P-SECTION.

;26000  1667	!	IF THIS SUCCEEDS, THE VALUE STACKED IS THE SUM OF THE MODULE

;26100  1668	!	CONTRIBUTION BASE AND "VALUE"

;26200  1669	!

;26300  1670	!	IN ADDITION TO THE ABOVE CHECKS, THIS ROUTINE ALSO DETECTS STACK

;26400  1671	!	OVERFLOW. ON ANY FAILURE CONDITION, AN ERROR MESSAGE IS ISSUED

;26500  1672	!	AND THE VALUE "FALSE" IS RETURNED.

;26600  1673	!

;26700  1674	!	THERE ARE TWO PARALLEL STACKS - ONE FOR COMPUTATION AS DRIVEN

;26800  1675	!	BY THE COMPILER GENERATED OBJECT LANGUAGE AND THE OTHER

;26900  1676	!	CALLED THE PDL STACK, FOR LINKER COMPUTATION OF POSITION

;27000  1677	!	DEPENDENCE AND COERCION OF PIC IMAGES. THE COMPUTATION 

;27100  1678	!	STACK IS LONGWORD ALIGNED WHILE THE PDL STACK IS A BYTE STACK.

;27200  1679	!

;27300  1680	BIND

;27400  1681		PSECTMAP = OBMODESC[OMD$AL_PSCMAP] : VECTOR;		! POINTS TO THIS MODULES

;27500  1682	!

;27600  1683	LOCAL

;27700  1684		MODCONTRIBASE,				! BASE OF THIS MODULES CONTRIBUTION TO P-SECTION

;27800  1685		PSECTDESC : REF BLOCK[,BYTE],		! P-SECTION DESCRIPTOR POINTER

;27900  1686		MODPSCONTRIBLK : REF BLOCK[,BYTE];	! POINTER TO DESCRIPTOR OF CONTRIBUTION

;28000  1687	!

;28100  1688	IF .PSECTNUM EQL -1						! MODULE BASE OF P-SECTION

;28200  1689	THEN (MODCONTRIBASE = 0; PSECTDESC = 0)				! IS ZERO IF NOT P-SECT RELATIVE

;28300  1690	ELSE BEGIN							! VALUE. IF IT IS PSECT

;28400  1691		IF .PSECTNUM GTRU .OBMODESC[OMD$B_HIPSCT]		! RELATIVE, CHECK P-SECTION

;28500  1692		THEN BEGIN						! EXISTS AND ISSUE ERROR

;28600  1693			LNK$ERRMSG(ERM$C_UDEFPSC,SEV$C_INFOR,		! IF NOT AND THEN GIVE

;28700  1694				   .PSECTNUM,OBMODESC[OMD$B_NAMLNG]);	! UP

;28800  1695			RETURN FALSE;

;28900  1696		      END;

;29000  1697		PSECTDESC = .PSECTMAP[.PSECTNUM*PMT$C_SIZE/4];		! GET P-SECTION DESCRIPTOR

;29100  1698		MODPSCONTRIBLK = .PSECTMAP[.PSECTNUM*PMT$C_SIZE/4+1];	! AND MODULE CONTRIBUTION BLOCK

;29200  1699		MODCONTRIBASE = .PSECTDESC[PSC$L_BASE] +		! THE MODULE'S BASE IS

;29300  1700					 .MODPSCONTRIBLK[MPC$L_OFFSET]; ! P-SECT BASE PLUS OFFSET.

;29400  1701	     END;

;29500  1702	IF .STACKPOINTER EQL 0							! NOW CHECK IF ALREADY

;29600  1703	THEN BEGIN								! AT BOTTOM OF STACK AND

;29700  1704		LNK$ERRMSG(ERM$C_INTSTKOV,SEV$C_INFOR,STK$C_SIZE,		! IF SO ISSUE ERROR MESSAGE

;29800  1705				OBMODESC[OMD$B_NAMLNG]);

;29900  1706		RETURN FALSE;							! AND GIVE UP

;30000  1707		END;

;30100  1708	STACKPOINTER = .STACKPOINTER -1;					! DECREMENT POINTER

;30200  1709	COMPUSTACK[.STACKPOINTER] = .VALUE + .MODCONTRIBASE;			! PUSH VALUE ONTO COMPUTE STACK



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-14

; Digital Equipment Corporation

;

;30300  1710	PDLSTACK[.STACKPOINTER] = .POSDEPLVL;					! AND ON PDL STACK.

;30400  1711	PSECTSTACK[.STACKPOINTER,0] = .PSECTDESC;				! SAVE PSECT DESCRIPTOR ADDRESS AND THE

;30500  1712	PSECTSTACK[.STACKPOINTER,1] = .MODCONTRIBASE;				! MODULE'S BASE ON THE PSECT STACK

;30600  1713	RETURN TRUE;								! AND RETURN SUCCESS.

;30700  1714	END;











					 0C1C 0072E PUSH:   .WORD   Save R2,R3,R4,R10,R11				      ; 1649

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

		         5B	0000'  CF  9E 00733 	    MOVAB   STACKPOINTER, R11					      ;

		         50	FEB0   CB  D0 00738 	    MOVL    OBMODESC, R0					      ; 1681

	   52	         50	       20  C1 0073D 	    ADDL3   #32, R0, R2						      ;

	      FFFFFFFF   8F	  08   AC  D1 00741 	    CMPL    PSECTNUM, #-1					      ; 1688

				       04  12 00749 	    BNEQ    1$							      ;

				       53  7C 0074B 	    CLRQ    PSECTDESC						      ; 1689

				       2F  11 0074D 	    BRB     3$							      ; 1688

      0E   A0	         08	       00  ED 0074F 1$:     CMPZV   #0, #8, 14(R0), PSECTNUM				      ; 1691

				  08   AC     00754									      ;

				       0F  1E 00756 	    BGEQU   2$							      ;

				  10   A0  9F 00758 	    PUSHAB  16(R0)						      ; 1694

				  08   AC  DD 0075B 	    PUSHL   PSECTNUM						      ; 1693

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

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

				       2A  11 00765 	    BRB     4$							      ;

	   50	    08   AC	       03  78 00767 2$:     ASHL    #3, PSECTNUM, R0					      ; 1697

		         50	       04  C6 0076C 	    DIVL2   #4, R0						      ;

		         53	     6240  D0 0076F 	    MOVL    (R2)[R0], PSECTDESC					      ;

		         50	  04 A240  D0 00773 	    MOVL    4(R2)[R0], MODPSCONTRIBLK				      ; 1698

	   54	    0C   A3	  08   A0  C1 00778 	    ADDL3   8(MODPSCONTRIBLK), 12(PSECTDESC), MODCONTRIBASE	      ; 1699

				       6B  95 0077E 3$:     TSTB    STACKPOINTER					      ; 1702

				       16  12 00780 	    BNEQ    5$							      ;

	   7E	  FEB0   CB	       10  C1 00782 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1705

				       19  DD 00788 	    PUSHL   #25							      ; 1704

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

		         7E	  00G  8F  9A 0078D 	    MOVZBL  #ERM$C_INTSTKOV, -(SP)				      ;

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

				       36  11 00796 	    BRB     6$							      ; 1706

				       6B  97 00798 5$:     DECB    STACKPOINTER					      ; 1708

		         50	       6B  9A 0079A 	    MOVZBL  STACKPOINTER, R0					      ; 1709

    FEB8 CB40	    04   AC	       54  C1 0079D 	    ADDL3   MODCONTRIBASE, VALUE, COMPUSTACK[R0]		      ;

		         50	FF1C   CB  9E 007A5 	    MOVAB   PDLSTACK, R0					      ; 1710

		         51	       6B  9A 007AA 	    MOVZBL  STACKPOINTER, R1					      ;

		         50	       51  C0 007AD 	    ADDL2   R1, R0						      ;

		         60	  0C   AC  90 007B0 	    MOVB    POSDEPLVL, (R0)					      ;

		         50	       6B  9A 007B4 	    MOVZBL  STACKPOINTER, R0					      ; 1711

				FF38 CB40  7F 007B7 	    PUSHAQ  PSECTSTACK[R0]					      ;

		         9E	       53  D0 007BC 	    MOVL    PSECTDESC, @(SP)+					      ;

		         50	       6B  9A 007BF 	    MOVZBL  STACKPOINTER, R0					      ; 1712

				FF3C CB40  7F 007C2 	    PUSHAQ  PSECTSTACK+4[R0]					      ;

		         9E	       54  D0 007C7 	    MOVL    MODCONTRIBASE, @(SP)+				      ;

		         50	       01  D0 007CA 	    MOVL    #1, R0						      ; 1713

					   04 007CD 	    RET     							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-15

; Digital Equipment Corporation

;

				       50  D4 007CE 6$:     CLRL    R0							      ; 1649

					   04 007D0 	    RET     							      ;



; Routine Size:  163 bytes





;30800  1715	ROUTINE POP (VALUEADDR,PDLADDR) =

;30900  1716	BEGIN

;31000  1717	!

;31100  1718	!	THIS ROUTINE REMOVES VALUES FROM THE INTERNAL STACKS

;31200  1719	!	OF THE LINKER AS DESCRIBED WITH "PUSH" ABOVE.

;31300  1720	!	STACK OVERFLOW CAUSES THE ISSUANCE OF AN ERROR

;31400  1721	!	MESSAGE AND RETURN VALUE OF FALSE.

;31500  1722	!

;31600  1723	IF .STACKPOINTER GEQU STK$C_SIZE

;31700  1724	THEN BEGIN

;31800  1725		LNK$ERRMSG(ERM$C_INTSTKUN,SEV$C_INFOR,STK$C_SIZE,	! IF STACK IS ALREADY

;31900  1726				OBMODESC[OMD$B_NAMLNG]);		! EMPTY, ISSUE ERROR

;32000  1727		RETURN FALSE;						! MESSAGE AND GIVE UP

;32100  1728	     END;

;32200  1729	.VALUEADDR = .COMPUSTACK[.STACKPOINTER];			! POP VALUE

;32300  1730	.PDLADDR = .PDLSTACK[.STACKPOINTER];				! AND PDL TO WHERE

;32400  1731	STACKPOINTER = .STACKPOINTER + 1;				! CALLER WANTS THEM

;32500  1732	RETURN TRUE;							! UPDATE POINTER AND

;32600  1733	END;								! SUCCESS











					 0800 007D1 POP:    .WORD   Save R11						      ; 1715

		         5B	0000'  CF  9E 007D3 	    MOVAB   STACKPOINTER, R11					      ;

		         19	       6B  91 007D8 	    CMPB    STACKPOINTER, #25					      ; 1723

				       16  1F 007DB 	    BLSSU   1$							      ;

	   7E	  FEB0   CB	       10  C1 007DD 	    ADDL3   #16, OBMODESC, -(SP)				      ; 1726

				       19  DD 007E3 	    PUSHL   #25							      ; 1725

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

		         7E	  00G  8F  9A 007E8 	    MOVZBL  #ERM$C_INTSTKUN, -(SP)				      ;

		  0000G  CF	       04  FB 007EC 	    CALLS   #4, LNK$ERRMSG					      ;

				       1F  11 007F1 	    BRB     2$							      ; 1727

		         50	       6B  9A 007F3 1$:     MOVZBL  STACKPOINTER, R0					      ; 1729

		    04   BC	FEB8 CB40  D0 007F6 	    MOVL    COMPUSTACK[R0], @VALUEADDR				      ;

		         50	FF1C   CB  9E 007FD 	    MOVAB   PDLSTACK, R0					      ; 1730

		         51	       6B  9A 00802 	    MOVZBL  STACKPOINTER, R1					      ;

		         50	       51  C0 00805 	    ADDL2   R1, R0						      ;

		    08   BC	       60  9A 00808 	    MOVZBL  (R0), @PDLADDR					      ;

				       6B  96 0080C 	    INCB    STACKPOINTER					      ; 1731

		         50	       01  D0 0080E 	    MOVL    #1, R0						      ; 1732

					   04 00811 	    RET     							      ;

				       50  D4 00812 2$:     CLRL    R0							      ; 1715

					   04 00814 	    RET     							      ;



; Routine Size:  68 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:56:18	DBB3:[LINKER.SRC]LNKOBJPS2.B32;10				Page 3-16

; Digital Equipment Corporation

;

;32700  1734	END ELUDOM













;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  $OWN$          	   410    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $CODE$         	  2069  NOWRT,  RD ,  EXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)









;				LIBRARY STATISTICS

;

;					     -------- Symbols --------    Blocks

;	File				     Total    Loaded   Percent      Read

;

;  DBA4:[SYSLIB]STARLET.L32;1		      2688         3         0       109











; Size:		2069 code + 410 data bytes

; Run Time:	01:34.5

; Elapsed Time:	01:37.3

; Memory Used:	616 pages

; Compilation Complete

