USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   0
Table of contents

    (1)       29        Declarations and Equates
    (1)       99        Transfer Vector and Service Definitions
    (1)      122        Kernel Mode Dispatcher
    (1)      174        Executive Mode Dispatcher
    (1)      224        Difference System Times
    (1)      259        Get System Time
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   1
V01-000                                                                  14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

                                     0000     1 	.TITLE	USER_SYS_DISP - user system service dispatcher
                                     0000     2 	.IDENT	'V01-000'
                                     0000     3 ;++
                                     0000     4 ; Facility: 
                                     0000     5 ;	User Written System Services
                                     0000     6 ;
                                     0000     7 ; Abstract:
                                     0000     8 ;	This module contains a dispatcher for user written system services 
                                     0000     9 ;	based on the example in SYS$SYSROOT:[SYSHLP.EXAMPLES].  The explanatory
                                     0000    10 ;	comments in that example have been deleted, but the code remains
                                     0000    11 ;	essentially the same except for the service routines.
                                     0000    12 ;
                                     0000    13 ;	The following routines are used to obtain timing statistics with 
                                     0000    14 ;	greater than 10 ms resolution.  
                                     0000    15 ;
                                     0000    16 ;	The ARC$GETTIME routine reads the microsecond real-time
                                     0000    17 ;	clock ICR register, adds it to the software time, and returns
                                     0000    18 ;	microsecond resolution time stats in 64-bit system time format.
                                     0000    19 ;
                                     0000    20 ;	The ARC$DIFFTIME routine returns the difference between 
                                     0000    21 ;	two system times in microseconds.
                                     0000    22 ;
                                     0000    23 ;	Author:  Mark Paulk
                                     0000    24 ;		 System Development Corporation
                                     0000    25 ;		 4810 Bradford Blvd NW
                                     0000    26 ;		 Huntsville, AL  35805
                                     0000    27 ;	Date:  16 September 1983
                                     0000    28 ;--
                                     0000    29 	.SBTTL	Declarations and Equates
                                     0000    30 ;
                                     0000    31 ;	Include Files
                                     0000    32 ;
                                     0000    33 
                                     0000    34 	.LIBRARY "SYS$LIBRARY:LIB.MLB"	; Macro library for system structure
                                     0000    35 					;  definitions
                                     0000    36 ;
                                     0000    37 ;	Macro Definitions
                                     0000    38 ;
                                     0000    39 ;	DEFINE_SERVICE - A macro to make the appropriate entries in several
                                     0000    40 ;			 different PSECTs required to define an EXEC or KERNEL
                                     0000    41 ;			 mode service.  These include the transfer vector,
                                     0000    42 ;			 the case table for dispatching, and a table containing
                                     0000    43 ;			 the number of required arguments.
                                     0000    44 ;
                                     0000    45 ;	DEFINE_SERVICE Name,Number_of_Arguments,Mode
                                     0000    46 ;
                                     0000    47 	.MACRO	DEFINE_SERVICE,NAME,NARG=0,MODE=KERNEL
                                     0000    48 	.PSECT	$$$TRANSFER_VECTOR,PAGE,NOWRT,EXE,PIC
                                     0000    49 	.ALIGN	QUAD			; Align entry points for speed and style
                                     0000    50 	.TRANSFER	NAME		; Define name as universal symbol for entry
                                     0000    51 	.MASK	NAME
                                     0000    52 	.IF	IDN MODE,KERNEL
                                     0000    53 	CHMK	#<KCODE_BASE+KERNEL_COUNTER> ; Change to kernel mode and execute
                                     0000    54 	RET				; Return
                                     0000    55 	KERNEL_COUNTER=KERNEL_COUNTER+1	; Advance counter
                                     0000    56 
                                     0000    57 	.PSECT	KERNEL_NARG,BYTE,NOWRT,EXE,PIC
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   2
V01-000                         Declarations and Equates                 14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

                                     0000    58 	.BYTE	NARG			; Define number of required arguments
                                     0000    59 
                                     0000    60 	.PSECT	USER_KERNEL_DISP1,BYTE,NOWRT,EXE,PIC
                                     0000    61 	.WORD	2+NAME-KCASE_BASE	; Make entry in kernel mode CASE table
                                     0000    62 
                                     0000    63 	.IFF
                                     0000    64 	CHME	#<ECODE_BASE+EXEC_COUNTER> ; Change to executive mode and execute
                                     0000    65 	RET				; Return
                                     0000    66 	EXEC_COUNTER=EXEC_COUNTER+1	; Advance counter
                                     0000    67 
                                     0000    68 	.PSECT	EXEC_NARG,BYTE,NOWRT,EXE,PIC
                                     0000    69 	.BYTE	NARG			; Define number of required arguments
                                     0000    70 
                                     0000    71 	.PSECT	USER_EXEC_DISP1,BYTE,NOWRT,EXE,PIC
                                     0000    72 	.WORD	2+NAME-ECASE_BASE	; Make entry in exec mode CASE table
                                     0000    73 	.ENDC				;
                                     0000    74 	.ENDM	DEFINE_SERVICE		;
                                     0000    75 ;
                                     0000    76 ;	Equated Symbols
                                     0000    77 ;
                                     0000    78 
                                     0000    79 	$PHDDEF				; Define process header offsets
                                     0000    80 	$PLVDEF				; Define PLV offsets and values
                                     0000    81 	$PRDEF				; Define processor register numbers
                                     0000    82 ;
                                     0000    83 ;	Initialize counters for change mode dispatching codes
                                     0000    84 ;
                           00000000  0000    85 KERNEL_COUNTER=0			; Kernel code counter
                           00000000  0000    86 EXEC_COUNTER=0				; Exec code counter
                                     0000    87 
                                     0000    88 ;
                                     0000    89 ;	Own Storage
                                     0000    90 ;
                                 00000000    91 	.PSECT	KERNEL_NARG,BYTE,NOWRT,EXE,PIC
                                     0000    92 KERNEL_NARG:				; Base of byte table containing the
                                     0000    93 					;  number of required arguments.
                                 00000000    94 	.PSECT	EXEC_NARG,BYTE,NOWRT,EXE,PIC
                                     0000    95 EXEC_NARG:				; Base of byte table containing the
                                     0000    96 					;  number of required arguments.
                                     0000    97 ;
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   3
V01-000                         Transfer Vector and Service Definitions  14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

                                     0000    99 	.SBTTL	Transfer Vector and Service Definitions
                                     0000   100 
                                     0000   101 	define_service	ARC$DIFFTIME,3,EXEC 
                                     0002   102 			; Service to get system time difference in us
                                     0002   103 
                                     0002   104 	define_service	ARC$GETTIME,1,KERNEL
                                     0002   105 			; Service to get system time + microtime
                                     0002   106 
                           FFFFFC00  0002   107 KCODE_BASE=-1024	; Base CHMK code value for these services
                           FFFFFC00  0002   108 ECODE_BASE=-1024	; Base CHME code value for these services
                                     0002   109 
                                 00000000   110 	.PSECT	USER_SERVICES,PAGE,VEC,PIC,NOWRT,EXE
                                     0000   111 
                           00000001  0000   112 	.LONG	PLV$C_TYP_CMOD		; Set type of vector to change mode dispatcher
                           00000000' 0004   113 	.LONG	SYS$K_VERSION		; Identify system version 
                           00000005' 0008   114 	.LONG	KERNEL_DISPATCH-.	; Offset to kernel mode dispatcher
                           00000001' 000C   115 	.LONG	EXEC_DISPATCH-.		; Offset to executive mode dispatcher
                           00000000  0010   116 	.LONG	0			; No user rundown service
                           00000000  0014   117 	.LONG	0			; Reserved.
                           00000000  0018   118 	.LONG	0			; No RMS dispatcher
                           00000000  001C   119 	.LONG	0			; Address check - PIC image
                                     0020   120 ;
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   4
V01-000                         Kernel Mode Dispatcher                   14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

                                     0020   122 	.SBTTL	Kernel Mode Dispatcher
                                     0020   123 ;++
                                     0020   124 ; Input Parameters:
                                     0020   125 ;	(SP) - Return address if bad change mode value
                                     0020   126 ;	 R0  - Change mode argument value.
                                     0020   127 ;	 R4  - Current PCB Address. (Therefore R4 must be specified in all
                                     0020   128 ;		 register save masks for kernel routines.)
                                     0020   129 ;	 AP  - Argument pointer existing when the change
                                     0020   130 ;	       mode instruction was executed.
                                     0020   131 ;	 FP  - Address of minimal call frame to exit
                                     0020   132 ;	       the change mode dispatcher and return to
                                     0020   133 ;	       the original mode.
                                     0020   134 ;--
                                 00000000   135 	.PSECT	USER_KERNEL_DISP0,BYTE,NOWRT,EXE,PIC
                                     0000   136 KACCVIO:				; Kernel access violation
                  50   0000'8F   3C  0000   137 	MOVZWL	#SS$_ACCVIO,R0		; Set access violation status code
                                 04  0005   138 	RET				;  and return
                                     0006   139 KINSFARG:				; Kernel insufficient arguments.
                  50   0000'8F   3C  0006   140 	MOVZWL	#SS$_INSFARG,R0		; Set status code and
                                 04  000B   141 	RET				;  return
                                 05  000C   142 KNOTME:	RSB				; RSB to forward request
                                     000D   143 
                                     000D   144 KERNEL_DISPATCH::			; Entry to dispatcher
                  51   0400 C0   9E  000D   145 	MOVAB	W^-KCODE_BASE(R0),R1	; Normalize dispatch code value
                            F8   19  0012   146 	BLSS	KNOTME			; Branch if code value too low
                       01   51   B1  0014   147 	CMPW	R1,#KERNEL_COUNTER	; Check high limit
                            F3   1E  0017   148 	BGEQU	KNOTME			; Branch if out of range
                                     0019   149 ;
                                     0019   150 ; The dispatch code has now been verified as being handled by this dispatcher,
                                     0019   151 ; now the argument list will be probed and the required number of arguments
                                     0019   152 ; verified.
                                     0019   153 ;
                51   0000'CF41   9A  0019   154 	MOVZBL	W^KERNEL_NARG[R1],R1	; Get required argument count
            51   00000004 9F41   DE  001F   155 	MOVAL	@#4[R1],R1		; Compute byte count including arg count
                                     0027   156 	IFNORD	R1,(AP),KACCVIO		; Branch if arglist not readable
                0400'CF40   6C   91  002D   157 	CMPB	(AP),W^<KERNEL_NARG-KCODE_BASE>[R0] ; Check for required number
                            D1   1F  0033   158 	BLSSU	KINSFARG		;  of arguments
                            50   AF  0035   159 	CASEW	R0,-			; Case on change mode
                                     0037   160 		-			; argument value
                                     0037   161 		#KCODE_BASE,-		; Base value
                  00   FC00 8F       0037   162 		#<KERNEL_COUNTER-1>	; Limit value (number of entries)
                                     003B   163 KCASE_BASE:				; Case table base address for DEFINE_SERVICE
                                     003B   164 ;
                                     003B   165 ;	Case table entries are made in the PSECT USER_KERNEL_DISP1 by
                                     003B   166 ;	invocations of the DEFINE_SERVICE macro.  The three PSECTS, 
                                     003B   167 ;	USER_KERNEL_DISP0,1,2 will be abutted in lexical order at link-time.
                                     003B   168 ;
                                 00000000   169 	.PSECT	USER_KERNEL_DISP2,BYTE,NOWRT,EXE,PIC
                                 05  0000   170 	RSB				; Return to reject out of
                                     0001   171 					; range value
                                     0001   172 ;
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   5
V01-000                         Executive Mode Dispatcher                14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

                                     0001   174 	.SBTTL	Executive Mode Dispatcher
                                     0001   175 ;++
                                     0001   176 ; Input Parameters:
                                     0001   177 ;	(SP) - Return address if bad change mode value
                                     0001   178 ;	 R0  - Change mode argument value.
                                     0001   179 ;	 AP  - Argument pointer existing when the change
                                     0001   180 ;	       mode instruction was executed.
                                     0001   181 ;	 FP  - Address of minimal call frame to exit
                                     0001   182 ;	       the change mode dispatcher and return to
                                     0001   183 ;	       the original mode.
                                     0001   184 ;--
                                 00000000   185 	.PSECT	USER_EXEC_DISP0,BYTE,NOWRT,EXE,PIC
                                     0000   186 EACCVIO:				; Exec access violation
                  50   0000'8F   3C  0000   187 	MOVZWL	#SS$_ACCVIO,R0		; Set access violation status code
                                 04  0005   188 	RET				;  and return
                                     0006   189 EINSFARG:				; Exec insufficient arguments.
                  50   0000'8F   3C  0006   190 	MOVZWL	#SS$_INSFARG,R0		; Set status code and
                                 04  000B   191 	RET				;  return
                                 05  000C   192 ENOTME:	RSB				; RSB to forward request
                                     000D   193 
                                     000D   194 EXEC_DISPATCH::				; Entry to dispatcher
                  51   0400 C0   9E  000D   195 	MOVAB	W^-ECODE_BASE(R0),R1	; Normalize dispatch code value
                            F8   19  0012   196 	BLSS	ENOTME			; Branch if code value too low
                       01   51   B1  0014   197 	CMPW	R1,#EXEC_COUNTER	; Check high limit
                            F3   1E  0017   198 	BGEQU	ENOTME			; Branch if out of range
                                     0019   199 ;
                                     0019   200 ; The dispatch code has now been verified as being handled by this dispatcher,
                                     0019   201 ; now the argument list will be probed and the required number of arguments
                                     0019   202 ; verified.
                                     0019   203 ;
                51   0000'CF41   9A  0019   204 	MOVZBL	W^EXEC_NARG[R1],R1	; Get required argument count
            51   00000004 9F41   DE  001F   205 	MOVAL	@#4[R1],R1		; Compute byte count including arg count
                                     0027   206 	IFNORD	R1,(AP),EACCVIO		; Branch if arglist not readable
                0400'CF40   6C   91  002D   207 	CMPB	(AP),W^<EXEC_NARG-ECODE_BASE>[R0] ; Check for required number
                            D1   1F  0033   208 	BLSSU	EINSFARG		;  of arguments
                            50   AF  0035   209 	CASEW	R0,-			; Case on change mode
                                     0037   210 		-			; argument value
                                     0037   211 		#ECODE_BASE,-		; Base value
                  00   FC00 8F       0037   212 		#<EXEC_COUNTER-1>	; Limit value (number of entries)
                                     003B   213 ECASE_BASE:				; Case table base address for DEFINE_SERVICE
                                     003B   214 ;
                                     003B   215 ;	Case table entries are made in the PSECT USER_EXEC_DISP1 by
                                     003B   216 ;	invocations of the DEFINE_SERVICE macro.  The three PSECTS, 
                                     003B   217 ;	USER_EXEC_DISP0,1,2 will be abutted in lexical order at link-time.
                                     003B   218 ;
                                 00000000   219 	.PSECT	USER_EXEC_DISP2,BYTE,NOWRT,EXE,PIC
                                 05  0000   220 	RSB				; Return to reject out of
                                     0001   221 					; range value
                                     0001   222 ;
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   6
V01-000                         Difference System Times                  14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

                                     0001   224 	.SBTTL	Difference System Times
                                     0001   225 ;++
                                     0001   226 ; Functional Description:
                                     0001   227 ;	This routine calculates the difference between two quadword
                                     0001   228 ;	system times and returns the difference in microseconds.
                                     0001   229 ;
                                     0001   230 ; Input Parameters:
                                     0001   231 ;	04(AP) - Address of high time
                                     0001   232 ;	08(AP) - Address of low time
                                     0001   233 ;	12(AP) - Address to return time difference
                                     0001   234 ;	R4 - PCB address of current process
                                     0001   235 ;
                                     0001   236 ; Output Parameters:
                                     0001   237 ;	R0 - Completion Status code
                                     0001   238 ;--
                                     0001   239 
                               0010  0001   240 	.ENTRY	ARC$DIFFTIME,^M<R4>	; Entry definition
                                     0003   241 	ifnord	#8,@4(ap),10$		; check for access violations
                                     000A   242 	ifnord	#8,@8(ap),10$
                                     0011   243 	ifnowrt	#4,@12(ap),10$
                    51   0C AC   D0  0018   244 	movl	12(ap),r1		; get address of result in register
                    52   08 AC   7D  001C   245 	movq	8(ap),r2		; place subtrahend in r2,r3
                    55   04 BC   D0  0020   246 	movl	@4(ap),r5		; initialize minuend address register
                       55   62   C2  0024   247 	subl	(r2),r5			; subtract
                    56   04 A2   D9  0027   248 	sbwc	4(r2),r6
                  61   55   0A   C7  002B   249 	divl3	#10,r5,(r1)		; change from 100 ns to 1 us resolution
                                     002F   250 					;  assume no significant bits past 32
                  50   0000'8F   3C  002F   251 	MOVZWL	#SS$_NORMAL,R0		; Set normal completion status
                                 04  0034   252 	RET				;  and return
                                     0035   253 
                  50   0000'8F   3C  0035   254 10$:	MOVZWL	#SS$_ACCVIO,R0		; Indicate access violation
                                 04  003A   255 	RET				;
                                     003B   256 	
                                     003B   257 ;
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   7
V01-000                         Get System Time                          14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

                                     003B   259 	.SBTTL	Get System Time
                                     003B   260 ;++
                                     003B   261 ; Input Parameters:
                                     003B   262 ;	04(AP) - Address to return system time + ICR value
                                     003B   263 ;	R4 - Address of current PCB
                                     003B   264 ;
                                     003B   265 ; Output Parameters:
                                     003B   266 ;	R0 - Completion Status Code
                                     003B   267 ;--
                                     003B   268 
                               0034  003B   269 	.ENTRY	ARC$GETTIME,^M<R2,R4,R5>
                    51   04 AC   D0  003D   270 	MOVL	4(AP),R1		; Get address to store time of day register
                                     0041   271 	IFNOWRT	#8,(R1),10$		; Branch if not writable
              61   00000000'GF   7D  0047   272 5$:	movq	g^exe$gq_systime,(r1)	; get software clock value
                       52   1A   DB  004E   273 	mfpr	#pr$_icr,r2		; get micro clock
              61   00000000'GF   D1  0051   274 	cmpl	g^exe$gq_systime,(r1)	; confirm time was not on tick boundary
                            ED   12  0058   275 	bneq	5$
              52   00002710 8F   C0  005A   276 6$:	addl2	#10000,r2		; offset for start at negative time
                       52   0A   C4  0061   277 	mull2	#10,r2			; change us to 100 ns
                       61   52   C0  0064   278 	addl2	r2,(r1)			; add hardware, software times
                    04 A1   00   D8  0067   279 	adwc	#0,4(r1)
                  50   0000'8F   3C  006B   280 	MOVZWL	#SS$_NORMAL,R0		; Set normal completion status
                                 04  0070   281 	RET				;  and return
                                     0071   282 
                  50   0000'8F   3C  0071   283 10$:	MOVZWL	#SS$_ACCVIO,R0		; Indicate access violation
                                 04  0076   284 	RET				;
                                     0077   285 
                                     0077   286 	.END
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   8
Symbol table                                                             14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

