BLDSG	MACRO M1110  22-AUG-78 01:39  PAGE 3





      1						.TITLE	BLDSG

      2						.IDENT	/16/

      3					                                                                                ;**-1

      4					;

      5					; COPYRIGHT (C) 1976

      6					; COPYRIGHT (C)	1977

      7					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

      8					;

      9					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A

     10					; SINGLE COMPUTER SYSTEM AND MAY  BE  COPIED   ONLY  WITH  THE

     11					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,  OR

     12					; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED  OR  OTHERWISE

     13					; MADE AVAILABLE TO ANY OTHER PERSON   EXCEPT FOR  USE ON SUCH

     14					; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE  TERMS.  TITLE

     15					; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN

     16					; IN DEC.

     17					;

     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT

     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL

     20					; EQUIPMENT CORPORATION.

     21					;

     22					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF

     23					; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

     24					;

     25					; VERSION 16

     26					;                                                                               ;**-1

     27					; D. N. CUTLER/C. MONIA	16-JAN-74

     28					;

     29					; MODIFICATIONS:                                                                ;**NEW**

     30					;                                                                               ;**NEW**

     31					; NO.		DATE		PROGRAMMER                                      ;**NEW**

     32					; ---		----		----------                                      ;**NEW**

     33					;                                                                               ;**NEW**

     34					; 036		10-JAN-75	C. MONIA                                        ;**NEW**

     35					; 044		21-JAN-76	C. MONIA

     36					; 054		27-MAR-76	C. MONIA

     37					; 059		08-APR-76	C. MONIA

     38					; 066		31-JUL-76	C. MONIA

     39					; JAK099	23-MAY-77	; MAKE LB: THE LIBRARY DEFAULT DEVICE

     40					; JAK110	 3-OCT-77	; IMPROVE OUTPUT FILE HANDLING

     41					;

     42					; MONITOR DEPENDENT ROUTINE TO BUILD SEGMENT DESCRIPTION

     43					;

     44					; MACRO LIBRARY CALLS

     45					;

     46

     47						.MCALL	GLUN$S								;JAK110

     48						.MCALL	CSI$

     49	000000					CSI$

     50

     51					;

     52					; LOCAL DATA

     53					;

     54

     55	000000				$MRFLG::.BLKW	1		;MORE INPUT FILES FLAG

     56	000002				$SCANR::.BLKW	1		;ADDRESS OF SCANNING ROUTINE

     57	000004	012626 			CRFEX:	.RAD50	/CRF/		;++036 CREF FILE EXTENSION

BLDSG	MACRO M1110  22-AUG-78 01:39  PAGE 3-1





     58	000006	000002 			ODTDS:	.WORD	ODTDR-ODTDV	;DEVICE DESCRIPTOR

     59	000010	000022'				.WORD	ODTDV		;

     60	000012	000005 				.WORD	ODTFN-ODTDR	;DIRECTORY DESCRIPTOR

     61	000014	000024'				.WORD	ODTDR		;

     62	000016	000007 				.WORD	ODTFE-ODTFN	;FILENAME DESCRIPTOR

     63	000020	000031'				.WORD	ODTFN		;

     64	000022	   114 	   102 		ODTDV:	.ASCII	/LB/		;DEVICE						;JAK099

     65	000024	   133 	   061 	   054 	ODTDR:	.ASCII	/[1,1]/		;DIRECTORY					;**-1

	000027	   061 	   135

     66	000031	   117 	   104 	   124 	ODTFN:	.ASCII	/ODT.OBJ/	;FILENAME

	000034	   056 	   117 	   102

	000037	   112

     67	000040				ODTFE:				;REF LABEL

     68

     69						.EVEN

     70

     71					;

     72					; CSI SWITCH BLOCK POINTERS

     73					;

     74

     75	000040	000000G			SWPT:	.WORD	$TSKSW		; TASK FILE

     76	000042	000000G				.WORD	$MAPSW		; MAP FILE

     77	000044	000000G				.WORD	$STBSW		; STB FILE

     78

     79					;

     80					; FILE SWITCH VALUE POINTERS

     81					;

     82

     83	000046	000000G			SWTB:	.WORD	TS$KF		; TASK FILE SPECIFIED

     84	000050	000000G				.WORD	MA$PF		; MAP FILE SPECIFIED

     85	000052	000000G				.WORD	ST$BF		; SYMBOL TABLE FILE SPECIFIED

     86

     87					;

     88					; OUTPUT FILE NAMEBLOCK VECTORS (REAL) - ADJACENCY ASSUMED

     89					;

     90

     91	000054				TSKNM:	.BLKW	1		; TASK FILE

     92	000056				MAPNM:	.BLKW	1		; MAP FILE

     93	000060				STBNM:	.BLKW	1		; STB FILE

     94

     95

     96					;+

     97					; **-$BLDSG-BUILD SEGMENT DESCRIPTION

     98					;

     99					; THIS ROUTINE IS CALLED TO CREATE THE SEGMENT DESCRIPTION FOR THE

    100					; TASK THAT IS CURRENTLY BEING BUILT. A COMMAND INPUT LINE IS READ

    101					; AND THE OUTPUT FILE SPECIFICATIONS ARE INITIALIZED. THE FIRST INPUT

    102					; FILE SPECIFICATION IS OBTAINED AND PLACED IN THE OBJECT FILE RECORD

    103					; BLOCK. IF THE "MP" SWITCH IS SPECIFIED, THEN $MULSG IS CALLED TO

    104					; CREATE A MULTI-SEGMENT TASK DESCRIPTION. ELSE $SNGSG IS CALLED TO

    105					; CREATE A SINGLE SEGMENT TASK DESCRIPTION.

    106					;

    107					; INPUTS:

    108					;

    109					;	NONE.

    110					;

    111					; OUTPUTS:

