P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3





      1						.TITLE	P3LBS

      2						.IDENT	/06/

      3					                                                                                ;**-1

      4					;

      5					; COPYRIGHT (C) 1976

      6					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

      7					;

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

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

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

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

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

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

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

     15					; IN DEC.

     16					;

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

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

     19					; EQUIPMENT CORPORATION.

     20					;

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

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

     23					;

     24					; VERSION 06

     25					;

     26					; C. MONIA 24-OCT-75

     27					;

     28					; MODIFICATIONS:

     29					;

     30					; NO.		DATE		PROGRAMMER

     31					; ---		----		----------

     32					;

     33					; 043		23-DEC-75	C. MONIA

     34					; 058		22-APR-76	C. MONIA

     35					; 059		07-MAY-76	C. MONIA

     36					; 071		23-SEP-76	C. MONIA

     37					; 072		18-OCT-76	C. MONIA

     38					; 074		21-OCT-76	C. MONIA

     39					;

     40					; PHASE 3 MODULE SCAN AND LIBRARY SEARCH

     41					;

     42					; EQUATED SYMBOLS

     43					;

     44

     45		000026 			EPALO=26			;NUMBER EPT ENTRIES ALLOCATED

     46		000030 			EPAVL=30			;NUMBER EPT ENTRIES AVAILABLE

     47		000024 			EPSTR=24			;STARTING BLOCK NUMBER OF EPT

     48		000036 			MNALO=36			; NUMBER OF MNT ENTRIES ALLOCATED

     49		000040 			MNAVL=40			; NUMBER OF MNT ENTRIES AVAILABLE

     50		000034 			MNSTR=34			; STARTING BLOCK NUMBER OF MNT

     51

     52					;

     53					; MACRO LIBRARY CALLS

     54					;

     55

     56						.MCALL	CLOSE$,DIR$,GET$S,OFNB$R,QIOW$

     57					;

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-1





     58					; LOCAL DATA

     59					;

     60

     61	000000					.PSECT	$$P3DT,D,GBL

     62

     63	000000				ALSW:	.BLKW	1		; LIBRARY ELEMENT AUTOLOAD SWITCH

     64	000002				BFBAS:	.BLKW	1		; BASE ADDRESS OF EPT TABLE

     65	000004				BFEND:	.BLKW	1		; LAST EPT ENTRY

     66	000006				BFSIZ:	.BLKW	1		; SIZE OF LIBRARY BUFFER

     67	000010				BFTOP:	.BLKW	1		;ADDRESS OF ACTUAL LAST ENTRY IN SEARCH BUFFER

     68	000012				BKPBF:	.BLKW	1		; BLOCKS PER BUFFER

     69	000014				CRVEL:	.BLKW	1		; VIRTUAL ADDRESS OF PARENT MODULE

     70	000016				EPBLK:	.BLKW	1		;STARTING VIRTUAL BLOCK OF EPT

     71	000020				EPHBK:	.BLKW	1		;HIGHEST BLOCK IN EPT PLUS 1

     72	000022				EPNUM:	.BLKW	1		;NUMBER OF EPT ENTRIES

     73	000024				LBRBF:	.BLKW	1		;CURRENT SEARCH BUFFER NUMBER

     74	000026				LBMOD:	.BLKW	17.		; LIBRARY MODULE LIST

     75	000070				LCLSYM:	.BLKW	2		; SYMBOL NAME

     76	000074				SRCDR:	.BLKW	1		;++015 LIBRARY SEARCH DIRECTION FLAG

     77	000076				SLSW:	.BLKW	1		;++008 SELECTIVE SYMBOL EXTRACTION FLAG

     78

     79	000000					.PSECT

     80

     81	000000				LBQIO:	QIOW$	IO.RVB,1,1,,LBSTS,,<0,0,0,0,0,0> ; QIO DPB FOR SEARCH READ

     82	000030				LBSTS:	.BLKW	2		; I/O STATUS BLOCK FOR SEARCH READ

     83	000034	001000 			$MXLBF::.WORD	512.		; MAXIMUM SIZE OF LIBRARY SEARCH BUFFER

     84

     85					;+

     86					; **-$P3LBS-SEARCH SYSTEM LIBRARY

     87					;

     88					; THIS SUBROUTINE IS CALLED FOR EACH SEGMENT IN THE TASK TO PERFORM

     89					; A SEARCH OF THE SYSTEM OBJECT MODULE LIBRARY.

     90					;

     91					; INPUTS:

     92					;

     93					;	NONE

     94					;

     95					; OUTPUTS:

     96					;

     97					;	NONE

     98					;

     99					;-

    100

    101	000036				$P3LBS::			;

    102	000036					SAVRG			; SAVE THE NON-VOLATILE REGISTERS

    103	000042					CALL	$WSINI		; INITIALIZE THE PATH LIST

    104	000046	016701 	000000G			MOV	$CRVSG,R1	; GET VIRTUAL ADDRESS OF SEGMENT

    105	000052					CALL	$WRMPG		; WRITE-MARK PAGE

    106	000056	016705 	000000G			MOV	$CRSEG,R5	;GET ADDRESS OF CURRENT SEGMENT

    107	000062	005765 	000000G			TST	S$GUND(R5)	;ANY UNDEFINED SYMBOLS?

    108	000066	001474 				BEQ	10$		;IF EQ NO

    109	000070	016701 	000000G			MOV	$LIBNM,R1	; GET VIRTUAL ADDRESS OF LIBRARY DESCRIPTOR

    110	000074					CALL	$CVRL		; CONVERT TO REAL ADDRESS

    111	000100					CALL	$LCKPG		; LOCK PAGE IN MEMORY

    112	000104	010046 				MOV	R0,-(SP)	; SAVE REAL ADDRESS OF DESCRIPTOR

    113	000106	016701 	000000G			MOV	$INPPT,R1	; GET RECORD BLOCK POINTER

    114	000112	010104 				MOV	R1,R4		; SAVE NAMEBLOCK POINTER

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-2





    115	000114					CALL	$STFNB		; SETUP FILE NAMEBLOCK

    116	000120					OFNB$R	R4		; OPEN LIBRARY FILE

    117	000134	103452 				BCS	20$		;IF CS OPEN FAILURE

    118	000136	012701 	000000G			MOV	#E$LLGH,R1	; SET DESCRIPTOR LENGTH

    119	000142	010103 				MOV	R1,R3		; SAVE LENGTH

    120	000144					CALL	$ALSVB		; ALLOCATE SMALL VIRTUAL BLOCK

    121	000150					CALL	$LCKPG		; LOCK PAGE IN CORE

    122	000154	010004 				MOV	R0,R4		; SAVE REAL ADDRESS OF CURRENT ELEMENT

    123	000156	010467 	000000G			MOV	R4,$CRELM	; SET ADDRESS OF CURRENT ELEMENT

    124	000162	010167 	000000G			MOV	R1,$CRVEL	; SET VIRTUAL ADDRESS OF CURRENT ELEMENT

    125	000166	016700 	000000G			MOV	$CRVSG,R0	; GET VIRTUAL ADDRESS OF SEGMENT

    126	000172	062700 	000000C			ADD	#<S$GELT/2>,R0	; POINT TO ELEMENT LISTHEAD

    127	000176	012702 	000000G			MOV	#E$LNXT,R2	; GET OFFSET TO NEXT

    128	000202					CALL	$LNKVM		; LINK ITEM TO ELEMENT LIST

    129	000206	010400 				MOV	R4,R0		; GET REAL ADDRESS OF DESCRIPTOR

    130	000210	012601 				MOV	(SP)+,R1	; GET REAL ADDRESS OF LIBRARY NAMEBLOCK

    131	000212				5$:				;

    132	000212	112120 				MOVB	(R1)+,(R0)+	; COPY BLOCK

    133	000214					SOB	R3,5$		;

    134	000220	016701 	000000G			MOV	$LIBNM,R1	; GET VIRTUAL ADDRESS OF DESCRIPTOR

    135	000224					CALL	$UNLPG		; UNLOCK PAGE

    136	000230	005067 	000076'			CLR	SLSW		;++008 CLEAR SELECTIVE SEARCH FLAG

    137	000234					CALL	LBSRC		; SEARCH LIBRARY

    138	000240					CLOSE$	$INPPT		; CLOSE LIBRARY FILE

    139	000250	016501 	000002G			MOV	S$GELT+2(R5),R1	; GET VIRTUAL ADDRESS OF LIBRARY ELEMENT

    140	000254					CALL	$UNLPG		; UNLOCK PAGE FROM MEMORY

    141	000260				10$:	RETURN			;

    142	000262	016002 	000000G		20$:	MOV	R$NAME(R0),R2	;GET ADDRESS OF NAME STRING

    143	000266	012701 				MOV	(PC)+,R1	;OPEN FAILURE

    144	000270	   000G	   000G			.BYTE	E$R11,S$V2	;FATAL-NO RETURN

    145	000272					CALL	$ERMSG		;OUTPUT ERROR MESSAGE

    146

    147					;+

    148					; **-P3SCN-SCAN AN OBJECT MODULE

    149					;

    150					; THIS ROUTINE IS CALLED FOR EACH SEGMENT IN THE ALLOCATION TO INITI-

    151					; ATE THE SCAN OF A RELOCATABLE OBJECT FILE.

    152					;

    153					; INPUTS:

    154					;

    155					;	NONE

    156					;

    157					; OUTPUTS:

    158					;

    159					;	NONE

    160					;

    161					;-

    162

    163	000276				$P3SCN::			;

    164	000276					SAVRG			; SAVE THE NONVOLATILE REGISTERS

    165	000302					CALL	$WSINI		; INITIALIZE PATH LIST

    166	000306	010667 	000000G			MOV	SP,$WSEXT	; SET TO SEARCH THE ENTIRE STRUCTURE

    167	000312	016701 	000000G			MOV	$CRVSG,R1	; GET VIRTUAL ADDRESS OF SEGMENT

    168	000316					CALL	$WRMPG		; WRITE MARK PAGE

    169	000322	016705 	000000G			MOV	$CRSEG,R5	;GET ADDR OF CURRENT SEGMENT

    170	000326	012746 	000000G			MOV	#$STINP,-(SP)	;SET ADDRESS OF INPUT SET UP ROUTINE

    171	000332				10$:	CALL	@(SP)+		;SET UP NEXT INPUT FILE

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-3





    172	000334	103003 				BCC	20$		;IF CC GOT ONE

    173	000336	005067 	000000G			CLR	$WSEXT		; SET TO RESTRICT TREE SEARCH ON FUTURE PASSES

    174	000342					RETURN			;

    175	000344	016704 	000000G		20$:	MOV	$CRELM,R4	;GET ADDRESS OF ELEMENT DESCRIPTOR

    176	000350	032764 	000000G	000000G		BIT	#SW$LB,E$LSWT(R4);LIBRARY FILE?

    177	000356	001042 				BNE	40$		;IF NE YES

    178	000360	032764 	000000G	000000G		BIT	#SW$CC,E$LSWT(R4);CONCATENATED FILE?

    179	000366	001431 				BEQ	30$		;IF EQ NO

    180	000370	016701 	000000G			MOV	$CRVEL,R1	; GET VIRTUAL ADDRESS OF DESCRIPTOR

    181	000374	010146 				MOV	R1,-(SP)	; SAVE THE VIRTUAL ADDRESS

    182	000376					CALL	$WRMPG		; WRITE-MARK THIS PAGE

    183	000402					CALL	$ACMOD		; ALLOCATE CONCATENATED MODULE DESCRIPTOR

    184	000406					CALL	$LCKPG		; LOCK PAGE IN MEMORY

    185	000412	010164 	000000G			MOV	R1,E$LMOD(R4)	; SET LINK TO FIRST MODULE

    186	000416	010167 	000000G			MOV	R1,$CRVEL	; SET VIRTUAL ADDRESS OF CURRENT ELEMENT

    187	000422	010004 				MOV	R0,R4		;SET ADDRESS OF CURRENT DESCRIPTOR

    188	000424	011601 				MOV	(SP),R1		; GET VIRTUAL ADDRESS OF PARENT ELEMENT

    189	000426					CALL	$UNLPG		; FREE UP THE PAGE BUFFER

    190	000432					CALL	PRCELM		; PROCESS THE ELEMENT

    191	000436	012601 				MOV	(SP)+,R1	; RETRIEVE VIRTUAL ADDRESS OF PARENT ELEMENT

    192	000440					CALL	$CVLOK		; RESTORE PAGE STATE

    193	000444	010067 	000000G			MOV	R0,$CRELM	; RESTORE CURRENT ELEMENT

    194	000450	000402 				BR	35$		;

    195	000452				30$:	CALL	PRCELM		;PROCESS ELEMENT

    196	000456				35$:				;

    197	000456					CALL	$RLREF		; FLUSH THE REFERENCE LIST

    198	000462	000723 				BR	10$		;

    199

    200					;

    201					; LIBRARY FILE

    202					;

    203

    204	000464				40$:				;++008

    205	000464	005067 	000076'			CLR	SLSW		;++008 ASSUME ALL SYMBOLS WANTED

    206	000470	032764 	000000G	000000G		BIT	#SW$SS,E$LSWT(R4) ;++008 NOW TEST FOR SURE

    207	000476	001403 				BEQ	50$		;++008 YES -- ALL SET

    208	000500	012767 	000000G	000076'		MOV	#SW$SS,SLSW	;++008 NO -- SET SELECTIVE EXTRACTION SWITCH

    209	000506				50$:

    210	000506					CALL	LBSRC		;++008 SEARCH LIBRARY

    211	000512	000707 				BR	10$		;

    212

    213					;

    214					; LIBRARY FILE SEARCH ROUTINE

    215					;

    216

    217	000514				LBSRC:				;

    218	000514	016404 	000002G			MOV	E$LIDT+2(R4),R4	; GET ADDRESS OF MODULE NAME LIST

    219	000520	016701 	000000G			MOV	$CRVEL,R1	; GET VIRTUAL ADDRESS OF LIBRARY ELEMENT

    220	000524	010146 				MOV	R1,-(SP)	; SAVE ADDRESS OF PARENT ELEMENT

    221	000526	062701 	000000C			ADD	#<E$LMOD-E$LNXT>/2,R1 ; CALCULATE VIRTUAL ADDRESS OF FIRST LINK

    222	000532	010167 	000000G			MOV	R1,$CRVEL	; RESET VIRTUAL ELEMENT ADDRESS

    223	000536					CALL	$UNLPG		; FREE UP THE PAGE BUFFER

    224	000542					CALL	LBSR		; SEARCH LIBRARY

    225	000546	012601 				MOV	(SP)+,R1	; GET ADDRESS OF PARENT ELEMENT

    226	000550					CALL	$CVLOK		; RESTORE PAGE STATE

    227	000554	010067 	000000G			MOV	R0,$CRELM	; RESET ADDRESS OF DESCRIPTOR

    228	000560					CALLR	$RLREF		; FLUSH REFERENCE LIST

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-4





    229

    230					;

    231					; SEARCH LIBRARY

    232					;

    233

    234	000564				LBSR:				;

    235	000564	012700 	000022G			MOV	#$P3BF+S.BFHD+2,R0 ; GET ADDRESS OF TEMP BUFFER

    236	000570	012701 	000001 			MOV	#1,R1		; GET VBN

    237	000574	012702 	001000 			MOV	#512.,R2	; GET BYTE COUNT

    238	000600					CALL	LBSRD		; READ FILE HEADER

    239	000604	103503 				BCS	20$		; IF C/S I/O ERROR

    240	000606	010001 				MOV	R0,R1		; POINT TO START OF BUFFER

    241	000610	005704 				TST	R4		; SEARCHING ON MODULE NAMES?

    242	000612	001402 				BEQ	5$		; IF EQ NO

    243	000614	062701 	000010 			ADD	#<MNSTR-EPSTR>,R1 ; OFFSET TO MNT PARAMETERS

    244	000620				5$:				;

    245	000620	016167 	000024 	000016'		MOV	EPSTR(R1),EPBLK	;SET STARTING BLOCK OF EPT

    246	000626	016102 	000026 			MOV	EPALO(R1),R2	;GET NUMBER OF EPT ENTRIES ALLOCATED

    247	000632	166102 	000030 			SUB	EPAVL(R1),R2	;SUBTRACT OUT NUMBER AVAILABLE

    248	000636	001461 				BEQ	10$		;IF EQ NO ENTRIES IN LIBRARY

    249	000640	010267 	000022'			MOV	R2,EPNUM	;SET NUMBER OF EPT ENTRIES IN LIBRARY

    250	000644	062702 	000077 			ADD	#63.,R2		; ROUND UP TO NEXT EPT BLOCK

    251

    252		000006 				.REPT	6

    253						ASR	R2		; CALCULATE NUMBER OF EPT BLOCKS

    254						.ENDR

    255

    256	000664	066702 	000016'			ADD	EPBLK,R2	;CALCULATE HIGHEST BLOCK IN EPT PLUS 1

    257	000670	010267 	000020'			MOV	R2,EPHBK	;SET HIGHEST BLOCK IN EPT

    258	000674	016701 	000022'			MOV	EPNUM,R1	; GET NUMBER OF ENTRY POINTS

    259	000700	006301 				ASL	R1		; CONVERT TO EPT SIZE IN WORDS

    260	000702	006301 				ASL	R1		; ...

    261	000704	062701 	000377 			ADD	#377,R1		; ROUND TO NEXT BLOCK

    262	000710	105001 				CLRB	R1		; CLEAR EXCESS BITS

    263	000712	006301 				ASL	R1		; CONVERT TO BYTES

    264	000714	020167 	177114 			CMP	R1,$MXLBF	; EXCEED MAX LIBRARY BUFFER SIZE?

    265	000720	101402 				BLOS	7$		; IF LOS YES

    266	000722	016701 	177106 			MOV	$MXLBF,R1	; GET MAX SIZE

    267	000726				7$:				;

    268	000726	010167 	000006'			MOV	R1,BFSIZ	; SAVE SIZE OF BUFFER

    269	000732	010103 				MOV	R1,R3		; ...

    270	000734					CALL	$ALBLK		; ALLOCATE LIBRARY EPT BUFFER

    271	000740	010067 	000002'			MOV	R0,BFBAS	; SAVE BASE ADDRESS

    272	000744	010301 				MOV	R3,R1		; COPY SIZE OF BUFFER

    273	000746	162703 	000010 			SUB	#10,R3		; BACK OFF LENGTH OF BUFFER

    274	000752	060003 				ADD	R0,R3		; POINT TO LAST EPT ENTRY

    275	000754	010367 	000004'			MOV	R3,BFEND	; SAVE ENDING ADDRESS

    276	000760	000301 				SWAB	R1		; DIVIDE BUFFER SIZE BY 256

    277	000762	006201 				ASR	R1		; CONVERT TO DISK BLOCKS

    278	000764	010167 	000012'			MOV	R1,BKPBF	; SAVE BLOCKS PER BUFFER

    279	000770	012702 	000001 			MOV	#1,R2		;SET TO READ FIRST BUFFER FROM EPT

    280	000774					CALL	LBRD		;READ FIRST BUFFER

    281	001000	103015 				BCC	LBSRC1		;IF CC OKAY

    282	001002				10$:				;

    283	001002	012701 	000000C			MOV	#<S$V2*400!E$R79>,R1 ; ASSUME LIBRARY MODULE REQUEST

    284	001006	005704 				TST	R4		; SEARCHING ON MODULE NAMES

    285	001010	001003 				BNE	30$		; IF NE YES

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-5





    286	001012					RETURN			;

    287	001014				20$:				;

    288	001014	012701 	000000C			MOV	#<S$V2*400!E$R10>,R1 ; I/O ERROR

    289	001020				30$:				;

    290	001020	016700 	000000G			MOV	$INPPT,R0	; GET ADDRESS OF RECORD BLOCK

    291	001024	016002 	000000G			MOV	R$NAME(R0),R2	; GET ADDRESS OF NAME STRING

    292	001030					CALL	$ERMSG		; OUTPUT ERROR MESSAGE, NO RETURN

    293

    294					;

    295					; SEARCH FOR UNDEFINED SYMBOLS IN EPT OR REQUESTED MODULES

    296					; IN MNT

    297					;

    298

    299	001034				LBSRC1:				;

    300	001034	016700 	000000G			MOV	$INPPT,R0	; POINT TO INPUT FILE SWITCH WORD

    301	001040	016002 	000000G			MOV	R$SWTH(R0),R2	; GET FILE SWITCH WORD

    302	001044	042702 	000000C			BIC	#^C<SW$AL!SW$DA!SW$MA>,R2 ; SAVE SWITCHES TO PROPAGATE

    303	001050	010267 	000000'			MOV	R2,ALSW		; SAVE SWITCHES

    304	001054	010401 				MOV	R4,R1		; GET ADDRESS OF MODULE NAME LIST

    305	001056	001434 				BEQ	30$		; IF EQ SEARCH FOR UNDEFINED SYMBOLS

    306	001060					CALL	$CVRL		; CONVERT TO REAL ADDRESS

    307	001064	012701 	000026'			MOV	#LBMOD,R1	; GET ADDRESS OF LOCAL STORE

    308	001070	010146 				MOV	R1,-(SP)	; SAVE ADDRESS

    309	001072				10$:				;

    310	001072	012021 				MOV	(R0)+,(R1)+	; TRANSFER LIST TO LOCAL STORE

    311	001074	001402 				BEQ	20$		; IF EQ HAVE ALL OF LIST

    312	001076	012021 				MOV	(R0)+,(R1)+	; MOVE SECOND HALF OF NAME

    313	001100	000774 				BR	10$		;

    314	001102				20$:				;

    315	001102	012600 				MOV	(SP)+,R0	; GET MODULE NAME LIST POINTER

    316	001104	012067 	000070'			MOV	(R0)+,LCLSYM	; SETUP LOCAL SYMBOL DESCRIPTOR

    317	001110	001466 				BEQ	50$		; IF EQ DONE WITH LIST

    318	001112	012067 	000072'			MOV	(R0)+,LCLSYM+2	; SET SECOND HALF OF MODULE NAME

    319	001116	010046 				MOV	R0,-(SP)	; SAVE LIST POINTER

    320	001120					CALL	LBSRC2		; SEARCH LIBRARY

    321	001124	103006 				BCC	25$		; IF C/C FOUND MODULE

    322	001126	012701 	000000C			MOV	#<S$V2*400!E$R77>,R1 ; GET ERROR/SEVERITY

    323	001132	012702 	000070'			MOV	#LCLSYM,R2	; POINT TO MODULE NAME

    324	001136					CALL	$ERMSG		; FATAL, NO RETURN

    325	001142				25$:				;

    326	001142					CALL	LBSRC3		; PROCESS MODULE                                ;**-4

    327	001146	000755 				BR	20$		; GO AGAIN                                      ;**-1

    328	001150				30$:				;

    329	001150	005765 	000000G			TST	S$GUND(R5)	; ANY UNDEFINED SYMBOLS

    330	001154	001444 				BEQ	50$		; IF EQ NO

    331	001156	010500 				MOV	R5,R0		;++042 GET ADDRESS OF SEGMENT DESCRIPTOR

    332	001160	062700 	000000G			ADD	#S$GSTB,R0	;++042 POINT TO SYMBOL TABLE

    333	001164	012746 	000000G			MOV	#$ISED,-(SP)	;++042 PUSH ADDRESS OF SYMBOL EDIT ROUTINE

    334	001170				32$:				;++042

    335	001170					CALL	@(SP)+		;++042 GET NEXT SYMBOL

    336	001172	103407 				BCS	35$		;++042 IF C/S  DONE

    337	001174	132760 	000000C	000000G		BITB	#<SY$DEF!SY$WK>,S$YFLG(R0) ; DEFINITION OR WEAK REFERENCE?

    338	001202	001372 				BNE	32$		;++042 IF NE YES

    339	001204					CALL	$BLDRF		; BUILD REFERENCE LIST ENTRY

    340	001210	000767 				BR	32$		;++042 GO AGAIN

    341	001212				35$:				;++042

    342	001212	012746 	000000G			MOV	#$EDRF,-(SP)	; PUSH ADDRESS OF SYMBOL EDIT ROUTINE

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-6





    343	001216				40$:				;

    344	001216					CALL	@(SP)+		; GET NEXT SYMBOL

    345	001220	103422 				BCS	50$		; IF C/S DONE

    346	001222	016067 	000000G	000070'		MOV	S$YM(R0),LCLSYM	; SETUP LOCAL DESCRIPTOR WITH SYMBOL

    347	001230	016067 	000002G	000072'		MOV	S$YM+2(R0),LCLSYM+2 ;

    348	001236	010146 				MOV	R1,-(SP)	;++042 SAVE VIRTUAL ADDRESS OF SYMBOL

    349	001240					CALL	LBSRC2		; SEARCH LIBRARY

    350	001244	012601 				MOV	(SP)+,R1	;++042 RESTORE VIRTUAL ADDRESS OF SYMBOL

    351	001246	005226 				INC	(SP)+		; CLEAN STACK

    352	001250	103003 				BCC	43$		; IF C/CLEAR FOUND EPT

    353	001252					CALL	$DELRF		; REMOVE ENTRY FROM REFERENCE LIST

    354	001256	000755 				BR	35$		; GO AGAIN

    355	001260				43$:				;++042

    356	001260					CALL	LBSRC3		; PROCESS ELEMENT

    357	001264	000752 				BR	35$		; GO AGAIN

    358	001266				50$:				;

    359	001266	012700 	000000G			MOV	#$FRHD,R0	; GET LISTHEAD ADDRESS

    360	001272	016701 	000006'			MOV	BFSIZ,R1	; GET SIZE OF BUFFER

    361	001276	016702 	000002'			MOV	BFBAS,R2	; GET BUFFER ADDRESS

    362	001302					CALLR	$RLCB		; RELEASE CORE BLOCK

    363

    364					;

    365					; SEARCH LIBRARY FILE FOR MODULE NAME OR SYMBOL

    366					;

    367					; INPUTS:

    368					;

    369					;	LCLSYM,LCLSYM+2 CONTAIN REQUESTED NAME

    370					;

    371					;

    372					; OUTPUTS:

    373					;

    374					;	C-BIT SET=NAME NOT IN LIBRARY

    375					;	R0=0 MORE MATCHES POSSIBLE

    376					;	R0=-1 NO MORE MATCHES ARE POSSIBLE

    377					;

    378					;	C-BIT CLEAR=FOUND MATCH IN EPT OR MNT

    379					;	R0=0

    380					;	R3=POINTER TO EPT OR MNT ENTRY

    381					;

    382

    383	001306				LBSRC2:				;

    384	001306	010446 				MOV	R4,-(SP)	; SAVE R4 AND R5

    385	001310	010546 				MOV	R5,-(SP)	; ...

    386	001312	005046 				CLR	-(SP)		; SET MORE-SYMBOLS INDICATOR

    387	001314	005067 	000074'			CLR	SRCDR		;++015 CLEAR SEARCH DIRECTION FLAG

    388	001320				40$:				;

    389	001320	016700 	000002'			MOV	BFBAS,R0	; GET BASE ADDRESS OF SEARCH BUFFER

    390	001324	010001 				MOV	R0,R1		;COPY BASE ADDRESS

    391	001326	042700 	177770 			BIC	#177770,R0	;CLEAR EXCESS BITS

    392	001332	026711 	000070'			CMP	LCLSYM,(R1)	;SYMBOL LOWER THAN BUFFER?

    393	001336	101014 				BHI	50$		;IF HI NO

    394	001340	103404 				BLO	45$		;IF LO READ BUFFER BACKWARD

    395	001342	026761 	000072'	000002 		CMP	LCLSYM+2,2(R1)	;SYMBOL LOWER THAN BUFFER?

    396	001350	103007 				BHIS	50$		;IF HIS NO

    397	001352				45$:

    398	001352	005367 	000074'			DEC	SRCDR		;++015 DECREMENT FLAG FOR BACKWARD SEARCH

    399	001356	002057 				BGE	110$		;++015 LAST SEARCHED FORWARD, NOT IN LIBRARY.

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-7





    400	001360					CALL	LBRDB		; READ BUFFER BACKWARD IN FILE

    401	001364	103454 				BCS	110$		;IF CS NO BACKWARD BUFFER

    402	001366	000754 				BR	40$		;TRY AGAIN

    403	001370	016702 	000010'		50$:	MOV	BFTOP,R2	;GET ADDRESS OF TOP ENTRY IN BUFFER

    404	001374	026712 	000070'			CMP	LCLSYM,(R2)	;LOWER THAN TOP OF BUFFER?

    405	001400	103414 				BLO	60$		;IF LO YES

    406	001402	101004 				BHI	55$		;IF HI NO

    407	001404	026762 	000072'	000002 		CMP	LCLSYM+2,2(R2)	;LOWER THAN TOP OF BUFFER?

    408	001412	101407 				BLOS	60$		;IF LOS YES

    409	001414				55$:

    410	001414	005267 	000074'			INC	SRCDR		;++015 INCREMENT FLAG FOR FORWARD SEARCH

    411	001420	003436 				BLE	110$		;++015 LAST SEARCHED BACKWARD, NOT THERE

    412	001422					CALL	LBRDF		; READ BUFFER FORWARD IN FILE

    413	001426	103432 				BCS	100$		;IF CS NO MORE MATCHES ARE POSSIBLE

    414	001430	000733 				BR	40$		;TRY AGAIN

    415	001432	010103 			60$:	MOV	R1,R3		;CALCULATE TRAIL INDEX HALFWAY IN BUFFER

    416	001434	060203 				ADD	R2,R3		;

    417	001436	006003 				ROR	R3		;HALVE RESULT

    418	001440	042703 	000007 			BIC	#7,R3		;CLEAR LOW BITS

    419	001444	050003 				BIS	R0,R3		;SET PROPER OFFSET BITS

    420	001446	021367 	000070'			CMP	(R3),LCLSYM	;FIRST HALF MATCH?

    421	001452	101012 				BHI	80$		;IF HI LOWER UPPER LIMIT

    422	001454	103405 				BLO	70$		;IF LO RAISE LOWER LIMIT

    423	001456	026367 	000002 	000072'		CMP	2(R3),LCLSYM+2	;SECOND HALF MATCH?

    424	001464	001415 				BEQ	120$		;IF EQ YES

    425	001466	101004 				BHI	80$		;IF HI LOWER UPPER LIMIT

    426	001470	010301 			70$:	MOV	R3,R1		;RAISE LOWER LIMIT

    427	001472	062701 	000010 			ADD	#10,R1		;REDUCE BY ONE MORE ENTRY

    428	001476	000403 				BR	90$		;

    429	001500	010302 			80$:	MOV	R3,R2		;LOWER UPPER LIMIT

    430	001502	162702 	000010 			SUB	#10,R2		;REDUCE BY ONE MORE ENTRY

    431	001506	020102 			90$:	CMP	R1,R2		;ANY MORE TO SEARCH?

    432	001510	101750 				BLOS	60$		;IF LOS YES

    433	001512	000401 				BR	110$		;SYMBOL NOT IN LIBRARY

    434	001514				100$:				;

    435	001514	005116 				COM	(SP)		; SET NOT-IN-LIBRARY FLAG

    436	001516				110$:				;

    437	001516	000261 				SEC			; SET NOT-FOUND FLAG

    438	001520				120$:				;

    439	001520	012600 				MOV	(SP)+,R0	; GET FLAG

    440	001522	012605 				MOV	(SP)+,R5	; RESTORE R5 AND R4

    441	001524	012604 				MOV	(SP)+,R4	;

    442	001526					RETURN			;

    443

    444					;

    445					; PROCESS LIBRARY ELEMENT

    446					;

    447					; INPUTS:

    448					;

    449					;	R3=POINTER TO ENTRY IN MNT OR EPT

    450					;

    451					; OUTPUTS:

    452					;

    453					;	THE SPECIFIED LIBRARY MODULE IS PROCESSED

    454					;

    455					;

    456

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-8





    457	001530				LBSRC3:				;

    458	001530	012701 	000004G			MOV	#E$LMND+4,R1	;GET SIZE OF LIBRARY ELEMENT DESCRIPTOR

    459	001534					CALL	$ALSVB		; ALLOCATE VIRTUAL BLOCK

    460	001540					CALL	$LCKPG		; LOCK PAGE IN MEMORY

    461	001544	010046 				MOV	R0,-(SP)	; SAVE REAL ADDRESS

    462	001546	010146 				MOV	R1,-(SP)	; SAVE VIRTUAL ADDRESS

    463	001550	016701 	000000G			MOV	$CRVEL,R1	; GET VIRTUAL ADDRESS OF CURRENT

    464	001554	062701 	000000C			ADD	#<E$LNXT>/2,R1	; POINT TO LINK NEXT

    465	001560					CALL	$CVRL		; CONVERT TO REAL ADDRESS

    466	001564					CALL	$WRMPG		; WRITE-MARK PAGE

    467	001570	011610 				MOV	(SP),(R0) 	; SET LINK TO NEXT

    468	001572	012667 	000000G			MOV	(SP)+,$CRVEL	; SET VIRTUAL ADDRESS OF DESCRIPTOR

    469	001576	012604 				MOV	(SP)+,R4	; SET REAL ADDRESS OF DESCRIPTOR

    470	001600	010467 	000000G			MOV	R4,$CRELM	; SAVE ADDRESS OF CURRENT ELEMENT

    471	001604	005364 	000000G			DEC	E$LNUM(R4)	;SET HIGHEST SECTION NUMBER TO -1

    472	001610	012764 	000000G	000000G		MOV	#SW$LB,E$LSWT(R4);SET SWITCH OPTION WORD

    473	001616	056764 	000000'	000000G		BIS	ALSW,E$LSWT(R4)	; MERGE AUTOLOAD SWITCH

    474	001624	005001 				CLR	R1		;CLEAR HIGH PART OF VIRTUAL BLOCK NUMBER

    475	001626	016302 	000004 			MOV	4(R3),R2	;SET LOW PART OF VIRTUAL BLOCK NUMBER

    476	001632	016303 	000006 			MOV	6(R3),R3	;SET RELATIVE BYTE WITHIN BLOCK

    477	001636	010264 	000000G			MOV	R2,E$LMND(R4)	;SAVE VIRTUAL BLOCK IN ELEMENT DESCRIPTOR

    478	001642	010364 	000002G			MOV	R3,E$LMND+2(R4)	;SAVE BYTE WITHIN BLOCK IN ELEMENT DESCRIPTOR

    479	001646	016700 	000000G			MOV	$INPPT,R0	; GET FDB ADDRESS

    480	001652	112760 	000002 	000000 		MOVB	#R.VAR,F.RTYP(R0) ; SET VARIABLE LENGTH RECORD TYPE

    481	001660	112760 	000004 	000016 		MOVB	#FD.PLC,F.RACC(R0) ; SET TO PARTIAL LOCATE MODE

    482	001666	105060 	000001 			CLRB	F.RATT(R0)	; RESET RECORD ATTRIBUTES

    483	001672					CALL	.POINT		;POINT TO DESIRED RECORD

    484	001676	103430 				BCS	110$		;IF CS I/O ERROR

    485	001700					GET$S	R0		; GET MODULE HEADER RECORD

    486	001704	103425 				BCS	110$		;IF CS I/O ERROR

    487	001706	016001 	000026 			MOV	F.NRBD+2(R0),R1 ;++008 GET ADDRESS OF BUFFER

    488	001712	132761 	000000G	000000G		BITB	#MH$SS,M$HFL(R1) ;++008 SELECTIVE SEARCH MODULE ?

    489	001720	001403 				BEQ	105$		;++008 NO -- CONTINUE

    490	001722	052764 	000000G	000000G		BIS	#SW$SS,E$LSWT(R4) ;++008 YES -- TURN ON SELECTIVE SEARCH

    491	001730				105$:				;++008

    492	001730	056764 	000076'	000000G		BIS	SLSW,E$LSWT(R4) ;++008 SELECTIVE SEARCH FLAG MAY OVERRIDE

    493	001736	005067 	000000G			CLR	$NBYTE		;CLEAR CURRENT BYTE COUNT

    494	001742					CALL	PRCELM		;PROCESS ELEMENT

    495	001746	016701 	000000G			MOV	$CRVEL,R1	; GET VIRTUAL ADDRESS OF ELEMENT

    496	001752					CALL	$UNLPG		; UNLOCK PAGE

    497	001756					RETURN			;

    498	001760				110$:				;

    499	001760	016700 	000000G			MOV	$INPPT,R0	; GET ADDRESS OF INPUT FILE RECORD BLOCK

    500	001764	016002 	000000G			MOV	R$NAME(R0),R2	; GET ADDRESS OF NAME BLOCK

    501	001770	012701 				MOV	(PC)+,R1	;I/O ERROR

    502	001772	   000G	   000G			.BYTE	E$R10,S$V2	;FATAL-NO RETURN

    503	001774					CALL	$ERMSG		;OUTPUT ERROR MESSAGE

    504

    505					;

    506					; SUBROUTINE TO READ LIBRARY SEARCH BUFFER

    507					;

    508

    509	002000	016702 	000024'		LBRDB:	MOV	LBRBF,R2	;READ BUFFER BACKWARDS

    510	002004	005302 				DEC	R2		;BACK OFF ONE BUFFER

    511	002006	000403 				BR	LBRD		;

    512	002010	016702 	000024'		LBRDF:	MOV	LBRBF,R2	;READ BUFFER FORWARDS

    513	002014	005202 				INC	R2		;INCREMENT BY ONE BUFFER

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-9





    514	002016	010201 			LBRD:	MOV	R2,R1		;COPY BUFFER NUMBER

    515	002020	005301 				DEC	R1		;BACK OFF BY ONE BUFFER

    516	002022	000261 				SEC			;ASSUME NOT WITHIN RANGE

    517	002024	002460 				BLT	40$		;IF LT NOT WITHIN RANGE

    518	002026	016700 	000012'			MOV	BKPBF,R0	; GET NUMBER OF BLOCKS PER BUFFER

    519

    520						.IF DF	V1145

    521

    522						MUL	R0,R1		; CALCULATE RELATIVE BLOCK NUMBER

    523

    524						.IFF

    525

    526	002032					CALL	$MUL		; CALCULATE RELATIVE BLOCK NUMBER

    527

    528						.ENDC

    529

    530	002036	010100 				MOV	R1,R0		;COPY RELATIVE BLOCK NUMBER

    531	002040	066701 	000016'			ADD	EPBLK,R1	;CALCULATE VIRTUAL BLOCK NUMBER IN EPT

    532	002044	020167 	000020'			CMP	R1,EPHBK	;WITHIN RANGE?

    533	002050	000261 				SEC			;ASSUME NOT WITHIN RANGE

    534	002052	002045 				BGE	40$		;IF GE NOT WITHIN RANGE

    535	002054	010267 	000024'			MOV	R2,LBRBF	;SET NEW SEARCH BUFFER NUMBER

    536	002060	010102 				MOV	R1,R2		;COPY STARTING VIRTUAL BLOCK NUMBER

    537	002062	066702 	000012'			ADD	BKPBF,R2	;CALCULATE ENDING VIRTUAL BLOCK NUMBER

    538	002066	016746 	000004'			MOV	BFEND,-(SP)	;ASSUME FULL BUFFER TO READ

    539	002072	020267 	000020'			CMP	R2,EPHBK	;WITHIN RANGE?

    540	002076	003421 				BLE	10$		;IF LE YES

    541

    542		000006 				.REPT	6

    543						ASL	R0		; CALCULATE NUMBER OF EPT ENTRIES

    544						.ENDR

    545

    546	002114	016716 	000022'			MOV	EPNUM,(SP)	;GET NUMBER OF EPT ENTRIES IN LIBRARY

    547	002120	160016 				SUB	R0,(SP)		;SUBTRACT OUT NUMBER TO STARTING BLOCK

    548	002122	005316 				DEC	(SP)		;BACK OFF BY FOR RELATIVE ADDRESS CALCULATION

    549	002124	006316 				ASL	(SP)		;CALCULATE RELATIVE OFFSET WITHIN BUFFER

    550	002126	006316 				ASL	(SP)		;

    551	002130	006316 				ASL	(SP)		;

    552	002132	066716 	000002'			ADD	BFBAS,(SP)	; ADD IN BASE ADDRESS OF SEARCH BUFFER

    553	002136	016702 	000020'			MOV	EPHBK,R2	;SET HIGHEST BLOCK IN EPT

    554	002142				10$:				;

    555	002142	160102 				SUB	R1,R2		; CALCULATE NUMBER OF BLOCKS

    556	002144	000302 				SWAB	R2		; MULTIPLY BY 256

    557	002146	006302 				ASL	R2		; CONVERT TO BYTE COUNT

    558	002150	012667 	000010'			MOV	(SP)+,BFTOP	; SET ADDRESS OF LAST EPT ENTRY

    559	002154	016700 	000002'			MOV	BFBAS,R0	; GET BUFFER ADDRESS

    560	002160					CALL	LBSRD		; READ EPT BUFFER

    561	002164	103401 				BCS	50$		; IF C/S I/O ERROR

    562	002166				40$:				;

    563	002166					RETURN			;

    564	002170				50$:				;

    565	002170	016700 	000000G			MOV	$INPPT,R0	; GET ADDRESS OF INPUT FILE RECORD BLOCK

    566	002174	016002 	000000G			MOV	R$NAME(R0),R2	; GET ADDRESS OF NAME BLOCK

    567	002200	012701 				MOV	(PC)+,R1	;I/O ERROR

    568	002202	   000G	   000G			.BYTE	E$R10,S$V2	;FATAL-NO RETURN

    569	002204					CALL	$ERMSG		;OUTPUT ERROR MESSAGE

    570					;

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-10





    571					; READ LIBRARY HEADER AND TABLES

    572					;

    573					; INPUTS:

    574					;

    575					;	R0=BUFFER ADDRESS

    576					;	R1=VIRTUAL BLOCK NUMBER

    577					;	R2=BYTE COUNT

    578					;

    579					; OUTPUTS:

    580					;

    581					;	C/CLEAR - DATA READ AS REQUESTED

    582					;

    583					;	C/SET - I/O ERROR

    584					;

    585					; R0 AND R2 ARE UNMODIFIED

    586					;

    587

    588	002210				LBSRD:				;

    589	002210	010146 				MOV	R1,-(SP)	; SAVE VBN

    590	002212	016701 	000000G			MOV	$INPPT,R1	; GET ADDRESS OF INPUT FDB

    591	002216	116167 	000042 	175560 		MOVB	F.LUN(R1),LBQIO+Q.IOLU ; SET LOGICAL UNIT NUMBER

    592	002224	012701 	000014'			MOV	#LBQIO+Q.IOPL,R1 ; POINT TO PARAMETER LIST

    593	002230	010021 				MOV	R0,(R1)+	; SET BUFFER ADDRESS

    594	002232	010221 				MOV	R2,(R1)+	; SET BYTE COUNT

    595	002234	022121 				CMP	(R1)+,(R1)+	; POINT TO VBN

    596	002236	012611 				MOV	(SP)+,(R1)	; SET VBN

    597	002240					DIR$	#LBQIO		; EXECUTE QIO-AND-WAIT

    598	002246	103402 				BCS	10$		; IF C/S EXIT NOW

    599	002250	106167 	175554 			ROLB	LBSTS		; GET I/O STATUS

    600	002254				10$:				;

    601	002254					RETURN			;

    602

    603

    604					;

    605					; CALL ELEMENT PROCESSING SUBROUTINE

    606					;

    607

    608	002256				PRCELM:				;

    609	002256	016746 	000000G			MOV	$LBFN,-(SP)	; PUSH RETURN ADDRESS

    610	002262	000177 	000000G			JMP	@$PRCL		; PROCESS THE ELEMENT

    611	002266				$LBFIN::			; REF. LABEL

    612	002266					RETURN			;

    613

    614		000001 				.END

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-11

