INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (2)     100  DECLARATIONS

   (3)     100  CREDEL - CREATE/DELETE A KNOWN FILE ENTRY

   (4)     100  MAKE_KFI_ENTRY - MAKE A NEW KNOWN FILE ENTRY

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   1

X0108                                                                                                                            (1)



                                     0000   100 	.TITLE	INSCREDEL - INSTALL - CREATE/DELETE KNOWN FILE ENTRY

                                     0000   200 	.IDENT	/X0108/

                                     0000   300 

                                     0000   400 ;

                                     0000   500 ;			  COPYRIGHT (c) 1978 BY

                                     0000   600 ;	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000   700 ;

                                     0000   800 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED

                                     0000   900 ; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE

                                     0000  1000 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER

                                     0000  1100 ; COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY

                                     0000  1200 ; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY

                                     0000  1300 ; TRANSFERRED.

                                     0000  1400 ;

                                     0000  1500 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE

                                     0000  1600 ; AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT

                                     0000  1700 ; CORPORATION.

                                     0000  1800 ;

                                     0000  1900 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS

                                     0000  2000 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.

                                     0000  2100 ;

                                     0000  2200 

                                     0000  2300 ;++

                                     0000  2400 ; FACILITY:

                                     0000  2500 ;

                                     0000  2600 ; ABSTRACT:

                                     0000  2700 ;

                                     0000  2800 ;

                                     0000  2900 ; ENVIRONMENT:

                                     0000  3000 ;

                                     0000  3100 ; AUTHOR: P. H. LIPMAN	, CREATION DATE: 15-JUN-1978

                                     0000  3200 ;

                                     0000  3300 ; MODIFIED BY:

                                     0000  3400 ;

                                     0000  3500 ;	, : VERSION

                                     0000  3600 ; 01	- 

                                     0000  3700 ;--

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   2

X0108           DECLARATIONS                                                                                                     (2)



                                     0000   100 	.SBTTL	DECLARATIONS

                                     0000   200 ;

                                     0000   300 ; INCLUDE FILES:

                                     0000   400 ;

                                     0000   450 	$CCBDEF				;CHANNEL CONTROL BLOCK DEFINITIONS

                                     0000   500 	$DDBDEF				;DEVICE DATA BLOCK DEFINITIONS

                                     0000   600 	$DYNDEF				;DEFINE DYNAMIC STRUCTURE TYPES

                                     0000   800 	$KFIDEF				;DEFINE KNOWN FILE ENTRY OFFSETS

                                     0000   900 	$KFPDEF				;KNOWN FILE POINTER BLOCK DEFINITIONS

                                     0000   950 	$UCBDEF				;UNIT CONTROL BLOCK DEFINITIONS

                                     0000  1000 ;

                                     0000  1100 ; MACROS:

                                     0000  1200 ;

                                     0000  1205 	.MACRO	STRDSC	NAM,STR

                                     0000  1210 	.SAVE

                                     0000  1215 	.PSECT	RO_BYTE	BYTE,RD,NOWRT,NOEXE

                                     0000  1220 'NAM'_ADR:

                                     0000  1225 	.ASCII	STR

                                     0000  1230 	'NAM'_SIZ = .-'NAM'_ADR

                                     0000  1235 	.PSECT	RO_LONG	LONG,RD,NOWRT,NOEXE

                                     0000  1240 'NAM'_DSC:

                                     0000  1245 	.LONG	'NAM'_SIZ

                                     0000  1250 	.LONG	'NAM'_ADR

                                     0000  1255 	.RESTORE

                                     0000  1260 	.ENDM	STRDSC

                                     0000  1300 ;

                                     0000  1400 ; EQUATED SYMBOLS:

                                     0000  1500 ;

                           00000018  0000  1750 	DEVNAMSIZ=24			;16 BYTES OF NAME 5 BYTES OF UNIT (ROUND UP)

                                     0000  1800 

                                     0000  1900 	$OFFSET	4,POSITIVE,<-

                                     0000  2000 		CHAN,-			;CHANNEL ADDRESS

                                     0000  2100 		FLAGADR,-		;ADDRESS OF FLAGS WORD FOR KFI ENTRY

                                     0000  2200 		PRIVADR,-		;ADDRESS OF PRIVILEGE MASK

                                     0000  2300 		NAMEMASK,-		;BIT MASK OF STRINGS TO PLACE IN KFI ENTRY

                                     0000  2400 		DEVNAM,-		;ADDRESS OF DEVICE NAME STRING

                                     0000  2500 		DIRNAM,-		;ADDRESS OF DIRECTORY STRING

                                     0000  2600 		FILNAM,-		;ADDRESS OF FILE NAME STRING

                                     0000  2700 		TYPNAM,-		;ADDRESS OF FILE TYPE STRING

                                     0000  2800 		ENDZRO,-		;ZERO ADDRESS TO END ADDRESS VECTOR

                                     0000  2900 		<ARGBYTCNT,0> -		;COUNT OF BYTES IN ARGUMENT LIST

                                     0000  3000 		>

                                     0004       CHAN:

                                     0008       FLAGADR:

                                     000C       PRIVADR:

                                     0010       NAMEMASK:

                                     0014       DEVNAM:

                                     0018       DIRNAM:

                                     001C       FILNAM:

                                     0020       TYPNAM:

                                     0024       ENDZRO:

                                     0028       ARGBYTCNT:

                                     0000  3005 

                                     0000  3010 	$OFFSET	0,NEGATIVE,<-		;FP OFFSETS

                                     0000  3015 		<,4>,-			;ZERO STOPPER

                                     0000  3020 		FPTYPNAM,-		;TYPE NAME STRING POINTER

                                     0000  3025 		FPFILNAM,-		;FILE NAME STRING POINTER

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   3