BLDSG	MACRO M1110  22-AUG-78 01:39  PAGE 3-2





    112					;

    113					;	NONE.

    114					;-

    115

    116	000062				$BLDSG::SAVRG			;SAVE NONVOLITILE REGISTERS

    117	000066					CALL	$INITL		;INITIALIZE

    118	000072	016767 	000000G	000000G		MOV	$DFLBS,$LBSWT	; SET DEFAULT SYSTEM LIBRARY SWITCH WORD

    119	000100	056767 	000000G	000000G		BIS	$DFMAP,$SWTCH	; SET DEFAULT MAP FILE FORMAT SWITCHES

    120	000106	016704 	000000G			MOV	$INIPT,R4	; GET FDB ADDRESS

    121	000112	012701 	000000G			MOV	#T$MSIZ,R1	;GET SIZE OF TEMP BUFFER NEEDED

    122	000116					CALL	$ALBLK		;ALLOCATE TEMP BUFFER

    123	000122	010005 				MOV	R0,R5		;SAVE BUFFER ADDRESS

    124	000124				10$:	CALL	$GTCML		;GET NEXT COMMAND INPUT LINE

    125	000130	103002 				BCC	15$		;IF CC CONTINUE

    126	000132	000167 	000000G			JMP	$QUIT		;LOGICAL EOF-QUIT NOW

    127	000136	010501 			15$:	MOV	R5,R1		;GET ADDRESS OF TEMP BUFFER

    128	000140					CALL	$SYNTX		;ANALYZE SYNTAX OF LINE

    129	000144	103767 				BCS	10$		;IF CS SYNTAX ERROR

    130	000146	016764 	000000G	000000G		MOV	$DFTSK,R$SWTH(R4) ; SET DEFAULT TASK SWITCHES

    131	000154	012764 	000000G	000046 		MOV	#$DFNB,F.DFNB(R4) ; SET DEFAULT NAME BLOCK POINTER

    132	000162	012703 	177772 			MOV	#-6,R3		; SET LOOP COUNT *2

    133	000166				20$:

    134	000166	016364 	000046'	000000G		MOV	SWPT+6(R3),R$SWBK(R4) ; POINT TO CSI SWITCH BLOCK

    135	000174	005063 	000006G			CLR	$TSKNM+6(R3)	; CLEAR NAME BLOCK POINTER

    136	000200	005063 	000062'			CLR	TSKNM+6(R3)	; CLEAR REAL ADDRESS

    137	000204	010400 				MOV	R4,R0		; GET FDB ADDRESS

    138	000206	062700 	000102 			ADD	#F.FNB,R0	; POINT TO FILE NAME BLOCK

    139	000212	012701 	000017 			MOV	#S.FNB/2,R1	; SET SIZE OF BLOCK

    140	000216				25$:				;

    141	000216	005020 				CLR	(R0)+		; CLEAR NAMEBLOCK

    142	000220					SOB	R1,25$		;

    143	000224	010501 				MOV	R5,R1		; SET TEMP BUFFER ADDRESS

    144	000226	010400 				MOV	R4,R0		; SET FDB ADDRESS

    145	000230					CALL	$SCANO		; SCAN FOR OUTPUT FILE

    146	000234	103406 				BCS	35$		; IF C/S NO FILE

    147	000236					CALL	PARSE		;++036 PARSE FILE NAME

    148	000242	103403 				BCS	35$		;++036 IF C/S ERROR

    149	000244				30$:				;

    150	000244	056367 	000054'	000000G		BIS	SWTB+6(R3),$SWTCH ; SET FILE-PRESENT SWITCH

    151	000252				35$:				;

    152	000252	016700 	000000G			MOV	$PRVAP,R0	; GET FIRST APR FOR PRIVILEGED TASK

    153	000256	001415 				BEQ	360$		; IF EQ OK

    154	000260	162700 	000004 			SUB	#4,R0		; SUBTRACT LOWER LIMIT

    155	000264	100403 				BMI	350$		; IF MI ERROR

    156	000266	020027 	000000G			CMP	R0,#M$XAPR	; APR TOO BIG?

    157	000272	101407 				BLOS	360$		; IF LOS NO

    158	000274				350$:				;

    159	000274	012701 	000000C			MOV	#<S$V2*400!E$R3>,R1 ; GET ERROR/SEVERITY CODE

    160	000300	010502 				MOV	R5,R2		; COPY ADDRESS OF CSI BLOCK

    161	000302	062702 	000016 			ADD	#C.FILD,R2	; OFFSET TO FILENAME DESCRIPTOR

    162	000306					CALL	$ERMSG		; REPORT FATAL ERROR

    163	000312				360$:				;

    164	000312					CALL	$ALELO		; ALLOCATE ELEMENT DESCRIPTOR FOR OUTPUT

    165	000316					CALL	$LCKPG		; LOCK PAGE IN MEMORY

    166	000322	010063 	000062'			MOV	R0,TSKNM+6(R3)	; SAVE REAL ADDRESS OF NAMEBLOCK

    167	000326	010163 	000006G			MOV	R1,$TSKNM+6(R3)	; SAVE VIRTUAL ADDRESS OF NAMEBLOCK

    168	000332	020327 	177774 			CMP	R3,#-4		;++036 PROCESSING MAP FILE?

