SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (1)    3700  DECLARATIONS

   (2)     100  UPDSEC - Update Section File

   (3)      50  UPDSECPAG - Update Section for First Cluster of

   (4)     100  UPDSECAST - Update Section AST

   (6)     100  UPDSECQWT - Update Section File for Single Page

   (8)     100  WRTPGSBAK - Write Pages Back to Disk

   (10)    100  PTEPFNMFY - Get PFN and Modify bit from PTE

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   1

X0106                                                                                                                            (1)



                                     0000   100 	.TITLE	SYSUPDSEC - Update Section File System Service

                                     0000   200 	.IDENT	/X0106/

                                     0000   300 ;

                                     0000   400 ; COPYRIGHT (C) 1978

                                     0000   500 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000   600 ;

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

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

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

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

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

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

                                     0000  1300 ; REMAIN IN DEC.

                                     0000  1400 ;

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

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

                                     0000  1700 ; CORPORATION.

                                     0000  1800 ;

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

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

                                     0000  2100 

                                     0000  2200 ;++

                                     0000  2300 ; FACILITY:

                                     0000  2400 ;

                                     0000  2500 ; ABSTRACT:

                                     0000  2600 ;

                                     0000  2700 ; ENVIRONMENT:

                                     0000  2800 ;

                                     0000  2900 ; AUTHOR: PETER H. LIPMAN	, CREATION DATE: 21-APR-78

                                     0000  3000 ;

                                     0000  3100 ; MODIFIED BY:

                                     0000  3200 ;

                                     0000  3300 ;	, : VERSION

                                     0000  3400 ; 01	- 

                                     0000  3500 ;--

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   2

X0106           DECLARATIONS                                                                                                     (1)



                                     0000  3700 	.SBTTL	DECLARATIONS

                                     0000  3800 ;

                                     0000  3900 ; INCLUDE FILES:

                                     0000  4000 ;

                                     0000  4100 	$ACBDEF				;AST control block definitions

                                     0000  4200 	$CADEF				;Conditional assembly definitions

                                     0000  4250 	$DYNDEF				;Dynamic data structure type codes

                                     0000  4300 	$IRPDEF				;I/O request packet definitions

                                     0000  4400 	$IPLDEF				;Processor priority levels

                                     0000  4500 	$PCBDEF				;Process control block definitions

                                     0000  4600 	$PFNDEF				;Page frame number data base definitions

                                     0000  4700 	$PHDDEF				;Process header definitions

                                     0000  4800 	$PRDEF				;Processor register definitions

                                     0000  4900 	$PRIDEF				;Priority increment class definitions

                                     0000  4950 	$PSLDEF				;Processor Status Long Word definitions

                                     0000  5000 	$PTEDEF				;Page table entry definitions

                                     0000  5100 	$RSNDEF				;Resource definitions

                                     0000  5200 	$SSDEF				;System status code definitions

                                     0000  5300 	$VADEF				;Virtual address field definitions

                                     0000  5400 ;

                                     0000  5500 ; MACROS:

                                     0000  5600 ;

                                     0000  5700 

                                     0000  5800 ;

                                     0000  5900 ; EQUATED SYMBOLS:

                                     0000  6000 ;

                                     0000  6100 ; Offset from AP

                                     0000  6200 ;

                           00000004  0000  6300 	INADR		= 4		;Offset to input range

                           00000008  0000  6400 	RETADR		= 8		;Offset to return range

                           0000000C  0000  6500 	ACMODE		= 12		;Access Mode

                           00000010  0000  6600 	FLAGS		= 16		;Flags parameter

                           00000014  0000  6700 	EFN		= 20		;QI/O Event Flag

                           00000018  0000  6800 	IOSB		= 24		;QI/O I/O Status Block Address

                           0000001C  0000  6900 	ASTADR		= 28		;QI/O AST address

                           00000020  0000  7000 	ASTPRM		= 32		;QI/O AST parameter

                                     0000  8300 ;

                                     0000  8400 ; Offsets into I/O packet while being used as scratch storage for clustering

                                     0000  8500 ;

                                     0000  8600 	$OFFSET	0,POSITIVE,<-

                                     0000  8700 		SVAPTE,-		;Master page table entry address

                                     0000  8800 		PTEDAT,-		;Process PTE data

                                     0000  8900 		<,3>,-

                                     0000  9000 		<IRP_RMOD,1>,-		;Request mode

                                     0000  9100 		MFYCNT,-		;Cluster count at last modified page

                                     0000  9200 		IRP_AST,-		;Ast address

                                     0000  9300 		IRP_ASTPRM,-		;Ast parameter

                                     0000  9400 		CLUSTER,-		;Maximum size of cluster to scan for

                                     0000  9500 		COUNT,-			;Number of pages scanned

                                     0000  9600 		<EXCLWRT,1>,-		;Exclusive write access flag

                                     0000  9700 		<,1>,-

                                     0000  9800 		<IRP_EFN,1>,-		;Event flag

                                     0000  9900 		<IRP_PRI,1>,-		;Priority

                                     0000 10000 		IRP_IOSB,-		;I/O status block address

                                     0000 10100 		INC1,-			;+ or - 1 according to direction

                                     0000 10200 		INC4,-			;+ or - 4 according to direction

                                     0000 10300 		BAK,-			;Backing store address of first PTE

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   3

X0106           DECLARATIONS                                                                                                     (1)



                                     0000 10310 		<IRP_IOST1,8>,-		;I/O status return area

                                     0000 10320 		PROCPTE,-		;Process page table entry address

                                     0000 10330 		IRP_SEGVBN,-		;Starting virtual address of scan

                                     0000 10400 		<IRP_LENGTH,0>-		;Total size of scratch area used

                                     0000 10500 		>

                                     0000       SVAPTE:

                                     0004       PTEDAT:

                                     000B       IRP_RMOD:

                                     000C       MFYCNT:

                                     0010       IRP_AST:

                                     0014       IRP_ASTPRM:

                                     0018       CLUSTER:

                                     001C       COUNT:

                                     0020       EXCLWRT:

                                     0022       IRP_EFN:

                                     0023       IRP_PRI:

                                     0024       IRP_IOSB:

                                     0028       INC1:

                                     002C       INC4:

                                     0030       BAK:

                                     0034       IRP_IOST1:

                                     003C       PROCPTE:

                                     0040       IRP_SEGVBN:

                                     0044       IRP_LENGTH:

                                     0000 10600 

                                     0000 10700 	ASSUME	IRP_LENGTH	LE IRP$C_LENGTH

                                     0000 10800 	ASSUME	IRP_RMOD	EQ IRP$B_RMOD

                                     0000 10900 	ASSUME	IRP_AST		EQ IRP$L_AST

                                     0000 11000 	ASSUME	IRP_ASTPRM	EQ IRP$L_ASTPRM

                                     0000 11100 	ASSUME	IRP_EFN		EQ IRP$B_EFN

                                     0000 11200 	ASSUME	IRP_PRI		EQ IRP$B_PRI

                                     0000 11300 	ASSUME	IRP_IOSB	EQ IRP$L_IOSB

                                     0000 11310 	ASSUME	IRP_IOST1	EQ IRP$L_IOST1

                                     0000 11320 	ASSUME	IRP_SEGVBN	EQ IRP$L_SEGVBN

                                     0000 11400 ;

                                     0000 11500 ; Offsets off the end of the I/O request packet

                                     0000 11600 ;

                                     0000 11700 	$OFFSET	IRP$C_LENGTH,POSITIVE,<-

                                     0000 11800 		XIP_L_SCANCNT,-		;Count - 1 of pages remaining to scan

                                     0000 11900 		XIP_L_DIREC,-		;+ OR - 200 according to the direction

                                     0000 12000 		XIP_L_STARTVA,-		;Starting virtual address to scan

                                     0000 12100 		<XIP_B_UPDFLG,1>,-	;Section update flags

                                     0000 12200 		<,3>,-			;Spare

                                     0000 12300 		<XIP_C_LENGTH,0> -	;Length of extended I/O packet

                                     0000 12400 		>

                                     004C       XIP_L_SCANCNT:

                                     0050       XIP_L_DIREC:

                                     0054       XIP_L_STARTVA:

                                     0058       XIP_B_UPDFLG:

                                     005C       XIP_C_LENGTH:

                                     0000 12500 ;

                                     0000 12600 ; OWN STORAGE:

                                     0000 12700 ;

                                     0000 12800 	.LIST	MEB

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   4

X0106           UPDSEC - Update Section File                                                                                     (2)



                                     0000   100 	.SBTTL	UPDSEC - Update Section File

                                     0000   200 ;++

                                     0000   300 ; FUNCTIONAL DESCRIPTION:

                                     0000   400 ;

                                     0000   500 ; CALLING SEQUENCE:

                                     0000   600 ;

                                     0000   700 ;	CALLG	ARGLIST,G^SYS$UPDSEC

                                     0000   800 ;

                                     0000   900 ;

                                     0000  1000 ; INPUT PARAMETERS:

                                     0000  1100 ;

                                     0000  1200 ;	INADR(AP) = Address of 2 long words the 1st of which specifies

                                     0000  1300 ;		the starting virtual address, the 2nd specifies the ending

                                     0000  1400 ;		virtual address (inclusive) of the pages to operate on.

                                     0000  1500 ;	RETADR(AP) = Address of a 2 longword array into which is returned

                                     0000  1600 ;		the starting and ending virtual addresses (inclusive)

                                     0000  1700 ;		of the pages operated on.

                                     0000  1800 ;	ACMODE(AP) = The access mode (maximized with calling mode)

                                     0000  1900 ;		against which the page ownership is checked.

                                     0000  2000 ;		Only the owner of a page may update its section.

                                     0000  2100 ;	FLAGS(AP)  = Update section control flags

                                     0000  2200 ;	EFN(AP)    = Event flag number to set on write complete

                                     0000  2300 ;	IOSB(AP)   = I/O status block address for reporting the

                                     0000  2400 ;		     write completion and its status

                                     0000  2500 ;			First word contains the system status.

                                     0000  2600 ;			If error status is returned in the first word,

                                     0000  2700 ;		     the first bit of the 2nd word (bit 16 of the first

                                     0000  2800 ;		     long word) will be set if a write error occurred.

                                     0000  2900 ;		     Other errors (e.g. page owner violation) are possible.

                                     0000  3000 ;			The second long word contains the first virtual

                                     0000  3100 ;		     address not written.

                                     0000  3200 ;	ASTADR(AP) = AST address for reporting write completion

                                     0000  3300 ;	ASTPRM(AP) = AST parameter for identifying the AST

                                     0000  3400 ;

                                     0000  3500 ; IMPLICIT INPUTS:

                                     0000  3600 ;

                                     0000  3700 ;	NONE

                                     0000  3800 ;

                                     0000  3900 ; OUTPUT PARAMETERS:

                                     0000  4000 ;

                                     0000  4100 ;	R0 = System Status Code

                                     0000  4200 ;

                                     0000  4300 ; IMPLICIT OUTPUTS:

                                     0000  4400 ;

                                     0000  4500 ;	NONE

                                     0000  4600 ;

                                     0000  4700 ; COMPLETION CODES:

                                     0000  4800 ;

                                     0000  4900 ;	SS$_NORMAL			;Successful Completion

                                     0000  5000 ;	SS$_ACCVIO			;Access Violation

                                     0000  5100 ;	SS$_PAGOWNVIO			;Page Owner Violation

                                     0000  5200 ;	SS$_EXQUOTA			;Quota exceeded for pending AST's

                                     0000  5300 ;	SS$_IVSECFLG			;Invalid flags set

                                     0000  5400 ;

                                     0000  5500 ; SIDE EFFECTS:

                                     0000  5600 ;

                                     0000  5700 ;	NONE

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   5

