SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (2)     100  DECLARATIONS

   (3)     100  DEBUG_BOOT	- DEBUG/TRACEBACK/IMAGE ACTIVATOR

   (4)     100  Start the Program or DEBUG

   (5)     100  Exception Handler for TRACE

   (6)     100  Map in and Start DEBUG or TRACE

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   1

001608                                                                                                                           (1)



                                     0000   100 	.TITLE	SYSIMGSTA - Image Startup System Service

                                     0000   200 	.IDENT	/001608/

                                     0000   300 

                                     0000   400 ;++

                                     0000   500 ; Facility:	EXECUTIVE

                                     0000   600 ;

                                     0000   700 ; Abstract:

                                     0000   800 ;	This code is part of the System image.  It is entered directly

                                     0000   900 ;	as the 'DEBUG' transfer address, even when the real DEBUG

                                     0000  1000 ;	will not be invoked, since it is this 'bootstrap' which

                                     0000  1100 ;	decides whether to 

                                     0000  1200 ;		1) simply start up the user image directly,

                                     0000  1300 ;		2) map the bulk of DEBUG into the users' P1 space

                                     0000  1400 ;		   and transfers control to DEBUG,

                                     0000  1500 ;		3) catch an SS$_DEBUG signal and arrange to have

                                     0000  1600 ;		   a mapped DEBUGger attached to a running process,

                                     0000  1700 ;		or

                                     0000  1800 ;		4) catch any other signal, report it, and try to

                                     0000  1900 ;		   invoke the mapped image which prints a 'traceback' or

                                     0000  2000 ;		   symbolic dump of where the program was when it faulted.

                                     0000  2100 ;

                                     0000  2200 ; Environment:

                                     0000  2300 ;	Runs at user mode, non-AST level in the System address space.

                                     0000  2400 ;

                                     0000  2500 ; Author:	Carol Peters, Creation date: 21 July 1977

                                     0000  2600 ;

                                     0000  2700 ; Modified by:

                                     0000  2800 ;	Kevin Pammett,		27-mar-1978:	Version 15

                                     0000  2900 ;	Peter H. Lipman,	24-may-1978:	Version 16

                                     0000  3000 ;

                                     0000  3100 ; 02	14-12-77	Attempt to do a map global section before

                                     0000  3200 ;			doing a create and map.

                                     0000  3300 ; 03	20-12-77	Changes by Peter Lipman.

                                     0000  3400 ; 04	11-01-78	Add global literal dbg$_debug_here, defined to

                                     0000  3500 ;			have a value of 1. Indicates that DEBUG is present

                                     0000  3600 ;			in linked image.

                                     0000  3700 ; 05	12-01-78	-Call frame generated to invoke DEBUG_MAPIN is 

                                     0000  3800 ;			 now retained so that we can have a frame handler

                                     0000  3900 ; 06	13-jan-78	-BOOT can now mapin DEBUG.EXE or TRACE.EXE

                                     0000  4000 ; 07	17-jan-78	-Boot frame handler can catch any exception 

                                     0000  4100 ;			 and invoke traceback

                                     0000  4200 ; 08	25-jan-78	-BOOT now pays attention to CLI/LINK status bits

                                     0000  4300 ;			 and decides who to invoke, etc.

                                     0000  4400 ; 09	26-jan-78	-TRACEBACk only happens if the exception is fatal

                                     0000  4500 ;			 otherwise we simply resignal it.

                                     0000  4600 ; 10	27-jan-78	-Cut down size of BOOT by having only 1 set

                                     0000  4700 ;			 of string descriptors for TRACE.EXE

                                     0000  4800 ;			 and DEBUG.EXE.  Also changed to using W^

                                     0000  4900 ;			 for displacements, so had to put all CODE and OWN

                                     0000  5000 ;			 into 1 P-sect.

                                     0000  5100 ; 11	23-feb-78	-We now do TRACEback on error levels WARNING, ERROR,

                                     0000  5200 ;			 and SEVERE (FATAL) - not just FATAL as before.

                                     0000  5300 ; 12	24-feb-78	-As long as 'error_exit' is simply a RET, the code

                                     0000  5400 ;			 is shorter if we leave "brw error_exit" commented

                                     0000  5500 ;			 out and the RET in.

                                     0000  5600 ; 13	24-feb-78	-Pass on signal array address, not exception name.

                                     0000  5700 ; 14	27-feb-78	-If we have already mapped TRACE in once, a second

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   2

001608                                                                                                                           (1)



                                     0000  5800 ;			 call to BOOT_HANDLER will jump to the code directly

                                     0000  5900 ;			 to avoid mapping it in repeatedly for nothing.

                                     0000  6000 ; 15	27-mar-78	-Boot now expects that both TRACE and DEBUG.exe

                                     0000  6100 ;			 have headers on them.  This means only that we

                                     0000  6200 ;			 add 1 to the VBN where the header says we map

                                     0000  6300 ;			 in the image from.

                                     0000  6400 ; 16	24-may-78	-Major alteration to bring this bootstrap into

                                     0000  6500 ;			 the system image instead of the program image.

                                     0000  6600 ;			 All read write data removed.  If logical name

                                     0000  6700 ;			 is defined for LIB$TRACE or LIB$DEBUG then that copy is

                                     0000  6800 ;			 mapped privately even if a shared copy exists.

                                     0000  6900 ;--

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   3

001608          DECLARATIONS                                                                                                     (2)



                                     0000   100 	.SBTTL	DECLARATIONS

                                     0000   200 

                                     0000   300 ;

                                     0000   400 ; Include files:

                                     0000   500 ;

                                     0000   600 	$FABDEF				; file access block definitions

                                     0000   700 	$IHDDEF				; image header definitions

                                     0000   800 	$NAMDEF				; name block definitions

                                     0000   900 	$PHDDEF				; process header block definitions

                                     0000  1000 	$SECDEF				; process/global section definitions

                                     0000  1100 	$SSDEF				; system service status definitions

                                     0000  1200 	$STSDEF				; status code definitions

                                     0000  1300 

                                     0000  1400 	$CRMPSCDEF			; create and map section definitions

                                     0000  1500 	$MGBLSCDEF			; map global section definitions

                                     0000  1600 ;

                                     0000  1700 ; Macros:

                                     0000  1800 ;

                                     0000  2600 ;

                                     0000  2700 ; Equated symbols:

                                     0000  2710 ;

                           00000001  0000  2720 	IMGHDRBLKCNT=1			; Number of image header blocks  on

                                     0000  2730 					; the front of the DEBUG/TRACE images

                                     0000  2800 ;

                                     0000  2900 ; Offsets into the vector at the front of the DEBUG and TRACE images

                                     0000  3000 ;

                                     0000  3100 	$OFFSET	0,POSITIVE,<-

                                     0000  3200 		DEBUG_WRT_PAGES,-

                                     0000  3300 		DEBUG_WRT_ENDPG,-

                                     0000  3400 		DEBUG_START_ADR -

                                     0000  3500 		>

                                     0000       DEBUG_WRT_PAGES:

                                     0004       DEBUG_WRT_ENDPG:

                                     0008       DEBUG_START_ADR:

                                     0000  3600 

                                     0000  3700 ;

                                     0000  3800 ; Offsets from R6 used by the mapin logic

                                     0000  3900 ;

                                     0000  4000 	$OFFSET	0,POSITIVE,<-

                                     0000  4100 		<,<<CRMPSC$_NARGS+1>*4>>,- ; argument list for CRMPSC, MGBLSC

                                     0000  4400 		<GBL_SEC_BOUNDS,8>,-	; where global section starts

                                     0000  4500 		<CREMAP_RETADR,8>,-	; return address range from crmpsc

                                     0000  4600 		<IMPURE_STORAGE,8>,-	; some scratch storage

                                     0000  4700 		<NAMDSC,8>,-		; name descriptor for file name

                                     0000  4750 		<LNAMDSC,8>,-		; logical name/section name descriptor

                                     0000  4800 		<FAB,FAB$C_BLN>,-	; fab for opening DEBUG/TRACE

                                     0000  4900 		<NAMESTRING,64>,-	; section logical name string storage

                                     0000  5000 		<SCRATCHSIZE,0>,-	; size of area address off of FP

                                     0000  5100 		>

                                     0034       GBL_SEC_BOUNDS:

                                     003C       CREMAP_RETADR:

                                     0044       IMPURE_STORAGE:

                                     004C       NAMDSC:

                                     0054       LNAMDSC:

                                     005C       FAB:

                                     00AC       NAMESTRING:

                                     00EC       SCRATCHSIZE:

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   4

