Google
 

Trailing-Edge - PDP-10 Archives - bb-m403a-bk - ufd.lst
There are 2 other files named ufd.lst in the archive. Click here to see a list.
CDT2B - CONVERT FROM DECIMAL TO	MACRO M1113  14-APR-81 11:15  PAGE 3


      1						.TITLE	CDT2B - CONVERT FROM DECIMAL TO TWO BINARY WORDS
      2						.IDENT	/01/
      3					;
      4					;
      5					;                             COPYRIGHT (C) 1974, 1978 BY
      6					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      7					;
      8					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
      9					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     10					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     11					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     12					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     13					;
     14					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     15					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     16					;       CORPORATION.
     17					;
     18					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     19					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     20					;
     21
     22					;
     23					; VERSION:	V001A
     24					; BY:		STEVE HORT
     25					; DATE:		03/26/74
     26					;
     27						.MCALL	RETURN
CDT2B - CONVERT FROM DECIMAL TO	MACRO M1113  14-APR-81 11:15  PAGE 4


     29					;+
     30					; *** - .CDT2B - CONVERT A DECIMAL NUMBER TO TWO BINARY WORDS.
     31					;		 THIS SUBROUTINE CONVERTS AN ASCII DECIMAL NUMBER STRING
     32					;		 TO A DOUBLE LENGTH BINARY NUMBER.
     33					;
     34					; INPUT:
     35					;	R0 - ADDRESS OF NEXT CHARACTER IN BUFFER (DECIMAL DIGIT)
     36					;	R1 - ADDRESS OF TWO WORD FIELD TO HOLD CONVERTED NUMBER
     37					;		WORD 1 - LOW ORDER 16 BITS
     38					;		WORD 2 - HIGH ORDER 16 BITS
     39					;
     40					; OUTPUT:
     41					;	R0 - UPDATED BUFFER POINTER (NEXT CHARACTER + 1)
     42					;	R1 - REMAINS UNCHANGED
     43					;	R2 - NEXT CHARACTER IN STRING
     44					;
     45					;	CC-C
     46					;	     CLEAR - 16 BIT NUMBER ONLY
     47					;	     SET   - 32 BIT NUMBER
     48					;
     49					;-
     50
     51	000000	005011 			.CDT2B::CLR	(R1)		; ZERO LOW ORDER 16 BITS
     52	000002	005061 	000002 			CLR	2(R1)		; ZERO HIGH ORDER 16 BITS
     53	000006	112002 			10$:	MOVB	(R0)+,R2	; YES, FETCH IT NOW
     54	000010	122702 	000060 			CMPB	#'0,R2		; CHECK FOR POSSIBLE DECIMAL DIGIT
     55	000014	101025 				BHI	20$		; NOT A DECIMAL CHARACTER
     56	000016	122702 	000071 			CMPB	#'9,R2		; LAST CHANCE TO BE IN RANGE
     57	000022	103422 				BLO	20$		; DEFINITELY NOT DECIMAL
     58	000024	162702 	000060 			SUB	#60,R2		; CONVERT TO A BINARY DIGIT
     59	000030	006321 				ASL	(R1)+		; MULTIPLY CURRENT BINARY NUMBER BY
     60	000032	006111 				ROL	(R1)		; USE FULL 32 BIT ACCURACY
     61	000034	011146 				MOV	(R1),-(SP)	; SAVE HIGH ORDER BITS
     62	000036	014146 				MOV	-(R1),-(SP)	; SAVE LOW ORDER BITS
     63	000040	006321 				ASL	(R1)+		; MULTIPLY AGAIN BY
     64	000042	006111 				ROL	(R1)		; KEEP THOSE BITS MOVING
     65	000044	006341 				ASL	-(R1)		; MAKE TOTAL MULTIPLICATION BY 8
     66	000046	006161 	000002 			ROL	2(R1)		; NOW HAVE (NEW NUMBER) = (OLD NUMBER)*8
     67	000052	062621 				ADD	(SP)+,(R1)+	; ADD BACK (OLD NUMBER)*2
     68	000054	005511 				ADC	(R1)		; ADD ANY OVERFLOW TO HIGH ORDER
     69	000056	062611 				ADD	(SP)+,(R1)	; NOW HAVE (NEW NUMBER) = (OLD NUMBER)*10
     70	000060	060241 				ADD	R2,-(R1)	; ADD THIS DECIMAL DIGIT TO MAKE NEW TOTAL
     71	000062	005561 	000002 			ADC	2(R1)		; MAKE SURE OVERFLOW IS CONSIDERED
     72	000066	000747 				BR	10$		; GO GET NEXT DIGIT
     73	000070	005761 	000002 		20$:	TST	2(R1)		; MORE THAN 16 BITS IN CONVERTED NUMBER?
     74	000074	001401 				BEQ	30$		; YES
     75	000076	000261 				SEC			; NO, SO SET THE 32-BIT FLAG
     76	000100				30$:	RETURN			; RETURN TO CALLER
     77					;
     78		000001 				.END
CDT2B - CONVERT FROM DECIMAL TO	MACRO M1113  14-APR-81 11:15  PAGE 4-1
SYMBOL TABLE

E$$MSG= 000001   	F$$LVL= 000001   	R$$10F= 000001   	R$$20F= 000001   	.CDT2B  000000RG
E$$TRP= 000001   	M$$HDR= 000001   	R$$11D= 000001

. ABS.	000000	   000
      	000102	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  146 WORDS  ( 1 PAGES)
DYNAMIC MEMORY:  2518 WORDS  ( 9 PAGES)
ELAPSED TIME:  00:00:03
[53,10]CDT2B,[53,20]CDT2B/-SP/CR=[53,30]RSXDC,CDT2B
CDT2B      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

E$$MSG	= 000001	#1-33      
E$$TRP	= 000001	#1-32      
F$$LVL	= 000001	#1-28      
M$$HDR	= 000001	#1-34      
R$$10F	= 000001	#1-30      
R$$11D	= 000001	#1-29      
R$$20F	= 000001	#1-31      
S$$YDF	= ******	 1-1        1-37      
.CDT2B	  000000 RG	#4-51      
CDT2B      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 2

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

RETURN		#3-27       4-76      
RSXDC	MACRO M1113  14-APR-81 11:15  PAGE 3


      1					;                             COPYRIGHT (C) 1975, 1978 BY
      2					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      3					;
      4					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
      5					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
      6					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
      7					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
      8					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
      9					;
     10					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     11					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     12					;       CORPORATION.
     13					;
     14					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     15
     16					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     17
     18
     19						.MCALL RETURN
     20	000000	000241 			.CKPRV::	CLC
     21	000002					RETURN
     22		000001 				.END
RSXDC	MACRO M1113  14-APR-81 11:15  PAGE 3-1
SYMBOL TABLE

E$$MSG= 000001   	F$$LVL= 000001   	R$$10F= 000001   	R$$20F= 000001   	.CKPRV  000000RG
E$$TRP= 000001   	M$$HDR= 000001   	R$$11D= 000001

. ABS.	000000	   000
      	000004	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  126 WORDS  ( 1 PAGES)
DYNAMIC MEMORY:  2518 WORDS  ( 9 PAGES)
ELAPSED TIME:  00:00:03
[53,10]CKPRV,[53,20]CKPRV/-SP/CR=[53,30]RSXDC,CKPRV
CKPRV      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

E$$MSG	= 000001	#1-33      
E$$TRP	= 000001	#1-32      
F$$LVL	= 000001	#1-28      
M$$HDR	= 000001	#1-34      
R$$10F	= 000001	#1-30      
R$$11D	= 000001	#1-29      
R$$20F	= 000001	#1-31      
S$$YDF	= ******	 1-1        1-37      
.CKPRV	  000000 RG	#3-20      
CKPRV      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 2

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

RETURN		#3-19       3-21      
COT2B - CONVERT FROM OCTAL TO T	MACRO M1113  14-APR-81 11:15  PAGE 3


      1						.TITLE	COT2B - CONVERT FROM OCTAL TO TWO BINARY WORDS
      2						.IDENT	"01"
      3					;
      4					;                             COPYRIGHT (C) 1973, 1978 BY
      5					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      6					;
      7					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
      8					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
      9					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     10					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     11					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     12					;
     13					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     14					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     15					;       CORPORATION.
     16					;
     17					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     18					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     19					;
     20					;
     21
     22					;
     23					; VERSION: 	01
     24					; BY:		H.LEV
     25					; DATE:		09/19/73
     26					;
     27						.MCALL	RETURN
     28
     29					;+
     30					; *** - .COT2B  - CONVERT OCTAL NUMBER TO TWO BINARY WORDS
     31					;		THIS SUBROUTINE CONVERTS AN ASCII OCTAL
     32					;		NUMBER TO BINARY.  IT ACCEPTS ONLY
     33					;		OCTAL DIGITS.
     34					;
     35					; INPUT:
     36					;	R0 - ADDRESS OF NEXT DIGIT IN BUFFER FOR NUMBER
     37					;	R1 - ADDRESS OF TWO WORD FIELD TO PUT CONVERTED NUMBER IN
     38					;		WORD 1 - LOW 16 BITS
     39					;		WORD 2 - HIGH 16 BITS
     40					;
     41					; OUTPUT:
     42					;	R0 - UPDATED BUFFER POINTER
     43					;	R1 - UNCHANGED
     44					;	R2 - TERMINATING CHARACTER
     45					;
     46					;	CARRY BIT
     47					;		CLEAR - ONLY 16 BIT NUMBER
     48					;		SET - 32 BIT NUMBER
     49					;
     50					;-
     51	000000	005011 			.COT2B::CLR	(R1)		; ZERO OUT LOW 16 BITS
     52	000002	005061 	000002 			CLR	2(R1)		; ZERO OUT HIGH 16 BITS
     53	000006	112002 			10$:	MOVB	(R0)+,R2	; GET NEXT CHARACTER
     54	000010	120227 	000060 			CMPB	R2,#'0		; IS IT <0 ?
     55	000014	002420 				BLT	30$		; YES
     56	000016	120227 	000067 			CMPB	R2,#'7		; IS IT >7 ?
     57	000022	003015 				BGT	30$		; YES