BLDSG	MACRO M1110  22-AUG-78 01:39  PAGE 3-3





    169	000336	001135 				BNE	43$		;++036 IF NE NO

    170	000340	012700 	000000C			MOV	#<MA$PF!CR$EF>,R0 ;++036 GET MAP, CREF FILE FLAGS

    171	000344	046700 	000000G			BIC	$SWTCH,R0	;++036 TEST FLAGS

    172	000350	001130 				BNE	43$		;++036 IF NE NO CREF PRODUCED

    173	000352	005067 	000000G			CLR	$CRODV		;++036 CLEAR CREF OUTPUT DEVICE

    174	000356	005067 	000000G			CLR	$CROUN		;++036 CLEAR CREF OUTPUT UNIT

    175	000362	016446 	000046 			MOV	F.DFNB(R4),-(SP) ;++036 SAVE ADDRESS OF DEFAULT NAMEBLOCK

    176	000366	016400 	000044 			MOV	F.DSPT(R4),R0	;++036 GET ADDRESS OF DATASET POINTER

    177	000372	016046 	000002 			MOV	2(R0),-(SP)	;++036 SAVE ADDRESS OF STRING

    178	000376	132764 	000041 	000017 		BITB	#<FD.SQD!FD.REC>,F.RCTL(R4) ;++036 SEQUENTIAL OR RECORD DEVICE

    179	000404	001024 				BNE	361$		; IF NE YES					;JAK110

    180	000406	132764 	000010 	000017 		BITB	#FD.DIR,F.RCTL(R4) ; OR, IS IT NON-DIRECTORY:			;JAK110

    181	000414	001420 				BEQ	361$		; IF EQ YES					;JAK110

    182	000416	162706 	000014 			SUB	#6*2,SP		; ALLOCATE GLUN BUFFER ON STACK			;JAK110

    183	000422	010600 				MOV	SP,R0		; STORE ADDRESS IN R3				;JAK110

    184	000424					GLUN$S	F.LUN(R4),R0	; GET LUN INFORMATION				;JAK110

    185	000440	016000 	000004 			MOV	G.LUCW(R0),R0	; GET LUN CHARACTERISTICS WORD			;JAK110

    186	000444	062706 	000014 			ADD	#6*2,SP		; RESTORE STACK					;JAK110

    187	000450	032700 	004000 			BIT	#FD.OSP,R0	; IS OUTPUT DEVICE SPOOLED?			;JAK110

    188	000454	001447 				BEQ	40$		; IF EQ NO					;JAK110

    189	000456				361$:										;JAK110

    190	000456	052767 	000000G	000000G		BIS	#SP$OL,$SWTCH	;++036 CANCEL REQUEST FOR SPOOLING		;**-1

    191	000464	016467 	000134 	000000G		MOV	F.FNB+N.DVNM(R4),$CRODV ;++036 SAVE OUTPUT DEVICE

    192	000472	016467 	000136 	000000G		MOV	F.FNB+N.UNIT(R4),$CROUN ;++036 SAVE OUTPUT UNIT

    193	000500	012764 	000000G	000046 		MOV	#$MAPTM,F.DFNB(R4) ;++036 SET ADDRESS OF TEMP MAP FILE NAMEBLOCK

    194	000506	016400 	000044 			MOV	F.DSPT(R4),R0	;++036 GET ADDRESS OF DATASET

    195	000512	012701 	000000G			MOV	#$MAPTD,R1	;++036 GET ADDRESS OF TEMP DSPT

    196	000516	012120 				MOV	(R1)+,(R0)+	;++036 SET DEVICE STRING LENGTH

    197	000520	012120 				MOV	(R1)+,(R0)+	;++036 SET ADDRESS OF STRING

    198	000522					CALL	PARSE		;++036 PARSE CREF TEMP FILE

    199	000526	103004 				BCC	37$		;++036 IF C/C PARSE SUCCEEDED

    200	000530	042767 	000000G	000000G		BIC	#CR$EF,$SWTCH	;++036 RESET CREF SWITCH

    201	000536	000427 				BR	42$		;++036

    202	000540				37$:				;++036

    203	000540	016701 	000000G			MOV	$MAPNM,R1	;++036 GET VIRTUAL ADDRESS OF MAP FILE

    204	000544					CALL	$UNLPG		;++036 UNLOCK PAGE

    205	000550	010167 	000000G			MOV	R1,$MPFIL	;++036 SAVE VIRTUAL ADDRESS OF REAL DESCRIPTOR

    206	000554					CALL	$ALELO		;++036 ALLOCATE AN ELEMENT DESCRIPTOR FOR OUTPUT

    207	000560					CALL	$LCKPG		;++036 LOCK DESCRIPTOR IN MEMORY

    208	000564	010067 	177266 			MOV	R0,MAPNM	;++036 SAVE REAL ADDRESS OF NEW DESCRIPTOR

    209	000570	010167 	000000G			MOV	R1,$MAPNM	;++036 SAVE VIRTUAL ADDRESS

    210	000574				40$:				;++036

    211	000574	005064 	000120 			CLR	F.FNB+N.FVER(R4) ;++036 FORCE NEW VERSION

    212	000600	016764 	177200 	000116 		MOV	CRFEX,F.FNB+N.FTYP(R4) ;++036 REPLACE WITH CREF EXTENSION

    213	000606					CALL	$ALELO		;++036 ALLOCATE DESCRIPTOR FOR CREF FILE

    214	000612	010167 	000000G			MOV	R1,$CRFNM	;++036 SAVE VIRTUAL ADDRESS OF DESCRIPTOR

    215	000616				42$:				;++036

    216	000616	016400 	000044 			MOV	F.DSPT(R4),R0	;++036 GET DATASET POINTER

    217	000622	012660 	000002 			MOV	(SP)+,2(R0)	;++036 RESTORE ADDRESS OF STRING

    218	000626	012664 	000046 			MOV	(SP)+,F.DFNB(R4) ;++036 RESTORE ADDRESS OF DFNB

    219	000632				43$:				;++036

    220	000632	005064 	000000G			CLR	R$SWTH(R4)	; INITIALIZE SWITCH WORD

    221	000636	062764 	000036 	000046 		ADD	#S.FNB,F.DFNB(R4) ; POINT TO NEXT DEFAULT NAME BLOCK

    222	000644	062703 	000002 			ADD	#2,R3		; INCREMENT COUNT

    223	000650	002002 				BGE	44$		; IF GE DONE

    224	000652	000167 	177310 			JMP	20$		; GO AGAIN

    225	000656				44$:				;

