RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      43  DECLARATIONS

   (1)      76  RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID

   (3)     580  RM$FCPFNC  -  ROUTINE TO ISSUE A FILE FUNCTION 

   (3)     756  RM$CHK_IDLE  -  ROUTINE TO CHECK FOR ALL STREAM

   (5)     790  RM$MAPERR  -  ROUTINE TO MAP QIO ERROR CODES TO

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   1

031                                                                                                                              (1)



                                     0000     1 

                                     0000     2 	$BEGIN	RM0FILFNC,031,F$RMSOPEN0,<FILE FUNCTIONS MODULE>

                                     0000     3 ;

                                     0000     4 ; COPYRIGHT (C) 1977

                                     0000     5 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000     6 ;

                                     0000     7 ; THIS SOFTWARE IS FURNISHED  UNDER A LICENSE FOR USE ONLY ON A SINGLE

                                     0000     8 ; COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH  THE INCLUSION OF THE

                                     0000     9 ; ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

                                     0000    10 ; MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

                                     0000    11 ; EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

                                     0000    12 ; TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

                                     0000    13 ; REMAIN IN DEC.

                                     0000    14 ;

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

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

                                     0000    17 ; CORPORATION.

                                     0000    18 ;

                                     0000    19 ; DEC ASSUMES  NO  RESPONSIBILITY  FOR  THE USE OR  RELIABILITY OF ITS

                                     0000    20 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

                                     0000    21 ;

                                     0000    22 ;++

                                     0000    23 ; FACILITY: RMS32

                                     0000    24 ;

                                     0000    25 ; ABSTRACT:

                                     0000    26 ;	THIS MODULE INCLUDES VARIOUS ROUTINES TO

                                     0000    27 ;	PERFORM FILES-11 PRIMITIVE FUNCTIONS.

                                     0000    28 ;

                                     0000    29 ;

                                     0000    30 ; ENVIRONMENT:

                                     0000    31 ;		STAR PROCESSOR RUNNING STARLET EXEC.

                                     0000    32 ;

                                     0000    33 ; AUTHOR: L F LAVERDURE,	 CREATION DATE: 11-MARCH-77

                                     0000    34 ;

                                     0000    35 ; MODIFIED BY:

                                     0000    36 ;

                                     0000    37 ;	L F LAVERDURE,      11-AUG-78  17:14	; ADD RM$FCPFNC_ALT5 ENTRY POINT

                                     0000    38 ;	L F LAVERDURE,   10-JUL-78  11:51

                                     0000    39 ;				MOD'S FOR MBF SUPPORT FOR SEQ FILES

                                     0000    40 ; 01	- 

                                     0000    41 ;--

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   2

