

; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 1

; Digital Equipment Corporation

;

;00100  0001	MODULE LNK_ERMESG (IDENT='X01.10') =

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

;03100  0031	!

;03200  0032	! FACILITY: LINKER

;03300  0033	!

;03400  0034	! ABSTRACT: ERROR MESSAGE DEFINITION AND OUTPUT

;03500  0035	!	    ROUTINE OF THE LINKER

;03600  0036	!

;03700  0037	! HISTORY:

;03800  0038	!

;03900  0039	!	VERSION: X01.00

;04000  0040	!

;04100  0041	!	AUTHOR: T.J. PORTER 30-DEC-76

;04200  0042	!

;04300  0043	!	MODIFICATIONS:

;04400  0044	!

;04500  0045	! NO.	DATE		PROGRAMMER	PURPOSE

;04600  0046	! ---	----		----------	-------

;04700  0047	! 001	22-AUG-77	T.J. PORTER	CHANGE LOGICAL NAME OF ERROR OUTPUT

;04800  0048	!						TO SYS$ERROR.

;04900  0049	! 002	05-DEC-77	T.J. PORTER	ADD NO P-SECTIONS MESSAGE

;05000  0050	!						AND TRANSFER ADDR. IN SHAREABLE IMAGE

;05100  0051	! 003	28-DEC-77	T.J. PORTER	GENERAL CLEANING UP

;05200  0052	! 004	18-JAN-78	T.J. PORTER	TRACEBACK MESSAGE

;05300  0053	! 005	31-JAN-78	T.J. PORTER	LINK TIME OPTIONS ERRORS

;05400  0054	! 006	18-MAR-78	T.J. PORTER	STACK AND IOSEG ERRORS

;05500  0055	! 007	20-APR-78	T.J. PORTER	REQUIRE FILE CLEAN UP



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 1-1

; Digital Equipment Corporation

;

;05600  0056	! 008	13-JUN-78	T.J. PORTER	LOWER CASE ALL MESSAGES

;05700  0057	! 009	14-JUN-78	K.D. MORSE	CONVERT TO USE SYS$PUTMSG.

;05750  0058	! 010	25-JUL-78	T.J. PORTER	OPTIONS FILES TO SYS$OUTPUT

;05800  0059	!--

;05900  0060	     

;00200  0062	!

;00300  0063	!++

;00400  0064	!

;00500  0065	! FUNCTIONAL DESCRIPTION:

;00600  0066	!

;00700  0067	! THIS MODULE DEFINES AND OUTPUTS ALL ERROR MESSAGES FOR THE 

;00800  0068	! LINKER. THE MESSAGES ARE DEFINED BY NAMES OF THE FORM ERM$C_NAME.

;00900  0069	! THESE CODES CORRESPOND TO ERROR MESSAGE FAO CONTROL STRINGS IN

;01000  0070	! SYS$SYSTEM:SYSMSG.MPF AND CAN BE ACCESSED BY CALLING SYS$GETMSG.

;01100  0071	! THE ERROR MESSAGE IS OUTPUT TO THE LOGICAL FILE SYS$ERROR AND

;01200  0072	! SYS$OUTPUT (IF DIFFERENT FROM SYS$ERROR) AND IF THE MAP FILE IS

;01300  0073	! CURRENTLY OPEN, TO IT AS WELL.

;01400  0074	!

;01500  0075	! IF THE CALL APPEARS TO HAVE AN INVALID FORMAT, THEN THE LIN$_MSGERR

;01600  0076	! ERROR MESSAGE IS PRINTED INSTEAD.  ITS PARAMETERS ARE THE INPUT

;01700  0077	! PARAMETERS IN THE CALL TO THIS ROUTINE.

;01800  0078	!

;01900  0079	! CALLING SEQUENCE:

;02000  0080	!	LNK$ERRMESG (MSGNAM, SEVERITY, ARGLIST)

;02100  0081	! WHERE:

;02200  0082	!	MSGNAM = NUMBER OF THE MESSAGE

;02300  0083	!	SEVERITY = 3 FOR INFORMATION

;02400  0084	!	           0 FOR DIAGNOSTIC

;02500  0085	!	           4 FOR FATAL ERROR

;02600  0086	!	ARGLIST =  LIST OF ARGUMENTS SEPARATED BY COMMAS

;02700  0087	!	           FROM WHICH FAO WILL OBTAIN PARAMETERS

;02800  0088	!		   TO FORMAT THE OUTPUT STRING.

;02900  0089	!

;03000  0090	! IF A VALID MESSAGE NUMBER AND SEVERITY ARE PASSED, AND THE 

;03100  0091	! FAO FORMATTING CALL IS SUCCESSFUL THEN AFTER PRINTING THE

;03200  0092	! FORMATTED STRING THE FOLLOWING ACTION IS TAKEN:-

;03300  0093	!	SEVERITY = INFORMATION, WARNING - RETURN

;03400  0094	!

;03500  0095	!	          = FATAL - LINKER CLOSES ALL FILES EXITS.

;03600  0096	!--

;03700  0097	!

;03800  0098	REQUIRE

;03900  0099		'PREFIX';			! GENERAL MACROS ETC

;04000  0291	LIBRARY

;04100  0292		'SYS$LIBRARY:LIB.L32';				! VMS AND RMS INTERFACES

;04200  0293	REQUIRE

;04300  0294		'LNKMSGDEF';			! DEFINE ERROR MESSAGE CODES

;04400  0406	FORWARD ROUTINE

;04500  0407		LNK$ERRMSG: NOVALUE,				! OUTPUT ERROR MESSAGES

;04600  0408		MAP_OUTMSG: NOVALUE,				! OUTPUT ERROR MESSAGES TO MAP

;04700  0409		LNK$DIAG: NOVALUE,				! LINKER DIAGNOSTIC OUTPUT

;04800  0410		OUTPUTMSG : NOVALUE;				! ROUTINE THAT OUTPUTS TEXT STRINGS

;04900  0411	!

;05000  0412	OWN

;05100  0413		CHANNELFLAG,					! CHANNEL IN USE ( 0 IF JUST TERMINAL, 1 IF MAP ALSO)



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 2

; Digital Equipment Corporation

;

;05200  0414		ERRORIFI : WORD,				! PLACE TO SAVE INTERNAL FILE IDENTIFIER

;05300  0415		ERRORRAB : $RAB(RAC = SEQ,			! RECORD ACCESS BLOCK FOR SEQUENTIAL

;05400P 0416				ROP = (ASY,WBH));		! ASYNCHRONOUS, WRITE BEHIND TO ERROR FILE

;05500  0417	!

;05600  0418	EXTERNAL ROUTINE

;05700  0419		SYS$PUTMSG : ADDRESSING_MODE(GENERAL),		! OUTPUTS ERROR MESSAGES

;05800  0420		LNK$EXIT;					! LINKER EXIT ROUTINE

;05900  0421	!

;06000  0422	GLOBAL LITERAL

;06100  0423	!

;06200  0424	! SEVERITY LEVEL CODES

;06300  0425	!

;06400  0426		SEV$C_ERROR = 2 : SHORT,			! SEVERE ERRORS

;06500  0427		SEV$C_SUCCESS = 1 : SHORT,			! SUCCESS

;06600  0428		SEV$C_INFOR = 3 : SHORT,			! INFORMATION MESSAGES

;06700  0429		SEV$C_DIAG = 0 : SHORT,				! DIAGNOSTIC WARNINGS

;06800  0430		SEV$C_FATAL = 4 : SHORT,			! FATAL ERRORS

;06900  0431	!

