Google
 

Trailing-Edge - PDP-10 Archives - bb-x141b-bb - ufd.lst
There are 2 other files named ufd.lst in the archive. Click here to see a list.
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22
TABLE OF CONTENTS

     3-    2	TITLE PAGE
     3-   30	MACRO CALLS AND DEFINITIONS
     4-   57	ASSORTED DATA - DPB'S
     5-  122	OTHER RANDOM DATA
     6-  175	ERROR MESSAGES
     7-  209	MAIN PROGRAM
     8-  327	ERROR EXITS
     9-  361	QIO CALL ROUTINE
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 3


      1					.TITLE	UFD - CREATE DIRECTORY FILE
      2					.SBTTL	TITLE PAGE
      3
      4					.IDENT	"V0415"
      5
      6					;                             COPYRIGHT (C) 1975, 1978 BY
      7					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      8					;
      9					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
     10					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     11					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     12					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     13					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     14					;
     15					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     16					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     17					;       CORPORATION.
     18					;
     19					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     20					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     21					;
     22					;
     23					; ANDREW C. GOLDSTEIN  25 FEB 75  19:13
     24
     25		000001 			UFDLUN = 1
     26		000001 			UFDEFN = 1
     27		000002 			COLUN = 2
     28		000002 			COEFN = 2
     29
     30					.SBTTL	MACRO CALLS AND DEFINITIONS
     31
     32					; MACROS FROM SYSTEM LIBRARY
     33
     34						.MCALL	DIR$,GMCR$,GLUN$C,EXIT$S,ALUN$,CALL,RETURN,WTSE$S,NMBLK$
     35						.MCALL	QIO$,QIO$S,NBOF$L,FDOF$L
     36						.IIF	NDF,R$$11M	.MCALL	QIOW$
     37
     38	000000					FDOF$L
     39	000000					NBOF$L
     40
     41					; MACRO TO CALL QIO ROUTINE
     42
     43					.MACRO	QIO	DPB
     44						JSR	R5,XQIO
     45						.WORD	DPB
     46					.ENDM	QIO
     47
     48					; MACRO FOR SOB'S
     49
     50						.IF	NDF	R$$EIS
     51					.MACRO	SOB	RX,LABEL
     52						DEC	RX
     53						BNE	LABEL
     54					.ENDM	SOB
     55						.ENDC
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 4
ASSORTED DATA - DPB'S

     57					.SBTTL	ASSORTED DATA - DPB'S
     58
     59	000000					.PSECT	IMPURE,D
     60
     61	000000				GCML:	GMCR$			; GET MCR COMMAND LINE FOR ERROR EXIT ONLY
     62
     63					; ASSIGN LUN TO DEVICE
     64
     65	000122				ASLUN:	ALUN$	UFDLUN,XX,0
     66
     67		000126'			$UDEV==	ASLUN+A.LUNA
     68		000130'			$UUNIT==ASLUN+A.LUNU
     69
     70						.IF	NDF,R$$11M
     71
     72					; CREATE NEW DIRECTORY FILE
     73
     74	000132				CREATE:	QIOW$	IO.CRE,UFDLUN,UFDEFN,,IOSTAT,,<$FNB,,102400,1,,>
     75
     76		000154'			$UDSIZ=	CREATE+Q.IOPL+6
     77
     78					; ENTER DIRECTORY IN MFD
     79
     80	000162				ENTER:	QIOW$	IO.ENA,UFDLUN,UFDEFN,,IOSTAT,,<,,,,,$FNB>
     81
     82					; WRITE ATTRIBUTES TO NEW DIRECTORY
     83
     84	000212				WATT:	QIOW$	IO.WAT,UFDLUN,UFDEFN,,IOSTAT,,<$FNB,ATTBLK,,,,>
     85
     86					; ERROR RECOVERY
     87					; REMOVE DIRECTORY FROM MFD ON WRITE ATTRIBUTES FAILURE
     88
     89	000242				REMOVE:	QIOW$	IO.RNA,UFDLUN,UFDEFN,,IOSTAT,,<,,,,,$FNB>
     90
     91					; DELETE DIRECTORY ON ENTER OR WRITE ATTRIBUTES FAILURE
     92
     93	000272				DELET:	QIOW$	IO.DEL,UFDLUN,UFDEFN,,IOSTAT,,<$FNB,,,,,>
     94
     95						.IFF
     96
     97					; CREATE NEW DIRECTORY FILE
     98
     99					CREATE:	QIO$	IO.CRE,UFDLUN,UFDEFN,,IOSTAT,,<$FNB,,102400,1,,>
    100
    101					$UDSIZ=	CREATE+Q.IOPL+6
    102
    103					; ENTER DIRECTORY IN MFD
    104
    105					ENTER:	QIO$	IO.ENA,UFDLUN,UFDEFN,,IOSTAT,,<,,,,,$FNB>
    106
    107					; WRITE ATTRIBUTES TO NEW DIRECTORY
    108
    109					WATT:	QIO$	IO.WAT,UFDLUN,UFDEFN,,IOSTAT,,<$FNB,ATTBLK,,,,>
    110
    111					; ERROR RECOVERY
    112					; REMOVE DIRECTORY FROM MFD ON WRITE ATTRIBUTES FAILURE
    113
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 4-1
ASSORTED DATA - DPB'S

    114					REMOVE:	QIO$	IO.RNA,UFDLUN,UFDEFN,,IOSTAT,,<,,,,,$FNB>
    115
    116					; DELETE DIRECTORY ON ENTER OR WRITE ATTRIBUTES FAILURE
    117
    118					DELET:	QIO$	IO.DEL,UFDLUN,UFDEFN,,IOSTAT,,<$FNB,,,,,>
    119
    120						.ENDC
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 5
OTHER RANDOM DATA

    122					.SBTTL	OTHER RANDOM DATA
    123
    124					; WRITE ATTRIBUTES CONTROL BLOCK
    125
    126	000322	   005 	   010 		ATTBLK:	.BYTE	5,10		; FILE NAME AND TYPE
    127	000324	000374'				.WORD	$FNB+N.FNAM
    128	000326	   007 	   002 			.BYTE	7,2		; VERSION NUMBER
    129	000330	000404'				.WORD	$FNB+N.FVER
    130	000332	   004 	   016 			.BYTE	4,S.FATT	; RECORD ATTRIBUTES
    131	000334	000350'				.WORD	RECATT
    132	000336	   001 	   002 			.BYTE	1,2		; FILE OWNER
    133	000340	000430'				.WORD	$UUIC
    134	000342	   002 	   002 		$PRFLG::.BYTE	2,2		; FILE PROTECTION
    135	000344	000432'				.WORD	$UPRO
    136	000346	000000 				.WORD	0		; END
    137
    138					; RECORD ATTRIBUTES
    139
    140	000350	   000G	   000 		RECATT:	.BYTE	R.FIX,0
    141	000352	000020 				.WORD	16.		; RECORD LENGTH
    142	000354	000000 	000000 			.WORD	0,0		; FILE LENGTH
    143	000360	000000 	000001 			.WORD	0,1		; END OF FILE VBN
    144	000364	000000 				.WORD	0		; FIRST FREE BYTE
    145
    146					; FILE NAME BLOCK FOR CREATE AND ENTER
    147
    148	000366				$FNB::	NMBLK$	,DIR,1
    149		000412'			. =	$FNB+N.DID
    150	000412	000004 	000004 	000000 		.WORD	4,4,0
    151		000424'			. =	$FNB+S.FNB
    152
    153					; PROMPT FOR COMMAND INPUT
    154
    155	000424	   125 	   106 	   104 	PROMPT:	.ASCII	"UFD>"
	000427	   076
    156		000004 			PROMPL = .-PROMPT
    157
    158						.EVEN
    159
    160					; RANDOM VARIABLES.
    161
    162	000430	000000 			$UUIC::	.WORD	0		; FILE OWNER
    163	000432	000000 			$UPRO::	.WORD	0		; PROTECTION
    164	000434	000000 			$UALL::	.WORD	0		; RECORDS TO ALLOCATE
    165	000436	000000 			$UVNAM::.WORD	0		; POINTER TO VOLUME NAME
    166	000440	000000 			$UVNML::.WORD	0		; CHAR COUNT OF VOLUME LABEL
    167
    168	000442	000000 			ERRNUM:	.WORD	0		; ERROR INDEX
    169	000444				STRING:				; STRING BUFFER
    170	000444				LUNBUF:	.BLKW	6		; AND BUFFER FOR GET LUN INFO
    171
    172	000460				IOSTAT:	.BLKW	2		; I/O STATUS BLOCK
    173
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 6
ERROR MESSAGES

    175					.SBTTL	ERROR MESSAGES
    176
    177	000000					.PSECT	MSGSTR,D
    178
    179					; ERROR MESSAGE INDEX TABLE
    180
    181	000000	000026'			ERRMSG:	.WORD	ERRM1
    182	000002	000073'				.WORD	ERRM2
    183	000004	000117'				.WORD	ERRM3
    184	000006	000153'				.WORD	ERRM4
    185	000010	000206'				.WORD	ERRM5
    186	000012	000246'				.WORD	ERRM6
    187	000014	000304'				.WORD	ERRM7
    188	000016	000346'				.WORD	ERRM8
    189	000020	000406'				.WORD	ERRM9
    190	000022	000440'				.WORD	ERRM10
    191	000024	000502'				.WORD	ERRM11
    192
    193					; THE ERROR MESSAGES THEMSELVES
    194
    195	000026	   125 	   106 	   104 	ERRM1:	.ASCIZ	"UFD -- CAN'T READ MCR COMMAND BUFFER"
	000031	   040 	   055 	   055
	000034	   040 	   103 	   101
	000037	   116 	   047 	   124
	000042	   040 	   122 	   105
	000045	   101 	   104 	   040
	000050	   115 	   103 	   122
	000053	   040 	   103 	   117
	000056	   115 	   115 	   101
	000061	   116 	   104 	   040
	000064	   102 	   125 	   106
	000067	   106 	   105 	   122
	000072	   000
    196	000073	   125 	   106 	   104 	ERRM2:	.ASCIZ	"UFD -- SYNTAX ERROR"
	000076	   040 	   055 	   055
	000101	   040 	   123 	   131
	000104	   116 	   124 	   101
	000107	   130 	   040 	   105
	000112	   122 	   122 	   117
	000115	   122 	   000
    197	000117	   125 	   106 	   104 	ERRM3:	.ASCIZ	"UFD -- DEVICE NOT IN SYSTEM"
	000122	   040 	   055 	   055
	000125	   040 	   104 	   105
	000130	   126 	   111 	   103
	000133	   105 	   040 	   116
	000136	   117 	   124 	   040
	000141	   111 	   116 	   040
	000144	   123 	   131 	   123
	000147	   124 	   105 	   115
	000152	   000
    198	000153	   125 	   106 	   104 	ERRM4:	.ASCIZ	"UFD -- NOT FILES-11 DEVICE"
	000156	   040 	   055 	   055
	000161	   040 	   116 	   117
	000164	   124 	   040 	   106
	000167	   111 	   114 	   105
	000172	   123 	   055 	   061
	000175	   061 	   040 	   104
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 6-1
ERROR MESSAGES

	000200	   105 	   126 	   111
	000203	   103 	   105 	   000
    199	000206	   125 	   106 	   104 	ERRM5:	.ASCIZ	"UFD -- DIRECTORY ALREADY EXISTS"
	000211	   040 	   055 	   055
	000214	   040 	   104 	   111
	000217	   122 	   105 	   103
	000222	   124 	   117 	   122
	000225	   131 	   040 	   101
	000230	   114 	   122 	   105
	000233	   101 	   104 	   131
	000236	   040 	   105 	   130
	000241	   111 	   123 	   124
	000244	   123 	   000
    200	000246	   125 	   106 	   104 	ERRM6:	.ASCIZ	"UFD -- FAILED TO ENTER IN MFD"
	000251	   040 	   055 	   055
	000254	   040 	   106 	   101
	000257	   111 	   114 	   105
	000262	   104 	   040 	   124
	000265	   117 	   040 	   105
	000270	   116 	   124 	   105
	000273	   122 	   040 	   111
	000276	   116 	   040 	   115
	000301	   106 	   104 	   000
    201	000304	   125 	   106 	   104 	ERRM7:	.ASCIZ	"UFD -- FAILED TO CREATE DIRECTORY"
	000307	   040 	   055 	   055
	000312	   040 	   106 	   101
	000315	   111 	   114 	   105
	000320	   104 	   040 	   124
	000323	   117 	   040 	   103
	000326	   122 	   105 	   101
	000331	   124 	   105 	   040
	000334	   104 	   111 	   122
	000337	   105 	   103 	   124
	000342	   117 	   122 	   131
	000345	   000
    202	000346	   125 	   106 	   104 	ERRM8:	.ASCIZ	"UFD -- WRITE ATTRIBUTES FAILURE"
	000351	   040 	   055 	   055
	000354	   040 	   127 	   122
	000357	   111 	   124 	   105
	000362	   040 	   101 	   124
	000365	   124 	   122 	   111
	000370	   102 	   125 	   124
	000373	   105 	   123 	   040
	000376	   106 	   101 	   111
	000401	   114 	   125 	   122
	000404	   105 	   000
    203	000406	   125 	   106 	   104 	ERRM9:	.ASCIZ	"UFD -- VOLUME NOT MOUNTED"
	000411	   040 	   055 	   055
	000414	   040 	   126 	   117
	000417	   114 	   125 	   115
	000422	   105 	   040 	   116
	000425	   117 	   124 	   040
	000430	   115 	   117 	   125
	000433	   116 	   124 	   105
	000436	   104 	   000
    204	000440	   125 	   106 	   104 	ERRM10:	.ASCIZ	"UFD -- PRIVILEGE VIOLATION ON MFD"
	000443	   040 	   055 	   055
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 6-2
ERROR MESSAGES

	000446	   040 	   120 	   122
	000451	   111 	   126 	   111
	000454	   114 	   105 	   107
	000457	   105 	   040 	   126
	000462	   111 	   117 	   114
	000465	   101 	   124 	   111
	000470	   117 	   116 	   040
	000473	   117 	   116 	   040
	000476	   115 	   106 	   104
	000501	   000
    205	000502	   125 	   106 	   104 	ERRM11:	.ASCIZ	"UFD -- ILLEGAL FUNCTION FOR NON-PRIVILEGED TERMINAL"
	000505	   040 	   055 	   055
	000510	   040 	   111 	   114
	000513	   114 	   105 	   107
	000516	   101 	   114 	   040
	000521	   106 	   125 	   116
	000524	   103 	   124 	   111
	000527	   117 	   116 	   040
	000532	   106 	   117 	   122
	000535	   040 	   116 	   117
	000540	   116 	   055 	   120
	000543	   122 	   111 	   126
	000546	   111 	   114 	   105
	000551	   107 	   105 	   104
	000554	   040 	   124 	   105
	000557	   122 	   115 	   111
	000562	   116 	   101 	   114
	000565	   000
    206
    207						.EVEN
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 7
MAIN PROGRAM

    209					.SBTTL	MAIN PROGRAM
    210
    211					;+
    212					;
    213					; *** - $UFD - ENTRY FOR UFD MAIN PROGRAM
    214					;
    215					; CREATING A NEW DIRECTORY IS REALLY CRETINOUSLY SIMPLE. WE GET
    216					; THE COMMAND LINE AND PARSE IT FOR THE NECESSARY INFORMATION
    217					; AND OPTIONS. THEN WE VERIFY THAT THE DEVICE EXISTS AND WILL
    218					; TAKE MULTIPLE DIRECTORIES. FINALLY
    219					; WE CREATE THE DIRECTORY FILE, ENTER IT IN THE VOLUME MFD, AND
    220					; SET UP THE ATTRIBUTES CORRECTLY. THE WRITE ATTRIBUTES IS DONE
    221					; LAST TO ENSURE THAT AN ERROR UNWIND FROM AN ENTER FAILURE IS
    222					; POSSIBLE.
    223					;
    224					;-
    225
    226
    227	000000					.PSECT	CODE
    228
    229	000000				$UFD::
    230	000000	005067 	000342'			CLR	$PRFLG		; SET PROTECTION TO DEFAULT
    231	000004	005067 	000442'			CLR	ERRNUM		; INIT ERROR INDEX
    232	000010	005067 	000130'			CLR	$UUNIT		; CLEAN OUT UNIT NUMBER
    233	000014				10$:	CALL	.CKPRV		; CHECK IF INVOKING TERMINAL IS PRIVILEGED
    234	000020	000406 			PRIVLG::BR	20$			; IGNORE PRIVILEGE CHECK
    235	000022	103005 				BCC	20$		; YES
    236	000024					DIR$	#GCML		; PICK UP COMMAND LINE FOR NEATNESS SAKE
    237	000032	000167 	000326 			JMP	PRIVT		; NO - OUT
    238	000036	012704 	000424'		20$:	MOV	#PROMPT,R4	; PICK UP PROMPT STRING
    239	000042	012703 	000004 			MOV	#PROMPL,R3	; AND ITS BYTE COUNT
    240	000046					CALL	.GTCML		; GO FIND A COMMAND LINE
    241	000052	005001 				CLR	R1		; SET BLANK SUPPRESSION
    242	000054	012702 	000000G			MOV	#.UFDKT,R2	; GET KEYWORD TABLE
    243	000060	012705 	000000G			MOV	#.PSTRT,R5	; GET START STATE FOR PARSER
    244	000064					CALL	.TPARS		; AND PARSE THE COMMAND LINE
    245	000070	103002 				BCC	30$
    246	000072	000167 	000332 			JMP	SYNERR		; SYNTAX ERROR
    247					;
    248					; TO AVOID PRIVILEGE PROBLEMS WITH THE MFD, THIS TASK MUST RUN
    249					; UNDER [1,1]. MAKE IT SO.
    250					;
    251	000076	012746 			30$:	MOV	(PC)+,-(SP)
    252	000100	   006 	   177 			.BYTE	6,177		; PDR FOR 4K ACCESS
    253	000102	016700 	000000G			MOV	.CRTSK,R0	; GET ATL ADDRESS
    254
    255					; ASSIGN THE LUN AND SEE IF THE DEVICE IS SUITABLE
    256
    257	000106					DIR$	#ASLUN		; ASSIGN LUN
    258	000114	103543 				BCS	BADDEV		; DEVICE DOES NOT EXIST
    259
    260	000116					GLUN$C	UFDLUN,LUNBUF,CODE ; GET LUN INFORMATION
    261
    262						.IF	DF,R$$11M
    263						BIT	LUNBUF+U.C1,#DV.F11 ; TEST FOR FILES-11 DEVICE
    264						.IFF
    265	000124	036727 	000000C	000000G		BIT	LUNBUF+U.C1,#UC.F11 ; TEST FOR FILES-11 DEVICE
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 7-1
MAIN PROGRAM

    266						.ENDC
    267	000132	001404 				BEQ	40$
    268	000134	036727 	000000C	000000C		BIT	LUNBUF+U.C1,#FD.SDI!FD.SQD ; TEST FOR MULTI DIRECTORY DEVICE
    269	000142	001402 				BEQ	50$
    270	000144	000167 	000250 		40$:	JMP	NDDEV		; ANYTHING ELSE - OUT
    271
    272					; PRODUCE THE UFD FILE NAME FROM THE BINARY UIC
    273
    274	000150	012702 	000444'		50$:	MOV	#STRING,R2	; POINT TO STRING BUFFER
    275	000154	016703 	000430'			MOV	$UUIC,R3	; GET UIC
    276	000160	012704 	000003 			MOV	#3,R4		; REQUEST NO PUNCTUATION, LEADING ZEROES
    277	000164					CALL	.PPASC		; CONVERT UIC TO ASCII
    278
    279	000170	012705 	000374'			MOV	#$FNB+N.FNAM,R5	; POINT TO FILE NAME AREA
    280	000174	012700 	000444'			MOV	#STRING,R0	; POINT TO ASCII STRING
    281	000200					CALL	$CAT5		; CONVERT TO RAD-50
    282	000204	010125 				MOV	R1,(R5)+	; PUT IN NAME
    283	000206					CALL	$CAT5		; GET 2ND RAD-50 WORD
    284	000212	010125 				MOV	R1,(R5)+
    285
    286					; COMPUTE NUMBER OF BLOCKS TO ALLOCATE FOR DIRECTORY.
    287
    288	000214	016701 	000434'			MOV	$UALL,R1	; GET NUMBER OF ENTRIES TO ALLOCATE
    289	000220	006201 				ASR	R1		; DIVIDE BY 32. ENTRIES PER BLOCK
    290	000222	006201 				ASR	R1
    291	000224	006201 				ASR	R1
    292	000226	006201 				ASR	R1
    293	000230	006201 				ASR	R1
    294	000232	005201 				INC	R1		; ROUND UP
    295	000234	010167 	000154'			MOV	R1,$UDSIZ	; SET UP SIZE IN CREATE CALL
    296	000240					QIO	CREATE		; AND CREATE THE FILE
    297	000246	103441 				BCS	80$
    298	000250	016767 	000462'	000356'		MOV	IOSTAT+2,RECATT+F.HIBK+2 ; ALSO SET UP RECORD ATTRIBUTES
    299	000256					QIO	ENTER		; ENTER IN MFD
    300	000264	103407 				BCS	60$		; ENTER FAILURE
    301	000266					QIO	WATT		; SET UP FILE ATTRIBUTES
    302	000274	103417 				BCS	70$
    303	000276					EXIT$S			; THAT'S ALL, FOLKS!
    304
    305					; FAILED TO ENTER DIRECTORY IN MFD
    306
    307	000304	116705 	000460'		60$:	MOVB	IOSTAT,R5	; SAVE I/O STATUS
    308	000310					QIO	DELET		; DELETE THE FILE
    309	000316	120527 	000000G			CMPB	R5,#IE.DUP	; WAS NAME A DUPLICATE?
    310	000322	001434 				BEQ	DUPLIC		; YES
    311	000324	120527 	000000G			CMPB	R5,#IE.PRI	; CHECK FOR PRIVILEGE VIOLATION
    312	000330	001417 				BEQ	PRIV
    313	000332	000426 				BR	NENTER		; SOMETHING ELSE
    314
    315					; FAILED TO WRITE ATTRIBUTES
    316
    317	000334				70$:	QIO	REMOVE		; REMOVE FROM MFD
    318	000342					QIO	DELET		; DELETE THE FILE
    319	000350	000413 				BR	WATF
    320
    321					; ERROR ON CREATE
    322
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 7-2
MAIN PROGRAM

    323	000352	126727 	000460'	000000G	80$:	CMPB	IOSTAT,#IE.SRE	; CHECK FOR SEND/REQUEST FAILURE
    324	000360	001405 				BEQ	VNMO		; YES - VOLUME NOT MOUNTED
    325	000362	000410 				BR	NCREAT
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 8
ERROR EXITS

    327					.SBTTL	ERROR EXITS
    328
    329					; BRANCHES TO THE ERROR EXITS BUMP UP AN ERROR INDEX WHICH IS
    330					; USED TO LOCATE THE APPROPRIATE ERROR MESSAGE. THE MESSAGE IS
    331					; OUTPUT TO "TI".
    332
    333
    334	000364	005267 	000442'		PRIVT:	INC	ERRNUM		; TERMINAL NOT PRIVILEGED
    335	000370	005267 	000442'		PRIV:	INC	ERRNUM		; PRIVILEGE VIOLATION ON MFD
    336	000374	005267 	000442'		VNMO:	INC	ERRNUM		; VOLUME NOT MOUNTED
    337	000400	005267 	000442'		WATF:	INC	ERRNUM		; WRITE ATTRIBUTES FAILURE
    338	000404	005267 	000442'		NCREAT:	INC	ERRNUM		; FAILED TO CREATE
    339	000410	005267 	000442'		NENTER:	INC	ERRNUM		; FAILED TO ENTER IN MFD
    340	000414	005267 	000442'		DUPLIC:	INC	ERRNUM		; DUPLICATE DIRECTORY
    341	000420	005267 	000442'		NDDEV:	INC	ERRNUM		; NOT A DIRECTORY DEVICE
    342	000424	005267 	000442'		BADDEV:	INC	ERRNUM		; BAD DEVICE NAME
    343	000430				.SYNER::
    344	000430	005267 	000442'		SYNERR:	INC	ERRNUM		; SYNTAX ERROR
    345	000434				CMLERR:				; COMMAND LINE I/O ERROR
    346	000434	016700 	000442'			MOV	ERRNUM,R0	; GET ERROR INDEX
    347	000440	006300 				ASL	R0
    348	000442	016000 	000000'			MOV	ERRMSG(R0),R0	; GET ERROR MESSAGE ADDR
    349	000446	010001 				MOV	R0,R1
    350	000450	105721 			10$:	TSTB	(R1)+		; LOOK FOR THE TERMINATOR
    351	000452	001401 				BEQ	20$
    352	000454	000775 				BR	10$
    353	000456	160001 			20$:	SUB	R0,R1		; COMPUTE CHARACTER COUNT
    354
    355	000460					QIO$S	#IO.WVB,#COLUN,#COEFN,,,,<R0,R1,<#' >>
    356	000520	103405 				BCS	30$
    357	000522					WTSE$S	#COEFN		; WAIT FOR MESSAGE
    358	000534				30$:	EXIT$S
    359
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 9
QIO CALL ROUTINE

    361					.SBTTL	QIO CALL ROUTINE
    362
    363					;+
    364					;
    365					; CALL:	JSR	R5,XQIO
    366					;	.WORD	DPB
    367					;	(RETURN)
    368					;
    369					;-
    370
    371
    372	000542				XQIO:	DIR$	(R5)+		; DO IT
    373	000546	103404 				BCS	1$		; CHECK FOR DIRECTIVE ERROR
    374
    375						.IF	DF	R$$11M
    376						WTSE$S	#UFDEFN		; WAIT FOR COMPLETION
    377						.ENDC
    378
    379	000550	105767 	000460'			TSTB	IOSTAT		; CHECK FOR I/O ERROR
    380	000554	003001 				BGT	1$
    381	000556	000261 				SEC			; SET CARRY ON ERROR
    382	000560	000205 			1$:	RTS	R5
    383
    384
    385
    386		000000'				.END	$UFD