X0106           UPDSEC - Update Section File                                                                                     (2)



                                     0000  5800 ;

                                     0000  5900 ;--

                                     0000  6000 ;

                                     0000  6100 ; **********************************************************************

                                     0000  6200 ;

                                     0000  6300 ; **************** THE FOLLOWING CODE MAY BE PAGED *****************

                                     0000  6400 ;

                                 00000000  6500 	.PSECT	Y$EXEPAGED

                                     0000  6600 ;

                                     0000  6700 ; **********************************************************************

                                     0000  6800 ;

                               01FC' 0000  6900 	.ENTRY	EXE$UPDSEC,^M<R2,R3,R4,R5,R6,R7,R8>

                                     0002  7000 

            5E            00'    C2  0002  7100 	SUBL	S^#CDL$C_LENGTH,SP	;Reserve area indexed from FP

            58            54     D0  0005  7200 	MOVL	R4,R8			;Save PCB address

                          FFF5'  30  0008  7300 	BSBW	MMG$INADRINI		;Get input address range to R4,R5

                                     000B  7400 					;Init return range to null

                          30     BB  000B  7500 	PUSHR	#^M<R4,R5>		;Save input address range

            54            58     D0  000D  7600 	MOVL	R8,R4			;Restore PCB address

            53         14 AC     9A  0010  7700 	MOVZBL	EFN(AP),R3		;Get the event flag parameter

                 00000000'EF     16  0014  7800 	JSB	SCH$CLREF		;Clear the specified event flag

            6F            50     E9  001A  7900 	BLBC	R0,50$			;Branch if error, bad event flag

            56         18 AC     D0  001D  8000 	MOVL	IOSB(AP),R6		;Get I/O status block address

                          08     13  0021  8100 	BEQL	20$			;Branch if none specified

                                     0023  8200 	IFNOWRT	#8,(R6),70$		;Make sure caller could write it

            08            00     0D  0023       		PROBEW	#0,#8,(R6)

                          66         0026       

                          6B     13  0027       		BEQL	70$

                          66     7C  0029  8300 	CLRQ	(R6)			;and initialize it

            57         10 AC     D0  002B  8400 20$:	MOVL	FLAGS(AP),R7		;Get FLAGS parameter

            01            57     D1  002F  8500 	CMPL	R7,#1			;Make sure no garbage bits are set

                          59     1A  0032  8600 	BGTRU	60$			;Branch if invalid section flags

            51   0000005C 8F     D0  0034  8700 	MOVL	#XIP_C_LENGTH,R1	;Size of packet to allocate

                 00000000'EF     16  003B  8800 	JSB	EXE$ALLOCBUF		;Allocate, wait if necessary

                                     0041  8900 					;Packet type is corrected by WRTPGSBAK

            53            50     E9  0041  9000 	BLBC	R0,80$			;Branch if failed to alloc

                                     0044  9100 					;and resource wait disabled

                                     0044  9200 ;

                                     0044  9300 ; IPL = ASTDEL, I/O request packet allocated

                                     0044  9400 ;

            58            52     D0  0044  9500 	MOVL	R2,R8			;Packet address to stable registter

            52         44 A4     9E  0047  9600 	MOVAB	PCB$W_DIOCNT(R4),R2	;Check for Direct I/O quota

                 00000000'EF     16  004B  9700 	JSB	EXE$SNGLEQUOTA		;and wait if none available

            47            50     E9  0051  9800 	BLBC	R0,120$			;Branch if exceeded quota

                                     0054  9900 					;and resource wait is disabled

            50         00'AD     9A  0054 10000 	MOVZBL	B^CDL$L_MAXACMODE(FP),R0 ;Get requesting mode

         10 A8         1C AC     7D  0058 10100 	MOVQ	ASTADR(AP),IRP$L_AST(R8) ;Set AST address and parameter

                       10 A8     D5  005D 10200 	TSTL	IRP$L_AST(R8)		;AST requested?

                          0C     13  0060 10300 	BEQL	40$			;Branch if not

                       3C A4     B5  0062 10400 	TSTW	PCB$W_ASTCNT(R4)	;Yes, quota exceeded?

                          34     15  0065 10500 	BLEQ	120$			;Branch if yes, don't wait

                       3C A4     B7  0067 10600 	DECW	PCB$W_ASTCNT(R4)	;Charge for the AST

            50         40 8F     88  006A 10700 	BISB	#ACB$M_QUOTA,R0		;And note that it is charged

         0B A8            50     90  006E 10800 40$:	MOVB	R0,IRP$B_RMOD(R8)	;Set requesting mode and AST flag

         22 A8         14 AC     90  0072 10900 	MOVB	EFN(AP),IRP$B_EFN(R8)	;Set event flag number

         24 A8            56     D0  0077 11000 	MOVL	R6,IRP$L_IOSB(R8)		;Set I/O status block address

         58 A8            57     90  007B 11100 	MOVB	R7,XIP_B_UPDFLG(R8)	;Set section update flags

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   6

X0106           UPDSEC - Update Section File                                                                                     (2)



            56         D4'AF     9E  007F 11200 	MOVAB	B^MMG$UPDSECPAG,R6	;Address of per page subroutine

                          0C     BA  0083 11300 	POPR	#^M<R2,R3>		;Recover saved input address range

                          FF78'  30  0085 11400 	BSBW	MMG$CRECOM2		;Common address range loop

                          58     D5  0088 11500 	TSTL	R8			;I/O packet to be released?

                          12     12  008A 11600 	BNEQ	130$			;Branch if yes

                                 04  008C 11700 50$:	RET				;Write was queued successfully

                                     008D 11800 

            50       016C 8F     3C  008D 11900 60$:	MOVZWL	#SS$_IVSECFLG,R0	;Invalid section flags parameter

                          03     11  0092 12000 	BRB	80$

            50            0C     3C  0094 12100 70$:	MOVZWL	#SS$_ACCVIO,R0		;Access violation

                          50     DD  0097 12200 80$:	PUSHL	R0			;Save the status code

                          16     11  0099 12300 	BRB	140$

                                     009B 12400 ;

                                     009B 12500 ; Release the I/O request packet, it was never used

                                     009B 12600 ;

            50            1C     3C  009B 12700 120$:	MOVZWL	#SS$_EXQUOTA,R0		;Exceeded quota

                          50     DD  009E 12800 130$:	PUSHL	R0			;Save status

         0B A8            06     E5  00A0 12820 	BBCC	#ACB$V_QUOTA,IRP$B_RMOD(R8),135$ ;If charged for AST

                          03         00A4       

                       3C A4     B6  00A5 12840 	INCW	PCB$W_ASTCNT(R4)	;then give back the quota

            50            58     D0  00A8 12900 135$:	MOVL	R8,R0			;Get I/O packet address to release

                 00000000'EF     16  00AB 13000 	JSB	EXE$DEANONPAGED		;Release the I/O request packet

                                     00B1 13100 ;

                                     00B1 13200 ; Set the event flag so that the caller may wait for it despite the return

                                     00B1 13300 ; information showing that nothing was queued.

                                     00B1 13400 ;

            53         14 AC     9A  00B1 13500 140$:	MOVZBL	EFN(AP),R3		;Get the event flag number

            51         60 A4     D0  00B5 13600 	MOVL	PCB$L_PID(R4),R1	;and the process ID

            52            01     9A  00B9 13700 	MOVZBL	#PRI$_IOCOM,R2		;and the correct priority increment

                 00000000'EF     16  00BC 13800 	JSB	SCH$POSTEF		;Post the event flag, write complete

                          01     BA  00C2 13900 	POPR	#^M<R0>			;Restore saved status

            51         18 AC     D0  00C4 13910 	MOVL	IOSB(AP),R1		;I/O status requested?

                          09     13  00C8 13920 	BEQL	150$			;Branch if not

                                     00CA 13930 	IFNOWRT	#8,(R1),150$		;Branch if IOSB not writable

            08            00     0D  00CA       		PROBEW	#0,#8,(R1)

                          61         00CD       

                          03     13  00CE       		BEQL	150$

            61            50     D0  00D0 13940 	MOVL	R0,(R1)			;Return the error status

                                 04  00D3 14000 150$:	RET				;and return

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   7

X0106           UPDSECPAG - Update Section for First Cluster of                                                                  (3)



                                     00D4    50 	.SBTTL	UPDSECPAG - Update Section for First Cluster of Pages

                                     00D4   100 ;

                                     00D4   200 ; **********************************************************************

                                     00D4   300 ;

                                     00D4   400 ; **************** THE FOLLOWING CODE MAY BE PAGED *****************

                                     00D4   500 ;

                                 000000D4   600 	.PSECT	Y$EXEPAGED

                                     00D4   700 ;

                                     00D4   800 ; **********************************************************************

                                     00D4   900 ;

                                     00D4  1000 ;++

                                     00D4  1100 ; FUNCTIONAL DESCRIPTION:

                                     00D4  1200 ;

                                     00D4  1300 ;

                                     00D4  1400 ; CALLING SEQUENCE:

                                     00D4  1500 ;

                                     00D4  1600 ;	BSBW	MMG$UPDSECPAG

                                     00D4  1700 ;

                                     00D4  1800 ;

                                     00D4  1900 ; INPUT PARAMETERS:

                                     00D4  2000 ;

                                     00D4  2100 ;	R0 = Access Mode for page ownership check

                                     00D4  2200 ;	R2 = Virtual Address

                                     00D4  2300 ;	R4 = Current PCB address

                                     00D4  2400 ;	R5 = Process Header Address - P1 or System Space

                                     00D4  2500 ;	R6 = Count - 1 of pages to be processed including this one

                                     00D4  2600 ;	R7 = +^X200 if going forward in the address space

                                     00D4  2700 ;	   = -^X200 if going backwards in the address space

                                     00D4  2710 ;	R8 = Address of an extended length I/O request packet

                                     00D4  2720 ;		IRP$W_SIZE	= size of extended IRP (XIP_C_LENGTH)

                                     00D4  2730 ;				  type filled in by WRTPGSBAK

                                     00D4  2740 ;		IRP$L_ASTADR	= AST address if desired

                                     00D4  2750 ;		IRP$L_ASTPRM	= AST parameter

                                     00D4  2760 ;		IRP$B_RMOD	= Requesting mode

                                     00D4  2770 ;				  ACB$V_QUOTA set if AST desired

                                     00D4  2780 ;		IRP$B_EFN	= Event flag number

                                     00D4  2790 ;		XIP_L_DIREC	= + OR - ^X200 according to direction of scan

                                     00D4  2800 ;		XIP_B_UPDFLG	= Update section flags

                                     00D4  2900 ;

                                     00D4  3000 ;	IPL = ASTDEL

                                     00D4  3100 ;

                                     00D4  3200 ; IMPLICIT INPUTS:

                                     00D4  3300 ;	NONE

                                     00D4  3400 ;

                                     00D4  3500 ; OUTPUT PARAMETERS:

                                     00D4  3600 ;

                                     00D4  3700 ;	R0 = Status Code

                                     00D4  3800 ;	R2   Preserved

                                     00D4  3900 ;

                                     00D4  4000 ; IMPLICIT OUTPUTS:

                                     00D4  4100 ;	NONE

                                     00D4  4200 ;

                                     00D4  4300 ; COMPLETION CODES:

                                     00D4  4400 ;

                                     00D4  4500 ;	SS$_NORMAL			;Successful Completion

                                     00D4  4600 ;	SS$_PAGOWNVIO			;Page Owner Violation

                                     00D4  4700 ;	SS$_LENVIO			;Length Violation

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   8

X0106           UPDSECPAG - Update Section for First Cluster of                                                                  (3)



                                     00D4  4800 ;	SS$_ACCVIO			;Access Violation

                                     00D4  4900 ;

                                     00D4  5000 ; SIDE EFFECTS:

                                     00D4  5100 ;

                                     00D4  5200 ;	NONE

                                     00D4  5300 ;

                                     00D4  5400 ;--

                                     00D4  5500 

                                     00D4  5600 MMG$UPDSECPAG:

         50 A8            57     D0  00D4  5700 	MOVL	R7,XIP_L_DIREC(R8)	;Save direction of scan

                 00000000'EF     16  00D8  5800 	JSB	MMG$UPDSECQWT		;Find and queue the next cluster

                          51     D5  00DE  5900 	TSTL	R1			;Anything queued for writing?

                          0D     12  00E0  6000 	BNEQ	20$			;Branch if yes

                       00'AD     D4  00E2  6200 	CLRL	B^CDL$L_SAVRETADR(FP)	;Return a null range

            15            50     E9  00E5  6220 	BLBC	R0,60$			;Branch if error status

            50       0659 8F     3C  00E8  6240 	MOVZWL	#SS$_NOTMODIFIED,R0	;Otherwise return alternate success code

                          0E     11  00ED  6300 	BRB	60$

                          58     D4  00EF  6400 20$:	CLRL	R8			;Note I/O packet in use

         00'AD            52     D0  00F1  6500 	MOVL	R2,B^CDL$L_SVSTARTVA(FP) ;Return first address queued

                          51     D7  00F5  6600 	DECL	R1			;Page count - 1

            51            57     C4  00F7  6700 	MULL	R7,R1			;Byte count

            52            51     C0  00FA  6800 	ADDL	R1,R2			;Address of last page queued

                          56     D4  00FD  6900 60$:	CLRL	R6			;Force end of range

                                 05  00FF  7000 	RSB				;and return

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page   9