031             DECLARATIONS                                                                                                     (1)



                                     0000    43 	.SBTTL	DECLARATIONS

                                     0000    44 ;

                                     0000    45 ; INCLUDE FILES:

                                     0000    46 ;

                                     0000    47 

                                     0000    48 ;

                                     0000    49 ; MACROS:

                                     0000    50 ;

                                     0000    51 	$CCBDEF

                                     0000    52 	$UCBDEF

                                     0000    53 	$DRCDEF

                                     0000    54 	$FABDEF

                                     0000    55 	$FWADEF

                                     0000    56 	$IFBDEF

                                     0000    57 	$IRBDEF

                                     0000    58 	$NAMDEF

                                     0000    59 	$FIBDEF

                                     0000    60 	$QIODEF

                                     0000    61 	$DEVDEF

                                     0000    62 	.LIST MEB

                                     0000    63 

                                     0000    64 ;

                                     0000    65 ; EQUATED SYMBOLS:

                                     0000    66 ;

                           00000020  0000    67 	FOP=FAB$L_FOP*8			; BIT OFFSET TO FOP

                           00040004  0000    68 	MFD_FILE_ID = <4@16>+4		; MASTER FILE DIRECTORY FILE ID

                                     0000    69 

                                     0000    70 ;

                                     0000    71 ; OWN STORAGE:

                                     0000    72 ;

                  31 3B 52 49 44 2E  0000    73 DIR_SUFFIX:	.ASCII	/.DIR;1/	; CONSTANT SUFFIX FOR DIRECTORY FILES

                                     0006    74 

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   3

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     0006    76 	.SBTTL RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID

                                     0006    77 ;++

                                     0006    78 ; FUNCTIONAL DESCRIPTION:

                                     0006    79 ;

                                     0006    80 ; THE RM$SETDID ROUTINE'S FUNCTION IS TO INITIALIZE THE

                                     0006    81 ; DIRECTORY ID FIELD OF THE FIB BY SETTING IT TO THE FILE ID

                                     0006    82 ; OF THE (LOWEST LEVEL) DIRECTORY FILE.  IT ACCOMPLISHES THIS

                                     0006    83 ; BY PERFORMING THE FOLLOWING OPERATIONS:

                                     0006    84 ;

                                     0006    85 ;	1.  ASSUMES THE FIB BUFFER DESCRIPTOR IS INITIALIZED.

                                     0006    86 ;	2.  UTILITIES THE FILE ID OR DIRECTORY ID VALUE FROM THE

                                     0006    87 ;	    USER'S NAM BLOCK IF SPECIFIED AND IF NON-ZERO.

                                     0006    88 ;	    IF FOUND, RETURNS TO CALLER WITH FIB FID OR DID FILLED IN.

                                     0006    89 ;	3.  OTHERWISE, CONSTRUCTS THE DIRECTORY FILENAME

                                     0006    90 ;	    BASED ON THE DIRECTORY SPEC FORMAT

                                     0006    91 ;		- IF [GRP,MBR] PREFIXES FROM 0 TO 2 ZEROES

                                     0006    92 ;		  TO EACH OF THE GRP AND MBR OCTAL VALUES

                                     0006    93 ;		  TO GIVE A 6-CHARACTER FILE NAME, E.G.,

                                     0006    94 ;		  [1,20] GIVES 001020

                                     0006    95 ;		- IF [DIRECTORY-NAME] FORMAT USES THE NAME AS GIVEN

                                     0006    96 ;	4.  SEARCHES THE DIRECTORY CACHE FOR THE SPECIFIED DEVICE AND DIRECTORY

                                     0006    97 ;	    ENTRIES.

                                     0006    98 ;	5.  IF ANY ENTRY NOT FOUND, A NEW ENTRY IS MADE BY LOOKING UP THE DIRECTORY.

                                     0006    99 ;	    IN ORDER TO DO THE LOOKUP, THE CODE APPENDS THE FIXED TYPE AND VERSION

                                     0006   100 ;	    OF '.DIR;1' TO THE FILENAME AND ISSUES A QIO TO LOOKUP THE FILE ID

                                     0006   101 ;	    IN THE MASTER FILE DIRECTORY OR LOWER LEVEL DIRECTORY.

                                     0006   102 ;	6.  THE RETURNED FILE ID IS COPIED TO THE DIRECTORY ID FIELD OF THE FIB

                                     0006   103 ;	7.  THE FILE ID FIELD OF THE FIB IS ZEROED.

                                     0006   104 ;

                                     0006   105 ; CALLING SEQUENCE:

                                     0006   106 ;

                                     0006   107 ;	BSBW	RM$SETDID

                                     0006   108 ;

                                     0006   109 ; INPUT PARAMETERS:

                                     0006   110 ;

                                     0006   111 ;	R11	IMPURE AREA ADDRESS

                                     0006   112 ;	R10	FWA ADDRESS

                                     0006   113 ;	R9	IFAB ADDRESS

                                     0006   114 ;	R8	FAB ADDRESS

                                     0006   115 ;

                                     0006   116 ; IMPLICIT INPUTS:

                                     0006   117 ;

                                     0006   118 ;	NAM$W_DID	-  DIRECTORY ID TO USE ELSE ZERO

                                     0006   119 ;	IFB$L_CHNL	-  CHANNEL # FOR QIO

                                     0006   120 ;	IFB$L_PRIM_DEV	-  DEVICE CHARACTERISTICS

                                     0006   121 ;	FWA$V_GRPMBR	-  FLAG FOR [GROUP, MEMBER] FORMAT

                                     0006   122 ;	FWA$Q_DIR1, ETC.	- DIRECTORY SPEC ELEMENT DESCRIPTORS

                                     0006   123 ;	FWA$Q_DIR+4	-  ADDRESS OF SCRATCH BUFFER

                                     0006   124 ;	FWA$T_FIBBUF	-  MUST BE ZERO

                                     0006   125 ;	THE DIRECTORY CACHE

                                     0006   126 ;

                                     0006   127 ; OUTPUT PARAMETERS:

                                     0006   128 ;

                                     0006   129 ;	R0	STATUS CODE

                                     0006   130 ;	R1-R7,AP DESTROYED

                                     0006   131 ;

                                     0006   132 ; IMPLICIT OUTPUTS:

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   4

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     0006   133 ;

                                     0006   134 ;	FWA$Q_FIB	-  DESCRIPTOR INITIALIZED

                                     0006   135 ;	FWA$T_FIBBUF+FIB$W_DID	-  DIRECTORY FILE ID INITIALIZED

                                     0006   136 ;	FWA$T_FIBBUF+FIB$W_FID	-  SET FROM NAM$W_FID

                                     0006   137 ;	IFB$L_IOS	-  SET TO I/O STATUS

                                     0006   138 ;	FAB$L_STV	-  SET TO SYSTEM ERROR CODE ON ERROR

                                     0006   139 ;	THE DIRECTORY CACHE IS UPDATED.

                                     0006   140 ;

                                     0006   141 ; COMPLETION CODES:

                                     0006   142 ;

                                     0006   143 ;	STANDARD RMS, IN PARTICULAR, SUC AND DNF.

                                     0006   144 ;

                                     0006   145 ; SIDE EFFECTS:

                                     0006   146 ;

                                     0006   147 ;	MAY HAVE SWITCHED TO RUNNING AT AST LEVEL.

                                     0006   148 ;	ALL USER STRUCTURES EXCEPT FAB MUST BE RE-PROBED.

                                     0006   149 ;

                                     0006   150 ;--

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   5

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     0006   152 RM$SETDID::

                                     0006   153 	$TSTPT	SETDID

                 00000200'9F     D6  0006       		INCL	@#PIO$GL_FMLH+512+TPT$L_SETDID

                                     000C   154 ;

                                     000C   155 ; CHECK IF WE REALLY NEED TO GO THROUGH THIS CODE

                                     000C   156 ;

            69            03     E1  000C   157 	BBC	#DEV$V_DIR,IFB$L_PRIM_DEV(R9),SUCCESS ; BRANCH IF NO DIRECTORY

                          2B         000F       

            57         28 A8     D0  0010   158 	MOVL	FAB$L_NAM(R8),R7		; GET NAM BLOCK

                          3B     13  0014   159 	BEQL	CHKMT				; BRANCH IF NONE

                          FFE7'  30  0016   160 	BSBW	RM$CHKNAMBLK			; VERIFY NAM (RETURNS ONLY IF O.K.)

                                     0019   161 ;

                                     0019   162 ; TRY TO GET FILE ID FROM NAM BLOCK

                                     0019   163 ;

            68            38     E1  0019   164 	BBC	#FAB$V_NAM+FOP,(R8),CHKMT	; BRANCH IF NOT DOING NAM BLK OPEN

                          34         001C       

       00A8 CA         24 A7     D0  001D   165 	MOVL	NAM$W_FID(R7),FIB$W_FID+FWA$T_FIBBUF(R10)	; GET FILE-ID

                          08     13  0023   166 	BEQL	10$				; BRANCH IF NONE

                                 B0  0025   167 	MOVW	NAM$W_FID_RVN(R7),-

       00AC CA         28 A7         0026   168 		FIB$W_FID_RVN+FWA$T_FIBBUF(R10)	; COPY RELATIVE VOL NUMBER TOO

                          0E     11  002B   169 	BRB	SUCCESS				; ALL DONE

                                     002D   170 ;

                                     002D   171 ;  TRY TO GET DIRECTORY ID FROM NAM BLOCK

                                     002D   172 ;

                                 B0  002D   173 10$:	MOVW	NAM$W_DID(R7),-

       00AE CA         2A A7         002E   174 		FIB$W_DID_NUM+FWA$T_FIBBUF(R10)	; PICK UP DIRECTORY ID FROM NAM BLK

                          1C     13  0033   175 	BEQL	CHKMT				; BRANCH IF NOT SPECIFIED

                                     0035   176 	ASSUME	FIB$W_DID_RVN EQ FIB$W_DID_SEQ+2

                                 D0  0035   177 	MOVL	NAM$W_DID_SEQ(R7),-

       00B0 CA         2C A7         0036   178 		FIB$W_DID_SEQ+FWA$T_FIBBUF(R10)	; MOVE THE REST OF THE DID

                                     003B   179 SUCCESS:

                                     003B   180 	RMSSUC

            50            01     D0  003B       		MOVL	#1,R0

                                 05  003E   181 	RSB

                                     003F   182 ;

                                     003F   183 ;  SET MFD DID FOR MAGTAPE AND EXIT

                                     003F   184 ;

                                     003F   185 SET_MT_MFD:

                          02     10  003F   186 	BSBB	SETMFD

                          F8     11  0041   187 	BRB	SUCCESS

                                     0043   188 ;

                                     0043   189 ;  SUBROUTINE TO SET THE MFD DIRECTORY ID INTO THE FIB

                                     0043   190 ;

                                     0043   191 SETMFD:	ASSUME	FIB$W_DID_SEQ EQ FIB$W_DID_NUM+2

                                 D0  0043   192 	MOVL	#MFD_FILE_ID,-

       00AE CA   00040004 8F         0044   193 		FIB$W_DID_NUM+FWA$T_FIBBUF(R10)	; SET FILE ID OF MFD

                     00B2 CA     B4  004C   194 	CLRW	FIB$W_DID_RVN+FWA$T_FIBBUF(R10)	; BACK TO RELATIVE VOL 0

                                 05  0050   195 	RSB

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   6

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     0051   197 ;++

                                     0051   198 ;

                                     0051   199 ; DIRECTORY ID WASN'T IN NAM BLOCK.  GET IT FROM DIRECTORY CACHE.

                                     0051   200 ;

                                     0051   201 ;  ALTERNATE ENTRY IF NAM BLOCK NOT TO BE USED FOR INPUT (FROM RMS$RENAME)

                                     0051   202 ;

                                     0051   203 ;--

                                     0051   204 RM$SETDID_ALT::

            69            05     E0  0051   205 CHKMT:	BBS	#DEV$V_SQD,IFB$L_PRIM_DEV(R9),SET_MT_MFD ; BRANCH IF MAGTAPE

                          EA         0054       

                                     0055   206 ;++

                                     0055   207 ;

                                     0055   208 ;  LOCATE THE DEVICE NODE FOR THE DEVICE AND UNIT IN THE DIRECTORY CACHE

                                     0055   209 ;

                                     0055   210 ;--

            53         28 AA     D0  0055   211 	MOVL	FWA$Q_DIR+4(R10),R3		; SET ADDR OF SCRATCH BUFFER

                          FFA4'  30  0059   212 	BSBW	RM$GETDEVNAM			; FILL IN DEVICE NAME

            57       0088 C6     3E  005C   213 	MOVAW	UCB$W_DIRSEQ(R6),R7		; SAVE UCB DIRSEQ ADDRESS HERE

            63            54     B0  0061   214 	MOVW	R4,(R3)				; APPEND UNIT # IN BINARY

            54         28 AA     D0  0064   215 	MOVL	FWA$Q_DIR+4(R10),R4		; RESTORE STRING START ADDR

            64            03     80  0068   216 	ADDB2	#3,(R4)				; ADD IN UNIT # SIZE & COUNT

                                     006B   217 						;  FIELD ITSELF

            55   00000000'9F     DE  006B   218 	MOVAL	@#PIO$GL_DIRCACHE,R5		; ADDR OF DEVICE LIST HEAD

                          0112   30  0072   219 	BSBW	FIND_ENTRY			; GO FIND THIS ENTRY IN CACHE

                          10     13  0075   220 	BEQL	10$				; BRANCH IF NONE FOUND

            67         1A AC     B1  0077   221 	CMPW	DRC$W_DIRSEQ(AP),(R7)		; CACHE ENTRY STILL VALID?

                          1C     13  007B   222 	BEQL	20$				; BRANCH IF YES

            55            5C     D0  007D   223 	MOVL	AP,R5				; GET DEVICE NODE TO CORRECT REG

         20 AA            5C     D0  0080   224 	MOVL	AP,FWA$L_DEVNODADR(R10)		; SAVE THE DEVICE NODE ADDRESS

                          00F1   31  0084   225 	BRW	PRUNE				; AND GO PRUNE BACK BRANCH

                                     0087   226 ;

                                     0087   227 ;  NO ENTRY FOR THIS DEVICE IN THE DIRECTORY CACHE.  -  MAKE ONE.

                                     0087   228 ;

                          011B   30  0087   229 10$:	BSBW	GET_FREE			; GO PICK A FREE NODE

            65            6C     0E  008A   230 	INSQUE	(AP),(R5)			; INSERT NODE AT LIST HEAD

            50            64     9B  008D   231 	MOVZBW	(R4),R0				; GET LENGTH OF DEVICE STRING

            64            50     28  0090   232 	MOVC3	R0,(R4),DRC$T_NAME(AP)		; MOVE THE DEVICE STRING

                       10 AC         0093       

         1A AC            67     B0  0095   233 	MOVW	(R7),DRC$W_DIRSEQ(AP)		; SAVE THE DIR SEQ. COUNT

         20 AA            5C     D0  0099   234 20$:	MOVL	AP,FWA$L_DEVNODADR(R10)		; SAVE THE DEVICE NODE ADDRESS

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   7

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     009D   236 ;++

                                     009D   237 ;

                                     009D   238 ;  FOLLOW THE DIRECTORY CACHE ENTRIES FOR THIS DIRECTORY SPEC.

                                     009D   239 ;  IF ANY MISSING, DO A LOOKUP TO SUPPLY THE ENTRY AND RESTART SCAN FROM THE TOP.

                                     009D   240 ;

                                     009D   241 ;--

                                     009D   242 CLR_LOOKUP:

                       1C AA     D4  009D   243 	CLRL	FWA$L_LOOKUP(R10)		; SAY NO LOOKUP DONE

                                     00A0   244 FIRST_DIR:

            56         44 AA     7E  00A0   245 	MOVAQ	FWA$Q_DIR1(R10),R6		; GET ADDR OF 1ST DIR. DISCRIPTOR

            5C         20 AA     D0  00A4   246 	MOVL	FWA$L_DEVNODADR(R10),AP		; RESET DEVICE NODE ADDRESS

                                     00A8   247 ;

                                     00A8   248 ; CONSTRUCT DIRECTORY NAME

                                     00A8   249 ;

         28 AA            01     C3  00A8   250 BLDNAM:	SUBL3	#1,FWA$Q_DIR+4(R10),R3		; GET ADDR FOR NAME SCRATCH BUFFER

                          53         00AC       

                          53     DD  00AD   251 	PUSHL	R3				; SAVE BUFF START ADDR

            6A            1B     E0  00AF   252 	BBS	#FWA$V_GRPMBR,(R10),10$		; BRANCH IF [GRP,MBR] FORMAT

                          0D         00B2       

                                     00B3   253 ;

                                     00B3   254 ; DIRECTORY NAME IS IN [NAME1.NAME2...] FORMAT

                                     00B3   255 ; CONSTRUCT THE CURRENT LEVEL DIRECTORY NAME

                                     00B3   256 ;

            50            86     D0  00B3   257 	MOVL	(R6)+,R0			; GET NAME LENGTH

            50            01     81  00B6   258 	ADDB3	#1,R0,(R3)+			; STORE LENGTH COUNT IN STRING

                          83         00B9       

            96            50     28  00BA   259 	MOVC3	R0,@(R6)+,(R3)			; MOVE TO TEMPORARY BUFFER

                          63         00BD       

                          09     11  00BE   260 	BRB	20$				; GO LOOK UP THE FILE ID

                                     00C0   261 ;

                                     00C0   262 ; DIRECTORY NAME IS IN [GRP,MBR] FORMAT.

                                     00C0   263 ; BUILD THE DIRECTORY NAME FROM THE TWO VALUES, PREFIXING

                                     00C0   264 ; WITH LEADING ZEROES IF NECCESSARY TO GET A 6-CHARACTER NAME

                                     00C0   265 ;

            83            07     90  00C0   266 10$:	MOVB	#7,(R3)+			; COUNT OF STRING TO MATCH

                          013A   30  00C3   267 	BSBW	PREFIX_0			; MOVE GROUP PART

                          0137   30  00C6   268 	BSBW	PREFIX_0			; MOVE MEMBER PART

                                     00C9   269 ;

                                     00C9   270 ;  LOOK UP FILE IN CACHE

                                     00C9   271 ;

                                     00C9   272 20$:

                          10     BA  00C9   273 	POPR	#^M<R4>				; RESTORE COUNTED STRING ADDR

            55         08 AC     9E  00CB   274 	MOVAB	DRC$L_LVLFLNK(AP),R5		; ADDR OF LIST HDR FOR NXT LEVEL

                          00B5   30  00CF   275 	BSBW	FIND_ENTRY			; GO FIND THIS (SUB)DIRECTORY ENTRY

                          73     12  00D2   276 	BNEQ	NEXT_DIR			; BRANCH IF FOUND

                                     00D4   277 ;++

                                     00D4   278 ;

                                     00D4   279 ;  NO ENTRY FOR THIS (SUB)DIRECTORY IN THE CACHE.

                                     00D4   280 ;  MUST LOOKUP THE FILE AND MAKE AND ENTRY.

                                     00D4   281 ;  BECAUSE A MORE PRIVILIGED MODE COULD INVALIDATE THE CACHE WHILE WE STALL

                                     00D4   282 ;  (VERRRRY UNLIKELY, BUT POSSIBLE), MUST FIND OUR WAY BACK DOWN TO THIS LEVEL

                                     00D4   283 ;  BEFORE ACTUALLY ADDING THE NEW ENTRY.

                                     00D4   284 ;

                                     00D4   285 ;--

            5C         1C AA     D0  00D4   286 	MOVL	FWA$L_LOOKUP(R10),AP		; GET ADDR NODE FOR LAST LOOKUP

                          15     13  00D8   287 	BEQL	LOOKUP				; BRANCH IF NONE

                                     00DA   288 ;

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   8

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     00DA   289 ;  THIS IS THE 2ND TIME THRU.  LOOKUP HAS ALREADY BEEN DONE.  ADD THE LOOKED-UP

                                     00DA   290 ;  ENTRY TO THE CACHE AS LONG AS IT'S STILL THE ONE WE WANT.

                                     00DA   291 ;

                       1C AA     D4  00DA   292 	CLRL	FWA$L_LOOKUP(R10)		; INDICATE NO LOOKUP NODE

            50            64     9B  00DD   293 	MOVZBW	(R4),R0				; GET LENGTH OF STRING

            64            50     29  00E0   294 	CMPC3	R0,(R4),DRC$T_NAME(AP)		; IS THIS THE RIGHT ENTRY?

                       10 AC         00E3       

                          05     12  00E5   295 	BNEQ	30$				; BRANCH IF NOT

            65            6C     0E  00E7   296 	INSQUE	(AP),(R5)			; INSERT NEW NODE AFTER HEADER

                          5B     11  00EA   297 	BRB	NEXT_DIR			; AND CONTINUE

                          0103   30  00EC   298 30$:	BSBW	ADD_TO_FREE			; RETURN THE NODE

                                     00EF   299 ;

                                     00EF   300 ;  MUST LOOK UP THE FILE.  USE THE CURRENT CACHE NODE TO SET THE DID.

                                     00EF   301 ;

            55            08     C2  00EF   302 LOOKUP:	SUBL2	#DRC$L_LVLFLNK,R5		; BACK TO START OF CURRENT NODE

         20 AA            55     D1  00F2   303 	CMPL	R5,FWA$L_DEVNODADR(R10)		; IS THIS THE DEVICE NODE?

                          05     12  00F6   304 	BNEQ	10$				; BRANCH IF NOT

                          FF48   30  00F8   305 	BSBW	SETMFD				; GO SET MFD DID

                          0C     11  00FB   306 	BRB	20$				; CONTINUE

                                 D0  00FD   307 10$:	MOVL	DRC$W_DID(R5),-

       00AE CA         1A A5         00FE   308 		FIB$W_DID+FWA$T_FIBBUF(R10)	; SET THE DID FROM CUR. NODE

                                 B0  0103   309 	MOVW	DRC$W_DID+4(R5),-

       00B2 CA         1E A5         0104   310 		FIB$W_DID+4+FWA$T_FIBBUF(R10)	;  (DITTO)

                                     0109   311 ;

                                     0109   312 ; APPEND '.DIR;1' TO THE DIRECTORY NAME, DETERMINE

                                     0109   313 ; THE TOTAL STRING LENGTH, AND PERFORM QIO TO GET THE FILE-ID

                                     0109   314 ;

            53            64     9A  0109   315 20$:	MOVZBL	(R4),R3				; SET SIZE OF DIR NAME STRING

       FEEF CF            06     28  010C   316 	MOVC3	#6,DIR_SUFFIX,(R4)[R3]		; APPEND FIXED SUFFIX

                          6443       0111       

            53         28 AA     C3  0113   317 	SUBL3	FWA$Q_DIR+4(R10),R3,FWA$Q_DIR(R10)	; COMPUTE NAME LENGTH

                       24 AA         0117       

                          7E     7C  0119   318 	CLRQ	-(SP)				; P5, P6 ZERO

                          7E     7C  011B   319 	CLRQ	-(SP)				; P3, P4 ZERO

                       24 AA     7F  011D   320 	PUSHAQ	FWA$Q_DIR(R10)			; P2 = DIRECTORY NAME DESCRIPTOR

            50            00'    9A  0120   321 	MOVZBL	S^#IO$_ACCESS,R0		; QIO FUNCTION CODE

                          FEE8'  30  0123   322 	BSBW	RM$FCPFNC			; ISSUE THE FCP FUNCTION

            52            50     E9  0126   323 	BLBC	R0,ERRDNF			; GET OUT ON ERROR

                                     0129   324 ;

                                     0129   325 ; DIRECTORY LOOK UP SUCCEEDED.

                                     0129   326 ; MOVE THE DIRECTORY FILE ID TO THE NEW DIRECTORY CACHE NODE

                                     0129   327 ;

                          0079   30  0129   328 	BSBW	GET_FREE			; GO PICK A FREE NODE

         1C AA            5C     D0  012C   329 	MOVL	AP,FWA$L_LOOKUP(R10)		; SAVE ADDR OF LOOKUP NODE

                          06     28  0130   330 	MOVC3	#6,FIB$W_FID+FWA$T_FIBBUF(R10),-

         1A AC       00A8 CA         0132   331 		DRC$W_DID(AP)			; SAVE THE DIRECTORY FID

         28 AA            01     C3  0137   332 	SUBL3	#1,FWA$Q_DIR+4(R10),R3		; GET SAVE STRING ADDR

                          53         013B       

            50            63     9B  013C   333 	MOVZBW	(R3),R0				; GET STRING LEN

            63            50     28  013F   334 	MOVC3	R0,(R3),DRC$T_NAME(AP)		; SAVE STRING IN DIR NODE

                       10 AC         0142       

                          FF59   31  0144   335 	BRW	FIRST_DIR			; BRANCH TO TOP TO COME DOWN

                                     0147   336 						; TREE AGAIN AND FIND THIS NODE

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page   9

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     0147   338 ;++

                                     0147   339 ;

                                     0147   340 ;  FOUND THIS DIRECTORY ENTRY O.K.  -  SEE IF MORE TO FIND

                                     0147   341 ;

                                     0147   342 ;--

                                     0147   343 NEXT_DIR:

            6A            1B     E0  0147   344 	BBS	#FWA$V_GRPMBR,(R10),EXIT	; BRANCH IF DIR LIST

                          0F         014A       

                                     014B   345 ;

                                     014B   346 ; PICK UP THE NEXT SUB-DIRECTORY NAME IF ANY MORE TO GO

                                     014B   347 ;

                          66     D5  014B   348 	TSTL	(R6)				; ZERO DIRECTORY LENGTH?

                          0B     13  014D   349 	BEQL	EXIT				; BRANCH IF YES (ALL DONE)

                       7C AA     7F  014F   350 	PUSHAQ	FWA$Q_DIR1+<8*FWA$C_MAXSUBDIR>(R10) ; GET LOWEST LEVEL SUB DIRECTORY

                                     0152   351 						; DESCRIPTOR ADDR

            8E            56     D1  0152   352 	CMPL	R6,(SP)+			; PAST IT ALREADY?

                          03     1A  0155   353 	BGTRU	EXIT				; BRANCH IF YES (ALL DONE)

                          FF4E   31  0157   354 	BRW	BLDNAM				; KEEP GOING WITH NEXT LEVEL

                                     015A   355 ;++

                                     015A   356 ;

                                     015A   357 ;  HAVE FOUND ALL NEEDED NODES.  CHECK IF DIRECTORY SEQUENCE COUNT STILL VALID.

                                     015A   358 ;

                                     015A   359 ;--

            56            5C     D0  015A   360 EXIT:	MOVL	AP,R6				; SAVE ADDR OF DIR NODE

            5C         1C AA     D0  015D   361 	MOVL	FWA$L_LOOKUP(R10),AP		; UNUSED LOOKUP NODE?

                          03     13  0161   362 	BEQL	10$				; BRANCH IF NOT

                          008C   30  0163   363 	BSBW	ADD_TO_FREE			; RETURN IT TO THE FREE LIST

                          16     10  0166   364 10$:	BSBB	CHKDIRSEQ			; CACHE STILL VALID?

                          0E     12  0168   365 	BNEQ	PRUNE				; BRANCH IF NOT

                                     016A   366 ;++

                                     016A   367 ;

                                     016A   368 ;  ALL SET.  JUST SET THE DID IN THE FIB AND CLEAR THE FID.

                                     016A   369 ;

                                     016A   370 ;--

                          06     28  016A   371 	MOVC3	#6,DRC$W_DID(R6),-

       00AE CA         1A A6         016C   372 		FIB$W_DID+FWA$T_FIBBUF(R10)	; SET THE DIRECTORY ID

                     00A8 CA     D4  0171   373 	CLRL	FIB$W_FID+FWA$T_FIBBUF(R10)	; ZERO THE FILE ID

                          50     D6  0175   374 	INCL	R0				; SHOW SUCCESS (R0 = 0 FROM MOVC3)

                                 05  0177   375 	RSB					; BACK TO CALLER OF RM$SETDID

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  10

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     0178   377 ;++

                                     0178   378 ;

                                     0178   379 ;  HAVE RUN INTO AN INVALID CACHE CONDITION, I.E., SOMETHING WAS DONE

                                     0178   380 ;  BY THE ACP (E.G., MOUNT) TO INVALIDATE THE CACHE CONTENTS.

                                     0178   381 ;  REMOVE ALL ENTRIES BELOW THE DEVICE, RESET DIRSEQ, AND TRY AGAIN.

                                     0178   382 ;

                                     0178   383 ;--

                                     0178   384 PRUNE:	$PSECT_BR	L$RMS0

                          FE85'  31  0178       		BRW	L$RMS00

                                     017B       		.SAVE

                                 00000000       		.PSECT	L$RMS0,GBL,NOWRT

                                     0000       L$RMS00:

            55            08     C0  0000   385 	ADDL2	#DRC$L_LVLFLNK,R5		; GET ADDRESS OF UFD HEADER

            54            55     D0  0003   386 	MOVL	R5,R4				; SET STOP ADDRESS

            55            65     D1  0006   387 	CMPL	(R5),R5				; ANYTHING TO PRUNE?

                          26     13  0009   388 	BEQL	30$				; BRANCH IF NOT

                          55     DD  000B   389 10$:	PUSHL	R5				; SAVE HEADER ADDR

            5C            65     D0  000D   390 	MOVL	(R5),AP				; GET NEXT LEVEL DOWN

            55         08 AC     DE  0010   391 15$:	MOVAL	DRC$L_LVLFLNK(AP),R5		; GET ADDR OF LEVEL LINK

            55            65     D1  0014   392 	CMPL	(R5),R5				; ANOTHER LEVEL?

                          F2     12  0017   393 	BNEQ	10$				; BRANCH IF YES

                                     0019   394 ;

                                     0019   395 ;  AT LOWEST LEVEL  -  REMOVE THIS NODE AND MOVE TO SIDE NODE

                                     0019   396 ;

                          6C     DD  0019   397 20$:	PUSHL	(AP)				; SAVE NEXT NODE ADDR

            5C            6C     0F  001B   398 	REMQUE	(AP),AP				; REMOVE NODE

                          01D1'  30  001E   399 	BSBW	ADD_TO_FREE			; ADD IT TO THE FREE LIST

            5C            8E     D0  0021   400 	MOVL	(SP)+,AP			; GET NEXT NODE ADDR

            6E            5C     D1  0024   401 	CMPL	AP,(SP)				; BACK TO PREVIOUS LEVEL?

                          E7     12  0027   402 	BNEQ	15$				; BRANCH IF NOT

            5C            08     C2  0029   403 	SUBL2	#DRC$L_LVLFLNK,AP		; GET NODE START ADDRESS

            54            8E     D1  002C   404 	CMPL	(SP)+,R4			; BACK TO DEV NODE?

                          E8     12  002F   405 	BNEQ	20$				; BRANCH IF NOT

                                     0031   406 ;

                                     0031   407 ;  STORE NEW DIRSEQ VALUE AND REBUILD TREE FOR THIS DEVICE

                                     0031   408 ;

         12 A4            67     B0  0031   409 30$:	MOVW	(R7),DRC$W_DIRSEQ-DRC$L_LVLFLNK(R4)

                          0065'  31  0035   410 	BRW	CLR_LOOKUP

                                     0038   411 	$PSECT_RESTORE

                                 0000017B       		.RESTORE

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  11

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     017B   413 ;++

                                     017B   414 ;

                                     017B   415 ;  HANDLE DIRECTORY NOT FOUND ERROR.

                                     017B   416 ;

                                     017B   417 ;--

                                     017B   418 ERRDNF:	$PSECT_BR	L$RMS0

                          FEBA'  31  017B       		BRW	L$RMS01

                                     017E       		.SAVE

                                 00000038       		.PSECT	L$RMS0,GBL,NOWRT

                                     0038       L$RMS01:

                          0143'  30  0038   419 	BSBW	CHKDIRSEQ			; ERROR DUE TO INVALID CACHE?

                          03     13  003B   420 	BEQL	5$				; BRANCH IF NOT

                          0138'  31  003D   421 	BRW	PRUNE				; POSSIBLY - GO TRY AGAIN

       0000'8F            50     B1  0040   422 5$:	CMPW	R0,#SS$_NOSUCHFILE		; WAS ERROR FILE NOT FOUND?

                          0A     12  0045   423 	BNEQ	10$				; BRANCH IF NOT

         0C A8            50     D0  0047   424 	MOVL	R0,FAB$L_STV(R8)		; SAVE SYSTEM CODE

                                     004B   425 	RMSERR	DNF				; REPLACE WITH DIRECTORY NOT FOUND

            50       0000'8F     3C  004B       		MOVZWL	#<RMS$_DNF&^XFFFF>,R0

                                 05  0050   426 	RSB					; AND RETURN

                                     0051   427 10$:	RMSERR	DNF,R1				; DEFAULT ERROR TO DIRECTORY NOT FOUND

            51       0000'8F     3C  0051       		MOVZWL	#<RMS$_DNF&^XFFFF>,R1

                          0044   31  0056   428 	BRW	RM$MAPERR			; MAP ERROR TO RMS & RETURN

                                     0059   429 	$PSECT_RESTORE

                                 0000017E       		.RESTORE

                                     017E   430 ;++

                                     017E   431 ;

                                     017E   432 ;  CHKDIRSEQ SUBROUTINE TO VERIFY CACHE VALIDITY

                                     017E   433 ;

                                     017E   434 ;  INPUTS:

                                     017E   435 ;		R10	FWA ADDRESS

                                     017E   436 ;		R7	UCB$W_DIRSEQ ADDRESS

                                     017E   437 ;		FWA$L_DEVNODADR

                                     017E   438 ;

                                     017E   439 ;  OUTPUTS:

                                     017E   440 ;		R5	FWA$L_DEVNODADR

                                     017E   441 ;		Z-BIT	SET IF CACHE VALID, ELSE CLEAR

                                     017E   442 ;--

                                     017E   443 CHKDIRSEQ:

            55         20 AA     D0  017E   444 	MOVL	FWA$L_DEVNODADR(R10),R5		; GET DEVICE NODE ADDRESS

            67         1A A5     B1  0182   445 	CMPW	DRC$W_DIRSEQ(R5),(R7)		; STILL VALID?

                                 05  0186   446 	RSB

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  12

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     0187   448 ;++

                                     0187   449 ;

                                     0187   450 ;  FIND_ENTRY SUBROUTINE TO FIND AN ENTRY IN THE DIRECTORY CACHE

                                     0187   451 ;

                                     0187   452 ;  INPUTS:

                                     0187   453 ;		R4	ADDRESS OF COUNTED STRING TO MATCH

                                     0187   454 ;		R5	ADDRESS OF LIST HEAD FOR LEVEL TO SCAN

                                     0187   455 ;

                                     0187   456 ;  OUTPUTS:

                                     0187   457 ;		Z-BIT	SET IF NO MATCH FOUND, ELSE CLEAR

                                     0187   458 ;		AP	ADDRESS OF MATCHING ENTRY

                                     0187   459 ;		R0-R3	DESTROYED

                                     0187   460 ;

                                     0187   461 ;  NOTE: IF MATCH FOUND, MATCHING ENTRY IS REQUEUED TO IMMEDIATELY FOLLOW LIST HEAD.

                                     0187   462 ;

                                     0187   463 ;--

                                     0187   464 FIND_ENTRY:

            5C            55     D0  0187   465 	MOVL	R5,AP				; SET UP TO FIND 1ST NODE

            5C            6C     D0  018A   466 10$:	MOVL	DRC$L_NXTFLNK(AP),AP		; GET NEXT NODE

            55            5C     D1  018D   467 	CMPL	AP,R5				; BACK AT HEAD?

                          12     13  0190   468 	BEQL	20$				; BRANCH IF YES (NO MATCH)

            50            64     9B  0192   469 	MOVZBW	(R4),R0				; GET LEN OF STRING TO MATCH

            64            50     29  0195   470 	CMPC3	R0,(R4),DRC$T_NAME(AP)		; DO THEY MATCH?

                       10 AC         0198       

                          EE     12  019A   471 	BNEQ	10$				; BRANCH IF NOT

                                     019C   472 ;

                                     019C   473 ;  MATCHING ENTRY FOUND  -  REQUEUE ENTRY TO HEAD OF THE LIST

                                     019C   474 ;

            5C            6C     0F  019C   475 	REMQUE	(AP),AP

            65            6C     0E  019F   476 	INSQUE	(AP),(R5)

                          5C     D5  01A2   477 	TSTL	AP				; CLEAR Z-BIT

                                 05  01A4   478 20$:	RSB

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  13

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     01A5   480 ;++

                                     01A5   481 ;

                                     01A5   482 ;  GET_FREE SUBROUTINE TO FIND A FREE NODE.

                                     01A5   483 ;  PICKS NODE FROM FREE LIST, IF ANY, ELSE PICKS LEAST RECENTLY USED DIR ENTRY

                                     01A5   484 ;  ON LEAST RECENTLY USED DEVICE.

                                     01A5   485 ;

                                     01A5   486 ;  INPUTS:

                                     01A5   487 ;		NONE

                                     01A5   488 ;

                                     01A5   489 ;  OUTPUTS:

                                     01A5   490 ;		AP	ADDR OF NODE

                                     01A5   491 ;		R0	DESTROYED

                                     01A5   492 ;--

                                     01A5   493 GET_FREE:

            50   00000000'9F     DE  01A5   494 	MOVAL	@#PIO$GL_DIRCFRLH,R0		; GET FREE LIST ADDR

            5C            60     D0  01AC   495 	MOVL	(R0),AP				; PICK FIRST NODE

                          04     13  01AF   496 	BEQL	10$				; BRANCH IF NONE

            60            6C     D0  01B1   497 	MOVL	(AP),(R0)			; BRING UP NEXT FREE NODE

                                 05  01B4   498 	RSB

                                     01B5   499 ;

                                     01B5   500 ;  NOTHING ON FREE LIST.  CHECK THAT IT HAS BEEN INITIALIZED.

                                     01B5   501 ;

            5C         04'A0     D0  01B5   502 10$:	MOVL	B^PIO$GL_DIRCACHE+4-PIO$GL_DIRCFRLH(R0),AP

                                     01B9   503 						; GET LRU DEVICE NODE

            6C            5C     D1  01B9   504 	CMPL	AP,(AP)				; EMPTY LIST?

                          27     12  01BC   505 	BNEQ	30$				; BRANCH IF NOT

                                     01BE   506 ;

                                     01BE   507 ;  INITIALIZE FREE DIRECTORY NODES LIST

                                     01BE   508 ;

            5C            50     D0  01BE   509 	MOVL	R0,AP				; SET UP TO INIT FREE NODE LIST HEAD

            50       0400'C0     DE  01C1   510 	MOVAL	PIO$GL_FMLH+<2*512>-PIO$GL_DIRCFRLH(R0),R0

                                     01C6   511 						; GET ADDR OF DIRECTORY CACHE PAGE

                          10     DD  01C6   512 	PUSHL	#<512/DRC$C_BLN>		; SET # OF NODES PER PAGE

            6C            50     D0  01C8   513 15$:	MOVL	R0,(AP)				; SET FLINK OF PREVIOUS NODE

            5C            50     D0  01CB   514 	MOVL	R0,AP				; SAVE ADDR THIS FLINK FOR NEXT NODE

                                     01CE   515 	ASSUME	DRC$L_LVLFLNK EQ 8

                          80     7C  01CE   516 	CLRQ	(R0)+				; MOVE TO LEVEL LIST HEAD

            60            50     D0  01D0   517 	MOVL	R0,(R0)				; INIT LIST TO EMPTY (FLINK)

         04 A0            50     D0  01D3   518 	MOVL	R0,4(R0)			;	"	     (BLINK)

            50            18     C0  01D7   519 	ADDL2	#DRC$C_BLN-DRC$L_LVLFLNK,R0	; MOVE TO NEXT NODE

            EB            6E     F5  01DA   520 	SOBGTR	(SP),15$			; LOOP IF MORE

                          01     BA  01DD   521 	POPR	#^M<R0>				; CLEAN STACK

                          C4     11  01DF   522 	BRB	GET_FREE			; AND TRY AGAIN

                                     01E1   523 ;

                                     01E1   524 ;  PICK RELATIVELY LITTLE USED NODE

                                     01E1   525 ;

            5C         0C AC     D0  01E1   526 20$:	MOVL	DRC$L_LVLBLNK(AP),AP		; GET LRU (SUB)DIRECTORY

            50         08 AC     DE  01E5   527 30$:	MOVAL	DRC$L_LVLFLNK(AP),R0		; GET NEXT LEVEL LIST HEAD

            50            60     D1  01E9   528 	CMPL	(R0),R0				; LIST EMPTY?

                          F3     12  01EC   529 	BNEQ	20$				; BRANCH IF NOT

            5C            6C     0F  01EE   530 	REMQUE	(AP),AP				; PICK THE NODE

                                 05  01F1   531 	RSB

                                     01F2   532 

                                     01F2   533 ;++

                                     01F2   534 ;

                                     01F2   535 ;  ADD_TO_FREE SUBROUTINE TO RETURN A NODE TO THE FREE LIST.

                                     01F2   536 ;

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  14

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     01F2   537 ;  INPUTS:

                                     01F2   538 ;		AP	NODE ADDRESS

                                     01F2   539 ;

                                     01F2   540 ;  OUTPUTS:

                                     01F2   541 ;		R0	DESTROYED

                                     01F2   542 ;--

                                     01F2   543 ADD_TO_FREE:

            50   00000000'9F     DE  01F2   544 	MOVAL	@#PIO$GL_DIRCFRLH,R0		; GET FREE LIST HEAD ADDR

            6C            60     D0  01F9   545 	MOVL	(R0),(AP)			; FLINK TO NEW NODE

            60            5C     D0  01FC   546 	MOVL	AP,(R0)				; NEW NODE ADDR TO LIST HEAD

                                 05  01FF   547 	RSB

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  15

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (1)



                                     0200   549 ;++

                                     0200   550 ;

                                     0200   551 ; SUBROUTINE PREFIX_0 TO MOVE EITHER THE GROUP OR

                                     0200   552 ; MEMBER PART OF A DIRECTORY SPEC PREFIXING IT

                                     0200   553 ; WITH ONE OR TWO ZEROS TO GIVE 3 CHARACTERS TOTAL

                                     0200   554 ;

                                     0200   555 ; INPUTS:

                                     0200   556 ;

                                     0200   557 ;	R6	ADDR OF DESCRIPTOR FOR GROUP OF MEMBER PART

                                     0200   558 ;	R3	ADDR OF OUTPUT BUFFER

                                     0200   559 ;

                                     0200   560 ; OUTPUTS:

                                     0200   561 ;

                                     0200   562 ;	R6	R6+8

                                     0200   563 ;	R3	R3+3

                                     0200   564 ;	R0,R1,R2,R4,R5	DESTROYED

                                     0200   565 ;

                                     0200   566 ;--

                                     0200   567 RM$PREFIX_0::					; PROVIDE GLOBAL ENTRY FOR RM$KNOWNFILE

                                     0200   568 PREFIX_0:					; LOCAL SYMBOL

            50            86     D0  0200   569 	MOVL	(R6)+,R0			; GET LENGTH

            03            50     D1  0203   570 	CMPL	R0,#3				; ALL 3 CHARS PRESENT?

                          0B     13  0206   571 	BEQL	20$				; BRANCH IF YES

            02            50     D1  0208   572 	CMPL	R0,#2				; 2 OF THE 3?

                          03     13  020B   573 	BEQL	10$				; BRANCH IF YES

            83            30     90  020D   574 	MOVB	#^A/0/,(R3)+			; MOVE A ZERO

            83            30     90  0210   575 10$:	MOVB	#^A/0/,(R3)+			; MOVE A ZERO

            96            50     28  0213   576 20$:	MOVC3	R0,@(R6)+,(R3)			; MOVE THE GRP OR MBR NUMBER

                          63         0216       

                                 05  0217   577 	RSB

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  16