001608          DECLARATIONS                                                                                                     (2)



                                     0000  5200 ;

                                     0000  5300 ; An 'arg' vector is passed to TRACE using the following

                                     0000  5400 ; locations thru SECT_BOUNDS.  FAULT_PC must remain the first

                                     0000  5500 ; of these locations (we use it to address the vector), and

                                     0000  5600 ; the order of these variables must not change.

                                     0000  5700 ; The storage for this vector and any additional own data is allocated

                                     0000  5800 ; off the end of the call frame generated by the call to BOOT_START.

                                     0000  5900 ; The FP needed to address this own data is found at exception time

                                     0000  6000 ; as the "establisher frame" in the "mechanism array."

                                     0000  6100 ;

                                     0000  6200 	$OFFSET	0,POSITIVE,<-

                                     0000  6300 		FAULT_PC,-		; Pass the PC on to TRACE.EXE

                                     0000  6400 		FAULT_FP,-		; Pass to TRACE the FP when the fault occurred.

                                     0000  6500 		<PROG_START,0>,-	; Program start address

                                     0000  6600 		FIRST_FP,-		; What FP was when user image was invoked initially.

                                     0000  6700 		SIGNAL_ARRAY,-		; Address of signal array.

                                     0000  6800 		<SECT_BOUNDS,8>,-	; Beginning of TRACE's symbol table,

                                     0000  6900 -;

                                     0000  7000 -; end of TRACE's 'arg' vector.

                                     0000  7100 -; beginning of TRACE's additional own data

                                     0000  7200 -;

                                     0000  7300 -; Additional own storage variables are to be added here

                                     0000  7400 -;

                                     0000  7500 		SAVED_AP,-		; Saved AP that image was invoked with

                                     0000  7600 		MAP_SEC_XADDR,-		; Where to JMP to invoke TRACE, 0 if not mapped

                                     0000  7700 		<TRACE_CTX_SIZ,0>,-	; Size of own storage reserved at end of frame

                                     0000  7800 		>

                                     0000       FAULT_PC:

                                     0004       FAULT_FP:

                                     0008       PROG_START:

                                     0008       FIRST_FP:

                                     000C       SIGNAL_ARRAY:

                                     0010       SECT_BOUNDS:

                                     0018       SAVED_AP:

                                     001C       MAP_SEC_XADDR:

                                     0020       TRACE_CTX_SIZ:

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   5

001608          DEBUG_BOOT - DEBUG/TRACEBACK/IMAGE ACTIVATOR                                                                     (3)



                                     0000   100 	.SBTTL	DEBUG_BOOT	- DEBUG/TRACEBACK/IMAGE ACTIVATOR

                                     0000   200 

                                     0000   300 ;++

                                     0000   400 ; Functional description:

                                     0000   500 ;	This 'bootstrap' invokes one of DEBUG, TRACEback, or the

                                     0000   600 ;	users' image, depennding on flags passed on by/from LINK

                                     0000   700 ;	and CLI.  In all cases, we set up the argument list, etc, 

                                     0000   800 ;	in such a way that the image being invoked does not know

                                     0000   900 ;	that DBGBOOT was there.  If DEBUG or TRACE is selected,

                                     0000  1000 ;	this routine finds out where the user program's P0 space ends.

                                     0000  1100 ;	It then maps the DEBUG/TRACE global section into the space following

                                     0000  1200 ;	the user's p0 space, marks the DEBUG/TRACE impure storage area

                                     0000  1300 ;	as "copy on reference", and transfers control to the initialization

                                     0000  1400 ;	code in the DEBUG/TRACE global section.

                                     0000  1500 ;

                                     0000  1600 ; Calling sequence:

                                     0000  1700 ;	CALLS	#6, boot_start

                                     0000  1800 ;

                                     0000  1900 ; Input parameters:

                                     0000  2200 ;	4(AP)	- transfer vector address

                                     0000  2300 ;	8(AP)	- address of CLI parse information (not used)

                                     0000  2400 ;	12(AP)	- address of image header information

                                     0000  2500 ;	16(AP)	- address of image file information

                                     0000  2600 ;	20(AP)	- LINK status bits

                                     0000  2700 ;	24(AP)	- CLI status bits

                                     0000  2800 ;

                                     0000  2900 ; Implicit inputs:

                                     0000  3000 ;	We may use one of two global sections, DEBUG 

                                     0000  3100 ;	and/or TRACE.  They are assumed to be in files

                                     0000  3200 ;	called DEBUG.EXE and TRACE.EXE, which are located

                                     0000  3300 ;	in logical device sys$library.

                                     0000  3400 ;

                                     0000  3500 ; Output parameters:

                                     0000  3600 ;	R0	- system status code.

                                     0000  3700 ;		  = error codes from SYS$EXPREG, SYS$CRMPSC, or

                                     0000  3800 ;		    SYS$MGBLSC if anything in this driver module fails.

                                     0000  3900 ;		  = ss$_normal or other dbg$_... returns from the bulk

                                     0000  4000 ;			of DEBUG in the other case.

                                     0000  4100 ;

                                     0000  4200 ; Implicit outputs:

                                     0000  4300 ;	The stack frame created when this BOOT is called (by CLI)

                                     0000  4400 ;	remains around to contain the frame handler we need to

                                     0000  4500 ;	catch programs which fault when there is no DEBUG 

                                     0000  4600 ;	around.

                                     0000  4700 ;

                                     0000  4800 ; Completion codes:

                                     0000  4900 ;	returns from system services

                                     0000  5000 ;

                                     0000  5100 ; Side effects:

                                     0000  5200 ;	Lets user run DEBUG, his image directly, or TRACEback.

                                     0000  5300 ;--

                                     0000  5400 

                                 00000000  5500 	.PSECT	YF$$SYSIMGSTA BYTE,EXE

                                     0000  5600 

                                     0000  5700 	.LIST	MEB

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   6

001608          Start the Program or DEBUG                                                                                       (4)



                                     0000   100 	.SBTTL	Start the Program or DEBUG

                                     0000   200 

                               0000' 0000   300 	.ENTRY	EXE$IMGSTA,0

                                     0002   400 

                                     0002   500 	ASSUME	TRACE_CTX_SIZ-4 EQ MAP_SEC_XADDR

                          7E     D4  0002   600 	CLRL	-(SP)			; no mapped section transfer address

            5E            1C     C2  0004   700 	SUBL	#TRACE_CTX_SIZ-4,SP	; reserve traceback own storage

         18 AE            5C     D0  0007   800 	MOVL	AP,SAVED_AP(SP)		; Save AP that program is called with

            50         04 AC     D0  000B   900 	MOVL	4(AP),R0		; Address of transfer vector

         08 AE         04 A0     D0  000F  1000 	MOVL	4(R0),PROG_START(SP)	; Save program start address and avoid

                                     0014  1100 					; referencing the transfer vector after purge

            50            5E     D0  0014  1200 	MOVL	SP,R0			; address of own storage

                                     0017  1300 

                                     0017  1400 	ASSUME	FAULT_PC EQ 0

                                     0017  1500 	ASSUME	FAULT_FP EQ 4

                          60     D4  0017  1600 	CLRL	(R0)			; From the first address in P0 space

         04 A0   7FFFFFFF 8F     D0  0019  1700 	MOVL	#1@31-1,4(R0)		; through the last address in P1 space

                                     0021  1800 	$PURGWS_S INADR=(R0)		; Purge the entire virtual address space

                          60     7F  0021       		PUSHAQ	(R0)

   00000000'GF            01     FB  0023       		CALLS	#1,G^SYS$PURGWS

                          00'    E0  002A  1900 	BBS	S^#CLI$V_DEBUG,24(AP),-	; See if command-line override given

            05         18 AC         002C  2000 		CLI_OVERRIDE

                          00     E0  002F  2100 	BBS	S^#IHD$V_LNKDEBUG,20(AP),- ; No override - check for "$LINK /debug ..."

            55         14 AC         0031  2200 		DEBUG_MAPIN

                                     0034  2300 CLI_OVERRIDE:

                          00'    E0  0034  2400 	BBS	S^#CLI$V_DBGTRU,24(AP),- ; Check for "$RUN /debug ..."

            50         18 AC         0036  2500 		DEBUG_MAPIN

                                     0039  2600 ;

                                     0039  2700 ; DEBUG will not come up - either because

                                     0039  2800 ; "$RUN prog" was given along with $LINK prog

                                     0039  2900 ; (i.e. no $LINK /debug or $RUN /debug),

                                     0039  3000 ; or because "$RUN /nodebug" was given.

                                     0039  3100 ;

                                     0039  3200 

                                     0039  3300 BE_SILENT:

                                     0039  3400 					; Set up a frame handler to look

                                     0039  3500 					; after invoking traceback if the

                                     0039  3600 					; 'standalone' image faults of if

                                     0039  3700 					; the user types ^Y DEBUG to attach

                                     0039  3800 					; DEBUG to an already-running image.

            6D         46'AF     DE  0039  3900 	MOVAL	B^BOOT_HANDLER,(FP)

         04 AC            04     C0  003D  4000 	ADDL	#4,4(AP)		; Adjust transfer vector to ignore

                                     0041  4100 					;  the fact that DEBUG is around

         08 BE            6C     FA  0041  4200 	CALLG 	(AP),@PROG_START(SP)	; and invoke the user program directly.

                                 04  0045  4300 	RET

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   7