X0106           UPDSECAST - Update Section AST                                                                                   (4)



                                     0100   100 	.SBTTL	UPDSECAST - Update Section AST

                                     0100   200 ;++

                                     0100   300 ; FUNCTIONAL DESCRIPTION:

                                     0100   400 ;

                                     0100   500 ;	This is a special kernel AST routine invoked by IOPOST at the

                                     0100   600 ; completion of a PAGIO write request with an extended I/O packet.

                                     0100   700 ; It's job is to find the next cluster of modified pages to write 

                                     0100   800 ; and either queue the request or post the I/O completion.

                                     0100   900 ;

                                     0100  1000 ; CALLING SEQUENCE:

                                     0100  1100 ;

                                     0100  1200 ;	BSBW	MMG$UPDSECAST

                                     0100  1300 ;

                                     0100  1400 ;

                                     0100  1500 ; INPUT PARAMETERS:

                                     0100  1600 ;

                                     0100  1700 ;	R4 = Current PCB address

                                     0100  1800 ;	R5 = Address of an extended length I/O request packet

                                     0100  1900 ;		IRP$W_SIZE	= size of extended IRP (XIP_C_LENGTH)

                                     0100  2000 ;		IRP$B_TYPE	= DYN$C_IRP

                                     0100  2100 ;		IRP$L_ASTADR	= AST address if desired

                                     0100  2200 ;		IRP$L_ASTPRM	= AST parameter

                                     0100  2300 ;		IRP$B_RMOD	= Requesting mode

                                     0100  2400 ;				  ACB$V_QUOTA set if AST desired

                                     0100  2500 ;		IRP$B_EFN	= Event flag number

                                     0100  2600 ;		XIP_L_SCANCNT	= Count - 1 of pages left to scan

                                     0100  2700 ;				  before this transfer completed

                                     0100  2800 ;		XIP_L_DIREC	= + OR - ^X200 according to direction of scan

                                     0100  2900 ;		XIP_L_STARTVA	= First VA used for this transfer

                                     0100  3000 ;		XIP_B_UPDFLG	= Update section flags

                                     0100  3100 ;		IPR$L_IOST1	= Status of previous write (0:15)

                                     0100  3200 ;				= Number of bytes successfully written (16:31)

                                     0100  3300 ;

                                     0100  3400 ;	IPL = ASTDEL

                                     0100  3500 ;

                                     0100  3600 ; IMPLICIT INPUTS:

                                     0100  3700 ;	NONE

                                     0100  3800 ;

                                     0100  3900 ; OUTPUT PARAMETERS:

                                     0100  4000 ;

                                     0100  4100 ;

                                     0100  4200 ; IMPLICIT OUTPUTS:

                                     0100  4300 ;	NONE

                                     0100  4400 ;

                                     0100  4500 ; COMPLETION CODES:

                                     0100  4600 ;

                                     0100  4700 ;

                                     0100  4800 ; SIDE EFFECTS:

                                     0100  4900 ;

                                     0100  5000 ;	NONE

                                     0100  5100 ;

                                     0100  5200 ;--

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  10

X0106           UPDSECAST - Update Section AST                                                                                   (5)



                                     0100   100 ;

                                     0100   200 ; **********************************************************************

                                     0100   300 ;

                                     0100   400 ; **************** THE FOLLOWING CODE MAY BE PAGED *****************

                                     0100   500 ;

                                 00000100   600 	.PSECT	Y$EXEPAGED

                                     0100   700 ;

                                     0100   800 ; **********************************************************************

                                     0100   900 ;

                                     0100  1000 

                                     0100  1100 MMG$UPDSECAST::

                     01C0 8F     BB  0100  1200 	PUSHR	#^M<R6,R7,R8>		;Save these registers

            58            55     D0  0104  1300 	MOVL	R5,R8			;I/O request packet address

            55   00000000'GF     D0  0107  1400 	MOVL	G^CTL$GL_PHD,R5		;Get P1 address of process header

                                     010E  1420 

                                     010E  1440 	ASSUME	XIP_L_DIREC EQ XIP_L_SCANCNT+4

            56         4C A8     7D  010E  1500 	MOVQ	XIP_L_SCANCNT(R8),R6	;R6=count-1, R7=+ or - ^X200

            52         54 A8     D0  0112  1600 	MOVL	XIP_L_STARTVA(R8),R2	;R2 = first VA of this transfer

            50         34 A8     D0  0116  1700 	MOVL	IRP$L_IOST1(R8),R0	;Get status and byte count

            07            19     EF  011A  1800 	EXTZV	#<16+VA$V_VPN>,#<16-VA$V_VPN>,R0,R1 ;Page count transferred

            51            50         011D       

            51            57     C5  011F  1900 	MULL3	R7,R1,R3		;Directional byte count

                          53         0122       

            52            53     C0  0123  2000 	ADDL	R3,R2			;New starting VA = first VA not written

         38 A8            52     D0  0126  2100 	MOVL	R2,IRP$L_IOST2(R8)	;Save it as second IOSB long word

            14            50     E9  012A  2200 	BLBC	R0,100$			;Branch if write error

            56            51     C2  012D  2300 	SUBL	R1,R6			;Page count remaining to scan

                          0F     19  0130  2400 	BLSS	100$			;Branch if did last piece

                 00000000'EF     16  0132  2500 	JSB	MMG$UPDSECQWT		;Scan for another cluster to write

                          51     D5  0138  2600 	TSTL	R1			;Anything found and queued?

                          05     13  013A  2700 	BEQL	100$			;Branch if not

                     01C0 8F     BA  013C  2800 	POPR	#^M<R6,R7,R8>		;restore saved registers

                                 05  0140  2900 	RSB				;and return from AST

                                     0141  3000 ;

                                     0141  3100 ; Last cluster of pages was written

                                     0141  3200 ; R0 = status

                                     0141  3300 ;

            55            58     D0  0141  3400 100$:	MOVL	R8,R5			;I/O packet address back to R5

                     01C0 8F     BA  0144  3500 	POPR	#^M<R6,R7,R8>		;Restore registers

            50            50     3C  0148  3600 	MOVZWL	R0,R0			;Zero high 16 bits of status

            04         34 A5     E8  014B  3700 	BLBS	IRP$L_IOST1(R5),120$	;Branch if not page write error

            50            10     E2  014F  3800 	BBSS	#16,R0,120$		;Set page write error indication

                          00         0152       

         34 A5            50     D0  0153  3900 120$:	MOVL	R0,IRP$L_IOST1(R5)	;Set first long word of return status

            53         22 A5     9A  0157  4000 	MOVZBL	IRP$B_EFN(R5),R3	;Get the event flag to post

            51         0C A5     D0  015B  4100 	MOVL	IRP$L_PID(R5),R1	;Process ID

            52            01     9A  015F  4200 	MOVZBL	#PRI$_IOCOM,R2		;Priority increment for I/O completion

                 00000000'EF     16  0162  4300 	JSB	SCH$POSTEF		;Post the event flag

                 00000000'EF     17  0168  4400 	JMP	IOC$DIRPOST1		;Go return status to IOSB if specified

                                     016E  4500 					;and issue AST if requested

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  11

X0106           UPDSECQWT - Update Section File for Single Page                                                                  (6)



                                     016E   100 	.SBTTL	UPDSECQWT - Update Section File for Single Page

                                     016E   200 

                                     016E   300 ;++

                                     016E   400 ; FUNCTIONAL DESCRIPTION:

                                     016E   500 ;

                                     016E   600 ;

                                     016E   700 ; CALLING SEQUENCE:

                                     016E   800 ;

                                     016E   900 ;	BSBW	MMG$UPDSECQWT

                                     016E  1000 ;

                                     016E  1100 ;

                                     016E  1200 ; INPUT PARAMETERS:

                                     016E  1300 ;

                                     016E  1400 ;	R2 = Virtual Address

                                     016E  1500 ;	R4 = Current PCB address

                                     016E  1600 ;	R5 = Process Header Address - P1 or System Space

                                     016E  1700 ;	R6 = Count - 1 of pages to be processed including this one

                                     016E  1800 ;	R7 = +^X200 if going forward in the address space

                                     016E  1900 ;	   = -^X200 if going backwards in the address space

                                     016E  2000 ;	R8 = Address of an extended length I/O request packet

                                     016E  2100 ;		IRP$W_SIZE	= size of extended IRP (XIP_C_LENGTH)

                                     016E  2200 ;				  type filled in by WRTPGSBAK

                                     016E  2300 ;		IRP$L_ASTADR	= AST address if desired

                                     016E  2400 ;		IRP$L_ASTPRM	= AST parameter

                                     016E  2500 ;		IRP$B_RMOD	= Requesting mode

                                     016E  2600 ;				  ACB$V_QUOTA set if AST desired

                                     016E  2700 ;		IRP$B_EFN	= Event flag number

                                     016E  2800 ;		XIP_L_DIREC	= + OR - ^X200 according to direction of scan

                                     016E  2900 ;		XIP_B_UPDFLG	= Update section flags

                                     016E  3000 ;

                                     016E  3100 ;	IPL = ASTDEL

                                     016E  3200 ;

                                     016E  3300 ; IMPLICIT INPUTS:

                                     016E  3400 ;	NONE

                                     016E  3500 ;

                                     016E  3600 ; OUTPUT PARAMETERS:

                                     016E  3700 ;

                                     016E  3800 ;    If write has been queued, then

                                     016E  3900 ;

                                     016E  4000 ;	R0 = #SS$_NORMAL

                                     016E  4100 ;	R1 = number of pages queued for writing

                                     016E  4200 ;	R2 = virtual address of first page (scan order) queued

                                     016E  4300 ;	R6 = count - 1 of pages remaining to scan starting with VA in R2;

                                     016E  4316 ;

                                     016E  4332 ;	Extended portion of I/O request packet updated if write queued

                                     016E  4348 ;		XIP_L_STARTVA	= starting virtual address of request just queued

                                     016E  4364 ;		XIP_L_SCANCNT	= count - 1 of pages remaining to scan

                                     016E  4380 ;				  starting with the first page just queued

                                     016E  4400 ;

                                     016E  4500 ;    If write has not been queued, then

                                     016E  4600 ;

                                     016E  4700 ;	R0 = system status code

                                     016E  4800 ;	R1 = 0

                                     016E  4900 ;	R2 = last virtual address scanned

                                     016E  5000 ;	     in the case of an error, this is the address that caused it

                                     016E  5100 ;	     if ran off the end of range, this is the last VA in the range

                                     016E  5200 ;	R6 = count - 1 of pages remaining to scan starting with VA in R2

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  12

X0106           UPDSECQWT - Update Section File for Single Page                                                                  (6)



                                     016E  5300 ;	   = 0 if at end of range and no more to do

                                     016E  5900 ;

                                     016E  6000 ; IMPLICIT OUTPUTS:

                                     016E  6100 ;

                                     016E  6200 ;	NONE

                                     016E  6300 ;

                                     016E  6400 ; COMPLETION CODES:

                                     016E  6500 ;

                                     016E  6600 ;	SS$_NORMAL			;Successful Completion

                                     016E  6700 ;	SS$_PAGOWNVIO			;Page Owner Violation

                                     016E  6800 ;	SS$_LENVIO			;Length Violation

                                     016E  6900 ;	SS$_ACCVIO			;Access Violation

                                     016E  7000 ;

                                     016E  7100 ; SIDE EFFECTS:

                                     016E  7200 ;

                                     016E  7300 ;	NONE

                                     016E  7400 ;

                                     016E  7500 ;--

                                     016E  7600 ;

                                     016E  7700 ; **********************************************************************

                                     016E  7800 ;

                                     016E  7900 ; **************** THE FOLLOWING CODE MUST BE RESIDENT *****************

                                     016E  8000 ;

                                 00000000  8100 	.PSECT	$MMGCOD

                                     0000  8200 ;

                                     0000  8300 ; **********************************************************************

                                     0000  8400 ;

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  13