ARC$DIFFTIME     00000001 RG    0C      PHD$L_R1         00000088               PHD$W_REQPGCNT   000000D8               
ARC$GETTIME      0000003B RG    0C      PHD$L_R10        000000AC               PHD$W_RESPGCNT   000000D6               
EACCVIO          00000000 R     0B      PHD$L_R11        000000B0               PHD$W_SWAPSIZE   0000004E               
ECASE_BASE       0000003B R     0B      PHD$L_R12        000000B4               PHD$W_WAITIME    0000005E               
ECODE_BASE     = FFFFFC00               PHD$L_R13        000000B8               PHD$W_WSAUTH     0000000A               
EINSFARG         00000006 R     0B      PHD$L_R2         0000008C               PHD$W_WSAUTHEXT  00000014               
ENOTME           0000000C R     0B      PHD$L_R3         00000090               PHD$W_WSDYN      0000000E               
EXE$GQ_SYSTIME   ********   X   0C      PHD$L_R4         00000094               PHD$W_WSEXTENT   00000016               
EXEC_COUNTER   = 00000001               PHD$L_R5         00000098               PHD$W_WSFLUID    00000070               
EXEC_DISPATCH    0000000D RG    0B      PHD$L_R6         0000009C               PHD$W_WSLAST     00000012               
EXEC_NARG        00000000 R     04      PHD$L_R7         000000A0               PHD$W_WSLIST     00000008               
KACCVIO          00000000 R     09      PHD$L_R8         000000A4               PHD$W_WSLOCK     0000000C               
KCASE_BASE       0000003B R     09      PHD$L_R9         000000A8               PHD$W_WSLX       00000046               
KCODE_BASE     = FFFFFC00               PHD$L_RESLSTH    000000EC               PHD$W_WSNEXT     00000010               
KERNEL_COUNTER = 00000001               PHD$L_SPARE      00000134               PHD$W_WSQUOTA    00000018               
KERNEL_DISPATCH  0000000D RG    09      PHD$L_SSP        0000007C               PHD$W_WSSIZE     0000004C               
KERNEL_NARG      00000000 R     03      PHD$L_TIMREF     000000FC               PLV$C_TYP_CMOD = 00000001               
KINSFARG         00000006 R     09      PHD$L_USP        00000080               PLV$C_TYP_MSG  = 00000002               
KNOTME           0000000C R     09      PHD$L_WSL        00000178               PLV$L_CHECK      0000001C               
PHD$B_ASTLVL     000000CB               PHD$M_DALCSTX  = 00000002               PLV$L_EXEC       0000000C               
PHD$B_AUTHPRI    00000108               PHD$M_IWSPEAKCK= 00000010               PLV$L_KERNEL     00000008               
PHD$B_AWSMODE    0000005D               PHD$M_NOACCVIO = 00000008               PLV$L_MSGDSP     00000008               
PHD$B_CPUMODE    0000005C               PHD$M_PFMFLG   = 00000001               PLV$L_RMS        00000018               
PHD$B_DFPFC      00000034               PHD$M_WSPEAKCHK= 00000004               PLV$L_TYPE       00000000               
PHD$B_PAGFIL     0000001F               PHD$Q_AUTHPRIV   000000DC               PLV$L_USRUNDWN   00000010               
PHD$B_PGTBPFC    00000035               PHD$Q_IMAGPRIV   000000E4               PLV$L_VERSION    00000004               
PHD$C_LENGTH     00000178               PHD$Q_PRIVMSK    00000000               PR$S_SID_ECO   = 00000009               
PHD$C_PHDPAGCTX= 00000008               PHD$S_ASTLVL   = 00000008               PR$S_SID_PL    = 00000003               
PHD$K_LENGTH     00000178               PHD$S_AUTHPRIV = 00000008               PR$S_SID_SN    = 0000000C               
PHD$L_BIOCNT     00000054               PHD$S_IMAGPRIV = 00000008               PR$S_SID_TYPE  = 00000008               
PHD$L_CPULIM     00000058               PHD$S_P0LR     = 00000018               PR$V_SID_ECO   = 0000000F               
PHD$L_CPUTIM     00000038               PHD$S_PRIVMSK  = 00000008               PR$V_SID_PL    = 0000000C               
PHD$L_DIOCNT     00000050               PHD$V_ASTLVL   = 00000018               PR$V_SID_SN    = 00000000               
PHD$L_ESP        00000078               PHD$V_DALCSTX  = 00000001               PR$V_SID_TYPE  = 00000018               
PHD$L_EXTRACPU   0000010C               PHD$V_IWSPEAKCK= 00000004               PR$_ACCR       = 00000029               
PHD$L_FREP0VA    00000028               PHD$V_NOACCVIO = 00000003               PR$_ACCS       = 00000028               
PHD$L_FREP1VA    00000030               PHD$V_P0LR     = 00000000               PR$_ASTLVL     = 00000013               
PHD$L_FREPTECNT  0000002C               PHD$V_PFMFLG   = 00000000               PR$_CADR       = 00000025               
PHD$L_IMGCNT     000000F0               PHD$V_WSPEAKCHK= 00000002               PR$_CAER       = 00000027               
PHD$L_KSP        00000074               PHD$W_ASTLM      00000040               PR$_CMIERR     = 00000017               
PHD$L_MPINHIBIT  00000100               PHD$W_BAK        00000044               PR$_CRBT       = 00000043               
PHD$L_P0BR       000000C4               PHD$W_CWSLX      000000DA               PR$_CSRD       = 0000001D               
PHD$L_P0LRASTL   000000C8               PHD$W_DFWSCNT    0000001A               PR$_CSRS       = 0000001C               
PHD$L_P1BR       000000CC               PHD$W_EMPTPG     000000D4               PR$_CSTD       = 0000001F               
PHD$L_P1LR       000000D0               PHD$W_EXTDYNWS   00000072               PR$_CSTS       = 0000001E               
PHD$L_PAGEFLTS   00000048               PHD$W_FLAGS      00000036               PR$_CSWP       = 00000042               
PHD$L_PAGFIL     0000001C               PHD$W_PHVINDEX   00000042               PR$_ESP        = 00000001               
PHD$L_PC         000000BC               PHD$W_PRCLM      0000003E               PR$_ICCS       = 00000018               
PHD$L_PCB        00000074               PHD$W_PST        00000020               PR$_ICR        = 0000001A               
PHD$L_PFLREF     000000F8               PHD$W_PSTBASMAX  00000046               PR$_IPL        = 00000012               
PHD$L_PFLTRATE   000000F4               PHD$W_PSTFREE    00000026               PR$_ISP        = 00000004               
PHD$L_PGFLTIO    00000104               PHD$W_PSTLAST    00000024               PR$_KSP        = 00000000               
PHD$L_PSL        000000C0               PHD$W_PTCNTACT   0000006C               PR$_MAPEN      = 00000038               
PHD$L_PSTBASOFF  00000020               PHD$W_PTCNTLCK   00000068               PR$_MCESR      = 00000026               
PHD$L_PTWSLELCK  00000060               PHD$W_PTCNTMAX   0000006E               PR$_MCTL1      = 00000044               
PHD$L_PTWSLEVAL  00000064               PHD$W_PTCNTVAL   0000006A               PR$_MCTL2      = 00000045               
PHD$L_R0         00000084               PHD$W_QUANT      0000003C               PR$_MDCR1      = 00000049               
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page   9
Symbol table                                                             14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