COT2B - CONVERT FROM OCTAL TO T	MACRO M1113  14-APR-81 11:15  PAGE 3-1


     58	000024	042702 	177770 			BIC	#177770,R2	; STRIP OF ASCII BITS
     59	000030	012746 	000003 			MOV	#3,-(SP)	; SET SHIFT COUNT
     60	000034	000241 			20$:	CLC			; ZERO CARRY BIT
     61	000036	006111 				ROL	(R1)		; ROTATE BIT 15
     62	000040	006161 	000002 			ROL	2(R1)		; INTO BIT 16
     63	000044	005316 				DEC	(SP)		; DONE ?
     64	000046	001372 				BNE	20$		; NO, LOOP FOR THREE BITS
     65	000050	005726 				TST	(SP)+		; POP OFF COUNTER
     66	000052	050211 				BIS	R2,(R1)		; PUT IT IN
     67	000054	000754 				BR	10$		; GET NEXT DIGIT
     68	000056	005761 	000002 		30$:	TST	2(R1)		; IS THERE MORE THAN 16 BITS ?
     69	000062	001401 				BEQ	50$		; NO
     70	000064	000261 				SEC			; YES, SET 32 BIT FLAG
     71	000066				50$:	RETURN			; RETURN TO CALLER
     72
     73		000001 				.END
COT2B - CONVERT FROM OCTAL TO T	MACRO M1113  14-APR-81 11:15  PAGE 3-2
SYMBOL TABLE

E$$MSG= 000001   	F$$LVL= 000001   	R$$10F= 000001   	R$$20F= 000001   	.COT2B  000000RG
E$$TRP= 000001   	M$$HDR= 000001   	R$$11D= 000001

. ABS.	000000	   000
      	000070	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  151 WORDS  ( 1 PAGES)
DYNAMIC MEMORY:  2518 WORDS  ( 9 PAGES)
ELAPSED TIME:  00:00:04
[53,10]COT2B,[53,20]COT2B/-SP/CR=[53,30]RSXDC,COT2B
COT2B      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

E$$MSG	= 000001	#1-33      
E$$TRP	= 000001	#1-32      
F$$LVL	= 000001	#1-28      
M$$HDR	= 000001	#1-34      
R$$10F	= 000001	#1-30      
R$$11D	= 000001	#1-29      
R$$20F	= 000001	#1-31      
S$$YDF	= ******	 1-1        1-37      
.COT2B	  000000 RG	#3-51      
COT2B      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 2

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

RETURN		#3-27       3-71      
GTCML - GET COMMAND LINE WITH C	MACRO M1113  14-APR-81 11:15  PAGE 3


      1					.TITLE	GTCML - GET COMMAND LINE WITH CONTINUATIONS
      2
      3					.IDENT	"V0004"
      4
      5					;                             COPYRIGHT (C) 1975, 1978 BY
      6					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      7					;
      8					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
      9					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     10					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     11					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     12					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     13					;
     14					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     15					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     16					;       CORPORATION.
     17					;
     18					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     19					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     20					;
     21					;
     22					; ANDREW C. GOLDSTEIN  23 JAN 75  19:57
     23
     24					;
     25					; THIS ROUTINE ACCEPTS A COMMAND LINE WITH CONTINUATIONS FOR THE FILES
     26					; MCR FUNCTIONS. IT FIRST GETS THE MCR COMMAND LINE. IF THERE IS NONE,
     27					; OR IF CONTINUATIONS ARE CALLED FOR, IT PROMPTS AND READS INPUT FROM
     28					; THE TASK'S LUN #1, WHICH IS HOPEFULLY ASSIGNED TO TI. ALL ERROR
     29					; HANDLING IS DONE INTERNALLY.
     30					;
     31
     32		000001 			LUN = 1				; LUN FOR CONSOLE I/O
     33		000001 			EFN = 1				; LIKEWISE EFN
     34
     35		000015 			CR  = 15			; CARRIAGE RETURN CHAR
     36
     37						.MCALL	QIOW$,QIOW$S,GMCR$,DIR$,CALL,RETURN,EXIT$S
     38					;
     39					; BUFFER TO BUILD COMMAND LINE
     40					;
     41		000376 			BUFSIZ = 256.-2.
     42
     43	000000				BUFFER:	GMCR$
     44	000122					.BLKB	BUFSIZ+BUFFER+G.MCRB-.
     45					;
     46					; QIO TO OUTPUT PROMPT TO TERMINAL
     47					;
     48	000400				PROMPT:	QIOW$	IO.WVB,LUN,EFN,,IOSTAT,,<,,<'$>>
     49
     50	000422				IOSTAT:	.BLKW	2		; I/O STATUS BLOCK
     51					;
     52					; ERROR MESSAGES FOR VARIOUS FORMS OF LOSSAGE
     53					;
     54	000426	   015 	   130 	   130 	IOERRM:	.ASCII	<CR>"XXX -- COMMAND I/O ERROR"
	000431	   130 	   040 	   055
	000434	   055 	   040 	   103
	000437	   117 	   115 	   115
GTCML - GET COMMAND LINE WITH C	MACRO M1113  14-APR-81 11:15  PAGE 3-1


	000442	   101 	   116 	   104
	000445	   040 	   111 	   057
	000450	   117 	   040 	   105
	000453	   122 	   122 	   117
	000456	   122
     55		000031 			IOERRL = .-IOERRM
     56
     57	000457	   015 	   130 	   130 	OVERM:	.ASCII	<CR>"XXX -- COMMAND TOO LONG"
	000462	   130 	   040 	   055
	000465	   055 	   040 	   103
	000470	   117 	   115 	   115
	000473	   101 	   116 	   104
	000476	   040 	   124 	   117
	000501	   117 	   040 	   114
	000504	   117 	   116 	   107
     58		000030 			OVERL = .-OVERM
     59
     60						.EVEN
GTCML - GET COMMAND LINE WITH C	MACRO M1113  14-APR-81 11:15  PAGE 4


     62					;+
     63					;
     64					; *** - .GTCML - GET COMMAND LINE WITH CONTINUATION
     65					;
     66					; THIS ROUTINE OBTAINS A COMMAND LINE FROM THE MCR COMMAND LINE
     67					; BUFFER OR FROM THE CONSOLE TERMINAL. A TRAILING HYPHEN (-)
     68					; CAUSES CONTINUATION: THE ROUTINE PROMPTS AND ACCEPTS ANOTHER
     69					; LINE FROM THE CONSOLE TERMINAL.
     70					;
     71					; INPUTS:
     72					;
     73					;	R3 = LENGTH OF PROMPT STRING
     74					;	R4 = ADDRESS OF PROMPT STRING
     75					;
     76					; OUTPUTS:
     77					;
     78					;	R3 = LENGTH OF COMMAND STRING
     79					;	R4 = ADDRESS OF COMMAND STRING
     80					;	R0-R2 ARE GARBAGED
     81					;
     82					;-
     83
     84						.ENABL	LSB
     85
     86	000510				.GTCML::
     87	000510	010467 	177700 			MOV	R4,PROMPT+Q.IOPL ; SET UP PROMPT STRING
     88	000514	010367 	177676 			MOV	R3,PROMPT+Q.IOPL+2 ; IN QIO DPB
     89	000520	012701 	000376 			MOV	#BUFSIZ,R1	; AND MAXIMUM BYTE COUNT
     90	000524					DIR$	#BUFFER		; TRY FOR MCR COMMAND BUFFER
     91	000532	103421 				BCS	30$		; BRANCH IF NONE
     92	000534	013703 	000000G			MOV	@#$DSW,R3	; PICK UP THE BYTE COUNT
     93	000540	001416 				BEQ	30$		; BRANCH IF NULL
     94	000542	160301 				SUB	R3,R1		; COMPUTE SPACE LEFT
     95	000544	012704 	000002'			MOV	#BUFFER+G.MCRB,R4 ; POINT TO START OF ACTUAL COMMAND LINE
     96	000550				10$:	CALL	SPTEST		; SEARCH FOR THE FIRST SPACE
     97	000554	103003 				BCC	20$
     98	000556	005204 				INC	R4		; TRY NEXT CHARACTER
     99	000560	077305 				SOB	R3,10$
    100	000562	000405 				BR	30$		; NO SPACES - THROW COMMAND LINE AWAY
    101
    102	000564				20$:	CALL	SPTEST		; NOW LOOK FOR FIRST REAL COMMAND CHAR
    103	000570	103411 				BCS	40$
    104	000572	005204 				INC	R4		; TRY THE NEXT
    105	000574	077305 				SOB	R3,20$
    106					;
    107					; THERE IS NO MCR COMMAND LINE, EITHER BECAUSE THE DIRECTIVE FAILED
    108					; OR THERE WAS NO USEFUL INFORMATION IN IT. SET UP TO GET COMMAND
    109					; FROM THE TERMINAL.
    110					;
    111	000576	012704 	000002'		30$:	MOV	#BUFFER+G.MCRB,R4 ; RE-INIT POINTER
    112	000602	005003 				CLR	R3
    113	000604	012701 	000376 			MOV	#BUFSIZ,R1	; R1 = SPACE AVAILABLE
    114	000610	010400 				MOV	R4,R0		; R0 = ADDRESS FOR INPUT
    115	000612	000411 				BR	60$
    116					;
    117					; WE HAVE A GOOD MCR COMMAND LINE. UPDATE VARIOUS REGISTERS.
    118					;