SYMBOL TABLE



ALSW    000000R     002	FD.INS= 000010   	F.FTYP= 000116   	NB.SNM= 000040   	S.FNBW= 000017

BFBAS   000002R     002	FD.ISP= 002000   	F.FVER= 000120   	NB.STP= 000020   	S.FNTY= 000004

BFEND   000004R     002	FD.MNT= 100000   	F.HIBK= 000004   	NB.SVR= 000010   	S.FTYP= 000002

BFSIZ   000006R     002	FD.OSP= 004000   	F.LUN = 000042   	NB.TYP= 000002   	S.NFEN= 000020

BFTOP   000010R     002	FD.PLC= 000004   	F.MBCT= 000054   	NB.VER= 000001   	VT    = 000013

BKPBF   000012R     002	FD.PRN= 000004   	F.MBC1= 000055   	N.DID = 000024   	$ACMOD= ****** GX

B.BBFS= 000010   	FD.PSE= 010000   	F.MBFG= 000056   	N.DVNM= 000032   	$ALBLK= ****** GX

B.BFST= 000015   	FD.RAH= 000001   	F.NRBD= 000024   	N.FID = 000000   	$ALSVB= ****** GX

B.NXBD= 000012   	FD.RAN= 000002   	F.NREC= 000030   	N.FNAM= 000006   	$BLDRF= ****** GX

