RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      51  DECLARATIONS

   (1)      78  RM$GETPAG  -  PAGE ALLOCATION ROUTINE

   (3)     245  RM$GETSPC MEMORY ALLOCATION ROUTINE

   (4)     406  RM$RETPAG  -  PAGE DEALLOCATION ROUTINE

   (5)     510  RM$RETSPC  -  MEMORY DEALLOCATION ROUTINE

   (6)     689  RM$ALLOCKBUF  -  BDB & I/O BUFFER ALLOCATION LO

   (6)     724  RM$ALDBUF  -  BDB AND I/O BUFFER ALLOCATION ROU

   (7)     790  RM$ALBDB  -  BDB ALLOCATION ROUTINE

   (8)     845  RM$RETBDB  -  BDB AND I/O BUFFER DEALLOCATION R

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   1

014                                                                                                                              (1)



                                     0000     1 	$BEGIN RM0BUFMGR,014,F$RMSCOM,<BUFFER MANAGER>

                                     0000     2 

                                     0000     3 

                                     0000     4 ;

                                     0000     5 ; COPYRIGHT (C) 1976

                                     0000     6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000     7 ;

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

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

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

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

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

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

                                     0000    14 ; REMAIN IN DEC.

                                     0000    15 ;

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

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

                                     0000    18 ; CORPORATION.

                                     0000    19 ;

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

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

                                     0000    22 

                                     0000    23 ;++

                                     0000    24 ; FACILITY: RMS32

                                     0000    25 ;

                                     0000    26 ; ABSTRACT:

                                     0000    27 ;		THIS MODULE CONTAINS THE BASIC BUFFER MANAGEMENT

                                     0000    28 ;		ROUTINES FOR RMS32.  THE FOLLOWING ROUTINES ARE

                                     0000    29 ;		INCLUDED:

                                     0000    30 ;

                                     0000    31 ;			RM$GETPAG	ALLOCATE EMPTY PAGES

                                     0000    32 ;			RM$GETSPC	ALLOCATE SPACE

                                     0000    33 ;			RM$RETPAG	DEALLOCATE PAGES

                                     0000    34 ;			RM$RETSPC	DEALLOCATE SPACE

                                     0000    35 ;			RM$ALDBUF	ALLOCATE BDB AND I/O BUFFER

                                     0000    36 ;			RM$ALBDB	ALLOCATE BDB

                                     0000    37 ;			RM$RETBDB	DEALLOCATE BDB AND I/O

                                     0000    38 ;					BUFFER (IF ANY)

                                     0000    39 ;

                                     0000    40 ; ENVIRONMENT:

                                     0000    41 ;		STAR PROCESSOR RUNNING STARLET EXEC.

                                     0000    42 ;

                                     0000    43 ; AUTHOR: L F LAVERDURE	, CREATION DATE: 30-DEC-76

                                     0000    44 ;

                                     0000    45 ; MODIFIED BY:

                                     0000    46 ;

                                     0000    47 ;	L F LAVERDURE,   11-JUL-78  16:10

                                     0000    48 ; 01	- 

                                     0000    49 ;--

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   2

014             DECLARATIONS                                                                                                     (1)



                                     0000    51 	.SBTTL	DECLARATIONS

                                     0000    52 ;

                                     0000    53 ; INCLUDE FILES:

                                     0000    54 ;

                                     0000    55 

                                     0000    56 ;

                                     0000    57 ; MACROS:

                                     0000    58 ;

                                     0000    59 	$IMPDEF

                                     0000    60 	$BDBDEF

                                     0000    61 	$IFBDEF

                                     0000    62 	$IRBDEF

                                     0000    63 	$PSLDEF

                                     0000    64 	$PRTDEF

                                     0000    65 	$RMSDEF

                                     0000    66 	.LIST MEB

                                     0000    67 

                                     0000    68 ;

                                     0000    69 ; EQUATED SYMBOLS:

                                     0000    70 ;

                                     0000    71 

                                     0000    72 ;

                                     0000    73 ; OWN STORAGE:

                                     0000    74 ;

                                     0000    75 

                           000001FF  0000    76 C511:	.LONG	511	;CONSTANT FOR GETTING TO PAGE BOUNDARIES

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   3

014             RM$GETPAG  -  PAGE ALLOCATION ROUTINE                                                                            (1)



                                     0004    78 	.SBTTL RM$GETPAG  -  PAGE ALLOCATION ROUTINE

                                     0004    79 ;++

                                     0004    80 ; FUNCTIONAL DESCRIPTION:

                                     0004    81 ;

                                     0004    82 ;  THIS ROUTINE ALLOCATES A SPECIFIED NUMBER OF PAGES.

                                     0004    83 ;  THE PAGES ARE NOT ZERO FILLED.

                                     0004    84 ;

                                     0004    85 ;  IT PERFORMS THIS FUNCTION BY SCANNING THE FREE PAGE

                                     0004    86 ;  LIST OF THE CURRENT (PROCESS OR IMAGE) I/O SEGMENT

                                     0004    87 ;  FOR THE FIRST FIT.

                                     0004    88 ;

                                     0004    89 ;  IF THE REQUEST CANNOT BE SATISFIED FROM THE

                                     0004    90 ;   FREE PAGE LIST, THE ROUTINE CHECKS FOR NEW

                                     0004    91 ;  (I.E. NEVER-USED) PAGES AVAILABLE IN THE I/O SEGMENT

                                     0004    92 ;  AND ALLOCATES FROM THERE.

                                     0004    93 ;

                                     0004    94 ;  IF INSUFFICIENT PAGES IN THE I/O SEGMENT THEN

                                     0004    95 ;      IF IN THE PROCESS I/O SEGMENT

                                     0004    96 ;	OR IF RMS IS INHIBITED FROM USING PROGRAM

                                     0004    97 ;	REGION (P0) SPACE, RETURN A DME ERROR,

                                     0004    98 ;      ELSE ALLOCATE THE PAGE(S) FROM THE PROGRAM

                                     0004    99 ;	REGION.

                                     0004   100 ;

                                     0004   101 ;  THE PAGES WILL HAVE EXEC WRITE PROTECTION AND

                                     0004   102 ;  EITHER SUPERVISOR OR USER READ DEPENDING UPON

                                     0004   103 ;  THE CURRENT I/O SEGMENT (I.E., FOR PROCESS AND USER

                                     0004   104 ;  I/O SEGMENTS RESPECTIVELY).

                                     0004   105 ;

                                     0004   106 ;

                                     0004   107 ; CALLING SEQUENCE:

                                     0004   108 ;

                                     0004   109 ;	BSBW	RM$GETPAG

                                     0004   110 ;	

                                     0004   111 ;  ALTERNATE ENTRY AT RM$GET1PAG TO ALLOCATE A SINGLE

                                     0004   112 ;  PAGE OF MEMORY.  SAME OUTPUTS BUT ONLY R11 INPUT REQUIRED.

                                     0004   113 ;

                                     0004   114 ; INPUT PARAMETERS:

                                     0004   115 ;

                                     0004   116 ;	R11	IMPURE AREA POINTER

                                     0004   117 ;	R2	# OF BYTES REQUIRED

                                     0004   118 ;

                                     0004   119 ; IMPLICIT INPUTS:

                                     0004   120 ;

                                     0004   121 ;	NONE

                                     0004   122 ;

                                     0004   123 ; OUTPUT PARAMETERS:

                                     0004   124 ;

                                     0004   125 ;	R3	ADDR OF STARTING PAGE

                                     0004   126 ;	R2	TOTAL LENGTH OF BUFFER ALLOCATED

                                     0004   127 ;		(I.E., R2 ON INPUT ROUNDED UP

                                     0004   128 ;		 TO NEXT PAGE BOUNDARY)

                                     0004   129 ;	R0	STATUS CODE

                                     0004   130 ;	R1	DESTROYED

                                     0004   131 ;

                                     0004   132 ; IMPLICIT OUTPUTS:

                                     0004   133 ;

                                     0004   134 ;	THE AFFECTED FREE PAGE LIST IS UPDATED.

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   4

014             RM$GETPAG  -  PAGE ALLOCATION ROUTINE                                                                            (1)



                                     0004   135 ;

                                     0004   136 ; COMPLETION CODES:

                                     0004   137 ;

                                     0004   138 ;	STANDARD RMS.  IN PARTICULAR, SUCCESS OR RM$_DME.

                                     0004   139 ;

                                     0004   140 ; SIDE EFFECTS:

                                     0004   141 ;

                                     0004   142 ;	NONE

                                     0004   143 ;

                                     0004   144 ;--

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   5

014             RM$GETPAG  -  PAGE ALLOCATION ROUTINE                                                                            (2)



                                     0004   146 RM$GET1PAG::				;ENTRY TO ALLOCATE 1 PAGE

            52            01     D0  0004   147 	MOVL	#1,R2			;ASKING FOR 1 BYTE GETS 1 PAGE

                                     0007   148 ;

                                     0007   149 ;  SETUP TO SCAN FREE PAGE LIST FOR FIRST FIT

                                     0007   150 ;

                                     0007   151 RM$GETPAG::

            52         F6 AF     C0  0007   152 	ADDL2	C511,R2			;ROUND UP REQUIRED SIZE

            52         F2 AF     CA  000B   153 	BICL2	C511,R2			;TO LENGTH OF PAGES

            51         0C AB     DE  000F   154 	MOVAL	IMP$L_FREEPGLH(R11),R1	;GET FREE PAGE LIST HEAD

                                     0013   155 ;

                                     0013   156 ;  SCAN FREE PAGE LIST

                                     0013   157 ;

         10 AB            51     D1  0013   158 10$:	CMPL	R1,IMP$L_FREEPGLH+4(R11) ;END OF LIST?

                          1F     13  0017   159 	BEQL	30$			;BRANCH IF YES

            51            61     D0  0019   160 	MOVL	(R1),R1			;GET NEXT NODE

            52         08 A1     D1  001C   161 	CMPL	8(R1),R2		;LONG ENOUGH?

                          F1     19  0020   162 	BLSS	10$			;BRANCH IF NOT

                          0D     13  0022   163 	BEQL	20$			;BRANCH IF EXACT FIT

                                     0024   164 ;

                                     0024   165 ;  WE HAVE A FIT BUT WE DON'T NEED ALL OF THE PAGES IN THE HOLE

                                     0024   166 ;  - MUST RETURN EXTRAS

                                     0024   167 ;

            52            51     C1  0024   168 	ADDL3	R1,R2,R0		;GET ADDR OF NEW HOLE

                          50         0027       

         08 A1            52     C3  0028   169 	SUBL3	R2,8(R1),8(R0)		;COMPUTE AND STORE ITS LENGTH

                       08 A0         002C       

            61            60     0E  002E   170 	INSQUE	(R0),(R1)		;INSERT THE NEW HOLE

                                     0031   171 ;

                                     0031   172 ;  THE HOLE AT R1 IS JUST THE RIGHT SIZE

                                     0031   173 ;  REMOVE IT FROM THE LIST

                                     0031   174 ;

            53            61     0F  0031   175 20$:	REMQUE	(R1),R3			;ADDRESS OF HOLE TO R3

                                     0034   176 	RMSSUC

            50            01     D0  0034       		MOVL	#1,R0

                                 05  0037   177 	RSB

                                     0038   178 ;

                                     0038   179 ;  THERE IS NO SPACE IN THE FREE PAGE LIST

                                     0038   180 ;  CHECK FOR SPACE IN THE UNALLOCATED PAGES OF THE I/O SEGMENT

                                     0038   181 ;

         08 AB            52     D1  0038   182 30$:	CMPL	R2,IMP$L_IOSEGLEN(R11)	;ENOUGH SPACE?

                          39     14  003C   183 	BGTR	200$			;BRANCH IF NOT

                                     003E   184 ;

                                     003E   185 ;  TAKE THE REQUIRED SPACE FROM THE I/O SEGMENT

                                     003E   186 ;

            51         04 AB     D0  003E   187 	MOVL	IMP$L_IOSEGADDR(R11),R1	;ADDR OF SPACE

         08 AB            52     C2  0042   188 	SUBL2	R2,IMP$L_IOSEGLEN(R11)	;ADJUST LENGTH OF REMAINING

                                     0046   189 					;SPACE

         04 AB            52     C0  0046   190 	ADDL2	R2,IMP$L_IOSEGADDR(R11)	;AND ITS START ADDR

                                     004A   191 ;

                                     004A   192 ;  THE REQUIRED NUMBER OF PAGES HAVE NOW BEEN ALLOCATED.

                                     004A   193 ;  SET THE PROTECTION ON THEM.

                                     004A   194 ;

                                     004A   195 ;  BUILD A DESCRIPTOR FOR THE MEMORY

                                     004A   196 ;

                          52     D7  004A   197 100$:	DECL	R2			;LENGTH-1 TO GIVE END ADDR

            52            51     C1  004C   198 	ADDL3	R1,R2,-(SP)		;ENDING PAGE ADDR

                          7E         004F       

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   6