BLDSG	MACRO M1110  22-AUG-78 01:39  PAGE 3-4





    226	000656	016700 	177172 			MOV	TSKNM,R0	; GET REAL ADDRESS OF TASK NAMEBLOCK

    227	000662	001417 				BEQ	45$		; IF EQ NONE

    228	000664	016701 	177170 			MOV	STBNM,R1	; GET REAL ADDRESS OF STB NAMEBLOCK

    229	000670	001414 				BEQ	45$		; IF EQ NONE

    230	000672	012703 	000000C			MOV	#^C<SW$PI!SW$NH>,R3 ; GET COMPLEMENT OF /PI, /NH FLAGS

    231	000676	016102 	000000G			MOV	E$LSWT(R1),R2	; GET STB FILE SWITCH WORD

    232	000702	040302 				BIC	R3,R2		; ISOLATE SWITCHES

    233	000704	050260 	000000G			BIS	R2,E$LSWT(R0)	; TRANSFER SWITCHES TO TASK FILE

    234	000710	016002 	000000G			MOV	E$LSWT(R0),R2	; GET TASK FILE SWITCH WORD

    235	000714	040302 				BIC	R3,R2		; ISOLATE "/PI" SWITCH

    236	000716	050261 	000000G			BIS	R2,E$LSWT(R1)	; TRANSFER TO STB FILE

    237	000722				45$:				;

    238	000722	012700 	000000G			MOV	#$TSKNM,R0	; GET POINTER TO V/A OF TASK NAMEBLOCK

    239	000726	012702 	000003 			MOV	#3,R2		; SET LOOP COUNT

    240	000732				46$:				;

    241	000732	012001 				MOV	(R0)+,R1	; GET NAMEBLOCK VIRTUAL ADDRESS

    242	000734	001402 				BEQ	47$		; IF EQ NONE SPECIFIED

    243	000736					CALL	$UNLPG		; UNLOCK PAGE

    244	000742				47$:				;

    245	000742					SOB	R2,46$		; REPEAT

    246	000746	012764 	000000G	000000G		MOV	#$INPSW,R$SWBK(R4) ; SET ADDRESS OF INPUT SWITCH BLOCK

    247	000754	016764 	000000G	000000G		MOV	$DFINP,R$SWTH(R4) ; SET DEFAULT INPUT FILE SWITCHES

    248	000762	012767 	000000G	177012 		MOV	#$SCANI,$SCANR ; SET ADDRESS OF SCANNING ROUTINE

    249	000770	005067 	177004 			CLR	$MRFLG		; CLEAR MORE FILES FLAG

    250

    251					;

    252					; AT THIS POINT F.DFNB(R4) POINTS TO INPUT FILE

    253					; DEFAULT NAME BLOCK

    254					;

    255	000774					CALL	$NXTFL		; GET FIRST INPUT FILE

    256	001000	103005 				BCC	50$		;

    257	001002	012701 	000000C			MOV	#<S$V2*400!E$R2>,R1 ; ASSUME NO INPUT FILES

    258	001006	005002 				CLR	R2		; SET DUMMY PARAMETER BLOCK ADDRESS

    259	001010					CALL	$ERMSG		; FATAL-NO RETURN

    260	001014				50$:				;

    261	001014	000167 	000000G			JMP	$BCNTL		; BUILD SEGMENT DESCRIPTORS

    262

    263					;

    264					; BUILD FILE NAME BLOCK FOR DEBUGGING AID AND SYSTEM LIBRARY FILES

    265					;

    266					;	THIS ROUTINE IS ENTERED VIA A JUMP FROM '$BCNTL' AFTER

    267					;	ALL SEGMENT DESCRIPTORS HAVE BEEN BUILT. R3-R5 ARE INTACT.

    268					;

    269

    270	001020				$BLDSF::			;

    271	001020	012700 	000000G			MOV	#$FRHD,R0	; GET ADDRESS OF FREE POOL HEADER

    272	001024	012701 	000000G			MOV	#T$MSIZ,R1	; GET SIZE OF BLOCK TO RELEASE

    273	001030	010502 				MOV	R5,R2		; GET ADDRESS OF BLOCK

    274	001032					CALL	$RLCB		; RELEASE CORE BLOCK

    275	001036	016446 	000046 			MOV	F.DFNB(R4),-(SP) ; SAVE DEFAULT NAMEBLOCK POINTER

    276	001042	016446 	000044 			MOV	F.DSPT(R4),-(SP) ; SAVE DATASET POINTER

    277	001046	016701 	000000G			MOV	$TSKNM,R1	; GET VIRTUAL ADDRESS OF TASK NAMEBLOCK

    278	001052	001432 				BEQ	10$		; IF EQ-NO TASK FILE

    279	001054					CALL	$CVRL		; CONVERT TO REAL ADDRESS

    280	001060	032760 	000000G	000000G		BIT	#SW$DA,E$LSWT(R0) ; DEBUGGING AID REQUESTED?

    281	001066	001424 				BEQ	10$		; IF EQ NO

    282	001070	012764 	000006'	000044 		MOV	#ODTDS,F.DSPT(R4) ; SET ODT DATA DESCRIPTOR