GTCML - GET COMMAND LINE WITH C	MACRO M1113  14-APR-81 11:15  PAGE 4-1


    119	000614	010400 			40$:	MOV	R4,R0		; POINT TO END OF DATA
    120	000616	060300 				ADD	R3,R0
    121					;
    122					; WE HAVE A COMMAND LINE FROM SOMEWHERE. LOOK FOR CONTINUATION.
    123					;
    124	000620	126027 	177777 	000055 	50$:	CMPB	-1(R0),#'-	; CONTINUATION CHARACTER IS A "-"
    125	000626	001051 				BNE	EOL		; NO - ALL DONE
    126	000630	005300 				DEC	R0		; YES - THROW IT AWAY
    127	000632	005201 				INC	R1
    128	000634	005303 				DEC	R3		; ADJUST THE CHARACTER COUNT
    129					;
    130					; READ AN INPUT LINE FROM THE TERMINAL.
    131					;
    132	000636				60$:	DIR$	#PROMPT		; OUTPUT THE PROMPT STRING
    133	000644	103444 				BCS	IOERR		; CHECK FOR DIRECTIVE ERROR
    134	000646	105767 	177550 			TSTB	IOSTAT		; AND FOR I/O ERROR
    135	000652	002441 				BLT	IOERR
    136	000654					QIOW$S	#IO.RVB,#LUN,#EFN,,#IOSTAT,,<R0,R1,<#' >>
    137	000716	103417 				BCS	IOERR		; DIRECTIVE ERROR
    138	000720	105767 	177476 			TSTB	IOSTAT
    139	000724	002414 				BLT	IOERR		; I/O ERROR
    140	000726	105767 	177471 			TSTB	IOSTAT+1	; CHECK FOR A TERMINATED LINE
    141	000732	001422 				BEQ	OVER		; NO - BUFFER HAS OVERFLOWED
    142	000734	016702 	177464 			MOV	IOSTAT+2,R2	; GET THE BYTE COUNT
    143	000740	001736 				BEQ	60$		; IGNORE NULL LINES
    144	000742	160201 				SUB	R2,R1		; ADJUST THE REMAINING SPACE COUNT
    145	000744	060203 				ADD	R2,R3		; ACCUMULATE BYTE COUNT
    146	000746	060200 				ADD	R2,R0		; POINT TO NEW END OF DATA
    147	000750	000723 				BR	50$		; AND LOOK FOR CONTINUATION AGAIN
    148					;
    149					; END OF LINE
    150					;
    151	000752	105010 			EOL:	CLRB	(R0)		; THROW IN A TERMINATING NULL
    152	000754					RETURN
    153					;
    154					; TO HERE ON I/O ERROR
    155					;
    156	000756	126727 	177440 	000000G	IOERR:	CMPB	IOSTAT,#IE.EOF	; LOOK FOR CONTROL Z
    157	000764	001441 				BEQ	90$		; YES - JUST GET OUT QUIETLY
    158	000766	012700 	000426'			MOV	#IOERRM,R0	; SET UP MESSAGE POINTER
    159	000772	012701 	000031 			MOV	#IOERRL,R1	; AND BYTE COUNT
    160	000776	000404 				BR	70$
    161					;
    162					; TO HERE IF THE INPUT BUFFER OVERFLOWS
    163					;
    164	001000	012700 	000457'		OVER:	MOV	#OVERM,R0
    165	001004	012701 	000030 			MOV	#OVERL,R1
    166	001010	010002 			70$:	MOV	R0,R2
    167	001012	005202 				INC	R2
    168	001014	012703 	000003 			MOV	#3,R3		; COUNT 3 BYTES OF THE PROMPT STRING
    169	001020	016704 	177370 			MOV	PROMPT+Q.IOPL,R4 ; POINT TO PROMPT STRING
    170	001024	112422 			80$:	MOVB	(R4)+,(R2)+	; COPY PROMPT INTO ERROR MESSAGE
    171	001026	077302 				SOB	R3,80$
    172	001030					QIOW$S	#IO.WVB,#LUN,#EFN,,,,<R0,R1,<#' >>
    173	001070				90$:	EXIT$S			; DON'T GO AWAY MAD, JUST GO AWAY....
    174
    175					;
GTCML - GET COMMAND LINE WITH C	MACRO M1113  14-APR-81 11:15  PAGE 4-2


    176					; SUBROUTINE TO CHECK FOR BLANKS OR TABS. R4 POINTS TO CHARACTER
    177					; BEING TESTED. CARRY CLEAR MEANS BLANK OR TAB.
    178					;
    179	001076	121427 	000040 		SPTEST:	CMPB	(R4),#40	; BLANK?
    180	001102	001405 				BEQ	100$		; YES
    181	001104	121427 	000011 			CMPB	(R4),#11	; TAB?
    182	001110	001402 				BEQ	100$		; YES
    183	001112	000261 				SEC			; NEITHER
    184	001114					RETURN
    185	001116	000241 			100$:	CLC
    186	001120					RETURN
    187
    188						.DSABL	LSB
    189
    190
    191
    192		000001 				.END
GTCML - GET COMMAND LINE WITH C	MACRO M1113  14-APR-81 11:15  PAGE 4-3
SYMBOL TABLE

BUFFER  000000R  	G.MCRB= 000002   	LUN   = 000001   	Q.IOFN= 000002   	SPTEST  001076R
BUFSIZ= 000376   	IE.EOF= ****** GX	M$$HDR= 000001   	Q.IOLU= 000004   	$DSW  = ****** GX
CR    = 000015   	IOERR   000756R  	OVER    001000R  	Q.IOPL= 000014   	$$    = 000067
EFN   = 000001   	IOERRL= 000031   	OVERL = 000030   	Q.IOPR= 000007   	$$$ARG= 000003
EOL     000752R  	IOERRM  000426R  	OVERM   000457R  	Q.IOSB= 000010   	$$$OST= 000014
E$$MSG= 000001   	IOSTAT  000422R  	PROMPT  000400R  	R$$10F= 000001   	$$$T1 = 000011
E$$TRP= 000001   	IO.RVB= ****** GX	Q.IOAE= 000012   	R$$11D= 000001   	.GTCML  000510RG
F$$LVL= 000001   	IO.WVB= ****** GX	Q.IOEF= 000006   	R$$20F= 000001

. ABS.	000000	   000
      	001122	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  1904 WORDS  ( 8 PAGES)
DYNAMIC MEMORY:  2518 WORDS  ( 9 PAGES)
ELAPSED TIME:  00:00:16
[53,10]GTCML,[53,20]GTCML/-SP/CR=[53,30]RSXDC,GTCML
GTCML      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

BUFFER	  000000 R	#3-43       3-44       4-90       4-95       4-111     
BUFSIZ	= 000376	#3-41       3-44       4-89       4-113     
CR    	= 000015	#3-35       3-54       3-57      
EFN   	= 000001	#3-33       3-48       4-136      4-172     
EOL   	  000752 R	 4-125     #4-151     
E$$MSG	= 000001	#1-33      
E$$TRP	= 000001	#1-32      
F$$LVL	= 000001	#1-28      
G.MCRB	= 000002	#3-43       3-44       4-95       4-111     
IE.EOF	= ******  GX	 4-156     
IOERR 	  000756 R	 4-133      4-135      4-137      4-139     #4-156     
IOERRL	= 000031	#3-55       4-159     
IOERRM	  000426 R	#3-54       3-55       4-158     
IOSTAT	  000422 R	 3-48      #3-50       4-134      4-136      4-138      4-140      4-142      4-156     
IO.RVB	= ******  GX	 4-136     
IO.WVB	= ******  GX	 3-48       4-172     
LUN   	= 000001	#3-32       3-48       4-136      4-172     
M$$HDR	= 000001	#1-34      
OVER  	  001000 R	 4-141     #4-164     
OVERL 	= 000030	#3-58       4-165     
OVERM 	  000457 R	#3-57       3-58       4-164     
PROMPT	  000400 R	#3-48      *4-87      *4-88       4-132      4-169     
Q.IOAE	= 000012	#3-48      
Q.IOEF	= 000006	#3-48      
Q.IOFN	= 000002	#3-48      
Q.IOLU	= 000004	#3-48      
Q.IOPL	= 000014	#3-48      *4-87      *4-88       4-169     
Q.IOPR	= 000007	#3-48      
Q.IOSB	= 000010	#3-48      
R$$10F	= 000001	#1-30      
R$$11D	= 000001	#1-29      
R$$20F	= 000001	#1-31      
SPTEST	  001076 R	 4-96       4-96       4-102      4-102     #4-179     
S$$YDF	= ******	 1-1        1-37      
$DSW  	= ******  GX	 4-92      
$$    	= 000067	#4-96       4-96      #4-102      4-102     
$$$ARG	= 000003	#3-48       3-48      #3-48       3-48      #3-48       3-48      #3-48       3-48      #4-136     
                         4-136      4-136      4-136      4-136      4-136      4-136      4-136      4-136      4-136     
                         4-136      4-136     #4-172      4-172      4-172      4-172      4-172      4-172      4-172     
                         4-172      4-172      4-172      4-172      4-172     
$$$GLB	= ******	 3-43       3-43       3-48       3-48       3-48       3-48       3-48       3-48       3-48      
                         3-48      
$$$OST	= 000014	#3-43       3-43       3-43      #3-43      #3-48       3-48       3-48      #3-48       3-48      
                         3-48      #3-48       3-48       3-48      #3-48       3-48       3-48      #3-48       3-48      
                         3-48      #3-48       3-48       3-48      #3-48       3-48      
$$$T1 	= 000011	#4-136      4-136     #4-172      4-172     
.GTCML	  000510 RG	#4-86      
GTCML      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 2

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

CALL  		#3-37      #4-96      #4-102     
DIR$  		#3-37      #4-90      #4-132     #4-136     #4-136     #4-172     #4-172     #4-173     #4-173     
ERR$  		#4-90      #4-132     #4-136     #4-172     #4-173     
EXIT$S		#3-37      #4-173     
GMCR$ 		#3-37       3-43      
MOV$  		#4-136     #4-136     #4-136     #4-136     #4-136     #4-136     #4-136     #4-136     #4-136     #4-172     
                #4-172     #4-172     #4-172     #4-172     #4-172     #4-172     #4-172     #4-172     