014             RM$GETPAG  -  PAGE ALLOCATION ROUTINE                                                                            (2)



                          51     DD  0050   199 	PUSHL	R1			;STARTING PAGE ADDR

                                     0052   200 ;

            50            5E     D0  0052   201 110$:	MOVL	SP,R0			;SAVE DESCRIPTOR ADDR

            53         02 AB     9A  0055   202 	MOVZBL	IMP$B_PROT(R11),R3	;PICK UP PROTECTION FOR PAGES

                                     0059   203 	$SETPRT_S INADR=(R0),RETADR=(R0),ACMODE=#PSL$C_EXEC,PROT=R3

                          00     DD  0059       		PUSHL	#0

                          53     DD  005B       		PUSHL	R3

                          01     DD  005D       		PUSHL	#PSL$C_EXEC

                          60     7F  005F       		PUSHAQ	(R0)

                          60     7F  0061       		PUSHAQ	(R0)

   00000000'GF            05     FB  0063       		CALLS	#5,G^SYS$SETPRT

                                     006A   204 

            53            8E     D0  006A   205 	MOVL	(SP)+,R3		;ADDR OF STARTING PAGE

            8E            53     C3  006D   206 	SUBL3	R3,(SP)+,R2		;GET LENGTH-1 INTO R2

                          52         0070       

                          52     D6  0071   207 	INCL	R2			;AND MAKE IT LENGTH

                           00000008  0073   208 	.IF NE $$RMSTEST&$$RMS_TBUGCHK

            2E            50     E9  0073   209 	BLBC	R0,ERRBUG		;SERVICE SHOULD NOT FAIL

                                     0076   210 	.ENDC

                                 05  0076   211 	RSB

                                     0077   212 ;

                                     0077   213 ;  THERE IS NO SPACE IN THE FREE PAGE LIST OR IN THE I/O SEGMENT.

                                     0077   214 ;  IF THIS IS NOT THE PIO SEGMENT, ALLOCATE THE REQUIRED SPACE

                                     0077   215 ;  FROM THE PROGRAM REGION UNLESS PROHIBITED BY USER.

                                     0077   216 ;

                                     0077   217 	ASSUME	IMP$W_RMSSTATUS EQ 0

                                     0077   218 	ASSUME	IMP$V_IIOS EQ 0

            27            6B     E9  0077   219 200$:	BLBC	(R11),ERRDME		;BRANCH IF PROCESS I/O SEG.

                       04 AB     D5  007A   220 	TSTL	IMP$L_IOSEGADDR(R11)	;IS THERE ANY IMAGE I/O SEG.?

                          22     13  007D   221 	BEQL	ERRDME			;BRANCH IF NONE (ERROR)

            6B            05     E0  007F   222 	BBS	#IMP$V_NOP0BUFS,(R11),ERRDME	; BRANCH IF P0 OFF LIMITS

                          1E         0082       

                                     0083   223 ;

                                     0083   224 ;  EXPAND THE PROGRAM REGION

                                     0083   225 ;

            52         F7 8F     78  0083   226 	ASHL	#-9,R2,R2		;CONVERT LENGTH TO PAGES

                          52         0087       

                          7E     7C  0088   227 	CLRQ	-(SP)			;TEMP ARRAY TO RECEIVE RESULTS

            50            5E     D0  008A   228 	MOVL	SP,R0			;AND SAVE ITS ADDR

                                     008D   229 	$EXPREG_S PAGCNT=R2,RETADR=(R0),ACMODE=#PSL$C_EXEC,REGION=#0

                          00     DD  008D       		PUSHL	#0

                          01     DD  008F       		PUSHL	#PSL$C_EXEC

                          60     7F  0091       		PUSHAQ	(R0)

                          52     DD  0093       		PUSHL	R2

   00000000'GF            04     FB  0095       		CALLS	#4,G^SYS$EXPREG

                                     009C   230 

            B3            50     E8  009C   231 	BLBS	R0,110$			;BRANCH IF SUCCESSFUL

                          03     BA  009F   232 	POPR	#^M<R0,R1>		;CLEAN UP STACK

                                     00A1   233 ;

                                     00A1   234 ;  NO DYNAMIC MEMORY AVAILABLE

                                     00A1   235 ;

                                     00A1   236 ERRDME:	$PSECT_BR	L$RMS0

                          FF5C'  31  00A1       		BRW	L$RMS00

                                     00A4       		.SAVE

                                 00000000       		.PSECT	L$RMS0,GBL,NOWRT

                                     0000       L$RMS00:

                                     0000   237 	RMSERR	DME

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   7

014             RM$GETPAG  -  PAGE ALLOCATION ROUTINE                                                                            (2)



            50       84D4 8F     3C  0000       		MOVZWL	#<RMS$_DME&^XFFFF>,R0

                                 05  0005   238 	RSB

                                     0006   239 	$PSECT_RESTORE

                                 000000A4       		.RESTORE

                                     00A4   240 ;

                                     00A4   241 ;  THE CHANGE PROTECTION SYSTEM SERVICE FAILED

                                     00A4   242 ;

                                     00A4   243 ERRBUG:	RMSTBUG	FTL$_SETPRTFAIL

                                     00A4       	.SAVE

                                 0000006C       	.PSECT	$ABS$,ABS

                           00000000  006C       	.=0

                                 000000A4       	.RESTORE

                          FF59'  30  00A4       		BSBW	RM$BUG

                                 FF  00A7       		.BYTE	FTL$_SETPRTFAIL

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   8

014             RM$GETSPC MEMORY ALLOCATION ROUTINE                                                                              (3)



                                     00A8   245 	.SBTTL RM$GETSPC MEMORY ALLOCATION ROUTINE

                                     00A8   246 ;++

                                     00A8   247 ;

                                     00A8   248 ;  FUNCTIONAL DESCRIPTION:

                                     00A8   249 ;

                                     00A8   250 ;  THIS ROUTINE ALLOCATES SPACE WITHIN A PAGE ON A FIRST

                                     00A8   251 ;  FIT BASIS.  THE ALLOCATED SPACE IS ZERO FILLED.

                                     00A8   252 ;

                                     00A8   253 ;  IF INSUFFICIENT SPACE IS AVAILABLE, ANOTHER PAGE IS

                                     00A8   254 ;  ADDED TO THE FREE SPACE LIST.

                                     00A8   255 ;

                                     00A8   256 ;

                                     00A8   257 ;  CALLING SEQUENCE:

                                     00A8   258 ;

                                     00A8   259 ;	BSBW	RM$GETSPC

                                     00A8   260 ;

                                     00A8   261 ;  ALTERNATE ENTRY AT RM$GETSPC_ALT IF R1 HAS EXACT ADDRESS OF LIST HEAD

                                     00A8   262 ;  ALTERNATE ENTRY AT RM$GETBLK IF R2 HAS # OF LONGWORDS REQUIRED AND

                                     00A8   263 ;  THIS # IS TO BE STORED IN BYTE 9 OF THE GOTTEN SPACE

                                     00A8   264 ;

                                     00A8   265 ;  INPUT PARAMETERS:

                                     00A8   266 ;

                                     00A8   267 ;	R11	IMPURE AREA ADDR

                                     00A8   268 ;	R2	# OF BYTES REQUIRED (11 < R2 < 513)

                                     00A8   269 ;	R1	ANY ADDRESS WITHIN PAGE

                                     00A8   270 ;		(SPACE HEADER MUST BE AT THE START

                                     00A8   271 ;		 OF THIS PAGE)

                                     00A8   272 ;

                                     00A8   273 ;  IMPLICIT INPUTS:

                                     00A8   274 ;

                                     00A8   275 ;	THE STATUS OF THE IMPURE AREA.

                                     00A8   276 ;

                                     00A8   277 ;  OUTPUT PARAMETERS:

                                     00A8   278 ;

                                     00A8   279 ;	R1	ADDR OF BLOCK OF MEMORY

                                     00A8   280 ;	R0	STATUS

                                     00A8   281 ;	R2,R3,R4  DESTROYED

                                     00A8   282 ;

                                     00A8   283 ;  IMPLICIT OUTPUTS:

                                     00A8   284 ;

                                     00A8   285 ;  THE FREE SPACE LIST IS UPDATED.

                                     00A8   286 ;

                                     00A8   287 ;

                                     00A8   288 ;  COMPLETION CODES:

                                     00A8   289 ;

                                     00A8   290 ;	STANDARD RMS32, IN PARTICULAR, SUCCESS AND DME.

                                     00A8   291 ;

                                     00A8   292 ;  SIDE EFFECTS:

                                     00A8   293 ;

                                     00A8   294 ;	NONE.

                                     00A8   295 ;

                                     00A8   296 ;--

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page   9