031             RM$SETDID  -  ROUTINE TO SET DIRECTORY FILE ID                                                                   (3)



                                     0218   579 

                                     0218   580 	.SBTTL	RM$FCPFNC  -  ROUTINE TO ISSUE A FILE FUNCTION QIO

                                     0218   581 ;++

                                     0218   582 ; FUNCTIONAL DESCRIPTION:

                                     0218   583 ;

                                     0218   584 ; THIS ROUTINE COMPLETES THE ARGUMENT LIST ALREADY

                                     0218   585 ; BEGUN (P6 THRU P2 ARE ALREADY ON THE STACK),

                                     0218   586 ; ISSUES THE QIO, AND AWAITS COMPELTION OF

                                     0218   587 ; THE FUNCTION.

                                     0218   588 ;

                                     0218   589 ; CALLING SEQUENCE:

                                     0218   590 ;

                                     0218   591 ;	BSBW	RM$FCPFNC

                                     0218   592 ;	BSBW	RM$FCPFNC_ALT,_ALT1,_ALT2	; ALTERNATE ENTRY POINTS

                                     0218   593 ;	BSBW	RM$FCPEXTEND		; PERFORM EXTEND FUNCTION

                                     0218   594 ;

                                     0218   595 ; INPUT PARAMETERS:

                                     0218   596 ;

                                     0218   597 ;	R11	IMPURE AREA ADDRESS

                                     0218   598 ;	R10	FWA ADDRESS (INPUT FOR RM$FCPFNC)

                                     0218   599 ;	R9	IFAB/IRAB ADDRESS

                                     0218   600 ;	R8	FAB/RAB ADDRESS

                                     0218   601 ;	R0	QIO FUNCTION CODE (NOT AN INPUT FOR RM$FCPEXTEND)

                                     0218   602 ;

                                     0218   603 ; IMPLICIT INPUTS:

                                     0218   604 ;

                                     0218   605 ;	P6 THRU P2 ALREADY PUSHED ON STACK BEFORE

                                     0218   606 ;	THE CALL TO RM$FCPFNC

                                     0218   607 ;

                                     0218   608 ;	IFB$L_CHNL	-  I/O CHANNEL

                                     0218   609 ;	FWA$Q_FIB	-  FIB DESCRIPTOR (AND BUFFER)

                                     0218   610 ;			-  (NOTE: INPUT FOR ENTRY AT RM$FCPFNC ONLY)

                                     0218   611 ;

                                     0218   612 ; OUTPUTS:

                                     0218   613 ;

                                     0218   614 ;	R0	STATUS CODE

                                     0218   615 ;	R1-R4,AP DESTROYED

                                     0218   616 ;

                                     0218   617 ; IMPLICIT OUTPUTS:

                                     0218   618 ;

                                     0218   619 ;	IFB$L_IOS	-  I/O STATUS BLOCK FILLED IN

                                     0218   620 ;	( OR IRB$L_IOS IF R9 = IRAB )

                                     0218   621 ;	FWA$Q_FIB	-  FILLED IN WITH FILE FUNCTION RESULT

                                     0218   622 ;

                                     0218   623 ; COMPLETION CODES:

                                     0218   624 ;

                                     0218   625 ;	QIO STATUS CODE.

                                     0218   626 ;

                                     0218   627 ; SIDE EFFECTS:

                                     0218   628 ;

                                     0218   629 ;	ON RETURN RMS WILL BE RUNNING AT AST LEVEL.

                                     0218   630 ;

                                     0218   631 ;--

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  17