B.VBN = 000004   	FD.REC= 000001   	F.OVBS= 000030   	N.FTYP= 000014   	$CRELM= ****** GX

CH.AND= 000001   	FD.RWM= 000001   	F.RACC= 000016   	N.FVER= 000016   	$CRSEG= ****** GX

CR    = 000015   	FD.SDI= 000020   	F.RATT= 000001   	N.NEXT= 000022   	$CRVEL= ****** GX

CRVEL   000014R     002	FD.SQD= 000040   	F.RCNM= 000034   	N.STAT= 000020   	$CRVSG= ****** GX

EPALO = 000026   	FD.TTY= 000004   	F.RCTL= 000017   	N.UNIT= 000034   	$CVLOK= ****** GX

EPAVL = 000030   	FD.WBH= 000002   	F.RSIZ= 000002   	PAR$$$= 000000   	$CVRL = ****** GX

EPBLK   000016R     002	FF    = 000014   	F.RTYP= 000000   	PRCELM  002256R  	$DELRF= ****** GX

EPHBK   000020R     002	FF.CHR= 000005   	F.SEQN= 000100   	Q.IOAE= 000012   	$EDRF = ****** GX

EPNUM   000022R     002	FF.NV = 000003   	F.SPDV= 000072   	Q.IOEF= 000006   	$ERMSG= ****** GX