UFD - CREATE DIRECTORY FILE	MACRO M1113  14-APR-81 11:22  PAGE 9-1
SYMBOL TABLE

ASLUN   000122R     002	F.BKDN= 000026   	F.STBK= 000036   	N.NEXT= 000022   	U.C1  = ****** GX
ATTBLK  000322R     002	F.BKDS= 000020   	F.UNIT= 000136   	N.STAT= 000020   	VNMO    000374R     004
A.LULU= 000002   	F.BKEF= 000050   	F.URBD= 000020   	N.UNIT= 000034   	WATF    000400R     004
A.LUNA= 000004   	F.BKP1= 000051   	F.VBN = 000064   	PRIV    000370R     004	WATT    000212R     002
A.LUNU= 000006   	F.BKST= 000024   	F.VBSZ= 000060   	PRIVLG  000020RG    004	XQIO    000542R     004
BADDEV  000424R     004	F.BKVB= 000064   	GCML    000000R     002	PRIVT   000364R     004	$CAT5 = ****** GX
CMLERR  000434R     004	F.CNTG= 000034   	G.LUBA= 000004   	PROMPL= 000004   	$FNB    000366RG    002
COEFN = 000002   	F.DFNB= 000046   	G.LUCW= 000004   	PROMPT  000424R     002	$PRFLG  000342RG    002
COLUN = 000002   	F.DSPT= 000044   	G.LUFB= 000003   	Q.IOAE= 000012   	$UALL   000434RG    002
CREATE  000132R     002	F.DVNM= 000134   	G.LULU= 000002   	Q.IOEF= 000006   	$UDEV = 000126RG    002
DELET   000272R     002	F.EFBK= 000010   	G.LUNA= 000000   	Q.IOFN= 000002   	$UDSIZ= 000154R     002
DUPLIC  000414R     004	F.EFN = 000050   	G.LUNU= 000002   	Q.IOLU= 000004   	$UFD    000000RG    004
ENTER   000162R     002	F.EOBB= 000032   	G.MCRB= 000002   	Q.IOPL= 000014   	$UPRO   000432RG    002
ERRMSG  000000R     003	F.ERR = 000052   	IE.DUP= ****** GX	Q.IOPR= 000007   	$UUIC   000430RG    002
ERRM1   000026R     003	F.FACC= 000043   	IE.PRI= ****** GX	Q.IOSB= 000010   	$UUNIT= 000130RG    002
ERRM10  000440R     003	F.FFBY= 000014   	IE.SRE= ****** GX	RECATT  000350R     002	$UVNAM  000436RG    002
ERRM11  000502R     003	F.FNAM= 000110   	IOSTAT  000460R     002	REMOVE  000242R     002	$UVNML  000440RG    002
ERRM2   000073R     003	F.FNB = 000102   	IO.CRE= ****** GX	R$$10F= 000001   	$$    = 000067
ERRM3   000117R     003	F.FTYP= 000116   	IO.DEL= ****** GX	R$$11D= 000001   	$$$   = 000000R     005
ERRM4   000153R     003	F.FVER= 000120   	IO.ENA= ****** GX	R$$20F= 000001   	$$$ARG= 000003
ERRM5   000206R     003	F.HIBK= 000004   	IO.RNA= ****** GX	R.FIX = ****** GX	$$$OST= 000006
ERRM6   000246R     003	F.LUN = 000042   	IO.WAT= ****** GX	STRING  000444R     002	$$$T1 = 000011
ERRM7   000304R     003	F.MBCT= 000054   	IO.WVB= ****** GX	SYNERR  000430R     004	.CKPRV= ****** GX
ERRM8   000346R     003	F.MBC1= 000055   	LUNBUF  000444R     002	S.FATT= 000016   	.CRTSK= ****** GX
ERRM9   000406R     003	F.MBFG= 000056   	M$$HDR= 000001   	S.FDB = 000140   	.GTCML= ****** GX
ERRNUM  000442R     002	F.NRBD= 000024   	NCREAT  000404R     004	S.FNAM= 000006   	.PPASC= ****** GX
E$$MSG= 000001   	F.NREC= 000030   	NDDEV   000420R     004	S.FNB = 000036   	.PSTRT= ****** GX
E$$TRP= 000001   	F.OVBS= 000030   	NENTER  000410R     004	S.FNBW= 000017   	.SYNER  000430RG    004
FD.SDI= ****** GX	F.RACC= 000016   	N.DID = 000024   	S.FNTY= 000004   	.TPARS= ****** GX
FD.SQD= ****** GX	F.RATT= 000001   	N.DVNM= 000032   	S.FTYP= 000002   	.UFDKT= ****** GX
F$$LVL= 000001   	F.RCNM= 000034   	N.FID = 000000   	S.NFEN= 000020   	...PC1= 000000
F.ALOC= 000040   	F.RCTL= 000017   	N.FNAM= 000006   	UC.F11= ****** GX	...PC2= 000404R     002
F.BBFS= 000062   	F.RSIZ= 000002   	N.FTYP= 000014   	UFDEFN= 000001   	...PC3= 000000
F.BDB = 000070   	F.RTYP= 000000   	N.FVER= 000016   	UFDLUN= 000001   	...TPC= 000140
F.BGBC= 000057