X0108           DECLARATIONS                                                                                                     (2)



                                     0000  3030 		FPDIRNAM,-		;DIRECTORY NAME STRING POINTER

                                     0000  3035 		FPDEVNAM,-		;DEVICE NAME STRING POINTER

                                     0000  3040 		<DEVNAMSTR,DEVNAMSIZ>,-	;DEVICE NAME AND UNIT STORAGE

                                     0000  3045 		>

                                     FFF8       FPTYPNAM:

                                     FFF4       FPFILNAM:

                                     FFF0       FPDIRNAM:

                                     FFEC       FPDEVNAM:

                                     FFD4       DEVNAMSTR:

                                     0000  3200 

                                     0000  3300 	$GBLINI	GLOBAL			;FORCE GLOBAL DEFINITIONS

                                     0000  3900 	$VIELD	INS,0,<-		;CMD BITS, HIGH 16 BITS OF CMDBITS

                                     0000  4000 		<CREATE,,M>,-		;CREATE COMMAND

                                     0000  4100 		<DELETE,,M>,-		;DELETE COMMAND

                                     0000  4200 		<REPLACE,,M>,-		;REPLACE COMMAND

                                     0000  4210 		<LIST,,M>,-		;LIST COMMAND

                                     0000  4220 		<FULL,,M>,-		;FULL LIST COMMAND

                                     0000  4260 		<GLOBAL,,M>,-		;GLOBAL SECTION LIST COMMAND

                                     0000  4300 	>

                                     0000  4350 	$GBLINI				;BACK TO LOCAL DEFINITIONS

                                     0000  4400 ;

                                     0000  4500 ; STATUS CODES SPECIFIC TO INSTALL

                                     0000  4600 ;

                           0000007B  0000  4650 	INS$_FAC_COD==123		;INSTALL'S FACILITY CODE

                           007B0008  0000  4700 	INI_ERR_COD=INS$_FAC_COD@16+8

                                     0000  4800 	$EQULST	INS$_,GLOBAL,INI_ERR_COD,8,<-

                                     0000  4900 		SYNTAX,-		;SYNTAX ERROR

                                     0000  5000 		BADSWITCH,-		;BAD SWITCH OR PRIVILEGE NAME

                                     0000  5100 		AMBSWITCH,-		;AMBIGUOUS SWITCH OR PRIVILEGE NAME

                                     0000  5200 		EXISTS,-		;KNOWN FILE ENTRY ALREADY EXISTS

                                     0000  5300 		CMDTOOLNG,-		;COMMAND LINE TOO LONG

                                     0000  5400 		KFILSTFUL,-		;NO ROOM FOR A NEW KNOWN FILE LIST

                                     0000  5500 		NOSUCHKFI -		;KNOWN FILE ENTRY WAS NOT FOUND

                                     0000  5600 		>

                                     0000  5700 ;

                                     0000  5800 ; OWN STORAGE:

                                     0000  5900 ;

                                 00000000  6000 	.PSECT	DATA	LONG,RD,WRT,NOEXE

                                     0000  6100 

                                     0000  6200 NAM_SIZ_ARRAY:

                                 05  0000  6300 	.BYTE	5			;SIZE OF DEVICE STRING AND COUNT BYTE

                                 0A  0001  6400 	.BYTE	10			;SIZE OF DIRECTORY STRING AND COUNT

                                 0A  0002  6500 	.BYTE	10			;SIZE OF NAME STRING AND COUNT

                                 04  0003  6600 	.BYTE	4			;SIZE OF TYPE STRING AND COUNT

                                     0004  6700 

                                     0004  6800 	STRDSC	DEV_CVT,</!AC!UW/>	;FAO CONTROL STRING FOR CONVERTING

                                     0004  6900 					;DEVICE NAME IN DDB AND UNIT

                                     0004  7000 					;INTO A CANONICAL DEVICE NAME STRING

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   4

X0108           CREDEL - CREATE/DELETE A KNOWN FILE ENTRY                                                                        (3)



                                     0004   100 	.SBTTL	CREDEL - CREATE/DELETE A KNOWN FILE ENTRY

                                     0004   200 ;++

                                     0004   300 ; FUNCTIONAL DESCRIPTION:

                                     0004   400 ;

                                     0004   500 ;	THIS ROUTINE RUNS IN KERNEL MODE AND LOCKS THE KNOWN FILE MUTEX FOR WRITING.

                                     0004   600 ; IT SCANS THE KNOWN FILE LIST TO DETERMINE IF THE ENTRY IS ALREADY PRESENT.

                                     0004   700 ; IF CREATING A NEW ENTRY, THEN IT MUST NOT BE PRESENT, IF DELETING, IT MUST BE

                                     0004   800 ; PRESENT.

                                     0004   900 ;

                                     0004  1000 ; CALLING SEQUENCE:

                                     0004  1100 ;

                                     0004  1200 ;	CALLG	ARGLIST,CREDEL

                                     0004  1300 ;

                                     0004  1400 ; INPUT PARAMETERS:

                                     0004  1500 ;

                                     0004  1600 ;	CHAN(AP) = CHANNEL ASSIGNED TO THE DESIRED DEVICE

                                     0004  1700 ;	FLAGADR(AP) = THE ADDRESS OF THE CONTROL FLAGS TO BE PUT IN KFI$W_FLAGS

                                     0004  1800 ;

                                     0004  1900 ;		LOW BYTE:

                                     0004  2000 ;		KFI$M_KP_OPEN FOR KEEPING THE FILE OPEN

                                     0004  2100 ;		KFI$M_KP_RESHSDR FOR KEEPING THE IMAGE HEADER RESIDENT (PAGED POOL)

                                     0004  2200 ;		KFI$M_KP_SHARED FOR MAKING THE IMAGE SHARED

                                     0004  2400 ;		KFI$M_PROCPRIV FOR MAKING THE IMAGE PRIVILEGED

                                     0004  2500 ;

                                     0004  2600 ;		HIGH WORD:

                                     0004  2700 ;		INS$M_CREATE SET IF CREATING, DEFAULT

                                     0004  2800 ;		INS$M_DELETE SET IF DELETING

                                     0004  2900 ;		INS$M_REPLACE SET IF REPLACING

                                     0004  3000 ;	PRIVADR(AP) = ADDRESS OF QUAD WORD PRIVILEGE MASK

                                     0004  3100 ;		THIS IS ONLY USED IF KFI$M_PROCPRIV IS SET IN FLAGS

                                     0004  3200 ;	NAMEMASK(AP) = MASK OF BITS CONTROLLING WHICH NAME STRINGS ARE

                                     0004  3300 ;		PLACED IN THE KFI ENTRY (COMPLEMENT PLACED IN KFI HEADER

                                     0004  3400 ;		ENTRY).  BITS 0-3 CORRESPOND TO DEV, DIR, NAM, TYP IN THAT

                                     0004  3500 ;		ORDER.  BIT IS SET TO PUT THAT STRING INTO THE KFI ENTRY.

                                     0004  3600 ;

                                     0004  3700 ;		BITS 7-15 = SIZE IN BYTES OF DIRECTORY STRING TO RESERVE IN

                                     0004  3800 ;		KNOWN FILE ENTRY.  IF ZERO, USE SIZE OF CURRENT DIRECTORY STRING.

                                     0004  4000 ;	DEVNAM(AP) = OBSOLETE PARAMETER NOW DERIVED FROM CHANNEL INFORMATION

                                     0004  4300 ;	DIRNAM(AP) = ADDRESS OF COUNTED ASCII STRING FOR THE DIRECTORY NAME

                                     0004  4400 ;	FILNAM(AP) = ADDRESS OF COUNTED ASCII STRING FOR THE FILE NAME

                                     0004  4500 ;		(NOT INCLUDING TYPE OR VERSION).

                                     0004  4600 ;	TYPNAM(AP) = ADDRESS OF COUNTED ASCII STRING FOR THE FILE TYPE

                                     0004  4700 ;	TYPNAM+4(AP) = OBSOLETE PARAMETER, WAS REQUIRED TO BE A ZERO

                                     0004  4800 ;	R4 = CURRENT PROCESS CONTROL BLOCK ADDRESS CURTESY OF CHANGE MODE DISPATCHER

                                     0004  4900 ;

                                     0004  5000 ; IMPLICIT INPUTS:

                                     0004  5100 ;

                                     0004  5200 ;	NONE

                                     0004  5300 ;

                                     0004  5400 ; OUTPUT PARAMETERS:

                                     0004  5500 ;

                                     0004  5600 ;	R0 = LOW BIT CLEAR IF ERROR

                                     0004  5620 ;	   = KNOWN FILE ENTRY ADDRESS WITH LOW BIT SET IF SUCCESSFUL

                                     0004  5700 ;

                                     0004  5800 ; IMPLICIT OUTPUTS:

                                     0004  5900 ;

                                     0004  6000 ;	NONE

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   5