001608          Exception Handler for TRACE                                                                                      (5)



                                     0046   100 	.SBTTL	Exception Handler for TRACE

                                     0046   200 

                                     0046   300 BOOT_HANDLER:

                               0FFC  0046   400 	.WORD	^M<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11> ; save mask

            50         04 AC     7D  0048   500 	MOVQ	4(AP),R0		; Pick up pointer to signal arg list.

                                     004C   600 					; R1 = address of mechanism array

         04 A1            20     C3  004C   700 	SUBL3	#TRACE_CTX_SIZ,4(R1),R8 ; Address of own storage

                          58         0050       

                                     0051   800 ;

                                     0051   900 ; The debugger is started up if the exception name is SS$_DEBUG.

                                     0051  1000 ; Traceback happens if error level is WARNING, SEVERE, or ERROR.

                                     0051  1100 ; Otherwise we let DCL's frame handler decide 

                                     0051  1200 ; what to do with this exception.

                                     0051  1300 ;

   0000046C 8F         04 A0     D1  0051  1400 	CMPL	4(R0),#SS$_DEBUG	; if DEBUG exception,

                          1A     13  0059  1500 	BEQL	DO_DEBUG		; then start up the debugger

            03            20     EF  005B  1600 	EXTZV	#STS$V_SEVERITY+32,#STS$S_SEVERITY,(R0),R2

            52            60         005E       

                                     0060  1700 					; Check for exact match to the

                                     0060  1800 					;  severity levels which cause TRACE

            52            00     91  0060  1900 	CMPB	#STS$K_WARNING,R2

                          2C     13  0063  2000 	BEQL	DO_TRACE

            52            02     91  0065  2100 	CMPB	#STS$K_ERROR,R2

                          27     13  0068  2200 	BEQL	DO_TRACE

            52            04     91  006A  2300 	CMPB	#STS$K_SEVERE,R2

                          22     13  006D  2400 	BEQL	DO_TRACE

            50       0918 8F     3C  006F  2500 	MOVZWL	#SS$_RESIGNAL,R0	;  This signal is not for us.

                                 04  0074  2600 	RET

                                     0075  2700 ;

                                     0075  2800 ; Start up the debugger as a result of a DEBUG exception.

                                     0075  2900 ;

                                     0075  3000 DO_DEBUG:

            52            5C     D0  0075  3100 	MOVL	AP,R2			; save condition handler AP

            5C         18 A8     D0  0078  3200 	MOVL	SAVED_AP(R8),AP		; AP when image was first invoked

         04 AC            52     D0  007C  3300 	MOVL	R2,4(AP)		; replace start vector address with

                                     0080  3400 					; condition handler AP

         18 AC   00000000'8F     E2  0080  3500 	BBSS	#CLI$V_DBGEXCP,24(AP),10$ ; DEBUG exception triggerred

                          00         0088       

                                     0089  3600 					; the starting of the debugger

                                     0089  3700 10$:

                                     0089  3800 ;

                                     0089  3900 ; Map the debugger in and transfer control to it

                                     0089  4000 ;

                                     0089  4100 DEBUG_MAPIN:

            57         C9'AF     9E  0089  4200 	MOVAB	B^DEBUGNAME,R7		; Address of debugger name string

                          50     10  008D  4300 	BSBB	MAPIN			; Map it in

                          61     17  008F  4400 	JMP	(R1)			; and transfer control to it

                                     0091  4500 ;

                                     0091  4600 ; Start up TRACE

                                     0091  4700 ;

                                     0091  4800 DO_TRACE:

                                     0091  4900 ;

                                     0091  5000 ; Build a vector of args to TRACEBACK

                                     0091  5100 ; and pass on a pointer to this vector

                                     0091  5200 ; in the same way as DEBUG usually gets

                                     0091  5300 ; a pointer to the transfer vector

                                     0091  5400 ;

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   8

001608          Exception Handler for TRACE                                                                                      (5)



         0C A8            50     D0  0091  5500 	MOVL	R0,SIGNAL_ARRAY(R8)	; Put signal arg ptr into traceback vector.

         08 A8         04 A1     D0  0095  5600 	MOVL	4(R1),FIRST_FP(R8)	; Put first FP into traceback vector.

         04 A8         0C AD     D0  009A  5700 	MOVL	12(FP),FAULT_FP(R8)	; FP at time of the exception

            5C            60     9A  009F  5800 	MOVZBL	(R0),AP			; Signal argument count

            68            704C   D0  00A2  5900 	MOVL	-(R0)[AP],FAULT_PC(R8)	; Put the fault PC in the vector

            5C         18 A8     D0  00A6  6000 	MOVL	SAVED_AP(R8),AP		; AP when image was first invoked

         04 AC            58     D0  00AA  6100 	MOVL	R8,4(AP)		; Pass address of traceback vector

                                     00AE  6200 					; in place of the transfer vector

            51         1C A8     D0  00AE  6300 	MOVL	MAP_SEC_XADDR(R8),R1	; Is TRACE already mapped in?

                          0D     12  00B2  6400 	BNEQ	10$			; Branch if it is

                       10 A8     7C  00B4  6500 	CLRQ	SECT_BOUNDS(R8)		; Init section bounds for TRACE

            57         C3'AF     9E  00B7  6600 	MOVAB	B^TRACENAME,R7		; Mapping in TRACE

                          22     10  00BB  6700 	BSBB	MAPIN			; Go map the image in

         1C A8            51     D0  00BD  6800 	MOVL	R1,MAP_SEC_XADDR(R8)	; Save its transfer address

                          61     17  00C1  6900 10$:	JMP	(R1)			; and transfer control to TRACE/DEBUG

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page   9

001608          Map in and Start DEBUG or TRACE                                                                                  (6)



                                     00C3   100 	.SBTTL	Map in and Start DEBUG or TRACE

                                     00C3   200 ;

                                     00C3   300 ; DEBUG and TRACE name strings

                                     00C3   400 ;

                                     00C3   500 TRACENAME:

                     45 43 41 52 54  00C3   800 20$:	.ASCII	/TRACE/			; name of the TRACE image

                           00000005  00C8   900 	LNAMESIZ=.-20$

                                     00C8   950 

                                 00  00C8  1000 	.BYTE	0			; single character suffix to actual file

                                     00C9  1020 					; name for the default TRACE image

                                     00C9  1040 					; 0 if no suffix,

                                     00C9  1100 					; .ASCII /1/ if name were TRACE1.EXE

                                     00C9  1300 DEBUGNAME:

                     47 55 42 45 44  00C9  1600 20$:	.ASCII	/DEBUG/			; name of the DEBUG image

                                     00CE  1700 	ASSUME	LNAMESIZ EQ .-20$	; must be the same size as TRACE name

                                     00CE  1750 

                                 00  00CE  1800 	.BYTE	0			; single character suffix to actual file

                                     00CF  1820 					; name for the default DEBUG image

                                     00CF  1840 					; 0 if no suffix,

                                     00CF  1860 					; .ASCII /1/ if name were DEBUG1.EXE

                                     00CF  2400 

                                     00CF  2500 DEFAULTNAME:

3A 59 52 41 52 42 49 4C 24 53 59 53  00CF  2600 	.ASCII	/SYS$LIBRARY:.EXE/	; RMS default name string for

                        45 58 45 2E  00DB       

                           00000010  00DF  2700 	DEFAULTNAMESIZ=.-DEFAULTNAME	; opening the DEBUG or TRACE images

                                     00DF  2800 ;

                                     00DF  2900 ; Map DEBUG or TRACE in as a shared GLOBAL section or as a process section.

                                     00DF  3000 ;

                                     00DF  3100 ; CALLING SEQUENCE:

                                     00DF  3200 ;

                                     00DF  3300 ;	BSBW	MAPIN

                                     00DF  3400 ;

                                     00DF  3500 ; INPUTS:

                                     00DF  3600 ;

                                     00DF  3900 ;	R7    = Address of name string for DEBUG or TRACE

                                     00DF  4000 ;

                                     00DF  4100 ; OUTPUTS:

                                     00DF  4200 ;

                                     00DF  4300 ;	R0 = System status from last $CRMPSC or $MGBLSC or $DGBLSC

                                     00DF  4400 ;	R1 = Transfer address for entering the desired program

                                     00DF  4600 ;	R2,R3,R4,R5,R6 SCRATCH

                                     00DF  4700 ;

                                     00DF  4800 ;	If any error occurs, this routine exits via RET with status in R0

                                     00DF  4900 ;

                                     00DF  5000 MAPIN:

            5E       FF14 CE     DE  00DF  5100 	MOVAL	-SCRATCHSIZE(SP),SP	; reserve scratch storage on the stack

            56            5E     D0  00E4  5200 	MOVL	SP,R6			; R6 = base of scratch area

            6E            00     2C  00E7  5300 	MOVC5	#0,(SP),#0,#SCRATCHSIZE,(SP) ; zero the scratch storage

       00EC 8F            00         00EA       

                          6E         00EE       

            50   00000000'GF     D0  00EF  5400 	MOVL	G^CTL$GL_PHD,R0		; address of process header window

         34 A6         28 A0     D0  00F6  5500 	MOVL	PHD$L_FREP0VA(R0),GBL_SEC_BOUNDS(R6) ; First free address in P0 space

         38 A6   3FFFFFFF 8F     D0  00FB  5600 	MOVL	#1@30-1,GBL_SEC_BOUNDS+4(R6) ; infinitely high end virtual address

            51         50 A6     7E  0103  5700 	MOVAQ	NAMDSC+4(R6),R1		; adr of 2nd long word of file name descriptor

                                     0107  5800 

                                     0107  5900 	ASSUME	LNAMDSC EQ NAMDSC+8

            52            81     7E  0107  6000 	MOVAQ	(R1)+,R2		; R2 = NAMDSC+4, R1 = LNAMDSC+4

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page  10