;07000  0432	! EXIT STATUS CODES FOR THE LINKER - CORRESPONDING TO ERROR MESSAGES

;07100  0433	!

;07200  0434		LNK$_TMPBUGCHK = LIN$_TMPBUGCHK OR SEV$C_FATAL,

;07300  0435		LNK$_INITFAIL = LIN$_INITFAIL OR SEV$C_FATAL,

;07400  0436		LNK$_ERRORFILE = LIN$_ERRORFILE OR SEV$C_FATAL,

;07500  0437		LNK$_FATALERROR = LIN$_FATALERROR OR SEV$C_ERROR,

;07600  0438		LNK$_BADIMGSYM = LIN$_BADIMGSYM OR SEV$C_ERROR,

;07700  0439		LNK$_DIAGSISUED = LIN$_DIAGSISUED OR SEV$C_DIAG,

;07800  0440	!

;07900  0441	! ERROR MESSAGE CODES REDUCED TO BYTE VALUES BY REMOVING THE FACILITY

;08000  0442	! CODE AND THE HIGH ORDER BIT OF THE LOW WORD.

;08100  0443	!

;08200  0444		ERM$C_MSGERR=(LIN$_MSGERR AND %X'7FFF') / 8,

;08300  0445		ERM$C_BADCCC=(LIN$_BADCCC AND %X'7FFF') / 8,

;08400  0446		ERM$C_BADIMGHDR=(LIN$_BADIMGHDR AND %X'7FFF') / 8,

;08500  0447		ERM$C_BADPSC=(LIN$_BADPSC AND %X'7FFF') / 8,

;08600  0448		ERM$C_BASESYM=(LIN$_BASESYM AND %X'7FFF') / 8,

;08700  0449		ERM$C_CLOSERR=(LIN$_CLOSERR AND %X'7FFF') / 8,

;08800  0450		ERM$C_CONFMEM=(LIN$_CONFMEM AND %X'7FFF') / 8,

;08900  0451		ERM$C_CRE8ERR=(LIN$_CRE8ERR AND %X'7FFF') / 8,

;09000  0452		ERM$C_CRFERR=(LIN$_CRFERR AND %X'7FFF') / 8,

;09100  0453		ERM$C_DBGTFR=(LIN$_DBGTFR AND %X'7FFF') / 8,

;09200  0454		ERM$C_EMPTYFILE=(LIN$_EMPTYFILE AND %X'7FFF') / 8,

;09300  0455		ERM$C_ENDPRS=(LIN$_ENDPRS AND %X'7FFF') / 8,

;09400  0456		ERM$C_EOMFTL=(LIN$_EOMFTL AND %X'7FFF') / 8,

;09500  0457		ERM$C_EOMSTK=(LIN$_EOMSTK AND %X'7FFF') / 8,

;09600  0458		ERM$C_ERRORS=(LIN$_ERRORS AND %X'7FFF') / 8,

;09700  0459		ERM$C_EXCPSC=(LIN$_EXCPSC AND %X'7FFF') / 8,

;09800  0460		ERM$C_EXCSPAR=(LIN$_EXCSPAR AND %X'7FFF') / 8,

;09900  0461		ERM$C_FAOBUG=(LIN$_FAOBUG AND %X'7FFF') / 8,

;10000  0462		ERM$C_FIRSTMOD=(LIN$_FIRSTMOD AND %X'7FFF') / 8,

;10100  0463		ERM$C_FORMAT=(LIN$_FORMAT AND %X'7FFF') / 8,

;10200  0464		ERM$C_GSDTYP=(LIN$_GSDTYP AND %X'7FFF') / 8,

;10300  0465		ERM$C_ILLFMLCNT=(LIN$_ILLFMLCNT AND %X'7FFF') / 8,

;10400  0466		ERM$C_ILLKEY=(LIN$_ILLKEY AND %X'7FFF') / 8,

;10500  0467		ERM$C_ILLREP=(LIN$_ILLREP AND %X'7FFF') / 8,

;10600  0468		ERM$C_ILLTIR=(LIN$_ILLTIR AND %X'7FFF') / 8,



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 2-1

; Digital Equipment Corporation

;

;10700  0469		ERM$C_ILLVAL=(LIN$_ILLVAL AND %X'7FFF') / 8,

;10800  0470		ERM$C_INITPRS=(LIN$_INITPRS AND %X'7FFF') / 8,

;10900  0471		ERM$C_INSVIRMEM=(LIN$_INSVIRMEM AND %X'7FFF') / 8,

;11000  0472		ERM$C_INTSTKOV=(LIN$_INTSTKOV AND %X'7FFF') / 8,

;11100  0473		ERM$C_INTSTKUN=(LIN$_INTSTKUN AND %X'7FFF') / 8,

;11200  0474		ERM$C_IVCHAR=(LIN$_IVCHAR AND %X'7FFF') / 8,

;11300  0475		ERM$C_LIBFIND=(LIN$_LIBFIND AND %X'7FFF') / 8,

;11400  0476		ERM$C_LIBFMT=(LIN$_LIBFMT AND %X'7FFF') / 8,

;11500  0477		ERM$C_LIBNAMLNG=(LIN$_LIBNAMLNG AND %X'7FFF') / 8,

;11600  0478		ERM$C_LINERR=(LIN$_LINERR AND %X'7FFF') / 8,

;11700  0479		ERM$C_MAXCHANS=(LIN$_MAXCHANS AND %X'7FFF') / 8,

;11800  0480		ERM$C_MAXIOSEG=(LIN$_MAXIOSEG AND %X'7FFF') / 8,

;11900  0481		ERM$C_MAXISDS=(LIN$_MAXISDS AND %X'7FFF') / 8,

;12000  0482		ERM$C_MAXSTACK=(LIN$_MAXSTACK AND %X'7FFF') / 8,

;12100  0483		ERM$C_MEMBUG=(LIN$_MEMBUG AND %X'7FFF') / 8,

;12200  0484		ERM$C_MEMFUL=(LIN$_MEMFUL AND %X'7FFF') / 8,

;12300  0485		ERM$C_MINDZRO=(LIN$_MINDZRO AND %X'7FFF') / 8,

;12400  0486		ERM$C_MODNAM=(LIN$_MODNAM AND %X'7FFF') / 8,

;12500  0487		ERM$C_MULDEF=(LIN$_MULDEF AND %X'7FFF') / 8,

;12600  0488		ERM$C_MULPSC=(LIN$_MULPSC AND %X'7FFF') / 8,

;12700  0489		ERM$C_MULTFR=(LIN$_MULTFR AND %X'7FFF') / 8,

;12800  0490		ERM$C_SPNAMLNG=(LIN$_SPNAMLNG AND %X'7FFF') / 8,

;12900  0491		ERM$C_NOEOM=(LIN$_NOEOM AND %X'7FFF') / 8,

;13000  0492		ERM$C_NOEPM=(LIN$_NOEPM AND %X'7FFF') / 8,

;13100  0493		ERM$C_NONBTAB=(LIN$_NONBTAB AND %X'7FFF') / 8,

;13200  0494		ERM$C_NOMODS=(LIN$_NOMODS AND %X'7FFF') / 8,

;13300  0495		ERM$C_NOPSCTS=(LIN$_NOPSCTS AND %X'7FFF') / 8,

;13400  0496		ERM$C_NOSUCHMOD=(LIN$_NOSUCHMOD AND %X'7FFF') / 8,

;13500  0497		ERM$C_NOTPSECT=(LIN$_NOTPSECT AND %X'7FFF') / 8,

;13600  0498		ERM$C_NOVALU=(LIN$_NOVALU AND %X'7FFF') / 8,