014             RM$GETSPC MEMORY ALLOCATION ROUTINE                                                                              (3)



                                     00A8   298 ;

                                     00A8   299 ;  ALTERNATE ENTRY HERE FOR GETTING SPACE FROM IFAB FREE SPACE LIST

                                     00A8   300 ;

                                     00A8   301 ;  ADDITONAL INPUT:	R9 = ADDRESS OF IFAB/IRAB

                                     00A8   302 ;  R1 IS NOT AN INPUT

                                     00A8   303 ;

                                     00A8   304 RM$GETSPC1::

                          007F   30  00A8   305 	BSBW	SETHDR1			;SET UP FREE SPACE HEADER PAGE ADDR

                                     00AB   306 					;AND FALL THRU INTO RM$GETSPC

                                     00AB   307 ;

                                     00AB   308 ;  NORMAL ENTRY POINT

                                     00AB   309 ;

                                     00AB   310 RM$GETSPC::

            51       FF51 CF     CA  00AB   311 	BICL2	C511,R1			;GET HEADER ADDR

                                     00B0   312 RM$GETSPC_ALT::				;ENTRY IF R1 IS EXACT HEADER ADDR

            54            51     D0  00B0   313 	MOVL	R1,R4			;SAVE ADDR FOR END TEST

                                     00B3   314 ;

                                     00B3   315 ;  SCAN FOR FIRST FIT

                                     00B3   316 ;

            54            61     D1  00B3   317 10$:	CMPL	(R1),R4			;END OF LIST?

                          31     13  00B6   318 	BEQL	50$			;BRANCH IF YES - NO SPACE FOUND

            51            61     D0  00B8   319 15$:	MOVL	(R1),R1			;GET NEXT NODE

            52         08 A1     D1  00BB   320 	CMPL	8(R1),R2		;LONG ENOUGH?

                          F2     19  00BF   321 	BLSS	10$			;BRANCH IF NOT

                          15     13  00C1   322 	BEQL	20$			;BRANCH IF EXACT FIT

                                     00C3   323 ;

                                     00C3   324 ;  WE HAVE A FIT BUT DON'T NEED EXTRA BYTES

                                     00C3   325 ;  RETURN THEM TO THE FREE SPACE LIST

                                     00C3   326 ;

            51            52     C1  00C3   327 	ADDL3	R2,R1,R0		;GET NEW HOLE ADDR

                          50         00C6       

         08 A1            52     C3  00C7   328 	SUBL3	R2,8(R1),R3		;COMPUTE ITS LENGTH

                          53         00CB       

            0C            53     D1  00CC   329 	CMPL	R3,#12			;AT LEAST 12 BYTES?

                          07     19  00CF   330 	BLSS	20$			;BRANCH IF NOT, AS NOT

                                     00D1   331 					;BIG ENOUGH FOR A NODE

         08 A0            53     D0  00D1   332 	MOVL	R3,8(R0)		;STORE HOLE LENGTH

            61            60     0E  00D5   333 	INSQUE	(R0),(R1)		;& INSERT THE NEW HOLE

                                     00D8   334 ;

                                     00D8   335 ;  THE HOLE AT R1 IS JUST THE RIGHT SIZE (IMAGINE THAT!)

                                     00D8   336 ;  (ACTUALLY UP TO 11 BYTES LONGER THAN NEEDED)

                                     00D8   337 ;  REMOVE IT FROM THE LIST AND ZERO FILL IT

                                     00D8   338 ;

            51            61     0F  00D8   339 20$:	REMQUE	(R1),R1

                          22     BB  00DB   340 	PUSHR	#^M<R1,R5>

            6E            00     2C  00DD   341 	MOVC5	#0,(SP),#0,R2,(R1)	;ZERO THE SPACE

            52            00         00E0       

                          61         00E2       

                          22     BA  00E3   342 	POPR	#^M<R1,R5>

                                     00E5   343 	RMSSUC

            50            01     D0  00E5       		MOVL	#1,R0

                                 05  00E8   344 	RSB

                                     00E9   345 ;

                                     00E9   346 ;

                                     00E9   347 ;  FOUND NO SPACE OF REQUIRED SIZE

                                     00E9   348 ;  GET ANOTHER PAGE AND ADD IT TO THE FREE SPACE LIST

                                     00E9   349 ;

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  10

014             RM$GETSPC MEMORY ALLOCATION ROUTINE                                                                              (3)



                           00000008  00E9   350 50$:	.IF NE $$RMSTEST&$$RMS_TBUGCHK

   00000200 8F            52     D1  00E9   351 	CMPL	R2,#512			;IS REQUEST IN RANGE?

                          AF     1A  00F0   352 	BGTRU	ERRDME			;NO - A REAL DUMMY

                                     00F2   353 	.ENDC

                          06     BB  00F2   354 	PUSHR	#^M<R1,R2>

                          FF0D   30  00F4   355 	BSBW	RM$GET1PAG		;GET A PAGE (R3 = ADDR)

                          06     BA  00F7   356 	POPR	#^M<R1,R2>

            A5            50     E9  00F9   357 	BLBC	R0,ERRDME

         08 A3       0200 8F     3C  00FC   358 	MOVZWL	#512,8(R3)		;STORE LENGTH OF SPACE

                                     0102   359 ;

                                     0102   360 ;  INSERT THE NEW SPACE IN ASCENDING MEMORY ADDRESS SEQUENCE

                                     0102   361 ;

                                     0102   362 ;  NOTE: R1 POINTS TO LAST HOLE (I.E., HIGHEST IN MEMORY)

                                     0102   363 ;

            51            53     D1  0102   364 60$:	CMPL	R3,R1			;IS THIS THE RIGHT SPOT?

                          09     1A  0105   365 	BGTRU	70$			;BRANCH IF YES

            51         04 A1     D0  0107   366 	MOVL	4(R1),R1		;GET PREVIOUS HOLE

            54            51     D1  010B   367 	CMPL	R1,R4			;BACK AT LIST HEAD?

                          F2     12  010E   368 	BNEQ	60$			;BRANCH IF NOT

            61            63     0E  0110   369 70$:	INSQUE	(R3),(R1)		;INSERT THE HOLE

                          A3     11  0113   370 	BRB	15$			;AND GO USE IT

                                     0115   371 ;

                                     0115   372 ;  ALTERNATE ENTRY HERE FOR GETTING BLOCK FROM IFAB FREE SPACE LIST

                                     0115   373 ;

                                     0115   374 ;  ADDITONAL INPUT:	R9 = ADDRESS OF IFAB/IRAB

                                     0115   375 ;  R1 IS NOT AN INPUT

                                     0115   376 ;

                                     0115   377 RM$GETBLK1_ALT:

                          13     10  0115   378 	BSBB	SETHDR1			;SET UP FREE SPACE HEADER PAGE ADDR

                                     0117   379 					;AND FALL THRU INTO RM$GETBLK

                                     0117   380 ;

                                     0117   381 ;

                                     0117   382 ;  ALTERNATE ENTRY TO GET SPACE BY # OF LONGWORDS AND STORE THAT

                                     0117   383 ;  NUMBER IN BYTE 9 OF THE RETURNED SPACE

                                     0117   384 ;

                                     0117   385 RM$GETBLK::

                          52     DD  0117   386 	PUSHL	R2			;SAVE # LONGWORDS

            52            02     9C  0119   387 	ROTL	#2,R2,R2		;MAKE INTO # BYTES

                          52         011C       

                          8C     10  011D   388 	BSBB	RM$GETSPC		;GO GET THE SPACE

            05            50     E9  011F   389 	BLBC	R0,10$			;GET OUT ON ERROR

         09 A1            8E     F6  0122   390 	CVTLB	(SP)+,9(R1)		;STORE LENGTH

                                 05  0126   391 	RSB

                          02     BA  0127   392 10$:	POPR	#^M<R1>			;CLEAN STACK

                                 05  0129   393 	RSB

                                     012A   394 ;++

                                     012A   395 ;  SUBROUTINE TO LOAD IFAB ADDR INTO R1

                                     012A   396 ;

                                     012A   397 SETHDR1:

            51            59     D0  012A   398 	MOVL	R9,R1			;ASSUME IFAB ADDR IN R1

                                     012D   399 	ASSUME	<IRB$C_BID&1> EQ 0

                                     012D   400 	ASSUME	<IFB$C_BID&1> EQ 1

                                     012D   401 	ASSUME	IFB$B_BID EQ IRB$B_BID

            03         08 A9     E8  012D   402 	BLBS	IFB$B_BID(R9),10$	;BRANCH IF STRUCTURE IS IFAB

            51            69     D0  0131   403 	MOVL	IRB$L_IFAB_LNK(R9),R1	;GET IFAB ADDRESS FROM IRAB

                                 05  0134   404 10$:	RSB

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  11

014             RM$RETPAG  -  PAGE DEALLOCATION ROUTINE                                                                          (4)



                                     0135   406 	.SBTTL RM$RETPAG  -  PAGE DEALLOCATION ROUTINE

                                     0135   407 ;

                                     0135   408 ;++

                                     0135   409 ;  FUNCTIONAL DESCRIPTION:

                                     0135   410 ;

                                     0135   411 ;	THIS ROUTINE RETURNS PAGES TO THE FREE PAGE LIST.

                                     0135   412 ;	THE LIST IS KEPT IN ORDER OF ASCENDING MEMORY ADDRESSES.

                                     0135   413 ;

                                     0135   414 ;

                                     0135   415 ;  CALLING SEQUENCE:

                                     0135   416 ;

                                     0135   417 ;	BSBW	RM$RETPAG

                                     0135   418 ;

                                     0135   419 ;  ALTERNATE ENTRY AT RM$RET1PAG TO RETURN A SINGLE PAGE.

                                     0135   420 ;  R11,R4 ARE ONLY INPUTS.

                                     0135   421 ;

                                     0135   422 ;  INPUT PARAMETERS:

                                     0135   423 ;

                                     0135   424 ;	R11	IMPURE AREA ADDRESS

                                     0135   425 ;	R5	LENGTH IN BYTES OF PAGES TO BE RETURNED

                                     0135   426 ;	R4	ADDRESS OF FIRST PAGE TO BE RETURNED

                                     0135   427 ;

                                     0135   428 ;  OUTPUTS:

                                     0135   429 ;

                                     0135   430 ;	R0 THRU R5 DESTROYED

                                     0135   431 ;

                                     0135   432 ;

                                     0135   433 ;  IMPLICIT OUTPUTS:

                                     0135   434 ;

                                     0135   435 ;	THE FREE PAGE LIST IS UPDATED.

                                     0135   436 ;

                                     0135   437 ;  COMPLETION CODES:

                                     0135   438 ;

                                     0135   439 ;	NONE

                                     0135   440 ;

                                     0135   441 ;  SIDE EFFECTS:

                                     0135   442 ;

                                     0135   443 ;	NONE

                                     0135   444 ;

                                     0135   445 ;--

                                     0135   446 

                                     0135   447 ;

                                     0135   448 ;  ENTRY TO RETURN A SINGLE PAGE

                                     0135   449 ;

                                     0135   450 RM$RET1PAG::

            55            01     D0  0135   451 	MOVL	#1,R5			;1 BYTE GETS 1 PAGE

                                     0138   452 ;

                                     0138   453 ;

                                     0138   454 RM$RETPAG::

            52       01FF 8F     3C  0138   455 	MOVZWL	#511,R2			;GET PAGE BOUNDARY MASK

            55            52     C0  013D   456 	ADDL2	R2,R5			;ROUND UP LENGTH

            55            52     CA  0140   457 	BICL2	R2,R5			;  "

            54            52     CA  0143   458 	BICL	R2,R4			;GET START OF PAGE

            52         0C AB     DE  0146   459 	MOVAL	IMP$L_FREEPGLH(R11),R2	;ADDR OF HEADER

            53            52     D0  014A   460 	MOVL	R2,R3			;SAVE FOR END OF LIST TEST

                                     014D   461 ;

                                     014D   462 ;  SCAN FOR A HOLE HAVING A HIGHER ADDRESS

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  12

014             RM$RETPAG  -  PAGE DEALLOCATION ROUTINE                                                                          (4)



                                     014D   463 ;

            52            62     D0  014D   464 10$:	MOVL	(R2),R2			;GET NEXT HOLE ADDR

            53            52     D1  0150   465 	CMPL	R2,R3			;END OF LIST?

                          18     13  0153   466 	BEQL	40$			;BRANCH IF YES

            54            52     D1  0155   467 	CMPL	R2,R4			;HIGHER THAN HOLE BEING RETURNED?

                          F3     1F  0158   468 	BLSSU	10$			;BRANCH IF NOT

                                     015A   469 ;

                                     015A   470 ;  THE HOLE AT R2 HAS A HIGHER ADDRESS THAN THAT BEING RETURNED.

                                     015A   471 ;  INSERT THE RETURNING HOLE AND TRY TO COMBINE IT WITH EITHER THE

                                     015A   472 ;  PREVIOUS HOLE, THE NEXT HOLE, OR BOTH

                                     015A   473 ;

            54            55     C1  015A   474 20$:	ADDL3	R5,R4,R1		;GET ADDRESS PAST RETURNING HOLE

                          51         015D       

            52            51     D1  015E   475 	CMPL	R1,R2			;SAME AS START OF NEXT HOLE?

                          0A     12  0161   476 	BNEQ	40$			;BRANCH IF NOT

                                     0163   477 ;

                                     0163   478 ;  COMBINE THIS HOLE WITH NEXT HOLE

                                     0163   479 ;

            55         08 A2     C0  0163   480 	ADDL2	8(R2),R5		;GET NEW HOLE SIZE

            52            62     0F  0167   481 	REMQUE	(R2),R2			;GET RID OF HIGH HOLE

            52            62     D0  016A   482 	MOVL	(R2),R2			;GET NEXT NODE ADDR

                                     016D   483 					;*****

                                     016D   484 					;NOTE: ASSUMES THE ADDRESS

                                     016D   485 					; IN THE DELETED NODE IS STILL

                                     016D   486 					; VALID!

                                     016D   487 					; (IT SHOULD BE.)

                                     016D   488 					;******

                                     016D   489 

                                     016D   490 ;

                                     016D   491 ;  CHECK IF THE HOLE CAN BE COMBINED WITH THE PREVIOUS HOLE

                                     016D   492 ;

            50         04 A2     D0  016D   493 40$:	MOVL	4(R2),R0		;GET PREVIOUS HOLE ADDR

            53            50     D1  0171   494 	CMPL	R0,R3			;IS IT THE HEAD?

                          0F     13  0174   495 	BEQL	60$			;BRANCH IF YES

            50         08 A0     C1  0176   496 	ADDL3	8(R0),R0,R1		;GET END OF PREVIOUS HOLE

                          51         017A       

            54            51     D1  017B   497 	CMPL	R1,R4			;SAME AS START OF HOLE

                                     017E   498 					;BEING RETURNED?

                          05     12  017E   499 	BNEQ	60$			;BRANCH IF NOT

         08 A0            55     C0  0180   500 	ADDL2	R5,8(R0)		;JUST ADD IN THE ADDITIONAL

                                     0184   501 					;SIZE AND THAT'S ALL

                                 05  0184   502 	RSB

                                     0185   503 ;

                                     0185   504 ;  MUST CREATE A NEW NODE FOR HOLE BEING RETURNED

                                     0185   505 ;

         08 A4            55     D0  0185   506 60$:	MOVL	R5,8(R4)		;SET ITS SIZE

            60            64     0E  0189   507 	INSQUE	(R4),(R0)		;AND INSERT IT

                                 05  018C   508 	RSB

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  13

