RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)      41  DECLARATIONS

   (1)     117  RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   1

022                                                                                                                              (1)



                                     0000     1 	$BEGIN	RM1NXTBLK,022,$RMS1,<GET NEXT BLOCK FOR SEQUENTIAL FILE ORG>,-

                                     0000     2 		<NOWRT,QUAD>

                                     0000     3 ;

                                     0000     4 ; COPYRIGHT (C) 1977

                                     0000     5 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000     6 ;

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

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

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

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

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

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

                                     0000    13 ; REMAIN IN DEC.

                                     0000    14 ;

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

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

                                     0000    17 ; CORPORATION.

                                     0000    18 ;

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

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

                                     0000    21 ;

                                     0000    22 ;++

                                     0000    23 ; FACILITY: RMS32

                                     0000    24 ;

                                     0000    25 ; ABSTRACT:

                                     0000    26 ;		THIS MODULE PERFORMS GET NEXT BLOCK PROCESSING

                                     0000    27 ;		FOR THE SEQUENTIAL FILE ORGANIZATION.

                                     0000    28 ;

                                     0000    29 ; ENVIRONMENT:

                                     0000    30 ;		STAR PROCESSOR RUNNING STARLET EXEC.

                                     0000    31 ;

                                     0000    32 ; AUTHOR: L F LAVERDURE,	 CREATION DATE: 3-FEB-77

                                     0000    33 ;

                                     0000    34 ; MODIFIED BY:

                                     0000    35 ;

                                     0000    36 ;	L F LAVERDURE,   13-JUN-78  17:08

                                     0000    37 ;			ADD MBF RAH/WBH LOGIC

                                     0000    38 ; 01	- 

                                     0000    39 ;--

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   2

022             DECLARATIONS                                                                                                     (1)



                                     0000    41 	.SBTTL	DECLARATIONS

                                     0000    42 ;

                                     0000    43 ; INCLUDE FILES:

                                     0000    44 ;

                                     0000    45 

                                     0000    46 ;

                                     0000    47 ; MACROS:

                                     0000    48 ;

                                     0000    49 	$IFBDEF

                                     0000    50 	$DEVDEF

                                     0000    51 	$IRBDEF

                                     0000    52 	$BDBDEF

                                     0000    53 	$RABDEF

                                     0000    54 	$RMSDEF

                                     0000    55 	.LIST MEB

                                     0000    56 ;

                                     0000    57 

                                     0000    58 ;

                                     0000    59 ; EQUATED SYMBOLS:

                                     0000    60 ;

                                     0000    61 

                           00000020  0000    62 	ROP = RAB$L_ROP * 8	; BIT OFFSET TO ROP

                                     0000    63 ;

                                     0000    64 ; OWN STORAGE:

                                     0000    65 ;

                                     0000    66 

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   3