BLDSG	MACRO M1110  22-AUG-78 01:39  PAGE 3-5





    283	001076	010400 				MOV	R4,R0		; FETCH FDB POINTER

    284	001100					CALL	$PRFND		; PARSE/FIND FILE

    285	001104	103450 				BCS	20$		; IF C/S PARSE/FIND FAILURE

    286	001106	012760 	000000G	000000G		MOV	#SW$DA,R$SWTH(R0) ; SPECIFY DEBUGGING AID

    287	001114					CALL	$ALELD		; ALLOCATE AN ELEMENT DESCRIPTOR

    288	001120	016700 	000000G			MOV	$RTSEG,R0	; GET ADDRESS OF ROOT SEGMENT

    289	001124	062700 	000000C			ADD	#<S$GELT/2>,R0	; POINT TO ELEMENT DESCRIPTOR LISTHEAD

    290	001130	012702 	000000G			MOV	#E$LNXT,R2	; GET LINK-NEXT OFFSET

    291	001134					CALL	$LNKVM		; LINK ELEMENT AS LAST ON LIST

    292	001140				10$:

    293	001140	005767 	000000G			TST	$LIBNM		; DEFAULT LIBRARY SPECIFIED?

    294	001144	001023 				BNE	15$		; IF NE, YES

    295	001146	012764 	000000G	000046 		MOV	#$DFLIB,F.DFNB(R4) ; SET SYSTEM LIBRARY DFNB

    296	001154	012764 	000000G	000044 		MOV	#$DSPLB,F.DSPT(R4) ; SET DATA STRING POINTER

    297	001162	010400 				MOV	R4,R0		; GET FDB ADDRESS

    298	001164	005067 	000000G			CLR	$LIBNM		; ASSUME PARSE/FIND FAILURE

    299	001170					CALL	$PRFND		; PARSE/FIND THE FILE

    300	001174	103407 				BCS	15$		; IF C/S PARSE/FIND FAILED

    301	001176					CALL	$ALELD		; ALLOCATE ELEMENT DESCRIPTOR

    302	001202	010167 	000000G			MOV	R1,$LIBNM	; SAVE VIRTUAL ADDRESS OF LIBRARY DESCRIPTOR

    303	001206	016760 	000000G	000000G		MOV	$LBSWT,E$LSWT(R0) ; SET LIBRARY FILE SWITCH WORD

    304	001214				15$:				;

    305	001214	012664 	000044 			MOV	(SP)+,F.DSPT(R4) ; RESTORE DATASET POINTER

    306	001220	012664 	000046 			MOV	(SP)+,F.DFNB(R4) ; RESTORE DEFAULT NAMEBLOCK POINTER

    307	001224					RETURN			;

    308	001226				20$:				;

    309	001226	016402 	000000G			MOV	R$NAME(R4),R2	; GET NAME STRING ADDRESS

    310	001232	012701 	000000C			MOV	#<S$V2*400!E$R57>,R1 ; PARSE/FIND FAILURE

    311	001236					CALL	$ERMSG		; FATAL-NO RETURN

    312

    313					;++036

    314					;++036 PARSE OUTPUT FILE SPECIFICATION

    315					;++036

    316

    317	001242				PARSE:				;++036

    318	001242	010400 				MOV	R4,R0		;++036 GET ADDRESS OF FDB

    319	001244					CALL	$PARSE		;++036 PARSE FILE

    320	001250	103007 				BCC	10$		;++036 IF C/C OK

    321	001252	012701 	000000C			MOV	#<S$V0*400!E$R11>,R1 ;++036 GET ERROR/SEVERITY

    322	001256	016402 	000000G			MOV	R$NAME(R4),R2	;++036 FILE NAME

    323	001262					CALL	$ERMSG		;++036 OUTPUT ERROR MESSAGE

    324	001266	000405 				BR	20$		;

    325	001270				10$:				;++036

    326	001270	026027 	000134 	046116 		CMP	F.FNB+N.DVNM(R0),#"NL ; NULL DEVICE?

    327	001276	000241 				CLC			; ASSUME NO

    328	001300	001001 				BNE	30$		; IF NE NO

    329	001302				20$:				;

    330	001302	000261 				SEC			; SET CARRY

    331	001304				30$:				;

    332	001304					RETURN			;++036

    333

    334

    335		000001 				.END