;13700  0499		ERM$C_NUDFSYMS=(LIN$_NUDFSYMS AND %X'7FFF') / 8,

;13800  0500		ERM$C_NULFIL=(LIN$_NULFIL AND %X'7FFF') / 8,

;13900  0501		ERM$C_NULPAR=(LIN$_NULPAR AND %X'7FFF') / 8,

;14000  0502		ERM$C_OPIDERR=(LIN$_OPIDERR AND %X'7FFF') / 8,

;14100  0503		ERM$C_OPTREDERR=(LIN$_OPTREDERR AND %X'7FFF') / 8,

;14200  0504		ERM$C_OUTSIMG=(LIN$_OUTSIMG AND %X'7FFF') / 8,

;14300  0505		ERM$C_OVRALI=(LIN$_OVRALI AND %X'7FFF') / 8,

;14400  0506		ERM$C_PARMDEL=(LIN$_PARMDEL AND %X'7FFF') / 8,

;14500  0507		ERM$C_PRIMIN=(LIN$_PRIMIN AND %X'7FFF') / 8,

;14600  0508		ERM$C_PRIMOUT=(LIN$_PRIMOUT AND %X'7FFF') / 8,

;14700  0509		ERM$C_PSCALI=(LIN$_PSCALI AND %X'7FFF') / 8,

;14800  0510		ERM$C_PSCNXR=(LIN$_PSCNXR AND %X'7FFF') / 8,

;14900  0511		ERM$C_PSCOVFLO=(LIN$_PSCOVFLO AND %X'7FFF') / 8,

;15000  0512		ERM$C_RECLNG=(LIN$_RECLNG AND %X'7FFF') / 8,

;15100  0513		ERM$C_RECTYP=(LIN$_RECTYP AND %X'7FFF') / 8,

;15200  0514		ERM$C_REDERR=(LIN$_REDERR AND %X'7FFF') / 8,

;15300  0515		ERM$C_SECOUT=(LIN$_SECOUT AND %X'7FFF') / 8,

;15400  0516		ERM$C_SEQNCE=(LIN$_SEQNCE AND %X'7FFF') / 8,

;15500  0517		ERM$C_SHRINSYS=(LIN$_SHRINSYS AND %X'7FFF') / 8,

;15600  0518		ERM$C_STRLVL=(LIN$_STRLVL AND %X'7FFF') / 8,

;15700  0519		ERM$C_STKOVFLO=(LIN$_STKOVFLO AND %X'7FFF') / 8,

;15800  0520		ERM$C_TFRSYS=(LIN$_TFRSYS AND %X'7FFF') / 8,

;15900  0521		ERM$C_TIRLNG=(LIN$_TIRLNG AND %X'7FFF') / 8,

;16000  0522		ERM$C_TIRNYI=(LIN$_TIRNYI AND %X'7FFF') / 8,

;16100  0523		ERM$C_TRACIGN=(LIN$_TRACIGN AND %X'7FFF') / 8,



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 2-2

; Digital Equipment Corporation

;

;16200  0524		ERM$C_TRIOUT=(LIN$_TRIOUT AND %X'7FFF') / 8,

;16300  0525		ERM$C_TRUNC=(LIN$_TRUNC AND %X'7FFF') / 8,

;16400  0526		ERM$C_TRUNCDAT=(LIN$_TRUNCDAT AND %X'7FFF') / 8,

;16500  0527		ERM$C_UDEFPSC=(LIN$_UDEFPSC AND %X'7FFF') / 8,

;16600  0528		ERM$C_UDFSYM=(LIN$_UDFSYM AND %X'7FFF') / 8,

;16700  0529		ERM$C_UNMCOD=(LIN$_UNMCOD AND %X'7FFF') / 8,

;16800  0530		ERM$C_UNRECOPT=(LIN$_UNRECOPT AND %X'7FFF') / 8,

;16900  0531		ERM$C_UNRECQUAL=(LIN$_UNRECQUAL AND %X'7FFF') / 8,

;17000  0532		ERM$C_USEUNDEF=(LIN$_USEUNDEF AND %X'7FFF') / 8,

;17100  0533		ERM$C_USRTFR=(LIN$_USRTFR AND %X'7FFF') / 8,

;17200  0534		ERM$C_WRNERS=(LIN$_WRNERS AND %X'7FFF') / 8,

;17300  0535		ERM$C_WRTERR=(LIN$_WRTERR AND %X'7FFF') / 8,

;17400  0536		ERM$C_VALREQ=(LIN$_VALREQ AND %X'7FFF') / 8,

;17402  0537		ERM$C_ILLQUAVAL = (LIN$_ILLQUAVAL AND %X'7FFF') / 8,

;17404  0538		ERM$C_MATCHID = (LIN$_MATCHID AND %X'7FFF') / 8,

;17406  0539		ERM$C_MAXPFC = (LIN$_MAXPFC AND %X'7FFF') / 8;

;17410  0540	!

;17420  0541	LITERAL

;17430  0542		MAXLINKERRCODE = ERM$C_MAXPFC;			! HIGHEST VALUE USEABLE BY LINKER

;17500  0543	!

;17600  0544	GLOBAL

;17700  0545		LNK$GB_MAXERCOD : BYTE;				! MAXIMUM ERROR CODE SEEN DURING LINK

;17800  0546	!

;17900  0547	! ERROR MESSAGE OUTPUT ROUTINE

;18000  0548	!

;18100  0549	GLOBAL ROUTINE LNK$ERRMSG(MSGNUM, SEVERITY, PARAMS) : NOVALUE =

;18200  0550	!

;18300  0551	BEGIN

;18400  0552	!

;18500  0553	MAP	PARAMS : VECTOR[5];				! INPUT ARGUMENT ARRAY

;18600  0554	!

;18700  0555	LOCAL	PUTMSG_ARGLST : VECTOR[10],			! PUTMSG ARGUMENT VECTOR

;18800  0556		ARG_COUNT;					! COUNT OF INPUT ARGUMENTS

;18900  0557	!

;19000  0558	BUILTIN	ACTUALCOUNT;					! GETS VALUE OF AP

;19100  0559	!

;19200  0560	!

;19300  0561	! GET THE ACTUAL NUMBER OF FAO ARGUMENTS IN CALL FRAME SO THAT SYS$PUTMSG

;19400  0562	! VECTOR CAN BE BUILT.

;19500  0563	!

;19600  0564	ARG_COUNT = ACTUALCOUNT() - 2;				! DETERMINE # OF FAO ARG

;19700  0565	IF (.SEVERITY GTRU SEV$C_FATAL) OR			! VALID MESSAGE SEVERITY?

;19800  0566	   (.ARG_COUNT GTR 4)					! AND VALID # OF ARGS?

;19900  0567	THEN

;20000  0568		BEGIN

;20100  0569		!

;20200  0570		! INVALID SEVERITY OR TOO MANY FAO PARAMETERS.  OUTPUT THE LIN$_MSGERR

;20300  0571		! ERROR MESSAGE INSTEAD OF THE ONE PASSED TO THE ROUTINE.  THE FAO

;20400  0572		! PARAMETERS FOR THIS MESSAGE ARE THE INPUT PARAMETERS TO THE ROUTINE.

;20500  0573		!	LNK$DIAG (CSTRING('BAD PARAMETER(S) TO ERMESG'));

;20600  0574		IF (.ARG_COUNT GTR 5) THEN ARG_COUNT = 5;	! SET LIN$_MSGERR FAOCNT

;20700  0575		PUTMSG_ARGLST[0] = .ARG_COUNT + 4;		! SET PUTMSG ARG COUNT