001608          Map in and Start DEBUG or TRACE                                                                                  (6)



            61            57     D0  010A  6100 	MOVL	R7,(R1)			; address of name to translate

            71            05     D0  010D  6200 	MOVL	#LNAMESIZ,-(R1)		; size of name to translate

            62       00AC C6     9E  0110  6300 	MOVAB	NAMESTRING(R6),(R2)	; address of string to translate to

            72         40 8F     9A  0115  6400 	MOVZBL	#64,-(R2)		; size of string to translate to

                                     0119  8500 ;

                                     0119  8600 ; Initialize the argument list for $MGBLSC and $CRMPSC system service calls.

                                     0119  8700 ;

            66            0C     D0  0119  8800 	MOVL	#CRMPSC$_NARGS,(R6)	; argument count for $CRMPSC

         04 A6         34 A6     7E  011C  8900 	MOVAQ	GBL_SEC_BOUNDS(R6),CRMPSC$_INADR(R6) ; set input address range

         08 A6         3C A6     7E  0121  9000 	MOVAQ	CREMAP_RETADR(R6),CRMPSC$_RETADR(R6) ; return address range

         14 A6            51     D0  0126  9100 	MOVL	R1,CRMPSC$_GSDNAM(R6)	; global section name descriptor

                          FED3'  30  012A  9200 	BSBW	IAC$TRNGBLSEC		; get translation for LIB$DEBUG

                                     012D  9250 					; or LIB$TRACE if any

            01            50     E8  012D  9300 	BLBS	R0,10$			; branch if no error

                                 04  0130  9400 	RET				; exit with the error status

            51            62     7D  0131  9500 10$:	MOVQ	(R2),R1			; R1=size, R2=adr of translated name

            50            01     D1  0134  9600 	CMPL	#SS$_NORMAL,R0		; see if any translation actually happened

                          09     13  0137  9700 	BEQL	20$			; branch if it did

            6241       05 A7     90  0139  9800 	MOVB	LNAMESIZ(R7),(R2)[R1]	; tack on default name suffix if any

                          02     13  013E  9900 	BEQL	20$			; branch if none

                          51     D6  0140 10000 	INCL	R1			; count the additional character

         4C A6            51     7D  0142 10100 20$:	MOVQ	R1,NAMDSC(R6)		; set file name descriptor for OPEN

            62         5F 8F     91  0146 10200 	CMPB	#^A/_/,(R2)		; if leading "_" stopped the logical translation

                          04     12  014A 10300 	BNEQ	30$

                          51     D7  014C 10400 	DECL	R1			; then strip it off now

                          52     D6  014E 10500 	INCL	R2

            51            04     C0  0150 10600 30$:	ADDL	#4,R1			; now count the section suffix characters

         54 A6            51     7D  0153 10700 	MOVQ	R1,LNAMDSC(R6)		; and set the section name descriptor

            52            51     C0  0157 10800 	ADDL	R1,R2			; address + 4 at which to store

            72   3130305F 8F     D0  015A 10900 	MOVL	#^A/_001/,-(R2)		; the section suffix

                                     0161 11200 ;+

                                     0161 11300 ; If the global sections are present, map each in its entirety, starting

                                     0161 11400 ; at the current end of the program region.  The second section is mapped

                                     0161 11410 ; adjacent to the end of the first.

                                     0161 11500 ;-

                                     0161 11510 

         10 A6       8001 8F     3C  0161 11520 100$:	MOVZWL	#<SEC$M_SYSGBL ! SEC$M_GBL>, - ; set flags parameter

                                     0167 11530 		MGBLSC$_FLAGS(R6)	; for the pure code

                                     0167 11550 	$MGBLSC_G (R6)			; map the first global section

   00000000'GF            66     FA  0167       		CALLG	(R6),G^SYS$MGBLSC

            24            50     E9  016E 11560 	BLBC	R0,CRE_AND_MAP		; if the map fails,

                                     0171 11570 					; go do a create and map

            51         54 A6     7D  0171 11580 	MOVQ	LNAMDSC(R6),R1		; get descriptor for section name

                          7241   96  0175 11590 	INCB	-(R2)[R1]		; form next section name

                          01     C1  0178 11600 	ADDL3	#1,CREMAP_RETADR+4(R6),- ; starting address for next secion

         34 A6         40 A6         017A 11610 		GBL_SEC_BOUNDS(R6)	; is next byte beyond end of previous one

                       08 A6     D4  017E 11620 	CLRL	MGBLSC$_RETADR(R6)	; no return address range needed

         10 A6       800B 8F     3C  0181 11810 	MOVZWL	#<SEC$M_CRF ! SEC$M_WRT ! - ; Map the second section

                                     0187 11820 		SEC$M_SYSGBL ! SEC$M_GBL>, - ; writable, copy on reference

                                     0187 11830 		MGBLSC$_FLAGS(R6)

                                     0187 11900 	$MGBLSC_G (R6)			; and map the second section

   00000000'GF            66     FA  0187       		CALLG	(R6),G^SYS$MGBLSC

            03            50     E9  018E 11950 	BLBC	R0,ERROR_RET		; branch if error

                          008C   31  0191 12000 	BRW	TRANS_CONTROL		; branch if successfully mapped

                                     0194 12010 

                                     0194 12020 ERROR_RET:

                                 04  0194 12100 	RET				; return error status

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page  11