031             RM$FCPFNC  -  ROUTINE TO ISSUE A FILE FUNCTION                                                                   (3)



                                 00000000   633 	.PSECT	F$RMSCOM,GBL,NOWRT

                                     0000   634 

                                     0000   635 ;

                                     0000   636 ; ALTERNATE ENTRY POINT FOR ZERO P1-P4 (P5,P6 ON STACK)

                                     0000   637 ;	R10 AND FWA$Q_FIB ARE NOT INPUTS

                                     0000   638 ;

                                     0000   639 RM$FCPFNC_ALT::

                                     0000   640 	$TSTPT	FCPFNCA

                 00000200'9F     D6  0000       		INCL	@#PIO$GL_FMLH+512+TPT$L_FCPFNCA

                          10     BA  0006   641 	POPR	#^M<R4>				; SAVE RETURN PC

                          7E     7C  0008   642 P4_P1:	CLRQ	-(SP)				; P4,P3  = 0

                          7E     7C  000A   643 	CLRQ	-(SP)				; P2, P1 = 0

                          0B     11  000C   644 	BRB	FCPCOM				; JOIN MAIN LINE

                                     000E   645 ;

                                     000E   646 ;  NORMAL ENTRY

                                     000E   647 ;

                                     000E   648 RM$FCPFNC::

                                     000E   649 	$TSTPT	FCPFNC

                 00000200'9F     D6  000E       		INCL	@#PIO$GL_FMLH+512+TPT$L_FCPFNC

                          10     BA  0014   650 	POPR	#^M<R4>				; SAVE RETURN PC HERE

                                     0016   651 ;

                                     0016   652 ;  ENTRY WITH R4 = RETURN PC (FROM RMS$RENAME)

                                     0016   653 ;

                                     0016   654 RM$FCPFNC_R4::

                                     0016   655 ;

                                     0016   656 ; FINISH BUILDING ARGUMENT LIST ON STACK

                                     0016   657 ; (P6 - P2 ALREADY THERE)

                                     0016   658 ;

                       0C AA     7F  0016   659 	PUSHAQ	FWA$Q_FIB(R10)			; P1 = FIB DESCRIPTOR ADDR

                                     0019   660 	ASSUME	QIO$_ASTPRM EQ <QIO$_P1 - 4>

                          59     DD  0019   661 FCPCOM:	PUSHL	R9				; ASTPRM = IFAB ADDR

                                     001B   662 	ASSUME	QIO$_ASTADR EQ <QIO$_ASTPRM -4>

                     0000'CF     DF  001B   663 	PUSHAL	W^RM$STALLAST			; AST ADDRESS

                                     001F   664 	ASSUME	QIO$_IOSB EQ <QIO$_ASTADR -4>

                       0C A9     DF  001F   665 	PUSHAL	IFB$L_IOS(R9)			; I/O STATUS BLOCK ADDR

                                     0022   666 	ASSUME	QIO$_FUNC EQ <QIO$_IOSB -4>

                          50     DD  0022   667 	PUSHL	R0				; QIO FUNCTION FROM CALLER

                                     0024   668 	ASSUME	QIO$_CHAN EQ <QIO$_FUNC - 4>

            50            59     D0  0024   669 	MOVL	R9,R0				; SET IFAB/IRAB ADDR

                                     0027   670 	ASSUME	IFB$B_BID EQ IRB$B_BID

                                     0027   671 	ASSUME	IFB$C_BID&1 EQ 1

                                     0027   672 	ASSUME	IRB$C_BID&1 EQ 0

            03         08 A9     E8  0027   673 	BLBS	IFB$B_BID(R9),2$		; BRANCH IF IFAB

            50            69     D0  002B   674 	MOVL	IRB$L_IFAB_LNK(R9),R0		; GET IFAB ADDR

            7E         20 A0     3C  002E   675 2$:	MOVZWL	IFB$W_CHNL(R0),-(SP)		; I/O CHANNEL

                                     0032   676 	ASSUME	QIO$_EFN EQ <QIO$_CHAN -4>

                          FFCB'  30  0032   677 5$:	BSBW	RM$SETEFN			; SET EVENT FLAG TO USE

                                     0035   678 	ASSUME	QIO$_NARGS EQ 12

   00000000'9F            0C     FB  0035   679 	CALLS	#12,@#SYS$QIO			; DO THE QIO

            03            50     E9  003C   680 	BLBC	R0,10$				; BRANCH ON ERROR

                          FFBE'  30  003F   681 	BSBW	RM$STALL			; AWAIT COMPLETION

                          64     17  0042   682 10$:	JMP	(R4)				; RETURN TO CALLER

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  18