X0108           CREDEL - CREATE/DELETE A KNOWN FILE ENTRY                                                                        (3)



                                     0004  6100 ;

                                     0004  6200 ; COMPLETION CODES:

                                     0004  6300 ;

                                     0004  6400 ;	NONE

                                     0004  6500 ;

                                     0004  6600 ; SIDE EFFECTS:

                                     0004  6700 ;

                                     0004  6800 ;	NONE

                                     0004  6900 ;

                                     0004  7000 ;--

                                     0004  7100 

                                 00000000  7200 	.PSECT	CODE	RD,NOWRT,EXE

                                     0000  7210 

                                     0000  7220 	.LIST	MEB

                                     0000  7300 

                                     0000  7400 INS$CREDEL::

                               0FFC  0000  7500 	.WORD	^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11>

                                     0002  7600 ;

                                     0002  7700 ; FORM ARRAY OF NAME STRING POINTERS ON STACK

                                     0002  7800 ;

                          7E     D4  0002  7900 	CLRL	-(SP)			;END THE NAME POINTERS WITH A ZERO

            7E         1C AC     7D  0004  8000 	MOVQ	FILNAM(AP),-(SP)	;FILE NAME AND TYPE NAME STRINGS

            7E         18 AC     D0  0008  8100 	MOVL	DIRNAM(AP),-(SP)	;DIRECTORY NAME STRING

                       D4 AD     9F  000C  8200 	PUSHAB	DEVNAMSTR(FP)		;DEVICE NAME STRING

            5E            18     C2  000F  8300 	SUBL	#DEVNAMSIZ,SP		;RESERVE STORAGE FOR DEVICE NAME STRING

            50         04 AC     3C  0012  8400 	MOVZWL	CHAN(AP),R0		;GET CHANNEL ASSIGNED TO DESIRED DEVICE

                 00000000'EF     16  0016  8500 	JSB	IOC$VERIFYCHAN		;VERIFY THE CHANNEL

                                     001C  8600 					;RETURN CHANNEL CONTROL BLOCK ADDRESS

            01            50     E8  001C  8700 	BLBS	R0,10$			;BRANCH IF CHANNEL IS OK

                                 04  001F  8800 	RET				;RETURN ERROR

            5B         08 BC     D0  0020  8850 10$:	MOVL	@FLAGADR(AP),R11	;GET FLAGS AND COMMAND BITS

            50            61     D0  0024  8900 	MOVL	CCB$L_UCB(R1),R0	;GET UCB ADDRESS FROM CHANNEL

   00000000'EF            50     D1  0027  8910 	CMPL	R0,EXE$GL_SYSUCB	;UNLESS THE DEVICE IS THE SYSTEM DEVICE

                          07     13  002E  8920 	BEQL	20$

            5B            07     E1  0030  8930 	BBC	#KFI$V_PROCPRIV,R11,20$	;PRIVILEGED IMAGES MUST REMAIN OPEN

                          03         0033       

            5B            01     88  0034  8940 	BISB	#KFI$M_KP_OPEN,R11	;TO KEEP A TRANSACTION AGAINST THE VOLUME

         24 A0            14     C1  0037  9000 20$:	ADDL3	#DDB$T_NAME,UCB$L_DDB(R0),R1 ;ADR OF DEVICE NAME COUNTED STRING

                          51         003B       

            50         48 A0     3C  003C  9100 	MOVZWL	UCB$W_UNIT(R0),R0	;DEVICE UNIT NUMBER IN BINARY

                       D5 AD     9F  0040  9200 	PUSHAB	DEVNAMSTR+1(FP)		;ADDRESS OF FORM DEVICE NAME AND UNIT

                          17     DD  0043  9300 	PUSHL	#DEVNAMSIZ-1		;SIZE OF DEVICE NAME BUFFER

            52            5E     D0  0045  9400 	MOVL	SP,R2			;ADDRESS OF BUFFER DESCRIPTOR

            53            7E     DE  0048  9500 	MOVAL	-(SP),R3		;RESERVE SPACE FOR OUTPUT LENGTH

                                     004B  9600 					;PUT ITS ADDRESS IN R3

                                     004B  9700 	$FAO_S	W^DEV_CVT_DSC,(R3),(R2),R1,R0 ;FORM DEVICE NAME STRING

                          50     DD  004B       		PUSHL	R0

                          51     DD  004D       		PUSHL	R1

                          62     7F  004F       		PUSHAQ	(R2)

                          63     3F  0051       		PUSHAW	(R3)

                     0000'CF     7F  0053       		PUSHAQ	W^DEV_CVT_DSC

   00000000'GF            05     FB  0057       		CALLS	#$$T2,G^SYS$FAO

                          07     BA  005E  9800 	POPR	#^M<R0,R1,R2>		;R0=SIZE OF STRING CONVERTED

                                     0060  9900 					;R1=SCRATCH, R2=ADR OF FIRST BYTE

            72            50     90  0060 10000 	MOVB	R0,-(R2)		;SET BYTE COUNT OF COUNTED DEVICE NAME

                                     0063 10100 ;

                                     0063 10200 ; NOW LOCK THE KNOWN FILE MUTEX AND SCAN FOR THE DESIRED ENTRY

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   6