. ABS.	000000	   000
      	000000	   001
IMPURE	000464	   002
MSGSTR	000566	   003
CODE  	000562	   004
$DPB$$	000006	   005
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  3943 WORDS  ( 16 PAGES)
DYNAMIC MEMORY:  4630 WORDS  ( 17 PAGES)
ELAPSED TIME:  00:00:26
[53,10]UFD,[53,20]UFD/-SP/CR=[53,30]RSXDC,UFD
UFD        CREATED BY  MACRO  ON 14-APR-81 AT 11:22	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ASLUN 	  000122 R	#4-65       4-67       4-68       7-257     
ATTBLK	  000322 R	 4-84      #5-126     
A.LULU	= 000002	#4-65      
A.LUNA	= 000004	#4-65       4-67      
A.LUNU	= 000006	#4-65       4-68      
BADDEV	  000424 R	 7-258     #8-342     
CMLERR	  000434 R	#8-345     
COEFN 	= 000002	#3-28       8-355      8-357     
COLUN 	= 000002	#3-27       8-355     
CREATE	  000132 R	#4-74       4-76       7-296     
DELET 	  000272 R	#4-93       7-308      7-318     
DUPLIC	  000414 R	 7-310     #8-340     
ENTER 	  000162 R	#4-80       7-299     
ERRMSG	  000000 R	#6-181      8-348     
ERRM1 	  000026 R	 6-181     #6-195     
ERRM10	  000440 R	 6-190     #6-204     
ERRM11	  000502 R	 6-191     #6-205     
ERRM2 	  000073 R	 6-182     #6-196     
ERRM3 	  000117 R	 6-183     #6-197     
ERRM4 	  000153 R	 6-184     #6-198     
ERRM5 	  000206 R	 6-185     #6-199     
ERRM6 	  000246 R	 6-186     #6-200     
ERRM7 	  000304 R	 6-187     #6-201     
ERRM8 	  000346 R	 6-188     #6-202     
ERRM9 	  000406 R	 6-189     #6-203     
ERRNUM	  000442 R	#5-168     *7-231     *8-334     *8-335     *8-336     *8-337     *8-338     *8-339     *8-340     
                        *8-341     *8-342     *8-344      8-346     