EPSTR = 000024   	FF.POE= 000002   	F.SPUN= 000074   	Q.IOFN= 000002   	$FRHD = ****** GX

E$LIDT= ****** GX	FF.RWD= 000001   	F.STBK= 000036   	Q.IOLU= 000004   	$INPPT= ****** GX

E$LLGH= ****** GX	FF.RWF= 000006   	F.UNIT= 000136   	Q.IOPL= 000014   	$ISED = ****** GX

E$LMND= ****** GX	FF.SPC= 000004   	F.URBD= 000020   	Q.IOPR= 000007   	$LBFIN  002266RG

E$LMOD= ****** GX	FO.APD= 000106   	F.VBN = 000064   	Q.IOSB= 000010   	$LBFN = ****** GX

E$LNUM= ****** GX	FO.MFY= 000002   	F.VBSZ= 000060   	R$NAME= ****** GX	$LCKPG= ****** GX

E$LNXT= ****** GX	FO.RD = 000001   	HT    = 000011   	R$SWTH= ****** GX	$LIBNM= ****** GX

E$LSWT= ****** GX	FO.UPD= 000006   	IO.RVB= ****** GX	R$$11M= 000000   	$LNKVM= ****** GX

E$R10 = ****** GX	FO.WRT= 000016   	LBMOD   000026R     002	R.FIX = 000001   	$MUL  = ****** GX