001608          Map in and Start DEBUG or TRACE                                                                                  (6)



                                     0195 12600 

                                     0195 12700 CRE_AND_MAP:

            55         5C A6     9E  0195 12800 	MOVAB	FAB(R6),R5		; address of fab

         30 A5       FF32 CF     9E  0199 12900 	MOVAB	W^DEFAULTNAME,FAB$L_DNA(R5) ; default name string address

         35 A5            10     90  019F 13000 	MOVB	#DEFAULTNAMESIZ,FAB$B_DNS(R5) ; default name string size

         2C A5         50 A6     D0  01A3 13100 	MOVL	NAMDSC+4(R6),FAB$L_FNA(R5) ; address of file name string

         34 A5         4C A6     90  01A8 13200 	MOVB	NAMDSC(R6),FAB$B_FNS(R5)	; size of file name string

                                     01AD 13300 

                                     01AD 13400 	ASSUME	FAB$B_BLN EQ FAB$B_BID+1 ;assume these are adjacent

            65       5003 8F     B0  01AD 13500 	MOVW	#<FAB$C_BLN@8 + FAB$C_BID>,FAB$B_BID(R5) ;set id and size of fab

                                     01B2 13600 

                                     01B2 13700 	ASSUME	FAB$V_UFO GE 16

                                     01B2 13800 	ASSUME	FAB$V_UFO LT 24

         06 A5            02     90  01B2 13900 	MOVB	#FAB$M_UFO@-16,FAB$L_FOP+2(R5) ; open for user file open

                                     01B6 14000 	$OPEN	(R5)			; open the file to map it

                          65     DF  01B6       		PUSHAL	(R5)

   00000000'9F            01     FB  01B8       		CALLS	#$$.TMP1,@#SYS$OPEN

            D2            50     E9  01BF 14100 	BLBC	R0,ERROR_RET		; branch if error

         20 A6         0C A5     3C  01C2 14300 	MOVZWL	FAB$L_STV(R5),CRMPSC$_CHAN(R6) ; set channel parameter from FAB

                       10 A6     D4  01C7 14400 	CLRL	CRMPSC$_FLAGS(R6)	; map the file privately, read only

         28 A6            02     D0  01CA 14500 	MOVL	#IMGHDRBLKCNT+1,CRMPSC$_VBN(R6) ; skip over image header block

                                     01CE 14600 	$CRMPSC_G (R6)			; create and map the section

   00000000'GF            66     FA  01CE       		CALLG	(R6),G^SYS$CRMPSC

            BC            50     E9  01D5 14700 	BLBC	R0,ERROR_RET		; branch if error

                                     01D8 15200 ;+

                                     01D8 15300 ; A vector in the DEBUG global section contains the start of impure

                                     01D8 15400 ; storage, the end of impure storage, and the transfer address of DEBUG

                                     01D8 15500 ; itself. This vector is in PSECT dbg$abs_zero, and is always the first

                                     01D8 15600 ; thing in DEBUG.EXE. Since DEBUG.EXE is linked with a base of zero, the

                                     01D8 15700 ; vector is the first thing in the global section.

                                     01D8 15800 ;

                                     01D8 15900 ; Make the impure storage have copy on reference protection. This means

                                     01D8 16000 ; that the pages are swapped in the first time from the global section

                                     01D8 16100 ; file, and subsequently swapped in and out of the user's swap area. This

                                     01D8 16200 ; allows the user process to have a process-only copy of the impure

                                     01D8 16300 ; pages.

                                     01D8 16400 ;-

                                     01D8 16500 MAKE_WRITABL:

            51         54 A6     7D  01D8 16600 	MOVQ	LNAMDSC(R6),R1		; get descriptor for section name

            7241       57 8F     90  01DC 16700 	MOVB	#^A/W/,-(R2)[R1]	; set "_RW" section name suffix

         04 A6         44 A6     7E  01E1 16800 	MOVAQ	IMPURE_STORAGE(R6),CRMPSC$_INADR(R6) ; set input address range

                       08 A6     D4  01E6 16900 	CLRL	CRMPSC$_RETADR(R6)	; no return address range

            51         3C A6     D0  01E9 17000 	MOVL	CREMAP_RETADR(R6),R1	; get address of section start

            51            61     C1  01ED 17100 	ADDL3	DEBUG_WRT_PAGES(R1),R1,IMPURE_STORAGE(R6)

                       44 A6         01F0       

                                     01F2 17200 					; put start of writable

                                     01F2 17300 					; storage in inadr for remapping

                                     01F2 17400 					; it as copy on reference protection

            51         04 A1     C1  01F2 17500 	ADDL3	DEBUG_WRT_ENDPG(R1),R1,IMPURE_STORAGE+4(R6)

                       48 A6         01F6       

                                     01F8 17600 					; and end of same

                                     01F8 17700 					; in second longword of inadr.

            61         F7 8F     78  01F8 17800 	ASHL	#-9,DEBUG_WRT_PAGES(R1),R0	; compute the number

                          50         01FC       

                                     01FD 17900 					; of the relative page on which

                                     01FD 18000 					; the impure storage begins (base 0).

         04 A1         F7 8F     78  01FD 18100 	ASHL	#-9,DEBUG_WRT_ENDPG(R1),R1	; and compute the number

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page  12

001608          Map in and Start DEBUG or TRACE                                                                                  (6)



                          51         0202       

                                     0203 18200 					; of the relative page on which

                                     0203 18300 					; the impure storage ends.

            51            50     C2  0203 18400 	SUBL	R0,R1			; the difference between start

                          51     D6  0206 18500 	INCL	R1			; and end pages plus 1 is the

                                     0208 18600 					; page count of the impure section

                                     0208 19700 

         10 A6            0A     D0  0208 19800 	MOVL	#<SEC$M_CRF ! SEC$M_WRT>, - ; flags for writable section

                                     020C 19900 		CRMPSC$_FLAGS(R6)

         24 A6            51     D0  020C 20000 	MOVL	R1,CRMPSC$_PAGCNT(R6)	; set size of writable section to map

            50            02     C1  0210 20100 	ADDL3	#IMGHDRBLKCNT+1,R0,CRMPSC$_VBN(R6) ; set starting file virtual block

                       28 A6         0213       

                                     0215 20200 	$CRMPSC_G (R6)			; create and map the writable section

   00000000'GF            66     FA  0215       		CALLG	(R6),G^SYS$CRMPSC

            01            50     E8  021C 20300 	BLBS	R0,TRANS_CONTROL	; OK => we're done,

                                 04  021F 20400 	RET				; otherwise punt.

                                     0220 20500 

                                     0220 20600 ;+

                                     0220 20700 ; The third address in the vector is DEBUG's transfer address.

                                     0220 20900 ; Add the DEBUG transfer address to the base address of the

                                     0220 21000 ; first mapped page and jump to it.

                                     0220 21100 ;-

                                     0220 21200 TRANS_CONTROL:

            51         3C A6     D0  0220 21300 	MOVL	CREMAP_RETADR(R6),R1	; get address of section start again

            51         08 A1     C1  0224 21400 	ADDL3	DEBUG_START_ADR(R1),R1,R1 ; compute DEBUG start address

                          51         0228       

            5E       00EC C6     DE  0229 21500 	MOVAL	SCRATCHSIZE(R6),SP	; remove scratch storage from stack

                                 05  022E 21600 	RSB				; return transfer address to caller

                                     022F 21700 

                                     022F 21800 

                                     022F 21900 	.END

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page  13

SYMBOL TABLE                                                                                                                     (6)



$$.TMP1        = 00000001            FAB$C_MAXRFM   = 00000003            FAB$M_SHRGET   = 00000002            

$$.TMP2        = 00000065            FAB$C_REL      = 00000010            FAB$M_SHRPUT   = 00000001            

$$ARGS         = 00000007            FAB$C_RFM_DFLT = 00000002            FAB$M_SHRUPD   = 00000008            

$$T1           = 00000020            FAB$C_SEQ      = 00000000            FAB$M_SPL      = 00002000            

BE_SILENT        00000039 R     03   FAB$C_UDF      = 00000000            FAB$M_SQO      = 00000040            

BIT...         = 00000020            FAB$C_VAR      = 00000002            FAB$M_SUP      = 00000004            

BOOT_HANDLER     00000046 R     03   FAB$C_VFC      = 00000003            FAB$M_TEF      = 10000000            

CLI$V_DBGEXCP    ********   X   03   FAB$K_BLN        00000050            FAB$M_TMD      = 00000010            

CLI$V_DBGTRU     ********   X   03   FAB$L_ALQ        00000010            FAB$M_TMP      = 00000008            

CLI$V_DEBUG      ********   X   03   FAB$L_CTX        00000018            FAB$M_TRN      = 00000010            

CLI_OVERRIDE     00000034 R     03   FAB$L_DEV        00000040            FAB$M_UFM      = 04000000            

CREMAP_RETADR    0000003C            FAB$L_DNA        00000030            FAB$M_UFO      = 00020000            

CRE_AND_MAP      00000195 R     03   FAB$L_FNA        0000002C            FAB$M_UPD      = 00000008            

CRMPSC$_ACMODE = 0000000C            FAB$L_FOP        00000004            FAB$M_UPI      = 00000040            

CRMPSC$_CHAN   = 00000020            FAB$L_JNL        00000020            FAB$M_WCK      = 00000200            

CRMPSC$_FLAGS  = 00000010            FAB$L_MRN        00000038            FAB$S_ORG      = 00000004            

CRMPSC$_GSDNAM = 00000014            FAB$L_NAM        00000028            FAB$S_PPF_RAT  = 00000008            

CRMPSC$_IDENT  = 00000018            FAB$L_SDC        00000044            FAB$V_BIO      = 00000005            

CRMPSC$_INADR  = 00000004            FAB$L_STS        00000008            FAB$V_BLK      = 00000003            

CRMPSC$_NARGS  = 0000000C            FAB$L_STV        0000000C            FAB$V_BRO      = 00000006            

CRMPSC$_PAGCNT = 00000024            FAB$L_XAB        00000024            FAB$V_CBT      = 00000015            

CRMPSC$_PFC    = 00000030            FAB$M_BIO      = 00000020            FAB$V_CIF      = 00000019            

CRMPSC$_PROT   = 0000002C            FAB$M_BLK      = 00000008            FAB$V_CR       = 00000001            

CRMPSC$_RELPAG = 0000001C            FAB$M_BRO      = 00000040            FAB$V_CTG      = 00000014            

CRMPSC$_RETADR = 00000008            FAB$M_CBT      = 00200000            FAB$V_DEL      = 00000002            

CRMPSC$_VBN    = 00000028            FAB$M_CIF      = 02000000            FAB$V_DFW      = 00000005            

CTL$GL_PHD       ********   X   03   FAB$M_CR       = 00000002            FAB$V_DLT      = 0000000F            

DEBUGNAME        000000C9 R     03   FAB$M_CTG      = 00100000            FAB$V_DMO      = 0000000C            

DEBUG_MAPIN      00000089 R     03   FAB$M_DEL      = 00000004            FAB$V_ESC      = 0000001B            

DEBUG_START_ADR  00000008            FAB$M_DFW      = 00000020            FAB$V_EXE      = 00000007            

DEBUG_WRT_ENDPG  00000004            FAB$M_DLT      = 00008000            FAB$V_FTN      = 00000000            

DEBUG_WRT_PAGES  00000000            FAB$M_DMO      = 00001000            FAB$V_GET      = 00000001            