;20800  0576		PUTMSG_ARGLST[1] = LIN$_MSGERR OR SEV$C_FATAL;	! SET MSG IDENT CODE

;20900  0577		PUTMSG_ARGLST[2] = .ARG_COUNT + 2;		! SET FAO ARG COUNT

;21000  0578		PUTMSG_ARGLST[3] = .MSGNUM;			! SET BAD ERR MSG CODE



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 2-3

; Digital Equipment Corporation

;

;21100  0579		PUTMSG_ARGLST[4] = .SEVERITY;			! SET BAD SEVERITY CODE

;21200  0580		SEVERITY = SEV$C_FATAL;				! SET SEVERITY TO USE

;21300  0581		WHILE (.ARG_COUNT NEQ 0)

;21400  0582		DO

;21500  0583			BEGIN

;21600  0584			PUTMSG_ARGLST[.ARG_COUNT+4] = .PARAMS[.ARG_COUNT-1]; ! SET ONE FAO ARG

;21700  0585			ARG_COUNT = .ARG_COUNT - 1;		! ONE LESS ARG TO MOVE

;21800  0586			END;

;21900  0587	     END

;22100  0588	ELSE BEGIN

;22200  0589		!

;22300  0590		! THE INPUT PARAMETERS WERE VALID.  SET UP THE SYS$PUTMSG ARG VECTOR.

;22400  0591		!

;22500  0592		PUTMSG_ARGLST[0] = .ARG_COUNT + 2;		! SET PUTMSG ARG COUNT

;22510  0593		IF .MSGNUM GTRU MAXLINKERRCODE					! IF ERROR CODE IS GREATER

;22520  0594		THEN PUTMSG_ARGLST[1] = .MSGNUM OR .SEVERITY			! THAN LINKER'S USE IT

;22600  0595		ELSE PUTMSG_ARGLST[1] = (.MSGNUM ^3) OR %X'648000' OR .SEVERITY; ! SET MSG IDENT. CODE

;22700  0596		PUTMSG_ARGLST[2] = .ARG_COUNT;			! SET FAO ARG COUNT

;22800  0597		WHILE (.ARG_COUNT NEQ 0)

;22900  0598		DO

;23000  0599			BEGIN

;23100  0600			PUTMSG_ARGLST[.ARG_COUNT+2] = .PARAMS[.ARG_COUNT-1]; ! SET ONE FAO ARG

;23200  0601			ARG_COUNT = .ARG_COUNT - 1;		! ONE LESS ARG TO MOVE

;23300  0602			END;

;23400  0603		END;

;23500  0604	!

;23600  0605	! NOW OUTPUT THE ERROR MESSAGE.

;23700  0606	!

;23800  0607	SYS$PUTMSG(PUTMSG_ARGLST, MAP_OUTMSG,0);			! OUTPUT ERROR MESSAGE

;23900  0608	!

;24000  0609	! REMEMBER THE MAXIMUM SEVERITY LEVEL DURING THE LINK.

;24100  0610	!

;24200  0611	IF .SEVERITY GTRU .LNK$GB_MAXERCOD			! MAXIMIZE THE ERROR CODE

;24300  0612	THEN LNK$GB_MAXERCOD = .SEVERITY;

;24400  0613	!

;24500  0614	IF .SEVERITY EQL SEV$C_FATAL				! IF ERROR OF SUFFICIENT SEVERITY

;24600  0615	THEN LNK$EXIT(LNK$_FATALERROR);				! EXIT THE LINKER

;24700  0616	RETURN;							! OTHERWISE RETURN

;24800  0617	END;





							    .TITLE  LNK_ERMESG

							    .IDENT  \X01.10\



							    .PSECT  $OWN$,NOEXE,2



					      00000 CHANNELFLAG:

							    .BLKB   4

					      00004 ERRORIFI:

							    .BLKB   2

					      00006	    .BLKB   2

					      00008 ERRORRAB:

							    .BYTE   1							      ;

					      00009 	    .BYTE   68							      ;

					      0000A 	    .WORD   0							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 2-4

; Digital Equipment Corporation

;

					      0000C 	    .LONG   1025						      ;

					      00010 	    .LONG   0							      ;

					      00014 	    .LONG   0							      ;

					      00018 	    .WORD   0, 0, 0						      ;

					      0001E 	    .WORD   0							      ;

					      00020 	    .LONG   0							      ;

					      00024 	    .WORD   0							      ;

					      00026 	    .BYTE   0							      ;

					      00027 	    .BYTE   0							      ;

					      00028 	    .WORD   0							      ;

					      0002A 	    .WORD   0							      ;

					      0002C 	    .LONG   0							      ;

					      00030 	    .LONG   0							      ;

					      00034 	    .LONG   0							      ;

					      00038 	    .LONG   0							      ;

					      0003C 	    .BYTE   0							      ;

					      0003D 	    .BYTE   0							      ;

					      0003E 	    .BYTE   0							      ;

					      0003F 	    .BYTE   0							      ;

					      00040 	    .LONG   0							      ;

					      00044 	    .LONG   0							      ;

					      00048 	    .LONG   0							      ;



							    .PSECT  $GLOBAL$,NOEXE,2



					      00000 LNK$GB_MAXERCOD::

							    .BLKB   1



						    SYM$C_MAXLNG==	15

						    SEV$C_ERROR==	2

						    SEV$C_SUCCESS==	1

						    SEV$C_INFOR==	3

						    SEV$C_DIAG==	0

						    SEV$C_FATAL==	4

						    LNK$_TMPBUGCHK==	6587116

						    LNK$_INITFAIL==	6587124

						    LNK$_ERRORFILE==	6587132

						    LNK$_FATALERROR==	6587138

						    LNK$_BADIMGSYM==	6587146

						    LNK$_DIAGSISUED==	6587152

						    ERM$C_MSGERR==	0

						    ERM$C_BADCCC==	1

						    ERM$C_BADIMGHDR==	2

						    ERM$C_BADPSC==	3

						    ERM$C_BASESYM==	4

						    ERM$C_CLOSERR==	5

						    ERM$C_CONFMEM==	6

						    ERM$C_CRE8ERR==	7

						    ERM$C_CRFERR==	8

						    ERM$C_DBGTFR==	9

						    ERM$C_EMPTYFILE==	10

						    ERM$C_ENDPRS==	11

						    ERM$C_EOMFTL==	12

						    ERM$C_EOMSTK==	13

						    ERM$C_ERRORS==	14



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 2-5

; Digital Equipment Corporation