E$$MSG	= 000001	#1-33      
E$$TRP	= 000001	#1-32      
FD.SDI	= ******  GX	 7-268     
FD.SQD	= ******  GX	 7-268     
F$$LVL	= 000001	#1-28      
F.HIBK	= 000004	*7-298     
GCML  	  000000 R	#4-61       7-236     
G.LUBA	= 000004	#7-260     
G.LULU	= 000002	#7-260     
G.LUNA	= 000000	 7-260     
G.MCRB	= 000002	#4-61      
IE.DUP	= ******  GX	 7-309     
IE.PRI	= ******  GX	 7-311     
IE.SRE	= ******  GX	 7-323     
IOSTAT	  000460 R	 4-74       4-80       4-84       4-89       4-93      #5-172      7-298      7-307      7-323     
                         9-379     
IO.CRE	= ******  GX	 4-74      
IO.DEL	= ******  GX	 4-93      
IO.ENA	= ******  GX	 4-80      
IO.RNA	= ******  GX	 4-89      
IO.WAT	= ******  GX	 4-84      
IO.WVB	= ******  GX	 8-355     
LUNBUF	  000444 R	#5-170      7-260      7-265      7-268     
M$$HDR	= 000001	#1-34      
NCREAT	  000404 R	 7-325     #8-338     
UFD        CREATED BY  MACRO  ON 14-APR-81 AT 11:22	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