014             RM$RETSPC  -  MEMORY DEALLOCATION ROUTINE                                                                        (5)



                                     018D   510 	.SBTTL RM$RETSPC  -  MEMORY DEALLOCATION ROUTINE

                                     018D   511 ;

                                     018D   512 ;++

                                     018D   513 ;  FUNCTIONAL DESCRIPTION:

                                     018D   514 ;

                                     018D   515 ;  THIS ROUTINE RETURNS MEMORY TO THE FREE SPACE LIST.

                                     018D   516 ;

                                     018D   517 ;  THE LIST IS KEPT IN ASCENDING MEMORY SEQUENCE TO FACILITATE

                                     018D   518 ;  COMBINING HOLES.  HOLES ARE NOT COMBINED ACROSS PAGE

                                     018D   519 ;  BOUNDARIES HOWEVER.

                                     018D   520 ;  \ PERHAPS THIS ROUTINE MIGHT BE ALTERED TO RETURN PAGES

                                     018D   521 ;    TO THE FREE PAGE LIST WHENEVER AN ENTIRE PAGE BECOMES FREE.

                                     018D   522 ;    THE DISADVANTAGE OF THIS IS IN POSSIBLE THRASHING IN THE RETPAGE/

                                     018D   523 ;    GETPAGE FOR EVERY NEEDED ASB.  FOR NOW, ONLY RETURN THE PAGES

                                     018D   524 ;    ON FILE CLOSE OR I/O RUNDOWN.\

                                     018D   525 ;

                                     018D   526 ;  NOTE THAT ANY HOLE LESS THAN 12 BYTES IN LENGTH IS IMPLICIT

                                     018D   527 ;  (I.E., IT HAS NO HEADER LINKING IT INTO THE LIST).

                                     018D   528 ;

                                     018D   529 ;

                                     018D   530 ;  CALLING SEQUENCE:

                                     018D   531 ;

                                     018D   532 ;	BSBW	RM$RETSPC

                                     018D   533 ;

                                     018D   534 ;  ALTERNATE ENTRY AT RM$RETBLK TO RETURN A BLOCK HAVING

                                     018D   535 ;  ITS LENGTH STORED AS A # OF LONGWORDS IN BYTE 9 OF THE RETURNING SPACE.

                                     018D   536 ;  FOR THIS ENTRY THE R2 INPUT IS NOT REQUIRED.

                                     018D   537 ;

                                     018D   538 ;  INPUT PARAMETERS:

                                     018D   539 ;

                                     018D   540 ;	R11	IMPURE AREA ADDRESS

                                     018D   541 ;	R4	ADDR OF SPACE BEING RETURNED

                                     018D   542 ;	R3	ANY ADDR IN PAGE HAVING FREE SPACE HEADER

                                     018D   543 ;	R2	LENGTH IN BYTES OF SPACE BEING RETURNED

                                     018D   544 ;

                                     018D   545 ;  INPLICIT INPUTS:

                                     018D   546 ;

                                     018D   547 ;	NONE

                                     018D   548 ;

                                     018D   549 ;  OUTPUT PARAMETERS:

                                     018D   550 ;

                                     018D   551 ;	R0 THRU R5 DESTROYED

                                     018D   552 ;

                                     018D   553 ;  IMPLICIT OUTPUTS:

                                     018D   554 ;

                                     018D   555 ;	THE FREE SPACE LIST IS UPDATED.

                                     018D   556 ;

                                     018D   557 ;  COMPLETION CODES:

                                     018D   558 ;

                                     018D   559 ;	NONE.

                                     018D   560 ;

                                     018D   561 ;  SIDE EFFECTS:

                                     018D   562 ;

                                     018D   563 ;	NONE

                                     018D   564 ;

                                     018D   565 ;--

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  14

014             RM$RETSPC  -  MEMORY DEALLOCATION ROUTINE                                                                        (5)



                                     018D   567 ;

                                     018D   568 ;  ALTERNATE ENTRY TO RETURN SPACE TO IFAB FREE SPACE LIST

                                     018D   569 ;  ADDITIONAL INPUT:	R9 = IFAB/IRAB ADDR

                                     018D   570 ;  R3 IS NOT AN INPUT

                                     018D   571 ;

                                     018D   572 RM$RETSPC1::

                          02     10  018D   573 	BSBB	SETHDR3			;GET IFAB ADDR INTO R3

                          15     11  018F   574 	BRB	RM$RETSPC		;AND GO DO NORMAL RETURN

                                     0191   575 ;++

                                     0191   576 ;  SUBROUTINE TO LOAD IFAB ADDR INTO R3

                                     0191   577 ;

                                     0191   578 SETHDR3:

            53            59     D0  0191   579 	MOVL	R9,R3			;ASSUME IFAB ADDR IN R3

                                     0194   580 	ASSUME	<IRB$C_BID&1> EQ 0

                                     0194   581 	ASSUME	<IFB$C_BID&1> EQ 1

                                     0194   582 	ASSUME	IFB$B_BID EQ IRB$B_BID

            03         08 A9     E8  0194   583 	BLBS	IFB$B_BID(R9),10$	;BRANCH IF STRUCTURE IS IFAB

            53            69     D0  0198   584 	MOVL	IRB$L_IFAB_LNK(R9),R3	;GET IFAB ADDRESS FROM IRAB

                                 05  019B   585 10$:	RSB

                                     019C   586 ;

                                     019C   587 ;  ALTERNATE ENTRY TO RETURN BLOCK TO IFAB FREE SPACE LIST

                                     019C   588 ;  ADDITIONAL INPUT:	R9 = IFAB/IRAB ADDR

                                     019C   589 ;  R3 IS NOT AN INPUT

                                     019C   590 ;

                                     019C   591 RM$RETBLK1::

                          F3     10  019C   592 	BSBB	SETHDR3			;GET IFAB ADDR INTO R3

                                     019E   593 					;AND FALL INTO NORMAL RETURN BLK

                                     019E   594 ;

                                     019E   595 ;  ALTERNATE ENTRY HERE TO RETURN A BLOCK HAVING A LENGTH CODE

                                     019E   596 ;

                                     019E   597 RM$RETBLK::

            52         09 A4     9A  019E   598 	MOVZBL	9(R4),R2		;PICK UP LENGTH FROM BLOCK

            52            02     9C  01A2   599 	ROTL	#2,R2,R2		;CONVERT TO # BYTES

                          52         01A5       

                                     01A6   600 ;

                                     01A6   601 ;

                                     01A6   602 RM$RETSPC::

            53       FE56 CF     CA  01A6   603 	BICL2	C511,R3			;GET FREE SPACE LIST HEAD ADDR

            55            53     D0  01AB   604 	MOVL	R3,R5			;SAVE FOR END TEST

                                     01AE   605 ;

                                     01AE   606 ;  SCAN FOR A HOLE HAVING A HIGHER ADDRESS

                                     01AE   607 ;

            55            63     D1  01AE   608 10$:	CMPL	(R3),R5			;END OF LIST?

                          29     13  01B1   609 	BEQL	50$			;BRANCH IF YES

            53            63     D0  01B3   610 	MOVL	(R3),R3			;GET NEXT HOLE ADDR

            54            53     D1  01B6   611 	CMPL	R3,R4			;HIGHER THAN HOLE BEING RETURNED?

                          F3     1F  01B9   612 	BLSSU	10$			;BRANCH IF NOT

                                     01BB   613 ;

                                     01BB   614 ;  THE HOLE AT R3 HAS A HIGHER ADDRESS THAN HOLE BEING RETURNED.

                                     01BB   615 ;  TRY TO COMBINE WITH EITHER THE NEXT OR THE PREVIOUS HOLE OR BOTH.

                                     01BB   616 ;

                          63     10  01BB   617 20$:	BSBB	100$			;BOTH BUFFERS IN SAME PAGE?

                          19     12  01BD   618 	BNEQ	40$			;BRANCH IF NOT

            53            54     C3  01BF   619 	SUBL3	R4,R3,R1		;GET DIFFERENCE BETWEEN THE

                          51         01C2       

                                     01C3   620 					;BUFFER ADDRESSES

            51            52     C2  01C3   621 	SUBL2	R2,R1			;LESS THE LENGTH OF THE

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  15