DEFAULTNAME      000000CF R     03   FAB$M_ESC      = 08000000            FAB$V_INP      = 00000013            

DEFAULTNAMESIZ = 00000010            FAB$M_EXE      = 00000080            FAB$V_JNL      = 00000016            

DIR...         = 00000001            FAB$M_FTN      = 00000001            FAB$V_KFO      = 0000001E            

DO_DEBUG         00000075 R     03   FAB$M_GET      = 00000002            FAB$V_MSE      = 00000004            

DO_TRACE         00000091 R     03   FAB$M_INP      = 00080000            FAB$V_MXV      = 00000001            

ERROR_RET        00000194 R     03   FAB$M_JNL      = 00400000            FAB$V_NAM      = 00000018            

EXE$IMGSTA       00000000 RG    03   FAB$M_KFO      = 40000000            FAB$V_NEF      = 0000000A            

FAB              0000005C            FAB$M_MSE      = 00000010            FAB$V_NFS      = 00000010            

FAB$B_BID        00000000            FAB$M_MXV      = 00000002            FAB$V_NIL      = 00000005            

FAB$B_BKS        0000003E            FAB$M_NAM      = 01000000            FAB$V_OFP      = 0000001D            

FAB$B_BLN        00000001            FAB$M_NEF      = 00000400            FAB$V_ORG      = 00000004            

FAB$B_DNS        00000035            FAB$M_NFS      = 00010000            FAB$V_POS      = 00000008            

FAB$B_FAC        00000016            FAB$M_NIL      = 00000020            FAB$V_PPF      = 00000012            

FAB$B_FNS        00000034            FAB$M_OFP      = 20000000            FAB$V_PPF_IND  = 0000000E            

FAB$B_FSZ        0000003F            FAB$M_POS      = 00000100            FAB$V_PPF_RAT  = 00000006            

FAB$B_ORG        0000001D            FAB$M_PPF      = 00040000            FAB$V_PRN      = 00000002            

FAB$B_RAT        0000001E            FAB$M_PPF_IND  = 00004000            FAB$V_PUT      = 00000000            

FAB$B_RFM        0000001F            FAB$M_PPF_RAT  = 00003FC0            FAB$V_RCK      = 00000017            

FAB$B_RTV        0000001C            FAB$M_PRN      = 00000004            FAB$V_RWC      = 0000000B            

FAB$B_SHR        00000017            FAB$M_PUT      = 00000001            FAB$V_RWO      = 00000007            

FAB$C_BID      = 00000003            FAB$M_RCK      = 00800000            FAB$V_SCF      = 0000000E            

FAB$C_BLN        00000050            FAB$M_RWC      = 00000800            FAB$V_SHRDEL   = 00000002            

FAB$C_FIX      = 00000001            FAB$M_RWO      = 00000080            FAB$V_SHRGET   = 00000001            

FAB$C_HSH      = 00000030            FAB$M_SCF      = 00004000            FAB$V_SHRPUT   = 00000000            

FAB$C_IDX      = 00000020            FAB$M_SHRDEL   = 00000004            FAB$V_SHRUPD   = 00000003            

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page  14

SYMBOL TABLE                                                                                                                     (6)



FAB$V_SPL      = 0000000D            MAKE_WRITABL     000001D8 R     03   NAM$M_WILD_SFD5= 20000000            

FAB$V_SQO      = 00000006            MAPIN            000000DF R     03   NAM$M_WILD_SFD6= 40000000            

FAB$V_SUP      = 00000002            MAP_SEC_XADDR    0000001C            NAM$M_WILD_SFD7= 80000000            

FAB$V_TEF      = 0000001C            MGBLSC$_ACMODE = 0000000C            NAM$M_WILD_TYPE= 00000010            

FAB$V_TMD      = 00000004            MGBLSC$_FLAGS  = 00000010            NAM$M_WILD_UFD = 01000000            

FAB$V_TMP      = 00000003            MGBLSC$_GSDNAM = 00000014            NAM$M_WILD_VER = 00000008            

FAB$V_TRN      = 00000004            MGBLSC$_IDENT  = 00000018            NAM$S_DIR_LVLS = 00000003            

FAB$V_UFM      = 0000001A            MGBLSC$_INADR  = 00000004            NAM$T_DVI        00000014            

FAB$V_UFO      = 00000011            MGBLSC$_NARGS  = 00000007            NAM$V_DIR_LVLS = 00000015            

FAB$V_UPD      = 00000003            MGBLSC$_RELPAG = 0000001C            NAM$V_EXP_DEV  = 00000007            

FAB$V_UPI      = 00000006            MGBLSC$_RETADR = 00000008            NAM$V_EXP_DIR  = 00000006            

FAB$V_WCK      = 00000009            NAM$B_BID        00000000            NAM$V_EXP_NAME = 00000002            

FAB$W_BLS        0000003C            NAM$B_BLN        00000001            NAM$V_EXP_TYPE = 00000001            

FAB$W_DEQ        00000014            NAM$B_CURLVL     00000038            NAM$V_EXP_VER  = 00000000            

FAB$W_IFI        00000002            NAM$B_ESL        0000000B            NAM$V_GRP_MBR  = 00000013            

FAB$W_MRS        00000036            NAM$B_ESS        0000000A            NAM$V_HIGHVER  = 0000000F            

FAULT_FP         00000004            NAM$B_RSL        00000003            NAM$V_LOWVER   = 0000000E            

FAULT_PC         00000000            NAM$B_RSS        00000002            NAM$V_NODE     = 00000011            

FIRST_FP         00000008            NAM$C_BID      = 00000002            NAM$V_PPF      = 00000010            

GBL...         = 00000000            NAM$C_BLN        00000038            NAM$V_QUOTED   = 00000012            

GBL_SEC_BOUNDS   00000034            NAM$C_BLN_DIRWC  00000050            NAM$V_WILDCARD = 00000008            

IAC$TRNGBLSEC    ********   X   03   NAM$C_DVI      = 00000010            NAM$V_WILD_DIR = 00000014            

IHD$B_HDRBLKCNT  00000010            NAM$C_MAXRSS   = 00000080            NAM$V_WILD_GRP = 00000018            

IHD$B_IMGTYPE    00000011            NAM$C_MAXRSSLCL= 00000060            NAM$V_WILD_MBR = 00000019            

IHD$C_LENGTH     00000028            NAM$K_BLN        00000038            NAM$V_WILD_NAME= 00000005            

IHD$K_EXE      = 00000001            NAM$K_BLN_DIRWC  00000050            NAM$V_WILD_SFD1= 00000019            

IHD$K_LENGTH     00000028            NAM$L_DIRWCC1    00000040            NAM$V_WILD_SFD2= 0000001A            

IHD$K_LIM      = 00000002            NAM$L_DIRWCC2    00000044            NAM$V_WILD_SFD3= 0000001B            

IHD$K_MAJORID  = 00003230            NAM$L_DIRWCC3    00000048            NAM$V_WILD_SFD4= 0000001C            

IHD$K_MINORID  = 00003130            NAM$L_DIRWCC4    0000004C            NAM$V_WILD_SFD5= 0000001D            

IHD$L_IDENT      00000024            NAM$L_DWC        00000038            NAM$V_WILD_SFD6= 0000001E            

IHD$L_LNKFLAGS   00000020            NAM$L_ESA        0000000C            NAM$V_WILD_SFD7= 0000001F            

IHD$M_LNKDEBUG = 00000001            NAM$L_FNB        00000034            NAM$V_WILD_TYPE= 00000004            

IHD$M_LNKNOTFR = 00000002            NAM$L_RLF        00000010            NAM$V_WILD_UFD = 00000018            

IHD$M_MATCHCTL = 07000000            NAM$L_RSA        00000004            NAM$V_WILD_VER = 00000003            

IHD$M_NOP0BUFS = 00000004            NAM$L_WCC        00000030            NAM$W_DID        0000002A            

IHD$M_PICIMG   = 00000008            NAM$M_DIR_LVLS = 00E00000            NAM$W_DID_NUM    0000002A            

IHD$Q_PRIVREQS   00000014            NAM$M_EXP_DEV  = 00000080            NAM$W_DID_RVN    0000002E            

IHD$S_MATCHCTL = 00000003            NAM$M_EXP_DIR  = 00000040            NAM$W_DID_SEQ    0000002C            

IHD$V_LNKDEBUG = 00000000            NAM$M_EXP_NAME = 00000004            NAM$W_FID        00000024            

IHD$V_LNKNOTFR = 00000001            NAM$M_EXP_TYPE = 00000002            NAM$W_FID_NUM    00000024            

IHD$V_MATCHCTL = 00000018            NAM$M_EXP_VER  = 00000001            NAM$W_FID_RVN    00000028            

IHD$V_NOP0BUFS = 00000002            NAM$M_GRP_MBR  = 00080000            NAM$W_FID_SEQ    00000026            