X0106           UPDSECQWT - Update Section File for Single Page                                                                  (7)



                                     0000  1000 MMG$UPDSECQWT:

                          FFFD'  30  0000  1100 	BSBW	MMG$PTEINDX		;Get index to page table entry

            62            50     E9  0003  1200 	BLBC	R0,100$			;Branch if length violation

                                     0006  1300 	DSBINT	#IPL$_SYNCH		;Push current IPL

            7E            12     DB  0006       		MFPR	S^#PR$_IPL,-(SP)

            12            07     DA  0009       		MTPR	#IPL$_SYNCH,S^#PR$_IPL

                                     000C  1400 					;and raise to SYNCH

            53         64 B443   DE  000C  1500 	MOVAL	@PCB$L_PHD(R4)[R3],R3	;Form system virtual address of PTE

            57         F9 8F     78  0011  1600 	ASHL	#-7,R7,R1		;+ OR - 4 for adding to  SVAPTE

                          51         0015       

                          0E     BB  0016  1700 10$:	PUSHR	#^M<R1,R2,R3>

                          52     D4  0018  1800 	CLRL	R2			;PTEPFNMFY should return section/GPTX

            02            00     EF  001A  1900 	EXTZV	#0,#2,IRP$B_RMOD(R8),R0	;Access mode to check against page owner

            50         0B A8         001D       

            51         58 A8     9A  0020  2000 	MOVZBL	XIP_B_UPDFLG(R8),R1	;Exclusive writer indication

                          0193   30  0024  2100 	BSBW	MMG$PTEPFNMFY		;Get PFN and modify bit for this PTE

            06            51     E9  0027  2200 	BLBC	R1,20$			;Branch if page not a candidate for write

                          51     95  002A  2300 	TSTB	R1			;Could be written, is it modified?

                          21     19  002C  2400 	BLSS	70$			;Branch if yes, go write a cluster

                          05     11  002E  2500 	BRB	30$			;No, try the next page if any

            50            51     D0  0030  2600 20$:	MOVL	R1,R0			;Error, or just not a candidate?

                          14     12  0033  2700 	BNEQ	60$			;Branch if error

                          0E     BA  0035  2800 30$:	POPR	#^M<R1,R2,R3>		;R3=SVAPTE, R2=VA, R1=+ or - 4

                          56     D5  0037  2900 	TSTL	R6			;Check for end of loop

                          09     13  0039  3000 	BEQL	40$			;Avoid modifying VA and Count

            52            57     C0  003B  3100 	ADDL	R7,R2			;Next virtual address

            53            51     C0  003E  3200 	ADDL	R1,R3			;and next PTE address

            D2            56     F4  0041  3300 	SOBGEQ	R6,10$			;Try the next page

            50            01     3C  0044  3400 40$:	MOVZWL	#SS$_NORMAL,R0		;End of range, no more to do

                          02     11  0047  3500 	BRB	65$

                          0E     BA  0049  3600 60$:	POPR	#^M<R1,R2,R3>

                          51     D4  004B  3700 65$:	CLRL	R1			;No pages queued for writing

                          16     11  004D  3800 	BRB	80$

                                     004F  3900 ;

                                     004F  4000 ; Found a page to start the cluster, queue a cluster of pages

                                     004F  4100 ;

                          02     BA  004F  4200 70$:	POPR	#^M<R1>			;Clean off + or - 4

         54 A8            6E     D0  0051  4300 	MOVL	(SP),XIP_L_STARTVA(R8)	;Save starting VA for UPDSECAST

         40 A8            6E     D0  0055  4350 	MOVL	(SP),IRP$L_SEGVBN(R8)	;and for WRTPGSBAK

         4C A8            56     D0  0059  4400 	MOVL	R6,XIP_L_SCANCNT(R8)	;and remaining count for this write

            51            58     D0  005D  4500 	MOVL	R8,R1			;I/O request packet (extended)

                          0006   30  0060  4600 	BSBW	MMG$WRTPGSBAK		;Queue a cluster for write back

                          0C     BA  0063  4700 	POPR	#^M<R2,R3>		;Restore saved VA, clean off SVAPTE

                                     0065  4800 80$:	ENBINT				;Back to called IPL

            12            8E     DA  0065       		MTPR	(SP)+,S^#PR$_IPL

                                 05  0068  4900 100$:	RSB

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  14

X0106           WRTPGSBAK - Write Pages Back to Disk                                                                             (8)



                                     0069   100 	.SBTTL	WRTPGSBAK - Write Pages Back to Disk

                                     0069   200 ;++

                                     0069   300 ; FUNCTIONAL DESCRIPTION:

                                     0069   400 ;

                                     0069   500 ;

                                     0069   600 ; CALLING SEQUENCE:

                                     0069   700 ;

                                     0069   800 ;	BSBW	MMG$WRTPGSBAK

                                     0069   900 ;

                                     0069  1000 ;

                                     0069  1100 ; INPUT PARAMETERS:

                                     0069  1200 ;

                                     0069  1300 ;	R0 = Page Frame Number of starting page

                                     0069  1400 ;	R1 = Address of an I/O request packet

                                     0069  1405 ;		IRP$W_SIZE	= XIP_C_LENGTH if called by UPDSEC

                                     0069  1407 ;				= IRP$C_LENGTH if called by DELPAG

                                     0069  1410 ;		IRP$B_TYPE	= type filled in by WRTPGSBAK

                                     0069  1415 ;		IRP$L_ASTADR	= AST address if desired

                                     0069  1420 ;		IRP$L_ASTPRM	= AST parameter

                                     0069  1425 ;		IRP$B_RMOD	= Requesting mode

                                     0069  1430 ;				  ACB$V_QUOTA set if AST desired

                                     0069  1435 ;		IRP$B_EFN	= Event flag number

                                     0069  1440 ;		IRP$L_SEGVBN	= Starting virtual address of scan

                                     0069  1445 ;		XIP_B_UPDFLG	= Update section flags (if extended packet)

                                     0069  2100 ;	R2 = Section backing store address (PFN$AL_BAK[R0]) if process section page

                                     0069  2200 ;	   = Global page table index if global page

                                     0069  2300 ;	R3 = System virtual address of process page table entry for first page

                                     0069  2400 ;	R4 = PCB address

                                     0069  2500 ;	R5 = Process header address - P1 or System Space

                                     0069  2600 ;	R6 = Count - 1 of pages remaining to be processed including this one

                                     0069  2700 ;	R7 = +^X200 if going forward in address space

                                     0069  2800 ;	   = -^X200 if going backwards in address space

                                     0069  2900 ;	IPL = SYNCH

                                     0069  3000 ;

                                     0069  3100 ; IMPLICIT INPUTS:

                                     0069  3200 ;

                                     0069  3300 ;	NONE

                                     0069  3400 ;

                                     0069  3500 ; OUTPUT PARAMETERS:

                                     0069  3600 ;

                                     0069  3700 ;	R0 = #SS$_NORMAL

                                     0069  3800 ;	R1 = Number of pages queued for writing

                                     0069  4000 ;	R2,R3 Scratched

                                     0069  4100 ;

                                     0069  4200 ; IMPLICIT OUTPUTS:

                                     0069  4300 ;	NONE

                                     0069  4400 ;

                                     0069  4500 ; COMPLETION CODES:

                                     0069  4600 ;

                                     0069  4700 ;

                                     0069  4800 ; SIDE EFFECTS:

                                     0069  4900 ;

                                     0069  5100 ;

                                     0069  5200 ;--

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  15

X0106           WRTPGSBAK - Write Pages Back to Disk                                                                             (9)



                                     0069    10 ;

                                     0069    11 ; **********************************************************************

                                     0069    12 ;

                                     0069    13 ; **************** THE FOLLOWING CODE MUST BE RESIDENT *****************

                                     0069    14 ;

                                 00000069    15 	.PSECT	$MMGCOD

                                     0069    16 ;

                                     0069    17 ; **********************************************************************

                                     0069    18 ;

                                     0069  1800 MMG$WRTPGSBAK::

                          30     BB  0069  1900 	PUSHR	#^M<R4,R5>		;Preserve R4 and R5 across call

                                     006B  2000 ;

                                     006B  2100 ; Initialize I/O packet for cluster scan

                                     006B  2200 ;

            57         F9 8F     78  006B  3100 	ASHL	#-7,R7,INC4(R1)		;+ or - 4 according to direction

                       2C A1         006F       

            57         F7 8F     78  0071  3200 	ASHL	#-9,R7,INC1(R1)		;+ or - 1 according to direction

                       28 A1         0075       

            57            51     D0  0077  3300 	MOVL	R1,R7			;Packet address in stable register

         0A A7            0A     90  007A  3400 	MOVB	#DYN$C_IRP,IRP$B_TYPE(R7) ;Set packet type, size already set

         30 A7       0000'DF40   D0  007E  4200 	MOVL	@W^PFN$AL_BAK[R0],BAK(R7) ;Actual section backing store 

                                     0085  4300 					;address even if global page

         3C A7            53     D0  0085  4350 	MOVL	R3,PROCPTE(R7)		;Keep process pte address

            67       0000'DF40   D0  0089  4400 	MOVL	@W^PFN$AL_PTE[R0],SVAPTE(R7) ;Master PTE address even if global

         04 A7            52     D0  008F  4500 	MOVL	R2,PTEDAT(R7)		;Save section adr/GPTX

         23 A7         33 A4     90  0093  4600 	MOVB	PCB$B_PRIB(R4),IRP$B_PRI(R7) ;Set transfer priority

                                     0098  4700 ;

                                     0098  4800 ; Calculate largest cluster size as the minimum of the default cluster

                                     0098  4900 ; size and the number of pages left to operate on.

                                     0098  5000 ;

            51       0000'CF     3C  0098  5100 	MOVZWL	W^MPW$GW_MPWPFC,R1	;Default cluster size

            51            56     D1  009D  5200 	CMPL	R6,R1			;If count-1 is smaller

                          04     18  00A0  5300 	BGEQ	40$

            51         01 A6     DE  00A2  5400 	MOVAL	1(R6),R1		;then use count as max cluster size

         18 A7            51     D0  00A6  5450 40$:	MOVL	R1,CLUSTER(R7)		;Set maximum cluster size

         1C A7            01     D0  00AA  5500 	MOVL	#1,COUNT(R7)		;Count the first page in the cluster

                          2D     11  00AE  5600 	BRB	80$			;and loop zero or more times

                                     00B0  5700 ;

                                     00B0  5800 ; The loop that follows gathers pages to cluster write from the same section

                                     00B0  5900 ; The pages must (of course) be resident, but not all of them must actually

                                     00B0  6000 ; be modified.  For process section pages, cluster from the first page

                                     00B0  6100 ; (guaranteed modified) through the last modified page up to the cluster size.

                                     00B0  6200 ; For global pages, cluster write all the pages in the global writable

                                     00B0  6300 ; section.  The state of the modified bit is indeterminate since it is

                                     00B0  6400 ; maintained in the individual PTE's of the processes which map the section

                                     00B0  6500 ;

            53         2C A7     C0  00B0  6600 60$:	ADDL	INC4(R7),R3		;Next PTE address

            52            16     E0  00B4  6700 	BBS	#PTE$V_TYP0,R2,70$	;If global page

                          04         00B7       

            52         28 A7     C0  00B8  6800 	ADDL	INC1(R7),R2		;then next GPTX as well

            02            00     EF  00BC  6900 70$:	EXTZV	#0,#2,IRP$B_RMOD(R7),R0	;Requesting mode

            50         0B A7         00BF       

                          51     D4  00C2  6910 	CLRL	R1			;Assume no update section flags

       005C 8F         08 A7     B1  00C4  6920 	CMPW	IRP$W_SIZE(R7),#XIP_C_LENGTH ;If extended I/O packet

                          04     19  00CA  6930 	BLSS	75$

            51         58 A7     90  00CC  6940 	MOVB	XIP_B_UPDFLG(R7),R1	;Use the save update section flags

                          00E7   30  00D0  6950 75$:	BSBW	MMG$PTEPFNMFY		;Get PFN and modify bit if resident

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  16

X0106           WRTPGSBAK - Write Pages Back to Disk                                                                             (9)



            10            51     E9  00D3  7000 	BLBC	R1,120$			;Branch if not resident

                       1C A7     D6  00D6  7100 	INCL	COUNT(R7)		;Found another resident page

                          51     95  00D9  7200 	TSTB	R1			;See if it was modified

                          05     18  00DB  7300 	BGEQ	100$			;Branch if it was not

         0C A7         1C A7     D0  00DD  7500 80$:	MOVL	COUNT(R7),MFYCNT(R7)	;then update last modified page seen

            CA         18 A7     F5  00E2  7600 100$:	SOBGTR	CLUSTER(R7),60$		;Try the next page too

                                     00E6  7700 ;

                                     00E6  7800 ; Now lock all the pages in the cluster just found

                                     00E6  7900 ;

            53            67     D0  00E6  8000 120$:	MOVL	SVAPTE(R7),R3		;Get starting Master PTE

         0C A7            01     C3  00E9  8050 	SUBL3	#1,MFYCNT(R7),R1	;Count - 1 of pages in cluster

                          51         00ED       

            51         2C A7     C4  00EE  8100 	MULL	INC4(R7),R1		;* -4 if going backwards in address space

                          12     18  00F2  8200 	BGEQ	130$			;Branch if only 1 page or going forwards

                                     00F4  8210 ;

                                     00F4  8220 ; Going backwards in the address space, form the correct starting

                                     00F4  8230 ; PTE addresses and virtual address.

                                     00F4  8240 ;

            53            51     C0  00F4  8300 	ADDL	R1,R3			;Form starting master PTE address

            67            53     D0  00F7  8400 	MOVL	R3,SVAPTE(R7)		;and save it

         3C A7            51     C0  00FA  8410 	ADDL	R1,PROCPTE(R7)		;Form starting process PTE address

            51            07     78  00FE  8420 	ASHL	#7,R1,R1		;(count - 1) * -512

                          51         0101       

         40 A7            51     C0  0102  8430 	ADDL	R1,IRP$L_SEGVBN(R7)	;Form starting virtual address

         18 A7         0C A7     D0  0106  8500 130$:	MOVL	MFYCNT(R7),CLUSTER(R7)	;Loop count is to last modified page

                                     010B  8510 ;

                                     010B  8520 ; Given the Master PTE address get each page ready for the write request

                                     010B  8530 ;

            83   7B800000 8F     CB  010B  8600 150$:	BICL3	#^C<PTE$M_VALID !-	;Get relevant bits from PTE

                          50         0112       

                                     0113  8700 		PTE$M_TYP1 ! PTE$M_TYP0 !-

                                     0113  8800 		PTE$M_PGFLVB>,(R3)+,R0

                          35     19  0113  8900 	BLSS	260$			;Branch if page is valid

                          1E     13  0115  9000 	BEQL	200$			;Demand zero is inconsistent

            50         EA 8F     78  0117  9100 	ASHL	#-PTE$V_TYP0,R0,R1	;as would be anything other

                          51         011B       

                          17     12  011C  9200 	BNEQ	200$			;than transition

                          00     EE  011E  9300 	EXTV	#PFN$V_LOC,#PFN$S_LOC,-	;Get the page location (-4 to 3)

       0000'DF40          03         0120  9400 		@W^PFN$AB_STATE[R0],R2

                          52         0125       

                                     0126  9500 	CASE	R2,<-

                                     0126  9600 		270$,-			;-1 = active

                                     0126  9700 		220$,-			;0  = on free page list

                                     0126  9800 		220$,-			;1  = on modified page list

                                     0126  9900 		220$,-			;2  = on bad page list

                                     0126 10000 		240$ -			;3  = release pending

                                     0126 10100 		>,TYPE=B,LIMIT=#-1

         FF 8F            52     8F  0126       	CASEB	R2,#-1,S^#<<30001$-30000$>/2>-1

                          04'        012A       

                                     012B       30000$:

                               003B' 012B       	.WORD	270$-30000$

                               000E' 012D       	.WORD	220$-30000$

                               000E' 012F       	.WORD	220$-30000$

                               000E' 0131       	.WORD	220$-30000$

                               0015' 0133       	.WORD	240$-30000$

                                     0135       30001$:

                                     0135 10200 200$:	BUG_CHECK WRTPGSBAK,FATAL	;Write pages back - inconsistent data base

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  17