X0108           CREDEL - CREATE/DELETE A KNOWN FILE ENTRY                                                                        (3)



                                     0063 10300 ;

                          00'    DD  0063 10400 	PUSHL	S^#SS$_NORMAL		;SAVE SUCCESS RETURN INDICATION

            50   00000000'EF     DE  0065 10500 	MOVAL	EXE$GL_KFIMTX,R0	;ADDRESS OF KNOWN FILE MUTEX

                          11     BB  006C 10600 	PUSHR	#^M<R0,R4>		;SAVE MUTEX AND PCB ADDRESSES FOR UNLOCK

                 00000000'EF     16  006E 10700 	JSB	SCH$LOCKW		;LOCK THE MUTEX FOR WRITING

            58         EC AD     9E  0074 10750 	MOVAB	FPDEVNAM(FP),R8		;ADDRESS OF LIST OF STRING ADDRESSES

                          FF85'  30  0078 10800 	BSBW	RM$KFISCN		;SCAN FOR THE KNOWN FILE ENTRY

            5B            10     9C  007B 10900 	ROTL	#16,R11,R1		;GET CMD BITS, CREATE OR DELETE

                          51         007E       

            51            06     B3  007F 11000 	BITW	#<INS$M_DELETE ! INS$M_REPLACE>,R1 ;DELETE COMMAND?

                          1F     13  0082 11100 	BEQL	CREATE			;BRANCH IF NOT, CREATE A NEW ENTRY

                                     0084 11200 ;

                                     0084 11300 ; DELETE OR REPLACE THE KNOWN FILE ENTRY, MUST HAVE FOUND ONE

                                     0084 11400 ;

            50   007B0038 8F     D0  0084 11500 	MOVL	#INS$_NOSUCHKFI,R0	;ANTICIPATE "NOT FOUND" CONDITION

                          57     D5  008B 11600 	TSTL	R7			;WAS A KNOWN FILE ENTRY FOUND?

                          11     13  008D 11700 	BEQL	40$			;BRANCH IF NO

         0B A7         80 8F     88  008F 11800 	BISB	#KFI$M_MARKDEL,KFI$B_KFICTL(R7) ;ASSUME REPLACE COMMAND

            51            02     E0  0094 11900 	BBS	#INS$V_REPLACE,R1,30$	;BRANCH IF REPLACE COMMAND

                          05         0097       

         0B A7         40 8F     88  0098 12000 	BISB	#KFI$M_NOREPLACE,KFI$B_KFICTL(R7) ;DELETE, DO NOT REPLACE

            50            00'    D0  009D 12100 30$:	MOVL	S^#SS$_NORMAL,R0	;SET SUCCESS STATUS

                          006D   31  00A0 12200 40$:	BRW	CREDEL_DONE		;AND RETURN

                                     00A3 12300 ;

                                     00A3 12400 ; CREATE A NEW KNOWN FILE ENTRY, ENTRY MUST NOT ALREADY EXIST

                                     00A3 12500 ;

                                     00A3 12600 CREATE:

            50   007B0020 8F     D0  00A3 12700 	MOVL	#INS$_EXISTS,R0		;ASSUME "ALREADY EXISTS" CONDITION

                          57     D5  00AA 12800 	TSTL	R7			;DOES THE ENTRY ALREADY EXIST?

                          62     12  00AC 12900 	BNEQ	CREDEL_DONE		;BRANCH IF YES

            52   00000000'EF     D0  00AE 13000 	MOVL	NAM_SIZ_ARRAY,R2	;GET ARRAY OF STRING SIZES

            50         11 AC     9A  00B5 13100 	MOVZBL	NAMEMASK+1(AP),R0	;DIRECTORY STRING SIZE SPECIFIED?

                          04     12  00B9 13200 	BNEQ	10$			;BRANCH IF YES

            50         F0 BD     9A  00BB 13300 	MOVZBL	@FPDIRNAM(FP),R0	;USE THIS DIRECTORY STRING SIZE

                          50     D6  00BF 13400 10$:	INCL	R0			;ADD A COUNT BYTE

            08            50     F0  00C1 13500 	INSV	R0,#8,#8,R2		;AND PUT IN ARRAY OF STRING SIZES

            52            08         00C4       

                          5A     D5  00C6 13600 	TSTL	R10			;DOES THE KNOWN FILE HEADER EXIST?

                          3D     12  00C8 13700 	BNEQ	60$			;BRANCH IF YES

                                     00CA 13800 ;

                                     00CA 13900 ; MUST MAKE A NEW KNOWN FILE LIST FOR THIS ENTRY

                                     00CA 14000 ;

            50   007B0030 8F     D0  00CA 14100 	MOVL	#INS$_KFILSTFUL,R0	;ANTICIPATE "KFI LIST FULL" CONDITION

            59   00000000'EF     D0  00D1 14200 	MOVL	EXE$GL_KNOWNFIL,R9	;ADDRESS OF VECTOR OF KNOWN FILE LIST HEADS

                          36     13  00D8 14300 	BEQL	CREDEL_DONE		;BRANCH IF NO KNOWN FILES AT ALL

            51         FC A9     3C  00DA 14400 	MOVZWL	<KFP$W_SIZE-KFP$L_QUE0>(R9),R1 ;GET SIZE OF KNOWN FILE POINTER BLOCK

            51            0C     C2  00DE 14500 	SUBL	#KFP$L_QUE0,R1		;BYTES OF LIST HEAD POINTERS

            51            04     C6  00E1 14600 	DIVL	#4,R1			;NUMBER OF LIST HEAD POINTERS

                          5A     D4  00E4 14700 	CLRL	R10			;INIT INDEX INTO POINTERS

                          694A   D5  00E6 14800 20$:	TSTL	(R9)[R10]		;IS THIS KNOWN FILE QUEUE AVAILABLE?

                          06     13  00E9 14900 	BEQL	40$			;BRANCH IF YES

            5A            51     F2  00EB 15000 	AOBLSS	R1,R10,20$		;TRY THE NEXT ONE

                          F7         00EE       

                          1F     11  00EF 15100 	BRB	CREDEL_DONE		;NO ROOM FOR ANOTHER KNOWN FILE LIST

                                     00F1 15200 ;

                                     00F1 15300 ; R2  = STRING SIZE ARRAY

                                     00F1 15400 ; R10 = KNOWN FILE QUEUE NUMBER

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   7

X0108           CREDEL - CREATE/DELETE A KNOWN FILE ENTRY                                                                        (3)



                                     00F1 15500 ;

            51            2C     D0  00F1 15600 40$:	MOVL	#KFI$C_KFIHDLEN+<3*8>,R1 ;SIZE OF KNOWN FILE HEADER FIXED AREA

                                     00F4 15700 					;PLUS 3 QUEUE HEADS

            59         10 AC     D2  00F4 15800 	MCOML	NAMEMASK(AP),R9		;USE COMPLEMENT OF NAME STRINGS

                                     00F8 15900 					;TO PLACE IN THE KFI HEADER ENTRY

                          52     DD  00F8 16000 	PUSHL	R2			;SAVE SIZES

                          2B     10  00FA 16100 	BSBB	MAKE_KFI_ENTRY		;CREATE THE KNOWN FILE ENTRY FOR THE HEADER

                          04     BA  00FC 16200 	POPR	#^M<R2>			;RECOVER SIZES

            0F            50     E9  00FE 16300 	BLBC	R0,CREDEL_DONE		;BRANCH IF FAILED TO DO SO

            58         EC AD     9E  0101 16400 	MOVAB	FPDEVNAM(FP),R8		;RESTORE ADR OF NAME STRING ADDRESSES

                          57     D4  0105 16500 	CLRL	R7			;AND A NULL KNOWN FILE ENTRY ADDRESS

                                     0107 16600 ;

                                     0107 16700 ; CREATE THE KNOWN FILE ENTRY FOR THE DESIRED FILE

                                     0107 16800 ;

            59         10 AC     D0  0107 16900 60$:	MOVL	NAMEMASK(AP),R9		;MASK OF NAME STRINGS TO PUT IN ENTRY

            51            34     D0  010B 17000 	MOVL	#KFI$C_LENGTH,R1	;SIZE OF FIXED PORTION OF KFI ENTRY

                          17     10  010E 17100 	BSBB	MAKE_KFI_ENTRY		;CREATE THE KFI ENTRY

                                     0110 17200 CREDEL_DONE:

            50            00'    D1  0110 17210 	CMPL	S^#SS$_NORMAL,R0	;IF SUCCESSFUL COMPLETION

                          03     12  0113 17220 	BNEQ	20$

            50            57     C8  0115 17230 	BISL	R7,R0			;RETURN KNOWN FILE ENTRY ADDRESS

         08 AE            50     D0  0118 17300 20$:	MOVL	R0,8(SP)		;SET STATUS CODE TO BE RETURNED

                          11     BA  011C 17400 	POPR	#^M<R0,R4>		;RECOVER PARAMETERS TO UNLOCK MUTEX

                 00000000'EF     16  011E 17500 	JSB	SCH$UNLOCK		;UNLOCK THE KNOWN FILE MUTEX

                          01     BA  0124 17600 	POPR	#^M<R0>			;GET RETURN STATUS

                                 04  0126 17700 	RET				;AND RETURN

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   8