NDDEV 	  000420 R	 7-270     #8-341     
NENTER	  000410 R	 7-313     #8-339     
N.DID 	= 000024	 5-149     
N.FNAM	= 000006	 5-127      5-148      7-279     
N.FTYP	= 000014	 5-148     
N.FVER	= 000016	 5-129      5-148     
PRIV  	  000370 R	 7-312     #8-335     
PRIVLG	  000020 RG	#7-234     
PRIVT 	  000364 R	 7-237     #8-334     
PROMPL	= 000004	#5-156      7-239     
PROMPT	  000424 R	#5-155      5-156      7-238     
Q.IOAE	= 000012	#4-74      #4-80      #4-84      #4-89      #4-93      
Q.IOEF	= 000006	#4-74      #4-80      #4-84      #4-89      #4-93      
Q.IOFN	= 000002	#4-74      #4-80      #4-84      #4-89      #4-93      
Q.IOLU	= 000004	#4-74      #4-80      #4-84      #4-89      #4-93      
Q.IOPL	= 000014	#4-74       4-76      #4-80      #4-84      #4-89      #4-93      
Q.IOPR	= 000007	#4-74      #4-80      #4-84      #4-89      #4-93      
Q.IOSB	= 000010	#4-74      #4-80      #4-84      #4-89      #4-93      
RECATT	  000350 R	 5-131     #5-140     *7-298     
REMOVE	  000242 R	#4-89       7-317     
R$$EIS	= ******	 3-50      
R$$10F	= 000001	#1-30      
R$$11D	= 000001	#1-29      
R$$11M	= ******	 3-36       4-70       7-262      9-375     
R$$20F	= 000001	#1-31      
R.FIX 	= ******  GX	 5-140     
STRING	  000444 R	#5-169      7-274      7-280     
SYNERR	  000430 R	 7-246     #8-344     
S$$YDF	= ******	 1-1        1-37      
S.FATT	= 000016	 5-130     
S.FNAM	= 000006	 5-148      5-148     
S.FNB 	= 000036	 5-148      5-151     
S.FTYP	= 000002	 5-148      5-148     
UC.F11	= ******  GX	 7-265     
UFDEFN	= 000001	#3-26       4-74       4-80       4-84       4-89       4-93      
UFDLUN	= 000001	#3-25       4-65       4-74       4-80       4-84       4-89       4-93       7-260     
U.C1  	= ******  GX	 7-265      7-268     
VNMO  	  000374 R	 7-324     #8-336     
WATF  	  000400 R	 7-319     #8-337     
WATT  	  000212 R	#4-84       7-301     
XQIO  	  000542 R	 7-296      7-299      7-301      7-308      7-317      7-318     #9-372     
$CAT5 	= ******  GX	 7-281      7-281      7-283      7-283     
$FNB  	  000366 RG	 4-74       4-80       4-84       4-89       4-93       5-127      5-129     #5-148      5-149     
                         5-151      7-279     