X0106           WRTPGSBAK - Write Pages Back to Disk                                                                             (9)



                               FEFF  0135       		.WORD	^XFEFF

                               0004' 0137       		.IIF IDN <FATAL>,<FATAL> , .WORD	BUG$_WRTPGSBAK!4

                                     0139 10210 ;

                                     0139 10220 ; Page is on the free, modified, or bad page list, must remove it

                                     0139 10230 ;

                          53     DD  0139 10300 220$:	PUSHL	R3			;Save next PTE address

                          FEC2'  30  013B 10400 	BSBW	MMG$REMPFN		;Remove page from free or modified page list

                          08     BA  013E 10500 	POPR	#^M<R3>			;Restore next PTE address

                          05     F0  0140 10600 240$:	INSV	#PFN$C_WRTINPROG,#PFN$V_LOC,- ;Set state to

            03            00         0142 10700 		#PFN$S_LOC,@W^PFN$AB_STATE[R0] ;Write in progress

                     0000'DF40       0144       

                          1C     11  0148 11000 	BRB	270$

                                     014A 11100 

                                     014A 11110 ;

                                     014A 11120 ; Master page table entry is valid, shut off PTE copy of Modify bit, and get PFN

                                     014A 11130 ;

            51         3C A7     D0  014A 11140 260$:	MOVL	PROCPTE(R7),R1		;Process page table entry address

                          61     D5  014E 11150 	TSTL	(R1)			;See if it contains a valid PTE

                          0B     18  0150 11160 	BGEQ	265$			;Branch if it does not

            61            1A     E5  0152 11170 	BBCC	#PTE$V_MODIFY,(R1),265$	;Shut off process PTE modify bit

                          07         0155       

                                     0156 11180 					;Branch if it was already off

                                     0156 11190 	INVALID	IRP$L_SEGVBN(R7),R1	;Invalidate translation buffer for

            51         40 A7     D0  0156       		MOVL	IRP$L_SEGVBN(R7),R1

            3A            51     DA  015A       		MTPR	R1,S^#PR$_TBIS

                                     015D 11200 					;process virtual address

                                     015D 11210 

                                     015D 11290 	ASSUME	PTE$V_MODIFY GE 24	;PTE modify bit is in high byte

         FF A3            04     8A  015D 11300 265$:	BICB	#PTE$M_MODIFY@-24,-1(R3) ;Shut off modify in master PTE

            15            00     EF  0161 11400 	EXTZV	#PTE$V_PFN,#PTE$S_PFN,R0,R0 ;Isolate PFN

            50            50         0164       

       0000'DF40       80 8F     8A  0166 11500 270$:	BICB	#PFN$M_MODIFY,@W^PFN$AB_STATE[R0] ;Page not modified

                     0000'DF40   B6  016D 11600 	INCW	@W^PFN$AW_REFCNT[R0]	;Count an I/O reference

         3C A7            04     C0  0172 11610 	ADDL	#4,PROCPTE(R7)		;Next process PTE address

         40 A7   00000200 8F     C0  0176 11620 	ADDL	#512,IRP$L_SEGVBN(R7)	;Next process virtual address

            89         18 A7     F5  017E 11700 	SOBGTR	CLUSTER(R7),150$	;Loop through each page in the cluster

                                     0182 11800 ;

                                     0182 11900 ; Now set up to queue the packet for writing

                                     0182 12000 ;

            52         30 A7     D0  0182 12100 	MOVL	BAK(R7),R2		;Get original backing store address

                                     0186 12150 					;section address is same for all pages

            53            67     D0  0186 12200 	MOVL	SVAPTE(R7),R3		;Starting master PTE address

         04 A7            16     E0  0189 12300 	BBS	#PTE$V_TYP0,PTEDAT(R7),300$ ;Branch if process section page

                          05         018D       

            55       0000'CF     D0  018E 12400 	MOVL	W^MMG$GL_SYSPHD,R5	;System header for global page

                          FE6A'  30  0193 12500 300$:	BSBW	MMG$INIBLDPKT		;Convert to file vbn and window

            51         0C A7     D0  0196 12600 	MOVL	MFYCNT(R7),R1		;Count of pages to queue

                                     019A 12700 

                           00000002  019A 12800 	.IF	GT,CA$_MEASURE

                     0000'CF     D6  019A 12900 	INCL	W^PMS$GL_PWRITIO	;Count number of write I/O requests

       0000'CF            51     C0  019E 13000 	ADDL	R1,W^PMS$GL_PWRITES	;Count number of pages written

                                     01A3 13100 	.ENDC

                                     01A3 13200 

            55            57     D0  01A3 13300 	MOVL	R7,R5			;I/O packet address

         28 A5            09     78  01A6 13400 	ASHL	#9,INC1(R5),R7		;Restore R7

                          57         01AA       

                          51     DD  01AB 13500 	PUSHL	R1			;Save page count to return to caller

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  18

X0106           WRTPGSBAK - Write Pages Back to Disk                                                                             (9)



            51            09     9C  01AD 13550 	ROTL	#9,R1,R1		;Form byte count to queue

                          51         01B0       

                          FE4C'  30  01B1 13600 	BSBW	EXE$BUILDPKTW		;Build and queue the packet for writing

            50            01     3C  01B4 13700 	MOVZWL	#SS$_NORMAL,R0		;Indicate packet successfully queued

                          32     BA  01B7 13800 	POPR	#^M<R1,R4,R5>		;Return byte count in R1, restore R4,R5

                                 05  01B9 13900 	RSB				;and return

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  19

X0106           PTEPFNMFY - Get PFN and Modify bit from PTE                                                                     (10)



                                     01BA   100 	.SBTTL	PTEPFNMFY - Get PFN and Modify bit from PTE

                                     01BA   200 

                                     01BA   300 ;+

                                     01BA   400 ;

                                     01BA   500 ; FUNCTIONAL DESCRIPTION:

                                     01BA   600 ;

                                     01BA   700 ;	Return PFN and modify bit if page is a candidate for write

                                     01BA   800 ; back clustering.

                                     01BA   900 ;

                                     01BA  1000 ; CALLING SEQUENCE:

                                     01BA  1100 ;

                                     01BA  1200 ;	BSBW	MMG$PTEPFNMFY

                                     01BA  1300 ;

                                     01BA  1400 ; INPUTS:

                                     01BA  1500 ;

                                     01BA  1600 ;	R0 = Access mode to check against page owner

                                     01BA  1700 ;	R1 = Exclusive writer indicator

                                     01BA  1800 ;	R2 = Process section backing store address or GPTX

                                     01BA  1900 ;	   = 0 if supposed to return the above

                                     01BA  2000 ;	R3 = System Virtual Address of Page Table Entry

                                     01BA  2100 ;	IPL = SYNCH

                                     01BA  2200 ;

                                     01BA  2300 ; OUTPUTS:

                                     01BA  2400 ;

                                     01BA  2500 ;	R0 = Page Frame Number if successful

                                     01BA  2600 ;	R1 = low bit clear if page is not a candidate for write back clustering

                                     01BA  2700 ;	     non-zero if actual error, 0 if just not a candidate

                                     01BA  2800 ;	   = low bit set if page could be cluster written

                                     01BA  2900 ;	     bit 7 set if modified page

                                     01BA  3000 ;	R2 = Process section address if process page

                                     01BA  3100 ;	   = GPTX if global page

                                     01BA  3200 ;	R3   preserved

                                     01BA  3300 ;

                                     01BA  3400 ;-

                                     01BA  3500 ;

                                     01BA  3600 ; **********************************************************************

                                     01BA  3700 ;

                                     01BA  3800 ; **************** THE FOLLOWING CODE MUST BE RESIDENT *****************

                                     01BA  3900 ;

                                 000001BA  4000 	.PSECT	$MMGCOD

                                     01BA  4100 ;

                                     01BA  4200 ; **********************************************************************

                                     01BA  4300 ;

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  20

X0106           PTEPFNMFY - Get PFN and Modify bit from PTE                                                                     (11)



                                     01BA   100 MMG$PTEPFNMFY:

                          51     DD  01BA   200 	PUSHL	R1			;Save exclusive writer bit

                          52     DD  01BC   300 	PUSHL	R2			;and the input backing store address

            15            09     EF  01BE   400 	EXTZV	#VA$V_VPN,#VA$S_VPN,R3,R1 ;Check for presence of page table

            51            53         01C1       

                     0000'DF41   D5  01C3   500 	TSTL	@W^MMG$GL_SPTBASE[R1]	;If SPT entry is not valid then

                          44     18  01C8   600 	BGEQ	14$			;this page table is not resident

            02            17     ED  01CA   700 	CMPZV	#PTE$V_OWN,#PTE$S_OWN,(R3),R0 ;Check for page owner violation

            50            63         01CD       

                          68     19  01CF   800 	BLSS	35$			;Branch if it is

            63   7B800000 8F     CB  01D1   900 	BICL3	#^C<PTE$M_VALID !-	;Get valid bit

                          50         01D8       

                                     01D9  1000 		PTE$M_TYP1 ! PTE$M_TYP0 !- ;type bits

                                     01D9  1100 		PTE$M_PGFLVB>,(R3),R0	;and PFN/GPTX from the PTE

                          65     18  01D9  1200 	BGEQ	40$			;Branch if not valid

            50            0D     9C  01DB  1300 5$:	ROTL	#<32-<PTE$V_MODIFY-PFN$V_MODIFY>>,R0,R1 ;R1<7> = Modify bit

                          51         01DE       

            15            00     EF  01DF  1400 	EXTZV	#PTE$V_PFN,#PTE$S_PFN,R0,R0 ;Isolate PFN

            50            50         01E2       

            51       0000'DF40   88  01E4  1500 10$:	BISB	@W^PFN$AB_STATE[R0],R1	;Or in PFN copy of Modify bit

            52       0000'DF40   D0  01EA  1600 	MOVL	@W^PFN$AL_BAK[R0],R2	;Backing store address to check

                                     01F0  1700 					;if page is not global

       0000'DF40          53     D1  01F0  1800 	CMPL	R3,@W^PFN$AL_PTE[R0]	;If process PTE address is different

                          0D     13  01F6  1900 	BEQL	12$			;Branch if process page

       0000'DF40     0000'CF     C3  01F8  2000 	SUBL3	W^MMG$GL_GPTBASE,@W^PFN$AL_PTE[R0],R2 ;Offset from GPT base

                          52         0200       

            52            1E     9C  0201  2100 	ROTL	#<32-2>,R2,R2		;Form Global Page Table Index

                          52         0204       

                          6E     D5  0205  2200 12$:	TSTL	(SP)			;Specified section or GPTX?

                          07     13  0207  2300 	BEQL	18$			;Branch if not, return section or GPTX

            6E            52     D1  0209  2400 	CMPL	R2,(SP)			;Yes, check that this one matches

                          05     13  020C  2500 	BEQL	20$			;Branch if it is

                          73     11  020E  2600 14$:	BRB	50$			;Not the same, end of cluster

            6E            52     D0  0210  2700 18$:	MOVL	R2,(SP)			;Return the section or GPTX

            52       0000'DF40   D0  0213  2800 20$:	MOVL	@W^PFN$AL_BAK[R0],R2	;Check that page is really writable

            52            16     E1  0219  2900 	BBC	#PTE$V_TYP0,R2,50$	;making sure it is a section,

                          66         021C       

            52            12     E1  021D  3000 	BBC	#PTE$V_WRT,R2,50$	;that it is writable

                          62         0220       

            52            10     E0  0221  3100 	BBS	#PTE$V_CRF,R2,50$	;and that it is not copy on reference

                          5E         0224       

                          04     BA  0225  3200 	POPR	#^M<R2>			;Fetch return section/GPTX

            52            16     E0  0227  3300 	BBS	#PTE$V_TYP0,R2,30$	;Branch if not a global page

                          07         022A       

                                     022B  3400 ;

                                     022B  3500 ; For the case of Global pages, the "complete" test for modified is not

                                     022B  3600 ; possible since all process' which have valid PTE's for the global page

                                     022B  3700 ; have their own copy of the modify bit.  This is only folded back into

                                     022B  3800 ; the PFN data base when the page is removed from the process' working

                                     022B  3900 ; set.  If the "exclusive write" flag is set, a Global page is only

                                     022B  4000 ; considered modified if the process PTE or the PFN data base says that

                                     022B  4100 ; the page is modified.  Otherwise, all Global Writable pages are considered

                                     022B  4200 ; modified for the purposes of this write back logic.

                                     022B  4300 ;

            04            6E     E8  022B  4400 	BLBS	(SP),30$		;Branch if exclusive writer

            51         80 8F     88  022E  4500 	BISB	#PFN$M_MODIFY,R1	;Force modify for global writable page

            51            01     C8  0232  4600 30$:	BISL	#1,R1			;Indicate successful return

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  21