X0108           MAKE_KFI_ENTRY - MAKE A NEW KNOWN FILE ENTRY                                                                     (4)



                                     0127   100 	.SBTTL	MAKE_KFI_ENTRY - MAKE A NEW KNOWN FILE ENTRY

                                     0127   200 

                                     0127   300 ;

                                     0127   400 ; ALLOCATE AND FILL IN A KNOWN FILE ENTRY AND PLACE IT IN THE KNOWN FILE LIST

                                     0127   500 ;

                                     0127   600 ; INPUTS:

                                     0127   700 ;

                                     0127   800 ;	R1 = BASE SIZE OF KNOWN FILE ENTRY

                                     0127   810 ;	R2 = 4 BYTES OF SIZES OF NAME STRINGS, FROM LOW BYTE TO HIGH

                                     0127   820 ;		DEVICE, DIRECTORY, FILE NAME, FILE TYPE

                                     0127   850 ;	R7 = 0

                                     0127   900 ;	R8 = ADDRESS OF VECTOR OF COUNTED NAME STRING ADDRESSES, TERMINATED

                                     0127  1000 ;		BY A ZERO ADDRESS

                                     0127  1100 ;	R9 = MASK OF NAME STRING CONTROL BITS.  BITS 0-3 CORRESPOND TO

                                     0127  1200 ;		DEVICE, DIRECTORY, FILE NAME, TYPE NAME IN THAT ORDER.

                                     0127  1300 ;		IF THE BIT IS SET, PUT THE CORRESPONDING NAME IN THE

                                     0127  1400 ;		KNOWN FILE ENTRY.  BIT 31 SET INDICATES THAT THIS IS

                                     0127  1500 ;		A KNOWN FILE HEADER ENTRY THAT IS BEING CREATED.

                                     0127  1600 ;	R10 = ADDRESS OF KNOWN FILE LIST HEAD IF NOT CREATING A HEADER ENTRY

                                     0127  1700 ;	    = KNOWN FILE QUEUE NUMBER IF CREATING A NEW LIST HEAD

                                     0127  1710 ;	R11 = KNOWN FILE FLAGS IN BIT 0-7

                                     0127  1720 ;	PRIVADR(AP) = ADDRESS OF PRIVILEGE MASK IF KFI$V_PROCPRIV

                                     0127  1730 ;		IS SET IN R11

                                     0127  1800 ;

                                     0127  1900 ; OUTPUTS:

                                     0127  2000 ;

                                     0127  2100 ;	R0 = STATUS (LOW BIT SET = SUCCESS, LOW BIT CLEAR = ERROR)

                                     0127  2200 ;	R4,R5,R6,R8,R9 ALTERED

                                     0127  2300 ;	R7 = KNOWN FILE ENTRY IF SUCCESSFUL

                                     0127  2400 ;	R10 = KNOWN FILE LIST HEAD ADDRESS IF SUCCESSFUL

                                     0127  2500 ;

                                     0127  2600 MAKE_KFI_ENTRY:

            56            51     D0  0127  2700 	MOVL	R1,R6			;SAVE BASE SIZE OF ENTRY

            54            59     D0  012A  2800 	MOVL	R9,R4			;COPY THE NAME MASK

            54            1F     9C  012D  3100 5$:	ROTL	#<32-1>,R4,R4		;USE THE NEXT STRING?

                          54         0130       

                          03     18  0131  3200 	BGEQ	10$			;BRANCH IF NOT

            51            52     80  0133  3300 	ADDB	R2,R1			;YES, ADD IN ITS SIZE

            52         F8 8F     78  0136  3400 10$:	ASHL	#-8,R2,R2		;ANY MORE TO ADD?

                          52         013A       

                          F0     12  013B  3500 	BNEQ	5$			;BRANCH IF THERE MAY BE

                          59     D5  013D  3520 	TSTL	R9			;CREATING A KNOWN FILE HEADER ENTRY?

                          36     19  013F  3540 	BLSS	80$			;BRANCH IF YES, GO ALLOCATE ONE

                                     0141  3580 ;

                                     0141  3585 ; R1 = SIZE TO ALLOCATE IF THIS IS A NEW KNOWN FILE LIST, OTHERWISE

                                     0141  3590 ; ALLOCATE THE SIZE OF THE ENTRIES ALREADY EXISTING ON THE FREE LIST.

                                     0141  3595 ;

            57         10 BA     0F  0141  3600 20$:	REMQUE	@16(R10),R7		;ANY ENTRIES AVAILABLE FROM THE FREE LIST?

                          0A     1D  0145  3700 	BVS	30$			;BRANCH IF NONE AT ALL, NEW LIST

                          41     12  0147  3800 	BNEQ	100$			;BRANCH IF GOT ONE, NOT THE LAST

                                     0149  3810 ;

                                     0149  3820 ; THAT WAS THE LAST FREE ENTRY, PUT IT BACK AND ALLOCATE SOME MORE

                                     0149  3830 ; IT IS NECESSARY TO KEEP AT LEAST ONE ENTRY ON THE FREE LIST FOR

                                     0149  3840 ; THE IMAGE ACTIVATOR KNOWN FILE ENTRY REPLACEMENT LOGIC TO WORK.

                                     0149  3850 ;

            51         08 A7     3C  0149  3900 	MOVZWL	KFI$W_SIZE(R7),R1	;USE STANDARD ENTRY SIZE FOR THIS LIST

         10 AA            67     0E  014D  4000 	INSQUE	(R7),16(R10)		;PUT THE LAST FREE ONE BACK AND

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page   9

X0108           MAKE_KFI_ENTRY - MAKE A NEW KNOWN FILE ENTRY                                                                     (4)



                                     0151  4100 					;AND ALLOCATE SOME MORE

            57            08     D0  0151  4400 30$:	MOVL	#8,R7			;NUMBER OF ENTRIES TO CLUSTER ALLOCATE

                          51     DD  0154  4500 	PUSHL	R1			;SAVE DESIRED ENTRY SIZE

            51            6E     D0  0156  4600 40$:	MOVL	(SP),R1			;GET DESIRED SIZE

                 00000000'EF     16  0159  4700 	JSB	EXE$ALOPAGED		;AND ALLOCATE SOME PAGED POOL

            12            50     E9  015F  4800 	BLBC	R0,50$			;BRANCH IF NO MORE AVAILABLE

         08 A2            51     B0  0162  4900 	MOVW	R1,KFI$W_SIZE(R2)	;SET SIZE OF ENTRY

                       13 A2     94  0166  4950 	CLRB	KFI$B_KFISEQ(R2)	;INIT SEQUENCE NUMBER

         14 BA            62     0E  0169  5000 	INSQUE	(R2),@20(R10)		;NEW ENTRY TO THE END OF THE FREE LIST

            E6            57     F5  016D  5100 	SOBGTR	R7,40$			;LOOP THROUGH ALLOCATING A CLUSTER

                          02     BA  0170  5150 	POPR	#^M<R1>			;CLEAN OFF DESIRED ALLOCATION SIZE

                          CD     11  0172  5200 	BRB	20$			;NOW GO GET ONE FROM THE FREE LIST

                          02     BA  0174  5300 50$:	POPR	#^M<R1>			;CLEAN OFF SAVED ALLOCATION SIZE

                                 05  0176  5400 60$:	RSB

                                     0177  5500 ;

                                     0177  5505 ; ALLOCATE KNOWN FILE LIST HEADER ENTRY

                                     0177  5510 ;

                 00000000'EF     16  0177  5520 80$:	JSB	EXE$ALONONPAGED		;HEADER ENTRY FROM NON-PAGED POOL

            F6            50     E9  017D  6000 	BLBC	R0,60$			;BRANCH IF NONE AVAILABLE

            57            52     D0  0180  6100 	MOVL	R2,R7			;SAVE ADDRESS OF NEW KFI ENTRY

         08 A7            51     B0  0183  6200 	MOVW	R1,KFI$W_SIZE(R7)	;SAVE ACTUAL SIZE ALLOCATED

                       13 A7     94  0187  6250 	CLRB	KFI$B_KFISEQ(R7)	;ZERO THE SEQUENCE NUMBER

                                     018A  6300 

                                     018A  6400 	ASSUME	KFI$B_KFICTL EQ KFI$B_TYPE+1

         0A A7            18     9B  018A  6500 100$:	MOVZBW	#DYN$C_KFI,KFI$B_TYPE(R7) ;MARK AS A KNOWN FILE ENTRY

                                     018E  6600 					;ZERO KFICTL BITS

         10 A7            01     B0  018E  6700 	MOVW	#1,KFI$W_REFCNT(R7)	;BIAS THE REF COUNT, LOCKING THE ENTRY

                          59     D5  0192  6800 	TSTL	R9			;CREATING A KNOWN FILE HEADER?

                          34     18  0194  6900 	BGEQ	140$			;BRANCH IF NOT

                                     0196  7000 ;

                                     0196  7100 ; DO THE SPECIAL INITIALIZATION FOR A KNOWN FILE HEADER ENTRY

                                     0196  7200 ;

         0B A7            01     90  0196  7300 	MOVB	#KFI$M_KFIHD,KFI$B_KFICTL(R7) ;NOTE THIS IS A KFI HEADER

         12 A7            5A     90  019A  7400 	MOVB	R10,KFI$B_KFIQNUM(R7)	;INDICATE WHICH KNOWN FILE LIST THIS IS

            57            14     C1  019E  7500 	ADDL3	#KFI$C_KFIHDLEN,R7,R0	;ADDRESS OF AREA BEYOND FIXED HEADER PART

                          50         01A1       

                                     01A2  7600 					;IS THE ADDRESS OF THE 3 QUEUE HEADS

                                     01A2  7700 					;WHICH FORM THE KNOWN FILE LIST HEAD

            51   00000000'EF     D0  01A2  7800 	MOVL	EXE$GL_KNOWNFIL,R1	;KNOWN FILE LIST VECTOR ADDRESS

            614A          50     D0  01A9  7810 	MOVL	R0,(R1)[R10]		;SET ADDRESS OF NEW KNOWN FILE LIST HEAD

         F4 A1            5A     91  01AD  7820 	CMPB	R10,<KFP$B_QUECOUNT-KFP$L_QUE0>(R1) ;NEW SLOT BEYOND CURRENT END?

                          05     1F  01B1  7830 	BLSSU	110$			;BRANCH IF REUSED A SLOT

            5A            01     81  01B3  7840 	ADDB3	#1,R10,<KFP$B_QUECOUNT-KFP$L_QUE0>(R1) ;SET NEW QUEUE COUNT

                       F4 A1         01B6       

            5A            50     D0  01B8  7900 110$:	MOVL	R0,R10			;ADDRESS OF KNOWN FILE LIST HEAD

            51            03     D0  01BB  8000 	MOVL	#3,R1			;INIT 3 EMPTY QUEUES

                                     01BE  8100 ;

                                     01BE  8200 ; FIRST QUEUE HEAD IS THE ACTIVE LIST

                                     01BE  8300 ; SECOND QUEUE HEAD IS THE DELETE PENDING LIST

                                     01BE  8400 ; THIRD QUEUE HEAD IS THE FREE ENTRY LIST

                                     01BE  8500 ;

            80            50     D0  01BE  8600 120$:	MOVL	R0,(R0)+		;SET FORWARD LINK

            80         FC A0     D0  01C1  8700 	MOVL	-4(R0),(R0)+		;AND BACKWARD LINK

            F6            51     F5  01C5  8800 	SOBGTR	R1,120$

                          1F     11  01C8  8900 	BRB	160$			;COMPLETE THE INITIALIZATION OF THE ENTRY

                                     01CA  9000 ;

                                     01CA  9100 ; INITIALIZE A KNOWN FILE ENTRY

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page  10