$PRFLG	  000342 RG	#5-134     *7-230     
$UALL 	  000434 RG	#5-164      7-288     
$UDEV 	= 000126 RG	#4-67      
$UDSIZ	= 000154 R	#4-76      *7-295     
$UFD  	  000000 RG	#7-229      9-386     
$UPRO 	  000432 RG	 5-135     #5-163     
$UUIC 	  000430 RG	 5-133     #5-162      7-275     
$UUNIT	= 000130 RG	#4-68      *7-232     
UFD        CREATED BY  MACRO  ON 14-APR-81 AT 11:22	PAGE 3

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

$UVNAM	  000436 RG	#5-165     
$UVNML	  000440 RG	#5-166     
$$    	= 000067	#7-233      7-233     #7-240      7-240     #7-244      7-244     #7-277      7-277     #7-281     
                         7-281     #7-283      7-283     
$$$   	= 000000 R	#7-260      7-260     
$$$ARG	= 000003	#4-65       4-65      #4-65       4-65      #4-65       4-65      #4-74       4-74      #4-74      
                         4-74      #4-74       4-74      #4-74       4-74      #4-74       4-74      #4-74       4-74      
                        #4-74       4-74      #4-80       4-80      #4-80       4-80      #4-80       4-80      #4-80      
                         4-80      #4-80       4-80      #4-80       4-80      #4-80       4-80      #4-84       4-84      
                        #4-84       4-84      #4-84       4-84      #4-84       4-84      #4-84       4-84      #4-84      
                         4-84      #4-84       4-84      #4-89       4-89      #4-89       4-89      #4-89       4-89      
                        #4-89       4-89      #4-89       4-89      #4-89       4-89      #4-89       4-89      #4-93      
                         4-93      #4-93       4-93      #4-93       4-93      #4-93       4-93      #4-93       4-93      
                        #4-93       4-93      #4-93       4-93      #8-355      8-355      8-355      8-355      8-355     
                         8-355      8-355      8-355      8-355      8-355      8-355      8-355     