X0106           PTEPFNMFY - Get PFN and Modify bit from PTE                                                                     (11)



            5E            04     C0  0235  4700 32$:	ADDL	#4,SP			;Clean off save exclusive writer bit

                                 05  0238  4800 	RSB

                                     0239  4900 ;

                                     0239  5000 ; Page owner violation

                                     0239  5100 ;

            51       01EC 8F     3C  0239  5200 35$:	MOVZWL	#SS$_PAGOWNVIO,R1	;Return error status

                          45     11  023E  5300 	BRB	52$

                                     0240  5400 ;

                                     0240  5500 ; Page table entry was not valid, see if it is transition or global

                                     0240  5600 ;

                          41     13  0240  5700 40$:	BEQL	50$			;Branch if demand zero, end of cluster

            50         EA 8F     78  0242  5800 	ASHL	#-PTE$V_TYP0,R0,R1	;Transition page?

                          51         0246       

                          23     13  0247  5900 	BEQL	45$			;Branch if yes

                                     0249  6000 ;

                                     0249  6100 ; Process page table entry is not valid and not transition.

                                     0249  6200 ; See if it is global.

                                     0249  6300 ;

            51            01     91  0249  6400 	CMPB	#1,R1			;TYP1 = 0, TYP0 = 1 ?

                          35     12  024C  6500 	BNEQ	50$			;Branch if not global

            16            00     EF  024E  6600 	EXTZV	#PTE$V_GPTX,#PTE$S_GPTX,R0,R0 ;Isolate GPTX

            50            50         0251       

                                 CB  0253  6700 	BICL3	#^C<PTE$M_VALID !-	;Get valid bit

                                     0254  6800 		PTE$M_TYP1 ! PTE$M_TYP0 !- ;type bits

                                     0254  6900 		PTE$M_PGFLVB>,-		;and PFN/GPTX

       0000'DF40 7B800000 8F         0254  7000 		@W^MMG$GL_GPTBASE[R0],R0 ;from the global PTE

                          50         025D       

                          05     14  025E  7100 	BGTR	42$			;Branch if not valid and not DZRO

                          21     13  0260  7200 	BEQL	50$			;Branch if demand zero to end cluster

                          FF76   31  0262  7250 	BRW	5$			;Process valid master PTE

            50         EA 8F     78  0265  7300 42$:	ASHL	#-PTE$V_TYP0,R0,R1	;Check for transition state

                          51         0269       

                          17     12  026A  7400 	BNEQ	50$			;End of cluster if not

                                     026C  7500 ;

                                     026C  7600 ; This is a transition page.  If it is on the free or modified page list

                                     026C  7700 ; or in the RELPEND or ACTIVE state, then it is still a candidate.

                                     026C  7800 ;

                          00     EE  026C  7900 45$:	EXTV	#PFN$V_LOC,#PFN$S_LOC,-	;Get page location (-4 to 3)

       0000'DF40          03         026E  8000 		@W^PFN$AB_STATE[R0],R1

                          51         0273       

                                     0274  8100 

                                     0274  8160 	ASSUME	PFN$C_RDERR	EQ 4	;Page read error -4

                                     0274  8170 	ASSUME	PFN$C_WRTINPROG	EQ 5	;Write in progress -3

                                     0274  8180 	ASSUME	PFN$C_RDINPROG	EQ 6	;Read in progress -2

                                     0274  8190 	ASSUME	PFN$C_ACTIVE	EQ 7	;Active -1

                                     0274  8200 	ASSUME	PFN$C_FREPAGLST EQ 0	;On free page list

                                     0274  8300 	ASSUME	PFN$C_MFYPAGLST EQ 1	;On modified page list

                                     0274  8400 	ASSUME	PFN$C_BADPAGLST EQ 2	;On bad page list

                                     0274  8500 	ASSUME	PFN$C_RELPEND	EQ 3	;Release pending

                                     0274  9000 

                                     0274  9100 	CASE	R1,<-

                                     0274  9200 		60$,-			;-1 = active

                                     0274  9300 		60$,-			;0  = free page list

                                     0274  9400 		60$,-			;1  = modified page list

                                     0274  9500 		55$,-			;2  = bad page list

                                     0274  9600 		60$ -			;3  = release pending

                                     0274  9700 		>,TYPE=B,LIMIT=#-1

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  22

X0106           PTEPFNMFY - Get PFN and Modify bit from PTE                                                                     (11)



         FF 8F            51     8F  0274       	CASEB	R1,#-1,S^#<<30003$-30002$>/2>-1

                          04'        0278       

                                     0279       30002$:

                               0017' 0279       	.WORD	60$-30002$

                               0017' 027B       	.WORD	60$-30002$

                               0017' 027D       	.WORD	60$-30002$

                               0010' 027F       	.WORD	55$-30002$

                               0017' 0281       	.WORD	60$-30002$

                                     0283       30003$:

                                     0283  9800 ;

                                     0283  9900 ; This page is not part of the current cluster

                                     0283 10000 ;

                          51     D4  0283 10100 50$:	CLRL	R1			;Return error status

                          04     BA  0285 10200 52$:	POPR	#^M<R2>			;Clean off saved input backing store adr

                          AC     11  0287 10300 	BRB	32$

                                     0289 10400 ;

                                     0289 10500 ; This page is on the bad page list, if it does not have the "bad" bit

                                     0289 10600 ; set, then the page was placed there by the modified page writer due to

                                     0289 10700 ; a write error.  In this case the page should be a candidate for write back.

                                     0289 10800 ;

       0000'DF40          05     E0  0289 10900 55$:	BBS	#PFN$V_BADPAG,@W^PFN$AB_TYPE[R0],50$ ;End cluster if bad bit set

                          F3         028F       

                                     0290 11000 ;

                                     0290 11100 ; This page is resident and has no I/O pending.  It may be clustered.

                                     0290 11200 ;

                          51     D4  0290 11300 60$:	CLRL	R1			;No modify bit from PTE

                          FF4F   31  0292 11400 	BRW	10$

                                     0295 11500 

                                     0295 11600 

                                     0295 11700 	.END

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  23

SYMBOL TABLE                                                                                                                    (11)



ACB$B_RMOD       0000000B            DYN$C_PFL      = 00000023            IRP$L_WIND       00000018            

ACB$B_TYPE       0000000A            DYN$C_PIB      = 00000022            IRP$M_BUFIO    = 00000001            

ACB$L_AST        00000010            DYN$C_PQB      = 0000000D            IRP$M_CHAINED  = 00000020            

ACB$L_ASTPRM     00000014            DYN$C_PTR      = 00000025            IRP$M_COMPLX   = 00000008            

ACB$L_ASTQBL     00000004            DYN$C_RVT      = 0000000E            IRP$M_DIAGBUF  = 00000080            

ACB$L_ASTQFL     00000000            DYN$C_SFT      = 00000024            IRP$M_FUNC     = 00000002            

ACB$L_KAST       00000018            DYN$C_SSB      = 0000001D            IRP$M_MBXIO    = 00000400            

ACB$L_PID        0000000C            DYN$C_TQE      = 0000000F            IRP$M_PAGIO    = 00000004            

ACB$M_QUOTA    = 00000040            DYN$C_TYPAHD   = 00000014            IRP$M_PHYSIO   = 00000100            

ACB$S_MODE     = 00000002            DYN$C_UCB      = 00000010            IRP$M_PRIVIO   = 00000200            

ACB$V_KAST     = 00000007            DYN$C_VCB      = 00000011            IRP$M_SWAPIO   = 00000040            

ACB$V_MODE     = 00000000            DYN$C_WCB      = 00000012            IRP$M_VIRTUAL  = 00000010            

ACB$V_QUOTA    = 00000006            EFN            = 00000014            IRP$Q_NT_PRVMSK  0000003C            

ACB$W_SIZE       00000008            EXCLWRT          00000020            IRP$S_FCODE    = 00000006            

ACMODE         = 0000000C            EXE$ALLOCBUF     ********   X   03   IRP$S_FMOD     = 0000000A            

ASTADR         = 0000001C            EXE$BUILDPKTW    ********   X   04   IRP$S_MODE     = 00000002            

ASTPRM         = 00000020            EXE$DEANONPAGED  ********   X   03   IRP$V_BUFIO    = 00000000            

BAK              00000030            EXE$SNGLEQUOTA   ********   X   03   IRP$V_CHAINED  = 00000005            

BIT...         = 00000020            EXE$UPDSEC       00000000 RG    03   IRP$V_COMPLX   = 00000003            

BUG$_WRTPGSBAK   ********   X   04   FLAGS          = 00000010            IRP$V_DIAGBUF  = 00000007            

CA$_MEASURE    = 00000002            GBL...         = 00000000            IRP$V_FCODE    = 00000000            

CA$_MEASURE_IOT= 00000004            INADR          = 00000004            IRP$V_FMOD     = 00000006            

CA$_SIMULATOR  = 00000001            INC1             00000028            IRP$V_FUNC     = 00000001            

CDL$C_LENGTH     ********   X   03   INC4             0000002C            IRP$V_MBXIO    = 0000000A            

CDL$L_MAXACMODE  ********   X   03   IOC$DIRPOST1     ********   X   03   IRP$V_MODE     = 00000000            

CDL$L_SAVRETADR  ********   X   03   IOSB           = 00000018            IRP$V_PAGIO    = 00000002            

CDL$L_SVSTARTVA  ********   X   03   IPL$_ASTDEL    = 00000002            IRP$V_PHYSIO   = 00000008            

CLUSTER          00000018            IPL$_HWCLK     = 00000018            IRP$V_PRIVIO   = 00000009            

COUNT            0000001C            IPL$_IOPOST    = 00000004            IRP$V_SWAPIO   = 00000006            

CTL$GL_PHD       ********   X   03   IPL$_MAILBOX   = 0000000B            IRP$V_VIRTUAL  = 00000004            

DIR...         = 00000001            IPL$_POWER     = 0000001F            IRP$W_ABCNT      0000003C            

DYN$C_ACB      = 00000002            IPL$_QUEUEAST  = 00000006            IRP$W_BCNT       00000032            

DYN$C_ADP      = 00000001            IPL$_SCHED     = 00000003            IRP$W_BOFF       00000030            

DYN$C_AQB      = 00000003            IPL$_SYNCH     = 00000007            IRP$W_CHAN       00000028            

DYN$C_BRDCST   = 0000001A            IPL$_TIMER     = 00000007            IRP$W_FUNC       00000020            

DYN$C_BUFIO    = 00000013            IRP$B_CARCON     00000038            IRP$W_OBCNT      0000003E            

DYN$C_CEB      = 00000004            IRP$B_EFN        00000022            IRP$W_SIZE       00000008            

DYN$C_CRB      = 00000005            IRP$B_PRI        00000023            IRP$W_STS        0000002A            

DYN$C_CXB      = 0000001B            IRP$B_RMOD       0000000B            IRP$W_TT_PRMPT   0000003C            

DYN$C_DDB      = 00000006            IRP$B_TYPE       0000000A            IRP_AST          00000010            

DYN$C_DPT      = 0000001E            IRP$C_LENGTH     0000004C            IRP_ASTPRM       00000014            

DYN$C_FCB      = 00000007            IRP$K_LENGTH     0000004C            IRP_EFN          00000022            

DYN$C_FRK      = 00000008            IRP$L_AST        00000010            IRP_IOSB         00000024            

DYN$C_GSD      = 00000015            IRP$L_ASTPRM     00000014            IRP_IOST1        00000034            

DYN$C_IDB      = 00000009            IRP$L_DIAGBUF    00000044            IRP_LENGTH       00000044            

DYN$C_IRP      = 0000000A            IRP$L_IOQBL      00000004            IRP_PRI          00000023            

DYN$C_JPB      = 0000001F            IRP$L_IOQFL      00000000            IRP_RMOD         0000000B            

DYN$C_KFH      = 00000026            IRP$L_IOSB       00000024            IRP_SEGVBN       00000040            

DYN$C_KFI      = 00000018            IRP$L_IOST1      00000034            MFYCNT           0000000C            