BLDSG	MACRO M1110  22-AUG-78 01:39  PAGE 3-6

SYMBOL TABLE



B.BBFS= 000010   	FD.COM= 020000   	F.EOBB= 000032   	N.DVNM= 000032   	$BLDSF  001020RG

B.BFST= 000015   	FD.CR = 000002   	F.ERR = 000052   	N.FID = 000000   	$BLDSG  000062RG

B.NXBD= 000012   	FD.DIR= 000010   	F.FACC= 000043   	N.FNAM= 000006   	$CRFNM= ****** GX

B.VBN = 000004   	FD.FTN= 000001   	F.FFBY= 000014   	N.FTYP= 000014   	$CRODV= ****** GX

CH.AND= 000001   	FD.F11= 040000   	F.FNAM= 000110   	N.FVER= 000016   	$CROUN= ****** GX

CR    = 000015   	FD.INS= 000010   	F.FNB = 000102   	N.NEXT= 000022   	$CVRL = ****** GX

CRFEX   000004R  	FD.ISP= 002000   	F.FTYP= 000116   	N.STAT= 000020   	$DFINP= ****** GX

CR$EF = ****** GX	FD.MNT= 100000   	F.FVER= 000120   	N.UNIT= 000034   	$DFLBS= ****** GX

CS.DIF= 000002   	FD.OSP= 004000   	F.HIBK= 000004   	ODTDR   000024R  	$DFLIB= ****** GX