E$R11 = ****** GX	F.ACTL= 000076   	LBQIO   000000R  	R.SEQ = 000003   	$MXLBF  000034RG

E$R77 = ****** GX	F.ALOC= 000040   	LBRBF   000024R     002	R.VAR = 000002   	$NBYTE= ****** GX

E$R79 = ****** GX	F.BBFS= 000062   	LBRD    002016R  	SLSW    000076R     002	$PRCL = ****** GX

FA.APD= 000100   	F.BDB = 000070   	LBRDB   002000R  	SPA   = 000040   	$P3BF = ****** GX

FA.CRE= 000010   	F.BGBC= 000057   	LBRDF   002010R  	SRCDR   000074R     002	$P3LBS  000036RG

FA.DLK= 001000   	F.BKDN= 000026   	LBSR    000564R  	SW$AL = ****** GX	$P3SCN  000276RG

FA.ENB= 100000   	F.BKDS= 000020   	LBSRC   000514R  	SW$CC = ****** GX	$RLCB = ****** GX

FA.EXC= 002000   	F.BKEF= 000050   	LBSRC1  001034R  	SW$DA = ****** GX	$RLREF= ****** GX

FA.EXT= 000004   	F.BKP1= 000051   	LBSRC2  001306R  	SW$LB = ****** GX	$SAVRG= ****** GX