MVB$  		#4-136     #4-136     #4-172     #4-172     
OFF$  		#3-43       3-43       3-43      #3-48       3-48       3-48       3-48       3-48       3-48       3-48      
                 3-48       3-48      
QDPB$ 		#3-48      #3-48      
QDPB$S		#4-136     #4-136     #4-172     #4-172     
QIOW$ 		#3-37       3-48      
QIOW$S		#3-37      #4-136     #4-172     
RETURN		#3-37      #4-152     #4-184     #4-186     
RVP$  		#4-136      4-136     #4-172      4-172     
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15
TABLE OF CONTENTS

     3-    5	TITLE PAGE
     4-   29	MACRO DEFINITIONS
     4-   64	IMPURE DATA
     5-   80	MAIN ROUTINE BODY
     6-  202	COMPLEX TYPE ROUTINES
     7-  281	GET STRING ROUTINE
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15  PAGE 3


      1					.TITLE	.TPARS - TABLE DRIVEN FINITE STATE PARSER
      2
      3					.IDENT	"V0112"
      4
      5					.SBTTL	TITLE PAGE
      6
      7					;                             COPYRIGHT (C) 1975, 1978 BY
      8					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      9					;
     10					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
     11					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     12					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     13					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     14					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     15					;
     16					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     17					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     18					;       CORPORATION.
     19					;
     20					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     21					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     22					;
     23					;
     24					; ANDREW C. GOLDSTEIN  5 MAR 75  20:51
     25
     26
     27		000000 				R$$EIS = 0		; USE EIS
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15  PAGE 4
MACRO DEFINITIONS

     29					.SBTTL	MACRO DEFINITIONS
     30
     31						.MCALL	CALL,RETURN
     32
     33					; INTERNAL MACROS
     34
     35					.MACRO	PUSH	LIST
     36						.IRP	RX,<LIST>
     37						MOV	RX,-(SP)
     38						.ENDM
     39					.ENDM	PUSH
     40
     41					.MACRO	POP	LIST
     42						.IRP	RX,<LIST>
     43						MOV	(SP)+,RX
     44						.ENDM
     45					.ENDM	POP
     46
     47					; MACRO TO DO SOB'S ON SMALL MACHINES
     48
     49						.IF	NDF	R$$EIS
     50					.MACRO	SOB	RX,LABEL
     51						DEC	RX
     52						BNE	LABEL
     53					.ENDM	SOB
     54						.ENDC
     55
     56					; RANDOM CHARACTERS
     57
     58		000011 			TAB=	11
     59		000015 			CR=	15
     60		000033 			AM=	33
     61		000040 			SPA=	40
     62
     63
     64					.SBTTL	IMPURE DATA
     65
     66	000000					.PSECT	IMPURE,D
     67
     68					; ITEMS OF INTEREST TO ACTION ROUTINES AND THE OUTSIDE WORLD
     69					; IN GENERAL.
     70
     71	000000				.PSTCN::.BLKW	1		; CHARACTER COUNT OF FOUND STRING
     72	000002				.PSTPT::.BLKW	1		; POINTER TO FOUND STRING
     73
     74	000004				.PNUMH::.BLKW	1		; HIGH ORDER VALUE AND ....
     75	000006				.PNUMB::.BLKW	1		; LOW ORDER VALUE OF FOUND NUMBER
     76	000010				.PCHAR::.BLKW	1		; FOUND CHARACTER
     77
     78	000000					.PSECT
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15  PAGE 5
MAIN ROUTINE BODY

     80					.SBTTL	MAIN ROUTINE BODY
     81
     82					;+
     83					;
     84					; *** - .TPARS
     85					;
     86					; ENTRY:	CALL	.TPARS
     87					;
     88					; INPUTS:
     89					;
     90					;	R1 = 0	IGNORE ALL SPACES BETWEEN SYNTACTIC ELEMENTS
     91					;	  >< 0	TREAT SPACES AS SIGNIFICANT CHARACTERS
     92					;	R2 =	POINTER TO KEYWORD TABLE
     93					;	R3 =	LENGTH OF COMMAND STRING
     94					;	R4 =	ADDRESS OF COMMAND STRING
     95					;	R5 =	INITIAL STATE POINTER
     96					;
     97					; OUTPUTS:
     98					;
     99					;	C = 0	SUCCESSFUL PARSE
    100					;	C = 1	SYNTAX OR STATE TABLE ERROR
    101					;	R3 =	NUMBER OF CHARACTERS NOT SCANNED
    102					;	R4 =	POINTER TO UNSCANNED PART OF COMMAND STRING
    103					;
    104					;	ALL OTHER REGISTERS ARE PRESERVED.
    105					;
    106					; .TPARS PARSES THE COMMAND STRING ACCORDING TO THE FINITE
    107					; STATE MACHINE REPRESENTED IN THE STATE AND KEYWORD TABLES
    108					; SUPPLIED BY THE CALLER. USER SUPPLIED ACTION ROUTINES ARE
    109					; CALLED AS SPECIFIED.
    110					;
    111					;-
    112
    113
    114	000000				.TPARS::
    115	000000					PUSH	<R0,R5,R2,R1>	; SAVE REGISTERS
    116
    117					; ENTER THE STATE SPECIFIED IN R5 AND
    118					; EVALUATE POSSIBLE STATE TRANSITIONS
    119
    120	000010	005067 	000000'		TSTAT:	CLR	.PSTCN		; KILL ANY OLD STRING
    121	000014	005716 				TST	(SP)		; CHECK SPACE FLUSH FLAG
    122	000016	001002 				BNE	10$
    123	000020					CALL	GETSP		; EAT SPACES IF FLAG IS ZERO
    124	000024	112500 			10$:	MOVB	(R5)+,R0	; GET TYPE BYTE
    125	000026	002044 				BGE	TSCHAR		; BIT 7 = 0 - MATCH SPECIFIED CHAR
    126	000030	120027 	000300 			CMPB	R0,#300
    127	000034	002573 				BLT	DOKEY		; 200 - 277 - MATCH KEYWORD
    128	000036	120027 	000320 			CMPB	R0,#MAXTYP	; CHECK TYPE CODE FOR LEGALITY
    129	000042	003034 				BGT	SYNERR		; TOO HIGH - OUT
    130	000044	010701 				MOV	PC,R1		; GARBAGE R1 FOR USE AS A FLAG
    131	000046	042700 	177700 			BIC	#^C77,R0	; RETAIN ONLY THE TYPE INDEX
    132	000052	060007 				ADD	R0,PC		; AND DISPATCH ON IT
    133	000054	000440 				BR	DOLAMB		; $LAMDA = 300 - MATCH EMPTY
    134	000056	000510 				BR	DONUMB		; $NUMBR = 302 - MATCH NUMBER
    135	000060	000503 				BR	DOSTRG		; $STRNG = 304 - MATCH ANY STRING
    136	000062	000553 				BR	DOBLNK		; $BLANK = 306 - MATCH ANY SET OF BLANKS
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15  PAGE 5-1
MAIN ROUTINE BODY

    137	000064	000455 				BR	DOSUBR		; $SUBXP = 310 - MATCH A SUBEXPRESSION
    138	000066	000403 				BR	DOENDS		; $EOS   = 312 - MATCH END OF STRING
    139	000070	000502 				BR	DODNMB		; $DNUMB = 314 - MATCH DECIMAL NUMBER
    140	000072	000475 				BR	DORD50		; $RAD50 = 316 - MATCH RAD-50 STRING
    141	000074	000423 				BR	DOCHAR		; $ANY   = 320 - MATCH ANY CHARACTER
    142
    143					; NOTE - IT IS CRITICAL THAT R0 AND R1 BE NON-ZERO AT THE DISPATCH
    144
    145		000320 				MAXTYP = 320
    146
    147					; CHECK FOR END OF STRING
    148
    149	000076	005703 			DOENDS:	TST	R3		; CHECK CHAR COUNT
    150	000100	001426 				BEQ	DOTRAN		; YES
    151
    152					; TYPE MATCH FAILED - TRY NEXT ENTRY IN TRANSITION TABLE
    153
    154	000102	066703 	000000'		NXTRAN:	ADD	.PSTCN,R3	; RETURN ANY STRING
    155	000106	166704 	000000'			SUB	.PSTCN,R4	; TO THE COMMAND LINE
    156	000112	112500 				MOVB	(R5)+,R0	; GET FLAGS BYTE
    157	000114	002407 				BLT	SYNERR		; THIS WAS LAST TRANSITION - YOU LOSE
    158	000116	012701 	000003 			MOV	#3,R1		; COUNT OF FLAG BITS TO TEST
    159	000122	006000 			20$:	ROR	R0		; CHECK FLAG BIT
    160	000124	103001 				BCC	30$
    161	000126	005725 				TST	(R5)+		; SKIP POINTER WORD
    162	000130	077104 			30$:	SOB	R1,20$		; COUNT BITS
    163	000132	000726 				BR	TSTAT		; TRY NEXT TRANSITION
    164
    165					; OUT OF TRANSITION TABLE ENTRIES, OR SOME OTHER ANOMALY,
    166					; LIKE A BAD TYPE CODE. ALL ARE SYNTAX ERRORS.
    167
    168	000134	000261 			SYNERR:	SEC			; SAY SO
    169	000136	000423 				BR	EXIT		; AND QUIT
    170
    171					; TEST FOR SPECIFIED CHARACTER
    172
    173	000140	120014 			TSCHAR:	CMPB	R0,(R4)		; CHECK CHAR IN COMMAND STRING
    174	000142	001357 				BNE	NXTRAN		; IF NO MATCH, TRY ANOTHER TRANSITION
    175
    176					; GOBBLE A CHARACTER AND DO THE TRANSITION
    177
    178	000144	005703 			DOCHAR:	TST	R3		; CHECK FOR END OF STRING
    179	000146	003755 				BLE	NXTRAN		; IF YES, DON'T TRY THIS
    180	000150	112467 	000010'			MOVB	(R4)+,.PCHAR	; SAVE CHAR FOR ACTION ROUTINE
    181	000154	005303 				DEC	R3		; COUNT IT
    182
    183					; DO THE STATE TRANSITION
    184
    185	000156				DOLAMB:
    186	000156	112500 			DOTRAN:	MOVB	(R5)+,R0	; GET FLAGS BYTE
    187	000160	006000 				ROR	R0		; CHECK EXTENSION BIT
    188	000162	103001 				BCC	40$
    189	000164	005725 				TST	(R5)+		; SKIP EXTENSION WORD
    190	000166	006000 			40$:	ROR	R0		; CHECK ACTION BIT
    191	000170	103001 				BCC	50$
    192	000172					CALL	@(R5)+		; CALL ACTION ROUTINE
    193	000174	006000 			50$:	ROR	R0		; CHECK EXPLICIT TRANSITION BIT
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15  PAGE 5-2
MAIN ROUTINE BODY

    194	000176	103304 				BCC	TSTAT
    195	000200	012505 				MOV	(R5)+,R5	; POINT TO NEXT STATE
    196	000202	001302 			60$:	BNE	TSTAT		; PROCESS NEXT STATE
    197	000204	000257 				CCC			; STATE NUMBER OF ZERO MEANS STOP
    198
    199	000206				EXIT:	POP	<R1,R2,R5,R0>	; RESTORE ALL THE REGISTERS
    200	000216					RETURN
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15  PAGE 6
COMPLEX TYPE ROUTINES

    202					.SBTTL	COMPLEX TYPE ROUTINES
    203
    204					; SUB EXPRESSION TYPE - CALL ONESELF RECURSIVELY
    205
    206	000220	011601 			DOSUBR:	MOV	(SP),R1		; SET SPACE FLUSH FLAG
    207	000222	016602 	000002 			MOV	2(SP),R2	; SET KEYWORD TABLE POINTER
    208	000226					PUSH	<R3,R4>		; SAVE STRING POINTERS FOR UNWIND
    209	000232	010500 				MOV	R5,R0		; SAVE STATE TABLE POINTER
    210	000234	016505 	000001 			MOV	1(R5),R5	; GET STARTING STATE
    211	000240					CALL	.TPARS		; AND TRY TO PARSE SUBEXPRESSION
    212	000244	010005 				MOV	R0,R5		; RESTORE STATE POINTER
    213	000246	103402 				BCS	10$		; CHECK FOR SUCCESS
    214	000250	022626 				CMP	(SP)+,(SP)+	; THROW AWAY STRING POINTER SAVE
    215	000252	000741 				BR	DOTRAN		; AND TAKE THE TRANSITION
    216
    217	000254	005067 	000000'		10$:	CLR	.PSTCN		; FLUSH ANY STRINGS FOUND
    218	000260					POP	<R4,R3>		; RESTORE STRING POINTERS
    219	000264	000706 				BR	NXTRAN		; AND TRY SOMETHING ELSE
    220
    221					; MATCH ANY ALPHANUMERIC STRING
    222
    223	000266	005000 			DORD50:	CLR	R0		; SET RAD-50 FLAG
    224	000270				DOSTRG:	CALL	GETSTR		; JUST DRAG IN THE STRING
    225	000274	000730 				BR	DOTRAN
    226
    227					; MATCH ANY NUMBER
    228
    229	000276	005001 			DODNMB:	CLR	R1		; SET DECIMAL MODE
    230	000300				DONUMB:	CALL	GETSTR		; GET A STRING
    231	000304	005767 	000000'			TST	.PSTCN		; CHECK STRING LENGTH
    232	000310	001674 				BEQ	NXTRAN		; COME ON, AT LEAST ONE DIGIT
    233	000312	005701 				TST	R1		; CHECK MODE
    234	000314	001411 				BEQ	20$		; DECIMAL - DON'T LOOK FOR TRAILING DOT
    235	000316	005703 				TST	R3		; SEE IF WE'RE AT END OF STRING
    236	000320	003407 				BLE	20$		; YES
    237	000322	121427 	000056 			CMPB	(R4),#'.	; CHECK FOR TRAILING DECIMAL
    238	000326	001004 				BNE	20$		; NO
    239	000330	005204 				INC	R4		; YES - INCLUDE IN NUMBER STRING
    240	000332	005303 				DEC	R3
    241	000334	005267 	000000'			INC	.PSTCN		; BUMP STRING COUNT
    242	000340				20$:	PUSH	<R3,R4,R5>	; SAVE REGISTERS
    243	000346	016705 	000002'			MOV	.PSTPT,R5	; GET STRING POINTER
    244	000352	016704 	000000'			MOV	.PSTCN,R4	; AND STRING COUNT
    245	000356	012703 	000004'			MOV	#.PNUMH,R3	; POINT TO DOUBLE WORD FOR NUMBER
    246	000362	005701 				TST	R1		; CHECK IF OCTAL OR DECIMAL
    247	000364	001003 				BNE	30$		; OCTAL
    248	000366					CALL	.DD2CT		; DECIMAL
    249	000372	000402 				BR	40$
    250	000374				30$:	CALL	.OD2CT		; DO OCTAL/DECIMAL CONVERT
    251	000400				40$:	POP	<R5,R4,R3>	; RESTORE REGISTERS
    252	000406	103635 				BCS	NXTRAN		; IF ERRORS, FORGET IT
    253	000410	000662 				BR	DOTRAN		; ELSE JUST DO TRANSITION
    254
    255					; MATCH ANY NON-EMPTY STRING OF SPACES OF TABS
    256
    257	000412				DOBLNK:	CALL	GETSP		; LOOK FOR SPACES
    258	000416	005702 				TST	R2		; CHECK NUMBER FOUND
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15  PAGE 6-1
COMPLEX TYPE ROUTINES

    259	000420	001630 				BEQ	NXTRAN		; NO BLANKS - TRY SOMETHING ELSE
    260	000422	000655 				BR	DOTRAN		; YES - DO IT
    261
    262					; MATCH SPECIFIED KEYWORD
    263
    264	000424				DOKEY:	CALL	GETSTR		; GET ALPHA STRING
    265	000430	042700 	177700 			BIC	#^C77,R0	; GET KEYWORD INDEX
    266	000434	006300 				ASL	R0		; CONVERT TO OFFSET
    267	000436	006300 				ASL	R0
    268	000440	006300 				ASL	R0
    269	000442	066600 	000002 			ADD	2(SP),R0	; INDEX INTO KEYWORD TABLE
    270	000446	016701 	000000'			MOV	.PSTCN,R1	; GET STRING DESCRIPTOR
    271	000452	001613 				BEQ	NXTRAN		; DON'T TRY TO MATCH NULL STRING
    272	000454	016702 	000002'			MOV	.PSTPT,R2
    273
    274	000460	122022 			50$:	CMPB	(R0)+,(R2)+	; COMPARE TO KEYWORD
    275	000462	001207 				BNE	NXTRAN		; OUT ON MISMATCH
    276	000464	077103 				SOB	R1,50$		; COUNT CHARS AND LOOP
    277	000466	121027 	000377 			CMPB	(R0),#377	; CHECK FOR KEYWORD TERMINATOR
    278	000472	001203 				BNE	NXTRAN		; STRING WAS SUBSET - NO
    279	000474	000630 				BR	DOTRAN		; MATCH
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15  PAGE 7
GET STRING ROUTINE

    281					.SBTTL	GET STRING ROUTINE
    282
    283					; THIS ROUTINE POINTS THE STRING DESCRIPTOR AT THE ALPHA-NUMERIC
    284					; STRING AT THE CURRENT POSITION IN THE COMMAND LINE.
    285
    286	000476	010467 	000002'		GETSTR:	MOV	R4,.PSTPT	; INIT STRING POINTER
    287	000502	005067 	000000'			CLR	.PSTCN		; AND COUNT
    288	000506	005703 				TST	R3		; CHECK FOR END OF STRING
    289	000510	003414 				BLE	20$		; IF YES, DON'T TRY THIS
    290
    291	000512	121427 	000060 		10$:	CMPB	(R4),#'0	; CHECK NEXT CHAR IN COMMAND LINE
    292	000516	002411 				BLT	20$		; LESS THAN "0" - OUT
    293	000520	121427 	000071 			CMPB	(R4),#'9
    294	000524	003416 				BLE	30$		; LESS THAN "9" - OK
    295	000526	121427 	000101 			CMPB	(R4),#'A
    296	000532	002403 				BLT	20$		; LESS THAN "A" - OUT
    297	000534	121427 	000132 			CMPB	(R4),#'Z
    298	000540	003410 				BLE	30$		; LESS THAN "Z" - OK
    299	000542	005700 			20$:	TST	R0		; SEE IF RAD-50 MODE
    300	000544	001012 				BNE	40$		; NO
    301	000546	121427 	000056 			CMPB	(R4),#'.	; CHECK FOR "."
    302	000552	001403 				BEQ	30$
    303	000554	121427 	000044 			CMPB	(R4),#'$	; CHECK FOR "$"
    304	000560	001004 				BNE	40$
    305	000562	005267 	000000'		30$:	INC	.PSTCN		; GOOD CHAR - BUMP COUNT
    306	000566	005204 				INC	R4		; GOBBLE THE CHAR
    307	000570	077330 				SOB	R3,10$		; COUNT IT AND LOOP
    308	000572				40$:	RETURN			; END OF LINE OR NON-ALPHA NUMERIC
    309
    310
    311					; THIS ROUTINE FINDS AND PASSES OVER BLANKS AND TABS AT THE CURRENT
    312					; POSITION IN THE COMMAND LINE.
    313
    314	000574	005002 			GETSP:	CLR	R2		; ZERO CHAR COUNT
    315	000576	005703 				TST	R3		; CHECK FOR END OF STRING
    316	000600	003411 				BLE	70$		; IF YES, DON'T TRY THIS
    317	000602	121427 	000040 		50$:	CMPB	(R4),#SPA	; TEST FOR SPACE IN COMMAND LINE
    318	000606	001403 				BEQ	60$
    319	000610	121427 	000011 			CMPB	(R4),#TAB	; TEST FOR TAB
    320	000614	001003 				BNE	70$
    321	000616	005202 			60$:	INC	R2		; BLANK OR TAB FOUND - BUMP COUNT
    322	000620	005204 				INC	R4		; BUMP STRING POINTER
    323	000622	077311 				SOB	R3,50$		; COUNT CHARS AND LOOP
    324	000624				70$:	RETURN
    325
    326
    327
    328		000001 				.END