X0108           MAKE_KFI_ENTRY - MAKE A NEW KNOWN FILE ENTRY                                                                     (4)



                                     01CA  9200 ;

                                 90  01CA  9300 140$:	MOVB	<KFI$B_KFIQNUM-KFI$C_KFIHDLEN>(R10),-

         12 A7         FE AA         01CB  9400 		KFI$B_KFIQNUM(R7)	;GET QUEUE NUMBER FROM HEADER ENTRY

            51            04     D0  01CF  9500 	MOVL	#<KFI$C_LENGTH+7-KFI$C_KFIHDLEN>/8,R1 ;NO. OF QUAD WORDS TO ZERO

            50         14 A7     9E  01D2  9600 	MOVAB	KFI$C_KFIHDLEN(R7),R0	;ADDRESS TO START ZEROING

                          80     7C  01D6  9700 150$:	CLRQ	(R0)+			;ZERO THE KNOWN FILE ENTRY

            FB            51     F5  01D8  9800 	SOBGTR	R1,150$

         14 A7            5B     90  01DB  9900 	MOVB	R11,KFI$W_FLAGS(R7)	;SET DESIRED FLAGS

         14 A7            07     E1  01DF 10000 	BBC	#KFI$V_PROCPRIV,KFI$W_FLAGS(R7),160$ ;BRANCH IF NO PRIVILEGE BITS

                          05         01E3       

         24 A7         0C BC     7D  01E4 10100 	MOVQ	@PRIVADR(AP),KFI$Q_PROCPRIV(R7) ;SET THE PRIVILEGE BITS

                                     01E9 10200 ;

                                     01E9 10300 ; PUT THE NAME STRINGS IN THE KNOWN FILE ENTRY

                                     01E9 10400 ;

            56            57     C1  01E9 10500 160$:	ADDL3	R7,R6,R3		;FORM BASE ADDRESS OF NAME STRINGS

                          53         01EC       

            56         0C A7     9E  01ED 10600 	MOVAB	KFI$B_DEVNAM(R7),R6	;ADDRESS OF BYTE OFFSETS TO NAME STRINGS

                          66     D4  01F1 10700 	CLRL	(R6)			;INIT THEM TO ZERO

                          17     11  01F3 10800 	BRB	200$

            59            1F     9C  01F5 10900 180$:	ROTL	#<32-1>,R9,R9		;COPY THIS STRING?

                          59         01F8       

                          0F     18  01F9 11000 	BGEQ	190$			;BRANCH IF NOT

            53            57     C3  01FB 11100 	SUBL3	R7,R3,R0		;FORM BYTE OFFSET TO STRING

                          50         01FE       

            66            50     90  01FF 11200 	MOVB	R0,(R6)			;STORE THE BYTE OFFSET

            61            01     81  0202 11300 	ADDB3	#1,(R1),R0		;SIZE OF STRING + 1 FOR COUNT BYTE

                          50         0205       

            61            50     28  0206 11400 	MOVC3	R0,(R1),(R3)		;MOVE THE STRING INTO THE ENTRY

                          63         0209       

                          56     D6  020A 11500 190$:	INCL	R6			;NEXT BYTE OFFSET ADDRESS

            51            88     D0  020C 11600 200$:	MOVL	(R8)+,R1		;ADDRESS OF NEXT NAME STRING

                          E4     12  020F 11700 	BNEQ	180$			;BRANCH IF NOT END OF NAME STRINGS

                                     0211 11710 ;

                                     0211 11720 ; QUEUE THE KNOWN FILE ENTRY AT THE FRONT OF THE LIST SO THAT THE

                                     0211 11730 ; MOST RECENTLY ENTERED KNOWN FILES ARE FOUND THE QUICKEST.

                                     0211 11740 ; THIS FOLLOWS THE CONVENTION IN THE GLOBAL SECTION DESCRIPTORS

                                     0211 11750 ; WHICH ARE ALSO IN ORDER OF MOST RECENT FIRST.

                                     0211 11760 ;

         00 BA            67     0E  0211 11800 	INSQUE	(R7),@(R10)		;QUEUE AT FRONT OF ACTIVE LIST

                                     0215 11810 					;BUT AFTER HEADER ENTRY FOR THAT LIST

            50            00'    D0  0215 11900 	MOVL	S^#SS$_NORMAL,R0	;INDICATE SUCCESSFUL COMPLETION

                                 05  0218 12000 	RSB

                                     0219 16000 

                                     0219 16100 

                                     0219 16200 	.END

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page  11

SYMBOL TABLE                                                                                                                     (4)



$$T2           = 00000005            DYN$C_PCB      = 0000000C            KFI$B_MATCHCTL   0000002C            

ARGBYTCNT        00000028            DYN$C_PDB      = 00000021            KFI$B_TYPE       0000000A            