PR$_MEAR       = 00000048               
PR$_MECCR      = 0000004B               
PR$_MEDR       = 0000004A               
PR$_MGEN       = 00000046               
PR$_MTBER      = 00000047               
PR$_NICR       = 00000019               
PR$_P0BR       = 00000008               
PR$_P0LR       = 00000009               
PR$_P1BR       = 0000000A               
PR$_P1LR       = 0000000B               
PR$_PAMACC     = 00000040               
PR$_PAMLOC     = 00000041               
PR$_PCBB       = 00000010               
PR$_PME        = 0000003D               
PR$_RXCS       = 00000020               
PR$_RXDB       = 00000021               
PR$_SBIER      = 00000034               
PR$_SBIFS      = 00000030               
PR$_SBIMT      = 00000033               
PR$_SBIQC      = 00000036               
PR$_SBIS       = 00000031               
PR$_SBISC      = 00000032               
PR$_SBITA      = 00000035               
PR$_SBR        = 0000000C               
PR$_SCBB       = 00000011               
PR$_SID        = 0000003E               
PR$_SID_TYP730 = 00000003               
PR$_SID_TYP750 = 00000002               
PR$_SID_TYP780 = 00000001               
PR$_SID_TYP7VV = 00000004               
PR$_SID_TYPMAX = 00000004               
PR$_SIRR       = 00000014               
PR$_SISR       = 00000015               
PR$_SLR        = 0000000D               
PR$_SSP        = 00000002               
PR$_TBCHK      = 0000003F               
PR$_TBDR       = 00000024               
PR$_TBIA       = 00000039               
PR$_TBIS       = 0000003A               
PR$_TODR       = 0000001B               
PR$_TXCS       = 00000022               
PR$_TXDB       = 00000023               
PR$_UBRESET    = 00000037               
PR$_USP        = 00000003               
PR$_WCSA       = 0000002C               
PR$_WCSD       = 0000002D               
SS$_ACCVIO       ********   X   09      
SS$_INSFARG      ********   X   09      
SS$_NORMAL       ********   X   0C      
SYS$K_VERSION    ********   X   08      
USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page  10
Psect synopsis                                                           14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)


                                                +----------------+
                                                ! Psect synopsis !
                                                +----------------+