031             RM$FCPFNC  -  ROUTINE TO ISSUE A FILE FUNCTION                                                                   (3)



                                     0044   684 ;

                                     0044   685 ;  ALTERNATE ENTRY POINT FOR DOING AN EXTEND

                                     0044   686 ;

                                     0044   687 ;  THE EXTEND FIB DESCRIPTOR MUST BE ON THE STACK IMMEDIATELY

                                     0044   688 ;  PRECEDING THE RETURN PC

                                     0044   689 ;

                                     0044   690 ;  R0, R10, AND FWA$Q_FIB ARE NOT INPUTS

                                     0044   691 ;

                                     0044   692 ;  (NOTE: THIS OPERATION IS TYPICALLY DONE WITH R9 CONTAINING AN IRAB ADDR)

                                     0044   693 ;

                                     0044   694 RM$FCPEXTEND::

                                     0044   695 	$TSTPT	FCPEXT

                 00000200'9F     D6  0044       		INCL	@#PIO$GL_FMLH+512+TPT$L_FCPEXT

                          10     BA  004A   696 	POPR	#^M<R4>				; GET RETURN PC

            50            00'    9A  004C   697 	MOVZBL	S^#IO$_MODIFY,R0		; SET I/O FUNCTION CODE

                          7E     7C  004F   698 P6_P1:	CLRQ	-(SP)				; P5=P6=0

                          7E     7C  0051   699 P4_FIB:	CLRQ	-(SP)				; P3=P4=0

                          7E     D4  0053   700 	CLRL	-(SP)				; P2=0

                       14 AE     9F  0055   701 	PUSHAB	20(SP)				; P1= FIB DISCRIPTOR ADDR

                          BF     11  0058   702 	BRB	FCPCOM				; FINISH ARGLIST BUILD AND DO QIO

                                     005A   703 ;

                                     005A   704 ;  ALTERNATE ENTRY POINT (FOR DELETE FILE ON CLOSE & MAGTAPE CONTROL FUNCTIONS)

                                     005A   705 ;  WITH FIB DESCRIPTOR ON STACK

                                     005A   706 ;

                                     005A   707 RM$FCPFNC_ALT1::

                          10     BA  005A   708 	POPR	#^M<R4>				; GET RETURN PC

                          F1     11  005C   709 	BRB	P6_P1				; GO SET QIO PARAMS AND DO QIO

                                     005E   710 ;

                                     005E   711 ;  ALTERNATE ENTRY POINT (FOR $SEARCH, $ENTER, AND $REMOVE) WITH P1

                                     005E   712 ;  THRU P6 ALREADY ON STACK

                                     005E   713 ;

                                     005E   714 RM$FCPFNC_ALT2::

                          10     BA  005E   715 	POPR	#^M<R4>				; GET RETURN PC

                          B7     11  0060   716 	BRB	FCPCOM				; FINISH ARGLIST BUILD AND DO QIO

                                     0062   717 ;

                                     0062   718 ;  ALTERNATE ENTRY POINT (FOR RM$FLUSH) WITH RECORD ATTRIBUTE LIST ON STACK

                                     0062   719 ;

                                     0062   720 RM$FCPFNC_ALT3::

                          10     BA  0062   721 	POPR	#^M<R4>				; GET RETURN PC

                          00     DD  0064   722 	PUSHL	#0				; P6=0

                       04 AE     DF  0066   723 	PUSHAL	4(SP)				; P5=ATTRIBUTE LIST ADDR

                          9D     11  0069   724 	BRB	P4_P1				; GO FINISH BUILDING PARAM LIST

                                     006B   725 						; AND DO THE QIO

                                     006B   726 ;

                                     006B   727 ;  ALTERNATE ENTRY POINT (FOR RM$DEACCESS) WITH FIB DESCRIPTOR ALREADY

                                     006B   728 ;  SET ON STACK PRECEDED BY ATTRIBUTE LIST.

                                     006B   729 ;

                                     006B   730 RM$FCPFNC_ALT4::

                          10     BA  006B   731 	POPR	#^M<R4>				; GET RETURN PC

                          00     DD  006D   732 	PUSHL	#0				; P6=0

                       0C AE     DF  006F   733 	PUSHAL	4+8(SP)				; P5=ATTRIBUTE LIST ADDR

                          DD     11  0072   734 	BRB	P4_FIB				; GO FINISH BUILDING PARAM LIST

                                     0074   735 						; AND DO THE QIO

                                     0074   736 

                                     0074   737 ;

                                     0074   738 ; ALTERNATE ENTRY FOR FOREIGN (NON_FILE STRUCTURED) FUNCTION

                                     0074   739 ;

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  19

031             RM$FCPFNC  -  ROUTINE TO ISSUE A FILE FUNCTION                                                                   (3)



                                     0074   740 ;	R6 = P1

                                     0074   741 RM$FORFNC::

                          10     BA  0074   742 	POPR	#^M<R4>				; GET RETURN PC

                          7E     7C  0076   743 	CLRQ	-(SP)				; P5 = P6 = 0

                          7E     7C  0078   744 	CLRQ	-(SP)				; P3 = P4 = 0

                          7E     D4  007A   745 	CLRL	-(SP)				; P2 = 0

                          56     DD  007C   746 	PUSHL	R6				; P1 =FUNCTION PARAMETER

                          99     11  007E   747 	BRB	FCPCOM				; FINISH BUILDING ARGLIST AND DO QIO

                                     0080   748 ;

                                     0080   749 ;  ALTERNATE ENTRY POINT (FOR RMS$DISPLAY) WITH P5 AND P5 ALREADY ON STACK

                                     0080   750 ;  PRECEDED BY FIB DESCRIPTOR

                                     0080   751 ;

                                     0080   752 RM$FCPFNC_ALT5::

                          10     BA  0080   753 	POPR	#^M<R4>				; GET RETURN PC

                          CD     11  0082   754 	BRB	P4_FIB				; GO DO FUNCTION

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  20

031             RM$CHK_IDLE  -  ROUTINE TO CHECK FOR ALL STREAM                                                                  (3)



                                     0084   756 	.SBTTL	RM$CHK_IDLE  -  ROUTINE TO CHECK FOR ALL STREAMS IDLE

                                     0084   757 ;++

                                     0084   758 ;  THIS ROUTINE CHECKS THAT ALL IRABS CONNECTED TO AN IFAB ARE NOT BUSY.

                                     0084   759 ;

                                     0084   760 ;  INPUTS:

                                     0084   761 ;

                                     0084   762 ;	R10	IFAB ADDRESS

                                     0084   763 ;

                                     0084   764 ;  OUTPUTS:

                                     0084   765 ;

                                     0084   766 ;	R0	DESTROYED

                                     0084   767 ;

                                     0084   768 ;  IF NO STREAM IS FOUND BUSY RETURNS TO CALLER, ELSE EXIT IS MADE VIA

                                     0084   769 ;  RM$EXTRMS WITH STATUS RMS$_ACT.

                                     0084   770 ;

                                     0084   771 ;--

                                     0084   772 RM$CHK_IDLE::

            50            5A     D0  0084   773 	MOVL	R10,R0				;IFAB ADDR TO TEMP REG

                          04     11  0087   774 	BRB	20$				;GO CHECK IF ANY IRABS LINKED

            60            20     E0  0089   775 10$:	BBS	#IRB$V_BUSY,(R0),ERRACT		;ERROR IF BUSY

                          07         008C       

                                     008D   776 	ASSUME	IRB$L_IRAB_LNK EQ IFB$L_IRAB_LNK

            50         1C A0     D0  008D   777 20$:	MOVL	IRB$L_IRAB_LNK(R0),R0		;GET NEXT IRAB

                          F6     12  0091   778 	BNEQ	10$				;BRANCH IF WE GOT ONE

                                 05  0093   779 	RSB

                                     0094   780 ;

                                     0094   781 ;  HANDLE ERROR FOR NOT ALL STREAMS IDLE

                                     0094   782 ;

                                     0094   783 ERRACT:	$PSECT_BR	L$RMS0

                          FFC2'  31  0094       		BRW	L$RMS02

                                     0097       		.SAVE

                                 00000059       		.PSECT	L$RMS0,GBL,NOWRT

                                     0059       L$RMS02:

                                     0059   784 RM$ERRACT::

                                     0059   785 	RMSERR	ACT

            50       0000'8F     3C  0059       		MOVZWL	#<RMS$_ACT&^XFFFF>,R0

                          FF9F'  31  005E   786 	BRW	RM$EXRMS

                                     0061   787 	$PSECT_RESTORE

                                 00000097       		.RESTORE

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  21

031             RM$CHK_IDLE  -  ROUTINE TO CHECK FOR ALL STREAM                                                                  (5)



                                     0097   789 

                                     0097   790 	.SBTTL	RM$MAPERR  -  ROUTINE TO MAP QIO ERROR CODES TO RMS CODES

                                     0097   791 ;++

                                     0097   792 ; FUNCTIONAL DESCRIPTION:

                                     0097   793 ;

                                     0097   794 ; THIS ROUTINE MAPS THE ERROR CODE RECEIVED IN R0 TO

                                     0097   795 ; THE EQUIVALENT RMS ERROR CODE. IF THE CODE IS

                                     0097   796 ; NOT FOUND THE DEFAULT CODE IN R1 IS USED.

                                     0097   797 ;

                                     0097   798 ; CALLING SEQUENCE:

                                     0097   799 ;

                                     0097   800 ;	BRW	RM$MAPERR

                                     0097   801 ;

                                     0097   802 ; INPUTS:

                                     0097   803 ;

                                     0097   804 ;	R0	SYSTEM ERROR CODE

                                     0097   805 ;	R1	DEFAULT RMS ERROR CODE

                                     0097   806 ;	R8	FAB/RAB ADDRESS

                                     0097   807 ;

                                     0097   808 ; OUTPUTS:

                                     0097   809 ;

                                     0097   810 ;	FAB$L_STV - SET FROM R0

                                     0097   811 ;	R0	SET FROM MAPPED ERROR CODE OR R1 IF NONE

                                     0097   812 ;

                                     0097   813 ; SIDE EFFECTS:

                                     0097   814 ;

                                     0097   815 ;	EXITS WITH AN RSB.

                                     0097   816 ;--

                                     0097   817 

                                     0097   818 	.MACRO	MAP SYSCOD, RMSCOD

                                     0097   819 	.WORD	SS$_'SYSCOD

                                     0097   820 	RMSERR_WORD	RMSCOD

                                     0097   821 	.ENDM

                                 00000061   822 	.PSECT	L$RMS0,GBL,NOWRT

                                     0061   823 

                                     0061   824 ;

                                     0061   825 MAPTABLE:

                                     0061   826 	MAP	DUPFILENAME,	FEX

                               0000' 0061       	.WORD	SS$_DUPFILENAME

                               0000' 0063       		.WORD	RMS$_FEX&^XFFFF

                                     0065   827 	MAP	FILNOTEXP,	EXP

                               0000' 0065       	.WORD	SS$_FILNOTEXP

                               0000' 0067       		.WORD	RMS$_EXP&^XFFFF

                                     0069   828 	MAP	DEVOFFLINE,	DNR

                               0000' 0069       	.WORD	SS$_DEVOFFLINE

                               0000' 006B       		.WORD	RMS$_DNR&^XFFFF

                                     006D   829 	MAP	ENDOFFILE,	EOF

                               0000' 006D       	.WORD	SS$_ENDOFFILE

                               0000' 006F       		.WORD	RMS$_EOF&^XFFFF

                                     0071   830 	MAP	FCPREADERR,	ATR

                               0000' 0071       	.WORD	SS$_FCPREADERR

                               0000' 0073       		.WORD	RMS$_ATR&^XFFFF

                                     0075   831 	MAP	FCPWRITERR,	ATW

                               0000' 0075       	.WORD	SS$_FCPWRITERR

                               0000' 0077       		.WORD	RMS$_ATW&^XFFFF

                                     0079   832 	MAP	ACCONFLICT,	FLK

                               0000' 0079       	.WORD	SS$_ACCONFLICT

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  22