DYN$C_LOG      = 0000000B            IRP$L_IOST2      00000038            MMG$CRECOM2      ********   X   03   

DYN$C_MTL      = 00000019            IRP$L_MEDIA      00000034            MMG$GL_GPTBASE   ********   X   04   

DYN$C_MVL      = 00000016            IRP$L_PID        0000000C            MMG$GL_SPTBASE   ********   X   04   

DYN$C_NDB      = 0000001C            IRP$L_SEGVBN     00000040            MMG$GL_SYSPHD    ********   X   04   

DYN$C_NET      = 00000017            IRP$L_SEQNUM     00000048            MMG$INADRINI     ********   X   03   

DYN$C_PBH      = 00000020            IRP$L_SVAPTE     0000002C            MMG$INIBLDPKT    ********   X   04   

DYN$C_PCB      = 0000000C            IRP$L_TT_TERM    00000038            MMG$PTEINDX      ********   X   04   

DYN$C_PDB      = 00000021            IRP$L_UCB        0000001C            MMG$PTEPFNMFY    000001BA R     04   

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  24

SYMBOL TABLE                                                                                                                    (11)



MMG$REMPFN       ********   X   04   PCB$W_APTCNT     00000034            PFN$V_GBLBAK   = 00000017            

MMG$UPDSECAST    00000100 RG    03   PCB$W_ASTCNT     0000003C            PFN$V_LOC      = 00000000            

MMG$UPDSECPAG    000000D4 R     03   PCB$W_BIOCNT     0000003E            PFN$V_MODIFY   = 00000007            

MMG$UPDSECQWT    00000000 R     04   PCB$W_BIOLM      00000040            PFN$V_PAGTYP   = 00000000            

MMG$WRTPGSBAK    00000069 RG    04   PCB$W_BYTCNT     00000042            PFN$V_PGFLX    = 00000018            

MPW$GW_MPWPFC    ********   X   04   PCB$W_BYTLM      00000068            PFN$V_RPTEVT   = 00000006            

PCB$B_ASTACT     0000000C            PCB$W_DIOCNT     00000044            PHD$B_ASTLVL     000000CF            

PCB$B_ASTEN      0000000D            PCB$W_DIOLM      00000046            PHD$B_DFPFC      00000038            

PCB$B_PRI        0000000B            PCB$W_FILCNT     00000048            PHD$B_PAGFIL     0000001F            

PCB$B_PRIB       00000033            PCB$W_GPGCNT     00000038            PHD$B_PGTBPFC    00000039            

PCB$B_TYPE       0000000A            PCB$W_GRP        00000022            PHD$C_LENGTH     00000118            

PCB$B_WEFC       00000032            PCB$W_MEM        00000020            PHD$C_PHDPAGCTX= 00000008            

PCB$C_LENGTH     0000007C            PCB$W_MTXCNT     0000000E            PHD$K_LENGTH     00000118            

PCB$K_LENGTH     0000007C            PCB$W_PPGCNT     0000003A            PHD$L_BIOCNT     00000054            

PCB$L_ASTQBL     00000014            PCB$W_PRCCNT     0000006A            PHD$L_CPULIM     00000058            

PCB$L_ASTQFL     00000010            PCB$W_SIZE       00000008            PHD$L_CPUTIM     0000003C            

PCB$L_EFC2P      00000058            PCB$W_STATE      00000030            PHD$L_DIOCNT     00000050            

PCB$L_EFC3P      0000005C            PCB$W_TMBU       00000036            PHD$L_ESP        0000007C            

PCB$L_EFCS       00000050            PCB$W_TQCNT      0000004A            PHD$L_FREP0VA    00000028            

PCB$L_EFCU       00000054            PFN$AB_STATE     ********   X   04   PHD$L_FREP1VA    00000030            

PCB$L_EFWM       0000004C            PFN$AB_TYPE      ********   X   04   PHD$L_FREPTECNT  0000002C            

PCB$L_OWNER      0000001C            PFN$AL_BAK       ********   X   04   PHD$L_KSP        00000078            

PCB$L_PHD        00000064            PFN$AL_PTE       ********   X   04   PHD$L_P0BR       000000C8            

PCB$L_PHYPCB     00000018            PFN$AW_REFCNT    ********   X   04   PHD$L_P0LRASTL   000000CC            

PCB$L_PID        00000060            PFN$C_ACTIVE   = 00000007            PHD$L_P1BR       000000D0            

PCB$L_PQB        0000004C            PFN$C_BADPAGLST= 00000002            PHD$L_P1LR       000000D4            

PCB$L_SQBL       00000004            PFN$C_FREPAGLST= 00000000            PHD$L_PAGEFLTS   0000004C            

PCB$L_SQFL       00000000            PFN$C_GBLWRT   = 00000003            PHD$L_PAGFIL     0000001C            

PCB$L_STS        00000028            PFN$C_GLOBAL   = 00000002            PHD$L_PC         000000C0            

PCB$L_UIC        00000020            PFN$C_GPGTBL   = 00000005            PHD$L_PCB        00000078            

PCB$L_WSSWP      00000024            PFN$C_MFYPAGLST= 00000001            PHD$L_PGFLCNT    00000034            

PCB$L_WTIME      0000002C            PFN$C_PPGTBL   = 00000004            PHD$L_PGFLQUOTA  0000005C            

PCB$T_LNAME      0000006C            PFN$C_PROCESS  = 00000000            PHD$L_PSL        000000C4            

PCB$V_ASTPEN   = 00000011            PFN$C_RDERR    = 00000004            PHD$L_PSTBASOFF  00000020            

PCB$V_BATCH    = 0000000E            PFN$C_RDINPROG = 00000006            PHD$L_PTWSLELCK  00000064            

PCB$V_DELPEN   = 00000001            PFN$C_RELPEND  = 00000003            PHD$L_PTWSLEVAL  00000068            

PCB$V_FORCPEN  = 00000002            PFN$C_SYSTEM   = 00000001            PHD$L_R0         00000088            

PCB$V_HIBER    = 00000013            PFN$C_WRTINPROG= 00000005            PHD$L_R1         0000008C            

PCB$V_INQUAN   = 00000003            PFN$M_BADPAG   = 00000020            PHD$L_R10        000000B0            

PCB$V_LOGIN    = 00000014            PFN$M_BAK      = 007FFFFF            PHD$L_R11        000000B4            

PCB$V_NETWRK   = 00000015            PFN$M_COLLISION= 00000010            PHD$L_R12        000000B8            

PCB$V_NOACNT   = 0000000F            PFN$M_DELCON   = 00000010            PHD$L_R13        000000BC            

PCB$V_NODELET  = 00000017            PFN$M_GBLBAK   = 00800000            PHD$L_R2         00000090            

PCB$V_PHDRES   = 00000012            PFN$M_LOC      = 00000007            PHD$L_R3         00000094            

PCB$V_PSWAPM   = 00000004            PFN$M_MODIFY   = 00000080            PHD$L_R4         00000098            

PCB$V_PWRAST   = 00000016            PFN$M_PAGTYP   = 00000007            PHD$L_R5         0000009C            

PCB$V_RES      = 00000000            PFN$M_PGFLX    = FF000000            PHD$L_R6         000000A0            

PCB$V_RESPEN   = 00000005            PFN$M_RPTEVT   = 00000040            PHD$L_R7         000000A4            

PCB$V_SSFEXC   = 00000006            PFN$S_BAK      = 00000017            PHD$L_R8         000000A8            

PCB$V_SSFEXCE  = 00000007            PFN$S_GBLBAK   = 00000001            PHD$L_R9         000000AC            

PCB$V_SSFEXCS  = 00000008            PFN$S_LOC      = 00000003            PHD$L_REFERFLT   00000014            

PCB$V_SSFEXCU  = 00000009            PFN$S_PAGTYP   = 00000003            PHD$L_SSP        00000080            

PCB$V_SSRWAIT  = 0000000A            PFN$S_PGFLX    = 00000008            PHD$L_USP        00000084            

PCB$V_SUSPEN   = 0000000B            PFN$V_BADPAG   = 00000005            PHD$L_WSL        00000118            

PCB$V_SWPVBN   = 00000010            PFN$V_BAK      = 00000000            PHD$M_DALCSTX  = 00000002            

PCB$V_WAKEPEN  = 0000000C            PFN$V_COLLISION= 00000004            PHD$M_PFMFLG   = 00000001            

PCB$V_WALL     = 0000000D            PFN$V_DELCON   = 00000004            PHD$M_WSPEAKCHK= 00000004            

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  25

SYMBOL TABLE                                                                                                                    (11)



PHD$Q_PRIVMSK    00000000            PR$_SBIER      = 00000034            PSL$V_TBIT     = 00000004            

PHD$S_ASTLVL   = 00000008            PR$_SBIFS      = 00000030            PSL$V_TP       = 0000001E            

PHD$S_P0LR     = 00000018            PR$_SBIMT      = 00000033            PTE$C_EOWN     = 00800000            

PHD$V_ASTLVL   = 00000018            PR$_SBIQC      = 00000036            PTE$C_ER       = 38000000            

PHD$V_DALCSTX  = 00000001            PR$_SBIS       = 00000031            PTE$C_ERKW     = 30000000            

PHD$V_P0LR     = 00000000            PR$_SBISC      = 00000032            PTE$C_EW       = 28000000            

PHD$V_PFMFLG   = 00000000            PR$_SBITA      = 00000035            PTE$C_KOWN     = 00000000            

PHD$V_WSPEAKCHK= 00000002            PR$_SBR        = 0000000C            PTE$C_KR       = 18000000            

PHD$W_ASTLM      00000044            PR$_SCBB       = 00000011            PTE$C_KW       = 10000000            

PHD$W_BAK        00000048            PR$_SID        = 0000003E            PTE$C_NA       = 00000000            

PHD$W_DFWSCNT    0000001A            PR$_SIRR       = 00000014            PTE$C_SOWN     = 01000000            

PHD$W_EMPTPG     000000D8            PR$_SISR       = 00000015            PTE$C_SR       = 58000000            

PHD$W_EXTDYNWS   00000076            PR$_SLR        = 0000000D            PTE$C_SREW     = 48000000            

PHD$W_FILLM      00000060            PR$_SSP        = 00000002            PTE$C_SRKW     = 50000000            

PHD$W_FLAGS      0000003A            PR$_TBIA       = 00000039            PTE$C_SW       = 40000000            

PHD$W_PHVINDEX   00000046            PR$_TBIS       = 0000003A            PTE$C_UOWN     = 01800000            

PHD$W_PRCLM      00000042            PR$_TODR       = 0000001B            PTE$C_UR       = 78000000            

PHD$W_PST        00000020            PR$_TXCS       = 00000022            PTE$C_UREW     = 68000000            

PHD$W_PSTBASMAX  0000004A            PR$_TXDB       = 00000023            PTE$C_URKW     = 70000000            

PHD$W_PSTFREE    00000026            PR$_USP        = 00000003            PTE$C_URSW     = 60000000            

PHD$W_PSTLAST    00000024            PR$_WCSA       = 0000002C            PTE$C_UW       = 20000000            

PHD$W_PTCNTACT   00000070            PR$_WCSD       = 0000002D            PTE$M_CRF      = 00010000            

PHD$W_PTCNTLCK   0000006C            PRI$_IOCOM     = 00000001            PTE$M_DZRO     = 00020000            

PHD$W_PTCNTMAX   00000072            PRI$_NULL      = 00000000            PTE$M_GPTX     = 003FFFFF            

PHD$W_PTCNTVAL   0000006E            PRI$_RESAVL    = 00000002            PTE$M_MODIFY   = 04000000            

PHD$W_QUANT      00000040            PRI$_TICOM     = 00000004            PTE$M_OWN      = 01800000            

PHD$W_TQLM       00000062            PRI$_TIMER     = 00000002            PTE$M_PFN      = 001FFFFF            

PHD$W_WSAUTH     0000000A            PRI$_TOCOM     = 00000003            PTE$M_PGFLVB   = 003FFFFF            

PHD$W_WSDYN      0000000E            PROCPTE          0000003C            PTE$M_PROT     = 78000000            

PHD$W_WSFLUID    00000074            PSL$C_EXEC     = 00000001            PTE$M_TYP0     = 00400000            

PHD$W_WSLAST     00000012            PSL$C_KERNEL   = 00000000            PTE$M_TYP1     = 04000000            

PHD$W_WSLIST     00000008            PSL$C_SUPER    = 00000002            PTE$M_VALID    = 80000000            

PHD$W_WSLOCK     0000000C            PSL$C_USER     = 00000003            PTE$M_WRT      = 00040000            

PHD$W_WSLX       0000004A            PSL$M_CM       = 80000000            PTE$S_GPTX     = 00000016            

PHD$W_WSNEXT     00000010            PSL$M_CURMOD   = 03000000            PTE$S_OWN      = 00000002            

PHD$W_WSQUOTA    00000018            PSL$M_DV       = 00000080            PTE$S_PFN      = 00000015            