$$$GLB	= ******	 4-61       4-61       4-65       4-65       4-65       4-65       4-74       4-74       4-74      
                         4-74       4-74       4-74       4-74       4-74       4-80       4-80       4-80       4-80      
                         4-80       4-80       4-80       4-80       4-84       4-84       4-84       4-84       4-84      
                         4-84       4-84       4-84       4-89       4-89       4-89       4-89       4-89       4-89      
                         4-89       4-89       4-93       4-93       4-93       4-93       4-93       4-93       4-93      
                         4-93       7-260      7-260      7-260      7-260     
$$$OST	= 000006	#4-61       4-61       4-61      #4-61      #4-65       4-65       4-65      #4-65       4-65      
                         4-65      #4-65       4-65       4-65      #4-65      #4-74       4-74       4-74      #4-74      
                         4-74       4-74      #4-74       4-74       4-74      #4-74       4-74       4-74      #4-74      
                         4-74       4-74      #4-74       4-74       4-74      #4-74       4-74      #4-80       4-80      
                         4-80      #4-80       4-80       4-80      #4-80       4-80       4-80      #4-80       4-80      
                         4-80      #4-80       4-80       4-80      #4-80       4-80       4-80      #4-80       4-80      
                        #4-84       4-84       4-84      #4-84       4-84       4-84      #4-84       4-84       4-84      
                        #4-84       4-84       4-84      #4-84       4-84       4-84      #4-84       4-84       4-84      
                        #4-84       4-84      #4-89       4-89       4-89      #4-89       4-89       4-89      #4-89      
                         4-89       4-89      #4-89       4-89       4-89      #4-89       4-89       4-89      #4-89      
                         4-89       4-89      #4-89       4-89      #4-93       4-93       4-93      #4-93       4-93      
                         4-93      #4-93       4-93       4-93      #4-93       4-93       4-93      #4-93       4-93      
                         4-93      #4-93       4-93       4-93      #4-93       4-93      #7-260      7-260      7-260     
                        #7-260      7-260      7-260     #7-260     
