

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

; Digital Equipment Corporation

;

;00100  0001	MODULE LNK_GETCMDINP (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_GETCMDINP

;03100  0031	!

;03200  0032	! FACILITY: LINKER

;03300  0033	!

;03400  0034	! ABSTRACT: COMMAND LANGUAGE INTERFACE FOR THE LINK COMMAND

;03500  0035	!

;03600  0036	! HISTORY:

;03700  0037	!

;03800  0038	!	VERSION: X01.00

;03900  0039	!

;04000  0040	!	AUTHOR: T.J. PORTER 03-MAY-77

;04100  0041	!

;04200  0042	!	MODIFICATIONS:

;04300  0043	!

;04400  0044	! NO.	DATE		PROGRAMMER	PURPOSE

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

;04600  0046	! 001	16-JUN-77	T.J. PORTER	OBJECT LIBRARY SUPPORT

;04700  0047	! 002	11-JUL-77	T.J. PORTER	REMOVE CROSS REFERENCE INITIALIZATION.

;04800  0048	!					ADD DEBUGGER FILE AND SYMBOL TABLE

;04900  0049	!					OUTPUT FILES.

;05000  0050	!					ADD BASE ADDRESS VALUE TO /SYSTEM QUALIFIER

;05100  0051	!					AND /INCLUDE QUALIFIER FOR LIBRARY INPUT

;05200  0052	! 003	22-AUG-77	T.J. PORTER	CHANGE LOGICAL NAME FOR SOURCE OF

;05300  0053	!						THE DEBUGGER (SYS$LIBRARY)

;05400  0054	! 004	25-AUG-77	T.J. PORTER	ADD OPTION FILE PROCESSING

;05500  0055	! 005	15-SEP-77	T.J. PORTER	USER DEBUGGER DEFAULTS TO HIS DEVICE



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

; Digital Equipment Corporation

;

;05600  0056	!						AND DIRECTORY DEFAULTS (IN RMS)

;05700  0057	! 006	11-OCT-77	T.J. PORTER	SHAREABLE IMAGES, SYMBOLIC BASE

;05800  0058	!						ADDRESSES,STICKYNESS RE-WORKED

;05900  0059	! 007	08-DEC-77	T.J. PORTER	FULL MAP DISABLES SUPPRESSION OF

;06000  0060	!						SYSTEM LIBRARY SYMBOLS

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

;06200  0062	!						AND SET UP A STACK

;06300  0063	! 009	18-JAN-78	T.J. PORTER	SET UP FOR TRACE BACK QUALIFIER

;06400  0064	! 010	09-MAR-78	T.J. PORTER	IGNORE TRACEBACK ON SYSTEM IMAGES

;06500  0065	! 011	20-APR-78	T.J. PORTER	REQUIRE AND LIBRARY FILE CLEAN UP

;06600  0066	! 012	02-MAY-78	T.J. PORTER	GET VERIFY STATUS FOR THE ECHOING OF

;06700  0067	!						OPTIONS FILE CONTENT

;06800  0068	! 013	09-MAY-78	T.J. PORTER	ADD CONTIGUOUS QUALIFIER AND

;06900  0069	!						REMOVE LONG QUALIFIER

;07000  0070	! 014	15-MAY-78	T.J. PORTER	CREATE CLUSTERS FOR SHAREABLE

;07100  0071	!						IMAGES

;07150  0072	! 015	07-JUL-78	T.J. PORTER	ADD /SYSSHR QUALIFIER

;07160  0073	! 016	16-JUL-78	T.J. PORTER	BUG INITIALIZE CLUSTER DESCRIPTOR

;07200  0074	!--



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

; Digital Equipment Corporation

;

;07300  0075	     

;07400  0076	!

;07500  0077	!++

;07600  0078	!

;07700  0079	! FUNCTIONAL DESCRIPTION:

;07800  0080	!

;07900  0081	! THIS MODULE CONTAINS ALL THE ROUTINES AND DATA STRUCTURES TO

;08000  0082	! PROCESS THE INPUT COMMAND PARAMETERS AND OPTIONS.

;08100  0083	! THERE IS A GLOBAL ROUTINE:

;08200  0084	!	LNK$GETCMD(ARGLIST)

;08300  0085	! WHERE ARGLIST IS THE ADDRESS OF THE ORIGINAL ARGUMENT LIST

;08400  0086	! WITH WHICH THE LINKER WAS CALLED. THIS ARGUMENT LIST IS

;08500  0087	! USED TO PERFORM CALLS BACK TO CLI FOR RESULT PARSING.

;08600  0088	!

;08700  0089	! THIS MODULE ALSO CONTAINS PARAMETER REQUEST BLOCKS WHICH

;08800  0090	! ARE PASSED WITH EACH CALL TO CLI, AS WELL AS PARAMETER

;08900  0091	! QUALIFIER DESCRIPTION BLOCKS AND A SET OF ACTION ROUTINES

;09000  0092	! WHICH ARE CALLED BY CLI ON THE APPROPRIATE CONDITIONS.

;09100  0093	!

;09200  0094	! A GLOBAL ROUTINE LNK$ALLOFDB IS ALSO INCLUDED IN THIS MODULE TO

;09300  0095	! ALLOCATE AND INITIALIZE FILE DESCRIPTORS AND RESULTANT FILE NAME STRING AREAS.

;09400  0096	! IT IS DESCRIBED IN DETAIL BELOW.

;09500  0097	!--

;09600  0098	!

;09700  0099	FORWARD ROUTINE

;09800  0100		CLIERROR : NOVALUE,			! CALLED FOR ALL CLI ERRORS

;09900  0101		DEBUGFILE : NOVALUE,			! CALLED BY CLI IF A /DEBUG QUALIFIER

;10000  0102		LNK$ALLOCLUSTER : NOVALUE,		! ALLOCATE A CLUSTER DESCRIPTOR

;10100  0103		LNK$ALLOFDB : NOVALUE,			! ALLOCATE FILE DESCRIPTORS AND RESULTANT STRING AREAS

;10200  0104		OUTPUTFILE : NOVALUE,			! CALLED FOR ALL OUTPUT FILES

;10300  0105		INPUTFILE : NOVALUE,			! CALLED FOR EACH INPUT FILE

;10400  0106		SPECIALIMAGE : NOVALUE,			! CALLED FOR SYSTEM AND SHAREABLE IMAGES

;10500  0107		LIBRFILE : NOVALUE,			! CALLED FOR LIBRARY FILES

;10600  0108		OPTIONFILE : NOVALUE;

;10700  0109	!

;10800  0110	LIBRARY

;10900  0111		'SYS$LIBRARY:STARLET.L32';			! SYSTEM STRUCTURE DEFINITIONS

;11000  0112	REQUIRE

;11100  0113		'PREFIX';			! UTILITY MACROS ETC.

;11200  0305	REQUIRE

;11300  0306		'DATBAS';			! INTERNAL DATA BASE DEFINITIONS

;11400  0538	LIBRARY

;11500  0539		'SYS$LIBRARY:CLIMAC.L32';			! COMMAND LANGUAGE STRUCTURES

;11600  0540	REQUIRE

;11700  0541		'SYMFMT';			! SYMBOL TABLE FORMATS

;11800  0626	!

;11900  0627	EXTERNAL LITERAL

;12000  0628		ERM$C_CLOSERR : BYTLIT,			! CLOSE FAILURE

;12100  0629		ERM$C_ENDPRS : BYTLIT,			! ERROR AT END OF PARSE

;12200  0630		ERM$C_FIRSTMOD : BYTLIT,		! FIRST MODULE MISSING

;12300  0631		ERM$C_INITPRS : BYTLIT,			! PARSE INITIALIZATION ERROR

;12400  0632		ERM$C_LINERR : BYTLIT,			! OUTPUT ERRONEOUS SEGMENT OF COMMAND LINE

;12500  0633		ERM$C_NOMODS : BYTLIT,			! NO INPUT MODULES

;12600  0634		ERM$C_OPIDERR : BYTLIT,			! OPEN FAILURE

;12700  0635		ERM$C_PRIMIN : BYTLIT,			! INPUT PARAMETER ERROR



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-1

; Digital Equipment Corporation

;

;12800  0636		ERM$C_PRIMOUT : BYTLIT,			! IMAGE PARAMETER ERROR

;12900  0637		ERM$C_SECOUT : BYTLIT,			! MAP PARAMETER ERROR

;13000  0638		ERM$C_SHRINSYS : BYTLIT,		! CANNOT LINK SHAREABLE IMAGES INTO A SYSTEM IMAGE

;13100  0639		ERM$C_TRACIGN : BYTLIT,			! NEGATION OF TRACE BACK IGNORED

;13200  0640		ERM$C_TRIOUT : BYTLIT,			! SYMBOL TABLE PARAMETER ERROR

;13300  0641		ERM$C_UNMCOD : BYTLIT,			! ERROR MESSAGEWITH USER FILENAME AND RMS ERROR CODE

;13400  0642		LNK$S_IMAGE : SHORT,			! PRODUCE AN IMAGE

;13500  0643		LNK$S_MAP : SHORT,			! PRODUCE A MAP

;13600  0644		LNK$M_MAP : SHORT,			!

;13700  0645		LNK$S_EXE : SHORT,			! EXECUTABLE IMAGE

;13800  0646		LNK$S_SYS : SHORT,			! SYSTEM IMAGE

;13900  0647		LNK$M_SYS : SHORT,

;14000  0648		LNK$S_DBG : SHORT,			! DEBUGGER INVOKED

;14100  0649		LNK$M_DBG : WORDLIT,			!

;14200  0650		LNK$S_CROS : SHORT,			! CROSS REFERENCED LISTING

;14300  0651		LNK$S_LONG : SHORT,			! LONG FORM MAP

;14400  0652		LNK$M_LONG : WORDLIT,			!

;14500  0653		LNK$S_BRIEF : SHORT,			! SHORT MAP

;14600  0654		LNK$M_BRIEF : WORDLIT,

;14700  0655		LNK$S_PICIMG : SHORT,			! IMAGE IS PIC

;14800  0656		LNK$S_SYMTBL : SHORT,			! SYMBOL TABLE REQUESTED

;14900  0657		LNK$S_SYSLIB : SHORT,			! SYSTEM LIBRARY

;15000  0658		LNK$M_SYSLIB : WORDLIT,			! SEARCHES FOR UNDEFINED SYMBOLS

;15050  0659		LNK$S_SYSSHR : SHORT,			! SYSTEM SHAREABLE IMAGE ENABLED

;15100  0660		LNK$S_SUPSYS : SHORT,			! SUPPRESSION OF SYSTEM LIBRARY SYMBOLS

;15200  0661		LNK$S_TRACE : SHORT,			! TRACE BACK ENABLE BIT

;15300  0662		LNK$S_VERIFY : SHORT,			! VERIFY OPTIONS FILES

;15400  0663		LNK$S_CONTIG : SHORT,			! CONTIGUOUS IMAGE

;15500  0664		SEV$C_INFOR : SHORT,			! INFORMATIONAL MESSAGES

;15600  0665		SEV$C_DIAG : SHORT,			! DIAGNOSTICS

;15700  0666		SEV$C_FATAL : SHORT;			! FATAL MESSAGES

;15800  0667	!

;15900  0668	!	DECLARE THE QUALIFIER CODES

;16000  0669	!

;16100  0670	$CLIQUALCODES(LINK,				! FOR THE LINKER

;16200P 0671				SYSTEM,			! SYSTEM IMAGE

;16300P 0672				CONTIGUOUS,		! PRODUCE A CONTIGOUS IMAGE

;16400P 0673				SHAREABLE,		! SHAREABLE IMAGE

;16500P 0674				DEBUG,			! IMAGE TO BE DEBUGGED

;16600P 0675				TRACE,			! PRODUCE TRACE BACK DATABASE

;16700P 0676				CROSSREF,		! PRODUCE A CROSS REFERENCE ON MAP

;16800P 0677				FULL,			! A FULL MAP

;16900P 0678				BRIEF,			! A SHORT MAP

;17000P 0679				SYSLIB,			! INPUT FROM SYSTEM LIBRARY

;17010P 0680				SYSSHR,			! ALSO FROM SYSTEM SHAREABLE IMAGE

;17100P 0681				SELECTIVE,		! SELECTIVE SEARCH FILE

;17200P 0682				INCLUDE,		! EXPLICIT MODULE INCLUSION FROM LIBRARIES

;17300P 0683				LIBRARY,		! LIBRARY FILE INPUT

;17400P 0684				OPTIONS);		! OPTION FILE

;17500  0685	!

;17600  0686	EXTERNAL ROUTINE

;17700  0687		LNK$ALLOBLK,				! DYNAMIC MEMORY ALLOCATOR

;17800  0688		LNK$DEALBLK,				! AND DE-ALLOCATOR

;17900  0689		LNK$ERRMSG,				! ERROR MESSAGE HANDLER

;18000  0690		LNK$PROCOPTNS,				! OPTION FILE PROCESSOR



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

; Digital Equipment Corporation

;

;18100  0691		LNK$INSERT,				! SYMBOL TABLE INSERTION

;18200  0692		LNK$SEARCH;				! AND SEARCH ROUTINES

;18300  0693	!

;18400  0694	EXTERNAL

;18500  0695		LNK$GL_CTLMSK,				! CONTROL FLAGS

;18600  0696		LNK$GL_CLULST : VECTOR[2],		! CLUSTER DESCRIPTOR LISTHEAD

;18700  0697		LNK$GL_DEFCLU : BLOCK[,BYTE],		! DEFAULT CLUSTER DESCRIPTOR

;18800  0698		LNK$GL_CURCLU : REF BLOCK[,BYTE],	! CURRENT CLUSTER DESCRIPTOR

;18900  0699		LNK$GL_FVMLST : REF BLOCK[,BYTE],	! FREE VIRTUAL MEMORY LISTHEAD

;19000  0700		LNK$GL_IMGFIL : REF BLOCK[,BYTE],	! POINTER TO IMAGE FILE DESCRIPTOR SLOT

;19100  0701		LNK$GL_MAPFIL : REF BLOCK[,BYTE],	! POINTER TO THE MAP FILE DESCRIPTOR

;19200  0702		LNK$GW_NSYMBOLS : WORD,			! NUMBER OF SYMBOLS	

;19300  0703		LNK$GW_NUDFSYMS : WORD,			! NUMBER NOT YET DEFINED

;19400  0704		LNK$GL_SYMFIL : REF BLOCK[,BYTE],	! POINTER TO SYMBOL TABLE OUTPUT FILE

;19500  0705		LNK$GL_UDFLST;				! UNDEFINED SYMBOL LIST HEAD

;19600  0706	!

;19700  0707	BIND	FIRSTCLUSTER = LNK$GL_CLULST[0] : REF BLOCK[,BYTE],	! POINTER TO FIRST

;19800  0708		LASTCLUSTER = LNK$GL_CLULST[1] : REF BLOCK[,BYTE];	! AND THE LAST

;19900  0709	!

;20000  0710	GLOBAL

;20100  0711		LNK$GL_CLIWORK;				! POINTER TO WORK AREA FOR CLI

;20200  0712	!

;20300  0713	! OWN STORAGE

;20400  0714	!

;20500  0715	BIND	DEFILETYPE = UPLIT(BYTE('.OBJ'));			! DEFAULT FILE TYPE

;20600  0716	!

;20700  0717	LITERAL

;20800  0718		MAXDNSLEN = 20,						! MAXIMUM LENGTH OF A DEFAULT NAME STRING

;20900  0719		RSA_ALLOSIZE = NAM$C_MAXRSS*3/2,			! RSA ALLOCATION QUANTITY

;21000  0720		TYPELEN = 4;						! LENGTH OF FILE TYPE STRING

;21100  0721	!

;21200  0722	OWN

;21300  0723		INITPRS_DESC : $CLIREQDESC(RQTYPE = INITPRS,		! DESCRIPTOR FOR

;21400P 0724					  ERRACT = CLIERROR-INITPRS_DESC),	! INITIATE PARSE REQUEST

;21500  0725		ENDPRS_DESC : $CLIREQDESC(RQTYPE = ENDPRM1,			! DESCRIPTOR FOR PARSE

;21600P 0726					  ERRACT = CLIERROR-ENDPRS_DESC),	! COMPLETE CALL

;21700  0727	

;21800  0728		SYSQUAL_DESC : $CLIQUALDESC(				! SYSTEM IMAGE

;21900P 0729					  QDCODE=SYSTEM,		! QUALIFIER

;22000P 0730					  TRUACT=SPECIALIMAGE-SYSQUAL_DESC,

;22100P 0731					  TSTLST=(LNK$S_SHR,LNK$S_DBG),	! CONFLICTS WITH SHAREABLE AND DEBUGGER

;22200P 0732					  SETLST=LNK$S_SYS,		! 

;22300P 0733					  CLRLST=(LNK$S_TRACE,LNK$S_EXE)), ! NOT EXECUTABLE AND NO TRACEBACK

;22400  0734		SYSLIB_DESC : $CLIQUALDESC(				! SYSTEM LIBRARY QUALIFIER

;22500P 0735					QDCODE=SYSLIB,

;22600P 0736					SETLST=LNK$S_SYSLIB),

;22610  0737	

;22620  0738		SYSSHR_DESC : $CLIQUALDESC(

;22630P 0739					QDCODE=SYSSHR,

;22640P 0740					SETLST=LNK$S_SYSSHR),

;22700  0741	

;22800  0742		SHRABL_DESC : $CLIQUALDESC(				! SHAREABLE IMAGE

;22900P 0743					  QDCODE=SHAREABLE,		! QUALIFIER

;23000P 0744					  TRUACT=SPECIALIMAGE-SHRABL_DESC,

;23100P 0745					  TSTLST=(LNK$S_SYS,LNK$S_DBG),	! CONFLICTS WITH SYSTEM AND DEBUG



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-3

; Digital Equipment Corporation

;

;23200P 0746					  SETLST=LNK$S_SHR,		!

;23300P 0747					  CLRLST=(LNK$S_EXE,LNK$S_TRACE)),

;23400  0748	

;23500  0749		DEBUG_DESC : $CLIQUALDESC(				! DEBUG QUALIFIER

;23600P 0750					  QDCODE=DEBUG,

;23700P 0751					  TRUACT=DEBUGFILE-DEBUG_DESC,	! ROUTINE TO GET THE FILENAME OF SPECIAL DEBUGGER

;23800P 0752					  TSTLST=(LNK$S_SYS,LNK$S_SHR),	! CONFLICTS WITH SYSTEM AND SHAREABLE

;23900P 0753					  SETLST=LNK$S_DBG),

;24000  0754	

;24100  0755		TRACE_DESC : $CLIQUALDESC(				! TRACEBACK QUALIFIER

;24200P 0756					 QDCODE=TRACE,			!

;24300P 0757					 SETLST=LNK$S_TRACE),		! JUST SETS A BIT

;24400  0758		CONTIG_DESC : $CLIQUALDESC(				! CONTIGUOUS QUALIFIER

;24500P 0759					 QDCODE=CONTIG,			!

;24600P 0760					 SETLST=LNK$S_CONTIG),		! JUST SETS A BIT

;24700  0761		IMAGQUALEND : $CLIQUALEND,				! END OF IMAGE QUALIFIER DESCRIPTOR LIST

;24800  0762	

;24900  0763		IMAGE_DESC : $CLIREQDESC(RQTYPE = OUTPUT1,		! IMAGE REQUEST

;25000P 0764					  BITNUM = LNK$S_IMAGE, 	! DESCRIPTOR - PRIMARY

;25100P 0765					  ERRACT = CLIERROR-IMAGE_DESC,	! OUTPUT.

;25200P 0766					  PRSACT = OUTPUTFILE-IMAGE_DESC,

;25300P 0767					  QUALST = SYSQUAL_DESC-IMAGE_DESC),

;25400  0768		CREFQUAL_DESC : $CLIQUALDESC(				! CROSS REFERENCE

;25500P 0769					QDCODE=CROSSREF,		! QUALIFIER

;25600P 0770					TSTLST=LNK$S_BRIEF,		! WHICH CONFLICTS WITH BRIEF

;25700P 0771					SETLST=LNK$S_CROS),		! OF THESE WILL WIN

;25800  0772	

;25900  0773		FULLQUAL_DESC : $CLIQUALDESC(				! FULL FORM OF

;26000P 0774					QDCODE=FULL,			! MAP QUALIFIER

;26100P 0775					SETLST=LNK$S_LONG,

;26200P 0776					CLRLST=LNK$S_SUPSYS,		! ALLOW SYSLIB SYSMBOLS

;26300P 0777					TSTLST=LNK$S_BRIEF),		! CONFLICTS WITH BRIEF

;26400  0778	

;26500  0779		BRIEFQUAL_DESC : $CLIQUALDESC(				! BRIEF MAP

;26600P 0780					QDCODE=BRIEF,			! QUALIFIER

;26700P 0781					SETLST=LNK$S_BRIEF,

;26800P 0782					TSTLST=(LNK$S_CROS,LNK$S_LONG)),! CONFLICTS WITH CROSS AND LONG

;26900  0783	

;27000  0784		MAPQUALEND : $CLIQUALEND,				! END OF MAP FILE QUALIFIERS

;27100  0785	

;27200  0786		MAP_DESC : $CLIREQDESC(RQTYPE = OUTPUT2,		! MAP FILE REQUEST

;27300P 0787					  BITNUM = LNK$S_MAP,		! DESCRIPTOR - SECONDARY

;27400P 0788					  ERRACT = CLIERROR-MAP_DESC,	! OUTPUT

;27500P 0789					  PRSACT = OUTPUTFILE-MAP_DESC,

;27600P 0790					  QUALST = CREFQUAL_DESC-MAP_DESC),

;27700  0791	

;27800  0792		SSERQUAL_DESC : $CLIQUALDESC(				! SELECTIVE SEARCH

;27900P 0793					  QDCODE=SELECTIVE,		! QUALIFIER IS MUTUALLY

;28000P 0794					  TSTLST=(LNK$S_OPTION,		! EXCLUSIVE OF OPTIONS.

;28100P 0795						  LNK$S_LIBR),		! LIBRARY

;28200P 0796					  SETLST=LNK$S_SELSER),

;28300  0797	

;28400  0798		INCLUDE_DESC : $CLIQUALDESC(				! INCLUDE QUALIFIER

;28500P 0799					  QDCODE=INCLUDE,		! IS MUTUALLY EXCLUSIVE

;28600P 0800					  TSTLST=(LNK$S_OPTION,LNK$S_SHR,	! OF OPTIONS, SHAREABLE AND



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-4

; Digital Equipment Corporation

;

;28700P 0801						  LNK$S_SELSER),	! SELECTIVE SEARCH

;28800P 0802					  SETLST=LNK$S_LIBR,

;28900P 0803					  TRUACT=LIBRFILE-INCLUDE_DESC),! GO GET THE MODULES

;29000  0804	

;29100  0805		LIBRQUAL_DESC : $CLIQUALDESC(				! LIBRARY QUALIFIER

;29200P 0806					  QDCODE=LIBRARY,		! IS MUTUALLY EXCLUSIVE

;29300P 0807					  TSTLST=(LNK$S_OPTION,LNK$S_SHR,	! OF OPTIONS, SHAREABLE AND

;29400P 0808						  LNK$S_SELSER),	! SELECTIVE SEARCH

;29500P 0809					  SETLST=LNK$S_LIBR,

;29600P 0810					  TRUACT=LIBRFILE-LIBRQUAL_DESC),! GO GET THE MODULES

;29700  0811	

;29800  0812		OPTQUAL_DESC : $CLIQUALDESC(				! OPTION QUALIFIER

;29900P 0813					  QDCODE=OPTIONS,		! IS MUTUALLY EXCLUSIVE

;30000P 0814					  TSTLST=(LNK$S_SELSER,LNK$S_SHR,	! OF SELECTIVE SEARCH, SHAREABLE

;30100P 0815						  LNK$S_LIBR),		! AND LIBRARY

;30200P 0816					  SETLST=LNK$S_OPTION,

;30300P 0817					  TRUACT=OPTIONFILE-OPTQUAL_DESC),

;30400  0818	

;30500  0819		INPUTQUALEND : $CLIQUALEND,				! END OF INPUT FILE QUALIFIERS

;30600  0820	

;30700  0821		INPUT_DESC : $CLIREQDESC(RQTYPE = INPUT1,		! INPUT FILES REQUEST

;30800P 0822					  RQFLGS = PARMREQ,		! DESCRIPTOR - AT

;30900P 0823					  ERRACT = CLIERROR-INPUT_DESC,	! LEAST ONE IS REQUIRED

;31000P 0824					  PRSACT = INPUTFILE-INPUT_DESC,

;31100P 0825					  QUALST = SSERQUAL_DESC-INPUT_DESC),

;31200  0826		SYMTBL_DESC : $CLIREQDESC(RQTYPE=OUTPUT3,		! THIRD OUTPUT PARAMETER IS SYMBOL TABLE

;31300P 0827					  BITNUM=LNK$S_SYMTBL,		! FILE TO BE CREATED

;31400P 0828					  ERRACT=CLIERROR-SYMTBL_DESC,

;31500P 0829					  PRSACT=OUTPUTFILE-SYMTBL_DESC),

;31600  0830	!

;31700  0831		DEBUGGER : DESCRIPTOR('SYS$LIBRARY:DEBUG'),		! DEFAULT DEBUGGER FILENAME AND DIRECTORY

;31800  0832	!

;31900  0833		OUTFILE,						! POINTER TO THE POINTER FOR THE CURRENT OUTPUT FILE

;32000  0834		NEXTRSA,						! POINTER TO SLOT FOR NEXT RESULTANT STRING ON OPEN

;32100  0835		SHARECLUSTER : REF BLOCK[,BYTE],			! POINTER TO SHAREABLE IMAGE CLUSTER DESCRIPTOR

;32200  0836		TYPEADR : INITIAL(CH$PTR(DEFILETYPE)),			! ADDRESS OF THE FILE TYPE STRING

;32300  0837		INFILFLGS : BYTE,					! FLAGS OF EACH INPUT FILE

;32400  0838		RSAREMSIZE : BYTE,					! SIZE REMAINING IN RSA

;32500  0839		ERRORMESSAGE : BYTE;					! CURRENT ERROR MESSAGE

;32600  0840	!

;32700  0841	GLOBAL BIND LNK$AL_LBQLDSC = INCLUDE_DESC : BLOCK[,BYTE];! MAKE ITS NAME AVAILABLE TO EVERYBODY

;32800  0842	!

;32900  0843	GLOBAL ROUTINE LNK$GETCMD(ARGLIST) : NOVALUE =

;33000  0844	BEGIN

;33100  0845	!

;33200  0846	! THIS ROUTINE INITIALIZES THE CLI RESULT PARSER THEN RE-CALLS

;33300  0847	! IT FOR PROCESSING OF EACH COMMAND PARAMETER. IT FIRST CALLS

;33400  0848	! FOR THE PRIMARY OUTPUT PARAMETER (THE IMAGE), THEN THE SECONDARY

;33500  0849	! OUTPUT PARAMETER (THE MAP), FOLLOWED BY THE THIRD OUTPUT PARAMETER (THE SYMBOL TABLE FILE).

;33600  0850	! NEXT IT LOOPS, CALLING FOR INPUT

;33700  0851	! PARAMETERS (PRIMARY ONLY) UNTIL THERE ARE NO MORE. THE ACTIONS

;33800  0852	! TAKEN ON PRESENCE OR ABSENCE OF ANY PARAMETER AND ITS

;33900  0853	! QUALIFIERS ARE TAKEN IN THE OTHER ROUTINES (BELOW) WHICH

;34000  0854	! ARE CALLED BY CLI ON THE APPROPRIATE CONDITION.

;34100  0855	!



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-5

; Digital Equipment Corporation

;

;34200  0856	! ARGLIST IS THE ADDRESS OF THE ARGUMENT LIST WITH WHICH

;34300  0857	! THE LINKER WAS ORIGINALLY CALLED.

;34400  0858	!

;34500  0859	MAP	ARGLIST : REF BLOCK[,BYTE];				! REALLY A VECTOR OF LONGWORDS

;34600  0860	!

;34700  0861	BIND RECALLCLI = .ARGLIST[CLI$A_UTILSERV];			! POINT BACK AT CLI

;34800  0862	!

;34900  0863	LNK$ALLOBLK(CLI$C_WORKAREA,LNK$GL_CLIWORK);			! ALLOCATE A WORK AREA FOR CLI

;35000  0864	LNK$GL_CTLMSK<LNK$S_VERIFY,1,0> = .ARGLIST[CLI$V_VERIFY];	! COPY VERIFY CONTEXT OF PROCESS

;35100  0865	!

;35200  0866	ERRORMESSAGE=ERM$C_INITPRS;					! SET FIRST ERROR MESSAGE CODE

;35300  0867	RECALLCLI(INITPRS_DESC,.LNK$GL_CLIWORK);			! INITIATE RESULT PARSING

;35400  0868	!

;35500  0869	ERRORMESSAGE=ERM$C_PRIMOUT;					! NEXT ERROR MESSAGE

;35600  0870	RSAREMSIZE = RSA_ALLOSIZE*3;					! SET UP THE RESULTANT STRING AREA

;35700  0871	LNK$ALLOBLK(.RSAREMSIZE,NEXTRSA);				! FOR THE FILE OPENS (TRIPLE SIZE AT FIRST)

;35800  0872	OUTFILE = LNK$GL_IMGFIL;					! POINT TO THE POINTER

;35900  0873	RECALLCLI(IMAGE_DESC,.LNK$GL_CLIWORK,LNK$GL_CTLMSK);		! GO GET IMAGE FILE DESCRIP.

;36000  0874	!

;36100  0875	ERRORMESSAGE=ERM$C_SECOUT;					! NEXT ERROR MESSAGE

;36200  0876	OUTFILE = LNK$GL_MAPFIL;					! POINT TO THE POINTER

;36300  0877	RECALLCLI(MAP_DESC,.LNK$GL_CLIWORK,LNK$GL_CTLMSK);		! GO GET MAP FILE DESCRIP.

;36400  0878	IF NOT .LNK$GL_CTLMSK<LNK$S_MAP,1,0>				! IF NO MAP SPECIFIED SET TO

;36500  0879	THEN LNK$GL_CTLMSK<LNK$S_BRIEF,1,0> = TRUE;		! SUPPRESS INSERTION OF SYMBOLS IN CREF TABLES

;36600  0880	!

;36700  0881	ERRORMESSAGE=ERM$C_TRIOUT;					! SET ERROR FOR THIRD OUTPUT PARAMETER

;36800  0882	OUTFILE = LNK$GL_SYMFIL;					! POINT TO THE POINTER

;36900  0883	RECALLCLI(SYMTBL_DESC,.LNK$GL_CLIWORK,LNK$GL_CTLMSK);		! AND GO GET IT

;37000  0884	!

;37100  0885	ERRORMESSAGE=ERM$C_PRIMIN;					! NEXT ERROR MESSAGE

;37200  0886	DO BEGIN							! AND NOW LOOP, GETTING

;37300  0887		RECALLCLI(INPUT_DESC,.LNK$GL_CLIWORK,INFILFLGS);	! INPUT FILE DESCRIPTIONS

;37400  0888	   END								! UNTIL THERE IS 

;37500  0889	UNTIL .INPUT_DESC[CLI$V_CONCATINP] EQL 0;			! NO MORE

;37600  0890	ERRORMESSAGE=ERM$C_ENDPRS;					! SET FINAL MESSAGE

;37700  0891	RECALLCLI(ENDPRS_DESC,.LNK$GL_CLIWORK);				! TERMINATE PARSING

;37800  0892	IF .FIRSTCLUSTER EQL 0						! IF NO CLUSTERS ALLOCATED

;37900  0893	AND .LNK$GL_DEFCLU[CLU$L_FSTFDB] EQL 0				! AND NO FILES IN DEFAULT CLUSTER

;38000  0894	THEN LNK$ERRMSG(ERM$C_NOMODS,SEV$C_FATAL);			! THERE WERE NO INPUT MODULES - FATAL ERROR

;38100  0895	!

;38200  0896	!	NOW LINK THE DEBUGGER INTO THE INPUT FILE LIST

;38300  0897	!	IF DEBUG AND/OR TRACEBACK WAS REQUESTED.

;38400  0898	!

;38500  0899	!	HOWEVER SUPPRESS IT IF THIS IS A SYSTEM IMAGE

;38600  0900	!

;38700  0901	IF .LNK$GL_CTLMSK<LNK$S_SYS,1,0>

;38750  0902	OR .LNK$GL_CTLMSK<LNK$S_SHR,1,0>

;38800  0903	THEN LNK$GL_CTLMSK<LNK$S_TRACE,1,0> = FALSE;

;38900  0904	IF .LNK$GL_CTLMSK<LNK$S_DBG,1,0>

;39000  0905	OR .LNK$GL_CTLMSK<LNK$S_TRACE,1,0>

;39100  0906	THEN BEGIN

;39200  0907		IF NOT .LNK$GL_CTLMSK<LNK$S_TRACE,1,0>			! IF ONLY DBG THEN

;39300  0908		THEN LNK$ERRMSG(ERM$C_TRACIGN,SEV$C_INFOR);		! REPORT CONFLICT AS INFO.

;39400  0909		INFILFLGS = LNK$M_DEBUGER;				! SET THE FILE FLAG

;39500  0910		INPUT_DESC[CLI$W_RQSIZE] = .DEBUGGER[0];		! LENGTH PART OF DESCRIPTOR



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

; Digital Equipment Corporation

;

;39600  0911		INPUT_DESC[CLI$A_RQADDR] = .DEBUGGER[1];		! AND ADDRESS OF NAME

;39700  0912		INPUTFILE(INPUT_DESC);					! GO DO IT

;39800  0913	     END;

;39900  0914	LNK$GL_CTLMSK<LNK$S_VERIFY,1,0> = FALSE;			! TURN OFF VERIFY STATUS

;40000  0915	IF .LNK$GL_DEFCLU[CLU$L_FSTFDB] NEQ 0				! IF DEFAULT CLUSTER HAS SOME FILES

;40100  0916	THEN BEGIN

;40200  0917		LASTCLUSTER[CLU$L_NXTCLU] = LNK$GL_DEFCLU;		! LINK IT ON TO END OF

;40300  0918		LASTCLUSTER = LNK$GL_DEFCLU;				! CLUSTER LIST

;40400  0919	     END;

;40500  0920	RETURN;

;40600  0921	END;





							    .TITLE  LNK_GETCMDINP

							    .IDENT  \X01.16\



							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00000 P.AAA:  .ASCII  \.OBJ\						      ;

					      00004 P.AAB:  .ASCII  \SYS$LIBRARY:DEBUG\<0><0><0>			      ;



							    .PSECT  $OWN$,NOEXE,2



					      00000 INITPRS_DESC:

							    .BYTE   0							      ;

					      00001 	    .BYTE   0							      ;

					      00002 	    .BYTE   0							      ;

					      00003 	    .BYTE   0							      ;

					      00004 	    .LONG    <CLIERROR-INITPRS_DESC>				      ;

					      00008 	    .LONG   0, 0						      ;

					      00010 	    .LONG   0							      ;

					      00014 	    .LONG   0							      ;

					      00018 	    .LONG   0							      ;

					      0001C ENDPRS_DESC:

							    .BYTE   48							      ;

					      0001D 	    .BYTE   0							      ;

					      0001E 	    .BYTE   0							      ;

					      0001F 	    .BYTE   0							      ;

					      00020 	    .LONG    <CLIERROR-ENDPRS_DESC>				      ;

					      00024 	    .LONG   0, 0						      ;

					      0002C 	    .LONG   0							      ;

					      00030 	    .LONG   0							      ;

					      00034 	    .LONG   0							      ;

					      00038 SYSQUAL_DESC:

							    .BYTE   28							      ;

					      00039 	    .BYTE    CLI$K_LINK_SYST					      ;

					      0003A 	    .BYTE   0							      ;

					      0003B 	    .BYTE   0							      ;

					      0003C 	    .LONG   0, 0						      ;

					      00044 	    .LONG    <SPECIALIMAGE-SYSQUAL_DESC>			      ;

					      00048 	    .LONG   0							      ;

					      0004C 	    .BYTE   2, 2						      ;

					      0004E 	    .BYTE    LNK$S_DBG						      ;

					      0004F 	    .BYTE   1							      ;

					      00050 	    .BYTE    LNK$S_SYS						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-7

; Digital Equipment Corporation

;

					      00051 	    .BYTE   2							      ;

					      00052 	    .BYTE    LNK$S_TRACE, LNK$S_EXE				      ;

					      00054 SYSLIB_DESC:

							    .BYTE   24							      ;

					      00055 	    .BYTE    CLI$K_LINK_SYSL					      ;

					      00056 	    .BYTE   0							      ;

					      00057 	    .BYTE   0							      ;

					      00058 	    .LONG   0, 0						      ;

					      00060 	    .LONG   0							      ;

					      00064 	    .LONG   0							      ;

					      00068 	    .BYTE   0							      ;

					      00069 	    .BYTE   1							      ;

					      0006A 	    .BYTE    LNK$S_SYSLIB					      ;

					      0006B 	    .BYTE   0							      ;

					      0006C SYSSHR_DESC:

							    .BYTE   24							      ;

					      0006D 	    .BYTE    CLI$K_LINK_SYSS					      ;

					      0006E 	    .BYTE   0							      ;

					      0006F 	    .BYTE   0							      ;

					      00070 	    .LONG   0, 0						      ;

					      00078 	    .LONG   0							      ;

					      0007C 	    .LONG   0							      ;

					      00080 	    .BYTE   0							      ;

					      00081 	    .BYTE   1							      ;

					      00082 	    .BYTE    LNK$S_SYSSHR					      ;

					      00083 	    .BYTE   0							      ;

					      00084 SHRABL_DESC:

							    .BYTE   28							      ;

					      00085 	    .BYTE    CLI$K_LINK_SHAR					      ;

					      00086 	    .BYTE   0							      ;

					      00087 	    .BYTE   0							      ;

					      00088 	    .LONG   0, 0						      ;

					      00090 	    .LONG    <SPECIALIMAGE-SHRABL_DESC>				      ;

					      00094 	    .LONG   0							      ;

					      00098 	    .BYTE   2							      ;

					      00099 	    .BYTE    LNK$S_SYS, LNK$S_DBG				      ;

					      0009B 	    .BYTE   1, 2						      ;

					      0009D 	    .BYTE   2							      ;

					      0009E 	    .BYTE    LNK$S_EXE, LNK$S_TRACE				      ;

					      000A0 DEBUG_DESC:

							    .BYTE   26							      ;

					      000A1 	    .BYTE    CLI$K_LINK_DEBU					      ;

					      000A2 	    .BYTE   0							      ;

					      000A3 	    .BYTE   0							      ;

					      000A4 	    .LONG   0, 0						      ;

					      000AC 	    .LONG    <DEBUGFILE-DEBUG_DESC>				      ;

					      000B0 	    .LONG   0							      ;

					      000B4 	    .BYTE   2							      ;

					      000B5 	    .BYTE    LNK$S_SYS						      ;

					      000B6 	    .BYTE   2							      ;

					      000B7 	    .BYTE   1							      ;

					      000B8 	    .BYTE    LNK$S_DBG						      ;

					      000B9 	    .BYTE   0							      ;

					      000BA TRACE_DESC:

							    .BYTE   24							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-8

; Digital Equipment Corporation

;

					      000BB 	    .BYTE    CLI$K_LINK_TRAC					      ;

					      000BC 	    .BYTE   0							      ;

					      000BD 	    .BYTE   0							      ;

					      000BE 	    .LONG   0, 0						      ;

					      000C6 	    .LONG   0							      ;

					      000CA 	    .LONG   0							      ;

					      000CE 	    .BYTE   0							      ;

					      000CF 	    .BYTE   1							      ;

					      000D0 	    .BYTE    LNK$S_TRACE					      ;

					      000D1 	    .BYTE   0							      ;

					      000D2 CONTIG_DESC:

							    .BYTE   24							      ;

					      000D3 	    .BYTE    CLI$K_LINK_CONT					      ;

					      000D4 	    .BYTE   0							      ;

					      000D5 	    .BYTE   0							      ;

					      000D6 	    .LONG   0, 0						      ;

					      000DE 	    .LONG   0							      ;

					      000E2 	    .LONG   0							      ;

					      000E6 	    .BYTE   0							      ;

					      000E7 	    .BYTE   1							      ;

					      000E8 	    .BYTE    LNK$S_CONTIG					      ;

					      000E9 	    .BYTE   0							      ;

					      000EA IMAGQUALEND:

							    .BYTE   0							      ;

					      000EB	    .BLKB   1

					      000EC IMAGE_DESC:

							    .BYTE   32							      ;

					      000ED 	    .BYTE    LNK$S_IMAGE					      ;

					      000EE 	    .BYTE   0							      ;

					      000EF 	    .BYTE   0							      ;

					      000F0 	    .LONG    <CLIERROR-IMAGE_DESC>				      ;

					      000F4 	    .LONG   0, 0						      ;

					      000FC 	    .LONG    <OUTPUTFILE-IMAGE_DESC>				      ;

					      00100 	    .LONG   0							      ;

					      00104 	    .LONG    <SYSQUAL_DESC-IMAGE_DESC>				      ;

					      00108 CREFQUAL_DESC:

							    .BYTE   25							      ;

					      00109 	    .BYTE    CLI$K_LINK_CROS					      ;

					      0010A 	    .BYTE   0							      ;

					      0010B 	    .BYTE   0							      ;

					      0010C 	    .LONG   0, 0						      ;

					      00114 	    .LONG   0							      ;

					      00118 	    .LONG   0							      ;

					      0011C 	    .BYTE   1							      ;

					      0011D 	    .BYTE    LNK$S_BRIEF					      ;

					      0011E 	    .BYTE   1							      ;

					      0011F 	    .BYTE    LNK$S_CROS						      ;

					      00120 	    .BYTE   0							      ;

					      00121 FULLQUAL_DESC:

							    .BYTE   26							      ;

					      00122 	    .BYTE    CLI$K_LINK_FULL					      ;

					      00123 	    .BYTE   0							      ;

					      00124 	    .BYTE   0							      ;

					      00125 	    .LONG   0, 0						      ;

					      0012D 	    .LONG   0							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-9

; Digital Equipment Corporation

;

					      00131 	    .LONG   0							      ;

					      00135 	    .BYTE   1							      ;

					      00136 	    .BYTE    LNK$S_BRIEF					      ;

					      00137 	    .BYTE   1							      ;

					      00138 	    .BYTE    LNK$S_LONG						      ;

					      00139 	    .BYTE   1							      ;

					      0013A 	    .BYTE    LNK$S_SUPSYS					      ;

					      0013B BRIEFQUAL_DESC:

							    .BYTE   26							      ;

					      0013C 	    .BYTE    CLI$K_LINK_BRIE					      ;

					      0013D 	    .BYTE   0							      ;

					      0013E 	    .BYTE   0							      ;

					      0013F 	    .LONG   0, 0						      ;

					      00147 	    .LONG   0							      ;

					      0014B 	    .LONG   0							      ;

					      0014F 	    .BYTE   2							      ;

					      00150 	    .BYTE    LNK$S_CROS, LNK$S_LONG				      ;

					      00152 	    .BYTE   1							      ;

					      00153 	    .BYTE    LNK$S_BRIEF					      ;

					      00154 	    .BYTE   0							      ;

					      00155 MAPQUALEND:

							    .BYTE   0							      ;

					      00156	    .BLKB   2

					      00158 MAP_DESC:

							    .BYTE   33							      ;

					      00159 	    .BYTE    LNK$S_MAP						      ;

					      0015A 	    .BYTE   0							      ;

					      0015B 	    .BYTE   0							      ;

					      0015C 	    .LONG    <CLIERROR-MAP_DESC>				      ;

					      00160 	    .LONG   0, 0						      ;

					      00168 	    .LONG    <OUTPUTFILE-MAP_DESC>				      ;

					      0016C 	    .LONG   0							      ;

					      00170 	    .LONG    <CREFQUAL_DESC-MAP_DESC>				      ;

					      00174 SSERQUAL_DESC:

							    .BYTE   26							      ;

					      00175 	    .BYTE    CLI$K_LINK_SELE					      ;

					      00176 	    .BYTE   0							      ;

					      00177 	    .BYTE   0							      ;

					      00178 	    .LONG   0, 0						      ;

					      00180 	    .LONG   0							      ;

					      00184 	    .LONG   0							      ;

					      00188 	    .BYTE   2, 4, 1						      ;

					      0018B 	    .BYTE   1, 3						      ;

					      0018D 	    .BYTE   0							      ;

					      0018E INCLUDE_DESC:

							    .BYTE   27							      ;

					      0018F 	    .BYTE    CLI$K_LINK_INCL					      ;

					      00190 	    .BYTE   0							      ;

					      00191 	    .BYTE   0							      ;

					      00192 	    .LONG   0, 0						      ;

					      0019A 	    .LONG    <LIBRFILE-INCLUDE_DESC>				      ;

					      0019E 	    .LONG   0							      ;

					      001A2 	    .BYTE   3, 4, 2, 3						      ;

					      001A6 	    .BYTE   1, 1						      ;

					      001A8 	    .BYTE   0							      ;



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

; Digital Equipment Corporation

;

					      001A9 LIBRQUAL_DESC:

							    .BYTE   27							      ;

					      001AA 	    .BYTE    CLI$K_LINK_LIBR					      ;

					      001AB 	    .BYTE   0							      ;

					      001AC 	    .BYTE   0							      ;

					      001AD 	    .LONG   0, 0						      ;

					      001B5 	    .LONG    <LIBRFILE-LIBRQUAL_DESC>				      ;

					      001B9 	    .LONG   0							      ;

					      001BD 	    .BYTE   3, 4, 2, 3						      ;

					      001C1 	    .BYTE   1, 1						      ;

					      001C3 	    .BYTE   0							      ;

					      001C4 OPTQUAL_DESC:

							    .BYTE   27							      ;

					      001C5 	    .BYTE    CLI$K_LINK_OPTI					      ;

					      001C6 	    .BYTE   0							      ;

					      001C7 	    .BYTE   0							      ;

					      001C8 	    .LONG   0, 0						      ;

					      001D0 	    .LONG    <OPTIONFILE-OPTQUAL_DESC>				      ;

					      001D4 	    .LONG   0							      ;

					      001D8 	    .BYTE   3, 3, 2, 1						      ;

					      001DC 	    .BYTE   1, 4						      ;

					      001DE 	    .BYTE   0							      ;

					      001DF INPUTQUALEND:

							    .BYTE   0							      ;

					      001E0 INPUT_DESC:

							    .BYTE   16							      ;

					      001E1 	    .BYTE   0							      ;

					      001E2 	    .BYTE   1							      ;

					      001E3 	    .BYTE   0							      ;

					      001E4 	    .LONG    <CLIERROR-INPUT_DESC>				      ;

					      001E8 	    .LONG   0, 0						      ;

					      001F0 	    .LONG    <INPUTFILE-INPUT_DESC>				      ;

					      001F4 	    .LONG   0							      ;

					      001F8 	    .LONG    <SSERQUAL_DESC-INPUT_DESC>				      ;

					      001FC SYMTBL_DESC:

							    .BYTE   34							      ;

					      001FD 	    .BYTE    LNK$S_SYMTBL					      ;

					      001FE 	    .BYTE   0							      ;

					      001FF 	    .BYTE   0							      ;

					      00200 	    .LONG    <CLIERROR-SYMTBL_DESC>				      ;

					      00204 	    .LONG   0, 0						      ;

					      0020C 	    .LONG    <OUTPUTFILE-SYMTBL_DESC>				      ;

					      00210 	    .LONG   0							      ;

					      00214 	    .LONG   0							      ;

					      00218 DEBUGGER:

							    .LONG   17							      ;

					      0021C 	    .ADDRESS  P.AAB						      ;

					      00220 OUTFILE:.BLKB   4

					      00224 NEXTRSA:.BLKB   4

					      00228 SHARECLUSTER:

							    .BLKB   4

					      0022C TYPEADR:.ADDRESS  DEFILETYPE					      ;

					      00230 INFILFLGS:

							    .BLKB   1

					      00231 RSAREMSIZE:



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-11

; Digital Equipment Corporation

;

							    .BLKB   1

					      00232 ERRORMESSAGE:

							    .BLKB   1



							    .PSECT  $GLOBAL$,NOEXE,2



					      00000 LNK$GL_CLIWORK::

							    .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



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-12

; Digital Equipment Corporation

;

						    FVM$C_SIZE==	12

						    SYM$C_TBLSIZ==	128

						    SYM$C_SIZE==	42

						    DEFILETYPE=		P.AAA

						    LNK$AL_LBQLDSC==	INCLUDE_DESC

							    .GLOBL  ERM$C_CLOSERR, ERM$C_ENDPRS, ERM$C_FIRSTMOD, ERM$C_INITPRS

							    .GLOBL  ERM$C_LINERR, ERM$C_NOMODS, ERM$C_OPIDERR, ERM$C_PRIMIN

							    .GLOBL  ERM$C_PRIMOUT, ERM$C_SECOUT, ERM$C_SHRINSYS, ERM$C_TRACIGN

							    .GLOBL  ERM$C_TRIOUT, ERM$C_UNMCOD, LNK$S_IMAGE, LNK$S_MAP

							    .GLOBL  LNK$M_MAP, LNK$S_EXE, LNK$S_SYS, LNK$M_SYS, LNK$S_DBG

							    .GLOBL  LNK$M_DBG, LNK$S_CROS, LNK$S_LONG, LNK$M_LONG

							    .GLOBL  LNK$S_BRIEF, LNK$M_BRIEF, LNK$S_PICIMG, LNK$S_SYMTBL

							    .GLOBL  LNK$S_SYSLIB, LNK$M_SYSLIB, LNK$S_SYSSHR, LNK$S_SUPSYS

							    .GLOBL  LNK$S_TRACE, LNK$S_VERIFY, LNK$S_CONTIG, SEV$C_INFOR

							    .GLOBL  SEV$C_DIAG, SEV$C_FATAL, CLI$K_LINK_SYST, CLI$K_LINK_CONT

							    .GLOBL  CLI$K_LINK_SHAR, CLI$K_LINK_DEBU, CLI$K_LINK_TRAC

							    .GLOBL  CLI$K_LINK_CROS, CLI$K_LINK_FULL, CLI$K_LINK_BRIE

							    .GLOBL  CLI$K_LINK_SYSL, CLI$K_LINK_SYSS, CLI$K_LINK_SELE

							    .GLOBL  CLI$K_LINK_INCL, CLI$K_LINK_LIBR, CLI$K_LINK_OPTI

							    .GLOBL  LNK$ALLOBLK, LNK$DEALBLK, LNK$ERRMSG, LNK$PROCOPTNS

							    .GLOBL  LNK$INSERT, LNK$SEARCH, LNK$GL_CTLMSK, LNK$GL_CLULST

							    .GLOBL  LNK$GL_DEFCLU, LNK$GL_CURCLU, LNK$GL_FVMLST, LNK$GL_IMGFIL

							    .GLOBL  LNK$GL_MAPFIL, LNK$GW_NSYMBOLS, LNK$GW_NUDFSYMS

							    .GLOBL  LNK$GL_SYMFIL, LNK$GL_UDFLST



							    .PSECT  $CODE$,NOWRT,2



					 0FCC 00000 	    .ENTRY  LNK$GETCMD, Save R2,R3,R6,R7,R8,R9,R10,R11		      ; 0843

		         56	0000G  CF  9E 00002 	    MOVAB   LNK$GL_DEFCLU+4, R6					      ;

		         57	       00  D0 00007 	    MOVL    #LNK$S_VERIFY, R7					      ;

		         58	       00  D0 0000A 	    MOVL    #LNK$S_TRACE, R8					      ;

		         59	0000'  CF  9E 0000D 	    MOVAB   LNK$GL_CLIWORK, R9					      ;

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

		         5B	0000'  CF  9E 00017 	    MOVAB   ERRORMESSAGE, R11					      ;

		         52	  04   AC  D0 0001C 	    MOVL    ARGLIST, R2						      ; 0861

		         53	  08   A2  D0 00020 	    MOVL    8(R2), R3						      ; 0844

				       59  DD 00024 	    PUSHL   R9							      ; 0863

		         7E	  80   8F  9A 00026 	    MOVZBL  #128, -(SP)						      ;

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

      18   A2	         01	       02  EF 0002F 	    EXTZV   #2, #1, 24(R2), R0					      ; 0864

				       50     00034									      ;

	   01	         57	       50  F0 00035 	    INSV    R0, R7, #1, LNK$GL_CTLMSK				      ;

				       6A     00039									      ;

		         6B	  00G  8F  90 0003A 	    MOVB    #ERM$C_INITPRS, ERRORMESSAGE			      ; 0866

				       69  DD 0003E 	    PUSHL   LNK$GL_CLIWORK					      ; 0867

				FDCE   CB  9F 00040 	    PUSHAB  INITPRS_DESC					      ;

		         63	       02  FB 00044 	    CALLS   #2, (R3)						      ;

		         6B	  00G  8F  90 00047 	    MOVB    #ERM$C_PRIMOUT, ERRORMESSAGE			      ; 0869

		    FF   AB	  40   8F  90 0004B 	    MOVB    #64, RSAREMSIZE					      ; 0870

				  F2   AB  9F 00050 	    PUSHAB  NEXTRSA						      ; 0871

		         7E	  FF   AB  9A 00053 	    MOVZBL  RSAREMSIZE, -(SP)					      ;

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

		    EE   AB	0000G  CF  9E 0005C 	    MOVAB   LNK$GL_IMGFIL, OUTFILE				      ; 0872

				       5A  DD 00062 	    PUSHL   R10							      ; 0873

				       69  DD 00064 	    PUSHL   LNK$GL_CLIWORK					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-13

; Digital Equipment Corporation

;

				FEBA   CB  9F 00066 	    PUSHAB  IMAGE_DESC						      ;

		         63	       03  FB 0006A 	    CALLS   #3, (R3)						      ;

		         6B	  00G  8F  90 0006D 	    MOVB    #ERM$C_SECOUT, ERRORMESSAGE				      ; 0875

		    EE   AB	0000G  CF  9E 00071 	    MOVAB   LNK$GL_MAPFIL, OUTFILE				      ; 0876

				       5A  DD 00077 	    PUSHL   R10							      ; 0877

				       69  DD 00079 	    PUSHL   LNK$GL_CLIWORK					      ;

				FF26   CB  9F 0007B 	    PUSHAB  MAP_DESC						      ;

		         63	       03  FB 0007F 	    CALLS   #3, (R3)						      ;

	   04	         6A	       00  E0 00082 	    BBS     #LNK$S_MAP, LNK$GL_CTLMSK, 1$			      ; 0878

	   00	         6A	       00  E2 00086 	    BBSS    #LNK$S_BRIEF, LNK$GL_CTLMSK, 1$			      ; 0879

		         6B	  00G  8F  90 0008A 1$:     MOVB    #ERM$C_TRIOUT, ERRORMESSAGE				      ; 0881

		    EE   AB	0000G  CF  9E 0008E 	    MOVAB   LNK$GL_SYMFIL, OUTFILE				      ; 0882

				       5A  DD 00094 	    PUSHL   R10							      ; 0883

				       69  DD 00096 	    PUSHL   LNK$GL_CLIWORK					      ;

				  CA   AB  9F 00098 	    PUSHAB  SYMTBL_DESC						      ;

		         63	       03  FB 0009B 	    CALLS   #3, (R3)						      ;

		         6B	  00G  8F  90 0009E 	    MOVB    #ERM$C_PRIMIN, ERRORMESSAGE				      ; 0885

				  FE   AB  9F 000A2 2$:     PUSHAB  INFILFLGS						      ; 0887

				       69  DD 000A5 	    PUSHL   LNK$GL_CLIWORK					      ;

				  AE   AB  9F 000A7 	    PUSHAB  INPUT_DESC						      ;

		         63	       03  FB 000AA 	    CALLS   #3, (R3)						      ;

	   F0	    B1   AB	       01  E0 000AD 	    BBS     #1, INPUT_DESC+3, 2$				      ; 0889

		         6B	  00G  8F  90 000B2 	    MOVB    #ERM$C_ENDPRS, ERRORMESSAGE				      ; 0890

				       69  DD 000B6 	    PUSHL   LNK$GL_CLIWORK					      ; 0891

				FDEA   CB  9F 000B8 	    PUSHAB  ENDPRS_DESC						      ;

		         63	       02  FB 000BC 	    CALLS   #2, (R3)						      ;

				0000G  CF  D5 000BF 	    TSTL    FIRSTCLUSTER					      ; 0892

				       10  12 000C3 	    BNEQ    3$							      ;

				       66  D5 000C5 	    TSTL    LNK$GL_DEFCLU+4					      ; 0893

				       0C  12 000C7 	    BNEQ    3$							      ;

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

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

		  0000G  CF	       02  FB 000D0 	    CALLS   #2, LNK$ERRMSG					      ;

	   04	         6A	       00  E0 000D5 3$:     BBS     #LNK$S_SYS, LNK$GL_CTLMSK, 4$			      ; 0901

	   04	         6A	       02  E1 000D9 	    BBC     #2, LNK$GL_CTLMSK, 5$				      ; 0902

	   00	         6A	       58  E5 000DD 4$:     BBCC    R8, LNK$GL_CTLMSK, 5$				      ; 0903

	   04	         6A	       00  E0 000E1 5$:     BBS     #LNK$S_DBG, LNK$GL_CTLMSK, 6$			      ; 0904

	   26	         6A	       58  E1 000E5 	    BBC     R8, LNK$GL_CTLMSK, 8$				      ; 0905

	   0C	         6A	       58  E0 000E9 6$:     BBS     R8, LNK$GL_CTLMSK, 7$				      ; 0907

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

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

		  0000G  CF	       02  FB 000F4 	    CALLS   #2, LNK$ERRMSG					      ;

		    FE   AB	       20  90 000F9 7$:     MOVB    #32, INFILFLGS					      ; 0909

		    B6   AB	  E6   AB  B0 000FD 	    MOVW    DEBUGGER, INPUT_DESC+8				      ; 0910

		    BA   AB	  EA   AB  D0 00102 	    MOVL    DEBUGGER+4, INPUT_DESC+12				      ; 0911

				  AE   AB  9F 00107 	    PUSHAB  INPUT_DESC						      ; 0912

		  0000V  CF	       01  FB 0010A 	    CALLS   #1, INPUTFILE					      ;

	   00	         6A	       57  E5 0010F 8$:     BBCC    R7, LNK$GL_CTLMSK, 9$				      ; 0914

				       66  D5 00113 9$:     TSTL    LNK$GL_DEFCLU+4					      ; 0915

				       0C  13 00115 	    BEQL    10$							      ;

		  0000G  DF	  FC   A6  9E 00117 	    MOVAB   LNK$GL_DEFCLU, @LASTCLUSTER				      ; 0917

		  0000G  CF	  FC   A6  9E 0011D 	    MOVAB   LNK$GL_DEFCLU, LASTCLUSTER				      ; 0918

					   04 00123 10$:    RET     							      ; 0843



; Routine Size:  292 bytes



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-14

; Digital Equipment Corporation

;





;40700  0922	ROUTINE CLIERROR(REQESTDESC,ERRORCODE) : NOVALUE =

;40800  0923	BEGIN

;40900  0924	!

;41000  0925	! THIS ROUTINE IS CALLED BY RESULT PARSER IF IT DETECTS ANY ERROR.

;41100  0926	! IN THIS COMMAND. REQESTDESC IS THE ADDRESS OF THE CURRENT PARA-

;41200  0927	! METER DESCRIPTOR AND ERRORCODE IS THE ENCODED REASON FOR THE 

;41300  0928	! ERROR.

;41400  0929	!

;41500  0930	MAP	REQESTDESC : REF BLOCK[,BYTE];				! POINTER TO A BLOCK

;41600  0931	!

;41700  0932	LNK$ERRMSG(.ERRORMESSAGE,SEV$C_INFOR,.ERRORCODE);		! FIRST ERROR IS INFORMATIONAL

;41800  0933	LNK$ERRMSG(ERM$C_LINERR,SEV$C_INFOR,.REQESTDESC[CLI$W_RQSIZE],	! ISSUE THE SECOND MESSAGE

;41900  0934				.REQESTDESC[CLI$A_RQADDR]);

;42000  0935	LNK$ERRMSG( .ERRORCODE AND NOT 7,SEV$C_FATAL);

;42100  0936	END;











					 0C00 00124 CLIERROR:

							    .WORD   Save R10,R11					      ; 0922

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

		         5B	       00  D0 0012B 	    MOVL    #SEV$C_INFOR, R11					      ;

				  08   AC  DD 0012E 	    PUSHL   ERRORCODE						      ; 0932

		         7E	       5B  9A 00131 	    MOVZBL  R11, -(SP)						      ;

		         7E	0000'  CF  9A 00134 	    MOVZBL  ERRORMESSAGE, -(SP)					      ;

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

		         50	  04   AC  D0 0013C 	    MOVL    REQESTDESC, R0					      ; 0934

				  0C   A0  DD 00140 	    PUSHL   12(R0)						      ; 0933

		         7E	  08   A0  3C 00143 	    MOVZWL  8(R0), -(SP)					      ;

		         7E	       5B  9A 00147 	    MOVZBL  R11, -(SP)						      ;

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

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

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

	   7E	    08   AC	       07  CB 00154 	    BICL3   #7, ERRORCODE, -(SP)				      ;

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

					   04 0015C 	    RET     							      ; 0922



; Routine Size:  57 bytes





;42200  0937	ROUTINE SPECIALIMAGE(REQESTDESC,CLIADDR) : NOVALUE =

;42300  0938	BEGIN

;42400  0939	!

;42500  0940	! THIS ROUTINE IS CALLED BY CLI IF THE SYSTEM OR SHAREABLE IMAGE

;42600  0941	! QUALIFIER IS SEEN ON THE PRIMARY OUTPUT PARAMETER.

;42700  0942	!

;42800  0943	!	IF A VALUE IS PRESENT ON THE QUALIFIER, CLI IS RE-CALLED

;42900  0944	! THROUGH CLIADDR TO CONVERT THE VALUE WHICH THEN SETS THE BASE ADDRESS OF THE DEFAULT

;43000  0945	! CLUSTER OF THE IMAGE BEING LINKED. IF NO VALUE IS PRESENT THE BASE ADDRESS IS

;43100  0946	! SET TO THE LOWER END OF SYSTEM OR PROCESS SPACE. IN BOTH CASES THE STACK SIZE IS

;43200  0947	! SET TO ZERO. A SYSTEM IMAGE WILL NOT BUT A SHAREABLE IMAGE WILL



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-15

; Digital Equipment Corporation

;

;43300  0948	! HAVE A HEADER.

;43400  0949	!

;43500  0950	EXTERNAL

;43600  0951		LNK$GW_STACK : WORD;			! STACK SIZE

;43700  0952	!

;43800  0953	BIND RECALLCLI = .CLIADDR;			! ADDRESS AT WHICH TO RE-CALL

;43900  0954							! CLI TO CONVERT THE VALUE OF QUALIFIER

;44000  0955	!

;44100  0956	BUILTIN INSQUE,					! INSERT QUEUE FUNCTION

;44200  0957		TESTBITSS;				! BRANCH ON BIT SET AND SET

;44300  0958	!

;44400  0959	MAP REQESTDESC : REF BLOCK[,BYTE];			! SET CORRECT ATTRIBUTES

;44500  0960	!

;44600  0961	LOCAL	BASEVALUE_DESC : BLOCK[CLI$C_REQDESC,BYTE],	! DESCRIPTOR FOR CALL BACK TO CLI

;44700  0962		SYMBOLSTRING : VECTOR[SYM$C_MAXLNG+1,BYTE],	! BASE ADDRESS SYMBOL STOREAGE

;44800  0963		SYMTABENT : REF BLOCK[,BYTE];			! POINTER TO TABLE ENTRY FOR IT

;44900  0964	!

;45000  0965	LNK$GW_STACK = 0;					! NO STACK

;45100  0966	IF .LNK$GL_CTLMSK<LNK$S_SYS,1,0>			! IF A SYSTEM IMAGE

;45200  0967	THEN LNK$GL_FVMLST[FVM$L_ADDRESS] = SYSTEM_SPACE;	! SET FIRST AVAILABLE VIRTUAL MEMORY

;45300  0968	IF .REQESTDESC[CLI$W_QDVALSIZ] EQL 0			! IF THERE WAS NO QUALIFIER VALUE

;45400  0969	THEN RETURN;						! THEN ALL DONE

;45500  0970	IF .LNK$GL_CTLMSK<LNK$S_SHR,1,0>			! IF A SHAREABLE IMAGE

;45600  0971	THEN BEGIN

;45700  0972		IMAGE_DESC[CLI$W_RQSIZE] = .REQESTDESC[CLI$W_QDVALSIZ];	! COPY THE FILENAME DESCRIPTOR

;45800  0973		IMAGE_DESC[CLI$A_RQADDR] = .REQESTDESC[CLI$A_QDVALADR];	! FROM QUALIFIER BLOCK TO THE

;45900  0974		RETURN;							! PARAMETER BLOCK

;46000  0975	     END;

;46100  0976	(LNK$GL_DEFCLU[CLU$W_FLAGS])<CLU$V_BASED> = TRUE;	! OTHERWISE SET THE BIT FOR FIXED IN ADDRESS SPACE

;46200  0977	LNK$GL_CTLMSK<LNK$S_PICIMG,1,0> = FALSE;		! AND IMAGE IS NOT PIC

;46300  0978	BASEVALUE_DESC[CLI$A_ERRACT] = 0;			! THEN SET UP THE DESCRIPTOR

;46400  0979	BASEVALUE_DESC[CLI$B_RQTYPE] = CLI$K_NUMERVAL;		! FOR A RE-CALL OF CLI TO ATTEMPT A NUMERIC

;46500  0980	IF RECALLCLI(BASEVALUE_DESC,.LNK$GL_CLIWORK,		! BASE ADDRESS SPECIFICATION

;46600  0981				.REQESTDESC)			! AND IF THERE WAS A SUCCESSFUL

;46650  0982	THEN BEGIN

;46700  0983		IF (LNK$GL_DEFCLU[CLU$L_BASE] = (.BASEVALUE_DESC[CLI$L_RQVALU] + 511)	! CONVERSION SAVE IT AWAY

;46800  0984					AND NOT 511) LSSU SYSTEM_SPACE		! ROUNDED UP TO NEXT PAGE

;46810  0985		THEN ( IF .LNK$GL_DEFCLU[CLU$L_BASE] GEQU CONTROL_REGION	! IF BELOW SYSTEM SPACE

;46820  0986			THEN LNK$GL_FVMLST[FVM$L_ADDRESS] = CONTROL_REGION	! SET CORRECT ALLOCATION

;46830  0987			ELSE LNK$GL_FVMLST[FVM$L_ADDRESS] = 0;);		! LIMITS

;46840  0988	     END

;46900  0989	ELSE BEGIN								! BUT IF NOT NUMERIC SET UP

;47000  0990		BASEVALUE_DESC[CLI$B_RQTYPE] = CLI$K_ASCIIVAL;			! TO ATTEMPT TO GET A SYMBOLIC

;47100  0991		BASEVALUE_DESC[CLI$A_ERRACT] = CLIERROR - 			! VALUE

;47200  0992					BASEVALUE_DESC;				! TO BINARY

;47300  0993		RECALLCLI(BASEVALUE_DESC,.LNK$GL_CLIWORK,.REQESTDESC);

;47400  0994		IF (SYMBOLSTRING[0] = MINU(.BASEVALUE_DESC[CLI$W_RQSIZE],	! MINIMIZE THE LENGTH

;47500  0995							SYM$C_MAXLNG)) EQL 0	! TO MAX ALLOWED AND IF

;47600  0996		THEN RETURN;							! NULL ASSUME NO SYMBOL

;47700  0997		CH$MOVE(.SYMBOLSTRING[0],.BASEVALUE_DESC[CLI$A_RQADDR],		! OTHERWISE BUILD A COUNTED

;47800  0998				SYMBOLSTRING[1]);				! ASCII STRING THAT LONG

;47900  0999		LNK$SEARCH(SYMBOLSTRING[0],SYMTABENT);				! THEN SEARCH FOR PLACE

;48000  1000		LNK$INSERT(SYMBOLSTRING[0],SYMTABENT);			! TO INSERT IT AND DO THAT

;48100  1001		SYMTABENT[SYM$W_FLAGS] = FALSE;				! CLEAR OUT THE FLAGS

;48200  1002		INSQUE(SYMTABENT[SYM$L_UDFLINK],LNK$GL_UDFLST);		! PUT ON UNDEFINED LIST



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-16

; Digital Equipment Corporation

;

;48300  1003		LNK$GW_NSYMBOLS = .LNK$GW_NSYMBOLS + 1;			! COUNT AS ONE MORE SYMBOL

;48400  1004		LNK$GW_NUDFSYMS = .LNK$GW_NUDFSYMS + 1;			! ALSO STILL AS UNDEFINED

;48500  1005		LNK$GL_DEFCLU[CLU$L_BASE] = .SYMTABENT;				! SAVE THE SYMBOL TABLE ADRESS

;48600  1006		(LNK$GL_DEFCLU[CLU$W_FLAGS])<CLU$V_SYMBAS> = TRUE;		! FLAG AS SYMBOLIC

;48700  1007	     END;						! AND ALL DONE TILL IT IS DEFINED

;48710  1008	LNK$GL_FVMLST[FVM$L_ADDRESS] = .LNK$GL_DEFCLU[CLU$L_BASE]; ! SET FIRST AVAILABLE V.M.

;48800  1009	RETURN;

;48900  1010	END;







							    .GLOBL  LNK$GW_STACK



					 0E3C 0015D SPECIALIMAGE:

							    .WORD   Save R2,R3,R4,R5,R9,R10,R11				      ; 0937

		         59	0000G  CF  9E 0015F 	    MOVAB   LNK$GL_FVMLST, R9					      ;

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

		         5B	0000G  CF  9E 00169 	    MOVAB   LNK$GL_DEFCLU+28, R11				      ;

		         5E	       30  C2 0016E 	    SUBL2   #48, SP						      ;

		         53	  08   AC  D0 00171 	    MOVL    CLIADDR, R3						      ; 0938

				0000G  CF  B4 00175 	    CLRW    LNK$GW_STACK					      ; 0965

	   0B	         6A	       00  E1 00179 	    BBC     #LNK$S_SYS, LNK$GL_CTLMSK, 1$			      ; 0966

		         50	       69  D0 0017D 	    MOVL    LNK$GL_FVMLST, R0					      ; 0967

		    04   A0 80000000   8F  D0 00180 	    MOVL    #-2147483648, 4(R0)					      ;

		         52	  04   AC  D0 00188 1$:     MOVL    REQESTDESC, R2					      ; 0968

				  04   A2  B5 0018C 	    TSTW    4(R2)						      ;

				       01  12 0018F 	    BNEQ    2$							      ;

					   04 00191 	    RET     							      ;

	   0D	         6A	       02  E1 00192 2$:     BBC     #2, LNK$GL_CTLMSK, 3$				      ; 0970

		  0000'  CF	  04   A2  B0 00196 	    MOVW    4(R2), IMAGE_DESC+8					      ; 0972

		  0000'  CF	  08   A2  D0 0019C 	    MOVL    8(R2), IMAGE_DESC+12				      ; 0973

					   04 001A2 	    RET     							      ; 0974

		    08   AB	       01  88 001A3 3$:     BISB2   #1, LNK$GL_DEFCLU+36				      ; 0976

	   00	         6A	       00  E5 001A7 	    BBCC    #LNK$S_PICIMG, LNK$GL_CTLMSK, 4$			      ; 0977

				  18   AE  D4 001AB 4$:     CLRL    BASEVALUE_DESC+4					      ; 0978

		    14   AE	  40   8F  90 001AE 	    MOVB    #64, BASEVALUE_DESC					      ; 0979

				       52  DD 001B3 	    PUSHL   R2							      ; 0980

				0000'  CF  DD 001B5 	    PUSHL   LNK$GL_CLIWORK					      ;

				  1C   AE  9F 001B9 	    PUSHAB  BASEVALUE_DESC					      ;

		         63	       03  FB 001BC 	    CALLS   #3, (R3)						      ;

		         34	       50  E9 001BF 	    BLBC    R0, 7$						      ;

	   50	    20   AE 000001FF   8F  C1 001C2 	    ADDL3   #511, BASEVALUE_DESC+12, R0				      ; 0983

	   09	         00	       00  F0 001CB 	    INSV    #0, #0, #9, R0					      ; 0984

				       50     001CF									      ;

		         6B	       50  D0 001D0 	    MOVL    R0, LNK$GL_DEFCLU+28				      ; 0983

	      80000000   8F	       50  D1 001D3 	    CMPL    R0, #-2147483648					      ; 0984

				       18  1E 001DA 	    BGEQU   6$							      ;

	   50	         69	       04  C1 001DC 	    ADDL3   #4, LNK$GL_FVMLST, R0				      ; 0986

	      40000000   8F	       6B  D1 001E0 	    CMPL    LNK$GL_DEFCLU+28, #1073741824			      ; 0985

				       09  1F 001E7 	    BLSSU   5$							      ;

		         60 40000000   8F  D0 001E9 	    MOVL    #1073741824, (R0)					      ; 0986

				       6F  11 001F0 	    BRB     9$							      ; 0985

				       60  D4 001F2 5$:     CLRL    (R0)						      ; 0987

				       6B  11 001F4 6$:     BRB     9$							      ; 0983

		    14   AE	  41   8F  90 001F6 7$:     MOVB    #65, BASEVALUE_DESC					      ; 0990



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

; Digital Equipment Corporation

;

		         51	FF25   CF  9E 001FB 	    MOVAB   CLIERROR, R1					      ; 0991

		         50	  14   AE  9E 00200 	    MOVAB   BASEVALUE_DESC, R0					      ;

      18   AE	         51	       50  C3 00204 	    SUBL3   R0, R1, BASEVALUE_DESC+4				      ;

				       52  DD 00209 	    PUSHL   R2							      ; 0993

				0000'  CF  DD 0020B 	    PUSHL   LNK$GL_CLIWORK					      ;

				  1C   AE  9F 0020F 	    PUSHAB  BASEVALUE_DESC					      ;

		         63	       03  FB 00212 	    CALLS   #3, (R3)						      ;

		         50	  1C   AE  3C 00215 	    MOVZWL  BASEVALUE_DESC+8, R0				      ; 0994

		         0F	       50  B1 00219 	    CMPW    R0, #15						      ;

				       03  1B 0021C 	    BLEQU   8$							      ;

		         50	       0F  D0 0021E 	    MOVL    #15, R0						      ;

		    04   AE	       50  90 00221 8$:     MOVB    R0, SYMBOLSTRING					      ;

				       50  D5 00225 	    TSTL    R0							      ; 0995

				       3F  13 00227 	    BEQL    10$							      ;

		         50	  04   AE  9A 00229 	    MOVZBL  SYMBOLSTRING, R0					      ; 0997

      05   AE	    20   BE	       50  28 0022D 	    MOVC3   R0, @BASEVALUE_DESC+12, SYMBOLSTRING+1		      ;

				       5E  DD 00233 	    PUSHL   SP							      ; 0999

				  08   AE  9F 00235 	    PUSHAB  SYMBOLSTRING					      ;

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

				       5E  DD 0023D 	    PUSHL   SP							      ; 1000

				  08   AE  9F 0023F 	    PUSHAB  SYMBOLSTRING					      ;

		  0000G  CF	       02  FB 00242 	    CALLS   #2, LNK$INSERT					      ;

		         50	       6E  D0 00247 	    MOVL    SYMTABENT, R0					      ; 1001

				  1E   A0  B4 0024A 	    CLRW    30(R0)						      ;

		  0000G  CF	       60  0E 0024D 	    INSQUE  (R0), LNK$GL_UDFLST					      ; 1002

				0000G  CF  B6 00252 	    INCW    LNK$GW_NSYMBOLS					      ; 1003

				0000G  CF  B6 00256 	    INCW    LNK$GW_NUDFSYMS					      ; 1004

		         6B	       6E  D0 0025A 	    MOVL    SYMTABENT, LNK$GL_DEFCLU+28				      ; 1005

		    08   AB	       02  88 0025D 	    BISB2   #2, LNK$GL_DEFCLU+36				      ; 1006

		         50	       69  D0 00261 9$:     MOVL    LNK$GL_FVMLST, R0					      ; 1008

		    04   A0	       6B  D0 00264 	    MOVL    LNK$GL_DEFCLU+28, 4(R0)				      ;

					   04 00268 10$:    RET     							      ; 0937



; Routine Size:  268 bytes





;49000  1011	ROUTINE DEBUGFILE (REQESTDESC,CLIADDR) : NOVALUE =

;49100  1012	BEGIN

;49200  1013	!

;49300  1014	! CLI CALLS THIS ROUTINE WHEN THE DEBUG QUALIFIER IS SEEN

;49400  1015	! IN THE OUTPUT IMAGE PARAMETER SPECIFICATIIN. IF THERE IS A VALUE

;49500  1016	! PRESENT, CLI IS RE-CALLED (INDIRECTLY THROUGH CLIADDR) TO OBTAIN THE

;49600  1017	! DESCRIPTOR OF THE FILENAME STRING OF A DEBUGGER TO BE USED IN PLACE

;49700  1018	! OF THE SYSTEM DEFAULT DEBUGGER. IF THERE IS NO VALUE THIS ROUTINE

;49800  1019	! SIMPLY RETURNS.

;49900  1020	!

;50000  1021	! NOTE THAT THE FILE WILL BECOME ONE OF THE INPUT FILES AFTER ALL

;50100  1022	! OTHER USER INPUT HAS BEEN GATHERED AND PARSED.

;50200  1023	!

;50300  1024	BIND RECALLCLI = .CLIADDR;					! ADDRESS FOR RE-CALL OF CLI

;50400  1025	LOCAL DBGFILE_DESC : BLOCK[CLI$C_REQDESC,BYTE];			! RE-CALL DESCRIPTOR BLOCK

;50500  1026	!

;50600  1027	IF .DEBUG_DESC[CLI$W_QDVALSIZ] NEQ 0				! IF THERE IS A VALUE

;50700  1028	THEN BEGIN							! INITIALIZE THE

;50800  1029		DBGFILE_DESC[CLI$B_RQTYPE] = CLI$K_ASCIIVAL;		! RE-CALL DESCRIPTOR



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-18

; Digital Equipment Corporation

;

;50900  1030		DBGFILE_DESC[CLI$A_ERRACT] = CLIERROR-DBGFILE_DESC;	! TO OBTAIN THE STRING DESCRIPTOR OF

;51000  1031		RECALLCLI(DBGFILE_DESC,.LNK$GL_CLIWORK,.REQESTDESC);	! THE DEBUGGER FILENAME STRING

;51100  1032		DEBUGGER[0] = .DBGFILE_DESC[CLI$W_RQSIZE];		! AND REPLACE THE DEFAULT DEBUGGER FILENAME

;51200  1033		DEBUGGER[1] = .DBGFILE_DESC[CLI$A_RQADDR];		! DESCRIPTOR WITH THE RESULT.

;51300  1034	    END;

;51400  1035	RETURN;			! AND THAT'S IT

;51500  1036	END;











					 0004 00269 DEBUGFILE:

							    .WORD   Save R2						      ; 1011

		         5E	       1C  C2 0026B 	    SUBL2   #28, SP						      ;

		         52	  08   AC  D0 0026E 	    MOVL    CLIADDR, R2						      ; 1012

				0000'  CF  B5 00272 	    TSTW    DEBUG_DESC+4					      ; 1027

				       2A  13 00276 	    BEQL    1$							      ;

		         6E	  41   8F  90 00278 	    MOVB    #65, DBGFILE_DESC					      ; 1029

		         51	FEA4   CF  9E 0027C 	    MOVAB   CLIERROR, R1					      ; 1030

		         50	       6E  9E 00281 	    MOVAB   DBGFILE_DESC, R0					      ;

      04   AE	         51	       50  C3 00284 	    SUBL3   R0, R1, DBGFILE_DESC+4				      ;

				  04   AC  DD 00289 	    PUSHL   REQESTDESC						      ; 1031

				0000'  CF  DD 0028C 	    PUSHL   LNK$GL_CLIWORK					      ;

				  08   AE  9F 00290 	    PUSHAB  DBGFILE_DESC					      ;

		         62	       03  FB 00293 	    CALLS   #3, (R2)						      ;

		  0000'  CF	  08   AE  3C 00296 	    MOVZWL  DBGFILE_DESC+8, DEBUGGER				      ; 1032

		  0000'  CF	  0C   AE  D0 0029C 	    MOVL    DBGFILE_DESC+12, DEBUGGER+4				      ; 1033

					   04 002A2 1$:     RET     							      ; 1011



; Routine Size:  58 bytes





;51600  1037	ROUTINE OUTPUTFILE (REQESTDESC) : NOVALUE =

;51700  1038	BEGIN

;51800  1039	!

;51900  1040	! THIS ROUTINE IS CALLED BY CLI IF AN OUTPUT FILE IS TO

;52000  1041	! BE CREATED. THE VARIABLE "OUTFILE" POINTS TO THE CELL WHICH IS

;52100  1042	! TO RECEIVE THE ADDRESS OF THE FILE DESCRIPTOR BLOCK FOR THE PARTICULAR

;52200  1043	! OUTPUT FILE.

;52300  1044	!

;52400  1045	MAP	REQESTDESC : REF BLOCK[,BYTE];			! REALLY A POINTER

;52500  1046	BIND	FILDESC = .OUTFILE : REF BLOCK[,BYTE];		! POINT TO THE POINTER

;52600  1047	!

;52700  1048	LNK$ALLOFDB(FILDESC);					! ALLOCATE A FILE DESCRIPTOR

;52800  1049	FILDESC[FDB$Q_USRNAMDSC] = .REQESTDESC[CLI$W_RQSIZE];	! INSERT THE PARAMETER DESCRIPTOR

;52900  1050	FILDESC[FDB$Q_USRNAMDSC] + 4 = .REQESTDESC[CLI$A_RQADDR];	! ... BOTH LONGWORDS OF IT

;53000  1051	RETURN;								! AND WE ARE ALL DONE

;53100  1052	END;











					 0004 002A3 OUTPUTFILE:



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-19

; Digital Equipment Corporation

;

							    .WORD   Save R2						      ; 1037

		         52	0000'  CF  D0 002A5 	    MOVL    OUTFILE, R2						      ; 1038

				       52  DD 002AA 	    PUSHL   R2							      ; 1048

		  0000V  CF	       01  FB 002AC 	    CALLS   #1, LNK$ALLOFDB					      ;

		         50	       62  D0 002B1 	    MOVL    (R2), R0						      ; 1049

		         51	  0B   A0  9E 002B4 	    MOVAB   11(R0), R1						      ;

		         50	  04   AC  D0 002B8 	    MOVL    REQESTDESC, R0					      ;

		         61	  08   A0  3C 002BC 	    MOVZWL  8(R0), (R1)						      ;

		    04   A1	  0C   A0  D0 002C0 	    MOVL    12(R0), 4(R1)					      ; 1050

					   04 002C5 	    RET     							      ; 1037



; Routine Size:  35 bytes





;53200  1053	ROUTINE LIBRFILE (REQESTDESC) : NOVALUE =

;53300  1054	BEGIN

;53400  1055	!

;53500  1056	! THIS ROUTINE IS CALLED BY CLI IF THE LIBRARY INPUT FILE

;53600  1057	! QUALIFIER IS SEEN ON AN INPUT PARAMETER.

;53700  1058	!

;53800  1059	MAP	REQESTDESC : REF BLOCK[,BYTE];			! POINTER TO A BLOCK

;53900  1060	!

;54000  1061	BIND	LIBFILTYPE = UPLIT(BYTE('.OLB'));		! LIBRARY FILE TYPE

;54100  1062	!

;54200  1063	IF .REQESTDESC[CLI$W_QDVALSIZ] NEQ 0			! IF THE QUALIFIER HAS A VALUE,

;54300  1064	THEN BEGIN

;54400  1065		INFILFLGS<LNK$S_LIBEXTR,1,0> = TRUE;		! THIS IS AN EXPLICIT EXTRACT

;54500  1066		LNK$AL_LBQLDSC[CLI$W_QDVALSIZ] = .REQESTDESC[CLI$W_QDVALSIZ];	! SO COPY THE DESCRIPTOR OF THE INCLUSION

;54600  1067		LNK$AL_LBQLDSC[CLI$A_QDVALADR] = .REQESTDESC[CLI$A_QDVALADR];	! MODULE LIST SO LAST ONE WINS

;54700  1068	     END

;54800  1069	ELSE BEGIN						! IF NO VALUE, JUST A SEARCH TO RESOLVE SYMBOLS

;54900  1070		IF .LNK$GL_CLULST[0] EQL 0			! IF NO PRECEDING CLUSTERS

;55000  1071		AND .LNK$GL_CURCLU[CLU$L_FSTFDB] EQL 0		! AND NO FILES IN CURRENT CLUSTER

;55100  1072		AND NOT .INFILFLGS<LNK$S_LIBEXTR,1,0>		! AND NOT EXPLICIT INCLUSION FROM THE

;55200  1073		THEN LNK$ERRMSG(ERM$C_FIRSTMOD,SEV$C_FATAL);	! FILE GIVE UP WITH AN ERROR

;55300  1074		INFILFLGS<LNK$S_LIBSRCH,1,0> = TRUE;		! SINCE MUST HAVE AT LEAST ONE MODULE

;55400  1075	     END;

;55500  1076	TYPEADR = CH$PTR(LIBFILTYPE);				! SET ADDRESS OF DEFAULT FILE TYPE

;55600  1077	RETURN;

;55700  1078	END;







							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00018 P.AAC:  .ASCII  \.OLB\						      ;



						    LIBFILTYPE=		P.AAC





							    .PSECT  $CODE$,NOWRT,2



					 0800 002C6 LIBRFILE:

							    .WORD   Save R11						      ; 1053

		         5B	0000'  CF  9E 002C8 	    MOVAB   INFILFLGS, R11					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-20

; Digital Equipment Corporation

;

		         50	  04   AC  D0 002CD 	    MOVL    REQESTDESC, R0					      ; 1063

				  04   A0  B5 002D1 	    TSTW    4(R0)						      ;

				       12  13 002D4 	    BEQL    1$							      ;

		         6B	  40   8F  88 002D6 	    BISB2   #64, INFILFLGS					      ; 1065

		  FF62   CB	  04   A0  B0 002DA 	    MOVW    4(R0), LNK$AL_LBQLDSC+4				      ; 1066

		  FF66   CB	  08   A0  D0 002E0 	    MOVL    8(R0), LNK$AL_LBQLDSC+8				      ; 1067

				       24  11 002E6 	    BRB     3$							      ; 1063

				0000G  CF  D5 002E8 1$:     TSTL    LNK$GL_CLULST					      ; 1070

				       1A  12 002EC 	    BNEQ    2$							      ;

		         50	0000G  CF  D0 002EE 	    MOVL    LNK$GL_CURCLU, R0					      ; 1071

				  04   A0  D5 002F3 	    TSTL    4(R0)						      ;

				       10  12 002F6 	    BNEQ    2$							      ;

	   0C	         6B	       06  E0 002F8 	    BBS     #6, INFILFLGS, 2$					      ; 1072

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

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

		  0000G  CF	       02  FB 00303 	    CALLS   #2, LNK$ERRMSG					      ;

		         6B	  80   8F  88 00308 2$:     BISB2   #128, INFILFLGS					      ; 1074

		    FC   AB	0000'  CF  9E 0030C 3$:     MOVAB   LIBFILTYPE, TYPEADR					      ; 1076

					   04 00312 	    RET     							      ; 1053



; Routine Size:  77 bytes





;55800  1079	ROUTINE OPTIONFILE (REQSTDESC) : NOVALUE =

;55900  1080	BEGIN

;56000  1081	!

;56100  1082	! SET THE DEFAULT FILE TYPE FOR LINK TIME OPTIONS

;56200  1083	!

;56300  1084	BIND	OPTFILTYPE = UPLIT(BYTE('.OPT'));

;56400  1085	!

;56500  1086	TYPEADR = CH$PTR(OPTFILTYPE);

;56600  1087	RETURN;

;56700  1088	END;







							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      0001C P.AAD:  .ASCII  \.OPT\						      ;



						    OPTFILTYPE=		P.AAD





							    .PSECT  $CODE$,NOWRT,2



					 0000 00313 OPTIONFILE:

							    .WORD   Save nothing					      ; 1079

		  0000'  CF	0000'  CF  9E 00315 	    MOVAB   OPTFILTYPE, TYPEADR					      ; 1086

					   04 0031C 	    RET     							      ; 1079



; Routine Size:  10 bytes





;56800  1089	GLOBAL ROUTINE LNK$SETSHRBLIN (REQSTDESC) : NOVALUE =

;56900  1090	BEGIN



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-21

; Digital Equipment Corporation

;

;57000  1091	!

;57100  1092	! ALLOCATE A CLUSTER DESCRIPTOR FOR SHAREABLE IMAGES AND SET THE

;57200  1093	! COPY/NOCOPY INDICATOR.

;57300  1094	! SET THE DEFAULT FILE TYPE FOR SHAREABLE IMAGES

;57400  1095	!

;57500  1096	EXTERNAL LITERAL

;57600  1097		ERM$C_ILLQUAVAL : BYTLIT;				! ILLEGAL QUALIFIER VALUE

;57700  1098	MAP	REQSTDESC : REF BLOCK[,BYTE];

;57800  1099	BIND	SHRFILTYPE = UPLIT(BYTE('.EXE')),

;57900  1100		NOCOPY = UPLIT(BYTE(%C'N' OR %X'80'),BYTE('OC')),

;58000  1101		COPY = UPLIT(BYTE(%C'C' OR %X'80'));

;58100  1102	!

;58200  1103	LOCAL	COPYFLAG;

;58300  1104	!

;58400  1105	IF .LNK$GL_CTLMSK<LNK$S_SYS,1,0>				! IF THIS IS A SYSTEM IMAGE,

;58500  1106	THEN LNK$ERRMSG(ERM$C_SHRINSYS,SEV$C_FATAL);			! THEN SHAREABLE INPUT NOT PERMITTED

;58600  1107	IF .REQSTDESC[CLI$W_QDVALSIZ] EQL 0				! IF NO VALUE ON QUALIFIER

;58700  1108	THEN COPYFLAG = FALSE						! SECTIONS WILL NOT BE COPIED

;58800  1109	ELSE BEGIN

;58900  1110		BIND FIRSTCHAR = .REQSTDESC[CLI$A_QDVALADR] : BYTE;	! POINT TO FIRST CHARACTER

;59000  1111		FIRSTCHAR = .FIRSTCHAR OR %X'80';			! SET MAGIC BIT

;59100  1112		IF NOT CH$FAIL(CH$FIND_SUB(.REQSTDESC[CLI$W_QDVALSIZ],FIRSTCHAR,	! AND SEARCH FOR THE KEYWORD "NOCOPY"

;59200  1113					3,NOCOPY))

;59300  1114		THEN COPYFLAG = FALSE					! SETTING FLAG

;59400  1115		ELSE IF NOT CH$FAIL(CH$FIND_SUB(.REQSTDESC[CLI$W_QDVALSIZ],FIRSTCHAR, ! OTHERWISE SEARCH FOR "COPY"

;59500  1116					1,COPY))

;59600  1117			THEN COPYFLAG = TRUE				! SETTING FLAG

;59700  1118			ELSE BEGIN					! AND IF THAT FAILS

;59800  1119				FIRSTCHAR = .FIRSTCHAR AND NOT		! WE HAVE A SYNTAX ERROR

;59900  1120						%X'80';			! SO REPAIR STRING

;60000  1121				LNK$ERRMSG(ERM$C_ILLQUAVAL,		! AND OUTPUT

;60100  1122						SEV$C_DIAG);		! THE ERROR

;60200  1123				LNK$ERRMSG(ERM$C_LINERR,

;60300  1124					SEV$C_FATAL,.REQSTDESC[CLI$W_QDVALSIZ],

;60400  1125					.REQSTDESC[CLI$A_QDVALADR]);

;60500  1126			     END;					! WHICH NEVER RETURNS

;60550  1127		FIRSTCHAR = .FIRSTCHAR AND NOT %X'80';			! REPAIR THE FIRST CHARACTER

;60600  1128	     END;

;60700  1129	LNK$ALLOCLUSTER(SHARECLUSTER);				! ALLOCATE A CLUSTER DESCRIPTOR

;60800  1130	(SHARECLUSTER[CLU$W_FLAGS])<CLU$V_SHRIMG> = TRUE;	! FLAGS AS SHAREABLE IMAGE

;60900  1131	(SHARECLUSTER[CLU$W_FLAGS])<CLU$V_COPY> = .COPYFLAG;	! PROPAGATE COPY INDICATOR

;61000  1132	TYPEADR = CH$PTR(SHRFILTYPE);				! SET DEFAULT FILE TYPE POINTER

;61100  1133	RETURN;

;61200  1134	END;







							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00020 P.AAE:  .ASCII  \.EXE\						      ;

					      00024 P.AAF:  .BYTE   -50							      ;

					      00025 	    .ASCII  \OC\						      ;

					      00027	    .BLKB   1

					      00028 P.AAG:  .BYTE   -61							      ;

					      00029	    .BLKB   3



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

; Digital Equipment Corporation

;



						    SHRFILTYPE=		P.AAE

						    NOCOPY=		P.AAF

						    COPY=		P.AAG

							    .GLOBL  ERM$C_ILLQUAVAL



							    .PSECT  $CODE$,NOWRT,2



					 0C7C 0031D 	    .ENTRY  LNK$SETSHRBLIN, Save R2,R3,R4,R5,R6,R10,R11		      ; 1089

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

		         5B	       00  D0 00324 	    MOVL    #SEV$C_FATAL, R11					      ;

	   0A	  0000G  CF	       00  E1 00327 	    BBC     #LNK$S_SYS, LNK$GL_CTLMSK, 1$			      ; 1105

		         7E	       5B  9A 0032D 	    MOVZBL  R11, -(SP)						      ; 1106

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

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

		         54	  04   AC  D0 00337 1$:     MOVL    REQSTDESC, R4					      ; 1107

				  04   A4  B5 0033B 	    TSTW    4(R4)						      ;

				       04  12 0033E 	    BNEQ    2$							      ;

				       56  D4 00340 	    CLRL    COPYFLAG						      ; 1108

				       5F  11 00342 	    BRB     8$							      ; 1107

		         55	  08   A4  D0 00344 2$:     MOVL    8(R4), R5						      ; 1109

		         65	  80   8F  88 00348 	    BISB2   #128, (R5)						      ; 1111

      04   A4	  0000'  CF	       03  39 0034C 	    MATCHC  #3, NOCOPY, 4(R4), (R5)				      ; 1112

				       65     00353									      ;

				       03  13 00354 	    BEQL    3$							      ;

		         53	       03  D0 00356 	    MOVL    #3, R3						      ;

		         53	       03  C2 00359 3$:     SUBL2   #3, R3						      ;

				       04  13 0035C 	    BEQL    4$							      ; 1113

				       56  D4 0035E 	    CLRL    COPYFLAG						      ; 1114

				       39  11 00360 	    BRB     7$							      ; 1112

      04   A4	  0000'  CF	       01  39 00362 4$:     MATCHC  #1, COPY, 4(R4), (R5)				      ; 1115

				       65     00369									      ;

				       03  13 0036A 	    BEQL    5$							      ;

		         53	       01  D0 0036C 	    MOVL    #1, R3						      ;

				       53  D7 0036F 5$:     DECL    R3							      ;

				       05  13 00371 	    BEQL    6$							      ; 1116

		         56	       01  D0 00373 	    MOVL    #1, COPYFLAG					      ; 1117

				       23  11 00376 	    BRB     7$							      ; 1115

	   65	         07	       00  EF 00378 6$:     EXTZV   #0, #7, (R5), R0					      ; 1119

				       50     0037C									      ;

		         65	       50  90 0037D 	    MOVB    R0, (R5)						      ;

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

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

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

				  08   A4  DD 0038A 	    PUSHL   8(R4)						      ; 1123

		         7E	  04   A4  3C 0038D 	    MOVZWL  4(R4), -(SP)					      ;

		         7E	       5B  9A 00391 	    MOVZBL  R11, -(SP)						      ;

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

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

	   65	         07	       00  EF 0039B 7$:     EXTZV   #0, #7, (R5), R0					      ; 1127

				       50     0039F									      ;

		         65	       50  90 003A0 	    MOVB    R0, (R5)						      ;

				0000'  CF  9F 003A3 8$:     PUSHAB  SHARECLUSTER					      ; 1129

		  0000V  CF	       01  FB 003A7 	    CALLS   #1, LNK$ALLOCLUSTER					      ;

		         50	0000'  CF  D0 003AC 	    MOVL    SHARECLUSTER, R0					      ; 1130



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 2-23

; Digital Equipment Corporation

;

		    24   A0	       04  88 003B1 	    BISB2   #4, 36(R0)						      ;

	   01	         04	       56  F0 003B5 	    INSV    COPYFLAG, #4, #1, 36(R0)				      ; 1131

				  24   A0     003B9									      ;

		  0000'  CF	0000'  CF  9E 003BB 	    MOVAB   SHRFILTYPE, TYPEADR					      ; 1132

					   04 003C2 	    RET     							      ; 1089



; Routine Size:  166 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 3

; Digital Equipment Corporation

;

;00100  1135	ROUTINE INPUTFILE (REQSTDESC) : NOVALUE =

;00200  1136	BEGIN

;00300  1137	!

;00400  1138	! THIS ROUTINE IS CALLED BY CLI FOR EACH FILE IN THE COMMAND

;00500  1139	! INPUT PARAMETER LIST.

;00600  1140	!

;00700  1141	!	THE ROUTINE ALLOCATES AN INTERNAL FILE DESCRIPTOR BLOCK

;00800  1142	!	THEN, USING THE INPUT FILE FAB ALLOCATED IN THE 

;00900  1143	!	COMMAND PROCESSING DRIVER ROUINE ATTEMPTS TO OPEN

;01000  1144	!	THE SPECIFIED FILE.

;01100  1145	!

;01200  1146	!	IF THIS IS SUCCESSFUL, THE AUXILIARY FILENAME BLOCK PART

;01300  1147	!	OF OUR FDB IS INITIALIZED BY RMS. OTHER USEFUL 

;01400  1148	!	FIELDS OF THE FDB (SUCH AS THE FILE FLAGS) ARE INITIALIZED

;01500  1149	!	THEN THE FDB IS ADDED TO THE FDB LIST. THE FILE IS

;01600  1150	!	THEN CLOSED, SO THAT AN OPEN BY FILE ID MAY BE PERFORMED

;01700  1151	!	ON THE FILE HEREAFTER.

;01800  1152	!

;01900  1153	!	FAILURE TO OPEN THE FILE AT THIS POINT IS FATAL AND

;02000  1154	!	THE LINK ABORTS.

;02100  1155	!

;02200  1156	!	REQSTDESC IS THE ADDRESS OF THE INPUT PARAMETER

;02300  1157	!	DESCRIPTOR BEING USED BY CLI.

;02400  1158	!

;02500  1159	!	INFILFLGS CONTAINS THE SETTINGS OF THE INPUT

;02600  1160	!	FILE CONTROL FLAGS AS DETERMINED BY THE CLI AND

;02700  1161	!	QUALIFIERS USED.

;02800  1162	!

;02900  1163	LITERAL	MAXOPTRECLEN = 132;				! MAXIMUM LENGTH OF OPTION FILE RECORDS

;03000  1164	!

;03100  1165	MAP	REQSTDESC : REF BLOCK[,BYTE];			! REALLY A POINTER

;03200  1166	!

;03300  1167	OWN	RELNAMBLK;					! THE PREVIOUS FILE AT THIS OPTION

;03400  1168								! FILE LEVEL IS ALSO THE

;03500  1169								! RELATED FILE FOR STICKY DEVICE

;03600  1170								! AND DIRECTORY

;03700  1171	LOCAL	FILDESBLK : REF BLOCK[,BYTE],			! POINTER TO FDB

;03800  1172		AUXFNB : REF BLOCK[,BYTE],			! AUXILIARY FILE NAME BLOCK POINTER

;03900  1173		INPUT_FAB : BLOCK[FAB$C_BLN,BYTE],		! FAB FOR THE FILE OPENS.

;04000  1174		OPTIONRAB : BLOCK[RAB$C_BLN,BYTE],		! RAB FOR OPTION FILE INPUT STREAM

;04100  1175		ERRORCODE;					! RMS ERROR CODE

;04200  1176	!

;04300  1177	CH$FILL(0,FAB$C_BLN,INPUT_FAB);				! CLEAR THE INPUT FILE FAB

;04400  1178	LNK$ALLOFDB(FILDESBLK);					! GO ALLOCATE NEW FILE DESCRIPTOR

;04500  1179	AUXFNB = FILDESBLK[FDB$AL_AUXFNB];			! POINT TO FILENAME BLOCK PART

;04600  1180	IF NOT .INFILFLGS<LNK$S_DEBUGER,1,0>			! AND IF THIS IS NOT THE DEBUGGER

;04700  1181	THEN AUXFNB[NAM$L_RLF] = .RELNAMBLK			! SET THE RELATED FILE TO PREVIOUS

;04800  1182	ELSE AUXFNB[NAM$L_RLF] = 0;				! NO RELATED FILE FOR DEBUGGER

;04900  1183	FILDESBLK[FDB$B_FILFLGS] = .INFILFLGS AND NOT LNK$M_NEWUDF;	! COPY THE FLAGS TURNING OFF BIT 0

;05000  1184	IF .INFILFLGS<LNK$S_LIBEXTR,1,0>				! IF EXPLICIT MODULE EXTRACTION

;05100  1185	THEN BEGIN

;05200  1186		FILDESBLK[FDB$W_LIBLSTLNG] = .LNK$AL_LBQLDSC[CLI$W_QDVALSIZ];	! COPY THE PARAMETER DESCRIPTOR

;05300  1187		FILDESBLK[FDB$L_OMDLST] = .LNK$AL_LBQLDSC[CLI$A_QDVALADR];	! LENGTH AND ADDRESS FOR LATER

;05400  1188	      END;

;05500  1189	INFILFLGS = 0;							! AND THEN RESET THEM



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 3-1

; Digital Equipment Corporation

;

;05600  1190	INPUT_FAB[FAB$B_BLN] = FAB$C_BLN;				! IDENTIFY IT TO RMS AS A FAB

;05700  1191	INPUT_FAB[FAB$B_BID] = FAB$C_BID;				! WITH IDENT AND LENGTH

;05800  1192	INPUT_FAB[FAB$V_GET] = TRUE;					! SET FOR GETS

;05900  1193	FILDESBLK[FDB$Q_USRNAMDSC] = .REQSTDESC [CLI$W_RQSIZE];	! COPY THE USER'S FILENAME

;06000  1194	INPUT_FAB[FAB$B_FNS] = .REQSTDESC [CLI$W_RQSIZE];		! DESCRIPTOR INTO BOTH

;06100  1195	FILDESBLK[FDB$Q_USRNAMDSC]+4 = .REQSTDESC[CLI$A_RQADDR];	! THE FDB AND FAB

;06200  1196	INPUT_FAB[FAB$L_FNA] = .REQSTDESC[CLI$A_RQADDR];		! THEN

;06300  1197	INPUT_FAB[FAB$L_NAM] = .AUXFNB;					! SET ADDRESS OF AUXILIARY

;06400  1198									! FILE NAME BLOCK IN FAB

;06500  1199	INPUT_FAB[FAB$L_DNA] = .TYPEADR;				! SET ADDRESS OF DEFAULT FILE NAME STRING

;06600  1200	INPUT_FAB[FAB$B_DNS] = TYPELEN;					! AND LENGTH AS THE DEFAULT FILE TYPE ONLY

;06700  1201	IF (ERRORCODE = $OPEN(FAB = INPUT_FAB))NEQ RMS$_NORMAL 		! NOW ATTEMPT THE OPEN

;06800  1202	OR NOT BEGIN							! AND THE CONNECT IF THIS

;06900  1203		IF NOT .(FILDESBLK[FDB$B_FILFLGS])<LNK$S_OPTION,1,0>	! IS AN OPTION FILE

;07000  1204		THEN BEGIN						! BUT IF IT IS NOT

;07100  1205			LOCAL LASTFDB : REF BLOCK[,BYTE];

;07200  1206			IF .(FILDESBLK[FDB$B_FILFLGS])<LNK$S_SHR,1,0>	! THEN IF SHAREABLE

;07300  1207			THEN BEGIN

;07400  1208				LASTFDB = .SHARECLUSTER[CLU$L_LSTFDB];	! GET ADDRESS OF FDB AT THE END

;07500  1209				SHARECLUSTER[CLU$L_LSTFDB] = .FILDESBLK; ! AND THIS NEW ONE BECOMES

;07600  1210			     END					! END OF ITS LIST

;07700  1211			ELSE BEGIN

;07800  1212				LASTFDB = .LNK$GL_CURCLU[CLU$L_LSTFDB];	! OTHERWISE SET UP TO PUT ON

;07900  1213				LNK$GL_CURCLU[CLU$L_LSTFDB] = .FILDESBLK; ! END OF CURRENT CLUSTER

;08000  1214			     END;

;08100  1215			LASTFDB[FDB$L_NXTFDB] = .FILDESBLK;		! AND DO SO

;08200  1216			RELNAMBLK = .AUXFNB;				! AND THIS FILENAME BLOCK IS THE RELATED FOR NEXT

;08300  1217			TRUE

;08400  1218		     END

;08500  1219		ELSE BEGIN

;08600  1220			CH$FILL(0,RAB$C_BLN,OPTIONRAB);			! INITIALIZE THE RAB

;08700  1221			OPTIONRAB[RAB$B_BLN] = RAB$C_BLN;		! AND IDENTIFY AS SUCH WITH

;08800  1222			OPTIONRAB[RAB$B_BID] = RAB$C_BID;		! LENGTH AND ID

;08900  1223			OPTIONRAB[RAB$L_FAB] = INPUT_FAB;		! POINT IT TO THE FAB

;09000  1224			OPTIONRAB[RAB$W_USZ] = MAXOPTRECLEN;		! SET AREA FOR RECORDS CROSS-

;09100  1225			LNK$ALLOBLK(MAXOPTRECLEN,OPTIONRAB[RAB$L_UBF]);	! ING BLOCK BOUNDARIES

;09200  1226			OPTIONRAB[RAB$B_RAC] = RAB$C_SEQ;		! READ SEQUENTIALLY

;09300  1227			OPTIONRAB[RAB$V_LOC] = TRUE;			! IN LOCATE MODE

;09400  1228			IF (ERRORCODE = $CONNECT(RAB=OPTIONRAB))	! AND DO IT

;09500  1229			THEN BEGIN					! AND IF CONNECTED OK

;09600  1230				TYPEADR = CH$PTR(DEFILETYPE);		! RESET THE DEFAULT FILE TYPE

;09700  1231				RELNAMBLK = 0;				! BLOCK THEN RESET TO NONE

;09800  1232				LNK$PROCOPTNS(.REQSTDESC,INFILFLGS,OPTIONRAB); ! AND GO PROCESS IT

;09900  1233				RELNAMBLK = .AUXFNB;					! RESTORE RELATED FILE

;10000  1234				LNK$DEALBLK(.OPTIONRAB[RAB$W_USZ],.OPTIONRAB[RAB$L_UBF]);	! AND DEALLOCATE

;10100  1235				LNK$GL_CURCLU = LNK$GL_DEFCLU;			! AND RESET DEFAULT AS CURRENT

;10200  1236				TRUE						! THE BUFFER

;10300  1237			     END

;10400  1238		     END

;10500  1239	       END

;10600  1240	THEN BEGIN							! AND IF IT FAILS REPORT

;10700  1241		LNK$ERRMSG(ERM$C_OPIDERR, SEV$C_DIAG,0,		! THE ERROR, WHICH IS

;10800  1242				.AUXFNB[NAM$B_ESL],			! FIRST THE ONE WITH

;10900  1243				.AUXFNB[NAM$L_ESA]);			! THE EXPANDED NAME AS FAR AS

;11000  1244		LNK$ERRMSG(ERM$C_UNMCOD, SEV$C_DIAG,			! RMS GOT AND THEN WITH



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 3-2

; Digital Equipment Corporation

;

;11100  1245				FILDESBLK[FDB$Q_USRNAMDSC],		! THE USER'S NAME AND

;11200  1246				.ERRORCODE);				! THE ERROR CODE AND FATAL

;11210  1247		LNK$ERRMSG(.ERRORCODE AND NOT 7,SEV$C_FATAL,

;11220  1248				.INPUT_FAB[FAB$L_STV]);

;11300  1249	     END;

;11400  1250	IF (ERRORCODE=$CLOSE (FAB=INPUT_FAB)) NEQ RMS$_NORMAL		! THEN CLOSE FILE, PRESERVING

;11410  1251	THEN BEGIN

;11500  1252		LNK$ERRMSG(ERM$C_CLOSERR,SEV$C_DIAG,			! THE AUXILIARY FNB REPORT

;11600  1253			.AUXFNB[NAM$B_RSL],.AUXFNB[NAM$L_RSA],		! A CLOSE ERROR BUT TRY

;11700  1254			.ERRORCODE);					! TO PROCEED ANYWAY

;11710  1255		LNK$ERRMSG(.ERRORCODE AND NOT 7,SEV$C_DIAG,

;11720  1256			.INPUT_FAB[FAB$L_STV]);

;11730  1257	     END;

;11800  1258	TYPEADR = CH$PTR(DEFILETYPE);					! RESET THE DEFAULT FILE TYPE

;11900  1259	RETURN;

;12000  1260	END;







							    .PSECT  $OWN$,NOEXE,2



					      00233	    .BLKB   1

					      00234 RELNAMBLK:

							    .BLKB   4



							    .GLOBL  SYS$OPEN, SYS$CONNECT, SYS$CLOSE



							    .PSECT  $CODE$,NOWRT,2



					 0FFC 003C3 INPUTFILE:

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

		         5A	       00  D0 003C5 	    MOVL    #SEV$C_DIAG, R10					      ;

		         5B	0000'  CF  9E 003C8 	    MOVAB   INFILFLGS, R11					      ;

		         5E	FF68   CE  9E 003CD 	    MOVAB   -152(SP), SP					      ;

	   00	         6E	       00  2C 003D2 	    MOVC5   #0, (SP), #0, #80, INPUT_FAB			      ; 1177

		    48   AE	0050   8F     003D6									      ;

				       5E  DD 003DB 	    PUSHL   SP							      ; 1178

		  0000V  CF	       01  FB 003DD 	    CALLS   #1, LNK$ALLOFDB					      ;

		         52	       6E  D0 003E2 	    MOVL    FILDESBLK, R2					      ; 1179

	   57	         52	       13  C1 003E5 	    ADDL3   #19, R2, AUXFNB					      ;

	   07	         6B	       05  E0 003E9 	    BBS     #5, INFILFLGS, 1$					      ; 1180

		    10   A7	  04   AB  D0 003ED 	    MOVL    RELNAMBLK, 16(AUXFNB)				      ; 1181

				       03  11 003F2 	    BRB     2$							      ; 1180

				  10   A7  D4 003F4 1$:     CLRL    16(AUXFNB)						      ; 1182

      0A   A2	         6B	       01  8B 003F7 2$:     BICB3   #1, INFILFLGS, 10(R2)				      ; 1183

	   0C	         6B	       06  E1 003FC 	    BBC     #6, INFILFLGS, 3$					      ; 1184

		    08   A2	FF62   CB  B0 00400 	    MOVW    LNK$AL_LBQLDSC+4, 8(R2)				      ; 1186

		    04   A2	FF66   CB  D0 00406 	    MOVL    LNK$AL_LBQLDSC+8, 4(R2)				      ; 1187

				       6B  94 0040C 3$:     CLRB    INFILFLGS						      ; 1189

		    48   AE	5003   8F  B0 0040E 	    MOVW    #20483, INPUT_FAB					      ; 1191

		    5E   AE	       02  88 00414 	    BISB2   #2, INPUT_FAB+22					      ; 1192

		         59	  0B   A2  9E 00418 	    MOVAB   11(R2), R9						      ; 1193

		         56	  04   AC  D0 0041C 	    MOVL    REQSTDESC, R6					      ;

		         69	  08   A6  3C 00420 	    MOVZWL  8(R6), (R9)						      ;

		    7C   AE	  08   A6  90 00424 	    MOVB    8(R6), INPUT_FAB+52					      ; 1194



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 3-3

; Digital Equipment Corporation

;

		    04   A9	  0C   A6  D0 00429 	    MOVL    12(R6), 4(R9)					      ; 1195

		    74   AE	  0C   A6  D0 0042E 	    MOVL    12(R6), INPUT_FAB+44				      ; 1196

		    70   AE	       57  D0 00433 	    MOVL    AUXFNB, INPUT_FAB+40				      ; 1197

		    78   AE	  FC   AB  D0 00437 	    MOVL    TYPEADR, INPUT_FAB+48				      ; 1199

		    7D   AE	       04  90 0043C 	    MOVB    #4, INPUT_FAB+53					      ; 1200

				  48   AE  9F 00440 	    PUSHAB  INPUT_FAB						      ; 1201

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

		         58	       50  D0 0044A 	    MOVL    R0, ERRORCODE					      ;

	      00010001   8F	       58  D1 0044D 	    CMPL    ERRORCODE, #65537					      ;

				       03  13 00454 	    BEQL    4$							      ;

				     0090  31 00456 	    BRW     9$							      ;

	   21	    0A   A2	       04  E0 00459 4$:     BBS     #4, 10(R2), 7$					      ; 1203

	   06	    0A   A2	       02  E1 0045E 	    BBC     #2, 10(R2), 5$					      ; 1206

		         50	  F8   AB  D0 00463 	    MOVL    SHARECLUSTER, R0					      ; 1208

				       05  11 00467 	    BRB     6$							      ;

		         50	0000G  CF  D0 00469 5$:     MOVL    LNK$GL_CURCLU, R0					      ; 1212

		         51	  08   A0  D0 0046E 6$:     MOVL    8(R0), LASTFDB					      ;

		    08   A0	       52  D0 00472 	    MOVL    R2, 8(R0)						      ; 1213

		         61	       52  D0 00476 	    MOVL    R2, (LASTFDB)					      ; 1215

		    04   AB	       57  D0 00479 	    MOVL    AUXFNB, RELNAMBLK					      ; 1216

				       68  11 0047D 	    BRB     8$							      ; 1135

	   00	         6E	       00  2C 0047F 7$:     MOVC5   #0, (SP), #0, #68, OPTIONRAB			      ; 1220

		    04   AE	0044   8F     00483									      ;

		    04   AE	4401   8F  B0 00488 	    MOVW    #17409, OPTIONRAB					      ; 1222

		    40   AE	  48   AE  9E 0048E 	    MOVAB   INPUT_FAB, OPTIONRAB+60				      ; 1223

		    24   AE	  84   8F  9B 00493 	    MOVZBW  #132, OPTIONRAB+32					      ; 1224

				  28   AE  9F 00498 	    PUSHAB  OPTIONRAB+36					      ; 1225

		         7E	  84   8F  9A 0049B 	    MOVZBL  #132, -(SP)						      ;

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

				  22   AE  94 004A4 	    CLRB    OPTIONRAB+30					      ; 1226

		    0A   AE	       01  88 004A7 	    BISB2   #1, OPTIONRAB+4					      ; 1227

				  04   AE  9F 004AB 	    PUSHAB  OPTIONRAB						      ; 1228

	      00000000G  9F	       01  FB 004AE 	    CALLS   #1, @#SYS$CONNECT					      ;

		         58	       50  D0 004B5 	    MOVL    R0, ERRORCODE					      ;

		         2E	       58  E9 004B8 	    BLBC    ERRORCODE, 9$					      ;

		    FC   AB	0000'  CF  9E 004BB 	    MOVAB   DEFILETYPE, TYPEADR					      ; 1230

				  04   AB  D4 004C1 	    CLRL    RELNAMBLK						      ; 1231

				  04   AE  9F 004C4 	    PUSHAB  OPTIONRAB						      ; 1232

				0840   8F  BB 004C7 	    PUSHR   #^M<R6,R11>						      ;

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

		    04   AB	       57  D0 004D0 	    MOVL    AUXFNB, RELNAMBLK					      ; 1233

				  28   AE  DD 004D4 	    PUSHL   OPTIONRAB+36					      ; 1234

		         7E	  28   AE  3C 004D7 	    MOVZWL  OPTIONRAB+32, -(SP)					      ;

		  0000G  CF	       02  FB 004DB 	    CALLS   #2, LNK$DEALBLK					      ;

		  0000G  CF	0000G  CF  9E 004E0 	    MOVAB   LNK$GL_DEFCLU, LNK$GL_CURCLU			      ; 1235

				       34  11 004E7 8$:     BRB     10$							      ; 1135

				  0C   A7  DD 004E9 9$:     PUSHL   12(AUXFNB)						      ; 1241

		         7E	  0B   A7  9A 004EC 	    MOVZBL  11(AUXFNB), -(SP)					      ;

				       7E  D4 004F0 	    CLRL    -(SP)						      ;

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

		         7E	  00G  8F  9A 004F5 	    MOVZBL  #ERM$C_OPIDERR, -(SP)				      ;

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

				       58  DD 004FE 	    PUSHL   ERRORCODE						      ; 1244

				       59  DD 00500 	    PUSHL   R9							      ;

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



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 3-4

; Digital Equipment Corporation

;

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

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

				  54   AE  DD 0050E 	    PUSHL   INPUT_FAB+12					      ; 1247

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

	   7E	         58	       07  CB 00514 	    BICL3   #7, ERRORCODE, -(SP)				      ;

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

				  48   AE  9F 0051D 10$:    PUSHAB  INPUT_FAB						      ; 1250

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

		         58	       50  D0 00527 	    MOVL    R0, ERRORCODE					      ;

	      00010001   8F	       58  D1 0052A 	    CMPL    ERRORCODE, #65537					      ;

				       24  13 00531 	    BEQL    11$							      ;

				       58  DD 00533 	    PUSHL   ERRORCODE						      ; 1252

				  04   A7  DD 00535 	    PUSHL   4(AUXFNB)						      ;

		         7E	  03   A7  9A 00538 	    MOVZBL  3(AUXFNB), -(SP)					      ;

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

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

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

				  54   AE  DD 00548 	    PUSHL   INPUT_FAB+12					      ; 1255

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

	   7E	         58	       07  CB 0054E 	    BICL3   #7, ERRORCODE, -(SP)				      ;

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

		    FC   AB	0000'  CF  9E 00557 11$:    MOVAB   DEFILETYPE, TYPEADR					      ; 1258

					   04 0055D 	    RET     							      ; 1135



; Routine Size:  411 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 4

; Digital Equipment Corporation

;

;00100  1261	GLOBAL ROUTINE LNK$ALLOFDB(FDBPOINTER) : NOVALUE =

;00200  1262	BEGIN

;00300  1263	!

;00400  1264	!	THIS ROUTINE ALLOCATES SOME MORE DYNMAIC MEMORY FOR

;00500  1265	!	FILE DESCRIPTOR BLOCKS AND

;00600  1266	!	RMS RESULTANT STRINGS AND INSERTS INTO

;00700  1267	!	AN AUXILIARY FILE NAME BLOCK THE LENGTH AND

;00800  1268	!	ADDRESS FOR RESULTANT AND EXPANDED STRINGS RETURNED ON OPENS

;00900  1269	!	ON ANY CALL IF THERE IS NOT SUFFICIENT RESULTANT STRING

;01000  1270	!	AREA FOR THE MAXIMUM, MORE IS ALLOCATED. ALSO ON EACH

;01100  1271	!	CALL THE ROUTINE CHECKS RSL OF THE PREVIOUSLY ALLOCATED

;01200  1272	!	AUXILIARY FILE NAME BLOCK AND IF NON ZERO, REDUCES THE REMAINING

;01300  1273	!	STRING AREA BY THAT ACTUALLY USED. IF STILL ZERO THE AREA IS

;01400  1274	!	REDUCED BY THE MAXIMUM SIZE BEFORE THE DECISION TO ALLOCATE

;01500  1275	!	MORE IS MADE.

;01600  1276	!

;01700  1277	OWN

;01800  1278		PREVFNB : REF BLOCK[,BYTE];			! PREVIOUS AUXILIARY FILENAME BLOCK

;01900  1279	!

;02000  1280	LOCAL

;02100  1281		FDBLOCK : REF BLOCK[,BYTE],			! FILE DESCRIPTOR BLOCK ALLOCATED

;02200  1282		RSAREDUCTION,					!

;02300  1283		TEMPRSAPOINTER;					! FOR ALLOCATING RESULTANT

;02400  1284								! STRING BUFFERS

;02500  1285	MAP FDBPOINTER : REF VECTOR;				! PASSED AN ADDRESS AT WICH TO STORE

;02600  1286	!

;02700  1287	IF .PREVFNB NEQ 0					! IF ONE HAS BEEN ALLOCATED

;02800  1288	THEN BEGIN						! PREVIOUSLY, TRY TO USE THE ACTUAL

;02900  1289		IF (RSAREDUCTION = .PREVFNB[NAM$B_RSL]) EQL 0	! AMOUNT CONSUMED TO REDUCE

;03000  1290		THEN RSAREDUCTION = .PREVFNB[NAM$B_RSS];	! THE AVAILABLE AREA BUT IF NONE

;03100  1291		RSAREMSIZE = .RSAREMSIZE - .RSAREDUCTION;	! CONSUMED, REDUCE BY THE TOTAL

;03200  1292		NEXTRSA = .NEXTRSA + .RSAREDUCTION;		! AND UPDATE THE ADDRESS OF NEXT AVAILABLE

;03300  1293	     END;

;03400  1294	IF .RSAREMSIZE LSSU NAM$C_MAXRSS			! IF THERE IS NOT ENOUGH

;03500  1295	THEN BEGIN						! SPACE IN RESULTANT

;03600  1296		LNK$ALLOBLK (RSA_ALLOSIZE,TEMPRSAPOINTER);	! STRING BUFFER FOR

;03700  1297								! THE MAXIMUM ONE,

;03800  1298		IF .TEMPRSAPOINTER EQL .NEXTRSA+.RSAREMSIZE	! GO ALLOCATE SOME

;03900  1299								! MORE

;04000  1300		THEN RSAREMSIZE = .RSAREMSIZE+RSA_ALLOSIZE	! IF IT WAS ALLOCATED

;04100  1301		ELSE BEGIN					! CONTIGUOUSLY WITH PREVIOUS

;04200  1302			RSAREMSIZE = RSA_ALLOSIZE;		! AREA UPDATE AVAILABLE

;04300  1303			NEXTRSA = .TEMPRSAPOINTER;		! LENGTH ELSE FORGET THE

;04400  1304			END;					! PREVIOUS AREA AND STAY

;04500  1305	     END;						! WITH THE NEW

;04600  1306	LNK$ALLOBLK(FDB$C_SIZE,FDBLOCK);			! ALLOCATE FILE DESCRIPTOR

;04700  1307	FDBPOINTER[0] = .FDBLOCK;				! RETURN ITS ADDRESS

;04800  1308	PREVFNB = FDBLOCK[FDB$AL_AUXFNB];			! GET ADDRESS OF THE FILE NAME BLOCK PART

;04900  1309	FDBLOCK[FDB$L_OMDLST] = 0;				! ZERO THE LIST HEAD INSIDE IT

;05000  1310	FDBLOCK[FDB$L_NXTFDB] = 0;				! FOR OBJECTS AND THE FORWARD FDB POINTER

;05100  1311	PREVFNB[NAM$L_RSA] = .NEXTRSA;				! SET RSA ADDRESS

;05200  1312	PREVFNB[NAM$B_RSS] = NAM$C_MAXRSS;			! AND SIZE IN AUX FNB

;05300  1313	PREVFNB[NAM$B_RSL] = 0;					! RESULTANT LENGTH INITIALLY ZERO

;05400  1314	PREVFNB[NAM$B_ESS] = NAM$C_MAXRSS;			! EXPANDED STRING AREA IS SAME AS RESULTANT

;05500  1315	PREVFNB[NAM$L_ESA] = .NEXTRSA;				! SO THAT WE GIVE A GOOD ERROR ON OPEN FAILURE



; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 4-1

; Digital Equipment Corporation

;

;05600  1316	PREVFNB[NAM$B_BID] = NAM$C_BID;				! IDENTIFY THE AUXILIARY

;05700  1317	PREVFNB[NAM$B_BLN] = NAM$C_BLN;				! FILENAME BLOCK AS SUCH

;05800  1318	PREVFNB[NAM$L_RLF] = 0;					! NO RELATED FILE

;05900  1319	RETURN;							! AND THAT'S IT

;06000  1320	END;







							    .PSECT  $OWN$,NOEXE,2



					      00238 PREVFNB:.BLKB   4







							    .PSECT  $CODE$,NOWRT,2



					 0800 0055E 	    .ENTRY  LNK$ALLOFDB, Save R11				      ; 1261

		         5B	0000'  CF  9E 00560 	    MOVAB   RSAREMSIZE, R11					      ;

		         5E	       08  C2 00565 	    SUBL2   #8, SP						      ;

		         50	  07   AB  D0 00568 	    MOVL    PREVFNB, R0						      ; 1287

				       11  13 0056C 	    BEQL    2$							      ;

		         51	  03   A0  9A 0056E 	    MOVZBL  3(R0), RSAREDUCTION					      ; 1289

				       04  12 00572 	    BNEQ    1$							      ;

		         51	  02   A0  9A 00574 	    MOVZBL  2(R0), RSAREDUCTION					      ; 1290

		         6B	       51  82 00578 1$:     SUBB2   RSAREDUCTION, RSAREMSIZE				      ; 1291

		    F3   AB	       51  C0 0057B 	    ADDL2   RSAREDUCTION, NEXTRSA				      ; 1292

		    80   8F	       6B  91 0057F 2$:     CMPB    RSAREMSIZE, #128					      ; 1294

				       27  1E 00583 	    BGEQU   4$							      ;

				  04   AE  9F 00585 	    PUSHAB  TEMPRSAPOINTER					      ; 1296

		         7E	  C0   8F  9A 00588 	    MOVZBL  #192, -(SP)						      ;

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

		         50	       6B  9A 00591 	    MOVZBL  RSAREMSIZE, R0					      ; 1298

		         50	  F3   AB  C0 00594 	    ADDL2   NEXTRSA, R0						      ;

		         50	  04   AE  D1 00598 	    CMPL    TEMPRSAPOINTER, R0					      ;

				       06  12 0059C 	    BNEQ    3$							      ;

		         6B	  C0   8F  80 0059E 	    ADDB2   #192, RSAREMSIZE					      ; 1300

				       08  11 005A2 	    BRB     4$							      ; 1298

		         6B	       3F  92 005A4 3$:     MCOMB   #63, RSAREMSIZE					      ; 1302

		    F3   AB	  04   AE  D0 005A7 	    MOVL    TEMPRSAPOINTER, NEXTRSA				      ; 1303

				       5E  DD 005AC 4$:     PUSHL   SP							      ; 1306

		         7E	  4B   8F  9A 005AE 	    MOVZBL  #75, -(SP)						      ;

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

		         50	       6E  D0 005B7 	    MOVL    FDBLOCK, R0						      ; 1307

		    04   BC	       50  D0 005BA 	    MOVL    R0, @FDBPOINTER					      ;

      07   AB	         50	       13  C1 005BE 	    ADDL3   #19, R0, PREVFNB					      ; 1308

				       60  7C 005C3 	    CLRQ    (R0)						      ; 1310

		         50	  07   AB  D0 005C5 	    MOVL    PREVFNB, R0						      ; 1311

		    04   A0	  F3   AB  D0 005C9 	    MOVL    NEXTRSA, 4(R0)					      ;

		    02   A0	  80   8F  9B 005CE 	    MOVZBW  #128, 2(R0)						      ; 1312

		    0A   A0	  80   8F  90 005D3 	    MOVB    #-128, 10(R0)					      ; 1314

		    0C   A0	  F3   AB  D0 005D8 	    MOVL    NEXTRSA, 12(R0)					      ; 1315

		         60	3802   8F  B0 005DD 	    MOVW    #14338, (R0)					      ; 1316

				  10   A0  D4 005E2 	    CLRL    16(R0)						      ; 1318

					   04 005E5 	    RET     							      ; 1261





; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 4-2

; Digital Equipment Corporation

;

; Routine Size:  136 bytes





;06100  1321	GLOBAL ROUTINE LNK$ALLOCLUSTER(CLUSTERDESC) : NOVALUE =

;06200  1322	BEGIN

;06300  1323	!

;06400  1324	!	ALLOCATE A CLUSTER DESCRIPTOR AND LINK ON END OF THE LIST

;06500  1325	!	ALSO INITIALIZE SOME FIELDS OF IT NOW

;06600  1326	!

;06700  1327	MAP	CLUSTERDESC : REF BLOCK[,BYTE];			! CHANGE ATTRIBUTES

;06800  1328	LOCAL	NEWCLUSTER : REF BLOCK[,BYTE];

;06900  1329	!

;07000  1330	LNK$ALLOBLK(CLU$C_SIZE,.CLUSTERDESC);			! ALLOCATE THE BLOCK

;07100  1331	NEWCLUSTER = ..CLUSTERDESC;				! RETRIEVE ITS ADDRESS

;07200  1332	NEWCLUSTER[CLU$L_NXTCLU] = 0;				! INITIALLY POINTS NOWHERE

;07300  1333	NEWCLUSTER[CLU$L_FSTFDB] = 0;				! NO FILES YET

;07400  1334	NEWCLUSTER[CLU$L_LSTFDB] = NEWCLUSTER[CLU$L_FSTFDB];	! SO EMPTY LIST

;07500  1335	NEWCLUSTER[CLU$L_FSTPSC] = 0;				! EMPTY SINGLY LINKED P-SECT

;07600  1336	NEWCLUSTER[CLU$L_LSTPSC] = NEWCLUSTER[CLU$L_FSTPSC];	! LIST

;07700  1337	NEWCLUSTER[CLU$L_FSTISD] = 0;				! NO I-SECTIONS YET

;07800  1338	NEWCLUSTER[CLU$L_LSTISD] = NEWCLUSTER[CLU$L_FSTISD];	!

;07810  1339	NEWCLUSTER[CLU$L_BASE] = 0;				! ZERO THE BASE ADDRESS

;07820  1340	NEWCLUSTER[CLU$L_PAGES] = 0;				! AND SIZE

;07850  1341	NEWCLUSTER[CLU$W_FLAGS] = 0;

;07860  1342	NEWCLUSTER[CLU$B_PFC] = 0;				! ZERO PAGE FAULT CLUSTER

;07900  1343	LASTCLUSTER[CLU$L_NXTCLU] = .NEWCLUSTER;		! SET POINTER

;08000  1344	LASTCLUSTER = .NEWCLUSTER;				! FOR LAST IN LIST

;08100  1345	RETURN;

;08200  1346	END;











					 0000 005E6 	    .ENTRY  LNK$ALLOCLUSTER, Save nothing			      ; 1321

				  04   AC  DD 005E8 	    PUSHL   CLUSTERDESC						      ; 1330

				       37  DD 005EB 	    PUSHL   #55							      ;

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

		         50	  04   BC  D0 005F2 	    MOVL    @CLUSTERDESC, NEWCLUSTER				      ; 1331

				       60  7C 005F6 	    CLRQ    (NEWCLUSTER)					      ; 1332

		    08   A0	  04   A0  9E 005F8 	    MOVAB   4(NEWCLUSTER), 8(NEWCLUSTER)			      ; 1334

				  0C   A0  D4 005FD 	    CLRL    12(NEWCLUSTER)					      ; 1335

		    10   A0	  0C   A0  9E 00600 	    MOVAB   12(NEWCLUSTER), 16(NEWCLUSTER)			      ; 1336

				  14   A0  D4 00605 	    CLRL    20(NEWCLUSTER)					      ; 1337

		    18   A0	  14   A0  9E 00608 	    MOVAB   20(NEWCLUSTER), 24(NEWCLUSTER)			      ; 1338

				  1C   A0  7C 0060D 	    CLRQ    28(NEWCLUSTER)					      ; 1339

				  24   A0  B4 00610 	    CLRW    36(NEWCLUSTER)					      ; 1341

				  26   A0  94 00613 	    CLRB    38(NEWCLUSTER)					      ; 1342

		  0000G  DF	       50  D0 00616 	    MOVL    NEWCLUSTER, @LASTCLUSTER				      ; 1343

		  0000G  CF	       50  D0 0061B 	    MOVL    NEWCLUSTER, LASTCLUSTER				      ; 1344

					   04 00620 	    RET     							      ; 1321



; Routine Size:  59 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 04:43:46	DBB3:[LINKER.SRC]LNKGETCMD.B32;6				Page 4-3

; Digital Equipment Corporation

;

;08300  1347	END ELUDOM













;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

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

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

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

;  $CODE$         	  1569  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        59         2       142

;  DBA4:[SYSLIB]CLIMAC.L32;1		        14        14       100        14











; Size:		1569 code + 620 data bytes

; Run Time:	01:15.5

; Elapsed Time:	01:19.5

; Memory Used:	328 pages

; Compilation Complete