031             RM$MAPERR  -  ROUTINE TO MAP QIO ERROR CODES TO                                                                  (5)



                               0000' 007B       		.WORD	RMS$_FLK&^XFFFF

                                     007D   833 	MAP	NOSUCHFILE,	FNF

                               0000' 007D       	.WORD	SS$_NOSUCHFILE

                               0000' 007F       		.WORD	RMS$_FNF&^XFFFF

                                     0081   834 	MAP	NOSUCHDEV,	DEV

                               0000' 0081       	.WORD	SS$_NOSUCHDEV

                               0000' 0083       		.WORD	RMS$_DEV&^XFFFF

                                     0085   835 	MAP	NOPRIV,		PRV

                               0000' 0085       	.WORD	SS$_NOPRIV

                               0000' 0087       		.WORD	RMS$_PRV&^XFFFF

                                     0089   836 	MAP	NOMOREFILES,	NMF

                               0000' 0089       	.WORD	SS$_NOMOREFILES

                               0000' 008B       		.WORD	RMS$_NMF&^XFFFF

                                     008D   837 	MAP	DEVICEFULL,	FUL

                               0000' 008D       	.WORD	SS$_DEVICEFULL

                               0000' 008F       		.WORD	RMS$_FUL&^XFFFF

                                     0091   838 	MAP	DEVNOTMOUNT,	DNR

                               0000' 0091       	.WORD	SS$_DEVNOTMOUNT

                               0000' 0093       		.WORD	RMS$_DNR&^XFFFF

                                     0095   839 	MAP	WRITLCK,	WLK

                               0000' 0095       	.WORD	SS$_WRITLCK

                               0000' 0097       		.WORD	RMS$_WLK&^XFFFF

                          0000 0000  0099   840 	.WORD	0,0				; END OF TABLE

                                     009D   841 ;

                                     009D   842 RM$MAPERR::

         0C A8            50     D0  009D   843 	MOVL	R0,FAB$L_STV(R8)		; SAVE SYSTEM CODE IN STV

            50   0FFF0000 8F     D3  00A1   844 	BITL	#^X0FFF0000,R0			; SYSTEM ERROR CODE?

                          0E     12  00A8   845 	BNEQ	15$				; DON'T MAP IF NOT

            50         B4 AF     3E  00AA   846 	MOVAW	MAPTABLE,R0			; ADDRESS OF MAPPING TABLE

         0C A8            80     B1  00AE   847 10$:	CMPW	(R0)+,FAB$L_STV(R8)		; MATCH WITH SYSTEM CODE?

                          08     13  00B2   848 	BEQL	20$				; BRANCH IF YES

                          80     B5  00B4   849 	TSTW	(R0)+				; ZERO ENTRY?

                          F6     12  00B6   850 	BNEQ	10$				; BRANCH IF NOT

                                     00B8   851 ;

                                     00B8   852 ; REACHED END OF TABLE WITHOUT FINDING A MATCH

                                     00B8   853 ; USE THE DEFAULT CODE IN R1

                                     00B8   854 ;

            50            51     D0  00B8   855 15$:	MOVL	R1,R0

                                 05  00BB   856 	RSB

                                     00BC   857 ;

                                     00BC   858 ; FOUND MATCHING CODE IN TABLE - USE CORESPONDING RMS CODE

                                     00BC   859 ;

            50            60     3C  00BC   860 20$:	MOVZWL	(R0),R0

                                 05  00BF   861 	RSB

                                     00C0   862 

                                     00C0   863 	.END

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  23

SYMBOL TABLE                                                                                                                     (5)



$$.PSECT_EP    = 00000003            DEV$V_MNT      = 00000013            FAB$L_FOP        00000004            

$$ARGS         = 0000000C            DEV$V_NET      = 0000000D            FAB$L_JNL        00000020            

$$RMSTEST      = 0000001A            DEV$V_ODV      = 0000001B            FAB$L_MRN        00000038            

$$RMS_PBUGCHK  = 00000010            DEV$V_RCK      = 0000001E            FAB$L_NAM        00000028            

$$RMS_TBUGCHK  = 00000008            DEV$V_REC      = 00000000            FAB$L_SDC        00000044            

$$RMS_UMODE    = 00000004            DEV$V_RND      = 0000001C            FAB$L_STS        00000008            

$$T1           = 00000034            DEV$V_RTM      = 0000001D            FAB$L_STV        0000000C            

ADD_TO_FREE      000001F2 R     02   DEV$V_SDI      = 00000004            FAB$L_XAB        00000024            

BIT...         = 00000020            DEV$V_SHR      = 00000010            FAB$M_BIO      = 00000020            

BLDNAM           000000A8 R     02   DEV$V_SPL      = 00000006            FAB$M_BLK      = 00000008            

CCB$B_AMOD       00000009            DEV$V_SQD      = 00000005            FAB$M_BRO      = 00000040            

CCB$B_STS        00000008            DEV$V_SWL      = 00000019            FAB$M_CBT      = 00200000            

CCB$C_LENGTH     00000010            DEV$V_TRM      = 00000002            FAB$M_CIF      = 02000000            

CCB$K_LENGTH     00000010            DEV$V_WCK      = 0000001F            FAB$M_CR       = 00000002            

CCB$L_DIRP       0000000C            DIR_SUFFIX       00000000 R     02   FAB$M_CTG      = 00100000            

CCB$L_UCB        00000000            DRC$C_BLN        00000020            FAB$M_DEL      = 00000004            

CCB$L_WIND       00000004            DRC$K_BLN        00000020            FAB$M_DFW      = 00000020            

CCB$W_IOC        0000000A            DRC$L_LVLBLNK    0000000C            FAB$M_DLT      = 00008000            

CHKDIRSEQ        0000017E R     02   DRC$L_LVLFLNK    00000008            FAB$M_DMO      = 00001000            

CHKMT            00000051 R     02   DRC$L_NXTBLNK    00000004            FAB$M_ESC      = 08000000            

CLR_LOOKUP       0000009D R     02   DRC$L_NXTFLNK    00000000            FAB$M_EXE      = 00000080            

DEV$M_ALL      = 00800000            DRC$T_NAME       00000010            FAB$M_FTN      = 00000001            

DEV$M_AVL      = 00040000            DRC$W_DID        0000001A            FAB$M_GET      = 00000002            

DEV$M_CCL      = 00000002            DRC$W_DIRSEQ     0000001A            FAB$M_INP      = 00080000            

DEV$M_DIR      = 00000008            ERRACT           00000094 R     05   FAB$M_JNL      = 00400000            

DEV$M_DMT      = 00200000            ERRDNF           0000017B R     02   FAB$M_KFO      = 40000000            

DEV$M_ELG      = 00400000            EXIT             0000015A R     02   FAB$M_MSE      = 00000010            

DEV$M_FOD      = 00004000            FAB$B_BID        00000000            FAB$M_MXV      = 00000002            

DEV$M_FOR      = 01000000            FAB$B_BKS        0000003E            FAB$M_NAM      = 01000000            

DEV$M_GEN      = 00020000            FAB$B_BLN        00000001            FAB$M_NEF      = 00000400            

DEV$M_IDV      = 04000000            FAB$B_DNS        00000035            FAB$M_NFS      = 00010000            

DEV$M_MBX      = 00100000            FAB$B_FAC        00000016            FAB$M_NIL      = 00000020            

DEV$M_MNT      = 00080000            FAB$B_FNS        00000034            FAB$M_OFP      = 20000000            

DEV$M_NET      = 00002000            FAB$B_FSZ        0000003F            FAB$M_POS      = 00000100            

DEV$M_ODV      = 08000000            FAB$B_ORG        0000001D            FAB$M_PPF      = 00040000            

DEV$M_RCK      = 40000000            FAB$B_RAT        0000001E            FAB$M_PPF_IND  = 00004000            

DEV$M_REC      = 00000001            FAB$B_RFM        0000001F            FAB$M_PPF_RAT  = 00003FC0            

DEV$M_RND      = 10000000            FAB$B_RTV        0000001C            FAB$M_PRN      = 00000004            

DEV$M_RTM      = 20000000            FAB$B_SHR        00000017            FAB$M_PUT      = 00000001            

DEV$M_SDI      = 00000010            FAB$C_BID      = 00000003            FAB$M_RCK      = 00800000            

DEV$M_SHR      = 00010000            FAB$C_BLN        00000050            FAB$M_RWC      = 00000800            

DEV$M_SPL      = 00000040            FAB$C_FIX      = 00000001            FAB$M_RWO      = 00000080            

DEV$M_SQD      = 00000020            FAB$C_HSH      = 00000030            FAB$M_SCF      = 00004000            

DEV$M_SWL      = 02000000            FAB$C_IDX      = 00000020            FAB$M_SHRDEL   = 00000004            

DEV$M_TRM      = 00000004            FAB$C_MAXRFM   = 00000003            FAB$M_SHRGET   = 00000002            

DEV$M_WCK      = 80000000            FAB$C_REL      = 00000010            FAB$M_SHRPUT   = 00000001            

DEV$V_ALL      = 00000017            FAB$C_RFM_DFLT = 00000002            FAB$M_SHRUPD   = 00000008            

DEV$V_AVL      = 00000012            FAB$C_SEQ      = 00000000            FAB$M_SPL      = 00002000            

DEV$V_CCL      = 00000001            FAB$C_UDF      = 00000000            FAB$M_SQO      = 00000040            

DEV$V_DIR      = 00000003            FAB$C_VAR      = 00000002            FAB$M_SUP      = 00000004            

DEV$V_DMT      = 00000015            FAB$C_VFC      = 00000003            FAB$M_TEF      = 10000000            

DEV$V_ELG      = 00000016            FAB$K_BLN        00000050            FAB$M_TMD      = 00000010            

DEV$V_FOD      = 0000000E            FAB$L_ALQ        00000010            FAB$M_TMP      = 00000008            

DEV$V_FOR      = 00000018            FAB$L_CTX        00000018            FAB$M_TRN      = 00000010            

DEV$V_GEN      = 00000011            FAB$L_DEV        00000040            FAB$M_UFM      = 04000000            

DEV$V_IDV      = 0000001A            FAB$L_DNA        00000030            FAB$M_UFO      = 00020000            

DEV$V_MBX      = 00000014            FAB$L_FNA        0000002C            FAB$M_UPD      = 00000008            

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  24

SYMBOL TABLE                                                                                                                     (5)



FAB$M_UPI      = 00000040            FAB$W_DEQ        00000014            FIB$M_NEWVER   = 00000200            

FAB$M_WCK      = 00000200            FAB$W_IFI        00000002            FIB$M_NOHDREXT = 00000200            

FAB$S_ORG      = 00000004            FAB$W_MRS        00000036            FIB$M_NOREAD   = 00000400            

FAB$S_PPF_RAT  = 00000008            FCPCOM           00000019 R     05   FIB$M_NOTRUNC  = 00000800            

FAB$V_BIO      = 00000005            FIB$B_ALALIGN    00000021            FIB$M_NOWRITE  = 00000001            

FAB$V_BLK      = 00000003            FIB$B_ALOPTS     00000020            FIB$M_ONCYL    = 00000002            

FAB$V_BRO      = 00000006            FIB$B_DID_NMX    0000000F            FIB$M_PRSRV_ATR= 00020000            

FAB$V_CBT      = 00000015            FIB$B_DID_RVN    0000000E            FIB$M_READCK   = 00000200            

FAB$V_CIF      = 00000019            FIB$B_FID_NMX    00000009            FIB$M_REWIND   = 00000008            

FAB$V_CR       = 00000001            FIB$B_FID_RVN    00000008            FIB$M_SEQONLY  = 00000040            

FAB$V_CTG      = 00000014            FIB$B_LOC_NMX    00000027            FIB$M_SPOOL    = 00000010            

FAB$V_DEL      = 00000002            FIB$B_LOC_RVN    00000026            FIB$M_SUPERSEDE= 00000400            

FAB$V_DFW      = 00000005            FIB$B_WSIZE      00000003            FIB$M_TRUNC    = 00000100            

FAB$V_DLT      = 0000000F            FIB$C_ACCDATA    0000000A            FIB$M_UPDATE   = 00000040            

FAB$V_DMO      = 0000000C            FIB$C_ALCDATA    0000002C            FIB$M_WILD     = 00000100            

FAB$V_ESC      = 0000001B            FIB$C_CYL      = 00000001            FIB$M_WRITE    = 00000100            

FAB$V_EXE      = 00000007            FIB$C_DIRDATA    00000016            FIB$M_WRITECK  = 00000020            

FAB$V_FTN      = 00000000            FIB$C_EXTDATA    00000020            FIB$V_ALCON    = 00000000            

FAB$V_GET      = 00000001            FIB$C_ILLEGAL  = 00000005            FIB$V_ALCONB   = 00000001            

FAB$V_INP      = 00000013            FIB$C_LBN      = 00000002            FIB$V_ALDEF    = 00000003            

FAB$V_JNL      = 00000016            FIB$C_LENGTH     0000002C            FIB$V_ALLNAM   = 00000005            

FAB$V_KFO      = 0000001E            FIB$C_MTALEN     0000001C            FIB$V_ALLTYP   = 00000004            

FAB$V_MSE      = 00000004            FIB$C_NEXTVOL  = 00000003            FIB$V_ALLVER   = 00000003            

FAB$V_MXV      = 00000001            FIB$C_POSEND   = 00000002            FIB$V_CURPOS   = 00000004            

FAB$V_NAM      = 00000018            FIB$C_REWINDFIL= 00000006            FIB$V_DLOCK    = 00000001            

FAB$V_NEF      = 0000000A            FIB$C_REWINDVOL= 00000001            FIB$V_EXACT    = 00000000            

FAB$V_NFS      = 00000010            FIB$C_RFI      = 00000004            FIB$V_EXECUTE  = 00000010            

FAB$V_NIL      = 00000005            FIB$C_SPACE    = 00000004            FIB$V_EXTEND   = 00000007            

FAB$V_OFP      = 0000001D            FIB$C_VBN      = 00000003            FIB$V_FILCON   = 00000002            

FAB$V_ORG      = 00000004            FIB$K_ACCDATA    0000000A            FIB$V_FINDFID  = 0000000B            

FAB$V_POS      = 00000008            FIB$K_ALCDATA    0000002C            FIB$V_HIGHVER  = 0000000F            

FAB$V_PPF      = 00000012            FIB$K_DIRDATA    00000016            FIB$V_LOWVER   = 0000000E            

FAB$V_PPF_IND  = 0000000E            FIB$K_EXTDATA    00000020            FIB$V_MARKBAD  = 0000000A            

FAB$V_PPF_RAT  = 00000006            FIB$K_LENGTH     0000002C            FIB$V_NEWVER   = 00000009            

FAB$V_PRN      = 00000002            FIB$K_MTALEN     0000001C            FIB$V_NOHDREXT = 00000009            

FAB$V_PUT      = 00000000            FIB$L_ACCTL      00000000            FIB$V_NOREAD   = 0000000A            

FAB$V_RCK      = 00000017            FIB$L_CNTRLVAL   00000018            FIB$V_NOTRUNC  = 0000000B            

FAB$V_RWC      = 0000000B            FIB$L_EXSZ       00000018            FIB$V_NOWRITE  = 00000000            

FAB$V_RWO      = 00000007            FIB$L_EXVBN      0000001C            FIB$V_ONCYL    = 00000001            