.TPARS - TABLE DRIVEN FINITE ST	MACRO M1113  14-APR-81 11:15  PAGE 7-1
SYMBOL TABLE

AM    = 000033   	DONUMB  000300R  	F$$LVL= 000001   	R$$11D= 000001   	.DD2CT= ****** GX
CR    = 000015   	DORD50  000266R  	GETSP   000574R  	R$$20F= 000001   	.OD2CT= ****** GX
DOBLNK  000412R  	DOSTRG  000270R  	GETSTR  000476R  	SPA   = 000040   	.PCHAR  000010RG    002
DOCHAR  000144R  	DOSUBR  000220R  	MAXTYP= 000320   	SYNERR  000134R  	.PNUMB  000006RG    002
DODNMB  000276R  	DOTRAN  000156R  	M$$HDR= 000001   	TAB   = 000011   	.PNUMH  000004RG    002
DOENDS  000076R  	EXIT    000206R  	NXTRAN  000102R  	TSCHAR  000140R  	.PSTCN  000000RG    002
DOKEY   000424R  	E$$MSG= 000001   	R$$EIS= 000000   	TSTAT   000010R  	.PSTPT  000002RG    002
DOLAMB  000156R  	E$$TRP= 000001   	R$$10F= 000001   	$$    = 000067   	.TPARS  000000RG