;

						    ERM$C_EXCPSC==	15

						    ERM$C_EXCSPAR==	16

						    ERM$C_FAOBUG==	17

						    ERM$C_FIRSTMOD==	18

						    ERM$C_FORMAT==	19

						    ERM$C_GSDTYP==	20

						    ERM$C_ILLFMLCNT==	21

						    ERM$C_ILLKEY==	22

						    ERM$C_ILLREP==	23

						    ERM$C_ILLTIR==	24

						    ERM$C_ILLVAL==	25

						    ERM$C_INITPRS==	26

						    ERM$C_INSVIRMEM==	27

						    ERM$C_INTSTKOV==	28

						    ERM$C_INTSTKUN==	29

						    ERM$C_IVCHAR==	30

						    ERM$C_LIBFIND==	31

						    ERM$C_LIBFMT==	32

						    ERM$C_LIBNAMLNG==	33

						    ERM$C_LINERR==	34

						    ERM$C_MAXCHANS==	35

						    ERM$C_MAXIOSEG==	36

						    ERM$C_MAXISDS==	37

						    ERM$C_MAXSTACK==	38

						    ERM$C_MEMBUG==	39

						    ERM$C_MEMFUL==	40

						    ERM$C_MINDZRO==	41

						    ERM$C_MODNAM==	42

						    ERM$C_MULDEF==	43

						    ERM$C_MULPSC==	44

						    ERM$C_MULTFR==	45

						    ERM$C_SPNAMLNG==	46

						    ERM$C_NOEOM==	47

						    ERM$C_NOEPM==	48

						    ERM$C_NONBTAB==	49

						    ERM$C_NOMODS==	50

						    ERM$C_NOPSCTS==	51

						    ERM$C_NOSUCHMOD==	52

						    ERM$C_NOTPSECT==	53

						    ERM$C_NOVALU==	54

						    ERM$C_NUDFSYMS==	55

						    ERM$C_NULFIL==	56

						    ERM$C_NULPAR==	57

						    ERM$C_OPIDERR==	58

						    ERM$C_OPTREDERR==	59

						    ERM$C_OUTSIMG==	60

						    ERM$C_OVRALI==	61

						    ERM$C_PARMDEL==	62

						    ERM$C_PRIMIN==	63

						    ERM$C_PRIMOUT==	64

						    ERM$C_PSCALI==	65

						    ERM$C_PSCNXR==	66

						    ERM$C_PSCOVFLO==	67

						    ERM$C_RECLNG==	68

						    ERM$C_RECTYP==	69



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 2-6

; Digital Equipment Corporation

;

						    ERM$C_REDERR==	70

						    ERM$C_SECOUT==	71

						    ERM$C_SEQNCE==	72

						    ERM$C_SHRINSYS==	73

						    ERM$C_STRLVL==	74

						    ERM$C_STKOVFLO==	75

						    ERM$C_TFRSYS==	76

						    ERM$C_TIRLNG==	77

						    ERM$C_TIRNYI==	78

						    ERM$C_TRACIGN==	79

						    ERM$C_TRIOUT==	80

						    ERM$C_TRUNC==	81

						    ERM$C_TRUNCDAT==	82

						    ERM$C_UDEFPSC==	83

						    ERM$C_UDFSYM==	84

						    ERM$C_UNMCOD==	85

						    ERM$C_UNRECOPT==	86

						    ERM$C_UNRECQUAL==	87

						    ERM$C_USEUNDEF==	88

						    ERM$C_USRTFR==	89

						    ERM$C_WRNERS==	90

						    ERM$C_WRTERR==	91

						    ERM$C_VALREQ==	92

						    ERM$C_ILLQUAVAL==	99

						    ERM$C_MATCHID==	100

						    ERM$C_MAXPFC==	101

							    .GLOBL  SYS$PUTMSG, LNK$EXIT



							    .PSECT  $CODE$,NOWRT,2



					 0000 00000 	    .ENTRY  LNK$ERRMSG, Save nothing				      ; 0549

		         5E	       28  C2 00002 	    SUBL2   #40, SP						      ;

		         50	       6C  9A 00005 	    MOVZBL  (AP), ARG_COUNT					      ; 0564

		         50	       02  C2 00008 	    SUBL2   #2, ARG_COUNT					      ;

		         04	  08   AC  D1 0000B 	    CMPL    SEVERITY, #4					      ; 0565

				       05  1A 0000F 	    BGTRU   1$							      ;

		         04	       50  D1 00011 	    CMPL    ARG_COUNT, #4					      ; 0566

				       31  15 00014 	    BLEQ    4$							      ;

		         05	       50  D1 00016 1$:     CMPL    ARG_COUNT, #5					      ; 0574

				       03  15 00019 	    BLEQ    2$							      ;

		         50	       05  D0 0001B 	    MOVL    #5, ARG_COUNT					      ;

	   6E	         50	       04  C1 0001E 2$:     ADDL3   #4, ARG_COUNT, PUTMSG_ARGLST			      ; 0575

		    04   AE 00648004   8F  D0 00022 	    MOVL    #6586372, PUTMSG_ARGLST+4				      ; 0576

      08   AE	         50	       02  C1 0002A 	    ADDL3   #2, ARG_COUNT, PUTMSG_ARGLST+8			      ; 0577

		    0C   AE	  04   AC  7D 0002F 	    MOVQ    MSGNUM, PUTMSG_ARGLST+12				      ; 0578

		    08   AC	       04  D0 00034 	    MOVL    #4, SEVERITY					      ; 0580

				       50  D5 00038 3$:     TSTL    ARG_COUNT						      ; 0581

				       47  13 0003A 	    BEQL    8$							      ;

		    10 AE40	  08 AC40  D0 0003C 	    MOVL    PARAMS-4[ARG_COUNT], PUTMSG_ARGLST+16[ARG_COUNT]	      ; 0584

				       50  D7 00043 	    DECL    ARG_COUNT						      ; 0585

				       F1  11 00045 	    BRB     3$							      ; 0581

	   6E	         50	       02  C1 00047 4$:     ADDL3   #2, ARG_COUNT, PUTMSG_ARGLST			      ; 0592

	      00000065   8F	  04   AC  D1 0004B 	    CMPL    MSGNUM, #101					      ; 0593

				       09  1B 00053 	    BLEQU   5$							      ;

      04   AE	    04   AC	  08   AC  C9 00055 	    BISL3   SEVERITY, MSGNUM, PUTMSG_ARGLST+4			      ; 0594



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 2-7

; Digital Equipment Corporation

;

				       12  11 0005C 	    BRB     6$							      ; 0593

	   51	    04   AC	       03  78 0005E 5$:     ASHL    #3, MSGNUM, R1					      ; 0595

		         51 00648000   8F  C8 00063 	    BISL2   #6586368, R1					      ;

      04   AE	         51	  08   AC  C9 0006A 	    BISL3   SEVERITY, R1, PUTMSG_ARGLST+4			      ;

		    08   AE	       50  D0 00070 6$:     MOVL    ARG_COUNT, PUTMSG_ARGLST+8				      ; 0596

				       50  D5 00074 7$:     TSTL    ARG_COUNT						      ; 0597

				       0B  13 00076 	    BEQL    8$							      ;

		    08 AE40	  08 AC40  D0 00078 	    MOVL    PARAMS-4[ARG_COUNT], PUTMSG_ARGLST+8[ARG_COUNT]	      ; 0600

				       50  D7 0007F 	    DECL    ARG_COUNT						      ; 0601

				       F1  11 00081 	    BRB     7$							      ; 0597

				       7E  D4 00083 8$:     CLRL    -(SP)						      ; 0607

				0000V  CF  9F 00085 	    PUSHAB  MAP_OUTMSG						      ;

				  08   AE  9F 00089 	    PUSHAB  PUTMSG_ARGLST					      ;

	      00000000G  00	       03  FB 0008C 	    CALLS   #3, SYS$PUTMSG					      ;

    0000'  CF	         08	       00  ED 00093 	    CMPZV   #0, #8, LNK$GB_MAXERCOD, SEVERITY			      ; 0611

				  08   AC     00099									      ;

				       06  1E 0009B 	    BGEQU   9$							      ;

		  0000'  CF	  08   AC  90 0009D 	    MOVB    SEVERITY, LNK$GB_MAXERCOD				      ; 0612

		         04	  08   AC  D1 000A3 9$:     CMPL    SEVERITY, #4					      ; 0614

				       0B  12 000A7 	    BNEQ    10$							      ;

			    00648302   8F  DD 000A9 	    PUSHL   #6587138						      ; 0615

		  0000G  CF	       01  FB 000AF 	    CALLS   #1, LNK$EXIT					      ;

					   04 000B4 10$:    RET     							      ; 0549