FAB$V_SCF      = 0000000E            FIB$L_LOC_ADDR   00000028            FIB$V_PRSRV_ATR= 00000011            

FAB$V_SHRDEL   = 00000002            FIB$L_WCC        00000010            FIB$V_READCK   = 00000009            

FAB$V_SHRGET   = 00000001            FIB$M_ALCON    = 00000001            FIB$V_REWIND   = 00000003            

FAB$V_SHRPUT   = 00000000            FIB$M_ALCONB   = 00000002            FIB$V_SEQONLY  = 00000006            

FAB$V_SHRUPD   = 00000003            FIB$M_ALDEF    = 00000008            FIB$V_SPOOL    = 00000004            

FAB$V_SPL      = 0000000D            FIB$M_ALLNAM   = 00000020            FIB$V_SUPERSEDE= 0000000A            

FAB$V_SQO      = 00000006            FIB$M_ALLTYP   = 00000010            FIB$V_TRUNC    = 00000008            

FAB$V_SUP      = 00000002            FIB$M_ALLVER   = 00000008            FIB$V_UPDATE   = 00000006            

FAB$V_TEF      = 0000001C            FIB$M_CURPOS   = 00000010            FIB$V_WILD     = 00000008            

FAB$V_TMD      = 00000004            FIB$M_DLOCK    = 00000002            FIB$V_WRITE    = 00000008            

FAB$V_TMP      = 00000003            FIB$M_EXACT    = 00000001            FIB$V_WRITECK  = 00000005            

FAB$V_TRN      = 00000004            FIB$M_EXECUTE  = 00010000            FIB$W_ALLOC      00000022            

FAB$V_UFM      = 0000001A            FIB$M_EXTEND   = 00000080            FIB$W_CNTRLFUNC  00000016            

FAB$V_UFO      = 00000011            FIB$M_FILCON   = 00000004            FIB$W_DID        0000000A            

FAB$V_UPD      = 00000003            FIB$M_FINDFID  = 00000800            FIB$W_DID_NUM    0000000A            

FAB$V_UPI      = 00000006            FIB$M_HIGHVER  = 00008000            FIB$W_DID_RVN    0000000E            

FAB$V_WCK      = 00000009            FIB$M_LOWVER   = 00004000            FIB$W_DID_SEQ    0000000C            

FAB$W_BLS        0000003C            FIB$M_MARKBAD  = 00000400            FIB$W_EXCTL      00000016            

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  25

SYMBOL TABLE                                                                                                                     (5)



FIB$W_FID        00000004            FWA$M_EXP_DIR  = 00400000            FWA$V_NAMEFLG  = 00000001            

FIB$W_FID_NUM    00000004            FWA$M_EXP_NAME = 00040000            FWA$V_NAM_DVI  = 00000005            

FIB$W_FID_RVN    00000008            FWA$M_EXP_TYPE = 00020000            FWA$V_NETSTR   = 00000032            

FIB$W_FID_SEQ    00000006            FWA$M_EXP_VER  = 00010000            FWA$V_NODE     = 00000019            

FIB$W_LOC_FID    00000022            FWA$M_FNA_PASS = 00000010            FWA$V_OBJTYPE  = 00000031            

FIB$W_LOC_NUM    00000022            FWA$M_NAME     = 00002000            FWA$V_QUOTED   = 0000001A            

FIB$W_LOC_RVN    00000026            FWA$M_NAMEFLG  = 00000002            FWA$V_RLF_PASS = 00000003            

FIB$W_LOC_SEQ    00000024            FWA$M_NAM_DVI  = 00000020            FWA$V_TYPE     = 0000000C            

FIB$W_NMCTL      00000014            FWA$M_RLF_PASS = 00000008            FWA$V_TYPEFLG  = 00000002            

FIND_ENTRY       00000187 R     02   FWA$M_TYPE     = 00001000            FWA$V_VERSION  = 0000000B            

FIRST_DIR        000000A0 R     02   FWA$M_TYPEFLG  = 00000004            FWA$V_WC_NAME  = 00000015            

FOP            = 00000020            FWA$M_VERSION  = 00000800            FWA$V_WC_TYPE  = 00000014            

FWA$B_DIRFLGS    00000004            FWA$Q_DEVICE     0000003C            FWA$V_WC_VER   = 00000013            

FWA$B_DIRLEN     00000030            FWA$Q_DIR        00000024            FWA$V_WILDCARD = 00000018            

FWA$B_DIRTERM    00000007            FWA$Q_DIR1       00000044            FWA$V_WILD_DIR = 0000001C            

FWA$B_DIRWCFLGS  00000005            FWA$Q_DIR2       0000004C            FWA$V_WILD_GRP = 00000028            

FWA$B_ESCFLG     00000008            FWA$Q_FIB        0000000C            FWA$V_WILD_MBR = 00000029            

FWA$B_ESCTYP     00000009            FWA$Q_FLAGS      00000000            FWA$V_WILD_SFD1= 00000029            

FWA$B_FLDFLGS    00000001            FWA$Q_LOGNAME    0000001C            FWA$V_WILD_UFD = 00000028            

FWA$B_LNFLG      00000006            FWA$Q_NAME       00000084            FWA$W_ESCIFI     0000000A            

FWA$B_PARSEFLGS  00000003            FWA$Q_NODE       00000034            FWA$W_FNAMSIZ    00000018            

FWA$B_PASSFLGS   00000000            FWA$Q_QUOTED     0000009C            FWA$W_PRO        00000020            

FWA$B_UNDERLINE  00000154            FWA$Q_RNS        0000008C            FWA$W_UCHAR      0000002C            

FWA$B_WILDFLGS   00000002            FWA$Q_STATBLK    00000094            GBL...         = 00000000            

FWA$B_XLTMODE    0000000A            FWA$Q_TYPE       0000008C            GET_FREE         000001A5 R     02   

FWA$B_XLTTBL     0000000B            FWA$Q_VERSION    00000094            IFB$B_AMAX       00000059            

FWA$C_ALL      = 000000F8            FWA$Q_XLTBUF1    0000000C            IFB$B_AVBN       00000058            

FWA$C_DEVBUFSIZ= 0000000F            FWA$Q_XLTBUF2    00000024            IFB$B_BID        00000008            

FWA$C_DIRBUFSIZ= 00000009            FWA$S_DIR_LVLS = 00000003            IFB$B_BKS        0000004A            

FWA$C_FIBLEN   = 0000002C            FWA$T_ATR_LIST   00000164            IFB$B_BLN        00000009            

FWA$C_MAXDEVICE= 0000000F            FWA$T_DEVICEBUF  00000155            IFB$B_EFN        0000000B            

FWA$C_MAXDIRLEN= 0000003C            FWA$T_DIB        00000174            IFB$B_EXTRABUF   0000005D            

FWA$C_MAXNAME  = 00000009            FWA$T_DIR1BUF    000000D0            IFB$B_FAC        00000022            

FWA$C_MAXNODE  = 00000028            FWA$T_DIR2BUF    000000D9            IFB$B_FSZ        0000004B            

FWA$C_MAXQUOTED= 0000007F            FWA$T_FIBBUF     000000A4            IFB$B_KBUFSZ     0000005C            

FWA$C_MAXSUBDIR= 00000007            FWA$T_NAMEBUF    00000118            IFB$B_MODE       0000000A            

FWA$C_MAXTYPE  = 00000003            FWA$T_NODEBUF    0000012C            IFB$B_NUM_KEYS   0000005A            

FWA$C_MAXVER   = 00000006            FWA$T_TYPEBUF    00000122            IFB$B_ORGCASE    00000023            

FWA$C_NAMBUFSIZ= 0000000A            FWA$T_VERBUF     00000126            IFB$B_RAT        0000003D            

FWA$C_NODBUFSIZ= 00000028            FWA$T_XLTBUFF1   00000164            IFB$B_RFMORG     0000003C            

FWA$C_RNSBUFSIZ= 00000014            FWA$T_XLTBUFF2   000001A4            IFB$B_UBUFSZ     0000005B            

FWA$C_TYPBUFSIZ= 00000004            FWA$V_CUR_VER  = 00000006            IFB$C_BID      = 0000000B            

FWA$C_VERBUFSIZ= 00000006            FWA$V_DEVICE   = 0000000F            IFB$C_BLN        00000060            

FWA$C_XLTBUFSIZ= 0000003F            FWA$V_DIR      = 0000000E            IFB$C_BLN_IDX    00000060            

FWA$L_BUFFLG     00000014            FWA$V_DIR1     = 00000020            IFB$C_BLN_REL    00000060            

FWA$L_DEVNODADR  00000020            FWA$V_DIR2     = 00000021            IFB$C_BLN_SEQ    0000005C            

FWA$L_ESCSTRING  00000008            FWA$V_DIR_LVLS = 0000001D            IFB$C_DIR      = 00000003            

FWA$L_HBK        00000098            FWA$V_DUPOK    = 00000000            IFB$C_FHAEND     00000050            

FWA$L_LOOKUP     0000001C            FWA$V_EXP_DEV  = 00000017            IFB$C_IDX      = 00000002            

FWA$L_SBN        00000094            FWA$V_EXP_DIR  = 00000016            IFB$C_MAXORG   = 00000002            

FWA$L_UIC        0000001C            FWA$V_EXP_NAME = 00000012            IFB$C_REL      = 00000001            

FWA$L_XLTCNT     0000002C            FWA$V_EXP_TYPE = 00000011            IFB$C_SEQ      = 00000000            

FWA$L_XLTSIZ     00000018            FWA$V_EXP_VER  = 00000010            IFB$K_BLN        00000060            

FWA$M_DEVICE   = 00008000            FWA$V_FNA_PASS = 00000004            IFB$K_BLN_IDX    00000060            

FWA$M_DIR      = 00004000            FWA$V_GRPMBR   = 0000001B            IFB$K_BLN_REL    00000060            

FWA$M_DUPOK    = 00000001            FWA$V_LOGNAME  = 00000030            IFB$K_BLN_SEQ    0000005C            

FWA$M_EXP_DEV  = 00800000            FWA$V_NAME     = 0000000D            IFB$K_FHAEND     00000050            

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  26

SYMBOL TABLE                                                                                                                     (5)



IFB$L_ARGLST     00000018            IFB$V_PPF_INPUT= 0000002E            IRB$L_BWB        0000000C            

IFB$L_ASBADDR    00000014            IFB$V_PUT      = 00000000            IRB$L_CURBDB     00000020            

IFB$L_AS_DEV     00000054            IFB$V_RFM      = 00000000            IRB$L_CURVBN     00000030            

IFB$L_BDB_BLNK   00000034            IFB$V_RWC      = 00000027            IRB$L_IFAB_LNK   00000000            

IFB$L_BDB_FLNK   00000030            IFB$V_RW_ATTR  = 00000034            IRB$L_IOS        0000000C            

IFB$L_BKPBITS    00000004            IFB$V_SCF      = 0000002A            IRB$L_IOS4       00000010            

IFB$L_BWB        0000000C            IFB$V_SPL      = 00000029            IRB$L_IRAB_LNK   0000001C            

IFB$L_DVBN       00000058            IFB$V_SQO      = 0000002D            IRB$L_KEYBUF     00000048            

IFB$L_EBK        00000044            IFB$V_TEF      = 00000036            IRB$L_LAST_RAB   00000024            

IFB$L_FRB_PTR    00000028            IFB$V_TMP      = 00000035            IRB$L_LOCK_BDB   0000005C            

IFB$L_FWA_BDB    00000050            IFB$V_TRN      = 00000004            IRB$L_NRP        0000002C            

IFB$L_HBK        00000040            IFB$V_UPD      = 00000003            IRB$L_NRP_OFF    00000030            

IFB$L_IDX_PTR    00000054            IFB$V_WRTACC   = 00000030            IRB$L_NRP_VBN    0000002C            

IFB$L_IOS        0000000C            IFB$W_ASDEVBSIZ  0000005A            IRB$L_NXTBDB     00000028            

IFB$L_IOS4       00000010            IFB$W_BKS_BYTES  0000005C            IRB$L_OWNER_ID   0000003C            

IFB$L_IRAB_LNK   0000001C            IFB$W_BKS_RECS   0000005E            IRB$L_RFA_VBN    00000054            

IFB$L_LAST_FAB   00000024            IFB$W_CHNL       00000020            IRB$L_RLB_ADDR   00000044            

IFB$L_LOCK_BDB   00000050            IFB$W_DEQ        0000004E            IRB$L_RP         00000034            

IFB$L_MRN        00000054            IFB$W_DEVBUFSIZ  00000038            IRB$L_RP_OFF     00000038            

IFB$L_NRP_LNK    00000050            IFB$W_EBK0       00000044            IRB$L_RP_VBN     00000034            

IFB$L_NWA_PTR    00000028            IFB$W_EBK2       00000046            IRB$L_RRV_VBN    0000004C            

IFB$L_PRIM_DEV   00000000            IFB$W_FFB        00000048            IRB$L_TEMP0      00000044            

IFB$L_RLB_LNK    0000002C            IFB$W_IOS2       0000000E            IRB$L_TEMP1      00000048            

IFB$L_RNS_LEN    00000050            IFB$W_LRL        0000003E            IRB$V_ASYNC    = 00000023            

IFB$M_BIO      = 00000020            IFB$W_MRS        0000004C            IRB$V_ASYNCWAIT= 00000024            

IFB$M_BRO      = 00000040            IFB$W_RTDEQ      0000003A            IRB$V_BIO_LAST = 00000027            

IFB$M_DEL      = 00000004            IO$_ACCESS       ********   X   02   IRB$V_BRO_SW   = 00000028            

IFB$M_EXE      = 00000080            IO$_MODIFY       ********   X   05   IRB$V_BUSY     = 00000020            