. ABS.	000000	   000
      	000626	   001
IMPURE	000012	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  562 WORDS  ( 3 PAGES)
DYNAMIC MEMORY:  2518 WORDS  ( 9 PAGES)
ELAPSED TIME:  00:00:08
[53,10]TPARS,[53,20]TPARS/-SP/CR=[53,30]RSXDC,TPARS
TPARS      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

AM    	= 000033	#4-60      
CR    	= 000015	#4-59      
DOBLNK	  000412 R	 5-136     #6-257     
DOCHAR	  000144 R	 5-141     #5-178     
DODNMB	  000276 R	 5-139     #6-229     
DOENDS	  000076 R	 5-138     #5-149     
DOKEY 	  000424 R	 5-127     #6-264     
DOLAMB	  000156 R	 5-133     #5-185     
DONUMB	  000300 R	 5-134     #6-230     
DORD50	  000266 R	 5-140     #6-223     
DOSTRG	  000270 R	 5-135     #6-224     
DOSUBR	  000220 R	 5-137     #6-206     
DOTRAN	  000156 R	 5-150     #5-186      6-215      6-225      6-253      6-260      6-279     
EXIT  	  000206 R	 5-169     #5-199     
E$$MSG	= 000001	#1-33      
E$$TRP	= 000001	#1-32      
F$$LVL	= 000001	#1-28      
GETSP 	  000574 R	 5-123      5-123      6-257      6-257     #7-314     
GETSTR	  000476 R	 6-224      6-224      6-230      6-230      6-264      6-264     #7-286     
MAXTYP	= 000320	 5-128     #5-145     
M$$HDR	= 000001	#1-34      
NXTRAN	  000102 R	#5-154      5-174      5-179      6-219      6-232      6-252      6-259      6-271      6-275     
                         6-278     
R$$EIS	= 000000	#3-27       4-49      
R$$10F	= 000001	#1-30      
R$$11D	= 000001	#1-29      
R$$20F	= 000001	#1-31      
SPA   	= 000040	#4-61       7-317     
SYNERR	  000134 R	 5-129      5-157     #5-168     
S$$YDF	= ******	 1-1        1-37      
TAB   	= 000011	#4-58       7-319     
TSCHAR	  000140 R	 5-125     #5-173     
TSTAT 	  000010 R	#5-120      5-163      5-194      5-196     
$$    	= 000067	#5-123      5-123     #5-192      5-192     #6-211      6-211     #6-224      6-224     #6-230     
                         6-230     #6-248      6-248     #6-250      6-250     #6-257      6-257     #6-264      6-264     
.DD2CT	= ******  GX	 6-248      6-248     
.OD2CT	= ******  GX	 6-250      6-250     
.PCHAR	  000010 RG	#4-76      *5-180     
.PNUMB	  000006 RG	#4-75      
.PNUMH	  000004 RG	#4-74       6-245     
.PSTCN	  000000 RG	#4-71      *5-120      5-154      5-155     *6-217      6-231     *6-241      6-244      6-270     
                        *7-287     *7-305     
.PSTPT	  000002 RG	#4-72       6-243      6-272     *7-286     
.TPARS	  000000 RG	#5-114      6-211      6-211     
TPARS      CREATED BY  MACRO  ON 14-APR-81 AT 11:15	PAGE 2

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

CALL  		#4-31       5-123      5-192      6-211      6-224      6-230      6-248      6-250      6-257      6-264     
POP   		#4-41      #5-199     #6-218     #6-251     
PUSH  		#4-35      #5-115     #6-208     #6-242     
RETURN		#4-31      #5-200     #7-308     #7-324     
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     
STATE TABLE FOR UFD COMMAND LIN	MACRO M1113  14-APR-81 11:22
TABLE OF CONTENTS

     3-    3	TITLE PAGE
     4-   31	MACRO CALLS AND DEFINITIONS
     4-   49	IMPURE DATA
     5-   55	STATE TABLE FOR PARSER
     6-  136	ACTION ROUTINES FOR THE COMMAND LINE PARSER
STATE TABLE FOR UFD COMMAND LIN	MACRO M1113  14-APR-81 11:22  PAGE 3


      1					.TITLE	STATE TABLE FOR UFD COMMAND LINE
      2
      3					.SBTTL	TITLE PAGE
      4
      5					.IDENT	"V0105"
      6
      7					;                             COPYRIGHT (C) 1975, 1978 BY
      8					;                     DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
      9					;
     10					;       THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE  USED  AND  COPIED
     11					;       ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
     12					;       OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THERE-
     13					;       OF  MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
     14					;       NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
     15					;
     16					;       THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT
     17					;       NOTICE  AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
     18					;       CORPORATION.
     19					;
     20					;       DIGITAL ASSUMES NO RESPONSIBILITY FOR THE  USE  OR  RELIABILITY  OF  ITS
     21					;       SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
     22					;
     23					;
     24					; ANDREW C. GOLDSTEIN  20 JAN 75  20:00
     25
     26						.NLIST	MEB
     27						.NLIST	ME
     28
     29		000000 				R$$EIS=0
STATE TABLE FOR UFD COMMAND LIN	MACRO M1113  14-APR-81 11:22  PAGE 4
MACRO CALLS AND DEFINITIONS

     31					.SBTTL	MACRO CALLS AND DEFINITIONS
     32
     33					; SYSTEM MACRO CALLS
     34
     35						.MCALL	CALL,RETURN,FHDOF$
     36
     37	000000					FHDOF$
     38
     39						.IF	NDF,R$$EIS
     40
     41					.MACRO	SOB	RX,ADDR
     42						DEC	RX
     43						BNE	ADDR
     44					.ENDM	SOB
     45
     46						.ENDC
     47
     48
     49					.SBTTL	IMPURE DATA
     50
     51	000000					.PSECT	IMPURE,D
     52
     53	000000				GRCNT:	.BLKW	1		; GROUP COUNTER FOR PROTECTION PARSE
STATE TABLE FOR UFD COMMAND LIN	MACRO M1113  14-APR-81 11:22  PAGE 5
STATE TABLE FOR PARSER

     55					.SBTTL	STATE TABLE FOR PARSER
     56
     57						.MCALL	ISTAT$,STATE$,TRAN$
     58
     59	000002					ISTAT$	.UFDST,.UFDKT
     60
     61						.GLOBL	.PSTRT
     62
     63					; READ DEVICE AND UNIT NUMBER
     64
     65	000000					STATE$	.PSTRT
     66	000000					TRAN$	$ANY,,SETDV1
     67
     68	000000					STATE$
     69	000000					TRAN$	$ANY,,SETDV2
     70
     71	000000					STATE$
     72	000000					TRAN$	$NUMBR,DEV1,SETUNT
     73	000000					TRAN$	$LAMDA
     74
     75	000000					STATE$	DEV1
     76	000000					TRAN$	':
     77
     78					; READ VOLUME LABEL
     79
     80	000000					STATE$
     81	000000					TRAN$	$STRNG,,SETLAB
     82
     83					; READ UIC
     84
     85	000000					STATE$
     86	000000					TRAN$	'[
     87
     88	000000					STATE$
     89	000000					TRAN$	$NUMBR,,SETGN
     90
     91	000000					STATE$
     92	000000					TRAN$	<',>
     93
     94	000000					STATE$
     95	000000					TRAN$	$NUMBR,,SETPN
     96
     97	000000					STATE$
     98	000000					TRAN$	']
     99
    100					; SCAN FOR OPTIONS AND END OF LINE
    101
    102	000000					STATE$	OPTS
    103	000000					TRAN$	$EOS,$EXIT
    104	000000					TRAN$	'/
    105
    106	000000					STATE$
    107	000000					TRAN$	"ALLOC",ALC
    108	000000					TRAN$	"PRO",PRO
    109
    110					; SET ALLOCATION
    111