PMS$GL_PWRITES   ********   X   04   PSL$M_FPD      = 08000000            PTE$S_PGFLVB   = 00000016            

PMS$GL_PWRITIO   ********   X   04   PSL$M_FU       = 00000040            PTE$S_PROT     = 00000004            

PR$_ACCR       = 00000029            PSL$M_IPL      = 001F0000            PTE$S_STX      = 00000010            

PR$_ACCS       = 00000028            PSL$M_IS       = 04000000            PTE$V_CRF      = 00000010            

PR$_ASTLVL     = 00000013            PSL$M_IV       = 00000020            PTE$V_DZRO     = 00000011            

PR$_ESP        = 00000001            PSL$M_PRVMOD   = 00C00000            PTE$V_GPTX     = 00000000            

PR$_ICCS       = 00000018            PSL$M_SAFBITS  = 000037FF            PTE$V_MODIFY   = 0000001A            

PR$_ICR        = 0000001A            PSL$M_TBIT     = 00000010            PTE$V_OWN      = 00000017            

PR$_IPL        = 00000012            PSL$M_TP       = 40000000            PTE$V_PFN      = 00000000            

PR$_ISP        = 00000004            PSL$S_CURMOD   = 00000002            PTE$V_PGFLVB   = 00000000            

PR$_KSP        = 00000000            PSL$S_IPL      = 00000005            PTE$V_PROT     = 0000001B            

PR$_MAPEN      = 00000038            PSL$S_PRVMOD   = 00000002            PTE$V_STX      = 00000000            

PR$_NICR       = 00000019            PSL$V_CM       = 0000001F            PTE$V_TYP0     = 00000016            

PR$_P0BR       = 00000008            PSL$V_CURMOD   = 00000018            PTE$V_TYP1     = 0000001A            

PR$_P0LR       = 00000009            PSL$V_DV       = 00000007            PTE$V_VALID    = 0000001F            

PR$_P1BR       = 0000000A            PSL$V_FPD      = 0000001B            PTE$V_WRT      = 00000012            

PR$_P1LR       = 0000000B            PSL$V_FU       = 00000006            PTEDAT           00000004            

PR$_PCBB       = 00000010            PSL$V_IPL      = 00000010            RETADR         = 00000008            

PR$_PME        = 0000003D            PSL$V_IS       = 0000001A            RSN$_ASTWAIT   = 00000001            

PR$_RXCS       = 00000020            PSL$V_IV       = 00000005            RSN$_BRKTHRU   = 00000006            

PR$_RXDB       = 00000021            PSL$V_PRVMOD   = 00000016            RSN$_IACLOCK   = 00000007            

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  26

SYMBOL TABLE                                                                                                                    (11)



RSN$_MAILBOX   = 00000002            SS$_DRVERR     = 0000008C            SS$_IVSECFLG   = 0000016C            

RSN$_NPDYNMEM  = 00000003            SS$_DUPFILENAME= 00000868            SS$_IVSECIDCTL = 000002E4            

RSN$_PGDYNMEM  = 00000005            SS$_DUPLNAM    = 00000094            SS$_IVSSRQ     = 00000174            

RSN$_PGFILE    = 00000004            SS$_ENDOFFILE  = 00000870            SS$_IVSTSFLG   = 0000017C            

SAVABS...      = 0000005C            SS$_ENDOFTAPE  = 00000878            SS$_IVTIME     = 00000184            

SCH$CLREF        ********   X   03   SS$_ENDOFUSRLBL= 00000970            SS$_LCKPAGFUL  = 000000D4            

SCH$POSTEF       ********   X   03   SS$_EXQUOTA    = 0000001C            SS$_LENVIO     = 0000018C            

SS$_ABORT      = 0000002C            SS$_EXTIDXFILE = 00000880            SS$_LKWSETFUL  = 00000194            

SS$_ACCONFLICT = 00000800            SS$_FCPREADERR = 00000888            SS$_MBFULL     = 000008D8            

SS$_ACCVIO     = 0000000C            SS$_FCPREPSTN  = 00000988            SS$_MBTOOSML   = 0000019C            

SS$_ACPVAFUL   = 000002FC            SS$_FCPREWNDERR= 00000890            SS$_MCHECK     = 000002BC            

SS$_ARTRES     = 00000474            SS$_FCPSPACERR = 00000898            SS$_MEDOFL     = 000001A4            

SS$_ASTFLT     = 0000040C            SS$_FCPWRITERR = 000008A0            SS$_MSGNOTFND  = 00000621            

SS$_BADATTRIB  = 00000034            SS$_FILACCERR  = 0000009C            SS$_MTLBLLONG  = 00000304            

SS$_BADCHKSUM  = 00000808            SS$_FILALRACC  = 000000A4            SS$_MUSTCLOSEFL= 00000948            

SS$_BADESCAPE  = 0000003C            SS$_FILELOCKED = 000008A8            SS$_NOAQB      = 00000314            

SS$_BADFILEHDR = 00000810            SS$_FILENUMCHK = 000008B0            SS$_NODATA     = 000001AC            

SS$_BADFILENAME= 00000818            SS$_FILESEQCHK = 000008B8            SS$_NOHANDLER  = 000008F8            

SS$_BADFILEVER = 00000820            SS$_FILESTRUCT = 000008C0            SS$_NOHOMEBLK  = 000008E0            

SS$_BADIMGHDR  = 00000044            SS$_FILNOTACC  = 000000AC            SS$_NOIOCHAN   = 000001B4            

SS$_BADIRECTORY= 00000828            SS$_FILNOTCNTG = 000002AC            SS$_NOLINKS    = 0000027C            

SS$_BADPARAM   = 00000014            SS$_FILNOTEXP  = 000000B4            SS$_NOLOGNAM   = 000001BC            

SS$_BADSTACK   = 000002B4            SS$_FLTDIV     = 00000494            SS$_NOMBX      = 00000274            

SS$_BEGOFFILE  = 00000938            SS$_FLTOVF     = 0000048C            SS$_NOMOREFILES= 00000930            

SS$_BLOCKCNTERR= 00000940            SS$_FLTUND     = 0000049C            SS$_NONEXDRV   = 000001C4            

SS$_BREAK      = 00000414            SS$_FORMAT     = 000000BC            SS$_NONEXPR    = 000008E8            

SS$_BUFBYTALI  = 0000030C            SS$_GPTFULL    = 000000C4            SS$_NONLOCAL   = 000008F0            

SS$_BUFFEROVF  = 00000601            SS$_GSDFULL    = 000000CC            SS$_NOPRIV     = 00000024            

SS$_BUGCHECK   = 000002A4            SS$_HANGUP     = 000002CC            SS$_NORMAL     = 00000001            

SS$_CANCEL     = 00000830            SS$_HEADERFULL = 000008C8            SS$_NOSIGNAL   = 00000900            

SS$_CHANINTLK  = 0000004C            SS$_IDXFILEFULL= 000008D0            SS$_NOSOLICIT  = 00000284            

SS$_CLIFRCEXT  = 00000980            SS$_ILLBLKNUM  = 000000DC            SS$_NOSUCHDEV  = 00000908            

SS$_CMODSUPR   = 0000041C            SS$_ILLCNTRFUNC= 000000E4            SS$_NOSUCHFILE = 00000910            

SS$_CMODUSER   = 00000424            SS$_ILLEFC     = 000000EC            SS$_NOSUCHNODE = 0000028C            

SS$_COMPAT     = 0000042C            SS$_ILLIOFUNC  = 000000F4            SS$_NOSUCHSEC  = 00000978            

SS$_CONTINUE   = 00000001            SS$_ILLLBLAST  = 00000968            SS$_NOTAPEOP   = 00000264            

SS$_CONTROLC   = 00000651            SS$_ILLPAGCNT  = 000000FC            SS$_NOTFILEDEV = 000001CC            

SS$_CONTROLO   = 00000609            SS$_ILLSEQOP   = 000002DC            SS$_NOTINTBLSZ = 000001D4            

SS$_CONTROLY   = 00000611            SS$_ILLSER     = 00000104            SS$_NOTLABELMT = 000001DC            

SS$_CREATED    = 00000619            SS$_ILLUSRLBLRD= 00000958            SS$_NOTMODIFIED= 00000659            

SS$_CTRLERR    = 00000054            SS$_ILLUSRLBLWT= 00000960            SS$_NOTNETDEV  = 000002EC            

SS$_DATACHECK  = 0000005C            SS$_INCVOLLABEL= 0000010C            SS$_NOTRAN     = 00000629            

SS$_DATAOVERUN = 00000838            SS$_INSFARG    = 00000114            SS$_NOTSQDEV   = 000001E4            

SS$_DEBUG      = 0000046C            SS$_INSFMEM    = 00000124            SS$_OPCCUS     = 00000434            

SS$_DECOVF     = 000004A4            SS$_INSFRAME   = 0000012C            SS$_OPCDEC     = 0000043C            

SS$_DEVACTIVE  = 000002C4            SS$_INSFWSL    = 0000011C            SS$_OPINCOMPL  = 000002D4            

SS$_DEVALLOC   = 00000840            SS$_INTDIV     = 00000484            SS$_PAGOWNVIO  = 000001EC            

SS$_DEVALRALLOC= 00000641            SS$_INTOVF     = 0000047C            SS$_PAGRDERR   = 00000444            

SS$_DEVASSIGN  = 00000848            SS$_IVADDR     = 00000134            SS$_PARITY     = 000001F4            

SS$_DEVFOREIGN = 00000064            SS$_IVCHAN     = 0000013C            SS$_PARTESCAPE = 000001FC            

SS$_DEVICEFULL = 00000850            SS$_IVCHNLSEC  = 0000026C            SS$_PFMBSY     = 00000204            

SS$_DEVMOUNT   = 0000006C            SS$_IVDEVNAM   = 00000144            SS$_PLHLDR     = 00000404            

SS$_DEVNOTALLOC= 00000858            SS$_IVGSDNAM   = 0000014C            SS$_PSTFULL    = 0000020C            

SS$_DEVNOTMBX  = 00000074            SS$_IVLOGNAM   = 00000154            SS$_RADRMOD    = 0000044C            

SS$_DEVNOTMOUNT= 0000007C            SS$_IVLOGTAB   = 0000015C            SS$_REJECT     = 00000294            

SS$_DEVOFFLINE = 00000084            SS$_IVPROTECT  = 000002F4            SS$_REMOTE     = 00000649            

SS$_DIRFULL    = 00000860            SS$_IVQUOTAL   = 00000164            SS$_RESIGNAL   = 00000918            

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  27

SYMBOL TABLE                                                                                                                    (11)



SS$_RESULTOVF  = 00000214            

SS$_ROPRAND    = 00000454            

SS$_SECTBLFUL  = 0000021C            

SS$_SSFAIL     = 0000045C            

SS$_SUBRNG     = 000004AC            

SS$_SUPERSEDE  = 00000631            

SS$_TAPEPOSLOST= 00000224            

SS$_TBIT       = 00000464            

SS$_TIMEOUT    = 0000022C            

SS$_TOOMANYVER = 00000990            

SS$_TOOMUCHDATA= 0000029C            

SS$_UNASEFC    = 00000234            

SS$_UNSAFE     = 0000023C            

SS$_UNWIND     = 00000920            

SS$_UNWINDING  = 00000928            

SS$_VASFULL    = 00000244            

SS$_VECINUSE   = 0000024C            

SS$_VOLINV     = 00000254            

SS$_WAITUSRLBL = 00000950            

SS$_WASCLR     = 00000001            

SS$_WASECC     = 00000639            

SS$_WASSET     = 00000009            

SS$_WRITLCK    = 0000025C            

SS$_WRONGACP   = 0000031C            

SVAPTE           00000000            

VA$M_BYTE      = 000001FF            

VA$M_P1        = 40000000            

VA$M_SYSTEM    = 80000000            

VA$M_VPG       = FFFFFE00            

VA$M_VPN       = 3FFFFE00            

VA$S_BYTE      = 00000009            

VA$S_VPG       = 00000017            

VA$S_VPN       = 00000015            

VA$V_BYTE      = 00000000            

VA$V_P1        = 0000001E            

VA$V_SYSTEM    = 0000001F            

VA$V_VPG       = 00000009            

VA$V_VPN       = 00000009            

XIP_B_UPDFLG     00000058            

XIP_C_LENGTH     0000005C            

XIP_L_DIREC      00000050            

XIP_L_SCANCNT    0000004C            

XIP_L_STARTVA    00000054            





PROGRAM SECTION SYNOPSIS



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

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

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

Y$EXEPAGED       0000016E      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$MMGCOD          00000295      04     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

6430. BYTES LEFT IN FREE MEMORY POOL.

1660. BYTES OF RECLAIMED MEMORY.

SYSUPDSEC       - Update Section File System Service             21-AUG-1978 20:46:08   VAX-11 MACRO X0.3-11               Page  28

PROGRAM SECTION SYNOPSIS                                                                                                        (11)



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

19 MLB DIR RDS - 1140 GETS TO DEFINE 33 MACROS. 92 INTER. FILE WRITES. 