BIT...         = 007B0040            DYN$C_PFL      = 00000023            KFI$B_TYPNAM     0000000F            

CCB$B_AMOD       00000009            DYN$C_PIB      = 00000022            KFI$C_KFIHDLEN   00000014            

CCB$B_STS        00000008            DYN$C_PQB      = 0000000D            KFI$C_LENGTH     00000034            

CCB$C_LENGTH     00000010            DYN$C_PTR      = 00000025            KFI$K_KFIHDLEN   00000014            

CCB$K_LENGTH     00000010            DYN$C_RVT      = 0000000E            KFI$K_LENGTH     00000034            

CCB$L_DIRP       0000000C            DYN$C_SFT      = 00000024            KFI$L_IDENT      00000030            

CCB$L_UCB        00000000            DYN$C_SSB      = 0000001D            KFI$L_IMGHDR     00000020            

CCB$L_WIND       00000004            DYN$C_TQE      = 0000000F            KFI$L_KFIQBL     00000004            

CCB$W_IOC        0000000A            DYN$C_TYPAHD   = 00000014            KFI$L_KFIQFL     00000000            

CHAN             00000004            DYN$C_UCB      = 00000010            KFI$L_USECNT     00000018            

CREATE           000000A3 R     06   DYN$C_VCB      = 00000011            KFI$L_WINDOW     0000001C            

CREDEL_DONE      00000110 R     06   DYN$C_WCB      = 00000012            KFI$M_COMPATMOD= 00008000            

DDB$B_ACPCLASS   00000013            ENDZRO           00000024            KFI$M_DONOTOPEN= 00000004            

DDB$B_TYPE       0000000A            EXE$ALONONPAGED  ********   X   06   KFI$M_FILIDOPEN= 00000002            

DDB$C_LENGTH     00000034            EXE$ALOPAGED     ********   X   06   KFI$M_IS_RESHDR= 00000100            

DDB$K_LENGTH     00000034            EXE$GL_KFIMTX    ********   X   06   KFI$M_IS_SHARED= 00000200            

DDB$L_ACPD       00000010            EXE$GL_KNOWNFIL  ********   X   06   KFI$M_KFIHD    = 00000001            

DDB$L_DDT        0000000C            EXE$GL_SYSUCB    ********   X   06   KFI$M_KFISEQ   = 00000003            

DDB$L_LINK       00000000            FILNAM           0000001C            KFI$M_KP_OPEN  = 00000001            

DDB$L_UCB        00000004            FLAGADR          00000008            KFI$M_KP_RESHDR= 00000002            

DDB$T_DRVNAME    00000024            FPDEVNAM         FFFFFFEC            KFI$M_KP_SHARED= 00000004            

DDB$T_NAME       00000014            FPDIRNAM         FFFFFFF0            KFI$M_LIM      = 00000040            

DDB$W_SIZE       00000008            FPFILNAM         FFFFFFF4            KFI$M_MARKDEL  = 00000080            

DEVNAM           00000014            FPTYPNAM         FFFFFFF8            KFI$M_NOREPLACE= 00000040            

DEVNAMSIZ      = 00000018            GBL...         = 00000001            KFI$M_PROCPRIV = 00000080            

DEVNAMSTR        FFFFFFD4            INI_ERR_COD    = 007B0008            KFI$Q_PROCPRIV   00000024            

DEV_CVT_ADR      00000000 R     04   INS$CREDEL       00000000 RG    06   KFI$S_KFISEQ   = 00000002            

DEV_CVT_DSC      00000000 R     05   INS$M_CREATE   = 00000001  G         KFI$V_COMPATMOD= 0000000F            

DEV_CVT_SIZ    = 00000006            INS$M_DELETE   = 00000002  G         KFI$V_DONOTOPEN= 00000002            

DIR...         = FFFFFFFF            INS$M_FULL     = 00000010  G         KFI$V_FILIDOPEN= 00000001            

DIRNAM           00000018            INS$M_GLOBAL   = 00000020  G         KFI$V_IS_RESHDR= 00000008            

DYN$C_ACB      = 00000002            INS$M_LIST     = 00000008  G         KFI$V_IS_SHARED= 00000009            

DYN$C_ADP      = 00000001            INS$M_REPLACE  = 00000004  G         KFI$V_KFIHD    = 00000000            

DYN$C_AQB      = 00000003            INS$V_CREATE   = 00000000  G         KFI$V_KFISEQ   = 00000000            

DYN$C_BRDCST   = 0000001A            INS$V_DELETE   = 00000001  G         KFI$V_KP_OPEN  = 00000000            

DYN$C_BUFIO    = 00000013            INS$V_FULL     = 00000004  G         KFI$V_KP_RESHDR= 00000001            

DYN$C_CEB      = 00000004            INS$V_GLOBAL   = 00000005  G         KFI$V_KP_SHARED= 00000002            

DYN$C_CRB      = 00000005            INS$V_LIST     = 00000003  G         KFI$V_LIM      = 00000006            

DYN$C_CXB      = 0000001B            INS$V_REPLACE  = 00000002  G         KFI$V_MARKDEL  = 00000007            

DYN$C_DDB      = 00000006            INS$_AMBSWITCH = 007B0018  G         KFI$V_NOREPLACE= 00000006            

DYN$C_DPT      = 0000001E            INS$_BADSWITCH = 007B0010  G         KFI$V_PROCPRIV = 00000007            

DYN$C_FCB      = 00000007            INS$_CMDTOOLNG = 007B0028  G         KFI$W_FID        0000001C            

DYN$C_FRK      = 00000008            INS$_EXISTS    = 007B0020  G         KFI$W_FID_NUM    0000001C            

DYN$C_GSD      = 00000015            INS$_FAC_COD   = 0000007B  G         KFI$W_FID_RVN    00000020            

DYN$C_IDB      = 00000009            INS$_KFILSTFUL = 007B0030  G         KFI$W_FID_SEQ    0000001E            

DYN$C_IRP      = 0000000A            INS$_NOSUCHKFI = 007B0038  G         KFI$W_FLAGS      00000014            

DYN$C_JPB      = 0000001F            INS$_SYNTAX    = 007B0008  G         KFI$W_GBLSECCNT  00000016            

DYN$C_KFH      = 00000026            IOC$VERIFYCHAN   ********   X   06   KFI$W_REFCNT     00000010            

DYN$C_KFI      = 00000018            KFI$B_DEVNAM     0000000C            KFI$W_SIZE       00000008            

DYN$C_LOG      = 0000000B            KFI$B_DEVUCB     0000000C            KFP$B_QUECOUNT   00000000            

DYN$C_MTL      = 00000019            KFI$B_DIRNAM     0000000D            KFP$B_TYPE       0000000A            

DYN$C_MVL      = 00000016            KFI$B_FILNAM     0000000E            KFP$B_TYPE1      0000000B            

DYN$C_NDB      = 0000001C            KFI$B_KFICTL     0000000B            KFP$L_QUE0       0000000C            

DYN$C_NET      = 00000017            KFI$B_KFIQNUM    00000012            KFP$W_SIZE       00000008            

DYN$C_PBH      = 00000020            KFI$B_KFISEQ     00000013            MAKE_KFI_ENTRY   00000127 R     06   

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page  12

SYMBOL TABLE                                                                                                                     (4)



NAMEMASK         00000010            UCB$L_IOQBL      00000044            UCB$V_INTTYPE  = 00000007            

NAM_SIZ_ARRAY    00000000 R     03   UCB$L_IOQFL      00000040            UCB$V_JOB      = 00000000            

PRIVADR          0000000C            UCB$L_IRP        0000004C            UCB$V_LNKPRI   = 00000006            