STATE TABLE FOR UFD COMMAND LIN	MACRO M1113  14-APR-81 11:22  PAGE 5-1
STATE TABLE FOR PARSER

    112	000000					STATE$	ALC
    113	000000					TRAN$	'=
    114
    115	000000					STATE$
    116	000000					TRAN$	$NUMBR,OPTS,SETALC
    117
    118					; PROTECTION
    119
    120	000000					STATE$	PRO
    121	000000					TRAN$	'=
    122
    123	000000					STATE$
    124	000000					TRAN$	'[,,IGROUP
    125
    126	000000					STATE$	SPRO
    127	000000					TRAN$	'],OPTS,ENDGRP
    128	000000					TRAN$	<',>,SPRO,NXGRP
    129	000000					TRAN$	'R,SPRO,SETRP
    130	000000					TRAN$	'W,SPRO,SETWP
    131	000000					TRAN$	'E,SPRO,SETEP
    132	000000					TRAN$	'D,SPRO,SETDP
    133
    134	000000					STATE$
STATE TABLE FOR UFD COMMAND LIN	MACRO M1113  14-APR-81 11:22  PAGE 6
ACTION ROUTINES FOR THE COMMAND LINE PARSER

    136					.SBTTL	ACTION ROUTINES FOR THE COMMAND LINE PARSER
    137
    138	000000					.PSECT	CODE
    139
    140					; DEVICE NAME CHAR 1
    141
    142	000000	116767 	000000G	000000G	SETDV1:	MOVB	.PCHAR,$UDEV
    143	000006					RETURN
    144
    145					; DEVICE NAME CHAR 2
    146
    147	000010	116767 	000000G	000001G	SETDV2:	MOVB	.PCHAR,$UDEV+1
    148	000016	016767 	000000G	000000C		MOV	$UDEV,$FNB+N.DVNM
    149	000024					RETURN
    150
    151					; UNIT NUMBER
    152
    153	000026	016767 	000000G	000000G	SETUNT:	MOV	.PNUMB,$UUNIT
    154	000034	016767 	000000G	000000C		MOV	$UUNIT,$FNB+N.UNIT
    155	000042					RETURN
    156
    157					; VOLUME LABEL
    158
    159	000044	016767 	000000G	000000G	SETLAB:	MOV	.PSTCN,$UVNML
    160	000052	016767 	000000G	000000G		MOV	.PSTPT,$UVNAM
    161	000060					RETURN
    162
    163					; PPN - GROUP NUMBER
    164
    165	000062	116767 	000000G	000001G	SETGN:	MOVB	.PNUMB,$UUIC+1
    166	000070	105767 	000001G			TSTB	.PNUMB+1	; CHECK IF NUMBER IS IN RANGE
    167	000074	001065 				BNE	SYNERR		; GREATER THAN 377 - OUT
    168	000076					RETURN
    169
    170					; PPN - PROGRAMMER NUMBER
    171
    172	000100	116767 	000000G	000000G	SETPN:	MOVB	.PNUMB,$UUIC
    173	000106	105767 	000001G			TSTB	.PNUMB+1	; CHECK IF NUMBER IS IN RANGE
    174	000112	001056 				BNE	SYNERR		; GREATER THAN 377 - OUT
    175	000114					RETURN
    176
    177					; NUMBER OF ENTRIES TO ALLOCATE
    178
    179	000116	016767 	000000G	000000G	SETALC:	MOV	.PNUMB,$UALL
    180	000124					RETURN
    181
    182					; SET PERMISSIONS
    183					; INITIALIZE
    184
    185	000126	012767 	000004 	000000'	IGROUP:	MOV	#4,GRCNT
    186
    187					; MOVE TO NEXT PERMISSIONS CATEGORY
    188
    189	000134	000261 			NXGRP:	SEC			; FORCE ONES
    190	000136	006067 	000000G			ROR	$UPRO
    191	000142	006267 	000000G			ASR	$UPRO		; SHIFT TO NEXT GROUP
    192	000146	006267 	000000G			ASR	$UPRO
STATE TABLE FOR UFD COMMAND LIN	MACRO M1113  14-APR-81 11:22  PAGE 6-1
ACTION ROUTINES FOR THE COMMAND LINE PARSER

    193	000152	006267 	000000G			ASR	$UPRO
    194	000156	005367 	000000'			DEC	GRCNT		; COUNT GROUPS
    195	000162	002432 				BLT	SYNERR		; TOO MANY IS AN ERROR
    196	000164					RETURN
    197
    198					; SET READ PERMIT
    199
    200	000166	042767 	010000 	000000G	SETRP:	BIC	#FP.RDV*10000,$UPRO
    201	000174					RETURN
    202
    203					; SET WRITE PERMIT
    204
    205	000176	042767 	020000 	000000G	SETWP:	BIC	#FP.WRV*10000,$UPRO
    206	000204					RETURN
    207
    208					; SET EXTEND PERMIT
    209
    210	000206	042767 	040000 	000000G	SETEP:	BIC	#FP.EXT*10000,$UPRO
    211	000214					RETURN
    212
    213					; SET DELETE PERMIT
    214
    215	000216	042767 	100000 	000000G	SETDP:	BIC	#FP.DEL*10000,$UPRO
    216	000224					RETURN
    217
    218					; END OF PROTECTION SPEC
    219
    220	000226	005767 	000000'		ENDGRP:	TST	GRCNT		; CHECK THE GROUP COUNT
    221	000232	001402 				BEQ	10$
    222	000234	000167 	000010 			JMP	SYNERR		; MUST HAVE 4
    223	000240	012737 			10$:	MOV	(PC)+,@(PC)+	; ENABLE PROTECTION ON WRITE ATTRIBUTES
    224	000242	   002 	   002 			.BYTE	2,2
    225	000244	000000G				.WORD	$PRFLG
    226	000246					RETURN
    227
    228					; TO HERE FOR ACTION ROUTINE DETECTED SYNTAX ERRORS
    229
    230	000250	000167 	000000G		SYNERR:	JMP	.SYNER
    231
    232
    233
    234		000001 				.END
STATE TABLE FOR UFD COMMAND LIN	MACRO M1113  14-APR-81 11:22  PAGE 6-2
SYMBOL TABLE

ALC     000062R     003	H.PROJ= 000011   	M.LBSZ= 000007   	SETPN   000100R     005	$SUBXP= 000310
DEV1    000020R     003	H.SCHA= 000015   	M.MAX = 000011   	SETRP   000166R     005	$UALL = ****** GX
ENDGRP  000226R     005	H.UCHA= 000014   	M.RTRV= 000012   	SETUNT  000026R     005	$UDEV = ****** GX
E$$MSG= 000001   	H.UFAT= 000016   	M.USE = 000010   	SETWP   000176R     005	$UPRO = ****** GX
E$$TRP= 000001   	IGROUP  000126R     005	NXGRP   000134R     005	SPRO    000100R     003	$UUIC = ****** GX
FP.DEL= 000010   	I.CRDT= 000031   	N.DVNM= ****** GX	SYNERR  000250R     005	$UUNIT= ****** GX
FP.EXT= 000004   	I.CRTI= 000040   	N.UNIT= ****** GX	S.HDHD= 000056   	$UVNAM= ****** GX
FP.RAT= 000001   	I.DASZ= 000007   	OPTS    000044R     003	S.IDHD= 000056   	$UVNML= ****** GX
FP.RDV= 000001   	I.EXDT= 000046   	PRO     000072R     003	S.MPHD= 000012   	$$$FLG= 177777
FP.WRV= 000002   	I.FNAM= 000000   	R$$EIS= 000000   	UC.CON= 000200   	$$$KEY= 000001
F$$LVL= 000001   	I.FTYP= 000006   	R$$10F= 000001   	UC.DLK= 000100   	$$$STA= 000100R     003
GRCNT   000000R     002	I.FVER= 000010   	R$$11D= 000001   	$ANY  = 000320   	$$$TMP= 000010R     004
H.CKSM= 000776   	I.RVDT= 000014   	R$$20F= 000001   	$BLANK= 000306   	.PCHAR= ****** GX
H.FCHA= 000014   	I.RVNO= 000012   	SC.BAD= 000100   	$DNUMB= 000314   	.PNUMB= ****** GX
H.FLEV= 000006   	I.RVTI= 000023   	SC.MDL= 000200   	$EOS  = 000312   	.PSTCN= ****** GX
H.FNUM= 000002   	I.TISZ= 000006   	SETALC  000116R     005	$EXIT = 000000   	.PSTPT= ****** GX
H.FOWN= 000010   	M$$HDR= 000001   	SETDP   000216R     005	$FNB  = ****** GX	.PSTRT  000000RG    003
H.FPRO= 000012   	M.CTSZ= 000006   	SETDV1  000000R     005	$LAMDA= 000300   	.SYNER= ****** GX
H.FSEQ= 000004   	M.EFNU= 000002   	SETDV2  000010R     005	$NUMBR= 000302   	.UFDKT  000000RG    004
H.IDOF= 000000   	M.EFSQ= 000004   	SETEP   000206R     005	$PRFLG= ****** GX	.UFDST  000000RG    003
H.MPOF= 000001   	M.ERVN= 000001   	SETGN   000062R     005	$RAD50= 000316   	...GBL= 000000
H.PROG= 000010   	M.ESQN= 000000   	SETLAB  000044R     005	$STRNG= 000304   	...TPC= 000012

. ABS.	000000	   000
      	000000	   001
IMPURE	000002	   002
$STATE	000144	   003
$KTAB 	000020	   004
CODE  	000254	   005
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2073 WORDS  ( 9 PAGES)
DYNAMIC MEMORY:  3574 WORDS  ( 13 PAGES)
ELAPSED TIME:  00:00:32
[53,10]UFDPTB,[53,20]UFDPTB/-SP/CR=[53,30]RSXDC,UFDPTB
UFDPTB     CREATED BY  MACRO  ON 14-APR-81 AT 11:22	PAGE 1

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