014             RM$RETSPC  -  MEMORY DEALLOCATION ROUTINE                                                                        (5)



                                     01C6   622 					;RETURNING BUFFER

            0C            51     D1  01C6   623 	CMPL	R1,#12			;LESS THAN MAX SIZE INVISIBLE

                                     01C9   624 					; HOLE?

                          0D     1E  01C9   625 	BGEQU	40$			;BRANCH IF NOT

                                     01CB   626 ;

                                     01CB   627 ;  COMBINE THE RETURNING HOLE WITH THE NEXT HOLE

                                     01CB   628 ;

            52            51     C0  01CB   629 	ADDL2	R1,R2			;RETURN THE INVISIBLE PART TOO

            52         08 A3     C0  01CE   630 	ADDL2	8(R3),R2		;GET NEW HOLE SIZE

                                     01D2   631 					;= OLD + NEW + INVISIBLE

            53            63     0F  01D2   632 	REMQUE	(R3),R3			;GET RID OF HIGH HOLE

            53            63     D0  01D5   633 	MOVL	(R3),R3			;GET ADDR OF NEXT HIGHER

                                     01D8   634 					;HOLE

                                     01D8   635 					;NOTE: ASSUMES LINK STILL

                                     01D8   636 					;  VALID.

                                     01D8   637 ;

                                     01D8   638 ;  CHECK IF HOLE CAN BE COMBINED WITH PREVIOUS HOLE

                                     01D8   639 ;

            53         04 A3     D0  01D8   640 40$:	MOVL	4(R3),R3		;GET ADDR PREVIOUS HOLE

            55            53     D1  01DC   641 50$:	CMPL	R3,R5			;IS IT THE HEAD?

                          1D     13  01DF   642 	BEQL	60$			;BRANCH IF YES

                          3D     10  01E1   643 	BSBB	100$			;TWO BUFFERS IN SAME PAGE?

                          19     12  01E3   644 	BNEQ	60$			;BRANCH IF NOT

            54            53     C3  01E5   645 	SUBL3	R3,R4,R1		;GET DIFFERENCE BETWEEN THE

                          51         01E8       

                                     01E9   646 					;BUFFER ADDRESSES

            51         08 A3     C2  01E9   647 	SUBL2	8(R3),R1		;LESS PREVIOUS BUFFER LENGTH

            0C            51     D1  01ED   648 	CMPL	R1,#12			;LESS THAN MAX INV. HOLE?

                          0C     1E  01F0   649 	BGEQU	60$			;BRANCH IF NOT

            52            51     C0  01F2   650 	ADDL2	R1,R2			;INCREASE LENGTH BY SIZE

                                     01F5   651 					;OF INVISIBLE HOLE IF ANY

         08 A3            52     C0  01F5   652 	ADDL2	R2,8(R3)		;MERELY ADD SIZE OF

                                     01F9   653 					;NEW RETURNING SPACE

                                     01F9   654 					;TO PREVIOUS HOLE SIZE

            54            53     D0  01F9   655 	MOVL	R3,R4			;COPY HOLE ADDR

                          07     11  01FC   656 	BRB	80$			;GO CHECK END CONDITION

                                     01FE   657 ;

                                     01FE   658 ;  CREATE A NEW NODE FOR HOLE BEING RETURNED

                                     01FE   659 ;

         08 A4            52     D0  01FE   660 60$:	MOVL	R2,8(R4)		;SET HOLE SIZE

            63            64     0E  0202   661 	INSQUE	(R4),(R3)		;& INSERT IT

                                     0205   662 ;

                                     0205   663 ;  CHECK FOR INVISIBLE SPACE AT END OF PAGE AND RECLAIM IF ANY

                                     0205   664 ;

            54         08 A4     C1  0205   665 80$:	ADDL3	8(R4),R4,R1		;ADDR + SIZE

                          51         0209       

            51   FFFFFE00 8F     CA  020A   666 	BICL2	#^C 511,R1		;GET OFFSET IN PAGE

            51       01F5 8F     A2  0211   667 	SUBW2	#512-11,R1		;WITHIN 11 BYTES FROM END?

                          07     1F  0216   668 	BLSSU	90$			;BRANCH IF NOT

            51            0B     A2  0218   669 	SUBW2	#11,R1			;GET NEGATIVE OF DIFFERENCE

         08 A4            51     A2  021B   670 	SUBW2	R1,8(R4)		;AND UPDATE THE LENGTH

                                 05  021F   671 90$:	RSB

                                     0220   672 ;!!!!!

                                     0220   673 ;  \CHECK FOR RETURN OF ENTIRE PAGE WOULD GO HERE.\

                                     0220   674 ;!!!!!

                                     0220   675 ;

                                     0220   676 ;

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  16

014             RM$RETSPC  -  MEMORY DEALLOCATION ROUTINE                                                                        (5)



                                     0220   677 ;  SUBROUTINE TO CHECK IF ADDRESSES IN R3 AND R4 ARE IN SAME PAGE

                                     0220   678 ;

                                     0220   679 ;  INPUTS: R3,R4 = ADDRESSES TO CHECK

                                     0220   680 ;  OUTPUTS: Z-BIT SET IF IN SAME PAGE

                                     0220   681 ;	   R1 DESTROYED

                                     0220   682 ;

            54            53     CD  0220   683 100$:	XORL3	R3,R4,R1		;SET BITS 9-31 TO 0

                          51         0223       

                                     0224   684 					;IF IN SAME PAGE

            51       FDD8 CF     CA  0224   685 	BICL2	C511,R1			;CLEAR BITS 0-8

                                     0229   686 					;Z - SET IF 9-31 ALSO ZERO

                                 05  0229   687 	RSB

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  17

014             RM$ALLOCKBUF  -  BDB & I/O BUFFER ALLOCATION LO                                                                  (6)



                                     022A   689 	.SBTTL	RM$ALLOCKBUF  -  BDB & I/O BUFFER ALLOCATION LOCKING IN W.S.

                                     022A   690 ;++

                                     022A   691 ;  THIS ROUTINE HAS THE SAME SPECIFICATIONS AS RM$ALDBUF WITH THE ADDITION

                                     022A   692 ;  THAT THE ALLOCATED BUFFER IS LOCKED INTO THE PROCESS' WORKING SET.

                                     022A   693 ;  IF THE BUFFER CAN'T BE LOCKED IN THE WORKING SET IT IS DEALLOCATED AND

                                     022A   694 ;  AN ERROR OF RMS$_WSF IS RETURNED.

                                     022A   695 ;--

                                     022A   696 RM$ALLOCKBUF::

                          04     10  022A   697 	BSBB	RM$ALDBUF		;ALLOCATE BDB AND BUFFER

                                     022C   698 ;++ !!!!!

                                     022C   699 ;

                                     022C   700 ;  FOLLOWING CODE NO-OPED FROM RELEASE 1 BECAUSE OF BUG IN QIO REGARDING

                                     022C   701 ;  REQUIRING # OF FREE PAGES TO BE LOCKED DOWN EVEN THOUGH BUFFER IS ALREADY

                                     022C   702 ;  LOCKED IN WORKING SET.

                                     022C   703 ;

                                     022C   704 ; !!	BLBC	R0,10$			;BRANCH IF PROBLEMS

                                     022C   705 ; !!	SSB	#BDB$V_LKDINWS,BDB$B_FLGS(R4)	;FLAG LOCKED IN W.S.

                                     022C   706 ; !!	MOVAB	-1(R3)[R2],-(SP)	;GET ADDRESS OF END OF BUFFER

                                     022C   707 ; !!	PUSHL	R3			;AND START

                                     022C   708 ; !!	MOVL	SP,R0			;SAVE DESCRIPTOR ADDR

                                     022C   709 ; !!	$LKWSET_S	INADR=(R0)	;LOCK PAGES IN WORKING SET

                                     022C   710 ; !!	ADDL	#8,SP			;REMOVE DESCRIPTOR FROM STACK

                                     022C   711 ; !!	BLBC	R0,20$			;BRANCH ON ERROR

                                     022C   712 ;-- !!!!!

                                 05  022C   713 10$:	RSB

                                     022D   714 ;

                                     022D   715 ;  FAILED TO LOCK PAGES IN WORKING SET

                                     022D   716 ;  DEALLOCATE THE BDB AND BUFFER

                                     022D   717 ;

                                     022D   718 20$:	$PSECT_BR	L$RMS0

                          FDD6'  31  022D       		BRW	L$RMS01

                                     0230       		.SAVE

                                 00000006       		.PSECT	L$RMS0,GBL,NOWRT

                                     0006       L$RMS01:

                          0262'  30  0006   719 	BSBW	RM$RETBDB		;RETURN BDB AND BUFFER

                                     0009   720 	RMSERR	WSF

            50       871C 8F     3C  0009       		MOVZWL	#<RMS$_WSF&^XFFFF>,R0

                                 05  000E   721 	RSB

                                     000F   722 	$PSECT_RESTORE

                                 00000230       		.RESTORE

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  18

014             RM$ALDBUF  -  BDB AND I/O BUFFER ALLOCATION ROU                                                                  (6)



                                     0230   724 	.SBTTL RM$ALDBUF  -  BDB AND I/O BUFFER ALLOCATION ROUTINE

                                     0230   725 ;++

                                     0230   726 ;  THIS ROUTINE PERFORMS THE FOLLOWING FUNCTIONS:

                                     0230   727 ;

                                     0230   728 ;	1. ALLOCATE AND INIT A BDB

                                     0230   729 ;	2. ALLOCATE AN I/O BUFFER (OF AN INTEGRAL

                                     0230   730 ;	   NUMBER OF PAGES)

                                     0230   731 ;

                                     0230   732 ;  CALLING SEQUENCE:

                                     0230   733 ;

                                     0230   734 ;	BSBW	RM$ALDBUF

                                     0230   735 ;

                                     0230   736 ;  INPUT PARAMETERS:

                                     0230   737 ;

                                     0230   738 ;	R11	IMPURE AREA ADDRESS

                                     0230   739 ;	R10	IFAB ADDRESS

                                     0230   740 ;	R5	LENGTH OF BUFFER IN BYTES

                                     0230   741 ;

                                     0230   742 ;  IMPLICIT INPUTS:

                                     0230   743 ;

                                     0230   744 ;	NONE

                                     0230   745 ;

                                     0230   746 ;  OUTPUT PARAMETERS:

                                     0230   747 ;

                                     0230   748 ;	R4	ADDRESS OF BDB

                                     0230   749 ;	R3	ADDRESS OF BUFFER

                                     0230   750 ;	R2	TOTAL SIZE IN BYTES OF ALLOCATION

                                     0230   751 ;	R0	STATUS CODE

                                     0230   752 ;	R1	DESTROYED

                                     0230   753 ;	R4,R5	ALSO DESTROYED IF R0 INDICATES AN ERROR

                                     0230   754 ;

                                     0230   755 ;  IMPLICIT OUTPUTS:

                                     0230   756 ;

                                     0230   757 ;  THE AFFECTED FREE SPACE AND FREE PAGE LISTS ARE UPDATED.

                                     0230   758 ;

                                     0230   759 ;  COMPLETION CODES:

                                     0230   760 ;

                                     0230   761 ;	STANDARD RMS, IN PARTICULAR, SUCCESS OR DME.

                                     0230   762 ;

                                     0230   763 ;  SIDE EFFECTS:

                                     0230   764 ;

                                     0230   765 ;	NONE.

                                     0230   766 ;

                                     0230   767 ;--

                                     0230   768 

                                     0230   769 RM$ALDBUF::

                          1D     10  0230   770 	BSBB	RM$ALBDB		;GET A BDB

            14            50     E9  0232   771 	BLBC	R0,20$			;BRANCH ON ERROR

            54            51     D0  0235   772 	MOVL	R1,R4			;SAVE BDB ADDR

            52            55     D0  0238   773 	MOVL	R5,R2			;MOVE BUFFER LEN TO RIGHT REG

                          FDC9   30  023B   774 	BSBW	RM$GETPAG		;AND GET AN I/O BUFFER

                                     023E   775 					;(LEN/ADDR RETURNED IN R2,R3)

            09            50     E9  023E   776 	BLBC	R0,50$			;BRANCH ON ERROR

                                     0241   777 ;  SET BUFFER SIZE AND ADDRESS INTO BDB

         12 A4            52     B0  0241   778 	MOVW	R2,BDB$W_SIZE(R4)

         14 A4            53     D0  0245   779 	MOVL	R3,BDB$L_ADDR(R4)

                                 05  0249   780 20$:	RSB				;NOTE: R0 STILL VALID.

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  19

014             RM$ALDBUF  -  BDB AND I/O BUFFER ALLOCATION ROU                                                                  (6)



                                     024A   781 ;

                                     024A   782 ;

                                     024A   783 ;

                                     024A   784 ;  ERROR ALLOCATING THE PAGE  -  MUST RETURN THE BDB

                                     024A   785 ;

                          1F     10  024A   786 50$:	BSBB	RM$RETBDB

                                     024C   787 ERRDME_BR:

                          FE52   31  024C   788 	BRW	ERRDME			;RESTORE ERROR CODE

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  20