IFB$M_GET      = 00000002            IRB$B_BCNT       00000040            IRB$V_DAP_CONN = 0000003E            

IFB$M_PUT      = 00000001            IRB$B_BID        00000008            IRB$V_DAP_FMODE= 0000003F            

IFB$M_TRN      = 00000010            IRB$B_BLN        00000009            IRB$V_DUP      = 0000002C            

IFB$M_UPD      = 00000008            IRB$B_EFN        0000000B            IRB$V_EOF      = 00000021            

IFB$S_ORG      = 00000004            IRB$B_KEYSZ      00000051            IRB$V_FIND     = 00000029            

IFB$S_RFM      = 00000004            IRB$B_MBC        00000041            IRB$V_FIND_LAST= 00000025            

IFB$V_ACCESSED = 00000025            IRB$B_MODE       0000000A            IRB$V_IDX_ERR  = 00000031            

IFB$V_ANSI_D   = 00000026            IRB$B_NRP_ID     00000030            IRB$V_LOCKABOVE= 00000002            

IFB$V_ASYNC    = 00000023            IRB$B_NRP_KREF   00000031            IRB$V_NEW_IDX  = 00000003            

IFB$V_ASYNCWAIT= 00000024            IRB$B_NVBNS      00000048            IRB$V_POSINSERT= 00000000            

IFB$V_BIO      = 00000005            IRB$B_POST_CCTL  00000045            IRB$V_PPF_EOF  = 0000002E            

IFB$V_BRO      = 00000006            IRB$B_PPF_ISI    0000003E            IRB$V_PPF_FNDSV= 00000030            

IFB$V_BUSY     = 00000020            IRB$B_PRE_CCTL   00000044            IRB$V_PPF_IMAGE= 00000022            

IFB$V_CREATE   = 00000032            IRB$B_RFA_ID     00000058            IRB$V_PPF_SKIP = 0000002F            

IFB$V_DAP      = 0000003E            IRB$B_RP_ID      00000038            IRB$V_PUTS_LAST= 00000026            

IFB$V_DAP_OPEN = 0000003D            IRB$B_RP_KREF    00000039            IRB$V_RAHWBH   = 0000002A            

IFB$V_DEL      = 00000002            IRB$B_RRV_ID     00000050            IRB$V_SKIP_NEXT= 0000002B            

IFB$V_DFW      = 0000002C            IRB$B_SRCHFLAGS  00000043            IRB$V_SRCHGT   = 00000001            

IFB$V_DLT      = 0000002B            IRB$B_STOPLEVEL  00000042            IRB$V_UNLOCK_RP= 0000002D            

IFB$V_DMO      = 00000028            IRB$C_BID      = 0000000A            IRB$V_WRITE    = 00000029            

IFB$V_EOF      = 00000021            IRB$C_BLN_IDX    0000006C            IRB$W_CSIZ       00000042            

IFB$V_EXE      = 00000007            IRB$C_BLN_REL    00000048            IRB$W_DUP_POS    00000032            

IFB$V_GET      = 00000001            IRB$C_BLN_SEQ    0000004C            IRB$W_IOS2       0000000E            

IFB$V_MSE      = 00000031            IRB$K_BLN_IDX    0000006C            IRB$W_NRP_OFF    00000030            

IFB$V_NORECLK  = 00000033            IRB$K_BLN_REL    00000048            IRB$W_OWN_ID     0000003C            

IFB$V_NSP      = 0000003F            IRB$K_BLN_SEQ    0000004C            IRB$W_OWN_ISI    0000003E            

IFB$V_NWA      = 0000003C            IRB$L_ARGLST     00000018            IRB$W_ROVHDSZ    00000044            

IFB$V_ORG      = 00000004            IRB$L_ASBADDR    00000014            IRB$W_RP_OFF     00000038            

IFB$V_PPF_IMAGE= 00000022            IRB$L_BKPBITS    00000004            IRB$W_RTOTLSZ    00000046            

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  27

SYMBOL TABLE                                                                                                                     (5)



IRB$W_SAVE_POS   00000052            NAM$M_WILD_UFD = 01000000            QIO$_P2        = 00000020            

L$RMS00          00000000 R     04   NAM$M_WILD_VER = 00000008            QIO$_P3        = 00000024            

L$RMS01          00000038 R     04   NAM$S_DIR_LVLS = 00000003            QIO$_P4        = 00000028            

L$RMS02          00000059 R     04   NAM$T_DVI        00000014            QIO$_P5        = 0000002C            

LOOKUP           000000EF R     02   NAM$V_DIR_LVLS = 00000015            QIO$_P6        = 00000030            

MAPTABLE         00000061 R     04   NAM$V_EXP_DEV  = 00000007            RM$CHKNAMBLK     ********   X   02   

MFD_FILE_ID    = 00040004            NAM$V_EXP_DIR  = 00000006            RM$CHK_IDLE      00000084 RG    05   

NAM$B_BID        00000000            NAM$V_EXP_NAME = 00000002            RM$ERRACT        00000059 RG    04   

NAM$B_BLN        00000001            NAM$V_EXP_TYPE = 00000001            RM$EXRMS         ********   X   04   

NAM$B_CURLVL     00000038            NAM$V_EXP_VER  = 00000000            RM$FCPEXTEND     00000044 RG    05   

NAM$B_ESL        0000000B            NAM$V_GRP_MBR  = 00000013            RM$FCPFNC        0000000E RG    05   

NAM$B_ESS        0000000A            NAM$V_HIGHVER  = 0000000F            RM$FCPFNC_ALT    00000000 RG    05   

NAM$B_RSL        00000003            NAM$V_LOWVER   = 0000000E            RM$FCPFNC_ALT1   0000005A RG    05   

NAM$B_RSS        00000002            NAM$V_NODE     = 00000011            RM$FCPFNC_ALT2   0000005E RG    05   

NAM$C_BID      = 00000002            NAM$V_PPF      = 00000010            RM$FCPFNC_ALT3   00000062 RG    05   

NAM$C_BLN        00000038            NAM$V_QUOTED   = 00000012            RM$FCPFNC_ALT4   0000006B RG    05   

NAM$C_BLN_DIRWC  00000050            NAM$V_WILDCARD = 00000008            RM$FCPFNC_ALT5   00000080 RG    05   

NAM$C_DVI      = 00000010            NAM$V_WILD_DIR = 00000014            RM$FCPFNC_R4     00000016 RG    05   

NAM$C_MAXRSS   = 00000080            NAM$V_WILD_GRP = 00000018            RM$FORFNC        00000074 RG    05   

NAM$C_MAXRSSLCL= 00000060            NAM$V_WILD_MBR = 00000019            RM$GETDEVNAM     ********   X   02   

NAM$K_BLN        00000038            NAM$V_WILD_NAME= 00000005            RM$MAPERR        0000009D RG    04   

NAM$K_BLN_DIRWC  00000050            NAM$V_WILD_SFD1= 00000019            RM$PREFIX_0      00000200 RG    02   

NAM$L_DIRWCC1    00000040            NAM$V_WILD_SFD2= 0000001A            RM$SETDID        00000006 RG    02   

NAM$L_DIRWCC2    00000044            NAM$V_WILD_SFD3= 0000001B            RM$SETDID_ALT    00000051 RG    02   

NAM$L_DIRWCC3    00000048            NAM$V_WILD_SFD4= 0000001C            RM$SETEFN        ********   X   05   

NAM$L_DIRWCC4    0000004C            NAM$V_WILD_SFD5= 0000001D            RM$STALL         ********   X   05   

NAM$L_DWC        00000038            NAM$V_WILD_SFD6= 0000001E            RM$STALLAST      ********   X   05   

NAM$L_ESA        0000000C            NAM$V_WILD_SFD7= 0000001F            RMS$_ACT         ********   X   04   

NAM$L_FNB        00000034            NAM$V_WILD_TYPE= 00000004            RMS$_ATR         ********   X   04   

NAM$L_RLF        00000010            NAM$V_WILD_UFD = 00000018            RMS$_ATW         ********   X   04   

NAM$L_RSA        00000004            NAM$V_WILD_VER = 00000003            RMS$_DEV         ********   X   04   

NAM$L_WCC        00000030            NAM$W_DID        0000002A            RMS$_DNF         ********   X   04   

NAM$M_DIR_LVLS = 00E00000            NAM$W_DID_NUM    0000002A            RMS$_DNR         ********   X   04   

NAM$M_EXP_DEV  = 00000080            NAM$W_DID_RVN    0000002E            RMS$_EOF         ********   X   04   

NAM$M_EXP_DIR  = 00000040            NAM$W_DID_SEQ    0000002C            RMS$_EXP         ********   X   04   

NAM$M_EXP_NAME = 00000004            NAM$W_FID        00000024            RMS$_FEX         ********   X   04   

NAM$M_EXP_TYPE = 00000002            NAM$W_FID_NUM    00000024            RMS$_FLK         ********   X   04   

NAM$M_EXP_VER  = 00000001            NAM$W_FID_RVN    00000028            RMS$_FNF         ********   X   04   

NAM$M_GRP_MBR  = 00080000            NAM$W_FID_SEQ    00000026            RMS$_FUL         ********   X   04   

NAM$M_HIGHVER  = 00008000            NAM$W_PRV_DID    0000003A            RMS$_NMF         ********   X   04   

NAM$M_LOWVER   = 00004000            NEXT_DIR         00000147 R     02   RMS$_PRV         ********   X   04   

NAM$M_NODE     = 00020000            P4_FIB           00000051 R     05   RMS$_WLK         ********   X   04   

NAM$M_PPF      = 00010000            P4_P1            00000008 R     05   SETMFD           00000043 R     02   

NAM$M_QUOTED   = 00040000            P6_P1            0000004F R     05   SET_MT_MFD       0000003F R     02   

NAM$M_WILDCARD = 00000100            PIO$GL_DIRCACHE  ********   X   02   SS$_ACCONFLICT   ********   X   04   

NAM$M_WILD_DIR = 00100000            PIO$GL_DIRCFRLH  ********   X   02   SS$_DEVICEFULL   ********   X   04   

NAM$M_WILD_GRP = 01000000            PIO$GL_FMLH      ********   X   02   SS$_DEVNOTMOUNT  ********   X   04   

NAM$M_WILD_MBR = 02000000            PREFIX_0         00000200 R     02   SS$_DEVOFFLINE   ********   X   04   

NAM$M_WILD_NAME= 00000020            PRUNE            00000178 R     02   SS$_DUPFILENAME  ********   X   04   

NAM$M_WILD_SFD1= 02000000            QIO$_ASTADR    = 00000014            SS$_ENDOFFILE    ********   X   04   

NAM$M_WILD_SFD2= 04000000            QIO$_ASTPRM    = 00000018            SS$_FCPREADERR   ********   X   04   

NAM$M_WILD_SFD3= 08000000            QIO$_CHAN      = 00000008            SS$_FCPWRITERR   ********   X   04   

NAM$M_WILD_SFD4= 10000000            QIO$_EFN       = 00000004            SS$_FILNOTEXP    ********   X   04   

NAM$M_WILD_SFD5= 20000000            QIO$_FUNC      = 0000000C            SS$_NOMOREFILES  ********   X   04   

NAM$M_WILD_SFD6= 40000000            QIO$_IOSB      = 00000010            SS$_NOPRIV       ********   X   04   

NAM$M_WILD_SFD7= 80000000            QIO$_NARGS     = 0000000C            SS$_NOSUCHDEV    ********   X   04   

NAM$M_WILD_TYPE= 00000010            QIO$_P1        = 0000001C            SS$_NOSUCHFILE   ********   X   04   

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  28

SYMBOL TABLE                                                                                                                     (5)



SS$_WRITLCK      ********   X   04   UCB$L_LINK       0000002C            UCB$V_LTYPE    = 00000000            

SUCCESS          0000003B R     02   UCB$L_LOGADR     00000064            UCB$V_MOUNTING = 00000009            

SYS$QIO          ********   X   05   UCB$L_MAXBLOCK   00000084            UCB$V_MSGACK   = 00000004            

TPT$L_FCPEXT     ********   X   05   UCB$L_MEDIA      0000008C            UCB$V_MSGFLO   = 00000003            

TPT$L_FCPFNC     ********   X   05   UCB$L_NT_DATSSB  00000074            UCB$V_NOCNVRT  = 00000002            

TPT$L_FCPFNCA    ********   X   05   UCB$L_NT_INTSSB  00000078            UCB$V_NT_BFROVF= 00000002            

TPT$L_SETDID     ********   X   02   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            

UCB$L_IOQBL      00000044            UCB$V_INTTYPE  = 00000007            

UCB$L_IOQFL      00000040            UCB$V_JOB      = 00000000            

UCB$L_IRP        0000004C            UCB$V_LNKPRI   = 00000006            

RM0FILFNC       FILE FUNCTIONS MODULE                            21-AUG-1978 21:21:56   VAX-11 MACRO X0.3-11               Page  29

PROGRAM SECTION SYNOPSIS                                                                                                         (5)







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  

F$RMSOPEN0       00000218      02     NOPIC   USR   CON   REL   GBL NOSHR   EXE   RD  NOWRT BYTE  

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

L$RMS0           000000C0      04     NOPIC   USR   CON   REL   GBL NOSHR   EXE   RD  NOWRT BYTE  

F$RMSCOM         00000097      05     NOPIC   USR   CON   REL   GBL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

1022. BYTES LEFT IN FREE MEMORY POOL.

1006. BYTES OF RECLAIMED MEMORY.

OBJ$:RM0FILFNC,LIS$:RM0FILFNC/-SP=EXECML$/ML,LIB$:R/ML,SRC$:RM0FILFNC

61 MLB DIR RDS - 1414 GETS TO DEFINE 31 MACROS. 118 INTER. FILE WRITES. 