ALC   	  000062 R	 5-107     #5-112     
DEV1  	  000020 R	 5-72      #5-75      
ENDGRP	  000226 R	 5-128     #6-220     
E$$MSG	= 000001	#1-33      
E$$TRP	= 000001	#1-32      
FP.DEL	= 000010	 6-215     
FP.EXT	= 000004	 6-210     
FP.RDV	= 000001	 6-200     
FP.WRV	= 000002	 6-205     
F$$LVL	= 000001	#1-28      
GRCNT 	  000000 R	#4-53      *6-185     *6-194      6-220     
IGROUP	  000126 R	 5-126     #6-185     
M$$HDR	= 000001	#1-34      
NXGRP 	  000134 R	 5-129     #6-189     
N.DVNM	= ******  GX	*6-148     
N.UNIT	= ******  GX	*6-154     
OPTS  	  000044 R	#5-102      5-116      5-127     
PRO   	  000072 R	 5-108     #5-120     
R$$EIS	= 000000	#3-29       4-39      
R$$10F	= 000001	#1-30      
R$$11D	= 000001	#1-29      
R$$20F	= 000001	#1-31      
SETALC	  000116 R	 5-120     #6-179     
SETDP 	  000216 R	 5-134     #6-215     
SETDV1	  000000 R	 5-68      #6-142     
SETDV2	  000010 R	 5-71      #6-147     
SETEP 	  000206 R	 5-132     #6-210     
SETGN 	  000062 R	 5-91      #6-165     
SETLAB	  000044 R	 5-85      #6-159     
SETPN 	  000100 R	 5-97      #6-172     
SETRP 	  000166 R	 5-130     #6-200     
SETUNT	  000026 R	 5-73      #6-153     
SETWP 	  000176 R	 5-131     #6-205     
SPRO  	  000100 R	#5-126      5-128      5-129      5-130      5-131      5-132     
SYNERR	  000250 R	 6-167      6-174      6-195      6-222     #6-230     
S$$YDF	= ******	 1-1        1-37      
$ANY  	= 000320	#5-59       5-68       5-71      
$BLANK	= 000306	#5-59      
$DNUMB	= 000314	#5-59      
$EOS  	= 000312	#5-59       5-104     
$EXIT 	= 000000	#5-59       5-103     
$FNB  	= ******  GX	*6-148     *6-154     
$LAMDA	= 000300	#5-59       5-75      
$NUMBR	= 000302	#5-59       5-73       5-91       5-97       5-120     
$PRFLG	= ******  GX	 6-225     
$RAD50	= 000316	#5-59      
$RONLY	= ******	 5-59       5-59      
$STRNG	= 000304	#5-59       5-85      
$SUBXP	= 000310	#5-59      
$UALL 	= ******  GX	*6-179     
$UDEV 	= ******  GX	*6-142     *6-147      6-148     
$UPRO 	= ******  GX	*6-190     *6-191     *6-192     *6-193     *6-200     *6-205     *6-210     *6-215     
UFDPTB     CREATED BY  MACRO  ON 14-APR-81 AT 11:22	PAGE 2

SYMBOL CROSS REFERENCE                                  CREF         

SYMBOL	VALUE		REFERENCES

$UUIC 	= ******  GX	*6-165     *6-172     
$UUNIT	= ******  GX	*6-153      6-154     
$UVNAM	= ******  GX	*6-160     
$UVNML	= ******  GX	*6-159     
$$$FLG	= 177777	#5-59       5-65      #5-65       5-65      #5-65      #5-65       5-66      #5-66       5-66      
                        #5-66       5-68      #5-68       5-68       5-68       5-68       5-68       5-68       5-68      
                        #5-68      #5-68       5-69      #5-69       5-69      #5-69       5-71      #5-71       5-71      
                         5-71       5-71       5-71       5-71       5-71      #5-71      #5-71       5-72      #5-72      
                         5-72      #5-72       5-72      #5-72       5-73       5-73       5-73       5-73       5-73      
                        #5-73       5-75      #5-75       5-75       5-75       5-75       5-75       5-75       5-75      
                        #5-75      #5-75       5-76      #5-76       5-80      #5-80       5-80       5-80       5-80      
                         5-80       5-80       5-80      #5-80      #5-80       5-81      #5-81       5-81      #5-81      
                         5-85      #5-85       5-85       5-85       5-85       5-85       5-85       5-85      #5-85      
                        #5-85       5-86      #5-86       5-88      #5-88       5-88       5-88       5-88       5-88      
                         5-88       5-88      #5-88      #5-88       5-89      #5-89       5-89      #5-89       5-91      
                        #5-91       5-91       5-91       5-91       5-91       5-91       5-91      #5-91      #5-91      
                         5-92      #5-92       5-94      #5-94       5-94       5-94       5-94       5-94       5-94      
                         5-94      #5-94      #5-94       5-95      #5-95       5-95      #5-95       5-97      #5-97      
                         5-97       5-97       5-97       5-97       5-97       5-97      #5-97      #5-97       5-98      
                        #5-98       5-102     #5-102      5-102      5-102      5-102      5-102      5-102      5-102     
                        #5-102     #5-102      5-103     #5-103      5-103     #5-103      5-104      5-104      5-104     
                         5-104      5-104     #5-104      5-106     #5-106      5-106      5-106      5-106      5-106     
                         5-106      5-106     #5-106     #5-106      5-107     #5-107      5-107     #5-107      5-108     
                         5-108      5-108      5-108      5-108     #5-108      5-108     #5-108      5-112     #5-112     
                         5-112      5-112      5-112      5-112      5-112     #5-112     #5-112      5-113     #5-113     
                         5-115     #5-115      5-115      5-115      5-115      5-115      5-115      5-115     #5-115     
                        #5-115      5-116     #5-116      5-116     #5-116      5-116     #5-116      5-120     #5-120     
                         5-120      5-120      5-120      5-120      5-120     #5-120     #5-120      5-121     #5-121     
                         5-123     #5-123      5-123      5-123      5-123      5-123      5-123      5-123     #5-123     
                        #5-123      5-124     #5-124      5-124     #5-124      5-126     #5-126      5-126      5-126     
                         5-126      5-126      5-126      5-126     #5-126     #5-126      5-127     #5-127      5-127     
                        #5-127      5-127     #5-127      5-128      5-128      5-128      5-128      5-128     #5-128     
                         5-128     #5-128      5-128     #5-128      5-129      5-129      5-129      5-129      5-129     
                        #5-129      5-129     #5-129      5-129     #5-129      5-130      5-130      5-130      5-130     
                         5-130     #5-130      5-130     #5-130      5-130     #5-130      5-131      5-131      5-131     
                         5-131      5-131     #5-131      5-131     #5-131      5-131     #5-131      5-132      5-132     
                         5-132      5-132      5-132     #5-132      5-132     #5-132      5-132     #5-132      5-134     
                        #5-134      5-134      5-134      5-134      5-134      5-134     #5-134     #5-134     
$$$KEY	= 000001	#5-59       5-107     #5-107      5-107      5-108      5-108     #5-108      5-108      5-112     
$$$STA	= 000100 R	#5-72       5-73      #5-103      5-104     #5-107      5-108     #5-108      5-112     #5-116     
                         5-120     #5-127      5-128     #5-128      5-129     #5-129      5-130     #5-130      5-131     
                        #5-131      5-132     #5-132      5-134     
$$$TMP	= 000010 R	#5-107      5-107      5-107     #5-108      5-108      5-108     
.PCHAR	= ******  GX	 6-142      6-147     
.PNUMB	= ******  GX	 6-153      6-165      6-166      6-172      6-173      6-179     
.PSTCN	= ******  GX	 6-159     
.PSTPT	= ******  GX	 6-160     
.PSTRT	  000000 RG	 5-61      #5-65      
.SYNER	= ******  GX	 6-230     
.UFDKT	  000000 RG	#5-59      
.UFDST	  000000 RG	#5-59      
UFDPTB     CREATED BY  MACRO  ON 14-APR-81 AT 11:22	PAGE 3

MACRO CROSS REFERENCE                                   CREF         

MACRO NAME	REFERENCES

CALL  		#4-35      
FHDOF$		#4-35      #4-37      
ISTAT$		#5-57       5-59      
MTRAN$		#5-59      #5-65      #5-66      #5-68      #5-69      #5-71      #5-72      #5-73      #5-75      #5-76      
                #5-80      #5-81      #5-85      #5-86      #5-88      #5-89      #5-91      #5-92      #5-94      #5-95      
                #5-97      #5-98      #5-102     #5-103     #5-104     #5-106     #5-107     #5-108     #5-112     #5-113     
                #5-115     #5-116     #5-120     #5-121     #5-123     #5-124     #5-126     #5-127     #5-128     #5-129     
                #5-130     #5-131     #5-132     #5-134     
RETURN		#4-35      #6-143     #6-149     #6-155     #6-161     #6-168     #6-175     #6-180     #6-196     #6-201     
                #6-206     #6-211     #6-216     #6-226     
STATE$		#5-57       5-65       5-68       5-71       5-75       5-80       5-85       5-88       5-91       5-94      
                 5-97       5-102      5-106      5-112      5-115      5-120      5-123      5-126      5-134     
TRAN$ 		#5-57      #5-66      #5-69      #5-72      #5-73      #5-76      #5-81      #5-86      #5-89      #5-92      
                #5-95      #5-98      #5-103     #5-104     #5-107     #5-108     #5-113     #5-116     #5-121     #5-124     
                #5-127     #5-128     #5-129     #5-130     #5-131     #5-132     
$$$ACT		#5-66      #5-68      #5-69      #5-71      #5-72      #5-73      #5-81      #5-85      #5-89      #5-91      
                #5-95      #5-97      #5-116     #5-120     #5-124     #5-126     #5-127     #5-128     #5-128     #5-129     
                #5-129     #5-130     #5-130     #5-131     #5-131     #5-132     #5-132     #5-134     
$$$TYP		#5-66       5-68      #5-69       5-71      #5-72       5-73      #5-73       5-75      #5-76       5-80      
                #5-81       5-85      #5-86       5-88      #5-89       5-91      #5-92       5-94      #5-95       5-97      
                #5-98       5-102     #5-103      5-104     #5-104      5-106     #5-107      5-108     #5-108      5-112     
                #5-113      5-115     #5-116      5-120     #5-121      5-123     #5-124      5-126     #5-127      5-128     
                #5-128      5-129     #5-129      5-130     #5-130      5-131     #5-131      5-132     #5-132      5-134