CS.DVF= 000004   	FD.PLC= 000004   	F.LUN = 000042   	ODTDS   000006R  	$DFMAP= ****** GX

CS.EQU= 000040   	FD.PRN= 000004   	F.MBCT= 000054   	ODTDV   000022R  	$DFNB = ****** GX

CS.INP= 000001   	FD.PSE= 010000   	F.MBC1= 000055   	ODTFE   000040R  	$DFTSK= ****** GX

CS.MOR= 000020   	FD.RAH= 000001   	F.MBFG= 000056   	ODTFN   000031R  	$DSPLB= ****** GX

CS.NMF= 000001   	FD.RAN= 000002   	F.NRBD= 000024   	PARSE   001242R  	$ERMSG= ****** GX

CS.OUT= 000002   	FD.REC= 000001   	F.NREC= 000030   	R$NAME= ****** GX	$FRHD = ****** GX

CS.WLD= 000010   	FD.RWM= 000001   	F.OVBS= 000030   	R$SWBK= ****** GX	$GTCML= ****** GX

C.CMLD= 000002   	FD.SDI= 000020   	F.RACC= 000016   	R$SWTH= ****** GX	$INIPT= ****** GX

C.DEVD= 000006   	FD.SQD= 000040   	F.RATT= 000001   	R$$11M= 000000   	$INITL= ****** GX

C.DIRD= 000012   	FD.TTY= 000004   	F.RCNM= 000034   	R.FIX = 000001   	$INPSW= ****** GX

C.DSDS= 000006   	FD.WBH= 000002   	F.RCTL= 000017   	R.SEQ = 000003   	$LBSWT= ****** GX

C.FILD= 000016   	FF    = 000014   	F.RSIZ= 000002   	R.VAR = 000002   	$LCKPG= ****** GX

C.MKW1= 000024   	FF.CHR= 000005   	F.RTYP= 000000   	SPA   = 000040   	$LIBNM= ****** GX

C.MKW2= 000026   	FF.NV = 000003   	F.SEQN= 000100   	SP$OL = ****** GX	$LNKVM= ****** GX

C.SIZE= 000054   	FF.POE= 000002   	F.SPDV= 000072   	STBNM   000060R  	$MAPNM= ****** GX