FA.NSP= 000100   	F.BKST= 000024   	LBSRC3  001530R  	SW$MA = ****** GX	$STFNB= ****** GX

FA.POS= 010000   	F.BKVB= 000064   	LBSRD   002210R  	SW$SS = ****** GX	$STINP= ****** GX

FA.RD = 000001   	F.CHR = 000075   	LBSTS   000030R  	SY$DEF= ****** GX	$UNLPG= ****** GX

FA.RWD= 004000   	F.CNTG= 000034   	LCLSYM  000070R     002	SY$WK = ****** GX	$WRMPG= ****** GX

FA.SEQ= 040000   	F.DFNB= 000046   	LF    = 000012   	S$GELT= ****** GX	$WSEXT= ****** GX

FA.SHR= 000040   	F.DSPT= 000044   	MH$SS = ****** GX	S$GSTB= ****** GX	$WSINI= ****** GX

FA.TMP= 000020   	F.DVNM= 000134   	MNALO = 000036   	S$GUND= ****** GX	$$    = 000001

FA.WCK= 020000   	F.EFBK= 000010   	MNAVL = 000040   	S$V2  = ****** GX	$$$ARG= 000006

FA.WRT= 000002   	F.EFN = 000050   	MNSTR = 000034   	S$YFLG= ****** GX	$$$OST= 000014