014             RM$ALBDB  -  BDB ALLOCATION ROUTINE                                                                              (7)



                                     024F   790 	.SBTTL RM$ALBDB  -  BDB ALLOCATION ROUTINE

                                     024F   791 ;++

                                     024F   792 ;  FUNCTIONAL DESCRIPTION:

                                     024F   793 ;

                                     024F   794 ;  THIS ROUTINE ALLOCATES AND INITIALIZES A BUFFER DESCRIPTOR

                                     024F   795 ;  BLOCK (BDB)

                                     024F   796 ;

                                     024F   797 ;  CALLING SEQUENCE:

                                     024F   798 ;

                                     024F   799 ;	BSBW	RM$ALBDB

                                     024F   800 ;

                                     024F   801 ;  INPUT PARAMETERS:

                                     024F   802 ;

                                     024F   803 ;	R11	IMPURE AREA ADDRESS

                                     024F   804 ;	R10	IFAB ADDRESS

                                     024F   805 ;

                                     024F   806 ;  IMPLICIT INPUTS:

                                     024F   807 ;

                                     024F   808 ;	NONE

                                     024F   809 ;

                                     024F   810 ;  OUTPUT PARAMETERS:

                                     024F   811 ;

                                     024F   812 ;	R1	ADDRESS OF BDB

                                     024F   813 ;	R0	STATUS CODE

                                     024F   814 ;	R2,R3,R4 DESTROYED

                                     024F   815 ;

                                     024F   816 ;  IMPLICIT OUTPUTS:

                                     024F   817 ;

                                     024F   818 ;  THE BDB HAS ITS BLOCK LENGTH AND BLOCK ID FIELDS FILLED IN

                                     024F   819 ;  AND IT IS LINKED INTO THE IFAB'S BDB LIST.

                                     024F   820 ;

                                     024F   821 ;  COMPLETION CODES:

                                     024F   822 ;

                                     024F   823 ;	STANDARD RMS, IN PARTICULAR, SUCCESS AND DME.

                                     024F   824 ;

                                     024F   825 ;  SIDE EFFECTS:

                                     024F   826 ;

                                     024F   827 ;	NONE

                                     024F   828 ;

                                     024F   829 ;--

                                     024F   830 RM$ALBDB::

            51            5A     D0  024F   831 	MOVL	R10,R1			;COPY IFAB ADDR AS THIS

                                     0252   832 					;DEFINES THE PAGE FOR THE

                                     0252   833 					;FREE SPACE LIST HEADER

            52            0A     D0  0252   834 	MOVL	#BDB$C_BLN/4,R2		;# LONGWORDS REQUIRED

                          FEBF   30  0255   835 	BSBW	RM$GETBLK		;ALLOCATE ZEROED SPACE

                                     0258   836 					;(R1 SET TO ADDR)

            08            50     E9  0258   837 	BLBC	R0,10$			;BRANCH ON ERROR

                                     025B   838 ;

                                     025B   839 ;  SET ID INTO BDB AND LINK AT END OF THE IFAB'S BDB LIST

                                     025B   840 ;

         08 A1            0C     90  025B   841 	MOVB	#BDB$C_BID,BDB$B_BID(R1)

         34 BA            61     0E  025F   842 	INSQUE	(R1),@IFB$L_BDB_BLNK(R10)

                                 05  0263   843 10$:	RSB				;NOTE: R0 STILL HAS STATUS CODE.

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  21

014             RM$RETBDB  -  BDB AND I/O BUFFER DEALLOCATION R                                                                  (8)



                                     0264   845 	.SBTTL RM$RETBDB  -  BDB AND I/O BUFFER DEALLOCATION ROUTINE

                                     0264   846 ;++

                                     0264   847 ;  FUNCTIONAL DESCRIPTION:

                                     0264   848 ;

                                     0264   849 ;  THIS ROUTINE DEALLOCATES THE SPACE OCCUPIED BY A BDB,

                                     0264   850 ;  REMOVES IT FROM THE IFAB'S BDB LIST, AND DEALLOCATES

                                     0264   851 ;  THE ASSOCIATED I/O BUFFER, IF ANY.

                                     0264   852 ;

                                     0264   853 ;  CALLING SEQUENCE:

                                     0264   854 ;

                                     0264   855 ;	BSBW	RM$RETBDB

                                     0264   856 ;

                                     0264   857 ;  ALTERNATE ENTRY TO RETURN FIRST BDB IN IFAB CHAIN:

                                     0264   858 ;

                                     0264   859 ;	BSBW	RM$RET1STBDB

                                     0264   860 ;

                                     0264   861 ;  INPUT PARAMETERS:

                                     0264   862 ;

                                     0264   863 ;	R11	IMPURE AREA ADDRESS

                                     0264   864 ;	R10	IFAB ADDRESS (ENTRY AT RM$RETBDB ONLY)

                                     0264   865 ;	R9	IFAB ADDRESS (ENTRY AT RM$RET1STBDB ONLY)

                                     0264   866 ;	R4	BDB ADDRESS

                                     0264   867 ;

                                     0264   868 ;  IMPLICIT INPUTS:

                                     0264   869 ;

                                     0264   870 ;	NONE

                                     0264   871 ;

                                     0264   872 ;  OUTPUT PARAMETERS:

                                     0264   873 ;

                                     0264   874 ;	R10	IFAB ADDRESS (ENTRY AT RM$RET1STBDB ONLY)

                                     0264   875 ;	R0 THRU R5 DESTROYED

                                     0264   876 ;

                                     0264   877 ;  IMPLICIT OUTPUTS:

                                     0264   878 ;

                                     0264   879 ;  THE FREE SPACE AND FREE PAGE LISTS ARE UPDATED.

                                     0264   880 ;

                                     0264   881 ;  COMPLETION CODES:

                                     0264   882 ;

                                     0264   883 ;	NONE

                                     0264   884 ;

                                     0264   885 ;  SIDE EFFECTS:

                                     0264   886 ;

                                     0264   887 ;	NONE

                                     0264   888 ;

                                     0264   889 ;--

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  22

014             RM$RETBDB  -  BDB AND I/O BUFFER DEALLOCATION R                                                                  (8)



                                     0264   891 ;

                                     0264   892 ;  ENTRY POINT TO RETURN THE FIRST BDB IN THE IFAB BDB CHAIN

                                     0264   893 ;

                                     0264   894 RM$RET1STBDB::

            5A            59     D0  0264   895 	MOVL	R9,R10			;IFAB ADDR TO R10

            54         30 A9     D0  0267   896 	MOVL	IFB$L_BDB_FLNK(R9),R4	;GET FIRST BDB ADDR

                                     026B   897 ;

                                     026B   898 ;  ENTRY TO RETURN BDB WHOSE ADDRESS IS IN R4

                                     026B   899 ;

                                     026B   900 RM$RETBDB::

                           00000008  026B   901 	.IF NE $$RMSTEST&$$RMS_TBUGCHK

            0C         08 A4     91  026B   902 	CMPB	BDB$B_BID(R4),#BDB$C_BID	;IS IT A BDB?

                          51     12  026F   903 	BNEQ	ERRBUG1			;BRANCH IF NOT

                                     0271   904 	.ENDC

                                     0271   905 	ASSUME	BDB$L_FLINK EQ 0

            54            64     0F  0271   906 	REMQUE	(R4),R4			;REMOVE FROM IFAB BDB LIST

                                     0274   907 ;

                                     0274   908 ;  RETURN I/O BUFFER IF ANY

                                     0274   909 ;

            55         12 A4     3C  0274   910 	MOVZWL	BDB$W_SIZE(R4),R5	;LENGTH OF I/O BUFFER

                          2D     13  0278   911 	BEQL	50$			;BRANCH IF NONE

                                     027A   912 ;

                                     027A   913 ;  CHECK FOR BUFFER LOCKED IN WORKING SET AND IF SO, UNLOCK IT

                                     027A   914 ;

         0A A4            07     E1  027A   915 	BBC	#BDB$V_LKDINWS,BDB$B_FLGS(R4),20$	;BRANCH IF NOT LOCKED

                          1D         027E       

            55            01     C3  027F   916 	SUBL3	#1,R5,-(SP)		;LENGTH OF BUFFER - 1

                          7E         0282       

                       14 A4     DD  0283   917 	PUSHL	BDB$L_ADDR(R4)		;ADDRESS OF BUFFER

         04 AE            6E     C0  0286   918 	ADDL2	(SP),4(SP)		;COMPUTE ADDR OF END OF BUFFER

            50            5E     D0  028A   919 	MOVL	SP,R0			;SAVE ADDR OF DESCRIPTOR

                                     028D   920 	$ULWSET_S	(R0)		;UNLOCK FROM WORKING SET

                          00     DD  028D       		PUSHL	#0

                          00     DD  028F       		PUSHL	#0

                          60     7F  0291       		PUSHAQ	(R0)

   00000000'GF            03     FB  0293       		CALLS	#3,G^SYS$ULWSET

                          03     BA  029A   921 	POPR	#^M<R0,R1>		;REMOVE DESCRIPTOR FROM STACK

                                     029C   922 ;

                                     029C   923 ;  DEALLOCATE THE BUFFER

                                     029C   924 ;

                          54     DD  029C   925 20$:	PUSHL	R4			;SAVE BDB ADDR

            54         14 A4     D0  029E   926 	MOVL	BDB$L_ADDR(R4),R4	;GET BUFFER ADDR

                          FE93   30  02A2   927 	BSBW	RM$RETPAG		;AND DEALLOCATE THE PAGE(S)

                          10     BA  02A5   928 	POPR	#^M<R4>			;RESTORE BDB ADDR

                                     02A7   929 ;

                                     02A7   930 ;  CHECK FOR BDB REFERENCED IN CURBDB FIELD OF ANY IRAB AND IF SO ZERO

                                     02A7   931 ;

                                     02A7   932 50$:	ASSUME	IFB$L_IRAB_LNK EQ IRB$L_IRAB_LNK

            50            5A     D0  02A7   933 	MOVL	R10,R0			;GET IFAB ADDR TO RIGHT REG

            50         1C A0     D0  02AA   934 60$:	MOVL	IRB$L_IRAB_LNK(R0),R0	;PICK UP NEXT IRAB

                          0B     13  02AE   935 	BEQL	70$			;BRANCH IF NO MORE

            54         20 A0     D1  02B0   936 	CMPL	IRB$L_CURBDB(R0),R4	;USING THIS BDB?

                          F4     13  02B4   937 	BEQL	60$			;BRANCH IF NOT

                       20 A0     D4  02B6   938 	CLRL	IRB$L_CURBDB(R0)	;INVALIDATE

                          EF     11  02B9   939 	BRB	60$			;AND CONTINUE

                                     02BB   940 ;

                                     02BB   941 ;  NOW RETURN THE BDB

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  23

014             RM$RETBDB  -  BDB AND I/O BUFFER DEALLOCATION R                                                                  (8)



                                     02BB   942 ;

            53            5A     D0  02BB   943 70$:	MOVL	R10,R3			;COPY OF IFAB ADDR

                                     02BE   944 					;(FREE SPACE HEADER IN THIS

                                     02BE   945 					; PAGE)

                          FEDD   30  02BE   946 	BSBW	RM$RETBLK		;RETURN THE BDB SPACE

                                 05  02C1   947 	RSB

                                     02C2   948 

                                     02C2   949 ;

                                     02C2   950 ;

                                     02C2   951 ;  BAD PROBLEM  -  THE RETURNING BLOCK WAS NOT A BDB!

                                     02C2   952 ;

                                     02C2   953 ERRBUG1:	RMSTBUG	FTL$_BADBDB

                          FD3B'  30  02C2       		BSBW	RM$BUG

                                 FA  02C5       		.BYTE	FTL$_BADBDB

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  24

014             RM$RETBDB  -  BDB AND I/O BUFFER DEALLOCATION R                                                                  (9)



                                     02C6   955 	.END

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  25

SYMBOL TABLE                                                                                                                     (9)



$$.PSECT_EP    = 00000002            FTL$_DEALLERR  = FFFFFFEF            IFB$L_FRB_PTR    00000028            

$$RMSTEST      = 0000001A            FTL$_GTCHNFAIL = FFFFFFFC            IFB$L_FWA_BDB    00000050            

$$RMS_PBUGCHK  = 00000010            FTL$_IORNDN    = FFFFFFEE            IFB$L_HBK        00000040            

$$RMS_TBUGCHK  = 00000008            FTL$_LOCKFAILED= FFFFFFE7            IFB$L_IDX_PTR    00000054            