PSECT name                      Allocation          PSECT No.  Attributes     
----------                      ----------          ---------  ----------     
.  ABS  .                       00000000  (    0.)  00 (  0.)  NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT NOVEC BYTE  
. BLANK .                       00000000  (    0.)  01 (  1.)  NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT NOVEC BYTE  
$ABS$                           0000017C  (  380.)  02 (  2.)  NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT NOVEC BYTE  
KERNEL_NARG                     00000001  (    1.)  03 (  3.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT NOVEC BYTE  
EXEC_NARG                       00000001  (    1.)  04 (  4.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT NOVEC BYTE  
$$$TRANSFER_VECTOR              0000000F  (   15.)  05 (  5.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT NOVEC PAGE  
USER_EXEC_DISP1                 00000002  (    2.)  06 (  6.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT NOVEC BYTE  
USER_KERNEL_DISP1               00000002  (    2.)  07 (  7.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT NOVEC BYTE  
USER_SERVICES                   00000020  (   32.)  08 (  8.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT   VEC PAGE  
USER_KERNEL_DISP0               0000003B  (   59.)  09 (  9.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT NOVEC BYTE  
USER_KERNEL_DISP2               00000001  (    1.)  0A ( 10.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT NOVEC BYTE  
USER_EXEC_DISP0                 0000003B  (   59.)  0B ( 11.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT NOVEC BYTE  
USER_EXEC_DISP2                 00000077  (  119.)  0C ( 12.)    PIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT NOVEC BYTE  

                                             +------------------------+
                                             ! Performance indicators !
                                             +------------------------+

Phase                    Page faults    CPU Time       Elapsed Time   
-----                    -----------    --------       ------------   
Initialization                   27     00:00:00.06    00:00:00.18
Command processing               28     00:00:00.19    00:00:00.39
Pass 1                          358     00:00:03.54    00:00:04.48
Symbol table sort                 0     00:00:00.29    00:00:00.29
Pass 2                           98     00:00:00.83    00:00:00.96
Symbol table output              22     00:00:00.14    00:00:00.14
Psect synopsis output             7     00:00:00.06    00:00:00.06
Cross-reference output            0     00:00:00.00    00:00:00.00
Assembler run totals            544     00:00:05.13    00:00:06.51

The working set limit was 600 pages.
15669 bytes (31 pages) of virtual memory were used to buffer the intermediate code.
There were 20 pages of symbol table space allocated to hold 221 non-local and 4 local symbols.
286 source lines were read in Pass 1, producing 38 object records in Pass 2.
14 pages of virtual memory were used to define 12 macros.

                                            +--------------------------+
                                            ! Macro library statistics !
                                            +--------------------------+

Macro library name                           Macros defined      
------------------                           --------------      
SYS$SYSROOT:[SYSLIB]LIB.MLB;1                           3        
SYS$SYSROOT:[SYSLIB]STARLET.MLB;1                       5        
TOTALS (all libraries)                                  8        

318 GETS were required to define 8 macros.

There were no errors, warnings or information messages.

USER_SYS_DISP                   - user system service dispatcher         14-OCT-1983 11:36:40  VAX-11 Macro V03-00         Page  11
VAX-11 Macro Run Statistics                                              14-OCT-1983 11:34:46  SYS$SYSROOT:[SDCMARK.JUNK]USS.MAR;(1)

/LIST USS