FD.BLK= 000010   	F.EOBB= 000032   	M$HFL = ****** GX	S$YM  = ****** GX	.CLOSE= ****** G

FD.CCL= 000002   	F.ERR = 000052   	NB.DEV= 000200   	S.BFHD= 000020   	.GETSQ= ****** G

FD.COM= 020000   	F.FACC= 000043   	NB.DIR= 000100   	S.FATT= 000016   	.OPFNB= ****** G

FD.CR = 000002   	F.FFBY= 000014   	NB.NAM= 000004   	S.FDB = 000140   	.POINT= ****** GX

FD.DIR= 000010   	F.FNAM= 000110   	NB.SD1= 000400   	S.FNAM= 000006   	...GBL= 000000

FD.FTN= 000001   	F.FNB = 000102   	NB.SD2= 001000   	S.FNB = 000036   	...TPC= 000140

FD.F11= 040000



. ABS.	000000	   000

      	002270	   001

$$P3DT	000100	   002

ERRORS DETECTED:  0

P3LBS	MACRO M1110  22-AUG-78 01:52  PAGE 3-12

SYMBOL TABLE





VIRTUAL MEMORY USED:  3567 WORDS  ( 14 PAGES)

DYNAMIC MEMORY:  4884 WORDS  ( 18 PAGES)

ELAPSED TIME:  00:00:39

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