; Routine Size:  181 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 3

; Digital Equipment Corporation

;

;00100  0618	ROUTINE MAP_OUTMSG(MSG_DESC) : NOVALUE =

;00200  0619	!

;00300  0620	! THIS ROUTINE IS CALLED BY SYS$PUTMSG AFTER IT HAS FORMATTED THE ERROR

;00400  0621	! MESSAGE AND JUST BEFORE IT WRITES THE MESSAGE TO SYS$ERROR OR SYS$OUTPUT.

;00500  0622	! THE INPUT PARAMETER IS A STRING DESCRIPTOR FOR THE FORMATTED MESSAGE.

;00600  0623	! THIS ROUTINE IS USED TO OUTPUT ERROR MESSAGES TO THE MAP FILE.

;00700  0624	!

;00800  0625	BEGIN

;00900  0626	!

;01000  0627	MAP	MSG_DESC : REF BLOCK[,BYTE];			! STRING DESCRIPTOR FOR FORMATTED MESSAGE

;01100  0628	!

;01200  0629	EXTERNAL ROUTINE

;01300  0630		LNK$MAPOUT;					! WRITES TO MAP FILE

;01400  0631	!

;01500  0632	LNK$MAPOUT(.MSG_DESC[DSC$A_POINTER], .MSG_DESC[DSC$W_LENGTH]);

;01600  0633	END;							! END OF MAP_OUTMSG







							    .GLOBL  LNK$MAPOUT



					 0000 000B5 MAP_OUTMSG:

							    .WORD   Save nothing					      ; 0618

		         50	  04   AC  D0 000B7 	    MOVL    MSG_DESC, R0					      ; 0632

		         7E	       60  3C 000BB 	    MOVZWL  (R0), -(SP)						      ;

				  04   A0  DD 000BE 	    PUSHL   4(R0)						      ;

		  0000G  CF	       02  FB 000C1 	    CALLS   #2, LNK$MAPOUT					      ;

					   04 000C6 	    RET     							      ; 0618



; Routine Size:  18 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 4

; Digital Equipment Corporation

;

;00100  0634	GLOBAL ROUTINE LNK$DIAG (ASCICSTRING,PARAMS) : NOVALUE =

;00200  0635	BEGIN

;00300  0636	!

;00400  0637	! LINKER DEVELOPMENT DIAGNOSTIC ROUTINE

;00500  0638	!	FIRST ARGUMENT IS ADDRESS OF A PLIT

;00600  0639	!	WHICH CONTAINS THE DIAGNOSTIC

;00700  0640	!	MESSAGE AS A COUNTED STRING.

;00800  0641	!

;00900  0642	!	REMAINING ARGUMENTS IN THE ARGUMENT LIST ARE

;01000  0643	!	PARAMETERS (IF ANY) FOR FAO TO INSERT IN THE

;01100  0644	!	MESSAGE.

;01200  0645	!

;01300  0646	EXTERNAL ROUTINE

;01400  0647		SYS$FAOL : ADDRESSING_MODE(GENERAL);		! FAO ROUTINE

;01500  0648	!

;01600  0649	LOCAL DIAGDESC : VECTOR[2];

;01700  0650	!

;01800  0651	OWN	OUTLEN : WORD,					! LENGTH OF MESSAGE

;01900  0652		OUTBUF : VECTOR [132,BYTE],			! MESSAGE BUFFER

;02000  0653		OUTBUFDESC : VECTOR[2] INITIAL(132,OUTBUF);	! BUFFER DESCRIPTOR

;02100  0654	!

;02200  0655	MAP

;02300  0656		PARAMS : VECTOR[4],

;02400  0657		ASCICSTRING : REF VECTOR[132,BYTE];

;02500  0658	!

;02600  0659		DIAGDESC[0] = .ASCICSTRING[0];

;02700  0660		DIAGDESC[1] = ASCICSTRING[1];

;02800  0661		OUTBUFDESC[1] = OUTBUF;

;02900  0662		CHANNELFLAG = 0;

;03000  0663		ERRORRAB[RAB$V_CCO] = 0;

;03100  0664		IF SYS$FAOL(DIAGDESC,OUTLEN,OUTBUFDESC,PARAMS)

;03200  0665		THEN OUTPUTMSG(.OUTLEN,OUTBUF)

;03300  0666		ELSE LNK$DIAG(CSTRING('FAO FAILURE IN LNK$DIAG'));

;03400  0667		RETURN;

;03500  0668	END;			! OF LINKER DIAGNOSTIC MESSAGE OUTPUTTING ROUTINE







							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00000 P.AAA:  .BYTE   23							      ;

					      00001 	    .ASCII  \FAO FAILURE IN LNK$DIAG\				      ;



							    .PSECT  $OWN$,NOEXE,2



					      0004C OUTLEN: .BLKB   2

					      0004E	    .BLKB   2

					      00050 OUTBUF: .BLKB   132

					      000D4 OUTBUFDESC:

							    .LONG   132							      ;

					      000D8 	    .ADDRESS  OUTBUF						      ;



							    .GLOBL  SYS$FAOL



							    .PSECT  $CODE$,NOWRT,2



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 4-1

; Digital Equipment Corporation

;



					 0800 000C7 	    .ENTRY  LNK$DIAG, Save R11					      ; 0634

		         5B	0000'  CF  9E 000C9 	    MOVAB   OUTBUF, R11						      ;

		         5E	       04  C2 000CE 	    SUBL2   #4, SP						      ;

		         7E	  04   BC  9A 000D1 	    MOVZBL  @ASCICSTRING, DIAGDESC				      ; 0659

      04   AE	    04   AC	       01  C1 000D5 	    ADDL3   #1, ASCICSTRING, DIAGDESC+4				      ; 0660

		  0088   CB	       6B  9E 000DB 	    MOVAB   OUTBUF, OUTBUFDESC+4				      ; 0661

				  B0   AB  D4 000E0 	    CLRL    CHANNELFLAG						      ; 0662

		    BF   AB	  80   8F  8A 000E3 	    BICB2   #128, ERRORRAB+7					      ; 0663

				  08   AC  9F 000E8 	    PUSHAB  PARAMS						      ; 0634

				0084   CB  9F 000EB 	    PUSHAB  OUTBUFDESC						      ; 0664

				  FC   AB  9F 000EF 	    PUSHAB  OUTLEN						      ;

				  0C   AE  9F 000F2 	    PUSHAB  DIAGDESC						      ;

	      00000000G  00	       04  FB 000F5 	    CALLS   #4, SYS$FAOL					      ;

		         0C	       50  E9 000FC 	    BLBC    R0, 1$						      ;

				       5B  DD 000FF 	    PUSHL   R11							      ; 0665

		         7E	  FC   AB  3C 00101 	    MOVZWL  OUTLEN, -(SP)					      ;

		  0000V  CF	       02  FB 00105 	    CALLS   #2, OUTPUTMSG					      ;

					   04 0010A 	    RET     							      ; 0664

				0000'  CF  9F 0010B 1$:     PUSHAB  P.AAA						      ; 0666

		    B4   AF	       01  FB 0010F 	    CALLS   #1, LNK$DIAG					      ;

					   04 00113 	    RET     							      ; 0634



; Routine Size:  77 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 5

; Digital Equipment Corporation

;

;00100  0669	ROUTINE OUTPUTMSG (MSGLEN, MSGADR) : NOVALUE =

;00200  0670	BEGIN

;00300  0671	!

;00400  0672	!++

;00500  0673	!

;00600  0674	! THIS IS THE ROUTINE WHICH ACTUALLY