$$$T1 	= 000011	#4-65       4-65       4-65      #4-65       4-65       4-65      #4-65       4-65       4-65      
                        #8-355      8-355     
.CKPRV	= ******  GX	 7-233      7-233     
.CRTSK	= ******  GX	 7-253     
.GTCML	= ******  GX	 7-240      7-240     
.PPASC	= ******  GX	 7-277      7-277     
.PSTRT	= ******  GX	 7-243     
.SYNER	  000430 RG	#8-343     
.TPARS	= ******  GX	 7-244      7-244     
.UFDKT	= ******  GX	 7-242     
...PC1	= 000000 R	 5-148      5-148     #5-148      5-148      5-148      5-148      5-148     #5-148     
...PC2	= 000404 R	#5-148      5-148      5-148     #5-148      5-148      5-148     #5-148      5-148     
...PC3	= 000000	#5-148      5-148     
UFD        CREATED BY  MACRO  ON 14-APR-81 AT 11:22	PAGE 4

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

ALUN$ 		#3-34      #4-65      
CALL  		#3-34      #7-233     #7-240     #7-244     #7-277     #7-281     #7-283     
CWORD$		#5-148     #5-148     #5-148     
DIR$  		#3-34      #7-236     #7-257     #7-260     #7-260     #7-303     #7-303     #8-355     #8-355     #8-357     
                #8-357     #8-358     #8-358     #9-372     
ERR$  		#7-236     #7-257     #7-260     #7-303     #8-355     #8-357     #8-358     #9-372     
EXIT$S		#3-34       7-303      8-358     
FDOFF$		#3-38      #3-38      
FDOF$L		#3-35      #3-38      
GLUN$ 		#7-260     #7-260     
GLUN$C		#3-34       7-260     
GMCR$ 		#3-34       4-61      
MOV$  		#8-355     #8-355     #8-355     #8-355     #8-355     #8-355     #8-355     #8-355     #8-355     #8-357     
                #8-357     
MVB$  		#8-355     #8-355     
NBL$  		#4-65       4-65      
NBOFF$		#3-39      #3-39      #5-148     #5-148     
NBOF$L		#3-35      #3-39      
NMBLK$		#3-34      #5-148     
OFF$  		#4-61      #4-61      #4-61      #4-65      #4-65      #4-65      #4-65      #4-65      #4-74      #4-74      
                #4-74      #4-74      #4-74      #4-74      #4-74      #4-74      #4-74      #4-80      #4-80      #4-80      
                #4-80      #4-80      #4-80      #4-80      #4-80      #4-80      #4-84      #4-84      #4-84      #4-84      
                #4-84      #4-84      #4-84      #4-84      #4-84      #4-89      #4-89      #4-89      #4-89      #4-89      
                #4-89      #4-89      #4-89      #4-89      #4-93      #4-93      #4-93      #4-93      #4-93      #4-93      
                #4-93      #4-93      #4-93      #7-260     #7-260     #7-260     #7-260     
QDPB$ 		#4-74       4-74      #4-80       4-80      #4-84       4-84      #4-89       4-89      #4-93       4-93      
QDPB$S		#8-355      8-355     
QIO   		#3-43      #7-296     #7-299     #7-301     #7-308     #7-317     #7-318     
QIOW$ 		#3-36      #4-74      #4-80      #4-84      #4-89      #4-93      
QIO$  		#3-35      
QIO$S 		#3-35       8-355     
RAD50$		#5-148     #5-148     #5-148     
RETURN		#3-34      
RVP$  		#8-355      8-355     
SOB   		#3-51      
WTSE$S		#3-34      #8-357