C.STAT= 000001   	FF.RWD= 000001   	F.SPUN= 000074   	ST$BF = ****** GX	$MAPSW= ****** GX

C.SWAD= 000022   	FF.RWF= 000006   	F.STBK= 000036   	SWPT    000040R  	$MAPTD= ****** GX

C.TYPR= 000000   	FF.SPC= 000004   	F.UNIT= 000136   	SWTB    000046R  	$MAPTM= ****** GX

E$LNXT= ****** GX	FO.APD= 000106   	F.URBD= 000020   	SW$DA = ****** GX	$MPFIL= ****** GX

E$LSWT= ****** GX	FO.MFY= 000002   	F.VBN = 000064   	SW$NH = ****** GX	$MRFLG  000000RG

E$R11 = ****** GX	FO.RD = 000001   	F.VBSZ= 000060   	SW$PI = ****** GX	$NXTFL= ****** GX

E$R2  = ****** GX	FO.UPD= 000006   	G.LUCW= 000004   	S$GELT= ****** GX	$PARSE= ****** GX

E$R3  = ****** GX	FO.WRT= 000016   	G.LUFB= 000003   	S$V0  = ****** GX	$PRFND= ****** GX

E$R57 = ****** GX	F.ACTL= 000076   	G.LUNA= 000000   	S$V2  = ****** GX	$PRVAP= ****** GX

FA.APD= 000100   	F.ALOC= 000040   	G.LUNU= 000002   	S.BFHD= 000020   	$QUIT = ****** GX

FA.CRE= 000010   	F.BBFS= 000062   	HT    = 000011   	S.FATT= 000016   	$RLCB = ****** GX

FA.DLK= 001000   	F.BDB = 000070   	LF    = 000012   	S.FDB = 000140   	$RTSEG= ****** GX

FA.ENB= 100000   	F.BGBC= 000057   	MAPNM   000056R  	S.FNAM= 000006   	$SAVRG= ****** GX

FA.EXC= 002000   	F.BKDN= 000026   	MA$PF = ****** GX	S.FNB = 000036   	$SCANI= ****** GX

FA.EXT= 000004   	F.BKDS= 000020   	M$XAPR= ****** GX	S.FNBW= 000017   	$SCANO= ****** GX

FA.NSP= 000100   	F.BKEF= 000050   	NB.DEV= 000200   	S.FNTY= 000004   	$SCANR  000002RG

FA.POS= 010000   	F.BKP1= 000051   	NB.DIR= 000100   	S.FTYP= 000002   	$STBSW= ****** GX

FA.RD = 000001   	F.BKST= 000024   	NB.NAM= 000004   	S.NFEN= 000020   	$SWTCH= ****** GX

FA.RWD= 004000   	F.BKVB= 000064   	NB.SD1= 000400   	TSKNM   000054R  	$SYNTX= ****** GX

FA.SEQ= 040000   	F.CHR = 000075   	NB.SD2= 001000   	TS$KF = ****** GX	$TSKNM= ****** GX

FA.SHR= 000040   	F.CNTG= 000034   	NB.SNM= 000040   	T$MSIZ= ****** GX	$TSKSW= ****** GX

FA.TMP= 000020   	F.DFNB= 000046   	NB.STP= 000020   	VT    = 000013   	$UNLPG= ****** GX

FA.WCK= 020000   	F.DSPT= 000044   	NB.SVR= 000010   	$ALBLK= ****** GX	$$    = 000001

FA.WRT= 000002   	F.DVNM= 000134   	NB.TYP= 000002   	$ALELD= ****** GX	$$$OST= 000014

FD.BLK= 000010   	F.EFBK= 000010   	NB.VER= 000001   	$ALELO= ****** GX	...GBL= 000000

FD.CCL= 000002   	F.EFN = 000050   	N.DID = 000024   	$BCNTL= ****** GX	...TPC= 000140



. ABS.	000000	   000

      	001306	   001

ERRORS DETECTED:  0



VIRTUAL MEMORY USED:  2826 WORDS  ( 12 PAGES)

DYNAMIC MEMORY:  3828 WORDS  ( 14 PAGES)

ELAPSED TIME:  00:00:25

BLDSG	MACRO M1110  22-AUG-78 01:39  PAGE 3-7

SYMBOL TABLE



OBJ$:BLDSG,LIS$:BLDSG/-SP=SRC$:MACFLM,FCSPR,BLDSG