;00700  0675	! OUTPUTS MESSAGES FROM THE LINKER TO THE USER'S

;00800  0676	! ERROR OUTPUT DEVICE. IF NECESSARY THE FILE IS OPENED

;00900  0677	! BEFORE THE OUTPUT AND IF THE MAP FILE IS ALSO OPEN THEN

;01000  0678	! THE MESSAGE IS OUTPUT THERE ALSO.

;01100  0679	!

;01200  0680	! INPUTS:

;01300  0681	!	MSGLEN = BYTE COUNT OF MESSAGE

;01400  0682	!	MSGADR = ADDRESS OF THE MESSAGE STRING

;01500  0683	! OUTPUTS:

;01600  0684	!	THE MESSAGE IS SENT TO BOTH THE ERROR FILE AND THE

;01700  0685	!	MAP FILE IF APPROPRIATE AN DTHE ERROR FILE IS LEFT

;01800  0686	!	OPEN.

;01900  0687	!

;02000  0688	!--

;02100  0689	!

;02200  0690	EXTERNAL ROUTINE

;02300  0691		LNK$MAPOUT;					! WRITES TO MAP FILE

;02400  0692	!

;02500  0693	EXTERNAL

;02600  0694		LNK$GL_CTLMSK;					! LINKER CONTROL FLAGS

;02700  0695	!

;02800  0696	EXTERNAL LITERAL

;02900  0697		RMS$_NORMAL,					! RMS STATUS RETURN

;03000  0698		LNK$M_MAPOPN : SHORT;				! MAP OPEN FLAG

;03100  0699	!

;03200  0700	LITERAL

;03300  0701		LINKNAMELEN = 7;				! LENGTH OF MESSAGE PREFIX

;03400  0702	!

;03500  0703	LOCAL RMSERROR;						! RMS ERROR CODE

;03600  0704	!

;03700  0705	IF .ERRORIFI EQL 0					! IF ERROR FILE NOT YET OPENED

;03800  0706	THEN BEGIN						! THEN ALLOCATE A FAB ON STACK

;03900  0707		LOCAL ERRORFAB : BLOCK[FAB$C_BLN,BYTE];		! JUST FOR THE OPEN AND CONNECT

;04000  0708		CH$FILL(0,FAB$C_BLN,ERRORFAB);			! ZERO IT

;04100  0709		ERRORFAB[FAB$B_BLN] = FAB$C_BLN;		! IDENTIFY THIS AS A FAB WITH

;04200  0710		ERRORFAB[FAB$B_BID] = FAB$C_BID;		! BLOCK LENGTH AND ID

;04300  0711		ERRORFAB[FAB$V_PUT] = 1;			! SET FOR PUT RECORD ACCESSES

;04400  0712		ERRORFAB[FAB$V_CR]  = 1;			! SET IMPLIED CAR CONTROL

;04500  0713		ERRORFAB[FAB$L_FNA] = UPLIT(BYTE('SYS$OUTPUT'));	! POINT TO FILENAME

;04600  0714		ERRORFAB[FAB$B_FNS] = %CHARCOUNT('SYS$OUTPUT');	! AND SET THE NAME LENGTH

;04700  0715		IF (RMSERROR = $OPEN(FAB=ERRORFAB))		! NOW ATTEMPT OPEN

;04800  0716					NEQ RMS$_NORMAL		! CHECKING FOR AN

;04900  0717		THEN LNK$EXIT(LNK$_ERRORFILE);			! AND IF THERE IS ONE GIVE UP

;05000  0718		ERRORRAB[RAB$L_FAB] = ERRORFAB;			! PUT FAB ADDRESS IN THE RAB

;05100  0719		IF NOT (RMSERROR = $CONNECT(RAB=ERRORRAB))	! NOW CONNECT THE RAB

;05200  0720		THEN LNK$EXIT(LNK$_ERRORFILE);			! BUT GIVE UP IF THAT FAILS

;05300  0721		ERRORIFI = .ERRORFAB[FAB$W_IFI];		! SAVE THE INTERNAL IDENTIFIER

;05400  0722	     END;						! AND FILE IS OPEN

;05500  0723	!



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 5-1

; Digital Equipment Corporation

;

;05600  0724	IF NOT (RMSERROR = $WAIT(RAB=ERRORRAB))			! NOW WAIT FOR POSSIBLE PREVIOUS

;05700  0725	THEN LNK$EXIT(LNK$_ERRORFILE);				! MESSAGE AND GIVE UP ON FAILURE

;05800  0726	ERRORRAB[RAB$L_RBF] = .MSGADR;				! SET THE MESSAGE ADDRESS

;05900  0727	ERRORRAB[RAB$W_RSZ] = .MSGLEN;				! AND LENGTH

;06000  0728	IF NOT (RMSERROR = $PUT(RAB=ERRORRAB))			! OUTPUT THE MESSAGE

;06100  0729	THEN LNK$EXIT(LNK$_ERRORFILE);				! AND GIVE UP ON FAILURE

;06200  0730	IF (.LNK$GL_CTLMSK AND LNK$M_MAPOPN) NEQ 0		! IF THE MAP FILE IS OPEN

;06300  0731	AND .CHANNELFLAG NEQ 0					! AND NOT DIAGNOSTIC,

;06400  0732	THEN BEGIN

;06500  0733		CH$FILL(%C' ',LINKNAMELEN,.MSGADR);		! BLANK OUT THE LINKER'S NAME

;06600  0734		LNK$MAPOUT(.MSGADR,.MSGLEN);			! SEND IT THERE ALSO

;06700  0735	     END;

;06800  0736	RETURN;							! AND ALL DONE

;06900  0737	END;







							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00018 P.AAB:  .ASCII  \SYS$OUTPUT\					      ;

					      00022	    .BLKB   2



							    .GLOBL  LNK$GL_CTLMSK, RMS$_NORMAL, LNK$M_MAPOPN, SYS$OPEN

							    .GLOBL  SYS$CONNECT, SYS$WAIT, SYS$PUT



							    .PSECT  $CODE$,NOWRT,2



					 0C3C 00114 OUTPUTMSG:

							    .WORD   Save R2,R3,R4,R5,R10,R11				      ; 0669

		         5A	0000G  CF  9E 00116 	    MOVAB   LNK$EXIT, R10					      ;

		         5B	0000'  CF  9E 0011B 	    MOVAB   ERRORRAB, R11					      ;

		         5E	  B0   AE  9E 00120 	    MOVAB   -80(SP), SP						      ;

				  FC   AB  B5 00124 	    TSTW    ERRORIFI						      ; 0705

				       5E  12 00127 	    BNEQ    3$							      ;

	   00	         6E	       00  2C 00129 	    MOVC5   #0, (SP), #0, #80, ERRORFAB				      ; 0708

		         6E	0050   8F     0012D									      ;

		         6E	5003   8F  B0 00131 	    MOVW    #20483, ERRORFAB					      ; 0710

		    16   AE	       01  88 00136 	    BISB2   #1, ERRORFAB+22					      ; 0711

		    1E   AE	       02  88 0013A 	    BISB2   #2, ERRORFAB+30					      ; 0712

		    2C   AE	0000'  CF  9E 0013E 	    MOVAB   P.AAB, ERRORFAB+44					      ; 0713

		    34   AE	       0A  90 00144 	    MOVB    #10, ERRORFAB+52					      ; 0714

				       5E  DD 00148 	    PUSHL   SP							      ; 0715

	      00000000G  9F	       01  FB 0014A 	    CALLS   #1, @#SYS$OPEN					      ;

		         52	       50  D0 00151 	    MOVL    R0, RMSERROR					      ;

	      00000000G  8F	       52  D1 00154 	    CMPL    RMSERROR, #RMS$_NORMAL				      ; 0716

				       09  13 0015B 	    BEQL    1$							      ;

			    006482FC   8F  DD 0015D 	    PUSHL   #6587132						      ; 0717

		         6A	       01  FB 00163 	    CALLS   #1, LNK$EXIT					      ;

		    3C   AB	       6E  9E 00166 1$:     MOVAB   ERRORFAB, ERRORRAB+60				      ; 0718

				       5B  DD 0016A 	    PUSHL   R11							      ; 0719

	      00000000G  9F	       01  FB 0016C 	    CALLS   #1, @#SYS$CONNECT					      ;

		         52	       50  D0 00173 	    MOVL    R0, RMSERROR					      ;

		         09	       52  E8 00176 	    BLBS    RMSERROR, 2$					      ;

			    006482FC   8F  DD 00179 	    PUSHL   #6587132						      ; 0720

		         6A	       01  FB 0017F 	    CALLS   #1, LNK$EXIT					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 5-2