$$RMS_UMODE    = 00000004            FTL$_NOASB     = FFFFFFF5            IFB$L_IOS        0000000C            

BDB$B_BID        00000008            FTL$_NODIDORFID= FFFFFFEB            IFB$L_IOS4       00000010            

BDB$B_BLN        00000009            FTL$_NOLOCKBDB = FFFFFFE9            IFB$L_IRAB_LNK   0000001C            

BDB$B_FLGS       0000000A            FTL$_NONETWORK = FFFFFFE8            IFB$L_LAST_FAB   00000024            

BDB$B_POST_CCTL  00000023            FTL$_NONXTBDB  = FFFFFFF4            IFB$L_LOCK_BDB   00000050            

BDB$B_PRE_CCTL   00000022            FTL$_NOSTRUCT  = FFFFFFF6            IFB$L_MRN        00000054            

BDB$B_REL_VBN    00000020            FTL$_NOTLOCKED = FFFFFFEC            IFB$L_NRP_LNK    00000050            

BDB$B_USECNT     0000000B            FTL$_RELEASFAIL= FFFFFFEA            IFB$L_NWA_PTR    00000028            

BDB$B_VAL_VBNS   00000021            FTL$_SETPRTFAIL= FFFFFFFF            IFB$L_PRIM_DEV   00000000            

BDB$C_BID      = 0000000C            FTL$_STKTOOBIG = FFFFFFFE            IFB$L_RLB_LNK    0000002C            

BDB$C_BLN        00000028            FTL$_XFERSIZE  = FFFFFFED            IFB$L_RNS_LEN    00000050            

BDB$K_BLN        00000028            GBL...         = 00000000            IFB$M_BIO      = 00000020            

BDB$L_ADDR       00000014            IFB$B_AMAX       00000059            IFB$M_BRO      = 00000040            

BDB$L_BLINK      00000004            IFB$B_AVBN       00000058            IFB$M_DEL      = 00000004            

BDB$L_CURBUFADR  00000024            IFB$B_BID        00000008            IFB$M_EXE      = 00000080            

BDB$L_FLINK      00000000            IFB$B_BKS        0000004A            IFB$M_GET      = 00000002            

BDB$L_IOSB       00000020            IFB$B_BLN        00000009            IFB$M_PUT      = 00000001            

BDB$L_OWN        0000000C            IFB$B_EFN        0000000B            IFB$M_TRN      = 00000010            

BDB$L_VBN        00000018            IFB$B_EXTRABUF   0000005D            IFB$M_UPD      = 00000008            

BDB$L_WAIT       0000001C            IFB$B_FAC        00000022            IFB$S_ORG      = 00000004            

BDB$L_WK1        00000020            IFB$B_FSZ        0000004B            IFB$S_RFM      = 00000004            

BDB$M_AST_DCL  = 00000040            IFB$B_KBUFSZ     0000005C            IFB$V_ACCESSED = 00000025            

BDB$M_DRT      = 00000002            IFB$B_MODE       0000000A            IFB$V_ANSI_D   = 00000026            

BDB$M_IOP      = 00000004            IFB$B_NUM_KEYS   0000005A            IFB$V_ASYNC    = 00000023            

BDB$M_LKDINWS  = 00000080            IFB$B_ORGCASE    00000023            IFB$V_ASYNCWAIT= 00000024            

BDB$M_NOLOCATE = 00000010            IFB$B_RAT        0000003D            IFB$V_BIO      = 00000005            

BDB$M_PRM      = 00000008            IFB$B_RFMORG     0000003C            IFB$V_BRO      = 00000006            

BDB$M_VAL      = 00000001            IFB$B_UBUFSZ     0000005B            IFB$V_BUSY     = 00000020            

BDB$M_WFO      = 00000020            IFB$C_BID      = 0000000B            IFB$V_CREATE   = 00000032            

BDB$V_AST_DCL  = 00000006            IFB$C_BLN        00000060            IFB$V_DAP      = 0000003E            

BDB$V_DRT      = 00000001            IFB$C_BLN_IDX    00000060            IFB$V_DAP_OPEN = 0000003D            

BDB$V_IOP      = 00000002            IFB$C_BLN_REL    00000060            IFB$V_DEL      = 00000002            

BDB$V_LKDINWS  = 00000007            IFB$C_BLN_SEQ    0000005C            IFB$V_DFW      = 0000002C            

BDB$V_NOLOCATE = 00000004            IFB$C_DIR      = 00000003            IFB$V_DLT      = 0000002B            

BDB$V_PRM      = 00000003            IFB$C_FHAEND     00000050            IFB$V_DMO      = 00000028            

BDB$V_VAL      = 00000000            IFB$C_IDX      = 00000002            IFB$V_EOF      = 00000021            

BDB$V_WFO      = 00000005            IFB$C_MAXORG   = 00000002            IFB$V_EXE      = 00000007            

BDB$W_NUMB       00000010            IFB$C_REL      = 00000001            IFB$V_GET      = 00000001            

BDB$W_SIZE       00000012            IFB$C_SEQ      = 00000000            IFB$V_MSE      = 00000031            

BIT...         = 00000000            IFB$K_BLN        00000060            IFB$V_NORECLK  = 00000033            

C511             00000000 R     02   IFB$K_BLN_IDX    00000060            IFB$V_NSP      = 0000003F            

ERRBUG           000000A4 R     02   IFB$K_BLN_REL    00000060            IFB$V_NWA      = 0000003C            

ERRBUG1          000002C2 R     02   IFB$K_BLN_SEQ    0000005C            IFB$V_ORG      = 00000004            

ERRDME           000000A1 R     02   IFB$K_FHAEND     00000050            IFB$V_PPF_IMAGE= 00000022            

ERRDME_BR        0000024C R     02   IFB$L_ARGLST     00000018            IFB$V_PPF_INPUT= 0000002E            

FTL$_ASBALLFAIL= FFFFFFF9            IFB$L_ASBADDR    00000014            IFB$V_PUT      = 00000000            

FTL$_BADASTPRM = FFFFFFF8            IFB$L_AS_DEV     00000054            IFB$V_RFM      = 00000000            

FTL$_BADBDB    = FFFFFFFA            IFB$L_BDB_BLNK   00000034            IFB$V_RWC      = 00000027            

FTL$_BADBUFSIZ = FFFFFFF3            IFB$L_BDB_FLNK   00000030            IFB$V_RW_ATTR  = 00000034            

FTL$_BADIFAB   = FFFFFFFD            IFB$L_BKPBITS    00000004            IFB$V_SCF      = 0000002A            

FTL$_BADLEVEL  = FFFFFFE6            IFB$L_BWB        0000000C            IFB$V_SPL      = 00000029            

FTL$_BADORGCASE= FFFFFFFB            IFB$L_DVBN       00000058            IFB$V_SQO      = 0000002D            

FTL$_CANTDOAST = FFFFFFF7            IFB$L_EBK        00000044            IFB$V_TEF      = 00000036            

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  26

SYMBOL TABLE                                                                                                                     (9)



IFB$V_TMP      = 00000035            IRB$B_RP_KREF    00000039            IRB$V_RAHWBH   = 0000002A            

IFB$V_TRN      = 00000004            IRB$B_RRV_ID     00000050            IRB$V_SKIP_NEXT= 0000002B            

IFB$V_UPD      = 00000003            IRB$B_SRCHFLAGS  00000043            IRB$V_SRCHGT   = 00000001            

IFB$V_WRTACC   = 00000030            IRB$B_STOPLEVEL  00000042            IRB$V_UNLOCK_RP= 0000002D            

IFB$W_ASDEVBSIZ  0000005A            IRB$C_BID      = 0000000A            IRB$V_WRITE    = 00000029            

IFB$W_BKS_BYTES  0000005C            IRB$C_BLN_IDX    0000006C            IRB$W_CSIZ       00000042            

IFB$W_BKS_RECS   0000005E            IRB$C_BLN_REL    00000048            IRB$W_DUP_POS    00000032            

IFB$W_CHNL       00000020            IRB$C_BLN_SEQ    0000004C            IRB$W_IOS2       0000000E            

IFB$W_DEQ        0000004E            IRB$K_BLN_IDX    0000006C            IRB$W_NRP_OFF    00000030            

IFB$W_DEVBUFSIZ  00000038            IRB$K_BLN_REL    00000048            IRB$W_OWN_ID     0000003C            

IFB$W_EBK0       00000044            IRB$K_BLN_SEQ    0000004C            IRB$W_OWN_ISI    0000003E            

IFB$W_EBK2       00000046            IRB$L_ARGLST     00000018            IRB$W_ROVHDSZ    00000044            

IFB$W_FFB        00000048            IRB$L_ASBADDR    00000014            IRB$W_RP_OFF     00000038            

IFB$W_IOS2       0000000E            IRB$L_BKPBITS    00000004            IRB$W_RTOTLSZ    00000046            

IFB$W_LRL        0000003E            IRB$L_BWB        0000000C            IRB$W_SAVE_POS   00000052            

IFB$W_MRS        0000004C            IRB$L_CURBDB     00000020            L$RMS00          00000000 R     04   

IFB$W_RTDEQ      0000003A            IRB$L_CURVBN     00000030            L$RMS01          00000006 R     04   

IMP$B_PROT       00000002            IRB$L_IFAB_LNK   00000000            PRT$C_ER       = 00000007            

IMP$C_ASYEFN   = 0000001E            IRB$L_IOS        0000000C            PRT$C_ERKW     = 00000006            

IMP$C_ASYQIOEFN= 0000001F            IRB$L_IOS4       00000010            PRT$C_EW       = 00000005            

IMP$C_ENTPERSEG= 0000000F            IRB$L_IRAB_LNK   0000001C            PRT$C_KR       = 00000003            

IMP$C_IOREFN   = 0000001E            IRB$L_KEYBUF     00000048            PRT$C_KW       = 00000002            

IMP$C_MBXEFN   = 0000001A            IRB$L_LAST_RAB   00000024            PRT$C_NA       = 00000000            

IMP$C_NPIOFILES= 0000000C            IRB$L_LOCK_BDB   0000005C            PRT$C_RESERVED = 00000001            

IMP$C_SYNCEFN  = 0000001B            IRB$L_NRP        0000002C            PRT$C_SR       = 0000000B            

IMP$L_FREEPGLH   0000000C            IRB$L_NRP_OFF    00000030            PRT$C_SREW     = 00000009            

IMP$L_IFABTBL    00000018            IRB$L_NRP_VBN    0000002C            PRT$C_SRKW     = 0000000A            

IMP$L_IFBTBLINK  00000024            IRB$L_NXTBDB     00000028            PRT$C_SW       = 00000008            

IMP$L_IOSEGADDR  00000004            IRB$L_OWNER_ID   0000003C            PRT$C_UR       = 0000000F            

IMP$L_IOSEGLEN   00000008            IRB$L_RFA_VBN    00000054            PRT$C_UREW     = 0000000D            

IMP$L_IRABTBL    0000001C            IRB$L_RLB_ADDR   00000044            PRT$C_URKW     = 0000000E            

IMP$L_IRBTBLINK  00000064            IRB$L_RP         00000034            PRT$C_URSW     = 0000000C            

IMP$L_SAVED_SP   00000014            IRB$L_RP_OFF     00000038            PRT$C_UW       = 00000004            

IMP$V_AST      = 00000001            IRB$L_RP_VBN     00000034            PSL$C_EXEC     = 00000001            

IMP$V_IIOS     = 00000000            IRB$L_RRV_VBN    0000004C            PSL$C_KERNEL   = 00000000            

IMP$V_IORUNDOWN= 00000004            IRB$L_TEMP0      00000044            PSL$C_SUPER    = 00000002            

IMP$V_NOP0BUFS = 00000005            IRB$L_TEMP1      00000048            PSL$C_USER     = 00000003            