IHD$V_PICIMG   = 00000003            NAM$M_HIGHVER  = 00008000            NAM$W_PRV_DID    0000003A            

IHD$W_ACTIVOFF   00000002            NAM$M_LOWVER   = 00004000            NAMDSC           0000004C            

IHD$W_IMGIDOFF   00000006            NAM$M_NODE     = 00020000            NAMESTRING       000000AC            

IHD$W_IMGIOCNT   0000001E            NAM$M_PPF      = 00010000            PHD$B_ASTLVL     000000CF            

IHD$W_IOCHANCNT  0000001C            NAM$M_QUOTED   = 00040000            PHD$B_DFPFC      00000038            

IHD$W_MAJORID    0000000C            NAM$M_WILDCARD = 00000100            PHD$B_PAGFIL     0000001F            

IHD$W_MINORID    0000000E            NAM$M_WILD_DIR = 00100000            PHD$B_PGTBPFC    00000039            

IHD$W_PATCHOFF   00000008            NAM$M_WILD_GRP = 01000000            PHD$C_LENGTH     00000118            

IHD$W_SIZE       00000000            NAM$M_WILD_MBR = 02000000            PHD$C_PHDPAGCTX= 00000008            

IHD$W_SYMDBGOFF  00000004            NAM$M_WILD_NAME= 00000020            PHD$K_LENGTH     00000118            

IMGHDRBLKCNT   = 00000001            NAM$M_WILD_SFD1= 02000000            PHD$L_BIOCNT     00000054            

IMPURE_STORAGE   00000044            NAM$M_WILD_SFD2= 04000000            PHD$L_CPULIM     00000058            

LNAMDSC          00000054            NAM$M_WILD_SFD3= 08000000            PHD$L_CPUTIM     0000003C            

LNAMESIZ       = 00000005            NAM$M_WILD_SFD4= 10000000            PHD$L_DIOCNT     00000050            

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page  15

SYMBOL TABLE                                                                                                                     (6)



PHD$L_ESP        0000007C            PHD$W_PST        00000020            SEC$V_PERM     = 0000000E            

PHD$L_FREP0VA    00000028            PHD$W_PSTBASMAX  0000004A            SEC$V_PFC      = 00000018            

PHD$L_FREP1VA    00000030            PHD$W_PSTFREE    00000026            SEC$V_SYSGBL   = 0000000F            

PHD$L_FREPTECNT  0000002C            PHD$W_PSTLAST    00000024            SEC$V_VPX      = 00000000            

PHD$L_KSP        00000078            PHD$W_PTCNTACT   00000070            SEC$V_WRT      = 00000003            

PHD$L_P0BR       000000C8            PHD$W_PTCNTLCK   0000006C            SEC$W_FLAGS      00000014            

PHD$L_P0LRASTL   000000CC            PHD$W_PTCNTMAX   00000072            SEC$W_SECXBL     00000006            

PHD$L_P1BR       000000D0            PHD$W_PTCNTVAL   0000006E            SEC$W_SECXFL     00000004            

PHD$L_P1LR       000000D4            PHD$W_QUANT      00000040            SECT_BOUNDS      00000010            

PHD$L_PAGEFLTS   0000004C            PHD$W_TQLM       00000062            SIGNAL_ARRAY     0000000C            

PHD$L_PAGFIL     0000001C            PHD$W_WSAUTH     0000000A            SS$_ABORT      = 0000002C            

PHD$L_PC         000000C0            PHD$W_WSDYN      0000000E            SS$_ACCONFLICT = 00000800            

PHD$L_PCB        00000078            PHD$W_WSFLUID    00000074            SS$_ACCVIO     = 0000000C            

PHD$L_PGFLCNT    00000034            PHD$W_WSLAST     00000012            SS$_ACPVAFUL   = 000002FC            

PHD$L_PGFLQUOTA  0000005C            PHD$W_WSLIST     00000008            SS$_ARTRES     = 00000474            

PHD$L_PSL        000000C4            PHD$W_WSLOCK     0000000C            SS$_ASTFLT     = 0000040C            

PHD$L_PSTBASOFF  00000020            PHD$W_WSLX       0000004A            SS$_BADATTRIB  = 00000034            

PHD$L_PTWSLELCK  00000064            PHD$W_WSNEXT     00000010            SS$_BADCHKSUM  = 00000808            

PHD$L_PTWSLEVAL  00000068            PHD$W_WSQUOTA    00000018            SS$_BADESCAPE  = 0000003C            

PHD$L_R0         00000088            PROG_START       00000008            SS$_BADFILEHDR = 00000810            

PHD$L_R1         0000008C            SAVABS...      = 00000020            SS$_BADFILENAME= 00000818            

PHD$L_R10        000000B0            SAVED_AP         00000018            SS$_BADFILEVER = 00000820            

PHD$L_R11        000000B4            SCRATCHSIZE      000000EC            SS$_BADIMGHDR  = 00000044            

PHD$L_R12        000000B8            SEC$B_AMOD       00000015            SS$_BADIRECTORY= 00000828            

PHD$L_R13        000000BC            SEC$B_PFC        0000000B            SS$_BADPARAM   = 00000014            

PHD$L_R2         00000090            SEC$C_LENGTH     00000020            SS$_BADSTACK   = 000002B4            

PHD$L_R3         00000094            SEC$K_LENGTH     00000020            SS$_BEGOFFILE  = 00000938            

PHD$L_R4         00000098            SEC$K_MATALL   = 00000000            SS$_BLOCKCNTERR= 00000940            

PHD$L_R5         0000009C            SEC$K_MATEQU   = 00000001            SS$_BREAK      = 00000414            

PHD$L_R6         000000A0            SEC$K_MATLEQ   = 00000002            SS$_BUFBYTALI  = 0000030C            

PHD$L_R7         000000A4            SEC$L_CCB        00000000            SS$_BUFFEROVF  = 00000601            

PHD$L_R8         000000A8            SEC$L_GSD        00000000            SS$_BUGCHECK   = 000002A4            

PHD$L_R9         000000AC            SEC$L_PAGCNT     0000001C            SS$_CANCEL     = 00000830            

PHD$L_REFERFLT   00000014            SEC$L_REFCNT     00000018            SS$_CHANINTLK  = 0000004C            

PHD$L_SSP        00000080            SEC$L_VBN        00000010            SS$_CLIFRCEXT  = 00000980            

PHD$L_USP        00000084            SEC$L_VPXPFC     00000008            SS$_CMODSUPR   = 0000041C            

PHD$L_WSL        00000118            SEC$L_WINDOW     0000000C            SS$_CMODUSER   = 00000424            

PHD$M_DALCSTX  = 00000002            SEC$M_AMOD     = 00000300            SS$_COMPAT     = 0000042C            

PHD$M_PFMFLG   = 00000001            SEC$M_CRF      = 00000002            SS$_CONTINUE   = 00000001            

PHD$M_WSPEAKCHK= 00000004            SEC$M_DZRO     = 00000004            SS$_CONTROLC   = 00000651            

PHD$Q_PRIVMSK    00000000            SEC$M_GBL      = 00000001            SS$_CONTROLO   = 00000609            

PHD$S_ASTLVL   = 00000008            SEC$M_PERM     = 00004000            SS$_CONTROLY   = 00000611            

PHD$S_P0LR     = 00000018            SEC$M_SYSGBL   = 00008000            SS$_CREATED    = 00000619            

PHD$V_ASTLVL   = 00000018            SEC$M_WRT      = 00000008            SS$_CTRLERR    = 00000054            

PHD$V_DALCSTX  = 00000001            SEC$S_AMOD     = 00000002            SS$_DATACHECK  = 0000005C            

PHD$V_P0LR     = 00000000            SEC$S_CRF      = 00000001            SS$_DATAOVERUN = 00000838            

PHD$V_PFMFLG   = 00000000            SEC$S_DZRO     = 00000001            SS$_DEBUG      = 0000046C            

PHD$V_WSPEAKCHK= 00000002            SEC$S_GBL      = 00000001            SS$_DECOVF     = 000004A4            

PHD$W_ASTLM      00000044            SEC$S_PERM     = 00000001            SS$_DEVACTIVE  = 000002C4            

PHD$W_BAK        00000048            SEC$S_PFC      = 00000008            SS$_DEVALLOC   = 00000840            

PHD$W_DFWSCNT    0000001A            SEC$S_SYSGBL   = 00000001            SS$_DEVALRALLOC= 00000641            

PHD$W_EMPTPG     000000D8            SEC$S_VPX      = 00000016            SS$_DEVASSIGN  = 00000848            

PHD$W_EXTDYNWS   00000076            SEC$S_WRT      = 00000001            SS$_DEVFOREIGN = 00000064            

PHD$W_FILLM      00000060            SEC$V_AMOD     = 00000008            SS$_DEVICEFULL = 00000850            

PHD$W_FLAGS      0000003A            SEC$V_CRF      = 00000001            SS$_DEVMOUNT   = 0000006C            

