INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (2)     100  DECLARATIONS

   (4)     100  GET A COMMAND

   (5)     100  SETNXTNAM, PREFIX_0

   (6)     100  SCAN_SWITCH - SCAN FOR SWITCHES IN COMMAND LINE

   (7)     100  MATCH_SWITCH - TRY TO MATCH THE SPECIFIED SWITC

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   1

X0214                                                                                                                            (1)



                                     0000   100 	.TITLE	INSTALL - INSTALL A KNOWN IMAGE

                                     0000   200 	.IDENT	/X0214/

                                     0000   300 

                                     0000   400 ;

                                     0000   500 ;			  COPYRIGHT (c) 1978 BY

                                     0000   600 ;	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000   700 ;

                                     0000   800 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED

                                     0000   900 ; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE

                                     0000  1000 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER

                                     0000  1100 ; COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY

                                     0000  1200 ; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY

                                     0000  1300 ; TRANSFERRED.

                                     0000  1400 ;

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

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

                                     0000  1700 ; CORPORATION.

                                     0000  1800 ;

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

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

                                     0000  2100 ;

                                     0000  2200 

                                     0000  2300 ;++

                                     0000  2400 ; FACILITY:

                                     0000  2500 ;

                                     0000  2600 ; ABSTRACT:

                                     0000  2700 ;

                                     0000  2800 ;

                                     0000  2900 ; ENVIRONMENT:

                                     0000  3000 ;

                                     0000  3100 ; AUTHOR: P. H. LIPMAN	, CREATION DATE: 1-JAN-78

                                     0000  3200 ;

                                     0000  3300 ; MODIFIED BY:

                                     0000  3400 ;

                                     0000  3500 ;	, : VERSION

                                     0000  3600 ; 01	- 

                                     0000  3700 ;--

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   2

X0214           DECLARATIONS                                                                                                     (2)



                                     0000   100 	.SBTTL	DECLARATIONS

                                     0000   200 ;

                                     0000   300 ; INCLUDE FILES:

                                     0000   400 ;

                                     0000   600 	$FABDEF				;DEFINE FILE ACCESS BLOCK OFFSETS

                                     0000   700 	$KFIDEF				;DEFINE KNOWN FILE ENTRY OFFSETS

                                     0000   800 	$RABDEF				;DEFINE RECORD ACCESS BLOCK OFFSETS

                                     0000  1000 ;

                                     0000  1100 ; MACROS:

                                     0000  1200 ;

                                     0000  1300 	.MACRO	KEY1	PRE,OFF,SYM1,SYM2

                                     0000  1400 	.ASCIC	/SYM1/

                                     0000  1500 	.IF	NB,SYM2

                                     0000  1600 	.BYTE	PRE'SYM2+OFF

                                     0000  1700 	.IFF

                                     0000  1800 	.BYTE	PRE'SYM1+OFF

                                     0000  1900 	.ENDC

                                     0000  2000 	.ENDM	KEY1

                                     0000  2100 

                                     0000  2200 	.MACRO	KEY	PRE,OFF,LIST

                                     0000  2300 	.IRP	L,<LIST>

                                     0000  2400 	KEY1	PRE,OFF,L

                                     0000  2500 	.ENDR

                                     0000  2600 	.ENDM	KEY

                                     0000  4000 ;

                                     0000  4100 ; EQUATED SYMBOLS:

                                     0000  4200 ;

                           000001F4  0000  4300 	REC_BUF_SIZ=125*4		;INTEGRAL NUMBER OF LONG WORDS

                                     0000  4500 

                                     0000  4600 	$OFFSET	4,POSITIVE,<-

                                     0000  4700 		CHAN,-			;CHANNEL ADDRESS

                                     0000  4800 		FLAGADR,-		;ADDRESS OF FLAGS WORD FOR KFI ENTRY

                                     0000  4900 		PRIVADR,-		;ADDRESS OF PRIVILEGE MASK

                                     0000  5000 		NAMEMASK,-		;BIT MASK OF STRINGS TO PLACE IN KFI ENTRY

                                     0000  5100 		DEVNAM,-		;ADDRESS OF DEVICE NAME STRING

                                     0000  5200 		DIRNAM,-		;ADDRESS OF DIRECTORY STRING

                                     0000  5300 		FILNAM,-		;ADDRESS OF FILE NAME STRING

                                     0000  5400 		TYPNAM,-		;ADDRESS OF FILE TYPE STRING

                                     0000  5500 		ENDZRO,-		;ZERO ADDRESS TO END ADDRESS VECTOR

                                     0000  5600 		<ARGBYTCNT,0> -		;COUNT OF BYTES IN ARGUMENT LIST

                                     0000  5700 		>

                                     0004       CHAN:

                                     0008       FLAGADR:

                                     000C       PRIVADR:

                                     0010       NAMEMASK:

                                     0014       DEVNAM:

                                     0018       DIRNAM:

                                     001C       FILNAM:

                                     0020       TYPNAM:

                                     0024       ENDZRO:

                                     0028       ARGBYTCNT:

                                     0000  5800 	_VIELD	INS,0,<-		;INSFLAG BIT DEFINITIONS

                                     0000  5900 		<VFYINP,,M>,-		;SET IF VERIFYING INPUT TO OUTPUT FILE

                                     0000  6000 		<PROCPRIV,,M>,-		;SET IF ALREADY PROCESSED PRIV SWITCH

                                     0000  6050 		<NOFILNAM,,M>,-		;NO FILE NAME SPEICIFIED ON COMMAND LINE

                                     0000  6100 		>

                                     0000  6200 	_VIELD	INS,8,<-		;BIT DEFINITIONS IN SWITCH SCANNER

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   3

X0214           DECLARATIONS                                                                                                     (2)



                                     0000  6300 		FIRSTMAT,-		;SET IF ONE MATCH ALREADY FOUND

                                     0000  6400 		EXACTMAT,-		;SET IF NOT ABBREVIATING THIS SWITCH

                                     0000  6500 		>

                                     0000  8400 ;

                                     0000  8500 ; IMAGE ACTIVATION FLAGS

                                     0000  8600 ;

                                     0000  8700 	_VIELD	IAC,0,<-

                                     0000  8800 		<NOACT,,M>,-		;DO NOT ACTIVATE THE IMAGE

                                     0000  8900 		<WRITABLE,,M>,-		;IMAGE IS TO BE WRITABLE

                                     0000  9000 		>

                                     0000  9100 ;

                                     0000  9200 ; OWN STORAGE:

                                     0000  9300 ;

                                 00000000  9400 	.PSECT	DATA	LONG,WRT,NOEXE

                                     0000  9500 

                                     0000  9600 INFAB:	$FAB	FAC=GET, FNM=<SYS$INPUT>

                                     0050  9700 OUTFAB:	$FAB	FAC=PUT, RAT=CR, FNM=<SYS$OUTPUT>

                                     00A0  9800 INRAB:	$RAB	FAB=INFAB, ROP=PMT

                                     00E4  9900 OUTRAB:	$RAB	FAB=OUTFAB

                                     0128 10000 KFIFAB:	$FAB	DNM=<SYS$SYSTEM:.EXE>,-

                                     0128 10100 		NAM=KFINAM,-

                                     0128 10200 		FNA=STRING_BUF,-

                                     0128 10300 		SHR=<GET,PUT,UPI>

                                     0178 10400 KFINAM:	$NAM	RSA=RSLTNAME,-

                                     0178 10500 		RSS=NAM$C_MAXRSS,-

                                     0178 10520 		ESA=RSLTNAME,-

                                     0178 10540 		ESS=NAM$C_MAXRSS

                                     01B0 10600 INSFLAG:

                           000001B4  01B0 10700 	.BLKL	1			;INSTALL FLAGS

                                     01B4 10800 ;

                                     01B4 10900 ; ***** DO NOT SEPARATE THE FOLLOWING LINES

                                     01B4 11000 ;

                                     01B4 11100 SWITCH_BITS:

                                     01B4 11200 PROCPRIV:

                  FFFFFFFF FFFFFFFF  01B4 11300 	.LONG	-1,-1			;PRIVILEGE BITS

                                     01BC 11400 CMDBITS:

                           00000000  01BC 11500 	.LONG	0			;KFI BITS IN BIT 0:7

                                     01C0 11600 					;COMMAND BITS IN BITS 16:31

                                     01C0 11700 ;

                                     01C0 11800 ; ***** DO NOT SEPARATE THE PRECEDING LINES

                                     01C0 11900 ;

                                     01C0 12000 ARGLIST:

                           00000009  01C0 12100 	.LONG	<ARGBYTCNT/4> - 1	;ARGUMENT COUNT TO KERNEL MODE ROUTINE

                           00000000  01C4 12200 	.LONG	0			;CHANNEL

                           000001BC' 01C8 12300 	.LONG	CMDBITS			;ADDRESS OF FLAGS WORD

                           000001B4' 01CC 12400 	.LONG	PROCPRIV		;ADDRESS OF PRIVILEGE BITS

                           00000004  01D0 12500 	.LONG	4			;NAMEMASK - JUST FILE NAME IN ENTRY

                           00000000  01D4 12600 	.LONG	0			;OBSOLETE PARAM, WAS DEV NAME STRING ADR

00000000 00000000 00000000 00000000  01D8 12700 	.LONG	0,0,0,0			;DIR, FIL, TYP, TRAILING ZERO

                                     01E8 12800 

                                     01E8 12900 	ASSUME	ARGBYTCNT EQ .-ARGLIST

                                     01E8 13000 ;

                                     01E8 13100 ; ARGUMENT LIST FOR CALL TO IMGACT

                                     01E8 13200 ;

                                     01E8 13250 	.LIST	MEB

                                     01E8 13300 IMGACT_ARGLIST:

                                     01E8 13400 	$IMGACT NAME=NAME_SIZE		;ALLOC AND INIT IMGACT ARG LIST

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   4

X0214           DECLARATIONS                                                                                                     (2)



                           00000004  01E8       		.LONG	4

                           000001FC' 01EC       		.LONG	NAME_SIZE

                           00000000  01F0       		.LONG	0

                           00000000  01F4       		.LONG 	0

                           00000000  01F8       		.LONG	0

                           000001F8  01FC 13500 	IACFLG=IMGACT_ARGLIST+IMGACT$_IMGCTL ;ADDRESS OF IMAGE ACTIVATOR FLAGS

                                     01FC 13600 	.NLIST MEB

                                     01FC 13900 ;

                                     01FC 14000 ; DESCRIPTOR FOR FILE NAME STRING

                                     01FC 14100 ;

                                     01FC 14200 ;

                                     01FC 14300 ; ***** DO NOT SEPARATE THE FOLLOWING LINES

                                     01FC 14400 ;

                                     01FC 14500 NAME_SIZE:

                           00000000  01FC 14600 	.LONG	0			;SIZE OF FILE NAME STRING

                                     0200 14700 RSLTNAME_ADR:

                           0000020C' 0200 14800 	.LONG	RSLTNAME		;ADDRESS OF RESULTANT NAME STRING

                                     0204 14900 STRING_BUFSIZ:

                           000001F4' 0204 15000 	.LONG	REC_BUF_SIZ		;SIZE OF ENTIRE STRING BUFFER

                                     0208 15100 STRING_BUFADR:

                           0000030C' 0208 15200 	.LONG	STRING_BUF		;ADDRESS OF STRING BUFFER

                                     020C 17700 ;

                                     020C 17800 ; ***** DO NOT SEPARATE THE PRECEDING LINES

                                     020C 17900 ;

                                     020C 19000 RSLTNAME:

                           0000028C  020C 19100 	.BLKB	NAM$C_MAXRSS		;RESULTANT NAME STRING FROM PARSE

                                     028C 19200 NAMESTR:

                           0000030C  028C 19300 	.BLKB	NAM$C_MAXRSS		;COUNTED NAME STRING PIECES OF NAME

                                     030C 19400 STRING_BUF:

                           00000500  030C 19500 	.BLKB	REC_BUF_SIZ		;STRING BUFFER FOR COMMAND LINE

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   5