022             DECLARATIONS                                                                                                     (1)



                                     0000    68 

                                     0000    69 ;++

                                     0000    70 ; NOTES ON THE MULTI-BLOCK BUFFERING SCHEME

                                     0000    71 ;

                                     0000    72 ; THIS ROUTINE CAUSES MULTIPLE BLOCKS TO BE READ TOGETHER

                                     0000    73 ; (AS SPECIFIED BY MBC) BUT RETURNED ONE AT A TIME FOR

                                     0000    74 ; PROCESSING BY THE CALLING ROUTINES.

                                     0000    75 ;

                                     0000    76 ; ASSUMPTIONS:

                                     0000    77 ;

                                     0000    78 ;	1.  MBC IS NEVER > 0 EXCEPT FOR DISK(= # VBN'S - 1)

                                     0000    79 ;	2.  RECORDS ARE ALWAYS WRITTEN AT EOF (ONLY UPDATES

                                     0000    80 ;	    MAY OCCUR ELSEWHERE IN THE FILE).

                                     0000    81 ;	3.  ALL SEQUENTIAL I/O CALLS GO THRU ONE OF THE

                                     0000    82 ;	    FOLLOWING ROUTINES:

                                     0000    83 ;		RM$NXTBLK1

                                     0000    84 ;		RM$WTLST1

                                     0000    85 ;		RM$RELBLK1

                                     0000    86 ;	4.  THERE IS NO WRITE SHARING FOR SEQUENTIAL FILES.

                                     0000    87 ;	5.  A DIRECT RELEASE WILL BE DONE ONLY WHEN THERE

                                     0000    88 ;	    IS NO I/O FOR THE BUFFER.

                                     0000    89 ;

                                     0000    90 ; BDB FIELD USAGE:

                                     0000    91 ;

                                     0000    92 ;	1.  BDB$L_VBN = VBN OF FIRST BLOCK IN BUFFER

                                     0000    93 ;	2.  (IRB$L_RP_VBN = VBN OF CURRENT BLOCK)

                                     0000    94 ;	3.  BDB$B_REL_VBN = CURRENT VBN REL TO START VBN FOR BUFFER

                                     0000    95 ;	4.  BDB$B_VAL_VBNS = # OF VALID VBNS IN BUFFER

                                     0000    96 ;	5.  BDB$B_FLGS:

                                     0000    97 ;		-BDB$V_DRT:ALL BLOCKS UP TO THE GREATER OF THE CURRENT VBN

                                     0000    98 ;		 AND THE NUMBER OF VAL_VBNS ARE DIRTY

                                     0000    99 ;		-BDB$V_VAL:THE CURRENT VBN IS VALID

                                     0000   100 ;

                                     0000   101 ;	6.  THE RELATIVE VBN = REQUESTED VBN - START VBN

                                     0000   102 ;	7.  CURRENT BLOCK BUFFER ADDR = BUFF ADDR + (REL_VBN*512)

                                     0000   103 ;	8.  BDB$W_NUMB = # BYTES IN CURRENT BLOCK

                                     0000   104 ;		ON READS = MIN(# BLOCKS DESIRED, (IRB$B_MBC+1)) * 512

                                     0000   105 ;		ON WRITES = (MAX(VAL_VBN,REL_VBN+1))*512

                                     0000   106 ;	9.  REQUESTED VBN IS IN BUFFER IF ITS REL_VBN < VAL_VBNS

                                     0000   107 ;	    (VAL_VBNS WILL BE RECALCULATED FROM REL_VBN IF THE VAL BIT IS ON

                                     0000   108 ;	    FOR CALLS TO RM$NXTBLK1 AND RM$GETBLKNRP)

                                     0000   109 ;	10. IF READ REQUIRED AND REL_VBN < VAL_VBNS OK,

                                     0000   110 ;		ELSE RELEASE BUFFER AND REREAD

                                     0000   111 ;	11. ON RELEASE (RM$RELBLK1) IF BDB$V_VAL IS OFF AND THE

                                     0000   112 ;	    BDB$V_DRT BIT IS SET, MERELY DECREMENT THE

                                     0000   113 ;	    CURRENT VBN AND SET THE VALID BIT.

                                     0000   114 ;--

                                     0000   115 

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   4

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



                                     0000   117 	.SBTTL RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTINE

                                     0000   118 ;++

                                     0000   119 ; FUNCTIONAL DESCRIPTION:

                                     0000   120 ;

                                     0000   121 ; THIS ROUTINE LOCATES THE NEXT BLOCK OF A SEQUENTIAL FILE,

                                     0000   122 ; READING IT IF NECESSARY, AND UPDATING THE APPROPRIATE FIELDS

                                     0000   123 ; IN THE IRAB AND BDB.

                                     0000   124 ;

                                     0000   125 ; CALLING SEQUENCE:

                                     0000   126 ;

                                     0000   127 ; THERE ARE SIX ENTRY POINTS:

                                     0000   128 ;

                                     0000   129 ;	BSBW	RM$NXTBLK1		; RETURN THE NEXT BLOCK

                                     0000   130 ;	BSBW	RM$GETBLKNRP		; RETURN THE BLOCK SPECIFIED BY NRP

                                     0000   131 ;	BSBW	RM$GETBLK1		; RETURN THE BLOCK SPECIFIED BY R1

                                     0000   132 ;	BSBW	RM$GETBLK1ALT		; READ RECORD FOR UNIT RECORD DEVICE

                                     0000   133 ;					; (NOTE: R2=SIZE OF BUFFER)

                                     0000   134 ;	BSBW	RM$MAPBLK1		; SET START AND END

                                     0000   135 ;					; ADDRESS FOR CURRENT

                                     0000   136 ;					; BLOCK OF BDB WHOSE

                                     0000   137 ;					; ADDRESS IS IN R4

                                     0000   138 ;	BSBW	RM$MAPCURBLK1		; SAME AS RM$MAPBLK1 EXCEPT MAPS

                                     0000   139 ;					; BLOCK POINTED TO BY IRB$L_CURBDB

                                     0000   140 ;	BSBW	RM$MAPBLK1ALT		; SAME AS RM$MAPBLK1 EXCEPT DOESN'T

                                     0000   141 ;					; STORE BDB ADDR IN IRB$L_CURBDB

                                     0000   142 ;

                                     0000   143 ; INPUT PARAMETERS:

                                     0000   144 ;

                                     0000   145 ;	R11	IMPURE AREA ADDR

                                     0000   146 ;	R10	IFAB ADDR

                                     0000   147 ;	R9	IRAB ADDR

                                     0000   148 ;	R8	RAB ADDR

                                     0000   149 ;	R4	BDB ADDR (ENTRY AT RM$MAPBLK1 ONLY)

                                     0000   150 ;	R3	OPTION TO AVOID READ IF BIT 0 SET (NOT INPUT TO RM$MAPBLK1)

                                     0000   151 ;		OPTION TO DO SHORT DISK READ IF BIT 1 SET

                                     0000   152 ;	R2	# OF BLOCKS TO READ MINUS 1 (ONLY IF BIT 1 SET IN R3)

                                     0000   153 ;	R1	VBN TO READ (ENTRY AT RM$GETBLK1 ONLY)

                                     0000   154 ;

                                     0000   155 ; IMPLICIT INPUTS:

                                     0000   156 ;

                                     0000   157 ;	THE VARIOUS FIELDS OF THE IFAB, IRAB, AND ASSOCIATED BDB.

                                     0000   158 ;

                                     0000   159 ; OUTPUT PARAMETERS:

                                     0000   160 ;

                                     0000   161 ;	R7	ADDR OF END OF BLOCK BUFFER+1

                                     0000   162 ;	R4	ADDR OF CURRENT BDB

                                     0000   163 ;	R1	ADDR OF CURRENT BLOCK IN BUFFER

                                     0000   164 ;	R0	STATUS CODE (EXCEPT FOR ENTRY AT ANY OF THE RM$MAPXXX ENTRIES)

                                     0000   165 ;	R2-R3	DESTROYED (EXCEPT FOR ENTRY AT ANY OF THE RM$MAPXXX ENTRIES)

                                     0000   166 ;

                                     0000   167 ; IMPLICIT OUTPUTS:

                                     0000   168 ;

                                     0000   169 ;	VARIOUS FIELDS OF THE IRAB AND ASSOCIATED BDB ARE UPDATED.

                                     0000   170 ;

                                     0000   171 ; COMPLETION CODES:

                                     0000   172 ;

                                     0000   173 ;	STANDARD RMS. UPON ERROR, IRAB$L_IOS & _IOS4 HAVE

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   5

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



                                     0000   174 ;	ERROR INFORMATION.

                                     0000   175 ;	IF RM$_EOF, THEN IRB$V_EOF SET.

                                     0000   176 ;

                                     0000   177 ; SIDE EFFECTS:

                                     0000   178 ;

                                     0000   179 ;	NONE

                                     0000   180 ;

                                     0000   181 ;--

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   6

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



                                     0000   183 

                                     0000   184 RM$NXTBLK1::

                                     0000   185 	$TSTPT	NXTBLK1

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

                                     0006   186 ;

                                     0006   187 ; GET NEW VALUE FOR NRP

                                     0006   188 ;

                       2C A9     D6  0006   189 	INCL	IRB$L_NRP_VBN (R9)		; BUMP VBN

                       30 A9     B4  0009   190 	CLRW	IRB$W_NRP_OFF(R9)		; ZERO OFFSET

                                     000C   191 ;

                                     000C   192 ;  ENTRY TO RETURN BLOCK SPECIFIED BY NRP

                                     000C   193 ;

                                     000C   194 RM$GETBLKNRP::

            54         20 A9     D0  000C   195 	MOVL	IRB$L_CURBDB(R9),R4		; GET BDB ADDRESS

                          58     13  0010   196 	BEQL	READAHEAD			; BRANCH IF NO CURRENT BDB

                                     0012   197 ;

                                     0012   198 ; IS THE REQUESTED BLOCK ALREADY IN THE BUFFER?

                                     0012   199 ;

         2C A9         18 A4     C3  0012   200 	SUBL3	BDB$L_VBN(R4),IRB$L_NRP_VBN(R9),R1	; COMPUTE REL VBN

                          51         0017       

            51            51     F6  0018   201 	CVTLB	R1,R1				; MBC IS AT MOST 127

                          46     1D  001B   202 	BVS	RELEASE				; SO BRANCH IF NOT IN RANGE

                                     001D   203 ;

                                     001D   204 ; IF READ REQUESTED, MUST BE WITHIN THE VALID COUNT

                                     001D   205 ; OTHERWISE, IT NEED MERELY BE WITHIN MBC

                                     001D   206 ;

                                     001D   207 	ASSUME	BDB$V_VAL EQ 0

            35         0A A4     E9  001D   208 	BLBC	BDB$B_FLGS(R4),20$		; BRANCH IF BUFFER NOT VALID

                                     0021   209 ;

                                     0021   210 ;  RECOMPUTE # VALID BLOCKS = MAX(VAL_VBNS,REL_VBN+1)

                                     0021   211 ;

         20 A4            01     81  0021   212 2$:	ADDB3	#1,BDB$B_REL_VBN(R4),R0		; COMPUTE MIN. # VALID VBNS

                          50         0025       

         21 A4            50     91  0026   213 	CMPB	R0,BDB$B_VAL_VBNS(R4)		; NEED TO ADJUST # VALID VBNS?

                          04     15  002A   214 	BLEQ	5$				; BRANCH IF NOT

         21 A4            50     90  002C   215 	MOVB	R0,BDB$B_VAL_VBNS(R4)		; SET NEW VALUE FOR # VALID VBNS

                                     0030   216 5$:

                                     0030   217 ;

                                     0030   218 ;  CHECK VALIDITY OF DESIRED BLOCK

                                     0030   219 ;

         21 A4            51     91  0030   220 	CMPB	R1,BDB$B_VAL_VBNS(R4)		; IS THE BLOCK VALID?

                          16     1F  0034   221 	BLSSU	10$				; YES - GO USE IT

                          2B     1A  0036   222 	BGTRU	RELEASE				; NO - GO RELEASE CURRENT BDB

            28            53     E9  0038   223 	BLBC	R3,RELEASE			; BRANCH IF READ REQUIRED

                                     003B   224 ;

                                     003B   225 ;  BLOCK DESIRED IS THE 'NEXT' BLOCK AND IT'S FOR OUTPUT.

                                     003B   226 ;  MERELY ADD IT TO THE CURRENT BUFFER IF < OR = MBC.

                                     003B   227 ;

         41 A9            51     91  003B   228 	CMPB	R1,IRB$B_MBC(R9)		; WILL BLOCK FIT IN THE BUFFER?

                          22     1A  003F   229 	BGTRU	RELEASE				; BRANCH IF NOT

                                     0041   230 ;

                                     0041   231 ;  CHECK FOR AUTO EXTEND REQUIRED

                                     0041   232 ;

         40 AA         2C A9     D1  0041   233 	CMPL	IRB$L_NRP_VBN(R9),IFB$L_HBK(R10); IS NEXT BLOCK ALLOCATED?

                          1B     1A  0046   234 	BGTRU	RELEASE				; BRANCH IF NOT, WRITING BUFFER

                                     0048   235 						; (NOTE: WILL ALLOCATE SPACE BELOW)

         0A A4            01     8A  0048   236 	BICB	#1@BDB$V_VAL,BDB$B_FLGS(R4)	; INVALIDATE THE BUFFER

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   7

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



                                     004C   237 						; (FLAGS CURRENT BLK AS NOT YET VALID)

         20 A4            51     90  004C   238 10$:	MOVB	R1,BDB$B_REL_VBN(R4)		; SET NEW CURRENT REL VBN

                                     0050   239 	RMSSUC					; SHOW SUCCESS

            50            01     D0  0050       		MOVL	#1,R0

                          00D0   31  0053   240 	BRW	RM$MAPBLK1ALT

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   8

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



                                     0056   242 ;

                                     0056   243 ;  BUFFER VALID FLAG IS OFF.

                                     0056   244 ;  IF BUFFER IS DIRTY DECREMENT REL_VBN, SET VALID, & TRY FOR A HIT.

                                     0056   245 ;

         0A A4            01     E1  0056   246 20$:	BBC	#BDB$V_DRT,BDB$B_FLGS(R4),RELEASE	; BRANCH IF NOT DIRTY

                          08         005A       

                       20 A4     97  005B   247 	DECB	BDB$B_REL_VBN(R4)		; ADJUST REL_VBN

         0A A4            00     E3  005E   248 	BBCS	#BDB$V_VAL,BDB$B_FLGS(R4),2$	; SET VALID AND BRANCH

                          BE         0062       

                                     0063   249 ;

                                     0063   250 ; REQUIRED BLOCK NOT IN THIS BUFFER

                                     0063   251 ; RELEASE CURRENT CONTENTS OF BUFFER BEFORE REUSING

                                     0063   252 ;

                          FF9A'  30  0063   253 RELEASE: BSBW	RM$RELBLK1			; RELEASE THE BUFFER

            01            50     E8  0066   254 	BLBS	R0,READAHEAD			; CONTINUE ON SUCCESS

                                 05  0069   255 	RSB

                                     006A   256 READAHEAD:

            69            2A     E1  006A   257 	BBC	#IRB$V_RAHWBH,(R9),80$		; BRANCH IF RAH NOT ENABLED

                          79         006D       

            76            53     E8  006E   258 	BLBS	R3,80$				; BRANCH IF NOT A REAL READ

                                     0071   259 	ASSUME	RAB$C_SEQ EQ 0

                       1E A8     95  0071   260 	TSTB	RAB$B_RAC(R8)			; ONLY DO RAH IF RAC=SEQ

                          71     12  0074   261 	BNEQ	80$				; BRANCH IF NOT SEQ

            68            29     E1  0076   262 	BBC	#RAB$V_RAH+ROP,(R8),80$		; BRANCH IF USER DOES NOT WANT RAH

                          6D         0079       

                                     007A   263 ;

                                     007A   264 ; ALL IS GO FOR READ AHEAD SO FIRE UP AS MANY AS NEEDED OR POSSIBLE

                                     007A   265 ;

                          54     DD  007A   266 	PUSHL	R4				; SET LAST BDB FOR RAH LIMIT

            54         28 A9     D0  007C   267 20$:	MOVL	IRB$L_NXTBDB(R9),R4		; GET BDB FOR NEXT RAH

                          FF7D'  30  0080   268 25$:	BSBW	RM$SEQFLNKBDB

         0A A4            02     E0  0083   269 	BBS	#BDB$V_IOP,BDB$B_FLGS(R4),60$	; BRANCH IF IO IN PROGRESS

                          48         0087       

                          6E     D5  0088   270 28$:	TSTL	(SP)				; FIRST TIME CALL ?

                          0E     12  008A   271 	BNEQ	30$				; BRANCH IF NO

            51         2C A9     D0  008C   272 	MOVL	IRB$L_NRP_VBN(R9),R1		; START RAH AT NRP_VBN

            6E         28 A9     D0  0090   273 	MOVL	IRB$L_NXTBDB(R9),(SP)		; SET LAST BDB FOR RAH LIMIT

         20 A9            6E     D0  0094   274 	MOVL	(SP),IRB$L_CURBDB(R9)		; SET UP CURBDB TO PICKUP THE

                                     0098   275 						; BDB FOR WHICH THIS RAH WILL

                                     0098   276 						; BE ISSUED (IE NXTBDB=CURBDB

                                     0098   277 						; RAH IS FOR FLNK OF NXTBDB AND

                                     0098   278 						; RM$SEQRD USES FLNK OF CURBDB)

                          15     11  0098   279 	BRB	50$

            50         28 A9     D0  009A   280 30$:	MOVL	IRB$L_NXTBDB(R9),R0		; GET BDB ADDR FOR LAST RAH

            51            01     D0  009E   281 	MOVL	#1,R1				; ASSUME 1 VBN XFER

            6A            1C     E1  00A1   282 	BBC	#DEV$V_RND,IFB$L_PRIM_DEV(R10),40$ ; BRANCH IF NOT DISK

                          06         00A4       

            07            09     EF  00A5   283 	EXTZV	#9,#7,BDB$W_NUMB(R0),R1		; GET # OF VBN'S IN BUFFER

            51         10 A0         00A8       

                                     00AB   284 						; (ASSUMES 512 BYTE BLOCK SIZE)

            51         18 A0     C0  00AB   285 40$:	ADDL2	BDB$L_VBN(R0),R1		; R1 = START VBN FOR XFER

            52         41 A9     9A  00AF   286 50$:	MOVZBL	IRB$B_MBC(R9),R2		; CALC XFER SIZE (MBC = # OF

                          52     B6  00B3   287 	INCW	R2				; BLOCKS - 1 SO INCREMENT)

            52         38 AA     A4  00B5   288 	MULW2	IFB$W_DEVBUFSIZ(R10),R2		; MAKE BYTES

         44 AA            51     D1  00B9   289 	CMPL	R1,IFB$L_EBK(R10)		; DON'T READ PAST EOF BLOCK

                          25     1A  00BD   290 	BGTRU	70$				; BRANCH IF START VBN PAST EOF BLOCK

                          FF3E'  30  00BF   291 	BSBW	RM$SEQRAH			; ISSUE READ AHEAD

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page   9

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



            1F            50     E9  00C2   292 	BLBC	R0,70$				; BRANCH IF ERRORS

         28 A9            54     D0  00C5   293 	MOVL	R4,IRB$L_NXTBDB(R9)		; UPDATE NXTBDB

            6E            54     D1  00C9   294 	CMPL	R4,(SP)				; REACHED LIMIT ?

                          B2     12  00CC   295 	BNEQ	25$				; BRANCH IF NO

                          14     11  00CE   296 	BRB	70$				; OTHERWISE EXIT RAH LOOP

                                     00D0   297 

                       20 A4     D5  00D0   298 60$:	TSTL	BDB$L_IOSB(R4)			; WE BUMPED INTO A WBH

                          0F     13  00D3   299 	BEQL	70$				; BRANCH IF NOT DONE

                          FF28'  30  00D5   300 	BSBW	RM$STALLRAHWBH			; OTHERWISE PROCESS BDB

                                     00D8   301 						; (NOTE: DOES NOT STALL)

                                     00D8   302 	CSB	#BDB$V_IOP,BDB$B_FLGS(R4)	; CLEAR I/O IN PROGRESS

         0A A4            02     E5  00D8       		BBCC	#BDB$V_IOP,BDB$B_FLGS(R4),30000$

                          00         00DC       

                                     00DD       30000$:

            A8            50     E8  00DD   303 	BLBS	R0,28$				; BRANCH IF ALL OK

            5E            04     C0  00E0   304 	ADDL2	#4,SP				; POP STACK

                                 05  00E3   305 	RSB					; AND EXIT WITH WBE ERROR

                                     00E4   306 

            5E            04     C0  00E4   307 70$:	ADDL2	#4,SP				; POP LIMIT OFF STACK

            51         2C A9     D0  00E7   308 80$:	MOVL	IRB$L_NRP_VBN(R9),R1		; SET BLOCK TO READ

                                     00EB   309 						; AND FALL INTO RM$GETBLK1

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page  10

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



                                     00EB   311 ;

                                     00EB   312 ; ENTRY TO READ SPECIFIED BLOCK   R1 = VBN

                                     00EB   313 ;

                                     00EB   314 RM$GETBLK1::

                                     00EB   315 ;

                                     00EB   316 ; COMPUTE SIZE FOR XFER

                                     00EB   317 ;

            53            01     E1  00EB   318 	BBC	#1,R3,5$			; BRANCH UNLESS FLAG INDICATES

                          06         00EE       

                                     00EF   319 						; A SHORT READ FOR RANDOM I/O

         41 A9            52     91  00EF   320 	CMPB	R2,IRB$B_MBC(R9)		; R2 < MBC?

                          04     1B  00F3   321 	BLEQU	10$				; BRANCH IF YES

            52         41 A9     9A  00F5   322 5$:	MOVZBL	IRB$B_MBC(R9),R2		; MBC = # BLOCKS -1

                          52     B6  00F9   323 10$:	INCW	R2				; GET # OF BLOCKS

            52         38 AA     A4  00FB   324 	MULW2	IFB$W_DEVBUFSIZ(R10),R2		; AND SIZE IN BYTES

                                     00FF   325 ;

                                     00FF   326 ;  ENTRY POINT FOR UNIT RECORD DEVICE READ ( AND FOREIGN UNBLOCKED MT)

                                     00FF   327 ;

                                     00FF   328 RM$GETBLK1ALT::

                          53     DD  00FF   329 	PUSHL	R3				; SAVE FLAGS

                          FEFC'  30  0101   330 	BSBW	RM$SEQRD			; AND GO READ THE RECORD

                          08     BA  0104   331 	POPR	#^M<R3>

                                     0106   332 	ASSUME	<BDB$B_REL_VBN+1> EQ BDB$B_VAL_VBNS

                       20 A4     B4  0106   333 	CLRW	BDB$B_REL_VBN(R4)		; RESET RELATIVE VBN

            53            50     E9  0109   334 	BLBC	R0,ERRXFR			; GO PROCESS ERROR

            6A            1C     E1  010C   335 	BBC	#DEV$V_RND,IFB$L_PRIM_DEV(R10),RM$MAPBLK1 ;BRANCH IF NOT DISK

                          12         010F       

            3A            53     E8  0110   336 	BLBS	R3,CHK_EXTEND			; BRANCH IF NOT READING

                                     0113   337 SET_VBNS:

                                     0113   338 ;+!!!!!

                                     0113   339 ; NOTE:  THIS CODE ASSUMES THAT DISK HAS A BLOCK SIZE OF 512 BYTES

                                     0113   340 ;	NUMBER OF VALID BLOCKS = # BYTES XFERRED DIVIDED BY 512

            07            09     EF  0113   341 	EXTZV	#9,#7,BDB$W_NUMB(R4),R1		; GET # OF VBNS XFERRED

            51         10 A4         0116       

         21 A4            51     90  0119   342 	MOVB	R1,BDB$B_VAL_VBNS(R4)		; SET # VALID BLOCKS

                                     011D   343 ;-!!!!

                                     011D   344 SET_NUMB:

         10 A4         38 AA     B0  011D   345 	MOVW	IFB$W_DEVBUFSIZ(R10),BDB$W_NUMB(R4)	; RESET NUMB TO BLOCKSIZE

                                     0122   346 ;

                                     0122   347 ; ENTRY TO SET BEGINNING AND END OF CURRENT BUFFER ADDRESSES

                                     0122   348 ; R4 = BDB ADDRESS

                                     0122   349 ;

                                     0122   350 RM$MAPBLK1::

         20 A9            54     D0  0122   351 	MOVL	R4,IRB$L_CURBDB(R9)		; SET CURRENT BDB

                                     0126   352 ;

                                     0126   353 ;  ENTRY TO SET BEGINNING AND END OF CURRENT BUFFER ADDRESSES BUT WITHOUT

                                     0126   354 ;  SETTING IRB$L_CURBDB TO THE BDB ADDRESS IN R4

                                     0126   355 ;

                                     0126   356 RM$MAPBLK1ALT::

            51         20 A4     9A  0126   357 	MOVZBL	BDB$B_REL_VBN(R4),R1		; GET CURRENT RELATIVE BLOCK

            6A            05     E0  012A   358 	BBS	#DEV$V_SQD,IFB$L_PRIM_DEV(R10),MTABLS	; BRANCH IF MAGTAPE

                          13         012D       

            57         38 AA     3C  012E   359 	MOVZWL	IFB$W_DEVBUFSIZ(R10),R7		; GET LENGTH OF BLOCK

            51            57     A4  0132   360 	MULW2	R7,R1				; CONVERT TO BUFFER OFFSET

            51         14 A4     C0  0135   361 SETR1:	ADDL2	BDB$L_ADDR(R4),R1		; GET BUFFER ADDR FOR BLOCK

         24 A4            51     D0  0139   362 	MOVL	R1,BDB$L_CURBUFADR(R4)		; SAVE CURRENT BUFFER ADDRESS

            57            51     C0  013D   363 	ADDL2	R1,R7				; SET ENDING ADDRESS

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page  11

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



                                 05  0140   364 EXIT:	RSB					; AND RETURN

                                     0141   365 ;

                                     0141   366 ;  SET BLOCK SIZE FOR MAGTAPE (IT MAY HAVE BEEN A SHORT BLOCK)

                                     0141   367 ;

            57         10 A4     3C  0141   368 MTABLS:	MOVZWL	BDB$W_NUMB(R4),R7		; SET BLOCK SIZE FROM # BYTES READ

                          EE     11  0145   369 	BRB	SETR1				; REJOIN COMMON CODE

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page  12

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



                                     0147   371 ;

                                     0147   372 ;  ENTRY TO MAP BLOCK POINTED TO BY IRB$L_CURBDB

                                     0147   373 ;

                                     0147   374 RM$MAPCURBLK1::

            54         20 A9     D0  0147   375 	MOVL	IRB$L_CURBDB(R9),R4		; GET CURRENT BDB ADDR

                          D9     11  014B   376 	BRB	RM$MAPBLK1ALT

                                     014D   377 

                                     014D   378 ;

                                     014D   379 ;  THIS IS A "NO READ" REQUEST (TO GET A BUFFER FOR A WRITE OPERATION).

                                     014D   380 ;  CHECK FOR PAST HIGH BLOCK AND, IF SO, ALLOCATE THE FILE SPACE NOW, BEFORE

                                     014D   381 ;  THE BUFFER IS USED.

                                     014D   382 ;

                                     014D   383 CHK_EXTEND:

         18 A4         40 AA     C3  014D   384 	SUBL3	IFB$L_HBK(R10),BDB$L_VBN(R4),R2	; CALC # OF BLKS PAST HBK

                          52         0152       

                          C8     1B  0153   385 	BLEQU	SET_NUMB			; BRANCH IF NOT PAST HBK

                          53     DD  0155   386 	PUSHL	R3				; SAVE FLAGS

                          FEA6'  30  0157   387 	BSBW	RM$AUTOEXTEND			; GO DO THE EXTEND

                          08     BA  015A   388 	POPR	#^M<R3>				; RESTORE FLAGS

            BE            50     E8  015C   389 	BLBS	R0,SET_NUMB			; BRANCH ON SUCCESS

                                     015F   390 						; FALL THRU TO HANDLE ERROR

                                     015F   391 

                                     015F   392 ;

                                     015F   393 ;  RM$AUTOEXTEND OR RM$SEQRD RETURNED AN ERROR

                                     015F   394 ; CHECK FOR EOF ERROR AND IF EOF CHECK FOR NON-ZERO

                                     015F   395 ; XFER SIZE, IN WHICH CASE RETURN THE PARTIAL BUFFER

                                     015F   396 ;

                                     015F   397 ERRXFR:

                                     015F   398 

                                     015F   399 	$PSECT_BR	L$RMS1GET

                          FE9E'  31  015F       		BRW	L$RMS1GET0

                                     0162       		.SAVE

                                 00000000       		.PSECT	L$RMS1GET,GBL,NOWRT

                                     0000       L$RMS1GET0:

       827A 8F            50     B1  0000   400 	CMPW	R0,#RMS$_EOF&^XFFFF		; IS ERROR EOF?

                          29     12  0005   401 	BNEQ	10$				; BRANCH IF NOT

         10 A4         0E A9     B0  0007   402 	MOVW	IRB$W_IOS2(R9),BDB$W_NUMB(R4)	; SET XFER SIZE IN BDB

                          15     13  000C   403 	BEQL	5$				; AND BRANCH IF ZERO

                                     000E   404 

                                     000E   405 ;

                                     000E   406 ; EOF WAS SEEN BUT SOME DATA WAS TRANSFERRED

                                     000E   407 ; COMPUTE THE NUMBER OF VALID BLOCKS

                                     000E   408 ;

         0A A4            01     88  000E   409 	BISB	#1@BDB$V_VAL,BDB$B_FLGS(R4)	; SAY BUFFER VALID

                       21 A4     96  0012   410 	INCB	BDB$B_VAL_VBNS(R4)		; SAY 1 BLOCK VALID

                                     0015   411 	RMSSUC					; INDICATE SUCCESS

            50            01     D0  0015       		MOVL	#1,R0

                       41 A9     95  0018   412 	TSTB	IRB$B_MBC(R9)			; MULTI-BLOCK BUFFER?

                          03     13  001B   413 	BEQL	1$				; BRANCH IF NOT

                                     001D   414 ;

                                     001D   415 ; RECOMPUTE # OF VALID BLOCKS FOR DISK (INTERGRAL # OF BLOCKS)

                                     001D   416 ;

                          00F3'  31  001D   417 	BRW	SET_VBNS

                          00FF'  31  0020   418 1$:	BRW	RM$MAPBLK1

                                     0023   419 ;

                                     0023   420 ; TRUE EOF

                                     0023   421 ;

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page  13

022             RM$NXTBLK1  -  GET NEXT BLOCK SEQUENTIAL ROUTIN                                                                  (1)



            6A   01100004 8F     D3  0023   422 5$:	BITL	#DEV$M_TRM!DEV$M_MBX!DEV$M_FOR,IFB$L_PRIM_DEV(R10)

                          04     12  002A   423 	BNEQ	10$				; DON'T LATCH EOF FOR TERMINAL,

                                     002C   424 						;  MAILBOX, OR FOREIGN DEVICES

                                     002C   425 	SSB	#IRB$V_EOF,(R9)			; ELSE SET EOF FLAG

            69            21     E2  002C       		BBSS	#IRB$V_EOF,(R9),30001$

                          00         002F       

                                     0030       30001$:

                          01     BB  0030   426 10$:	PUSHR	#^M<R0>

                          FFCB'  30  0032   427 	BSBW	RM$QUIET_SEQMBF			; FLUSH ALL RAH/WBH

            03            50     E9  0035   428 	BLBC	R0,20$				; BRANCH IF WBE ERRORS

                          01     BA  0038   429 	POPR	#^M<R0>

                                 05  003A   430 	RSB

                          02     BA  003B   431 20$:	POPR	#^M<R1>				; GET RID OF SAVED STATUS

                                 05  003D   432 	RSB					; AND EXIT

                                     003E   433 	$PSECT_RESTORE

                                 00000162       		.RESTORE

                                     0162   434 	.END

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page  14

SYMBOL TABLE                                                                                                                     (1)



$$.PSECT_EP    = 00000001            DEV$M_NET      = 00002000            IFB$C_BID      = 0000000B            

$$RMSTEST      = 0000001A            DEV$M_ODV      = 08000000            IFB$C_BLN        00000060            

$$RMS_PBUGCHK  = 00000010            DEV$M_RCK      = 40000000            IFB$C_BLN_IDX    00000060            

$$RMS_TBUGCHK  = 00000008            DEV$M_REC      = 00000001            IFB$C_BLN_REL    00000060            

$$RMS_UMODE    = 00000004            DEV$M_RND      = 10000000            IFB$C_BLN_SEQ    0000005C            

BDB$B_BID        00000008            DEV$M_RTM      = 20000000            IFB$C_DIR      = 00000003            

BDB$B_BLN        00000009            DEV$M_SDI      = 00000010            IFB$C_FHAEND     00000050            

BDB$B_FLGS       0000000A            DEV$M_SHR      = 00010000            IFB$C_IDX      = 00000002            

BDB$B_POST_CCTL  00000023            DEV$M_SPL      = 00000040            IFB$C_MAXORG   = 00000002            

BDB$B_PRE_CCTL   00000022            DEV$M_SQD      = 00000020            IFB$C_REL      = 00000001            

BDB$B_REL_VBN    00000020            DEV$M_SWL      = 02000000            IFB$C_SEQ      = 00000000            

BDB$B_USECNT     0000000B            DEV$M_TRM      = 00000004            IFB$K_BLN        00000060            

BDB$B_VAL_VBNS   00000021            DEV$M_WCK      = 80000000            IFB$K_BLN_IDX    00000060            

BDB$C_BID      = 0000000C            DEV$V_ALL      = 00000017            IFB$K_BLN_REL    00000060            

BDB$C_BLN        00000028            DEV$V_AVL      = 00000012            IFB$K_BLN_SEQ    0000005C            

BDB$K_BLN        00000028            DEV$V_CCL      = 00000001            IFB$K_FHAEND     00000050            

BDB$L_ADDR       00000014            DEV$V_DIR      = 00000003            IFB$L_ARGLST     00000018            

BDB$L_BLINK      00000004            DEV$V_DMT      = 00000015            IFB$L_ASBADDR    00000014            

BDB$L_CURBUFADR  00000024            DEV$V_ELG      = 00000016            IFB$L_AS_DEV     00000054            

BDB$L_FLINK      00000000            DEV$V_FOD      = 0000000E            IFB$L_BDB_BLNK   00000034            

BDB$L_IOSB       00000020            DEV$V_FOR      = 00000018            IFB$L_BDB_FLNK   00000030            

BDB$L_OWN        0000000C            DEV$V_GEN      = 00000011            IFB$L_BKPBITS    00000004            

BDB$L_VBN        00000018            DEV$V_IDV      = 0000001A            IFB$L_BWB        0000000C            

BDB$L_WAIT       0000001C            DEV$V_MBX      = 00000014            IFB$L_DVBN       00000058            

BDB$L_WK1        00000020            DEV$V_MNT      = 00000013            IFB$L_EBK        00000044            

BDB$M_AST_DCL  = 00000040            DEV$V_NET      = 0000000D            IFB$L_FRB_PTR    00000028            

BDB$M_DRT      = 00000002            DEV$V_ODV      = 0000001B            IFB$L_FWA_BDB    00000050            

BDB$M_IOP      = 00000004            DEV$V_RCK      = 0000001E            IFB$L_HBK        00000040            

BDB$M_LKDINWS  = 00000080            DEV$V_REC      = 00000000            IFB$L_IDX_PTR    00000054            

BDB$M_NOLOCATE = 00000010            DEV$V_RND      = 0000001C            IFB$L_IOS        0000000C            

BDB$M_PRM      = 00000008            DEV$V_RTM      = 0000001D            IFB$L_IOS4       00000010            

BDB$M_VAL      = 00000001            DEV$V_SDI      = 00000004            IFB$L_IRAB_LNK   0000001C            

BDB$M_WFO      = 00000020            DEV$V_SHR      = 00000010            IFB$L_LAST_FAB   00000024            

BDB$V_AST_DCL  = 00000006            DEV$V_SPL      = 00000006            IFB$L_LOCK_BDB   00000050            

BDB$V_DRT      = 00000001            DEV$V_SQD      = 00000005            IFB$L_MRN        00000054            

BDB$V_IOP      = 00000002            DEV$V_SWL      = 00000019            IFB$L_NRP_LNK    00000050            

BDB$V_LKDINWS  = 00000007            DEV$V_TRM      = 00000002            IFB$L_NWA_PTR    00000028            

BDB$V_NOLOCATE = 00000004            DEV$V_WCK      = 0000001F            IFB$L_PRIM_DEV   00000000            

BDB$V_PRM      = 00000003            ERRXFR           0000015F R     02   IFB$L_RLB_LNK    0000002C            

BDB$V_VAL      = 00000000            EXIT             00000140 R     02   IFB$L_RNS_LEN    00000050            

BDB$V_WFO      = 00000005            GBL...         = 00000000            IFB$M_BIO      = 00000020            

BDB$W_NUMB       00000010            IFB$B_AMAX       00000059            IFB$M_BRO      = 00000040            

BDB$W_SIZE       00000012            IFB$B_AVBN       00000058            IFB$M_DEL      = 00000004            

BIT...         = 0001C134            IFB$B_BID        00000008            IFB$M_EXE      = 00000080            

CHK_EXTEND       0000014D R     02   IFB$B_BKS        0000004A            IFB$M_GET      = 00000002            

DEV$M_ALL      = 00800000            IFB$B_BLN        00000009            IFB$M_PUT      = 00000001            

DEV$M_AVL      = 00040000            IFB$B_EFN        0000000B            IFB$M_TRN      = 00000010            

DEV$M_CCL      = 00000002            IFB$B_EXTRABUF   0000005D            IFB$M_UPD      = 00000008            

DEV$M_DIR      = 00000008            IFB$B_FAC        00000022            IFB$S_ORG      = 00000004            

DEV$M_DMT      = 00200000            IFB$B_FSZ        0000004B            IFB$S_RFM      = 00000004            

DEV$M_ELG      = 00400000            IFB$B_KBUFSZ     0000005C            IFB$V_ACCESSED = 00000025            

DEV$M_FOD      = 00004000            IFB$B_MODE       0000000A            IFB$V_ANSI_D   = 00000026            

DEV$M_FOR      = 01000000            IFB$B_NUM_KEYS   0000005A            IFB$V_ASYNC    = 00000023            

DEV$M_GEN      = 00020000            IFB$B_ORGCASE    00000023            IFB$V_ASYNCWAIT= 00000024            

DEV$M_IDV      = 04000000            IFB$B_RAT        0000003D            IFB$V_BIO      = 00000005            

DEV$M_MBX      = 00100000            IFB$B_RFMORG     0000003C            IFB$V_BRO      = 00000006            

DEV$M_MNT      = 00080000            IFB$B_UBUFSZ     0000005B            IFB$V_BUSY     = 00000020            

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                     (1)



IFB$V_CREATE   = 00000032            IRB$B_RP_KREF    00000039            IRB$V_RAHWBH   = 0000002A            

IFB$V_DAP      = 0000003E            IRB$B_RRV_ID     00000050            IRB$V_SKIP_NEXT= 0000002B            

IFB$V_DAP_OPEN = 0000003D            IRB$B_SRCHFLAGS  00000043            IRB$V_SRCHGT   = 00000001            

IFB$V_DEL      = 00000002            IRB$B_STOPLEVEL  00000042            IRB$V_UNLOCK_RP= 0000002D            

IFB$V_DFW      = 0000002C            IRB$C_BID      = 0000000A            IRB$V_WRITE    = 00000029            

IFB$V_DLT      = 0000002B            IRB$C_BLN_IDX    0000006C            IRB$W_CSIZ       00000042            

IFB$V_DMO      = 00000028            IRB$C_BLN_REL    00000048            IRB$W_DUP_POS    00000032            

IFB$V_EOF      = 00000021            IRB$C_BLN_SEQ    0000004C            IRB$W_IOS2       0000000E            

IFB$V_EXE      = 00000007            IRB$K_BLN_IDX    0000006C            IRB$W_NRP_OFF    00000030            

IFB$V_GET      = 00000001            IRB$K_BLN_REL    00000048            IRB$W_OWN_ID     0000003C            

IFB$V_MSE      = 00000031            IRB$K_BLN_SEQ    0000004C            IRB$W_OWN_ISI    0000003E            

IFB$V_NORECLK  = 00000033            IRB$L_ARGLST     00000018            IRB$W_ROVHDSZ    00000044            

IFB$V_NSP      = 0000003F            IRB$L_ASBADDR    00000014            IRB$W_RP_OFF     00000038            

IFB$V_NWA      = 0000003C            IRB$L_BKPBITS    00000004            IRB$W_RTOTLSZ    00000046            

IFB$V_ORG      = 00000004            IRB$L_BWB        0000000C            IRB$W_SAVE_POS   00000052            

IFB$V_PPF_IMAGE= 00000022            IRB$L_CURBDB     00000020            L$RMS1GET0       00000000 R     04   

IFB$V_PPF_INPUT= 0000002E            IRB$L_CURVBN     00000030            MTABLS           00000141 R     02   

IFB$V_PUT      = 00000000            IRB$L_IFAB_LNK   00000000            PIO$GL_FMLH      ********   X   02   

IFB$V_RFM      = 00000000            IRB$L_IOS        0000000C            RAB$B_BID        00000000            

IFB$V_RWC      = 00000027            IRB$L_IOS4       00000010            RAB$B_BLN        00000001            

IFB$V_RW_ATTR  = 00000034            IRB$L_IRAB_LNK   0000001C            RAB$B_KRF        00000035            

IFB$V_SCF      = 0000002A            IRB$L_KEYBUF     00000048            RAB$B_KSZ        00000034            

IFB$V_SPL      = 00000029            IRB$L_LAST_RAB   00000024            RAB$B_MBC        00000037            

IFB$V_SQO      = 0000002D            IRB$L_LOCK_BDB   0000005C            RAB$B_MBF        00000036            

IFB$V_TEF      = 00000036            IRB$L_NRP        0000002C            RAB$B_PSZ        00000034            

IFB$V_TMP      = 00000035            IRB$L_NRP_OFF    00000030            RAB$B_RAC        0000001E            

IFB$V_TRN      = 00000004            IRB$L_NRP_VBN    0000002C            RAB$B_ROP1       00000005            

IFB$V_UPD      = 00000003            IRB$L_NXTBDB     00000028            RAB$B_ROP2       00000006            

IFB$V_WRTACC   = 00000030            IRB$L_OWNER_ID   0000003C            RAB$B_ROP3       00000007            

IFB$W_ASDEVBSIZ  0000005A            IRB$L_RFA_VBN    00000054            RAB$B_TMO        0000001F            

IFB$W_BKS_BYTES  0000005C            IRB$L_RLB_ADDR   00000044            RAB$C_BID      = 00000001            

IFB$W_BKS_RECS   0000005E            IRB$L_RP         00000034            RAB$C_BLN        00000044            

IFB$W_CHNL       00000020            IRB$L_RP_OFF     00000038            RAB$C_KEY      = 00000001            

IFB$W_DEQ        0000004E            IRB$L_RP_VBN     00000034            RAB$C_RFA      = 00000002            

IFB$W_DEVBUFSIZ  00000038            IRB$L_RRV_VBN    0000004C            RAB$C_SEQ      = 00000000            

IFB$W_EBK0       00000044            IRB$L_TEMP0      00000044            RAB$K_BLN        00000044            

IFB$W_EBK2       00000046            IRB$L_TEMP1      00000048            RAB$L_BKT        00000038            

IFB$W_FFB        00000048            IRB$V_ASYNC    = 00000023            RAB$L_CTX        00000018            

IFB$W_IOS2       0000000E            IRB$V_ASYNCWAIT= 00000024            RAB$L_DCT        00000038            

IFB$W_LRL        0000003E            IRB$V_BIO_LAST = 00000027            RAB$L_FAB        0000003C            

IFB$W_MRS        0000004C            IRB$V_BRO_SW   = 00000028            RAB$L_KBF        00000030            

IFB$W_RTDEQ      0000003A            IRB$V_BUSY     = 00000020            RAB$L_PBF        00000030            

IRB$B_BCNT       00000040            IRB$V_DAP_CONN = 0000003E            RAB$L_RBF        00000028            

IRB$B_BID        00000008            IRB$V_DAP_FMODE= 0000003F            RAB$L_RFA0       00000010            

IRB$B_BLN        00000009            IRB$V_DUP      = 0000002C            RAB$L_RHB        0000002C            

IRB$B_EFN        0000000B            IRB$V_EOF      = 00000021            RAB$L_ROP        00000004            

IRB$B_KEYSZ      00000051            IRB$V_FIND     = 00000029            RAB$L_STS        00000008            

IRB$B_MBC        00000041            IRB$V_FIND_LAST= 00000025            RAB$L_STV        0000000C            

IRB$B_MODE       0000000A            IRB$V_IDX_ERR  = 00000031            RAB$L_UBF        00000024            

IRB$B_NRP_ID     00000030            IRB$V_LOCKABOVE= 00000002            RAB$M_ASY      = 00000001            

IRB$B_NRP_KREF   00000031            IRB$V_NEW_IDX  = 00000003            RAB$M_BIO      = 00000800            

IRB$B_NVBNS      00000048            IRB$V_POSINSERT= 00000000            RAB$M_CCO      = 80000000            

IRB$B_POST_CCTL  00000045            IRB$V_PPF_EOF  = 0000002E            RAB$M_CVT      = 04000000            

IRB$B_PPF_ISI    0000003E            IRB$V_PPF_FNDSV= 00000030            RAB$M_EOF      = 00000100            

IRB$B_PRE_CCTL   00000044            IRB$V_PPF_IMAGE= 00000022            RAB$M_FDL      = 00000040            

IRB$B_RFA_ID     00000058            IRB$V_PPF_SKIP = 0000002F            RAB$M_HSH      = 00000080            

IRB$B_RP_ID      00000038            IRB$V_PUTS_LAST= 00000026            RAB$M_KGE      = 00200000            

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page  16

SYMBOL TABLE                                                                                                                     (1)



RAB$M_KGT      = 00400000            RELEASE          00000063 R     02   RMS$_DEL       = 00018262            

RAB$M_LIM      = 00004000            RM$AUTOEXTEND    ********   X   02   RMS$_DEV       = 000184C4            

RAB$M_LOA      = 00002000            RM$GETBLK1       000000EB RG    02   RMS$_DIR       = 000184CC            

RAB$M_LOC      = 00010000            RM$GETBLK1ALT    000000FF RG    02   RMS$_DME       = 000184D4            

RAB$M_MAS      = 00000020            RM$GETBLKNRP     0000000C RG    02   RMS$_DNA       = 000184DC            

RAB$M_NLK      = 00100000            RM$MAPBLK1       00000122 RG    02   RMS$_DNF       = 0001C04A            

RAB$M_NXR      = 00800000            RM$MAPBLK1ALT    00000126 RG    02   RMS$_DNR       = 00018272            

RAB$M_PMT      = 40000000            RM$MAPCURBLK1    00000147 RG    02   RMS$_DPE       = 0001C03A            

RAB$M_PPF_IND  = 00004000            RM$NXTBLK1       00000000 RG    02   RMS$_DTP       = 000184E4            

RAB$M_PPF_RAT  = 00003FC0            RM$QUIET_SEQMBF  ********   X   04   RMS$_DUP       = 000184EC            

RAB$M_PTA      = 20000000            RM$RELBLK1       ********   X   02   RMS$_DVI       = 000184F4            

RAB$M_RAH      = 00000200            RM$SEQFLNKBDB    ********   X   02   RMS$_ENT       = 0001C01A            

RAB$M_RLK      = 00080000            RM$SEQRAH        ********   X   02   RMS$_ENV       = 00018724            

RAB$M_RNE      = 01000000            RM$SEQRD         ********   X   02   RMS$_EOF       = 0001827A            

RAB$M_RNF      = 08000000            RM$STALLRAHWBH   ********   X   02   RMS$_ESA       = 000184FC            

RAB$M_TMO      = 02000000            RMS$V_STVSTATUS= 0000000E            RMS$_ESL       = 00018714            

RAB$M_TPT      = 00000002            RMS$_ABO       = 000183EC            RMS$_ESS       = 00018504            

RAB$M_UIF      = 00000010            RMS$_ACC       = 0001C002            RMS$_EXP       = 000182C2            

RAB$M_ULK      = 00040000            RMS$_ACT       = 0001825A            RMS$_EXT       = 0001C022            

RAB$M_WAT      = 00020000            RMS$_AID       = 000183F4            RMS$_FAB       = 0001850C            

RAB$M_WBH      = 00000400            RMS$_ALN       = 000183FC            RMS$_FAC       = 00018514            

RAB$S_PPF_RAT  = 00000008            RMS$_ALQ       = 00018404            RMS$_FEX       = 00018282            

RAB$V_ASY      = 00000000            RMS$_ANI       = 0001840C            RMS$_FLG       = 0001851C            

RAB$V_BIO      = 0000000B            RMS$_AOP       = 00018414            RMS$_FLK       = 0001828A            

RAB$V_CCO      = 0000001F            RMS$_ATR       = 0001C0CC            RMS$_FNA       = 00018524            

RAB$V_CVT      = 0000001A            RMS$_ATW       = 0001C0D4            RMS$_FND       = 0001C02A            

RAB$V_EOF      = 00000008            RMS$_BKS       = 0001841C            RMS$_FNF       = 00018292            

RAB$V_FDL      = 00000006            RMS$_BKZ       = 00018424            RMS$_FNM       = 0001852C            

RAB$V_HSH      = 00000007            RMS$_BLN       = 0001842C            RMS$_FOP       = 0001853C            

RAB$V_KGE      = 00000015            RMS$_BOF       = 00018198            RMS$_FSZ       = 00018534            

RAB$V_KGT      = 00000016            RMS$_BUG       = 00018434            RMS$_FUL       = 00018544            

RAB$V_LIM      = 0000000E            RMS$_BUG_DAP   = 00018444            RMS$_IAL       = 0001854C            

RAB$V_LOA      = 0000000D            RMS$_BUG_DDI   = 0001843C            RMS$_IAN       = 00018554            

RAB$V_LOC      = 00000010            RMS$_BUG_XX2   = 0001844C            RMS$_IBF       = 00018754            

RAB$V_MAS      = 00000005            RMS$_BUG_XX3   = 00018454            RMS$_IDX       = 0001855C            

RAB$V_NLK      = 00000014            RMS$_BUG_XX4   = 0001845C            RMS$_IFA       = 0001C124            

RAB$V_NXR      = 00000017            RMS$_BUG_XX5   = 00018464            RMS$_IFI       = 00018564            

RAB$V_PMT      = 0000001E            RMS$_BUG_XX6   = 0001846C            RMS$_IMX       = 0001856C            

RAB$V_PPF_IND  = 0000000E            RMS$_BUG_XX7   = 00018474            RMS$_IOP       = 00018574            

RAB$V_PPF_RAT  = 00000006            RMS$_BUG_XX8   = 0001847C            RMS$_IRC       = 0001857C            

RAB$V_PTA      = 0000001D            RMS$_BUG_XX9   = 00018484            RMS$_ISI       = 00018584            

RAB$V_RAH      = 00000009            RMS$_CAA       = 0001848C            RMS$_KBF       = 0001858C            

RAB$V_RLK      = 00000013            RMS$_CCF       = 0001C0DC            RMS$_KEY       = 00018594            

RAB$V_RNE      = 00000018            RMS$_CCR       = 00018494            RMS$_KFF       = 00018031            

RAB$V_RNF      = 0000001B            RMS$_CDA       = 0001C0E4            RMS$_KRF       = 0001859C            

RAB$V_TMO      = 00000019            RMS$_CHG       = 0001849C            RMS$_KSZ       = 000185A4            

RAB$V_TPT      = 00000001            RMS$_CHK       = 000184A4            RMS$_LAN       = 000185AC            

RAB$V_UIF      = 00000004            RMS$_CHN       = 0001C0EC            RMS$_LBL       = 000185B4            

RAB$V_ULK      = 00000012            RMS$_COD       = 000184AC            RMS$_LNE       = 000185BC            

RAB$V_WAT      = 00000011            RMS$_CONTROLC  = 00010651            RMS$_LOC       = 000185C4            

RAB$V_WBH      = 0000000A            RMS$_CONTROLO  = 00010609            RMS$_MBC       = 00018734            

RAB$W_ISI        00000002            RMS$_CONTROLY  = 00010611            RMS$_MKD       = 0001C032            

RAB$W_RFA        00000010            RMS$_CRE       = 0001C00A            RMS$_MRN       = 000185CC            

RAB$W_RFA4       00000014            RMS$_CREATED   = 00010619            RMS$_MRS       = 000185D4            

RAB$W_RSZ        00000022            RMS$_CUR       = 000184B4            RMS$_NAM       = 000185DC            

RAB$W_USZ        00000020            RMS$_DAC       = 0001C012            RMS$_NEF       = 000185E4            

READAHEAD        0000006A R     02   RMS$_DAN       = 000184BC            RMS$_NET       = 0001874C            

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page  17

SYMBOL TABLE                                                                                                                     (1)



RMS$_NID       = 000185EC            RMS$_SYS       = 0001C10C            

RMS$_NMF       = 000182CA            RMS$_TEMP1     = 0001826A            

RMS$_NOD       = 000185F4            RMS$_TEMP2     = 0001868C            

RMS$_NORMAL    = 00010001            RMS$_TMO       = 000181B0            

RMS$_NPK       = 000185FC            RMS$_TRE       = 000186DC            

RMS$_OK_ALK    = 00018039            RMS$_TYP       = 000186E4            

RMS$_OK_DEL    = 00018041            RMS$_UBF       = 000186EC            

RMS$_OK_DUP    = 00018011            RMS$_USZ       = 000186F4            

RMS$_OK_IDX    = 00018019            RMS$_VER       = 000186FC            

RMS$_OK_LIM    = 00018051            RMS$_VOL       = 00018704            

RMS$_OK_RLK    = 00018021            RMS$_WBE       = 0001C12C            

RMS$_OK_RNF    = 00018049            RMS$_WER       = 0001C114            

RMS$_OK_RRV    = 00018029            RMS$_WLD       = 00018744            

RMS$_ORD       = 00018604            RMS$_WLK       = 000182BA            

RMS$_ORG       = 0001860C            RMS$_WPL       = 0001C11C            

RMS$_PBF       = 00018614            RMS$_WSF       = 0001871C            

RMS$_PENDING   = 00018009            RMS$_XAB       = 0001870C            

RMS$_PLG       = 0001861C            ROP            = 00000020            

RMS$_PLV       = 0001872C            SETR1            00000135 R     02   

RMS$_POS       = 00018624            SET_NUMB         0000011D R     02   

RMS$_PRM       = 0001862C            SET_VBNS         00000113 R     02   

RMS$_PRV       = 0001829A            TPT$L_NXTBLK1    ********   X   02   

RMS$_QUO       = 00018634            

RMS$_RAB       = 0001863C            

RMS$_RAC       = 00018644            

RMS$_RAT       = 0001864C            

RMS$_RBF       = 00018654            

RMS$_RER       = 0001C0F4            

RMS$_REX       = 000182A2            

RMS$_RFA       = 0001865C            

RMS$_RFM       = 00018664            

RMS$_RHB       = 0001866C            

RMS$_RLF       = 00018674            

RMS$_RLK       = 000182AA            

RMS$_RMV       = 0001C0FC            

RMS$_RNF       = 000182B2            

RMS$_RNL       = 000181A0            

RMS$_ROP       = 0001867C            

RMS$_RPL       = 0001C104            

RMS$_RRV       = 00018684            

RMS$_RSA       = 000182DA            

RMS$_RSL       = 0001873C            

RMS$_RSS       = 00018694            

RMS$_RST       = 0001869C            

RMS$_RSZ       = 000186A4            

RMS$_RTB       = 000181A8            

RMS$_SEQ       = 000186AC            

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            

RM1NXTBLK       GET NEXT BLOCK FOR SEQUENTIAL FILE ORG           21-AUG-1978 21:42:45   VAX-11 MACRO X0.3-11               Page  18

PROGRAM SECTION SYNOPSIS                                                                                                         (1)







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  

$RMS1            00000162      02     NOPIC   USR   CON   REL   GBL NOSHR   EXE   RD  NOWRT QUAD  

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

L$RMS1GET        0000003E      04     NOPIC   USR   CON   REL   GBL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

10568. BYTES LEFT IN FREE MEMORY POOL.

2392. BYTES OF RECLAIMED MEMORY.

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

27 MLB DIR RDS - 987 GETS TO DEFINE 24 MACROS. 72 INTER. FILE WRITES. 