IMP$V_TEMP1    = 00000002            IRB$V_ASYNC    = 00000023            PSL$M_CM       = 80000000            

IMP$V_TEMP2    = 00000003            IRB$V_ASYNCWAIT= 00000024            PSL$M_CURMOD   = 03000000            

IMP$W_ENTPERSEG  00000020            IRB$V_BIO_LAST = 00000027            PSL$M_DV       = 00000080            

IMP$W_NUM_IFABS  00000022            IRB$V_BRO_SW   = 00000028            PSL$M_FPD      = 08000000            

IMP$W_RMSSTATUS  00000000            IRB$V_BUSY     = 00000020            PSL$M_FU       = 00000040            

IRB$B_BCNT       00000040            IRB$V_DAP_CONN = 0000003E            PSL$M_IPL      = 001F0000            

IRB$B_BID        00000008            IRB$V_DAP_FMODE= 0000003F            PSL$M_IS       = 04000000            

IRB$B_BLN        00000009            IRB$V_DUP      = 0000002C            PSL$M_IV       = 00000020            

IRB$B_EFN        0000000B            IRB$V_EOF      = 00000021            PSL$M_PRVMOD   = 00C00000            

IRB$B_KEYSZ      00000051            IRB$V_FIND     = 00000029            PSL$M_SAFBITS  = 000037FF            

IRB$B_MBC        00000041            IRB$V_FIND_LAST= 00000025            PSL$M_TBIT     = 00000010            

IRB$B_MODE       0000000A            IRB$V_IDX_ERR  = 00000031            PSL$M_TP       = 40000000            

IRB$B_NRP_ID     00000030            IRB$V_LOCKABOVE= 00000002            PSL$S_CURMOD   = 00000002            

IRB$B_NRP_KREF   00000031            IRB$V_NEW_IDX  = 00000003            PSL$S_IPL      = 00000005            

IRB$B_NVBNS      00000048            IRB$V_POSINSERT= 00000000            PSL$S_PRVMOD   = 00000002            

IRB$B_POST_CCTL  00000045            IRB$V_PPF_EOF  = 0000002E            PSL$V_CM       = 0000001F            

IRB$B_PPF_ISI    0000003E            IRB$V_PPF_FNDSV= 00000030            PSL$V_CURMOD   = 00000018            

IRB$B_PRE_CCTL   00000044            IRB$V_PPF_IMAGE= 00000022            PSL$V_DV       = 00000007            

IRB$B_RFA_ID     00000058            IRB$V_PPF_SKIP = 0000002F            PSL$V_FPD      = 0000001B            

IRB$B_RP_ID      00000038            IRB$V_PUTS_LAST= 00000026            PSL$V_FU       = 00000006            

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  27

SYMBOL TABLE                                                                                                                     (9)



PSL$V_IPL      = 00000010            RMS$_CHN       = 0001C0EC            RMS$_LBL       = 000185B4            

PSL$V_IS       = 0000001A            RMS$_COD       = 000184AC            RMS$_LNE       = 000185BC            

PSL$V_IV       = 00000005            RMS$_CONTROLC  = 00010651            RMS$_LOC       = 000185C4            

PSL$V_PRVMOD   = 00000016            RMS$_CONTROLO  = 00010609            RMS$_MBC       = 00018734            

PSL$V_TBIT     = 00000004            RMS$_CONTROLY  = 00010611            RMS$_MKD       = 0001C032            

PSL$V_TP       = 0000001E            RMS$_CRE       = 0001C00A            RMS$_MRN       = 000185CC            

RM$ALBDB         0000024F RG    02   RMS$_CREATED   = 00010619            RMS$_MRS       = 000185D4            

RM$ALDBUF        00000230 RG    02   RMS$_CUR       = 000184B4            RMS$_NAM       = 000185DC            

RM$ALLOCKBUF     0000022A RG    02   RMS$_DAC       = 0001C012            RMS$_NEF       = 000185E4            

RM$BUG           ********   X   02   RMS$_DAN       = 000184BC            RMS$_NET       = 0001874C            

RM$GET1PAG       00000004 RG    02   RMS$_DEL       = 00018262            RMS$_NID       = 000185EC            

RM$GETBLK        00000117 RG    02   RMS$_DEV       = 000184C4            RMS$_NMF       = 000182CA            

RM$GETBLK1_ALT   00000115 R     02   RMS$_DIR       = 000184CC            RMS$_NOD       = 000185F4            

RM$GETPAG        00000007 RG    02   RMS$_DME       = 000184D4            RMS$_NORMAL    = 00010001            

RM$GETSPC        000000AB RG    02   RMS$_DNA       = 000184DC            RMS$_NPK       = 000185FC            

RM$GETSPC1       000000A8 RG    02   RMS$_DNF       = 0001C04A            RMS$_OK_ALK    = 00018039            

RM$GETSPC_ALT    000000B0 RG    02   RMS$_DNR       = 00018272            RMS$_OK_DEL    = 00018041            

RM$RET1PAG       00000135 RG    02   RMS$_DPE       = 0001C03A            RMS$_OK_DUP    = 00018011            

RM$RET1STBDB     00000264 RG    02   RMS$_DTP       = 000184E4            RMS$_OK_IDX    = 00018019            

RM$RETBDB        0000026B RG    02   RMS$_DUP       = 000184EC            RMS$_OK_LIM    = 00018051            

RM$RETBLK        0000019E RG    02   RMS$_DVI       = 000184F4            RMS$_OK_RLK    = 00018021            

RM$RETBLK1       0000019C RG    02   RMS$_ENT       = 0001C01A            RMS$_OK_RNF    = 00018049            

RM$RETPAG        00000138 RG    02   RMS$_ENV       = 00018724            RMS$_OK_RRV    = 00018029            

RM$RETSPC        000001A6 RG    02   RMS$_EOF       = 0001827A            RMS$_ORD       = 00018604            

RM$RETSPC1       0000018D RG    02   RMS$_ESA       = 000184FC            RMS$_ORG       = 0001860C            

RMS$V_STVSTATUS= 0000000E            RMS$_ESL       = 00018714            RMS$_PBF       = 00018614            

RMS$_ABO       = 000183EC            RMS$_ESS       = 00018504            RMS$_PENDING   = 00018009            

RMS$_ACC       = 0001C002            RMS$_EXP       = 000182C2            RMS$_PLG       = 0001861C            

RMS$_ACT       = 0001825A            RMS$_EXT       = 0001C022            RMS$_PLV       = 0001872C            

RMS$_AID       = 000183F4            RMS$_FAB       = 0001850C            RMS$_POS       = 00018624            

RMS$_ALN       = 000183FC            RMS$_FAC       = 00018514            RMS$_PRM       = 0001862C            

RMS$_ALQ       = 00018404            RMS$_FEX       = 00018282            RMS$_PRV       = 0001829A            

RMS$_ANI       = 0001840C            RMS$_FLG       = 0001851C            RMS$_QUO       = 00018634            

RMS$_AOP       = 00018414            RMS$_FLK       = 0001828A            RMS$_RAB       = 0001863C            

RMS$_ATR       = 0001C0CC            RMS$_FNA       = 00018524            RMS$_RAC       = 00018644            

RMS$_ATW       = 0001C0D4            RMS$_FND       = 0001C02A            RMS$_RAT       = 0001864C            

RMS$_BKS       = 0001841C            RMS$_FNF       = 00018292            RMS$_RBF       = 00018654            

RMS$_BKZ       = 00018424            RMS$_FNM       = 0001852C            RMS$_RER       = 0001C0F4            

RMS$_BLN       = 0001842C            RMS$_FOP       = 0001853C            RMS$_REX       = 000182A2            

RMS$_BOF       = 00018198            RMS$_FSZ       = 00018534            RMS$_RFA       = 0001865C            

RMS$_BUG       = 00018434            RMS$_FUL       = 00018544            RMS$_RFM       = 00018664            

RMS$_BUG_DAP   = 00018444            RMS$_IAL       = 0001854C            RMS$_RHB       = 0001866C            

RMS$_BUG_DDI   = 0001843C            RMS$_IAN       = 00018554            RMS$_RLF       = 00018674            

RMS$_BUG_XX2   = 0001844C            RMS$_IBF       = 00018754            RMS$_RLK       = 000182AA            

RMS$_BUG_XX3   = 00018454            RMS$_IDX       = 0001855C            RMS$_RMV       = 0001C0FC            

RMS$_BUG_XX4   = 0001845C            RMS$_IFA       = 0001C124            RMS$_RNF       = 000182B2            

RMS$_BUG_XX5   = 00018464            RMS$_IFI       = 00018564            RMS$_RNL       = 000181A0            

RMS$_BUG_XX6   = 0001846C            RMS$_IMX       = 0001856C            RMS$_ROP       = 0001867C            

RMS$_BUG_XX7   = 00018474            RMS$_IOP       = 00018574            RMS$_RPL       = 0001C104            

RMS$_BUG_XX8   = 0001847C            RMS$_IRC       = 0001857C            RMS$_RRV       = 00018684            

RMS$_BUG_XX9   = 00018484            RMS$_ISI       = 00018584            RMS$_RSA       = 000182DA            

RMS$_CAA       = 0001848C            RMS$_KBF       = 0001858C            RMS$_RSL       = 0001873C            

RMS$_CCF       = 0001C0DC            RMS$_KEY       = 00018594            RMS$_RSS       = 00018694            

RMS$_CCR       = 00018494            RMS$_KFF       = 00018031            RMS$_RST       = 0001869C            

RMS$_CDA       = 0001C0E4            RMS$_KRF       = 0001859C            RMS$_RSZ       = 000186A4            

RMS$_CHG       = 0001849C            RMS$_KSZ       = 000185A4            RMS$_RTB       = 000181A8            

RMS$_CHK       = 000184A4            RMS$_LAN       = 000185AC            RMS$_SEQ       = 000186AC            

RM0BUFMGR       BUFFER MANAGER                                   21-AUG-1978 21:15:34   VAX-11 MACRO X0.3-11               Page  28

SYMBOL TABLE                                                                                                                     (9)



RMS$_SHR       = 000186B4            

RMS$_SIZ       = 000186BC            

RMS$_SPL       = 0001C042            

RMS$_SQO       = 000186C4            

RMS$_STALL     = 00018001            

RMS$_STK       = 000186CC            

RMS$_SUC       = 00010001            

RMS$_SUP       = 000182D2            

RMS$_SUPERSEDE = 00010631            

RMS$_SYN       = 000186D4            

RMS$_SYS       = 0001C10C            

RMS$_TEMP1     = 0001826A            

RMS$_TEMP2     = 0001868C            

RMS$_TMO       = 000181B0            

RMS$_TRE       = 000186DC            

RMS$_TYP       = 000186E4            

RMS$_UBF       = 000186EC            

RMS$_USZ       = 000186F4            

RMS$_VER       = 000186FC            

RMS$_VOL       = 00018704            

RMS$_WBE       = 0001C12C            

RMS$_WER       = 0001C114            

RMS$_WLD       = 00018744            

RMS$_WLK       = 000182BA            

RMS$_WPL       = 0001C11C            

RMS$_WSF       = 0001871C            

RMS$_XAB       = 0001870C            

SETHDR1          0000012A R     02   

SETHDR3          00000191 R     02   

SYS$EXPREG       ********   X   02   

SYS$SETPRT       ********   X   02   

SYS$ULWSET       ********   X   02   





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$RMSCOM         000002C6      02     NOPIC   USR   CON   REL   GBL NOSHR   EXE   RD  NOWRT BYTE  

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

L$RMS0           0000000F      04     NOPIC   USR   CON   REL   GBL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

10028. BYTES LEFT IN FREE MEMORY POOL.

2636. BYTES OF RECLAIMED MEMORY.

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

38 MLB DIR RDS - 1007 GETS TO DEFINE 30 MACROS. 76 INTER. FILE WRITES. 