PHD$W_PHVINDEX   00000046            SEC$V_DZRO     = 00000002            SS$_DEVNOTALLOC= 00000858            

PHD$W_PRCLM      00000042            SEC$V_GBL      = 00000000            SS$_DEVNOTMBX  = 00000074            

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page  16

SYMBOL TABLE                                                                                                                     (6)



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            

SS$_DRVERR     = 0000008C            SS$_IVSECFLG   = 0000016C            SS$_RESULTOVF  = 00000214            

SS$_DUPFILENAME= 00000868            SS$_IVSECIDCTL = 000002E4            SS$_ROPRAND    = 00000454            

SS$_DUPLNAM    = 00000094            SS$_IVSSRQ     = 00000174            SS$_SECTBLFUL  = 0000021C            

SS$_ENDOFFILE  = 00000870            SS$_IVSTSFLG   = 0000017C            SS$_SSFAIL     = 0000045C            

SS$_ENDOFTAPE  = 00000878            SS$_IVTIME     = 00000184            SS$_SUBRNG     = 000004AC            

SS$_ENDOFUSRLBL= 00000970            SS$_LCKPAGFUL  = 000000D4            SS$_SUPERSEDE  = 00000631            

SS$_EXQUOTA    = 0000001C            SS$_LENVIO     = 0000018C            SS$_TAPEPOSLOST= 00000224            

SS$_EXTIDXFILE = 00000880            SS$_LKWSETFUL  = 00000194            SS$_TBIT       = 00000464            

SS$_FCPREADERR = 00000888            SS$_MBFULL     = 000008D8            SS$_TIMEOUT    = 0000022C            

SS$_FCPREPSTN  = 00000988            SS$_MBTOOSML   = 0000019C            SS$_TOOMANYVER = 00000990            

SS$_FCPREWNDERR= 00000890            SS$_MCHECK     = 000002BC            SS$_TOOMUCHDATA= 0000029C            

SS$_FCPSPACERR = 00000898            SS$_MEDOFL     = 000001A4            SS$_UNASEFC    = 00000234            

SS$_FCPWRITERR = 000008A0            SS$_MSGNOTFND  = 00000621            SS$_UNSAFE     = 0000023C            

SS$_FILACCERR  = 0000009C            SS$_MTLBLLONG  = 00000304            SS$_UNWIND     = 00000920            

SS$_FILALRACC  = 000000A4            SS$_MUSTCLOSEFL= 00000948            SS$_UNWINDING  = 00000928            

SS$_FILELOCKED = 000008A8            SS$_NOAQB      = 00000314            SS$_VASFULL    = 00000244            

SS$_FILENUMCHK = 000008B0            SS$_NODATA     = 000001AC            SS$_VECINUSE   = 0000024C            

SS$_FILESEQCHK = 000008B8            SS$_NOHANDLER  = 000008F8            SS$_VOLINV     = 00000254            

SS$_FILESTRUCT = 000008C0            SS$_NOHOMEBLK  = 000008E0            SS$_WAITUSRLBL = 00000950            

SS$_FILNOTACC  = 000000AC            SS$_NOIOCHAN   = 000001B4            SS$_WASCLR     = 00000001            

SS$_FILNOTCNTG = 000002AC            SS$_NOLINKS    = 0000027C            SS$_WASECC     = 00000639            

SS$_FILNOTEXP  = 000000B4            SS$_NOLOGNAM   = 000001BC            SS$_WASSET     = 00000009            

SS$_FLTDIV     = 00000494            SS$_NOMBX      = 00000274            SS$_WRITLCK    = 0000025C            

SS$_FLTOVF     = 0000048C            SS$_NOMOREFILES= 00000930            SS$_WRONGACP   = 0000031C            

SS$_FLTUND     = 0000049C            SS$_NONEXDRV   = 000001C4            STS$K_ERROR    = 00000002            

SS$_FORMAT     = 000000BC            SS$_NONEXPR    = 000008E8            STS$K_INFO     = 00000003            

SS$_GPTFULL    = 000000C4            SS$_NONLOCAL   = 000008F0            STS$K_SEVERE   = 00000004            

SS$_GSDFULL    = 000000CC            SS$_NOPRIV     = 00000024            STS$K_SUCCESS  = 00000001            

SS$_HANGUP     = 000002CC            SS$_NORMAL     = 00000001            STS$K_WARNING  = 00000000            

SS$_HEADERFULL = 000008C8            SS$_NOSIGNAL   = 00000900            STS$M_CODE     = 00007FF8            

SS$_IDXFILEFULL= 000008D0            SS$_NOSOLICIT  = 00000284            STS$M_COND_ID  = 0FFFFFF8            

SS$_ILLBLKNUM  = 000000DC            SS$_NOSUCHDEV  = 00000908            STS$M_CONTROL  = F0000000            

SS$_ILLCNTRFUNC= 000000E4            SS$_NOSUCHFILE = 00000910            STS$M_CUST_DEF = 08000000            

SS$_ILLEFC     = 000000EC            SS$_NOSUCHNODE = 0000028C            STS$M_FAC_NO   = 0FFF0000            

SS$_ILLIOFUNC  = 000000F4            SS$_NOSUCHSEC  = 00000978            STS$M_FAC_SP   = 00008000            

SS$_ILLLBLAST  = 00000968            SS$_NOTAPEOP   = 00000264            STS$M_INHIB_MSG= 10000000            

SS$_ILLPAGCNT  = 000000FC            SS$_NOTFILEDEV = 000001CC            STS$M_MSG_NO   = 0000FFF8            

SS$_ILLSEQOP   = 000002DC            SS$_NOTINTBLSZ = 000001D4            STS$M_SEVERITY = 00000007            

SS$_ILLSER     = 00000104            SS$_NOTLABELMT = 000001DC            STS$M_SUCCESS  = 00000001            

SS$_ILLUSRLBLRD= 00000958            SS$_NOTMODIFIED= 00000659            STS$S_CODE     = 0000000C            

SS$_ILLUSRLBLWT= 00000960            SS$_NOTNETDEV  = 000002EC            STS$S_COND_ID  = 00000019            

SS$_INCVOLLABEL= 0000010C            SS$_NOTRAN     = 00000629            STS$S_CONTROL  = 00000004            

SS$_INSFARG    = 00000114            SS$_NOTSQDEV   = 000001E4            STS$S_CUST_DEF = 00000001            

SS$_INSFMEM    = 00000124            SS$_OPCCUS     = 00000434            STS$S_FAC_NO   = 0000000C            

SS$_INSFRAME   = 0000012C            SS$_OPCDEC     = 0000043C            STS$S_FAC_SP   = 00000001            

SS$_INSFWSL    = 0000011C            SS$_OPINCOMPL  = 000002D4            STS$S_INHIB_MSG= 00000001            

SS$_INTDIV     = 00000484            SS$_PAGOWNVIO  = 000001EC            STS$S_MSG_NO   = 0000000D            

SS$_INTOVF     = 0000047C            SS$_PAGRDERR   = 00000444            STS$S_SEVERITY = 00000003            

SS$_IVADDR     = 00000134            SS$_PARITY     = 000001F4            STS$S_SUCCESS  = 00000001            

SS$_IVCHAN     = 0000013C            SS$_PARTESCAPE = 000001FC            STS$V_CODE     = 00000003            

SS$_IVCHNLSEC  = 0000026C            SS$_PFMBSY     = 00000204            STS$V_COND_ID  = 00000003            

SS$_IVDEVNAM   = 00000144            SS$_PLHLDR     = 00000404            STS$V_CONTROL  = 0000001C            

SS$_IVGSDNAM   = 0000014C            SS$_PSTFULL    = 0000020C            STS$V_CUST_DEF = 0000001B            

SS$_IVLOGNAM   = 00000154            SS$_RADRMOD    = 0000044C            STS$V_FAC_NO   = 00000010            

SYSIMGSTA       - Image Startup System Service                   21-AUG-1978 20:34:39   VAX-11 MACRO X0.3-11               Page  17

SYMBOL TABLE                                                                                                                     (6)



STS$V_FAC_SP   = 0000000F            

STS$V_INHIB_MSG= 0000001C            

STS$V_MSG_NO   = 00000003            

STS$V_SEVERITY = 00000000            

STS$V_SUCCESS  = 00000000            

SYS$CRMPSC       ********   X   03   

SYS$MGBLSC       ********   X   03   

SYS$OPEN         ********  GX   03   

SYS$PURGWS       ********   X   03   

TRACENAME        000000C3 R     03   

TRACE_CTX_SIZ    00000020            

TRANS_CONTROL    00000220 R     03   





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  

YF$$SYSIMGSTA    0000022F      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

6842. BYTES LEFT IN FREE MEMORY POOL.

2022. BYTES OF RECLAIMED MEMORY.

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

20 MLB DIR RDS - 1033 GETS TO DEFINE 28 MACROS. 80 INTER. FILE WRITES. 