X0214           DECLARATIONS                                                                                                     (3)



                                 00000000   100 	.PSECT	RO_LONG	LONG,RD,NOWRT,NOEXE

                                     0000   400 ;

                                     0000   500 ; ERROR STRING VECTOR

                                     0000   600 ;

                                     0000   700 ERR_STR_VEC:

                           00000007' 0000   800 	.LONG	<20$-10$>/4

                           00000054' 0004   900 10$:	.LONG	SYNTAXERR

                           00000061' 0008  1000 	.LONG	BADSWITCHERR

                           00000081' 000C  1100 	.LONG	AMBIGSWITCHERR

                           000000A7' 0010  1200 	.LONG	EXISTSERR

                           000000BB' 0014  1300 	.LONG	CMD_TOO_LONG

                           000000D1' 0018  1400 	.LONG	KFI_LST_FULL

                           000000F6' 001C  1500 	.LONG	KFI_NOT_FOUND

                                     0020  1600 ;

                                     0020  1700 ; INSERT OTHER ERROR STRING ADDRESSES IN FRONT OF THIS COMMENT

                                     0020  1800 ;

                                     0020  1900 20$:

                                     0020  2000 

                                     0020  2100 

                                 00000000  2200 	.PSECT	RO_BYTE	BYTE,RD,NOWRT,NOEXE

                                     0000  2300 

                                     0000  2400 	ASSUME	CMDBITS EQ PROCPRIV+8

                                     0000  2500 SWITCH_TABLE:

                                     0000  2600 	KEY	KFI$V_,64,<-		;START AT BYTE 0 OF CMDBITS

                                     0000  2700 		<OPEN,KP_OPEN>,-	;LEAVE KNOWN IMAGE OPEN

                                     0000  2800 		<SHAR,KP_SHARED>,-	;MAKE KNOWN IMAGE SHARED

                                     0000  2900 		<PRIV,PROCPRIV>,-	;KNOWN IMAGE IS PRIVILEGED

                                     0000  3000 		<HEAD,KP_RESHDR>,-	;KEEP KNOWN IMAGE HEADER RESIDENT

                                     0000  3200 	>

                                     0018  3300 	KEY	IAC_V_,72,<-		;START AT BYTE 1 OF CMDBITS

                                     0018  3400 		<WRIT,WRITABLE>,-	;IMAGE IS TO BE WRITABLE

                                     0018  3500 		>

                                     001E  3600 	KEY	INS$V_,80,<-		;START AT BYTE 2 OF CMDBITS

                                     001E  3700 		CREATE,-		;CREATE COMMAND

                                     001E  3800 		DELETE,-		;DELETE COMMAND

                                     001E  3900 		REPLACE,-		;REPLACE COMMAND

                                     001E  3920 		LIST,-			;LIST COMMAND

                                     001E  3940 		FULL,-			;FULL LIST COMMAND

                                     001E  3970 		GLOBAL,-		;GLOBAL SECTION LIST COMMAND

                                     001E  4000 	>

                                 00  004B  4100 	.BYTE	0			;END OF SWITCH TABLE

                                     004C  4200 ;

                                     004C  4300 ; VARIOUS STRINGS

                                     004C  4400 ;

                                     004C  4500 PROMPTADR:

                        20 2A 0A 0D  004C  4600 	.ASCII <13><10>/* /

                           00000004  0050  4700 	PROMPTSIZ=.-PROMPTADR

                                     0050  4800 CONTINUE_ADR:

                        5F 2A 0A 0D  0050  4900 	.ASCII	<13><10>/*_/

                           00000004  0054  5000 	CONTINUE_SIZ=.-CONTINUE_ADR

                                     0054  5100 ;

                                     0054  5200 ; ERROR MESSAGES

                                     0054  5300 ;

                                     0054  5400 SYNTAXERR:

6F 72 72 65 20 78 61 74 6E 79 53 00' 0054  5500 	.ASCIC	/Syntax error/

                                 72  0060       

                                 0C  0054       

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   6

X0214           DECLARATIONS                                                                                                     (3)



                                     0061  5600 BADSWITCHERR:

69 66 69 6C 61 75 71 20 64 61 42 00' 0061  5700 	.ASCIC	/Bad qualifier or privilege name/

6C 69 76 69 72 70 20 72 6F 20 72 65  006D       

            65 6D 61 6E 20 65 67 65  0079       

                                 1F  0061       

                                     0081  5800 AMBIGSWITCHERR:

71 20 73 75 6F 75 67 69 62 6D 41 00' 0081  5900 	.ASCIC	/Ambiguous qualifier or privilege name/

20 72 6F 20 72 65 69 66 69 6C 61 75  008D       

61 6E 20 65 67 65 6C 69 76 69 72 70  0099       

                              65 6D  00A5       

                                 25  0081       

                                     00A7  6000 EXISTSERR:

64 61 65 72 6C 61 20 65 6D 61 4E 00' 00A7  6100 	.ASCIC /Name already in use/

            65 73 75 20 6E 69 20 79  00B3       

                                 13  00A7       

                                     00BB  6200 CMD_TOO_LONG:

6E 69 6C 20 64 6E 61 6D 6D 6F 43 00' 00BB  6300 	.ASCIC	/Command line too long/

      67 6E 6F 6C 20 6F 6F 74 20 65  00C7       

                                 15  00BB       

                                     00D1  6400 KFI_LST_FULL:

20 6F 74 20 6D 6F 6F 72 20 6F 4E 00' 00D1  6500 	.ASCIC	/No room to add a new known file list/

6E 6B 20 77 65 6E 20 61 20 64 64 61  00DD       

73 69 6C 20 65 6C 69 66 20 6E 77 6F  00E9       

                                 74  00F5       

                                 24  00D1       

                                     00F6  6600 KFI_NOT_FOUND:

20 65 6C 69 66 20 6E 77 6F 6E 4B 00' 00F6  6700 	.ASCIC	/Known file not found/

         64 6E 75 6F 66 20 74 6F 6E  0102       

                                 14  00F6       

                                     010B  6800 UNKNOWN_ERR:

72 72 65 20 6C 6C 61 74 73 6E 49 00' 010B  6900 	.ASCIC	/Install error/

                              72 6F  0117       

                                 0D  010B       

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   7

X0214           GET A COMMAND                                                                                                    (4)



                                     0119   100 	.SBTTL	GET A COMMAND

                                     0119   200 

                                 00000000   300 	.PSECT	CODE	RD,NOWRT,EXE

                                     0000   400 

                                     0000   500 	.LIST	MEB

                                     0000   600 

                               0000  0000   700 START:	.WORD	0

                                     0002   800 	$OPEN	W^INFAB			;OPEN SYS$INPUT

                     0000'CF     DF  0002       		PUSHAL	W^INFAB

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

            2A            50     E9  000D   900 	BLBC	R0,EXIT1

            5B       00A0'CF     DE  0010  1000 	MOVAL	W^INRAB,R11		;ADDRESS OF INPUT RAB

                                     0015  1100 	$CONNECT (R11)			;CONNECT THE INPUT RAB TO SYS$INPUT

                          6B     DF  0015       		PUSHAL	(R11)

   00000000'9F            01     FB  0017       		CALLS	#$$.TMP1,@#SYS$CONNECT

            19            50     E9  001E  1200 	BLBC	R0,EXIT1

                                     0021  1300 	$CREATE	W^OUTFAB		;OPEN ERROR STREAM

                     0050'CF     DF  0021       		PUSHAL	W^OUTFAB

   00000000'9F            01     FB  0025       		CALLS	#$$.TMP1,@#SYS$CREATE

            65            50     E9  002C  1400 	BLBC	R0,EXIT

                                     002F  1500 	$CONNECT W^OUTRAB		;CONNECT A RAB TO IT

                     00E4'CF     DF  002F       		PUSHAL	W^OUTRAB

   00000000'9F            01     FB  0033       		CALLS	#$$.TMP1,@#SYS$CONNECT

            57            50     E9  003A  1600 EXIT1:	BLBC	R0,EXIT

                                     003D  1700 

                                     003D  1800 	ASSUME	INS_V_VFYINP EQ 0

            01            00'    EF  003D  1900 	EXTZV	S^#CLI$V_VFYINP,#1,B^CLI$L_CLIFLAG(AP),W^INSFLAG

       01B0'CF         00'AC         0040       

                                     0045  2000 					;COPY THE VERIFY INPUT FLAG

                                     0045  2100 NXT_COMMAND:

       01B0'CF            04     CA  0045  2200 	BICL	#INS_M_NOFILNAM,W^INSFLAG ;CLEAN UP INSTALL FLAGS

            50       01C4'CF     3C  004A  2300 	MOVZWL	W^ARGLIST+CHAN,R0	;ANY CHANNEL TO DEASSIGN?

                          0A     13  004F  2400 	BEQL	10$			;BRANCH IF NOT

                                     0051  2500 	$DASSGN_S CHAN=R0		;YES, DEASSIGN IT

            7E            50     3C  0051       		MOVZWL	R0,-(SP)

   00000000'GF            01     FB  0054       		CALLS	#1,G^SYS$DASSGN

         30 AB       004C'CF     DE  005B  2600 10$:	MOVAL	W^PROMPTADR,RAB$L_PBF(R11) ;SET NORMAL PROMPT ADDRESS

         34 AB            04     90  0061  2700 	MOVB	#PROMPTSIZ,RAB$B_PSZ(R11) ;AND SIZE

         24 AB       0208'CF     D0  0065  2800 	MOVL	W^STRING_BUFADR,RAB$L_UBF(R11) ;SET RECORD BUFFER ADDRESS

         20 AB       0204'CF     B0  006B  2900 	MOVW	W^STRING_BUFSIZ,RAB$W_USZ(R11) ;AND ITS SIZE

            56       0208'CF     D0  0071  3000 	MOVL	W^STRING_BUFADR,R6	;SET STRING DESCRIPTOR REGISTERS UP

                          57     D4  0076  3100 	CLRL	R7			;NO BYTES READ YET

                                     0078  3200 CONTINUE_GET:

                                     0078  3300 	$GET	(R11)			;GET THE NEXT COMMAND LINE

                          6B     DF  0078       		PUSHAL	(R11)

   00000000'9F            01     FB  007A       		CALLS	#$$.TMP1,@#SYS$GET

            11            50     E8  0081  3400 	BLBS	R0,PROCESS_REC

   00000000'8F            50     D1  0084  3500 	CMPL	R0,#RMS$_EOF		;NORMAL EOF?

                          07     12  008B  3600 	BNEQ	EXIT

                          57     D5  008D  3700 	TSTL	R7			;EOF WITH CONTINUATION LINES?

                          5F     12  008F  3800 	BNEQ	PROCESS_REC1		;BRANCH IF YES, PROCESS THE LINE

            50            00'    D0  0091  3900 	MOVL	S^#SS$_NORMAL,R0

                                 04  0094  4000 EXIT:	RET

                                     0095  4100 

                                     0095  4200 PROCESS_REC:

       01B0'CF            00     E1  0095  4300 	BBC	#INS_V_VFYINP,W^INSFLAG,20$ ;BRANCH IF NOT VERIFYING TO OUTPUT

                          25         009A       

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   8

X0214           GET A COMMAND                                                                                                    (4)



                                     009B  4400 ;

                                     009B  4500 ; ECHO THE INPUT LINES AND ASSOCIATED PROMPTS TO THE OUTPUT STREAM

                                     009B  4600 ;

         22 AB            02     A1  009B  4700 	ADDW3	#2,RAB$W_RSZ(R11),W^OUTRAB+RAB$W_RSZ ;ECHO RECORD + PROMPT

                     0106'CF         009F       

            52         24 AB     D0  00A2  4800 	MOVL	RAB$L_UBF(R11),R2	;ADDRESS OF RECORD JUST READ

                          72     DD  00A6  4900 	PUSHL	-(R2)			;SAVE A LONG WORD FROM THE FRONT

            62         30 BB     D0  00A8  5000 	MOVL	@RAB$L_PBF(R11),(R2)	;AND PUT PROMPT IN

       010C'CF         02 A2     DE  00AC  5100 	MOVAL	2(R2),W^OUTRAB+RAB$L_RBF ;SET ADDRESS BEYOND CR, LF

                                     00B2  5200 	$PUT	W^OUTRAB		;ECHO THE INPUT LINE

                     00E4'CF     DF  00B2       		PUSHAL	W^OUTRAB

   00000000'9F            01     FB  00B6       		CALLS	#$$.TMP1,@#SYS$PUT

            62            8E     D0  00BD  5300 	MOVL	(SP)+,(R2)		;RESTORE SAVED LONG WORD

            57         22 AB     A0  00C0  5400 20$:	ADDW	RAB$W_RSZ(R11),R7	;ADD THIS RECORD TO RECORD BUFFER

         FF A647          2D     91  00C4  5500 	CMPB	#^A"-",-1(R6)[R7]	;CONINTUATION LINE COMING?

                          25     12  00C9  5600 	BNEQ	PROCESS_REC1		;BRANCH IF NOT

         30 AB       0050'CF     DE  00CB  5700 	MOVAL	W^CONTINUE_ADR,RAB$L_PBF(R11) ;SET CONTINUATION PROMPT ADR

         34 AB            04     90  00D1  5800 	MOVB	#CONTINUE_SIZ,RAB$B_PSZ(R11) ;AND SIZE

         24 AB            7746   9E  00D5  5900 	MOVAB	-(R7)[R6],RAB$L_UBF(R11) ;READ NEXT PART OVER THE "-"

       0204'CF            57     A3  00DA  6000 	SUBW3	R7,W^STRING_BUFSIZ,RAB$W_USZ(R11) ;REMAINING SIZE OF RECORD BUFFER

                       20 AB         00DF       

                          95     14  00E1  6100 	BGTR	CONTINUE_GET		;GET MORE IF ANY ROOM LEFT

            50   00000000'8F     D0  00E3  6200 	MOVL	#INS$_CMDTOOLNG,R0	;COMMAND LINE IS TOO LONG

                                     00EA  6300 ERROR_MESSAGE1:

                          0184   31  00EA  6400 	BRW	ERROR_MESSAGE

                                     00ED  6500 

                                     00ED  6600 NXT_COMMAND1:

                          FF55   31  00ED  6700 	BRW	NXT_COMMAND		;AND GET ANOTHER COMMAND

                                     00F0  6800 

                                     00F0  6900 PROCESS_REC1:

                          57     D5  00F0  7000 	TSTL	R7			;EMPTY RECORD?

                          F9     13  00F2  7100 	BEQL	NXT_COMMAND1		;BRANCH IF YES

                                     00F4  7200 ;

                                     00F4  7300 ; R6 = ADDRESS OF ASCII STRING

                                     00F4  7400 ; R7 = SIZE

                                     00F4  7500 ; COMPRESS OUT BLANKS AND TABS AND RAISE LOWER CASE TO UPPER

                                     00F4  7600 ;

            52       0208'CF     D0  00F4  7700 	MOVL	W^STRING_BUFADR,R2	;ADDRESS OF STRING BUFFER

            50            86     90  00F9  7800 40$:	MOVB	(R6)+,R0		;GET THE NEXT BYTE

            50            20     91  00FC  7900 	CMPB	#^X20,R0		;BLANK?

                          11     13  00FF  8000 	BEQL	60$			;BRANCH IF YES, DISCARD IT

            50            09     91  0101  8100 	CMPB	#9,R0			;TAB?

                          0C     13  0104  8200 	BEQL	60$			;BRANCH IF YES, DISCARD IT

         61 8F            50     91  0106  8300 	CMPB	R0,#^X61		;LOWER CASE CHARACTER?

                          03     19  010A  8400 	BLSS	50$			;BRANCH IF NOT

            50            20     82  010C  8500 	SUBB	#^X20,R0		;RAISE TO UPPER CASE

            82            50     90  010F  8600 50$:	MOVB	R0,(R2)+		;STORE THIS BYTE

            E4            57     F5  0112  8700 60$:	SOBGTR	R7,40$			;REPEAT FOR EACH CHARACTER

                     01BC'CF     D4  0115  8800 	CLRL	W^CMDBITS		;INITIALIZE NO COMMAND SWITCHES SEEN

            56       0208'CF     D0  0119  8900 	MOVL	W^STRING_BUFADR,R6	;ADDRESS OF STRING

            52            56     C3  011E  9000 	SUBL3	R6,R2,R7		;SIZE OF COMPRESSED STRING

                          57         0121       

                          C9     13  0122  9100 	BEQL	NXT_COMMAND1		;BRANCH IF NULL LINE

            21            66     91  0124  9200 	CMPB	(R6),#^A"!"		;COMMENT LINE?

                          C4     13  0127  9300 	BEQL	NXT_COMMAND1		;BRANCH IF YES, SKIP IT

                     0140'CF     D4  0129  9400 	CLRL	W^KFIFAB+FAB$L_CTX	;SEE IF KNOWN FILE ENTRY ADR IS RETURNED

            57            2F     3A  012D  9500 	LOCC	#^A"/",R7,(R6)		;FIND FIRST SWITCH IF ANY

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page   9

X0214           GET A COMMAND                                                                                                    (4)



                          66         0130       

            51            56     C3  0131  9600 	SUBL3	R6,R1,R3		;SIZE OF NAME STRING

                          53         0134       

                          08     12  0135  9700 	BNEQ	65$			;BRANCH IF FILE NAME SPECIFIED

       01B0'CF            04     C8  0137  9800 	BISL	#INS_M_NOFILNAM,W^INSFLAG ;NOTE THAT NO FILE NAME WAS GIVEN

                          00AC   31  013C  9900 	BRW	130$			;AND GO PROCESS THE SWITCHES

       015C'CF            53     90  013F 10000 65$:	MOVB	R3,W^KFIFAB+FAB$B_FNS	;SET FILE NAME STRING SIZE

                          03     BB  0144 10100 	PUSHR	#^M<R0,R1>		;SAVE RESULT OF LOCC

                                 D0  0146 10200 	MOVL	#<FAB$M_UFO ! FAB$M_KFO>,- ;USER FILE OPEN, KNOWN FILE OPEN

       012C'CF   40020000 8F         0147 10300 		W^KFIFAB+FAB$L_FOP

                     017B'CF     94  014F 10400 	CLRB	W^KFINAM+NAM$B_RSL	;ZERO RESULT STRING LENGTH

                                     0153 10500 					;IN ORDER TO SEE IF IT IS RETURNED

                                     0153 10600 	$OPEN	W^KFIFAB		;OPEN THE FILE

                     0128'CF     DF  0153       		PUSHAL	W^KFIFAB

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

            89            50     E9  015E 10700 70$:	BLBC	R0,ERROR_MESSAGE1	;BRANCH IF BAD FILE NAME

       01C4'CF       0134'CF     3C  0161 10800 	MOVZWL	W^KFIFAB+FAB$L_STV,W^ARGLIST+CHAN ;CHANNEL ON WHICH FILE IS OPEN

            57       017B'CF     9A  0168 10900 	MOVZBL	W^KFINAM+NAM$B_RSL,R7	;GET SIZE AND

                          05     12  016D 11000 	BNEQ	75$			;BRANCH IF RESULTANT STRING RETURNED

            57       0183'CF     9A  016F 11100 	MOVZBL	W^KFINAM+NAM$B_ESL,R7	;OTHERWISE USE EXPANDED NAME STRING SIZE

            56       020C'CF     9E  0174 11200 75$:	MOVAB	W^RSLTNAME,R6		;ADDRESS OF RESULTANT NAME STRING

            57            3A     3A  0179 11300 	LOCC	#^A/:/,R7,(R6)		;FIND DEVICE NAME SIZE

                          66         017C       

                          4D     13  017D 11400 	BEQL	85$			;BRANCH IF NOT PRESENT

            56         01 A1     9E  017F 11500 	MOVAB	1(R1),R6		;ADR OF FIRST CHAR AFTER ":"

            57            70     9E  0183 11600 	MOVAB	-(R0),R7		;COUNT OF CHARS LEFT AFTER ":"

            86            02     81  0186 11700 	ADDB3	#2,(R6)+,R0		;FORM DIRECTORY STRING TERMINATOR

                          50         0189       

                          57     D7  018A 11800 	DECL	R7			;ADJUSTING ADR AND SIZ OF STRING

            57            50     3A  018C 11900 	LOCC	R0,R7,(R6)		;FIND THE END OF THE DIRECTORY STRING

                          66         018F       

                          3A     13  0190 12000 	BEQL	85$			;BRANCH IF NOT PRESENT, BAD SYNTAX

                          03     BB  0192 12100 	PUSHR	#^M<R0,R1>		;SAVE RESULTS OF THE LOCC

            51            56     C3  0194 12200 	SUBL3	R6,R1,R7		;SIZE OF DIRECTORY STRING

                          57         0197       

            57            2C     3A  0198 12300 	LOCC	#^A/,/,R7,(R6)		;[PROJ,PROG] FORMAT?

                          66         019B       

                          17     13  019C 12400 	BEQL	80$			;BRANCH IF NOT

            52       028D'CF     9E  019E 12500 	MOVAB	W^NAMESTR+1,R2		;YES, PUT IN CANONICAL FORM

                          01AB   30  01A3 12600 	BSBW	PREFIX_0		;WITH LEADING ZEROS

            51         04 AE     D0  01A6 12700 	MOVL	4(SP),R1		;RECOVER ADR OF "]"

                          01A4   30  01AA 12800 	BSBW	PREFIX_0		;SECOND HALF WITH LEADING ZEROS

            57            06     90  01AD 12900 	MOVB	#6,R7			;SIZE OF DIRECTORY NAME STRING

            56       028D'CF     9E  01B0 13000 	MOVAB	W^NAMESTR+1,R6		;ADDRESS OF DIRECTORY NAME STRING

                          03     BA  01B5 13100 80$:	POPR	#^M<R0,R1>		;RECOVER LOCC RESULTS FOR END OF DIR STRING

            53       028C'CF     9E  01B7 13200 	MOVAB	W^NAMESTR,R3		;ADR TO STORE COUNTED NAME STRINGS

            58         80 8F     9A  01BC 13300 	MOVZBL	#NAM$C_MAXRSS,R8	;MAX SIZE OF STRING STORAGE

            59       01D8'CF     9E  01C0 13400 	MOVAB	W^ARGLIST+DIRNAM,R9	;ADDRESS OF VECTOR OF STRING ADDRESSES

                          016C   30  01C5 13500 	BSBW	SETNXTNAM1		;SET UP THE DIRECTORY NAME STRING

            57            2E     3A  01C8 13600 	LOCC	#^A/./,R7,(R6)		;SCAN FOR FILE TYPE DELIMITER

                          66         01CB       

                          03     12  01CC 13700 85$:	BNEQ	90$			;BRANCH IF OK

                          0099   31  01CE 13800 	BRW	SYNTAX_ERR		;SYNTAX ERROR

                          015C   30  01D1 13900 90$:	BSBW	SETNXTNAM		;STORE FILE NAME

            57            3B     3A  01D4 14000 	LOCC	#^A/;/,R7,(R6)		;SCAN FOR VERSION DELIMITER

                          66         01D7       

                          04     12  01D8 14100 	BNEQ	110$			;BRANCH IF FOUND IT

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  10

X0214           GET A COMMAND                                                                                                    (4)



            57            2E     3A  01DA 14200 	LOCC	#^A/./,R7,(R6)		;ALTERNATE VERSION DELIMITER

                          66         01DD       

            51       0200'CF     C3  01DE 14300 110$:	SUBL3	W^RSLTNAME_ADR,R1,W^NAME_SIZE ;SIZE OF RESULTANT NAME WITHOUT VERSION

                     01FC'CF         01E3       

                          0147   30  01E6 14400 	BSBW	SETNXTNAM		;STORE FILE TYPE

                          03     BA  01E9 14500 	POPR	#^M<R0,R1>		;RECOVER LOCC INFO FOR FIRST SWITCH

            57            70     9E  01EB 14600 130$:	MOVAB	-(R0),R7		;NUMBER OF BYTES AFTER "/"

                          14     15  01EE 14700 	BLEQ	END_SWITCH		;BRANCH IF NO SWITCHES SPECIFIED

            56         01 A1     9E  01F0 14800 	MOVAB	1(R1),R6		;ADDRESS OF 1ST BYTE BEYOND "/"

            54            2F     9A  01F4 14900 	MOVZBL	#^A"/",R4		;SWITCH DELIMITER FOR SCANNER

            55       03F9'CF     DE  01F7 15000 	MOVAL	W^MATCH_SWITCH,R5	;ADR OF SWITCH MATCHING ROUTINE TO CALL

       01B0'CF            02     CA  01FC 15100 	BICL	#INS_M_PROCPRIV,W^INSFLAG ;NO PRIVILEGE SWITCH SEEN YET

                          0166   30  0201 15200 	BSBW	SCAN_SWITCH		;SCAN AND PROCESS THE SWITCHES

                                     0204 15300 ;

                                     0204 15400 ; ALL SWITCHES HAVE BEEN PROCESSED

                                     0204 15500 ;	THE RULES ENFORCED ON THE LIST COMMAND ARE AS FOLLOWS:

                                     0204 15600 ;	1 ) * /LIST			;LISTS ALL KNOWN FILES

                                     0204 15700 ;	2 ) * TEST /LIST		;LISTS THE SPECIFIED ENTRY

                                     0204 15800 ;	3 ) * TEST /CREATE /LIST	;CREATES AND LISTS THE ENTRY

                                     0204 15900 ;	4 ) * TEST /REPLACE /LIST	;REPLACES AND LISTS THE ENTRY

                                     0204 16000 ;	5 ) * TEST /DELETE /LIST	;DELETES THE ENTRY, IGNORES LIST CMD

                                     0204 16100 ;	6 ) * TEST			;DEFAULT CREATE, NO LIST

                                     0204 16200 ;

                                     0204 16300 END_SWITCH:

       01B0'CF            02     E0  0204 16400 	BBS	#INS_V_NOFILNAM,W^INSFLAG,NO_FILE_NAME ;BRANCH IF NO FILE NAME

                          58         0209       

                                 93  020A 16500 	BITB	#<INS$M_CREATE ! INS$M_DELETE ! INS$M_REPLACE>,-

       01BE'CF         00'8F         020B 16600 		W^CMDBITS+2		;EXPLICIT CREATE, DEL, REPLACE?

                          08     12  0210 16700 	BNEQ	10$			;BRANCH IF YES

       01BE'CF         00'8F     93  0212 16800 	BITB	#<INS$M_LIST ! INS$M_FULL>,W^CMDBITS+2 ;LIST COMMAND?

                          45     12  0218 16900 	BNEQ	LIST_COMMAND		;BRANCH IF YES

                                 93  021A 17000 10$:	BITB	#<KFI$M_KP_SHARED ! KFI$M_KP_RESHDR>,- ;SHARED OR RESIDENT

       01BC'CF            06         021B 17100 		W^CMDBITS		;IMPLIES OPEN AS WELL

                          05     13  021F 17200 	BEQL	20$			;BRANCH IF NOT SHARED OR RESIDENT

       01BC'CF            01     88  0221 17300 	BISB	#KFI$M_KP_OPEN,W^CMDBITS ;FORCE FILE TO REMAIN OPEN

                                     0226 17400 20$:	$CMKRNL_S W^INS$CREDEL,W^ARGLIST ;CALL THE CREATE KNOWN FILE ENTRY ROUTINE

                     01C0'CF     DF  0226       		PUSHAL	W^ARGLIST

                     0000'CF     DF  022A       		PUSHAL	W^INS$CREDEL

   00000000'GF            02     FB  022E       		CALLS	#2,G^SYS$CMKRNL

            39            50     E9  0235 17500 	BLBC	R0,ERROR_MESSAGE	;BRANCH IF ERROR

       0140'CF            50     D0  0238 17600 	MOVL	R0,W^KFIFAB+FAB$L_CTX	;SAVE KNOWN FILE ENTRY ADDRESS

       01BD'CF            01     89  023D 17700 	BISB3	#IAC_M_NOACT,W^CMDBITS+1,W^IACFLG ;SET IMAGE ACTIVATION FLAGS

                     01F8'CF         0242       

                                     0245 17800 	$IMGACT_G W^IMGACT_ARGLIST	;ACTIVATE IMAGE

   00000000'GF       01E8'CF     FA  0245       		CALLG	W^IMGACT_ARGLIST,G^SYS$IMGACT

                                     024E 17900 					;COMPLETES THE SETUP OF THE KNOWN

                                     024E 18000 					;FILE ENTRY, NOACT FLAG WILL KEEP

                                     024E 18100 					;THE IMAGE ACTIVATOR FROM OVERLAYING

                                     024E 18200 					;THIS RUNNING IMAGE.

       01BE'CF         00'8F     93  024E 18300 	BITB	#<INS$M_LIST ! INS$M_FULL>,W^CMDBITS+2 ;LIST COMMAND?

                          06     13  0254 18400 	BEQL	40$			;BRANCH IF NOT

       01BE'CF            00'    E1  0256 18500 	BBC	S^#INS$V_DELETE,W^CMDBITS+2,LIST_COMMAND ;LIST IF NOT DELETE

                          03         025B       

                                     025C 18600 40$:

                                     025C 18700 NXT_COMMAND2:

                          FDE6   31  025C 18800 	BRW	NXT_COMMAND

                                     025F 18900 

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  11

X0214           GET A COMMAND                                                                                                    (4)



                                     025F 19000 LIST_COMMAND:

                          0073   31  025F 19100 	BRW	LIST_COMMAND1

                                     0262 19200 ;

                                     0262 19300 ; ERRORS

                                     0262 19400 ;

                                     0262 19500 NO_FILE_NAME:

                                 93  0262 19600 	BITB	#<INS$M_LIST ! INS$M_FULL ! INS$M_GLOBAL>,-

       01BE'CF         00'8F         0263 19700 		W^CMDBITS+2		;IF THIS IS NOT A LIST COMMAND

                          F5     12  0268 19800 	BNEQ	LIST_COMMAND		;THEN IT IS A SYNTAX ERROR

                                     026A 19900 SYNTAX_ERR:

            50   00000000'8F     D0  026A 20000 	MOVL	#INS$_SYNTAX,R0		;SYNTAX ERROR MESSAGE

                                     0271 20100 ERROR_MESSAGE:

            10            10     ED  0271 20200 	CMPZV	#16,#16,R0,#INS$_FAC_COD ;INSTALL ERROR CODE?

   00000000'8F            50         0274       

                          22     13  027A 20300 	BEQL	20$			;BRANCH IF YES

                     0134'CF     DD  027C 20400 	PUSHL	W^KFIFAB+FAB$L_STV	;RMS STATUS VALUE IF RMS ERR

                          50     DD  0280 20500 	PUSHL	R0			;ERROR CODE

                          01     DD  0282 20600 	PUSHL	#1			;ASSUME NOT RMS ERROR

         06 AE            01     B1  0284 20700 	CMPW	#1,6(SP)		;IS IT AN RMS ERROR

                          02     12  0288 20800 	BNEQ	10$			;BRANCH IF NOT

                          6E     D6  028A 20900 	INCL	(SP)			;COUNT THE RMS PARAMETER AS WELL

            50            5E     D0  028C 21000 10$:	MOVL	SP,R0			;MESSAGE VECTOR ADDRESS

                                     028F 21100 	$PUTMSG_S MSGVEC=(R0)		;OUTPUT THE ERROR MESSAGE

                          00     DD  028F       		PUSHL	#0

                          00     DD  0291       		PUSHL	#0

                          60     DF  0293       		PUSHAL	(R0)

   00000000'GF            03     FB  0295       		CALLS	#3,G^SYS$PUTMSG

                          31     11  029C 21200 	BRB	60$

            50            50     3C  029E 21300 20$:	MOVZWL	R0,R0			;YES, ISOLATE LOW BITS

                          12     13  02A1 21400 	BEQL	30$			;BRANCH IF BAD CODE

            50            08     C6  02A3 21500 	DIVL	#8,R0			;FORM ERROR NUMBER

       0000'CF            50     D1  02A6 21600 	CMPL	R0,W^ERR_STR_VEC	;ERR CODE TOO BIG?

                          08     14  02AB 21700 	BGTR	30$			;BRANCH IF YES

            50       0000'CF40   D0  02AD 21800 	MOVL	W^ERR_STR_VEC[R0],R0	;ADDRESS OF ASCIC MESSAGE

                          05     11  02B3 21900 	BRB	40$

            50       010B'CF     DE  02B5 22000 30$:	MOVAL	W^UNKNOWN_ERR,R0	;GET GENERAL ERROR MESSAGE

       0106'CF            80     9B  02BA 22100 40$:	MOVZBW	(R0)+,W^OUTRAB+RAB$W_RSZ ;SIZE OF STRING TO PUT

       010C'CF            50     D0  02BF 22200 	MOVL	R0,W^OUTRAB+RAB$L_RBF	;ADDRESS OF STRING TO PUT

                                     02C4 22300 	$PUT	W^OUTRAB		;PUT THE MESSAGE

                     00E4'CF     DF  02C4       		PUSHAL	W^OUTRAB

   00000000'9F            01     FB  02C8       		CALLS	#$$.TMP1,@#SYS$PUT

            5E            5D     D0  02CF 22400 60$:	MOVL	FP,SP			;CLEAN STACK

                          FD70   31  02D2 22500 	BRW	NXT_COMMAND

                                     02D5 22600 ;

                                     02D5 22700 ; LIST COMMAND

                                     02D5 22800 ;

                                     02D5 22900 LIST_COMMAND1:

       01B0'CF            02     E0  02D5 23000 	BBS	#INS_V_NOFILNAM,W^INSFLAG,10$ ;BRANCH IF NO EXPLICIT FILE TO LIST

                          13         02DA       

       01BE'CF         00'8F     8A  02DB 23100 	BICB	#INS$M_GLOBAL,W^CMDBITS+2 ;NO GLOBAL EXPLICIT

            50   00000000'8F     D0  02E1 23200 	MOVL	#INS$_NOSUCHKFI,R0	;ASSUME NO SUCH KNOWN FILE ERROR

                     0140'CF     D5  02E8 23300 	TSTL	W^KFIFAB+FAB$L_CTX	;SEE IF FOUND A KNOWN FILE

                          3F     13  02EC 23400 	BEQL	LIST_ERR_MSG		;BRANCH IF ERROR

       01BE'CF            00'    E1  02EE 23500 10$:	BBC	S^#INS$V_GLOBAL,W^CMDBITS+2,20$ ;/LIST ASSUMED IF NOT /GLOBAL

                          06         02F3       

       01BE'CF            00'    E1  02F4 23600 	BBC	S^#INS$V_LIST,W^CMDBITS+2,40$ ;OTHERWISE NEED /LIST/GLOBAL FOR BOTH

                          17         02F9       

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  12

X0214           GET A COMMAND                                                                                                    (4)



            01            00'    EF  02FA 23700 20$:	EXTZV	S^#INS$V_FULL,#1,W^CMDBITS+2,-(SP) ;TRANSMIT /FULL SWITCH

            7E       01BE'CF         02FD       

                     0140'CF     DD  0301 23800 	PUSHL	W^KFIFAB+FAB$L_CTX	;ADDRESS OF KNOWN FILE ENTRY TO LIST

                     00E4'CF     9F  0305 23900 	PUSHAB	W^OUTRAB		;ADDRESS OF OUTPUT RECORD ACCESS BLOCK	

       0000'CF            03     FB  0309 24000 	CALLS	#3,W^INS$LIST		;LIST THE KNOWN FILES

            1C            50     E9  030E 24100 	BLBC	R0,LIST_ERR_MSG		;BRANCH IF ERROR

       01BE'CF            00'    E1  0311 24200 40$:	BBC	S^#INS$V_GLOBAL,W^CMDBITS+2,60$ ;BRANCH IF NOT LISTING GLOBALS

                          13         0316       

            01            00'    EF  0317 24300 	EXTZV	S^#INS$V_FULL,#1,W^CMDBITS+2,-(SP) ;PASS THE /FULL BIT

            7E       01BE'CF         031A       

                     00E4'CF     9F  031E 24400 	PUSHAB	W^OUTRAB		;ADR OF OUTPUT RECORD ACCESS BLOCK

       0000'CF            02     FB  0322 24500 	CALLS	#2,W^INS$GBLSECLST	;LIST THE GLOBAL SECTIONS

            03            50     E9  0327 24600 	BLBC	R0,LIST_ERR_MSG		;BRANCH IF ERROR

                          FD18   31  032A 25200 60$:	BRW	NXT_COMMAND		;GO GET THE NEXT COMMAND

                                     032D 25300 ;

                                     032D 25400 ; LIST ERROR, ERROR CODE IN R0

                                     032D 25500 ;

                                     032D 25600 LIST_ERR_MSG:

                          FF41   31  032D 25700 	BRW	ERROR_MESSAGE

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  13

X0214           SETNXTNAM, PREFIX_0                                                                                              (5)



                                     0330   100 	.SBTTL	SETNXTNAM, PREFIX_0

                                     0330   200 ;

                                     0330   300 ; ROUTINE TO STORE NEXT NAME STRING IN THE STRING AREA

                                     0330   400 ;

                                     0330   500 ; CALLING SEQUENCE:

                                     0330   600 ;

                                     0330   700 ;	BSBW	SETNXTNAM

                                     0330   800 ;

                                     0330   900 ; INPUTS:

                                     0330  1000 ;

                                     0330  1100 ;	R0,R1 = RESULTS OF THE PREVIOUS LOCC

                                     0330  1200 ;	   R3 = ADDRESS OF NEXT AVAILABLE BYTE IN THE STRING AREA

                                     0330  1300 ;	   R6 = ADDRESS OF BEGINNING OF STRING TO MOVE

                                     0330  1400 ;	   R7 = SIZE OF STRING TO MOVE IF ENTERED AT SETNXTNAM1

                                     0330  1500 ;	   R8 = SIZE OF STRING AREA REMAINING

                                     0330  1600 ;	   R9 = ADDRESS TO STORE THE ADDRESS OF THIS STRING

                                     0330  1700 ;

                                     0330  1800 ; OUTPUTS:

                                     0330  1900 ;

                                     0330  2000 ;	   R3 = ADDRESS OF NEXT AVAILABLE BYTE IN STRING STORAGE

                                     0330  2100 ;	R6,R7 = ADDRESS, SIZE OF STRING TO DO THE NEXT LOCC

                                     0330  2200 ;	   R8 = UPDATED REMAINING SIZE OF STRING AREA

                                     0330  2300 ;	   R9 = NEXT ADDRESS TO STORE THE NEXT STRING ADDRESS

                                     0330  2400 ;	R0,R1,R2,R4,R5 ALTERED

                                     0330  2500 ;

                                     0330  2600 SETNXTNAM:

            51            56     C3  0330  2700 	SUBL3	R6,R1,R7		;SIZE OF STRING TO MOVE

                          57         0333       

                                     0334  2800 SETNXTNAM1:

            58            57     C2  0334  2900 	SUBL	R7,R8			;ADJUST SIZE OF REMAINING STRING STORAGE

                          15     19  0337  3000 	BLSS	20$			;BRANCH IF OUT OF SPACE

                          03     BB  0339  3100 	PUSHR	#^M<R0,R1>		;SAVE LOCC DATA

            89            53     D0  033B  3200 	MOVL	R3,(R9)+		;SET ADDRESS OF THIS STRING

            83            57     90  033E  3300 	MOVB	R7,(R3)+		;SET SIZE OF THIS STRING

            66            57     28  0341  3400 	MOVC3	R7,(R6),(R3)		;MOVE THE STRING

                          63         0344       

            8E            01     C3  0345  3500 	SUBL3	#1,(SP)+,R7		;SIZE OF STRING AFTER LAST DELIMITER

                          57         0348       

            8E            01     C1  0349  3600 	ADDL3	#1,(SP)+,R6		;ADDRESS OF 1ST CHAR AFTER LAST DELIMITER

                          56         034C       

                                 05  034D  3700 	RSB

                                     034E  3800 ;

                                     034E  3900 ; NO STRING STORAGE LEFT, SHOULD NOT HAPPEN

                                     034E  4000 ;

                          FF19   31  034E  4100 20$:	BRW	SYNTAX_ERR		;FORCE A SYNTAX ERROR

                                     0351  4200 ;

                                     0351  4300 ; PREFIX A NUMERIC STRING OF UP TO 3 CHARACTERS WITH ZEROS

                                     0351  4400 ;

                                     0351  4500 ; CALLING SEQUENCE:

                                     0351  4600 ;

                                     0351  4700 ;	BSBW	PREFIX_0

                                     0351  4800 ;

                                     0351  4900 ; INPUTS:

                                     0351  5000 ;

                                     0351  5100 ;	R1 = ADDRESS OF LAST + 1 CHAR OF NUMERIC STRING

                                     0351  5200 ;	R2 = ADDRESS TO STORE PREFIXED STRING

                                     0351  5300 ;	R6 = ADDRESS OF 1ST CHAR OF NUMERIC STRING

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  14

X0214           SETNXTNAM, PREFIX_0                                                                                              (5)



                                     0351  5400 ;

                                     0351  5500 ; OUTPUTS:

                                     0351  5600 ;

                                     0351  5700 ;	R2 = INPUT R2 + 3

                                     0351  5800 ;	R6 = ADDRESS OF 1ST CHARACTER OF NEXT STRING

                                     0351  5900 ;

                                     0351  6000 PREFIX_0:

            82   30303030 8F     D0  0351  6100 	MOVL	#^A/0000/,(R2)+		;STORE ASCII ZEROS

            50            72     9E  0358  6200 	MOVAB	-(R2),R0		;R0 = ADR + 1 OF 3 BYTE AREA

            51            56     C3  035B  6300 	SUBL3	R6,R1,R3		;NUMBER OF CHARACTERS TO MOVE

                          53         035E       

            56         01 A1     9E  035F  6400 	MOVAB	1(R1),R6		;ADDRESS OF NEXT STRING

            70            71     90  0363  6500 10$:	MOVB	-(R1),-(R0)		;MOVE CHARACTERS BACKWARDS

            FA            53     F5  0366  6600 	SOBGTR	R3,10$			;INTO BACKGROUNDED STRING

                                 05  0369  6700 	RSB

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  15

X0214           SCAN_SWITCH - SCAN FOR SWITCHES IN COMMAND LINE                                                                  (6)



                                     036A   100 	.SBTTL	SCAN_SWITCH - SCAN FOR SWITCHES IN COMMAND LINE

                                     036A   200 ;

                                     036A   300 ; CALLING SEQUENCE:

                                     036A   400 ;

                                     036A   500 ;	BSBW	SCAN_SWITCH

                                     036A   600 ;

                                     036A   700 ; INPUTS:

                                     036A   800 ;

                                     036A   820 ;	R4 = SWITCH DELIMITER CHARACTER

                                     036A   840 ;	R5 = ADDRESS OF SWITCH MATCH ROUTINE TO CALL

                                     036A   900 ;	R6 = ADDRESS OF STRING TO SCAN (JUST BEYOND FIRST DELIMITER)

                                     036A  1000 ;	R7 = SIZE OF STRING TO SCAN

                                     036A  1300 ;

                                     036A  1400 ; OUTPUTS:

                                     036A  1500 ;

                                     036A  1600 ;	R8-R11 PRESERVED

                                     036A  1650 ;	R0-R7 ALTERED

                                     036A  1700 ;	BITS SET IN SWITCH_BITS ACCORDING TO SWITCHES FOUND

                                     036A  1800 ;	ON ERROR, EXITS VIA

                                     036A  1900 ;

                                     036A  2000 ;		BRW	ERROR_MESSAGE

                                     036A  2100 ;

                                     036A  2200 SCAN_SWITCH:

            57            54     3A  036A  2300 10$:	LOCC	R4,R7,(R6)		;FIND NEXT OCCURRENCE OF SWITCH DELIMITER

                          66         036D       

            51            56     C3  036E  2400 	SUBL3	R6,R1,R7		;SIZE OF SWITCH JUST FOUND

                          57         0371       

                          70     9F  0372  2500 	PUSHAB	-(R0)			;SAVE THE COUNT

                       01 A1     9F  0374  2600 	PUSHAB	1(R1)			;AND ADDRESS OF REMAINING STRING

                                     0377  2700 					;STRIPPING THE DELIMITER FROM THE FRONT

            57            3D     3A  0377  2800 	LOCC	#^A"=",R7,(R6)		;ANY SUB-SWITCHES?

                          66         037A       

            51            56     C3  037B  2900 	SUBL3	R6,R1,R3		;SIZE OF ACTUAL SWITCH STRING

                          53         037E       

                          54     13  037F  3000 	BEQL	90$			;BRANCH IF NULL SWITCH

                     0048 8F     BB  0381  3100 	PUSHR	#^M<R3,R6>		;FORM STRING DESCRIPTOR

                     01B4'CF     DF  0385  3200 	PUSHAL	W^SWITCH_BITS		;ADDRESS OF BIT VECTOR

                       04 AE     DF  0389  3300 	PUSHAL	4(SP)			;ADDRESS OF STRING DECRIPTOR

            65            04     FB  038C  3400 	CALLS	#4,(R5)			;CALL THE MATCH ROUTINE

            4B            50     E9  038F  3500 	BLBC	R0,100$			;BRANCH IF ERROR

       01BC'CF            07     E1  0392  3600 	BBC	#KFI$V_PROCPRIV,W^CMDBITS,90$ ;BRANCH IF NOT /PRIV

                          3D         0397       

       01B0'CF            01     E2  0398  3700 	BBSS	#INS_V_PROCPRIV,W^INSFLAG,90$ ;PROCESS PRIVILEGE SWITCHES ONCE

                          37         039D       

                                     039E  5000 ;

                                     039E  5100 ; /PRIVILEGE SWITCH ALLOWS A VALUE WHICH IS A LIST OF SWITCHES

                                     039E  5200 ;

                                     039E  5300 ;	/PRIV				;DEFAULT PRIVILEGE

                                     039E  5400 ;	/PRIV=PHY_IO			;SINGLE EXPLICIT PRIVILEGE

                                     039E  5500 ;	/PRIV=(PHY_IO,CMKRNL)		;LIST OF PRIVILEGE BITS

                                     039E  5600 ;

       01B4'CF            01     CE  039E  5700 	MNEGL	#1,W^PROCPRIV		;SET DEFAULT PRIVILEGE

       01B8'CF            01     CE  03A3  5800 	MNEGL	#1,W^PROCPRIV+4

            57            3D     3A  03A8  5900 	LOCC	#^A"=",R7,(R6)		;ANY "=" IN THIS STRING

                          66         03AB       

                          27     13  03AC  6000 	BEQL	90$			;BRANCH IF NOT

                     01B4'CF     7C  03AE  6100 	CLRQ	W^PROCPRIV		;SET UP TO PROCESS EXPLICIT PRIVILEGES

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  16

X0214           SCAN_SWITCH - SCAN FOR SWITCHES IN COMMAND LINE                                                                  (6)



                     00F0 8F     BB  03B2  6200 	PUSHR	#^M<R4,R5,R6,R7>	;SAVE CONTEXT IN PREPARATION FOR

                                     03B6  6300 					;A RECURSIVE CALL ON THE SWITCH PROCESSOR

            54            2C     9A  03B6  6400 	MOVZBL	#^A",",R4		;"," IS THE SWITCH DELIMITER

            55       0000'CF     DE  03B9  6500 	MOVAL	W^PRV$SETPRIV,R5	;ADDRESS OF PRIVILEGE SWITCH SCANNER

            56         01 A1     9E  03BE  6600 	MOVAB	1(R1),R6		;ADDRESS OF FIRST CHAR AFTER "="

            57            70     9E  03C2  6700 	MOVAB	-(R0),R7		;SIZE OF STRING

                                     03C5  6800 ;

                                     03C5  6900 ; PULL OFF THE PARENTHESES IF PRESENT

                                     03C5  7000 ;

            66            28     91  03C5  7100 	CMPB	#^A"(",(R6)		;LIST OF PRIVILEGES SPECIFIED?

                          05     12  03C8  7200 	BNEQ	70$			;BRANCH IF NOT

                          56     D6  03CA  7300 	INCL	R6			;STEP OVER LEFT PAREN

            57            02     C2  03CC  7400 	SUBL	#2,R7			;REMOVE BOTH FROM COUNT

                          99     10  03CF  7500 70$:	BSBB	SCAN_SWITCH		;PROCESS THE PRIVILEGE SWITCHES

                     00F0 8F     BA  03D1  7600 	POPR	#^M<R4,R5,R6,R7>	;RESTORE CONTEXT TO CONTINUE SCANNING

                                     03D5  7700 					;THE MASTER SWITCH TABLE

            56            8E     7D  03D5  8300 90$:	MOVQ	(SP)+,R6		;STRING DESCRIPTOR FOR REMAINDER OF STRING

                          57     D5  03D8  8400 	TSTL	R7			;IF ANYTHING LEFT

                          8E     14  03DA  8510 	BGTR	10$			;BRANCH IF MORE SWITCHES IN COMMAND LINE

                                 05  03DC  8600 	RSB				;SWITCH PROCESSING COMPLETE

                                     03DD  8700 ;

                                     03DD  8800 ; ERROR FROM SWITCH MATCH ROUTINE

                                     03DD  8900 ;

   00000000'8F            50     D1  03DD  9000 100$:	CMPL	R0,#PRV$_NOTUNQ		;SWITCH NOT UNIQUE?

                          09     13  03E4  9100 	BEQL	120$			;BRANCH IF YES

            50   00000000'8F     D0  03E6  9200 	MOVL	#INS$_BADSWITCH,R0	;REPORT BAD SWITCH

                          07     11  03ED  9300 	BRB	140$

            50   00000000'8F     D0  03EF  9400 120$:	MOVL	#INS$_AMBSWITCH,R0	;AMBIGUOUS SWITCH

                          FE78   31  03F6  9500 140$:	BRW	ERROR_MESSAGE

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  17

X0214           MATCH_SWITCH - TRY TO MATCH THE SPECIFIED SWITC                                                                  (7)



                                     03F9   100 	.SBTTL	MATCH_SWITCH - TRY TO MATCH THE SPECIFIED SWITCH

                                     03F9   200 ;

                                     03F9   300 ; CALLING SEQUENCE:

                                     03F9   400 ;

                                     03F9   500 ;	CALLS, CALLG MATCH_SWITCH

                                     03F9   600 ;

                                     03F9   700 ; INPUTS:

                                     03F9   800 ;

                                     03F9   900 ;	4(AP) = ADDRESS OF STRING DESCRIPTOR FOR THE NAME TO MATCH

                                     03F9  1000 ;	8(AP) = ADDRESS OF BIT VECTOR INTO WHICH TO SET BITS

                                     03F9  1100 ;

                                     03F9  1200 ; OUTPUTS:

                                     03F9  1300 ;

                                     03F9  1400 ;	R0 = LOW BIT SET IF SUCCESSFUL, LOW BIT CLEAR IF ERROR

                                     03F9  1500 ;	   = PRV$_NOTUNQ IF SWITCH WAS NOT UNIQUELY MATCHED

                                     03F9  1600 ;	   = PRV$_INVNAM IF SWITCH WAS NOT FOUND

                                     03F9  1700 ;

                                     03F9  1800 MATCH_SWITCH:

                               01FC  03F9  1900 	.WORD	^M<R2,R3,R4,R5,R6,R7,R8>

            54       0000'CF     DE  03FB  2000 	MOVAL	W^SWITCH_TABLE,R4	;ADDRESS OF SWITCH TABLE TO SCAN

            55         04 BC     7D  0400  2100 	MOVQ	@4(AP),R5		;GET SIZE AND ADDRESS OF STRING TO MATCH

                          58     D4  0404  2400 	CLRL	R8			;CLEAR SCAN FLAGS

                          05     11  0406  2500 	BRB	40$

            54         01 A447   9E  0408  2600 30$:	MOVAB	1(R4)[R7],R4		;POINT TO NEXT SWITCH IN THE TABLE

            57            84     9A  040D  2700 40$:	MOVZBL	(R4)+,R7		;SIZE OF THIS SWITCH ENTRY

                          2C     13  0410  2800 	BEQL	100$			;BRANCH IF END OF TABLE

            50            55     D0  0412  2900 	MOVL	R5,R0			;CHOOSE THE SMALLER STRING SIZE

            55            57     D1  0415  3000 	CMPL	R7,R5			;FROM TABLE AND COMMAND LINE

                          07     14  0418  3100 	BGTR	45$			;BRANCH IF ABBREVIATING

            50            57     D0  041A  3200 	MOVL	R7,R0			;MATCH ALL THE TABLE CHARACTERS

            58            09     E2  041D  3300 	BBSS	#INS_V_EXACTMAT,R8,45$	;NO NEED TO SCAN FOR AMBIGUITY

                          00         0420       

            64            50     29  0421  3400 45$:	CMPC3	R0,(R4),(R6)		;GOT A MATCH?

                          66         0424       

                          E1     12  0425  3500 	BNEQ	30$			;BRANCH IF NOT, TRY THE NEXT TABLE ENTRY

                                     0427  3600 ;

                                     0427  3700 ; MATCHED THE SWITCH

                                     0427  3800 ;

            58            08     E2  0427  3900 	BBSS	#INS_V_FIRSTMAT,R8,120$	;BRANCH IF AMBIGUOUS SWITCH

                          1F         042A       

            54            57     C0  042B  4000 	ADDL	R7,R4			;POINT TO VALUE BYTE

            50            84     9A  042E  4100 	MOVZBL	(R4)+,R0		;GET BIT TO SET

         08 BC            50     E2  0431  4200 	BBSS	R0,@8(AP),60$		;SET THE DESIRED BIT

                          00         0435       

                                     0436  4300 ;

                                     0436  4400 ; SWITCH MATCHED AND PROCESSED, BUT IF IT WAS AN ABBREVIATION,

                                     0436  4500 ; MUST CONTINUE SCANNING TO SEE IF IT WAS UNIQUE.

                                     0436  4600 ;

            58            09     E1  0436  4700 60$:	BBC	#INS_V_EXACTMAT,R8,40$	;CONTINUE SCAN IF NOT EXACT MATCH

                          D3         0439       

            50            01     3C  043A  4800 90$:	MOVZWL	#1,R0			;SUCCESSFUL RETURN STATUS

                                 04  043D  4900 	RET

                                     043E  5000 ;

                                     043E  5100 ; END OF SWITCH TABLE

                                     043E  5200 ;

            58            08     E0  043E  5300 100$:	BBS	#INS_V_FIRSTMAT,R8,90$	;BRANCH IF EXACTLY ONE MATCH FOUND

                          F8         0441       

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  18

X0214           MATCH_SWITCH - TRY TO MATCH THE SPECIFIED SWITC                                                                  (7)



            50   00000000'8F     D0  0442  5400 	MOVL	#PRV$_INVNAM,R0		;INVALID NAME, NOT FOUND

                                 04  0449  5500 	RET

                                     044A  5600 ;

                                     044A  5700 ; FOUND MORE THAN ONE MATCH FOR SPECIFIED STRING

                                     044A  5800 ;

            50   00000000'8F     D0  044A  5900 120$:	MOVL	#PRV$_NOTUNQ,R0		;NAME NOT UNIQUE

                                 04  0451  6000 	RET

                                     0452  6100 

                                     0452  6200 

                                     0452  6300 	.END	START

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  19

SYMBOL TABLE                                                                                                                     (7)



$$.TAB         = 00000178 R     03   FAB$K_BLN        00000050            FAB$M_TMD      = 00000010            

$$.TABEND      = 000001B0 R     03   FAB$L_ALQ        00000010            FAB$M_TMP      = 00000008            

$$.TMP         = 00000000            FAB$L_CTX        00000018            FAB$M_TRN      = 00000010            

$$.TMP1        = 00000001            FAB$L_DEV        00000040            FAB$M_UFM      = 04000000            

$$.TMP2        = 000000CF            FAB$L_DNA        00000030            FAB$M_UFO      = 00020000            

$$.TMPX        = 00000013 R     04   FAB$L_FNA        0000002C            FAB$M_UPD      = 00000008            

$$.TMPX1       = 0000000F            FAB$L_FOP        00000004            FAB$M_UPI      = 00000040            

$$ARGS         = 00000004            FAB$L_JNL        00000020            FAB$M_WCK      = 00000200            

$$T1           = 00000014            FAB$L_MRN        00000038            FAB$S_ORG      = 00000004            

AMBIGSWITCHERR   00000081 R     06   FAB$L_NAM        00000028            FAB$S_PPF_RAT  = 00000008            

ARGBYTCNT        00000028            FAB$L_SDC        00000044            FAB$V_BIO      = 00000005            

ARGLIST          000001C0 R     03   FAB$L_STS        00000008            FAB$V_BLK      = 00000003            

BADSWITCHERR     00000061 R     06   FAB$L_STV        0000000C            FAB$V_BRO      = 00000006            

BIT...         = 0000001A            FAB$L_XAB        00000024            FAB$V_CBT      = 00000015            

CHAN             00000004            FAB$M_BIO      = 00000020            FAB$V_CIF      = 00000019            

CLI$L_CLIFLAG    ********   X   07   FAB$M_BLK      = 00000008            FAB$V_CR       = 00000001            

CLI$V_VFYINP     ********   X   07   FAB$M_BRO      = 00000040            FAB$V_CTG      = 00000014            

CMDBITS          000001BC R     03   FAB$M_CBT      = 00200000            FAB$V_DEL      = 00000002            

CMD_TOO_LONG     000000BB R     06   FAB$M_CIF      = 02000000            FAB$V_DFW      = 00000005            

CONTINUE_ADR     00000050 R     06   FAB$M_CR       = 00000002            FAB$V_DLT      = 0000000F            

CONTINUE_GET     00000078 R     07   FAB$M_CTG      = 00100000            FAB$V_DMO      = 0000000C            

CONTINUE_SIZ   = 00000004            FAB$M_DEL      = 00000004            FAB$V_ESC      = 0000001B            

DEVNAM           00000014            FAB$M_DFW      = 00000020            FAB$V_EXE      = 00000007            

DIR...         = 00000001            FAB$M_DLT      = 00008000            FAB$V_FTN      = 00000000            

DIRNAM           00000018            FAB$M_DMO      = 00001000            FAB$V_GET      = 00000001            

ENDZRO           00000024            FAB$M_ESC      = 08000000            FAB$V_INP      = 00000013            

END_SWITCH       00000204 R     07   FAB$M_EXE      = 00000080            FAB$V_JNL      = 00000016            

ERROR_MESSAGE    00000271 R     07   FAB$M_FTN      = 00000001            FAB$V_KFO      = 0000001E            

ERROR_MESSAGE1   000000EA R     07   FAB$M_GET      = 00000002            FAB$V_MSE      = 00000004            

ERR_STR_VEC      00000000 R     05   FAB$M_INP      = 00080000            FAB$V_MXV      = 00000001            

EXISTSERR        000000A7 R     06   FAB$M_JNL      = 00400000            FAB$V_NAM      = 00000018            

EXIT             00000094 R     07   FAB$M_KFO      = 40000000            FAB$V_NEF      = 0000000A            

EXIT1            0000003A R     07   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            

FAB$C_MAXRFM   = 00000003            FAB$M_SHRGET   = 00000002            FAB$V_SPL      = 0000000D            

FAB$C_REL      = 00000010            FAB$M_SHRPUT   = 00000001            FAB$V_SQO      = 00000006            

FAB$C_RFM_DFLT = 00000002            FAB$M_SHRUPD   = 00000008            FAB$V_SUP      = 00000002            

FAB$C_SEQ      = 00000000            FAB$M_SPL      = 00002000            FAB$V_TEF      = 0000001C            

FAB$C_UDF      = 00000000            FAB$M_SQO      = 00000040            FAB$V_TMD      = 00000004            

FAB$C_VAR      = 00000002            FAB$M_SUP      = 00000004            FAB$V_TMP      = 00000003            

FAB$C_VFC      = 00000003            FAB$M_TEF      = 10000000            FAB$V_TRN      = 00000004            

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  20

SYMBOL TABLE                                                                                                                     (7)



FAB$V_UFM      = 0000001A            KFI$B_DIRNAM     0000000D            KFINAM           00000178 R     03   

FAB$V_UFO      = 00000011            KFI$B_FILNAM     0000000E            KFI_LST_FULL     000000D1 R     06   

FAB$V_UPD      = 00000003            KFI$B_KFICTL     0000000B            KFI_NOT_FOUND    000000F6 R     06   

FAB$V_UPI      = 00000006            KFI$B_KFIQNUM    00000012            LIST_COMMAND     0000025F R     07   

FAB$V_WCK      = 00000009            KFI$B_KFISEQ     00000013            LIST_COMMAND1    000002D5 R     07   

FAB$W_BLS        0000003C            KFI$B_MATCHCTL   0000002C            LIST_ERR_MSG     0000032D R     07   

FAB$W_DEQ        00000014            KFI$B_TYPE       0000000A            MATCH_SWITCH     000003F9 R     07   

FAB$W_IFI        00000002            KFI$B_TYPNAM     0000000F            NAM$B_BID        00000000            

FAB$W_MRS        00000036            KFI$C_KFIHDLEN   00000014            NAM$B_BLN        00000001            

FILNAM           0000001C            KFI$C_LENGTH     00000034            NAM$B_CURLVL     00000038            

FLAGADR          00000008            KFI$K_KFIHDLEN   00000014            NAM$B_ESL        0000000B            

GBL...         = 00000000            KFI$K_LENGTH     00000034            NAM$B_ESS        0000000A            

IACFLG         = 000001F8 R     03   KFI$L_IDENT      00000030            NAM$B_RSL        00000003            

IAC_M_NOACT    = 00000001            KFI$L_IMGHDR     00000020            NAM$B_RSS        00000002            

IAC_M_WRITABLE = 00000002            KFI$L_KFIQBL     00000004            NAM$C_BID      = 00000002            

IAC_V_NOACT    = 00000000            KFI$L_KFIQFL     00000000            NAM$C_BLN        00000038            

IAC_V_WRITABLE = 00000001            KFI$L_USECNT     00000018            NAM$C_BLN_DIRWC  00000050            

IMGACT$_DFLNAM = 00000008            KFI$L_WINDOW     0000001C            NAM$C_DVI      = 00000010            

IMGACT$_HDRBUF = 0000000C            KFI$M_COMPATMOD= 00008000            NAM$C_MAXRSS   = 00000080            

IMGACT$_IMGCTL = 00000010            KFI$M_DONOTOPEN= 00000004            NAM$C_MAXRSSLCL= 00000060            

IMGACT$_NAME   = 00000004            KFI$M_FILIDOPEN= 00000002            NAM$K_BLN        00000038            

IMGACT$_NARGS  = 00000004            KFI$M_IS_RESHDR= 00000100            NAM$K_BLN_DIRWC  00000050            

IMGACT_ARGLIST   000001E8 R     03   KFI$M_IS_SHARED= 00000200            NAM$L_DIRWCC1    00000040            

INFAB            00000000 R     03   KFI$M_KFIHD    = 00000001            NAM$L_DIRWCC2    00000044            

INRAB            000000A0 R     03   KFI$M_KFISEQ   = 00000003            NAM$L_DIRWCC3    00000048            

INS$CREDEL       ********   X   07   KFI$M_KP_OPEN  = 00000001            NAM$L_DIRWCC4    0000004C            

INS$GBLSECLST    ********   X   07   KFI$M_KP_RESHDR= 00000002            NAM$L_DWC        00000038            

INS$LIST         ********   X   07   KFI$M_KP_SHARED= 00000004            NAM$L_ESA        0000000C            

INS$M_CREATE     ********   X   07   KFI$M_LIM      = 00000040            NAM$L_FNB        00000034            

INS$M_DELETE     ********   X   07   KFI$M_MARKDEL  = 00000080            NAM$L_RLF        00000010            

INS$M_FULL       ********   X   07   KFI$M_NOREPLACE= 00000040            NAM$L_RSA        00000004            

INS$M_GLOBAL     ********   X   07   KFI$M_PROCPRIV = 00000080            NAM$L_WCC        00000030            

INS$M_LIST       ********   X   07   KFI$Q_PROCPRIV   00000024            NAM$M_DIR_LVLS = 00E00000            

INS$M_REPLACE    ********   X   07   KFI$S_KFISEQ   = 00000002            NAM$M_EXP_DEV  = 00000080            

INS$V_CREATE     ********   X   06   KFI$V_COMPATMOD= 0000000F            NAM$M_EXP_DIR  = 00000040            

INS$V_DELETE     ********   X   06   KFI$V_DONOTOPEN= 00000002            NAM$M_EXP_NAME = 00000004            

INS$V_FULL       ********   X   06   KFI$V_FILIDOPEN= 00000001            NAM$M_EXP_TYPE = 00000002            

INS$V_GLOBAL     ********   X   06   KFI$V_IS_RESHDR= 00000008            NAM$M_EXP_VER  = 00000001            

INS$V_LIST       ********   X   06   KFI$V_IS_SHARED= 00000009            NAM$M_GRP_MBR  = 00080000            

INS$V_REPLACE    ********   X   06   KFI$V_KFIHD    = 00000000            NAM$M_HIGHVER  = 00008000            

INS$_AMBSWITCH   ********   X   07   KFI$V_KFISEQ   = 00000000            NAM$M_LOWVER   = 00004000            

INS$_BADSWITCH   ********   X   07   KFI$V_KP_OPEN  = 00000000            NAM$M_NODE     = 00020000            

INS$_CMDTOOLNG   ********   X   07   KFI$V_KP_RESHDR= 00000001            NAM$M_PPF      = 00010000            

INS$_FAC_COD     ********   X   07   KFI$V_KP_SHARED= 00000002            NAM$M_QUOTED   = 00040000            

INS$_NOSUCHKFI   ********   X   07   KFI$V_LIM      = 00000006            NAM$M_WILDCARD = 00000100            

INS$_SYNTAX      ********   X   07   KFI$V_MARKDEL  = 00000007            NAM$M_WILD_DIR = 00100000            

INSFLAG          000001B0 R     03   KFI$V_NOREPLACE= 00000006            NAM$M_WILD_GRP = 01000000            

INS_M_NOFILNAM = 00000004            KFI$V_PROCPRIV = 00000007            NAM$M_WILD_MBR = 02000000            

INS_M_PROCPRIV = 00000002            KFI$W_FID        0000001C            NAM$M_WILD_NAME= 00000020            

INS_M_VFYINP   = 00000001            KFI$W_FID_NUM    0000001C            NAM$M_WILD_SFD1= 02000000            

INS_V_EXACTMAT = 00000009            KFI$W_FID_RVN    00000020            NAM$M_WILD_SFD2= 04000000            

INS_V_FIRSTMAT = 00000008            KFI$W_FID_SEQ    0000001E            NAM$M_WILD_SFD3= 08000000            

INS_V_NOFILNAM = 00000002            KFI$W_FLAGS      00000014            NAM$M_WILD_SFD4= 10000000            

INS_V_PROCPRIV = 00000001            KFI$W_GBLSECCNT  00000016            NAM$M_WILD_SFD5= 20000000            

INS_V_VFYINP   = 00000000            KFI$W_REFCNT     00000010            NAM$M_WILD_SFD6= 40000000            

KFI$B_DEVNAM     0000000C            KFI$W_SIZE       00000008            NAM$M_WILD_SFD7= 80000000            

KFI$B_DEVUCB     0000000C            KFIFAB           00000128 R     03   NAM$M_WILD_TYPE= 00000010            

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  21

SYMBOL TABLE                                                                                                                     (7)



NAM$M_WILD_UFD = 01000000            PRV$_INVNAM      ********   X   07   RAB$M_TPT      = 00000002            

NAM$M_WILD_VER = 00000008            PRV$_NOTUNQ      ********   X   07   RAB$M_UIF      = 00000010            

NAM$S_DIR_LVLS = 00000003            RAB$B_BID        00000000            RAB$M_ULK      = 00040000            

NAM$T_DVI        00000014            RAB$B_BLN        00000001            RAB$M_WAT      = 00020000            

NAM$V_DIR_LVLS = 00000015            RAB$B_KRF        00000035            RAB$M_WBH      = 00000400            

NAM$V_EXP_DEV  = 00000007            RAB$B_KSZ        00000034            RAB$S_PPF_RAT  = 00000008            

NAM$V_EXP_DIR  = 00000006            RAB$B_MBC        00000037            RAB$V_ASY      = 00000000            

NAM$V_EXP_NAME = 00000002            RAB$B_MBF        00000036            RAB$V_BIO      = 0000000B            

NAM$V_EXP_TYPE = 00000001            RAB$B_PSZ        00000034            RAB$V_CCO      = 0000001F            

NAM$V_EXP_VER  = 00000000            RAB$B_RAC        0000001E            RAB$V_CVT      = 0000001A            

NAM$V_GRP_MBR  = 00000013            RAB$B_ROP1       00000005            RAB$V_EOF      = 00000008            

NAM$V_HIGHVER  = 0000000F            RAB$B_ROP2       00000006            RAB$V_FDL      = 00000006            

NAM$V_LOWVER   = 0000000E            RAB$B_ROP3       00000007            RAB$V_HSH      = 00000007            

NAM$V_NODE     = 00000011            RAB$B_TMO        0000001F            RAB$V_KGE      = 00000015            

NAM$V_PPF      = 00000010            RAB$C_BID      = 00000001            RAB$V_KGT      = 00000016            

NAM$V_QUOTED   = 00000012            RAB$C_BLN        00000044            RAB$V_LIM      = 0000000E            

NAM$V_WILDCARD = 00000008            RAB$C_KEY      = 00000001            RAB$V_LOA      = 0000000D            

NAM$V_WILD_DIR = 00000014            RAB$C_RFA      = 00000002            RAB$V_LOC      = 00000010            

NAM$V_WILD_GRP = 00000018            RAB$C_SEQ      = 00000000            RAB$V_MAS      = 00000005            

NAM$V_WILD_MBR = 00000019            RAB$K_BLN        00000044            RAB$V_NLK      = 00000014            

NAM$V_WILD_NAME= 00000005            RAB$L_BKT        00000038            RAB$V_NXR      = 00000017            

NAM$V_WILD_SFD1= 00000019            RAB$L_CTX        00000018            RAB$V_PMT      = 0000001E            

NAM$V_WILD_SFD2= 0000001A            RAB$L_DCT        00000038            RAB$V_PPF_IND  = 0000000E            

NAM$V_WILD_SFD3= 0000001B            RAB$L_FAB        0000003C            RAB$V_PPF_RAT  = 00000006            

NAM$V_WILD_SFD4= 0000001C            RAB$L_KBF        00000030            RAB$V_PTA      = 0000001D            

NAM$V_WILD_SFD5= 0000001D            RAB$L_PBF        00000030            RAB$V_RAH      = 00000009            

NAM$V_WILD_SFD6= 0000001E            RAB$L_RBF        00000028            RAB$V_RLK      = 00000013            

NAM$V_WILD_SFD7= 0000001F            RAB$L_RFA0       00000010            RAB$V_RNE      = 00000018            

NAM$V_WILD_TYPE= 00000004            RAB$L_RHB        0000002C            RAB$V_RNF      = 0000001B            

NAM$V_WILD_UFD = 00000018            RAB$L_ROP        00000004            RAB$V_TMO      = 00000019            

NAM$V_WILD_VER = 00000003            RAB$L_STS        00000008            RAB$V_TPT      = 00000001            

NAM$W_DID        0000002A            RAB$L_STV        0000000C            RAB$V_UIF      = 00000004            

NAM$W_DID_NUM    0000002A            RAB$L_UBF        00000024            RAB$V_ULK      = 00000012            

NAM$W_DID_RVN    0000002E            RAB$M_ASY      = 00000001            RAB$V_WAT      = 00000011            

NAM$W_DID_SEQ    0000002C            RAB$M_BIO      = 00000800            RAB$V_WBH      = 0000000A            

NAM$W_FID        00000024            RAB$M_CCO      = 80000000            RAB$W_ISI        00000002            

NAM$W_FID_NUM    00000024            RAB$M_CVT      = 04000000            RAB$W_RFA        00000010            

NAM$W_FID_RVN    00000028            RAB$M_EOF      = 00000100            RAB$W_RFA4       00000014            

NAM$W_FID_SEQ    00000026            RAB$M_FDL      = 00000040            RAB$W_RSZ        00000022            

NAM$W_PRV_DID    0000003A            RAB$M_HSH      = 00000080            RAB$W_USZ        00000020            

NAMEMASK         00000010            RAB$M_KGE      = 00200000            REC_BUF_SIZ    = 000001F4            

NAMESTR          0000028C R     03   RAB$M_KGT      = 00400000            RMS$_EOF         ********   X   07   

NAME_SIZE        000001FC R     03   RAB$M_LIM      = 00004000            RSLTNAME         0000020C R     03   

NO_FILE_NAME     00000262 R     07   RAB$M_LOA      = 00002000            RSLTNAME_ADR     00000200 R     03   

NXT_COMMAND      00000045 R     07   RAB$M_LOC      = 00010000            SAVABS...      = 00000028            

NXT_COMMAND1     000000ED R     07   RAB$M_MAS      = 00000020            SCAN_SWITCH      0000036A R     07   

NXT_COMMAND2     0000025C R     07   RAB$M_NLK      = 00100000            SETNXTNAM        00000330 R     07   

OUTFAB           00000050 R     03   RAB$M_NXR      = 00800000            SETNXTNAM1       00000334 R     07   

OUTRAB           000000E4 R     03   RAB$M_PMT      = 40000000            SS$_NORMAL       ********   X   07   

PREFIX_0         00000351 R     07   RAB$M_PPF_IND  = 00004000            START            00000000 R     07   

PRIVADR          0000000C            RAB$M_PPF_RAT  = 00003FC0            STRING_BUF       0000030C R     03   

PROCESS_REC      00000095 R     07   RAB$M_PTA      = 20000000            STRING_BUFADR    00000208 R     03   

PROCESS_REC1     000000F0 R     07   RAB$M_RAH      = 00000200            STRING_BUFSIZ    00000204 R     03   

PROCPRIV         000001B4 R     03   RAB$M_RLK      = 00080000            SWITCH_BITS      000001B4 R     03   

PROMPTADR        0000004C R     06   RAB$M_RNE      = 01000000            SWITCH_TABLE     00000000 R     06   

PROMPTSIZ      = 00000004            RAB$M_RNF      = 08000000            SYNTAXERR        00000054 R     06   

PRV$SETPRIV      ********   X   07   RAB$M_TMO      = 02000000            SYNTAX_ERR       0000026A R     07   

INSTALL         - INSTALL A KNOWN IMAGE                          22-AUG-1978 01:15:43   VAX-11 MACRO X0.3-11               Page  22

SYMBOL TABLE                                                                                                                     (7)



SYS$CMKRNL       ********   X   07   

SYS$CONNECT      ********  GX   07   

SYS$CREATE       ********  GX   07   

SYS$DASSGN       ********   X   07   

SYS$GET          ********  GX   07   

SYS$IMGACT       ********   X   07   

SYS$OPEN         ********  GX   07   

SYS$PUT          ********  GX   07   

SYS$PUTMSG       ********   X   07   

TYPNAM           00000020            

UNKNOWN_ERR      0000010B R     06   





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$            00000050      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

DATA             00000500      03     NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD    WRT LONG  

$RMSNAM          00000022      04     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

RO_LONG          00000020      05     NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD  NOWRT LONG  

RO_BYTE          00000119      06     NOPIC   USR   CON   REL   LCL NOSHR NOEXE   RD  NOWRT BYTE  

CODE             00000452      07     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

7688. BYTES LEFT IN FREE MEMORY POOL.

20. BYTES OF RECLAIMED MEMORY.

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

33 MLB DIR RDS - 859 GETS TO DEFINE 43 MACROS. 84 INTER. FILE WRITES. 