RM$KFISCN        ********   X   06   UCB$L_LINK       0000002C            UCB$V_LTYPE    = 00000000            

SAVABS...      = FFFFFFD4            UCB$L_LOGADR     00000064            UCB$V_MOUNTING = 00000009            

SCH$LOCKW        ********   X   06   UCB$L_MAXBLOCK   00000084            UCB$V_MSGACK   = 00000004            

SCH$UNLOCK       ********   X   06   UCB$L_MEDIA      0000008C            UCB$V_MSGFLO   = 00000003            

SS$_NORMAL       ********   X   06   UCB$L_NT_DATSSB  00000074            UCB$V_NOCNVRT  = 00000002            

SYS$FAO          ********   X   06   UCB$L_NT_INTSSB  00000078            UCB$V_NT_BFROVF= 00000002            

TYPNAM           00000020            UCB$L_OPCNT      00000060            UCB$V_NT_BREAK = 00000005            

UCB$B_AMOD       00000053            UCB$L_OWNUIC     0000001C            UCB$V_NT_NAME  = 00000004            

UCB$B_CEX        00000077            UCB$L_PID        00000028            UCB$V_ONLINE   = 00000004            

UCB$B_CM1        0000004A            UCB$L_RQBL       00000004            UCB$V_POWER    = 00000005            

UCB$B_CM2        0000004B            UCB$L_RQFL       00000000            UCB$V_PRMMBX   = 00000000            

UCB$B_DEVCLASS   00000038            UCB$L_SVAPTE     00000068            UCB$V_SEGFLO   = 00000002            

UCB$B_DEVTYPE    00000039            UCB$L_SVPN       00000064            UCB$V_TIM      = 00000000            

UCB$B_DIPL       00000052            UCB$L_TTCHAR     0000003C            UCB$V_TIMOUT   = 00000006            

UCB$B_DX_SCTCNT  000000A6            UCB$L_VCB        00000030            UCB$V_TT_NOTIF = 00000002            

UCB$B_ERTCNT     00000070            UCB$M_BACKP    = 00000020            UCB$V_TT_TIMO  = 00000001            

UCB$B_ERTMAX     00000071            UCB$M_BSY      = 00000100            UCB$V_UNLOAD   = 0000000C            

UCB$B_ESCAPE     0000004B            UCB$M_CANCEL   = 00000008            UCB$V_VALID    = 0000000B            

UCB$B_FEX        00000076            UCB$M_DEADMO   = 00000400            UCB$W_BCNT       0000006E            

UCB$B_FIPL       0000000B            UCB$M_DELMBX   = 00000002            UCB$W_BCR        00000096            

UCB$B_LOCSRV     0000003C            UCB$M_DIAGBUF  = 00000002            UCB$W_BOFF       0000006C            

UCB$B_OFFNDX     00000094            UCB$M_DX_WRITE = 00000008            UCB$W_BUFQUO     00000018            

UCB$B_OFFRTC     00000095            UCB$M_ECC      = 00000001            UCB$W_BYTESTOGO  0000003E            

UCB$B_REMSRV     0000003D            UCB$M_ERLOGIP  = 00000004            UCB$W_CHARGE     0000004A            

UCB$B_SECTORS    0000003C            UCB$M_INT      = 00000002            UCB$W_CYLINDERS  0000003E            

UCB$B_SLAVE      00000074            UCB$M_INTTYPE  = 00000080            UCB$W_DA         0000008C            

UCB$B_SPR        00000075            UCB$M_JOB      = 00000001            UCB$W_DC         0000008E            

UCB$B_STATE      00000052            UCB$M_MOUNTING = 00000200            UCB$W_DEVBUFSIZ  0000003A            

UCB$B_TRACKS     0000003D            UCB$M_NOCNVRT  = 00000004            UCB$W_DEVSTS     0000005A            

UCB$B_TYPE       0000000A            UCB$M_NT_BFROVF= 00000004            UCB$W_DIRSEQ     00000088            

UCB$B_VERTSZ     0000003F            UCB$M_NT_BREAK = 00000020            UCB$W_DSTADDR    00000018            

UCB$C_LENGTH     00000074            UCB$M_NT_NAME  = 00000010            UCB$W_DX_BCR     000000A4            

UCB$C_LOGLNK   = 00000001            UCB$M_ONLINE   = 00000010            UCB$W_EC1        00000090            

UCB$K_LENGTH     00000074            UCB$M_POWER    = 00000020            UCB$W_EC2        00000092            

UCB$L_AMB        00000054            UCB$M_PRMMBX   = 00000001            UCB$W_ERRCNT     00000072            

UCB$L_ASTQBL     00000010            UCB$M_TIM      = 00000001            UCB$W_FUNC       0000007E            

UCB$L_ASTQFL     0000000C            UCB$M_TIMOUT   = 00000040            UCB$W_MB_SEED    FFFFFFFC            

UCB$L_CPID       0000005C            UCB$M_TT_NOTIF = 00000004            UCB$W_MSGCNT     00000016            

UCB$L_CRB        00000020            UCB$M_TT_TIMO  = 00000002            UCB$W_MSGMAX     00000014            

UCB$L_DDB        00000024            UCB$M_UNLOAD   = 00001000            UCB$W_NT_CHAN    0000007C            

UCB$L_DEVCHAR    00000034            UCB$M_VALID    = 00000800            UCB$W_OFFSET     0000008A            

UCB$L_DEVDEPEND  0000003C            UCB$S_LNKPRI   = 00000002            UCB$W_REFC       00000050            

UCB$L_DPC        00000080            UCB$S_LTYPE    = 00000002            UCB$W_SIZE       00000008            

UCB$L_DUETIM     0000005C            UCB$T_PARTNER    0000000C            UCB$W_SRCADDR    0000001A            

UCB$L_DX_BFPNT   0000009C            UCB$V_BACKP    = 00000005            UCB$W_STS        00000058            

UCB$L_DX_BUF     00000098            UCB$V_BSY      = 00000008            UCB$W_UNIT       00000048            

UCB$L_DX_RXDB    000000A0            UCB$V_CANCEL   = 00000003            UCB$W_VPROT      0000001A            

UCB$L_EMB        00000078            UCB$V_DEADMO   = 0000000A            

UCB$L_FIRST      00000014            UCB$V_DELMBX   = 00000001            

UCB$L_FPC        0000000C            UCB$V_DIAGBUF  = 00000001            

UCB$L_FQBL       00000004            UCB$V_DX_WRITE = 00000003            

UCB$L_FQFL       00000000            UCB$V_ECC      = 00000000            

UCB$L_FR3        00000010            UCB$V_ERLOGIP  = 00000002            

UCB$L_FR4        00000014            UCB$V_INT      = 00000001            

INSCREDEL       - INSTALL - CREATE/DELETE KNOWN FILE ENTRY       22-AUG-1978 01:16:51   VAX-11 MACRO X0.3-11               Page  13

PROGRAM SECTION SYNOPSIS                                                                                                         (4)







PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            FFFFFFFE      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

DATA             00000004      03     NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD    WRT LONG  

RO_BYTE          00000006      04     NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD  NOWRT BYTE  

RO_LONG          00000008      05     NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD  NOWRT LONG  

CODE             00000219      06     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

15038. BYTES LEFT IN FREE MEMORY POOL.

2182. BYTES OF RECLAIMED MEMORY.

OBJ$:INSCREDEL,LIS$:INSCREDEL/-SP=EXECML$/ML,SRC$:INSCREDEL

6 MLB DIR RDS - 582 GETS TO DEFINE 20 MACROS. 41 INTER. FILE WRITES. 