; Digital Equipment Corporation

;

		    FC   AB	  02   AE  B0 00182 2$:     MOVW    ERRORFAB+2, ERRORIFI				      ; 0721

				       5B  DD 00187 3$:     PUSHL   R11							      ; 0724

	      00000000G  9F	       01  FB 00189 	    CALLS   #1, @#SYS$WAIT					      ;

		         52	       50  D0 00190 	    MOVL    R0, RMSERROR					      ;

		         09	       52  E8 00193 	    BLBS    RMSERROR, 4$					      ;

			    006482FC   8F  DD 00196 	    PUSHL   #6587132						      ; 0725

		         6A	       01  FB 0019C 	    CALLS   #1, LNK$EXIT					      ;

		    28   AB	  08   AC  D0 0019F 4$:     MOVL    MSGADR, ERRORRAB+40					      ; 0726

		    22   AB	  04   AC  B0 001A4 	    MOVW    MSGLEN, ERRORRAB+34					      ; 0727

				       5B  DD 001A9 	    PUSHL   R11							      ; 0728

	      00000000G  9F	       01  FB 001AB 	    CALLS   #1, @#SYS$PUT					      ;

		         52	       50  D0 001B2 	    MOVL    R0, RMSERROR					      ;

		         09	       52  E8 001B5 	    BLBS    RMSERROR, 5$					      ;

			    006482FC   8F  DD 001B8 	    PUSHL   #6587132						      ; 0729

		         6A	       01  FB 001BE 	    CALLS   #1, LNK$EXIT					      ;

		         00	0000G  CF  D3 001C1 5$:     BITL    LNK$GL_CTLMSK, #LNK$M_MAPOPN			      ; 0730

				       17  13 001C6 	    BEQL    6$							      ;

				  F8   AB  D5 001C8 	    TSTL    CHANNELFLAG						      ; 0731

				       12  13 001CB 	    BEQL    6$							      ;

	   20	         6E	       00  2C 001CD 	    MOVC5   #0, (SP), #32, #7, @MSGADR				      ; 0733

		    08   BC	       07     001D1									      ;

				  04   AC  DD 001D4 	    PUSHL   MSGLEN						      ; 0734

				  08   AC  DD 001D7 	    PUSHL   MSGADR						      ;

		  0000G  CF	       02  FB 001DA 	    CALLS   #2, LNK$MAPOUT					      ;

					   04 001DF 6$:     RET     							      ; 0669



; Routine Size:  204 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 6

; Digital Equipment Corporation

;

;00100  0738	GLOBAL ROUTINE LNK$CLOSERRFIL : NOVALUE =

;00200  0739	BEGIN

;00300  0740	!

;00400  0741	!	THIS ROUTINE IS CALLED TO CLOSE THE CURRENTLY OPEN

;00500  0742	!	ERROR OUTPUT FILE

;00600  0743	!

;00700  0744	!	ERRORIFI IS USED AS THE DETERMINANT OF WHETHER A FILE IS

;00800  0745	!	CURRENTLY OPEN AND IS CLEARED WHEN DONE.

;00900  0746	!

;01000  0747	LOCAL

;01100  0748		ERRORFAB : BLOCK[FAB$C_BLN,BYTE];	! FAB FOR THE CLOSE

;01200  0749	!

;01300  0750	IF .ERRORIFI NEQ 0				! IF THERE IS A FILE OPEN

;01400  0751	THEN BEGIN

;01500  0752		CH$FILL(0,FAB$C_BLN,ERRORFAB);		! CLEAR A FAB

;01600  0753		ERRORFAB[FAB$B_BLN] = FAB$C_BLN;	! IDENTIFY IT TO RMS

;01700  0754		ERRORFAB[FAB$B_BID] = FAB$C_BID;	!

;01800  0755		ERRORFAB[FAB$W_IFI] = .ERRORIFI;	! SET THE FILE ID

;01900  0756		$WAIT(RAB=ERRORRAB);			! WAIT FOR ANY CURRENT OUTPUT

;02000  0757		$CLOSE(FAB=ERRORFAB);			! ATTEMPT THE CLOSE

;02100  0758							! IGNORING ANY ERROR

;02200  0759		ERRORIFI = 0;				! CLEAR THE IDENTIFIER

;02300  0760	     END;

;02400  0761	RETURN;

;02500  0762	END;







							    .GLOBL  SYS$CLOSE



					 083C 001E0 	    .ENTRY  LNK$CLOSERRFIL, Save R2,R3,R4,R5,R11		      ; 0738

		         5B	0000'  CF  9E 001E2 	    MOVAB   ERRORIFI, R11					      ;

		         5E	  B0   AE  9E 001E7 	    MOVAB   -80(SP), SP						      ;

				       6B  B5 001EB 	    TSTW    ERRORIFI						      ; 0750

				       26  13 001ED 	    BEQL    1$							      ;

	   00	         6E	       00  2C 001EF 	    MOVC5   #0, (SP), #0, #80, ERRORFAB				      ; 0752

		         6E	0050   8F     001F3									      ;

		         6E	5003   8F  B0 001F7 	    MOVW    #20483, ERRORFAB					      ; 0754

		    02   AE	       6B  B0 001FC 	    MOVW    ERRORIFI, ERRORFAB+2				      ; 0755

				  04   AB  9F 00200 	    PUSHAB  ERRORRAB						      ; 0756

	      00000000G  9F	       01  FB 00203 	    CALLS   #1, @#SYS$WAIT					      ;

				       5E  DD 0020A 	    PUSHL   SP							      ; 0757

	      00000000G  9F	       01  FB 0020C 	    CALLS   #1, @#SYS$CLOSE					      ;

				       6B  B4 00213 	    CLRW    ERRORIFI						      ; 0759

					   04 00215 1$:     RET     							      ; 0738



; Routine Size:  54 bytes





;02600  0763	END ELUDOM













; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:17	DBB3:[LINKER.SRC]LNKERMESG.B32;10				Page 6-1

; Digital Equipment Corporation

;



;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  $OWN$          	   220    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $GLOBAL$       	     1    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $CODE$         	   534  NOWRT,  RD ,  EXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $PLIT$         	    36  NOWRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)









;				LIBRARY STATISTICS

;

;					     -------- Symbols --------    Blocks

;	File				     Total    Loaded   Percent      Read

;

;  DBA4:[SYSLIB]LIB.L32;1		      5582        37         0       253











; Size:		534 code + 257 data bytes

; Run Time:	00:22.5

; Elapsed Time:	00:27.0

; Memory Used:	322 pages

; Compilation Complete

