TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   0

TABLE OF CONTENTS   



   (2)      92  DECLARATIONS

   (3)     110  TST$PARSE - COMMAND PARSE ROUTINE

   (4)     238  PARSE ROUTINE--PARAMETER EVALUATION AND DEFAULT

   (5)     346  PARSE ROUTINE--QUALIFIER EVALUATION

   (6)     402  PARSE ROUTINE--QUALIFIER VALUE EVALUATION

   (7)     599  TST$NEXTCHAR - EXAMINE NEXT CHARACTER

   (8)     680  TST$MATCH - KEYWORD MATCH ROUTINE

   (9)     738  TST$CVTU_DTB - CONVERT UNSIGNED DECIMAL TO BINA

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   1

X0.1-2                                                                                                                           (1)



                                     0000     1 	.TITLE	TST$DTSPARSE - PARSE DTS COMMAND LINE

                                     0000     2 	.IDENT	/X0.1-2/

                                     0000     3 

                                     0000     4 ;

                                     0000     5 ;			  COPYRIGHT (c) 1977, 1978 BY

                                     0000     6 ;	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.

                                     0000     7 ;

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

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

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

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

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

                                     0000    13 ; TRANSFERRED.

                                     0000    14 ;

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

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

                                     0000    17 ; CORPORATION.

                                     0000    18 ;

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

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

                                     0000    21 ;

                                     0000    22 

                                     0000    23 ;++

                                     0000    24 ; FACILITY: DTS/DTR DECNET TEST PACKAGE

                                     0000    25 ;

                                     0000    26 ; ABSTRACT: THIS MODULE PARSES A COMMAND LINE INPUT BY DTS.

                                     0000    27 ;

                                     0000    28 ; ENVIRONMENT: DTS/DTR RUN IN USER MODE AND REQUIRE NETWORK PRIVILEGE.

                                     0000    29 ;

                                     0000    30 ; AUTHOR: JAMES A. KRYCKA,	CREATION DATE: 11-AUG-77

                                     0000    31 ;

                                     0000    32 ; MODIFICATIONS:

                                     0000    33 ;

                                     0000    34 ;--

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   2

X0.1-2          DECLARATIONS                                                                                                     (2)



                                     0000    36 	.SBTTL	DECLARATIONS

                                     0000    37 

                                     0000    38 ;

                                     0000    39 ; INCLUDE FILES:

                                     0000    40 ;

                                     0000    41 	FLGDEF				; DEFINE COMMAND PARSE FLAGS

                                     0000    42 	CMDDEF				; DEFINE COMMAND LANGUAGE SYMBOLS

                                     0000    43 	VLDDEF				; DEFINE VALID QUALIFIER FLAGS

                                     0000    44 	.IIF NE	K_LIST_MEB, .LIST MEB	; DEFINED IN DTPREFIX.MAR

                                     0000    45 ;

                                     0000    46 ; EQUATED SYMBOLS:

                                     0000    47 ;

                                     0000    48 ;	NONE

                                     0000    49 ;

                                     0000    50 ; OWN STORAGE:

                                     0000    51 ;

                                     0000    52 ;	NONE

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   3

X0.1-2          TST$PARSE - COMMAND PARSE ROUTINE                                                                                (3)



                                     0000    54 	.SBTTL	TST$PARSE - COMMAND PARSE ROUTINE

                                 00000000    55 	.PSECT	TST$CODE	NOWRT

                                     0000    56 P::					; SYMBOL FOR DEBUGGING PURPOSES

                                     0000    57 

                                     0000    58 ;++

                                     0000    59 ; FUNCTIONAL DESCRIPTION:

                                     0000    60 ;

                                     0000    61 ;	NONE

                                     0000    62 ;

                                     0000    63 ; CALLING SEQUENCE:

                                     0000    64 ;

                                     0000    65 ;	CALL	#0,TST$PARSE

                                     0000    66 ;

                                     0000    67 ; INPUT PARAMETERS:

                                     0000    68 ;

                                     0000    69 ;	R8	THE ADDRESS OF THE NEXT CHARACTER IN THE BUFFER

                                     0000    70 ;	R9	THE ADDRESS OF THE END OF THE BUFFER + 1

                                     0000    71 ;

                                     0000    72 ; IMPLICIT INPUTS:

                                     0000    73 ;

                                     0000    74 ;	NONE

                                     0000    75 ;

                                     0000    76 ; OUTPUT PARAMETERS:

                                     0000    77 ;

                                     0000    78 ;	R0-R9	DESTROYED

                                     0000    79 ;	R10	COMMAND PARAMETER VALUE (TESTTYPE)

                                     0000    80 ;	R11	UPDATED PARSE FLAGS

                                     0000    81 ;

                                     0000    82 ; IMPLICIT OUTPUTS:

                                     0000    83 ;

                                     0000    84 ;	TST$GB_BACK

                                     0000    85 ;	TST$GB_DISPLAY

                                     0000    86 ;	TST$GB_FLOW

                                     0000    87 ;	TST$GB_NAK

                                     0000    88 ;	TST$GT_NODENAME

                                     0000    89 ;	TST$GB_PRINT

                                     0000    90 ;	TST$GB_RETURN

                                     0000    91 ;	TST$GB_RQUEUE

                                     0000    92 ;	TST$GL_SECONDS

                                     0000    93 ;	TST$GW_SIZE

                                     0000    94 ;	TST$GL_SPEED

                                     0000    95 ;	TST$GB_SQUEUE

                                     0000    96 ;	TST$GB_TEST

                                     0000    97 ;	TST$GB_TYPE

                                     0000    98 ;

                                     0000    99 ; COMPLETION CODES:

                                     0000   100 ;

                                     0000   101 ;	NONE

                                     0000   102 ;

                                     0000   103 ; SIDE EFFECTS:

                                     0000   104 ;

                                     0000   105 ;	NONE

                                     0000   106 ;

                                     0000   107 ;--

                                     0000   108 

                               0000' 0000   109 	.ENTRY	TST$PARSE,^M<> 		; ENTRY POINT

                                     0002   110 

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   4

X0.1-2          TST$PARSE - COMMAND PARSE ROUTINE                                                                                (3)



                                     0002   111 ;

                                     0002   112 ; DETERMINE IF THE NEXT SYNTACTICAL ELEMENT OF THE COMMAND LINE IS A

                                     0002   113 ; PARAMETER OR QUALIFIER, OR IF THE END OF THE INPUT LINE HAS BEEN

                                     0002   114 ; REACHED.

                                     0002   115 ;

                                     0002   116 

                                     0002   117 NEXT_ELEMENT:				;

                          02F7   30  0002   118 	BSBW	TST$NEXTCHAR		; GET CHARACTER

                                     0005   119 REEXAMINE_CHAR:				;

                                     0005   120 	$CASEB	SELECTOR=R0,DISPL=<-	; CHARACTER:

                                     0005   121 			END_OF_LINE-	;  END-OF-LINE

                                     0005   122 			QUAL-		;  SLASH

                                     0005   123 			PARSE_ERROR-	;  EQUAL_SIGN OR COLON

                                     0005   124 			SPACE_OR_TAB-	;  SPACE OR TAB

                                     0005   125 			PARAM-		;  NONE OF THE ABOVE

                                     0005   126 	>				;

                                     0013   127 

                                     0013   128 ;

                                     0013   129 ; A SPACE OR TAB HAS BEEN ENCOUNTERED. THIS IMPLIES THAT A QUALIFIER (/)

                                     0013   130 ; CAN NOT IMMEDIATELY FOLLOW. ANOTHER SPACE OR TAB, A PARAMETER, OR A

                                     0013   131 ; QUALIFIER MAY FOLLOW.

                                     0013   132 ;

                                     0013   133 

                                     0013   134 SPACE_OR_TAB:				;

            5B            08     88  0013   135 	BISB2	#FLG_M_DELIMITER,R11	; SET DELIMITER FLAG

                          EA     11  0016   136 	BRB	NEXT_ELEMENT		; CONTINUE

                                     0018   137 

                                     0018   138 ;

                                     0018   139 ; A QUALIFIER FOLLOWS. DISCARD THE SLASH DELIMITER AND PROCEED.

                                     0018   140 ;

                                     0018   141 

                                     0018   142 QUAL:					;

            5B            03     E0  0018   143 	BBS	#FLG_V_DELIMITER,R11,-	; SLASH CANNOT FOLLOW

                                     001B       

                          1E'        001B   144 		PARSE_ERROR		;  SPACE OR TAB

                          00FD   30  001C   145 	BSBW	QUALIFIER		; PROCESS QUALIFIER

                          E4     11  001F   146 	BRB	REEXAMINE_CHAR		; PROCESS QUALIFIER DELIMITER

                                     0021   147 

                                     0021   148 ;

                                     0021   149 ; A PARAMETER FOLLOWS. THE COMMAND CAN HAVE ONLY ONE PARAMETER.

                                     0021   150 ;

                                     0021   151 

                                     0021   152 PARAM:					;

            5B            02     E2  0021   153 	BBSS	#FLG_V_PARAMETER,R11,-	; ERROR IF NOT FIRST PARAMETER

                                     0024       

                          15'        0024   154 		PARSE_ERROR		;

            5B            08     8A  0025   155 	BICB2	#FLG_M_DELIMITER,R11	; CLEAR DELIMITER FLAG

                          14     10  0028   156 	BSBB	PARAMETER		; PROCESS PARAMETER

                          D9     11  002A   157 	BRB	REEXAMINE_CHAR		; PROCESS PARAMETER DELIMITER

                                     002C   158 

                                     002C   159 ;

                                     002C   160 ; THE END OF THE LINE HAS BEEN REACHED. SET FLAG IF THE COMMAND LINE

                                     002C   161 ; REQUIRES ANOTHER LINE OF INPUT; OTHERWISE, DETERMINE WHETHER THE

                                     002C   162 ; REQUIRED PARAMETER HAS BEEN RECEIVED.

                                     002C   163 ;

                                     002C   164 

                                     002C   165 END_OF_LINE:				;

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   5

X0.1-2          TST$PARSE - COMMAND PARSE ROUTINE                                                                                (3)



            2D            51     91  002C   166 	CMPB	R1,#^A/-/		; IS COMMAND LINE CONTINUED?

                          05     13  002F   167 	BEQLU	10$			; YES

            5B            02     E5  0031   168 	BBCC	#FLG_V_PARAMETER,R11,-	; IT IS AN ERROR IF NO

                                     0034       

                          05'        0034   169 		PARSE_ERROR		;  PARAMETER HAS BEEN PROCESSED

                                 04  0035   170 	RET				; EXIT TO DTSMAIN

            5B            02     88  0036   171 10$:	BISB2	#FLG_M_MULTILINE,R11	; SET CONTINUATION FLAG

                                 04  0039   172 	RET				; EXIT TO DTSMAIN

                                     003A   173 

                                     003A   174 ;

                                     003A   175 ; AN ERROR HAS BEEN ENCOUNTERED DURING COMMAND LINE PARSING.

                                     003A   176 ;

                                     003A   177 

                                     003A   178 PARSE_ERROR:				; CONTROL POINT

            5B            01     88  003A   179 	BISB2	#FLG_M_PARSERROR,R11	; SET PARSE ERROR FLAG

                                 04  003D   180 	RET				; EXIT TO DTSMAIN

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   6

X0.1-2          PARSE ROUTINE--PARAMETER EVALUATION AND DEFAULT                                                                  (4)



                                     003E   182 	.SBTTL	PARSE ROUTINE--PARAMETER EVALUATION AND DEFAULTING

                                     003E   183 

                                     003E   184 ;+

                                     003E   185 ; PARAMETER IS A SPECIAL PURPOSE SUBROUTINE TO PARSE THE COMMAND PARAMETER

                                     003E   186 ; AND TO APPLY PARAMETER QUALIFIER DEFUALTS. THE PARAMETER STRING IS

                                     003E   187 ; STORED IN TST$GT_KEYWORD.

                                     003E   188 ;-

                                     003E   189 

                                     003E   190 PARAMETER:				; CONTROL POINT

            52       0000'CF     DE  003E   191 	MOVAL	W^TST$GT_KEYWORD,R2	; GET ADDRESS OF BUFFER

            62   20202020 8F     D0  0043   192 	MOVL	#^A/    /,(R2)		; FILL KEYWORD STRING WITH SPACES

                          53     D4  004A   193 	CLRL	R3			; ZERO CHARACTER COUNT

                          11     11  004C   194 	BRB	PARAM_CHAR		; STORE FIRST CHARACTER

                                     004E   195 PARAM_LOOP:				;

                          02AB   30  004E   196 	BSBW	TST$NEXTCHAR		; GET NEXT CHARACTER

                                     0051   197 	$CASEB	SELECTOR=R0,DISPL=<-	; CHARACTER:

                                     0051   198 			PARAM_DELIMITER- ; END-OF-LINE

                                     0051   199 			PARAM_DELIMITER- ; SLASH

                                     0051   200 			PARSE_ERROR-	;  EQUAL_SIGN OR COLON

                                     0051   201 			PARAM_DELIMITER- ; SPACE OR TAB

                                     0051   202 			PARAM_CHAR-	;  NONE OF THE ABOVE

                                     0051   203 	>				;

                                     005F   204 PARAM_CHAR:				;

            04            53     D1  005F   205 	CMPL	R3,#4			; STORE ONLY FIRST 4 CHARACTERS

                          EA     13  0062   206 	BEQLU	PARAM_LOOP		; IGNORE THIS CHARACTER

            82            51     90  0064   207 	MOVB	R1,(R2)+		; STORE CHARACTER

                          53     D6  0067   208 	INCL	R3			; INCREMENT CHARACTER COUNT

                          E3     11  0069   209 	BRB	PARAM_LOOP		; CONTINUE

                                     006B   210 PARAM_DELIMITER:			;

            54       0000'CF     DE  006B   211 	MOVAL	W^TST$AZ_PARAM,R4	; GET ADDRESS OF KEYWORD TABLE

            56       0000'CF     DE  0070   212 	MOVAL	W^TST$GT_KEYWORD,R6	; GET ADDRESS OF STRING TO MATCH

                          02BC   30  0075   213 	BSBW	TST$MATCH		; FIND TABLE INDEX OF KEYWORD

       0000'CF            55     F6  0078   214 	CVTLB	R5,W^TST$GB_TEST	; UPDATE TESTTYPE

            5A            55     D0  007D   215 	MOVL	R5,R10			; SAVE IN R10 AS RETURN VALUE!!!

                                     0080   216 

                                     0080   217 ;

                                     0080   218 ; APPLY PARAMETER QUALIFIER DEFAULTS (NOT COMMAND QUALIFIER DEFAULTS)

                                     0080   219 ; AND DENOTE VALID (PERMITTED) QUALIFIIERS FOR THE COMMAND.

                                     0080   220 ;

                                     0080   221 

                                     0080   222 	$CASEB	SELECTOR=R10,DISPL=<-	; TEST:

                                     0080   223 			CONNTEST-	;  CONNECT TEST

                                     0080   224 			DATATEST-	;  DATA TEST

                                     0080   225 			DISCTEST-	;  DISCONNECT TEST

                                     0080   226 			INTETEST-	;  INTERRUPT TEST

                                     0080   227 			MISCTEST-	;  MISCELLANEOUS TEST

                                     0080   228 	>				;

                                     008E   229 CONNTEST:					; DEFAULTS FOR:

       0000'CF            00     90  008E   230 	MOVB	#DFT_K_RETURN_CO,W^TST$GB_RETURN ; RETURN QUALIFIER

       0000'CF            01     90  0093   231 	MOVB	#DFT_K_TYPE_CO,W^TST$GB_TYPE	; TYPE QUALIFIER

                                 C8  0098   232 	BISL2	#VLD_M_NORETURN-	; DENOTE VALID QUALIFIERS:

                                     0099   233 		!VLD_M_RETURN-		;

                                     0099   234 		!VLD_M_TYPE,-		;

       0000'CF   00409000 8F         0099   235 		W^TST$GL_VALID		;

                                 05  00A1   236 	RSB				; EXIT

                                     00A2   237 DATATEST:					; DEFAULTS FOR:

       0000'CF            00     90  00A2   238 	MOVB	#DFT_K_BACK,W^TST$GB_BACK	; BACK PRESSURE CONTROL

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   7

X0.1-2          PARSE ROUTINE--PARAMETER EVALUATION AND DEFAULT                                                                  (4)



       0000'CF            02     90  00A7   239 	MOVB	#DFT_K_FLOW,W^TST$GB_FLOW	; FLOW CONTROL

       0000'CF            00     90  00AC   240 	MOVB	#DFT_K_NAK,W^TST$GB_NAK		; NAK CONTROL

       0000'CF            01     90  00B1   241 	MOVB	#DFT_K_RQUEUE_DA,W^TST$GB_RQUEUE ; DTR QUEUE COUNT

       0000'CF       0080 8F     B0  00B6   242 	MOVW	#DFT_K_SIZE_DA,W^TST$GW_SIZE	; MESSAGE SIZE

       0000'CF            01     90  00BD   243 	MOVB	#DFT_K_SQUEUE_DA,W^TST$GB_SQUEUE ; DTS QUEUE COUNT

       0000'CF            1E     D0  00C2   244 	MOVL	#DFT_K_TIME_DA,W^TST$GL_SECONDS	; DATA TEST DURATION

       0000'CF            00     90  00C7   245 	MOVB	#DFT_K_TYPE_DA,W^TST$GB_TYPE	; TYPE QUALIFIER

                                 C8  00CC   246 	BISL2	#VLD_M_BACK-		; DENOTE VALID QUALIFIERS:

                                     00CD   247 		!VLD_M_FLOW-		;

                                     00CD   248 		!VLD_M_HOURS-		;

                                     00CD   249 		!VLD_M_MINUTES-		;

                                     00CD   250 		!VLD_M_NAK-		;

                                     00CD   251 		!VLD_M_NOBACK-		;

                                     00CD   252 		!VLD_M_NOFLOW-		;

                                     00CD   253 		!VLD_M_NONAK-		;

                                     00CD   254 		!VLD_M_RQUEUE-		;

                                     00CD   255 		!VLD_M_SECONDS-		;

                                     00CD   256 		!VLD_M_SIZE-		;

                                     00CD   257 		!VLD_M_SQUEUE-		;

                                     00CD   258 		!VLD_M_TYPE,-		;

       0000'CF   0057067D 8F         00CD   259 		W^TST$GL_VALID		;

                                 05  00D5   260 		RSB			; EXIT

                                     00D6   261 DISCTEST:					; DEFAULTS FOR:

       0000'CF            00     90  00D6   262 	MOVB	#DFT_K_RETURN_DI,W^TST$GB_RETURN ; RETURN QUALIFIER

       0000'CF            01     90  00DB   263 	MOVB	#DFT_K_TYPE_DI,W^TST$GB_TYPE	; TYPE QUALIFIER

                                 C8  00E0   264 	BISL2	#VLD_M_NORETURN-	; DENOTE VALID QUALIFIERS:

                                     00E1   265 		!VLD_M_RETURN-		;

                                     00E1   266 		!VLD_M_TYPE,-		;

       0000'CF   00409000 8F         00E1   267 		W^TST$GL_VALID		;

                                 05  00E9   268 		RSB			; EXIT

                                     00EA   269 INTETEST:					; DEFAULTS FOR:

       0000'CF            01     90  00EA   270 	MOVB	#DFT_K_RQUEUE_IN,W^TST$GB_RQUEUE ; DTR QUEUE COUNT

       0000'CF            10     B0  00EF   271 	MOVW	#DFT_K_SIZE_IN,W^TST$GW_SIZE	; MESSAGE SIZE

       0000'CF            01     90  00F4   272 	MOVB	#DFT_K_SQUEUE_IN,W^TST$GB_SQUEUE ; DTS QUEUE COUNT

       0000'CF            1E     D0  00F9   273 	MOVL	#DFT_K_TIME_IN,W^TST$GL_SECONDS	; INTERRUPT TEST DURATION

       0000'CF            00     90  00FE   274 	MOVB	#DFT_K_TYPE_IN,W^TST$GB_TYPE	; TYPE QUALIFIER

                                 C8  0103   275 	BISL2	#VLD_M_HOURS-		; DENOTE VALID QUALIFIERS:

                                     0104   276 		!VLD_M_MINUTES-		;

                                     0104   277 		!VLD_M_RQUEUE-		;

                                     0104   278 		!VLD_M_SECONDS-		;

                                     0104   279 		!VLD_M_SIZE-		;

                                     0104   280 		!VLD_M_SQUEUE-		;

                                     0104   281 		!VLD_M_TYPE,-		;

       0000'CF   00570018 8F         0104   282 		W^TST$GL_VALID		;

                                 05  010C   283 		RSB			; EXIT

                                     010D   284 MISCTEST:					; DEFAULTS FOR:

       0000'CF            00     90  010D   285 	MOVB	#DFT_K_TYPE_MI,W^TST$GB_TYPE	; TYPE QUALIFIER

                                 C8  0112   286 	BISL2	#VLD_M_TYPE,-		; DENOTE VALID QUALIFIERS:

       0000'CF   00400000 8F         0113   287 		W^TST$GL_VALID		;

                                 05  011B   288 	RSB				; EXIT

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   8

X0.1-2          PARSE ROUTINE--QUALIFIER EVALUATION                                                                              (5)



                                     011C   290 	.SBTTL	PARSE ROUTINE--QUALIFIER EVALUATION

                                     011C   291 ;+

                                     011C   292 ; QUALIFIER IS A SPECIAL PURPOSE SUBROUTINE TO PARSE A COMMAND QUALIFIER OR

                                     011C   293 ; A PARAMETER QUALIFIER. THE QUALIFIER STRING IS STORED IN TST$GT_KEYWORD

                                     011C   294 ; AND THE ASSOCIATED QUALIFIER VALUE (IF ANY) IS STORED IN TST$GT_VALUE.

                                     011C   295 ;-

                                     011C   296 

                                     011C   297 QUALIFIER:				; CONTROL POINT

                                     011C   298 	FILLBUF	DST=W^TST$GT_KEYWORD-	; FILL KEYWORD AND QUALIFIER

                                     011C   299 		SIZE=#12-		;  VALUE STRINGS WITH SPACES

                                     011C   300 		CHAR=<#^A/ />		;  NOTE R0-R5 ARE DESTROYED!

            52       0000'CF     DE  0125   301 	MOVAL	W^TST$GT_KEYWORD,R2	; GET ADDRESS OF BUFFER

                          53     D4  012A   302 	CLRL	R3			; ZERO CHARACTER COUNT

                                     012C   303 QUAL_LOOP:				;

                          01CD   30  012C   304 	BSBW	TST$NEXTCHAR		; GET NEXT CHARACTER

                                     012F   305 QUAL_REEXAMINE:				;

                                     012F   306 	$CASEB	SELECTOR=R0,DISPL=<-	; CHARACTER:

                                     012F   307 			QUAL_DELIMITER-	;  END-OF-LINE

                                     012F   308 			QUAL_DELIMITER-	;  SLASH

                                     012F   309 			QUAL_VALUE-	;  EQUAL_SIGN OR COLON

                                     012F   310 			QUAL_DELIMITER-	;  SPACE OR TAB

                                     012F   311 			QUAL_CHAR-	;  NONE OF THE ABOVE

                                     012F   312 	>				;

                                     013D   313 QUAL_VALUE:				; DISCARD THE EQUAL_SIGN OR COLON

            52       0000'CF     DE  013D   314 	MOVAL	W^TST$GT_VALUE,R2	; GET ADDRESS OF QUALIFIER VALUE

                          53     D4  0142   315 	CLRL	R3			; ZERO CHARACTER COUNT

                                     0144   316 VALUE_LOOP:				;

                          01B5   30  0144   317 	BSBW	TST$NEXTCHAR		; GET NEXT CHARACTER

                                     0147   318 	$CASEB	SELECTOR=R0,DISPL=<-	; CHARACTER:

                                     0147   319 			QUAL_REEXAMINE-	;  END-OF-LINE

                                     0147   320 			QUAL_REEXAMINE-	;  SLASH

                                     0147   321 			VALUE_CHAR-	;  EQUAL_SIGN OR COLON

                                     0147   322 			QUAL_REEXAMINE-	;  SPACE OR TAB

                                     0147   323 			VALUE_CHAR-	;  NONE OF THE ABOVE

                                     0147   324 	>				;

                                     0155   325 VALUE_CHAR:				;

            08            53     D1  0155   326 	CMPL	R3,#8			; STORE ONLY FIRST 8 CHARACTERS

                          EA     13  0158   327 	BEQLU	VALUE_LOOP		; IGNORE THIS CHARACTER

            82            51     90  015A   328 	MOVB	R1,(R2)+		; STORE CHARACTER

                          53     D6  015D   329 	INCL	R3			; INCREMENT CHARACTER COUNT

                          E3     11  015F   330 	BRB	VALUE_LOOP		; CONTINUE

                                     0161   331 QUAL_CHAR:				;

            04            53     D1  0161   332 	CMPL	R3,#4			; STORE ONLY FIRST 4 CHARACTERS

                          C6     13  0164   333 	BEQLU	QUAL_LOOP		; IGNORE THIS CHARACTER

            82            51     90  0166   334 	MOVB	R1,(R2)+		; STORE CHARACTER

                          53     D6  0169   335 	INCL	R3			; INCREMENT CHARACTER COUNT

                          BF     11  016B   336 	BRB	QUAL_LOOP		; CONTINUE

                                     016D   337 QUAL_DELIMITER:				;

            54       0000'CF     DE  016D   338 	MOVAL	W^TST$AZ_QUAL,R4	; GET ADDRESS OF KEYWORD TABLE

            56       0000'CF     DE  0172   339 	MOVAL	W^TST$GT_KEYWORD,R6	; GET ADDRESS OF STRING TO MATCH

                          01BA   30  0177   340 	BSBW	TST$MATCH		; FIND TABLE INDEX OF KEYWORD

       0000'CF            55     E0  017A   341 	BBS	R5,W^TST$GL_VALID,10$	; IS THIS A VALID QUALIFIER?

                          03         017F       

                          FEB7   31  0180   342 	BRW	PARSE_ERROR		; NO, NOT IN THIS CONTEXT

                          01     10  0183   343 10$:	BSBB	QUAL_DISPATCH		; GO TO QUALIFIER SPECIFIC CODE

                                 05  0185   344 	RSB				; EXIT

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page   9

X0.1-2          PARSE ROUTINE--QUALIFIER VALUE EVALUATION                                                                        (6)



                                     0186   346 	.SBTTL	PARSE ROUTINE--QUALIFIER VALUE EVALUATION

                                     0186   347 

                                     0186   348 ;+

                                     0186   349 ; QUAL_DISPATCH IS A SPECIAL PURPOSE SUBROUTINE THAT CONTAINS QUALIFIER

                                     0186   350 ; SPECIFIC CODE. IT EXISTS AS A SUBROUTINE TO UTILIZE "RSB" TO RETURN

                                     0186   351 ; FROM A "CASE" INSTRUCTION INSTEAD OF USING "BRW".

                                     0186   352 ;-

                                     0186   353 

                                     0186   354 QUAL_DISPATCH:				; CONTROL POINT

            56       0000'CF     DE  0186   355 	MOVAL	W^TST$GT_VALUE,R6	; GET ADDRESS OF QUALIFIER VALUE

                                     018B   356 					;  STRING FOR POSSIBLE USE BY TST$MATCH

                                     018B   357 	$CASEB	SELECTOR=R5,DISPL=<-	; DISPATCH TO APPROPRIATE CODE

                                     018B   358 			BACK-		;  BACK PRESSURE CONTROL

                                     018B   359 			DISPLAY-	;  DISPLAY EACH MESSAGE

                                     018B   360 			FLOW-		;  FLOW CONTROL

                                     018B   361 			HOURS-		;  TIME OF TEST IN HOURS

                                     018B   362 			MINUTES-	;  TIME OF TEST IN MINUTES

                                     018B   363 			NAK-		;  NAK CONTROL

                                     018B   364 			NOBACK-		;  NO BACK PRESSURE CONTROL

                                     018B   365 			NODENAME-	;  NODENAME

                                     018B   366 			NODISPLAY-	;  DO NOT DISPLAY EACH MESSAGE

                                     018B   367 			NOFLOW-		;  NO FLOW CONTROL

                                     018B   368 			NONAK-		;  NO NAK CONTROL

                                     018B   369 			NOPRINT-	;  NO PRINT OPTION FOR DTR

                                     018B   370 			NORETURN-	;  NO USERDATA TO RETURN

                                     018B   371 			NOSTATISTICS-	;  NO STATISTICS DESIRED

                                     018B   372 			PRINT-		;  PRINT OPTION FOR DTR

                                     018B   373 			RETURN-		;  RETURN USERDATA

                                     018B   374 			RQUEUE-		;  DTR QUEUE

                                     018B   375 			SECONDS-	;  TIME OF TEST IN SECONDS

                                     018B   376 			SIZE-		;  MESSAGE SIZE

                                     018B   377 			SPEED-		;  SPEED OF COMMUNICATIONS LINE

                                     018B   378 			SQUEUE-		;  DTS QUEUE

                                     018B   379 			STATISTICS-	;  STATISTICS DESIRED

                                     018B   380 			TYPE-		;  TEST TYPE (SUBFUNCTION)

                                     018B   381 	>				;

                                     01BD   382 BACK:					; PROCESS BACK QUALIFIER

            57         80 8F     9A  01BD   383 	MOVZBL	#MAX_K_BACK,R7		; DEFINE MAXIMUM VALUE

                          018D   30  01C1   384 	BSBW	TST$CVTU_DTB		; CONVERT DIGITS TO BINARY VALUE

       0000'CF            56     F6  01C4   385 	CVTLB	R6,W^TST$GB_BACK	; UPDATE BACK PRESSURE CONTROL

                                 05  01C9   386 	RSB				; EXIT

                                     01CA   387 

                                     01CA   388 DISPLAY:				; PROCESS DISPLAY QUALIFIER

            57            26     D0  01CA   389 	MOVL	#MAX_K_DISPLAY,R7	; DEFINE MAXIMUM VALUE

                          0181   30  01CD   390 	BSBW	TST$CVTU_DTB		; CONVERT DIGITS TO BINARY VALUE

       0000'CF            56     F6  01D0   391 	CVTLB	R6,W^TST$GB_DISPLAY	; UPDATE DISPLAY VALUE

                                 05  01D5   392 	RSB				; EXIT

                                     01D6   393 

                                     01D6   394 FLOW:					; PROCESS FLOW QUALIFIER VALUE

            54       0000'CF     DE  01D6   395 	MOVAL	W^TST$AZ_FLOW,R4	; GET ADDRESS OF KEYWORD TABLE

                          0156   30  01DB   396 	BSBW	TST$MATCH		; FIND TABLE INDEX OF KEYWORD

                          55     D6  01DE   397 	INCL	R5			;

       0000'CF            55     F6  01E0   398 	CVTLB	R5,W^TST$GB_FLOW	; UPDATE FLOW CONTROL FIELD

                                 05  01E5   399 	RSB				; EXIT

                                     01E6   400 

                                     01E6   401 HOURS:					; PROCESS HOURS QUALIFIER VALUE

            7E       0E10 8F     3C  01E6   402 	MOVZWL	#3600,-(SP)		; # SECONDS IN 1 HOUR

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  10

X0.1-2          PARSE ROUTINE--QUALIFIER VALUE EVALUATION                                                                        (6)



            57         64 8F     9A  01EB   403 	MOVZBL	#<MAX_K_TIME_DA/3600>,R7 ; DEFINE MAXIMUM HOUR VALUE

                          008A   31  01EF   404 	BRW	TIME			; BRANCH TO COMMON CODE

                                     01F2   405 

                                     01F2   406 MINUTES:				; PROCESS MINUTES QUALIFIER VALUE

            7E            3C     9A  01F2   407 	MOVZBL	#60,-(SP)		; # SECONDS IN 1 MINUTE

            57       1770 8F     3C  01F5   408 	MOVZWL	#<MAX_K_TIME_DA/60>,R7	; DEFINE MAXIMUM MINUTE VALUE

                          007F   31  01FA   409 	BRW	TIME			; BRANCH TO COMMON CODE

                                     01FD   410 

                                     01FD   411 NAK:					; PROCESS NAK QUALIFIER

            57         80 8F     9A  01FD   412 	MOVZBL	#MAX_K_NAK,R7		; DEFINE MAXIMUM VALUE

                          014D   30  0201   413 	BSBW	TST$CVTU_DTB		; CONVERT DIGITS TO BINARY VALUE

       0000'CF            56     F6  0204   414 	CVTLB	R6,W^TST$GB_NAK		; UPDATE NAK CONTROL

                                 05  0209   415 	RSB				; EXIT

                                     020A   416 

                                     020A   417 NOBACK:					; PROCESS NOBACK QUALIFIER

                                     020A   418 	ASSUME	VAL_K_BACK_NO,EQ,0	;

                     0000'CF     94  020A   419 	CLRB	W^TST$GB_BACK		; UPDATE BACK PRESSURE CONTROL VALUE

                                 05  020E   420 	RSB				; EXIT

                                     020F   421 

                                     020F   422 NODENAME:				; PROCESS NODENAME QUALIFIER VALUE

                                     020F   423 					; A NODENAME OF 0-6 CHARACTERS

                                     020F   424 					;  IS ALLOWED

            06            53     D1  020F   425 	CMPL	R3,#6			; IS STRING TOO LONG?

                          03     1B  0212   426 	BLEQU	10$			; NO, USE ENTERED VALUE

                          FE23   31  0214   427 	BRW	PARSE_ERROR		; YES

                          03     BB  0217   428 10$:	PUSHR	#^M<R0,R1>		; SAVE R0 AND R1

                                     0219   429 					; NODENAME IS STORED AS A

                                     0219   430 					; COUNTED ASCII STRING

       0000'CF            53     90  0219   431 	MOVB	R3,W^TST$GT_NODENAME	; STORE LENGTH OF STRING

                          53     28  021E   432 	MOVC3	R3,W^TST$GT_VALUE,-	; STORE STRING

       0001'CF       0000'CF         0220   433 		W^TST$GT_NODENAME+1	; NOTE R0 - R5 ARE DESTROYED!

                          03     BA  0226   434 	POPR	#^M<R0,R1>		; RESTORE R0 AND R1

                                 05  0228   435 	RSB				; EXIT

                                     0229   436 

                                     0229   437 NODISPLAY:				; PROCESS NODISPLAY QUALIFIER

                                     0229   438 	ASSUME	VAL_K_DISP_NO,EQ,0	;

                     0000'CF     94  0229   439 	CLRB	W^TST$GB_DISPLAY	; UPDATE DISPLAY VALUE

                                 05  022D   440 	RSB				; EXIT

                                     022E   441 

                                     022E   442 NOFLOW:					; PROCESS NOFLOW QUALIFIER

                                     022E   443 	ASSUME	VAL_K_FLOW_NO,EQ,0	;

                     0000'CF     94  022E   444 	CLRB	W^TST$GB_FLOW		; UPDATE FLOW CONTROL VALUE

                                 05  0232   445 	RSB				; EXIT

                                     0233   446 

                                     0233   447 NONAK:					; PROCESS NONAK QUALIFIER

                                     0233   448 	ASSUME	VAL_K_NAK_NO,EQ,0	;

                     0000'CF     94  0233   449 	CLRB	W^TST$GB_NAK		; UPDATE NAK CONTROL VALUE

                                 05  0237   450 	RSB				; EXIT

                                     0238   451 

                                     0238   452 NOPRINT:				; PROCESS NOPRINT QUALIFIER

                                     0238   453 	ASSUME	VAL_K_PRIN_NO,EQ,0	;

                     0000'CF     94  0238   454 	CLRB	W^TST$GB_PRINT		; UDPATE PRINT VALUE

                                 05  023C   455 	RSB				; EXIT

                                     023D   456 

                                     023D   457 NORETURN:				; PROCESS NORETURN QUALIFIER

                                     023D   458 	ASSUME	VAL_K_RETU_NO,EQ,0	;

                     0000'CF     94  023D   459 	CLRB	W^TST$GB_RETURN		; UPDATE RETURN VALUE

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  11

X0.1-2          PARSE ROUTINE--QUALIFIER VALUE EVALUATION                                                                        (6)



                                 05  0241   460 	RSB				; EXIT

                                     0242   461 

                                     0242   462 NOSTATISTICS:				; PROCESS NOSTATISTICS QUALIFIER

                                     0242   463 	ASSUME	VAL_K_STAT_NO,EQ,0	;

                     0000'CF     94  0242   464 	CLRB	W^TST$GB_STAT		; UPDATE STATISTICS VALUE

                                 05  0246   465 	RSB				; EXIT

                                     0247   466 

                                     0247   467 PRINT:					; PROCESS PRINT QUALIFIER

       0000'CF         80 8F     90  0247   468 	MOVB	#VAL_K_PRIN_YES,W^TST$GB_PRINT ; UPDATE PRINT VALUE

                                 05  024D   469 	RSB				; EXIT

                                     024E   470 

                                     024E   471 RETURN:					; PROCESS RETURN QUALIFIER VALUE

            54       0000'CF     DE  024E   472 	MOVAL	W^TST$AZ_RETURN,R4	; GET ADDRESS OF KEYWORD TABLE

                          00DE   30  0253   473 	BSBW	TST$MATCH		; FIND TABLE INDEX OF KEYWORD

                          55     D6  0256   474 	INCL	R5			;

       0000'CF            55     F6  0258   475 	CVTLB	R5,W^TST$GB_RETURN	; UPDATE RETURN USERDATA VALUE

                                 05  025D   476 	RSB				; EXIT

                                     025E   477 

                                     025E   478 RQUEUE:					; PROCESS RQUEUE QUALIFIER VALUE

            57            08     D0  025E   479 	MOVL	#MAX_K_RQUEUE_DA,R7	; DEFINE MAXIMUM VALUE FOR DATA TEST

            01            5A     91  0261   480 	CMPB	R10,#VAL_K_TEST_DATA	; IS IT A DATA TEST?

                          03     13  0264   481 	BEQLU	10$			; BRANCH IF YES

            57            08     D0  0266   482 	MOVL	#MAX_K_RQUEUE_IN,R7	; NO, DEFINE MAX VALUE FOR INT TEST

                          00E5   30  0269   483 10$:	BSBW	TST$CVTU_DTB		; CONVERT DIGITS TO BINARY VALUE

       0000'CF            56     F6  026C   484 	CVTLB	R6,W^TST$GB_RQUEUE	; UPDATE FLOW CONTROL VALUE

                                 05  0271   485 	RSB				; EXIT

                                     0272   486 

                                     0272   487 SECONDS:				; PROCESS SECONDS QUALIFIER VALUE

            7E            01     D0  0272   488 	MOVL	#1,-(SP)		; # SECONDS IN 1 SECOND

            57   00057E40 8F     D0  0275   489 	MOVL	#MAX_K_TIME_DA,R7	; DEFINE MAXIMUM SECOND VALUE

                                     027C   490 TIME:					; COMMON CODE

                          00D2   30  027C   491 	BSBW	TST$CVTU_DTB		; CONVERT DIGITS TO BINARY VALUE

            8E            56     C5  027F   492 	MULL3	R6,(SP)+,W^TST$GL_SECONDS ; CALCULATE NUMBER OF SECONDS

                     0000'CF         0282       

                                 05  0285   493 	RSB				; EXIT

                                     0286   494 

                                     0286   495 SIZE:					; PROCESS SIZE QUALIFIER VALUE

            57       1000 8F     3C  0286   496 	MOVZWL	#MAX_K_SIZE_DA,R7	; DEFINE MAXIMUM VALUE FOR DATA TEST

            01            5A     91  028B   497 	CMPB	R10,#VAL_K_TEST_DATA	; IS IT A DATA TEST?

                          03     13  028E   498 	BEQLU	10$			; BRANCH IF YES

            57            10     D0  0290   499 	MOVL	#MAX_K_SIZE_IN,R7	; NO, DEFINE MAX VALUE FOR INT TEST

                          00BB   30  0293   500 10$:	BSBW	TST$CVTU_DTB		; CONVERT DIGITS TO BINARY VALUE

       0000'CF            56     F7  0296   501 	CVTLW	R6,W^TST$GW_SIZE	; UPDATE MESSAGE SIZE

                                 05  029B   502 	RSB				; EXIT

                                     029C   503 

                                     029C   504 SPEED:					; PROCESS SPEED QUALIFIER VALUE

            57   000F4240 8F     D0  029C   505 	MOVL	#MAX_K_SPEED,R7		; DEFINE MAXIMUM VALUE

                          00AB   30  02A3   506 	BSBW	TST$CVTU_DTB		; CONVERT DIGITS TO BINARY VALUE

       0000'CF            56     D0  02A6   507 	MOVL	R6,W^TST$GL_SPEED	; UPDATE BAUD RATE

                                 05  02AB   508 	RSB				; EXIT

                                     02AC   509 

                                     02AC   510 SQUEUE:					; PROCESS SQUEUE QUALIFIER

            57            08     D0  02AC   511 	MOVL	#MAX_K_SQUEUE_DA,R7	; DEFINE MAXIMUM VALUE FOR DATA TEST

            01            5A     91  02AF   512 	CMPB	R10,#VAL_K_TEST_DATA	; IS IT A DATA TEST?

                          03     13  02B2   513 	BEQLU	10$			; BRANCH IF YES

            57            08     D0  02B4   514 	MOVL	#MAX_K_SQUEUE_IN,R7	; NO, DEFINE MAX VALUE FOR INT TEST

                          0097   30  02B7   515 10$:	BSBW	TST$CVTU_DTB		; CONVERT DIGITS TO BINARY VALUE

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  12

X0.1-2          PARSE ROUTINE--QUALIFIER VALUE EVALUATION                                                                        (6)



       0000'CF            56     F6  02BA   516 	CVTLB	R6,W^TST$GB_SQUEUE	; UPDATE DTS QUEUE COUNT

                                 05  02BF   517 	RSB				; EXIT

                                     02C0   518 

                                     02C0   519 STATISTICS:				; PROCESS STATISTICS QUALIFIER

       0000'CF            01     90  02C0   520 	MOVB	#VAL_K_STAT_YES,W^TST$GB_STAT	; UPDATE STATISTICS VALUE

                                 05  02C5   521 	RSB				; EXIT

                                     02C6   522 

                                     02C6   523 TYPE:					; PROCESS TYPE QUALIFIER VALUE

                                     02C6   524 	$CASEB	SELECTOR=R10,DISPL=<-	; TEST:

                                     02C6   525 			10$-		;  CONNECT TEST

                                     02C6   526 			20$-		;  DATA TEST

                                     02C6   527 			30$-		;  DISCONNECT TEST

                                     02C6   528 			40$-		;  INTERRUPT TEST

                                     02C6   529 	>				;  MISCELLANEOUS TEST BELOW

            54       0000'CF     DE  02D2   530 	MOVAL	W^TST$AZ_TYPE_MI,R4	; GET ADDRESS OF KEYWORD TABLE

                          1A     11  02D7   531 	BRB	50$			; BRANCH TO COMMON CODE

            54       0000'CF     DE  02D9   532 10$:	MOVAL	W^TST$AZ_TYPE_CO,R4	; GET ADDRESS OF KEYWORD TABLE

                          13     11  02DE   533 	BRB	50$			; BRANCH TO COMMON CODE

            54       0000'CF     DE  02E0   534 20$:	MOVAL	W^TST$AZ_TYPE_DA,R4	; GET ADDRESS OF KEYWORD TABLE

                          0C     11  02E5   535 	BRB	50$			; BRANCH TO COMMON CODE

            54       0000'CF     DE  02E7   536 30$:	MOVAL	W^TST$AZ_TYPE_DI,R4	; GET ADDRESS OF KEYWORD TABLE

                          05     11  02EC   537 	BRB	50$			; BRANCH TO COMMON CODE

            54       0000'CF     DE  02EE   538 40$:	MOVAL	W^TST$AZ_TYPE_IN,R4	; GET ADDRESS OF KEYWORD TABLE

                          003E   30  02F3   539 50$:	BSBW	TST$MATCH		; FIND TABLE INDEX OF KEYWORD

       0000'CF            55     F6  02F6   540 	CVTLB	R5,W^TST$GB_TYPE	; UPDATE MESSAGE TYPE

                                 05  02FB   541 	RSB				; EXIT

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  13

X0.1-2          TST$NEXTCHAR - EXAMINE NEXT CHARACTER                                                                            (7)



                                     02FC   543 	.SBTTL	TST$NEXTCHAR - EXAMINE NEXT CHARACTER

                                 000002FC   544 	.PSECT	TST$CODE	NOWRT

                                     02FC   545 

                                     02FC   546 ;++

                                     02FC   547 ; FUNCTIONAL DESCRIPTION:

                                     02FC   548 ;

                                     02FC   549 ;	TST$NEXTCHAR ATTEMPTS TO EXAMINE THE NEXT CHARACTER IN THE

                                     02FC   550 ;	BUFFER. IF THE END OF THE BUFFER HAS BEEN REACHED, TST$NEXTCHAR

                                     02FC   551 ;	SIGNALS END OF LINE CONDITION; OTHERWISE THE NEXT CHARACTER

                                     02FC   552 ;	FOUND IS RETURNED ALONG WITH A VALUE INDICATING WHAT TYPE OF

                                     02FC   553 ;	CHARACTER IT IS.

                                     02FC   554 ;

                                     02FC   555 ; CALLING SEQUENCE:

                                     02FC   556 ;

                                     02FC   557 ;	BSB/JSB	TST$NEXTCHAR

                                     02FC   558 ;

                                     02FC   559 ; INPUT PARAMETERS:

                                     02FC   560 ;

                                     02FC   561 ;	R8	THE ADDRESS OF THE NEXT CHARACTER IN THE BUFFER

                                     02FC   562 ;	R9	THE ADDRESS OF THE END OF THE BUFFER + 1

                                     02FC   563 ;

                                     02FC   564 ; IMPLICIT INPUTS:

                                     02FC   565 ;

                                     02FC   566 ;	NONE

                                     02FC   567 ;

                                     02FC   568 ; OUTPUT PARAMETERS:

                                     02FC   569 ;

                                     02FC   570 ;	R0	RESULT WHERE:

                                     02FC   571 ;		0 = END OF LINE OR CHARACTER IS AN EXCLAMATION OR DASH

                                     02FC   572 ;		1 = CHARACTER IS A SLASH

                                     02FC   573 ;		2 = CHARACTER IS AN EQUAL_SIGN OR COLON

                                     02FC   574 ;		3 = CHARACTER IS A SPACE OR TAB

                                     02FC   575 ;		4 = CHARACTER IS NONE OF THE ABOVE

                                     02FC   576 ;	R1	THE CHARACTER EXAMINED (0 OR "NULL" IF END OF LINE)

                                     02FC   577 ;	R8	UPDATED NEXT CHARACTER POINTER

                                     02FC   578 ;

                                     02FC   579 ; IMPLICIT OUTPUTS:

                                     02FC   580 ;

                                     02FC   581 ;	NONE

                                     02FC   582 ;

                                     02FC   583 ; COMPLETION CODES:

                                     02FC   584 ;

                                     02FC   585 ;	NONE

                                     02FC   586 ;

                                     02FC   587 ; SIDE EFFECTS:

                                     02FC   588 ;

                                     02FC   589 ;	NONE

                                     02FC   590 ;

                                     02FC   591 ;--

                                     02FC   592 

                                     02FC   593 TST$NEXTCHAR::				; CONTROL POINT

                          50     D4  02FC   594 	CLRL	R0			; INITIALIZE RETURN VALUE

                          51     D4  02FE   595 	CLRL	R1			; SET R1 TO "NULL"

                                     0300   596 ; ***** R0 = 0

            59            58     D1  0300   597 	CMPL	R8,R9			; END OF COMMAND LINE?

                          2E     13  0303   598 	BEQLU	10$			; YES

            51            88     9A  0305   599 	MOVZBL	(R8)+,R1		; GET NEXT CHARACTER

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  14

X0.1-2          TST$NEXTCHAR - EXAMINE NEXT CHARACTER                                                                            (7)



            21            51     91  0308   600 	CMPB	R1,#^A\!\		; IS IT AN EXCLAMATION POINT?

                          26     13  030B   601 	BEQLU	10$			; YES, IGNORE REST OF LINE

            2D            51     91  030D   602 	CMPB	R1,#^A\-\		; IS IT A DASH?

                          21     13  0310   603 	BEQLU	10$			; YES, IGNORE REST OF LINE

                                     0312   604 ; ***** R0 = 1

                          50     D6  0312   605 	INCL	R0			; INCREMENT RETURN VALUE

            2F            51     91  0314   606 	CMPB	R1,#^A\/\		; IS IT A SLASH?

                          1A     13  0317   607 	BEQLU	10$			; YES

                                     0319   608 ; ***** R0 = 2

                          50     D6  0319   609 	INCL	R0			; INCREMENT RETURN VALUE

            3D            51     91  031B   610 	CMPB	R1,#^A\=\		; IS IT AN EQUALS_SIGN?

                          13     13  031E   611 	BEQLU	10$			; YES

            3A            51     91  0320   612 	CMPB	R1,#^A\:\		; IS IT A COLON?

                          0E     13  0323   613 	BEQLU	10$			; YES

                                     0325   614 ; ***** R0 = 3

                          50     D6  0325   615 	INCL	R0			; INCREMENT RETURN VALUE

            20            51     91  0327   616 	CMPB	R1,#^A\ \		; IS IT A SPACE?

                          07     13  032A   617 	BEQLU	10$			; YES

            09            51     91  032C   618 	CMPB	R1,#^X09		; IS IT A TAB?

                          02     13  032F   619 	BEQLU	10$			; YES

                                     0331   620 ; ***** R0 = 4

                          50     D6  0331   621 	INCL	R0			; IT'S NONE OF THE ABOVE

                                 05  0333   622 10$:	RSB				; EXIT

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  15

X0.1-2          TST$MATCH - KEYWORD MATCH ROUTINE                                                                                (8)



                                     0334   624 	.SBTTL	TST$MATCH - KEYWORD MATCH ROUTINE

                                 00000334   625 	.PSECT	TST$CODE	NOWRT

                                     0334   626 

                                     0334   627 ;++

                                     0334   628 ; FUNCTIONAL DESCRIPTION:

                                     0334   629 ;

                                     0334   630 ;	TST$MATCH SEARCHES THE SPECIFIED KEYWORD TABLE FOR A MATCH WITH

                                     0334   631 ;	THE SPECIFIED KEYWORD STRING. IF A MATCH IS FOUND, THE INDEX

                                     0334   632 ;	OF THE MATCHING TABLE ENTRY IS RETURNED; OTHERWISE CONTROL IS

                                     0334   633 ;	TRANSFERRED TO AN ERROR ROUTINE. THE END OF THE TABLE IS MARKED

                                     0334   634 ;	BY A NULL KEYWORD ENTRY, I.E., A NULL COUNTED ASCII STRING.

                                     0334   635 ;

                                     0334   636 ; CALLING SEQUENCE:

                                     0334   637 ;

                                     0334   638 ;	BSB/JSB	TST$MATCH

                                     0334   639 ;

                                     0334   640 ; INPUT PARAMETERS:

                                     0334   641 ;

                                     0334   642 ;	R4	ADDRESS OF THE KEYWORD TABLE TO SEARCH

                                     0334   643 ;	R6	ADDRESS OF THE KEYWORD STRING TO MATCH AGAINST THE TABLE

                                     0334   644 ;

                                     0334   645 ; IMPLICIT INPUTS:

                                     0334   646 ;

                                     0334   647 ;	NONE

                                     0334   648 ;

                                     0334   649 ; OUTPUT PARAMETERS:

                                     0334   650 ;

                                     0334   651 ;	R5	THE INDEX OF THE MATCHING TABLE ENTRY IF A MATCH IS FOUND;

                                     0334   652 ;		OTHERWISE UNDEFINED.

                                     0334   653 ;

                                     0334   654 ; IMPLICIT OUTPUTS:

                                     0334   655 ;

                                     0334   656 ;	NONE

                                     0334   657 ;

                                     0334   658 ; COMPLETION CODES:

                                     0334   659 ;

                                     0334   660 ;	NONE

                                     0334   661 ;

                                     0334   662 ; SIDE EFFECTS:

                                     0334   663 ;

                                     0334   664 ;	CONTROL IS TRANSFERRED TO PARSE_ERROR IF AN ERROR IS DETECTED.

                                     0334   665 ;

                                     0334   666 ;--

                                     0334   667 

                                     0334   668 TST$MATCH::				; CONTROL POINT

                          1F     BB  0334   669 	PUSHR	#^M<R0,R1,R2,R3,R4>	; SAVE REGISTERS

                          55     D4  0336   670 	CLRL	R5			; INITIALIZE RETURN VALUE

            50            84     90  0338   671 10$:	MOVB	(R4)+,R0		; GET # OF SIGNIFICANT CHARACTERS

                          11     13  033B   672 	BEQLU	30$			; END OF TABLE IF ZERO

            64            50     29  033D   673 	CMPC3	R0,(R4),(R6)		; DO STRINGS MATCH?

                          66         0340       

                          08     13  0341   674 	BEQLU	20$			; YES

            51            50     C1  0343   675 	ADDL3	R0,R1,R4		; SET POINTER TO NEXT ENTRY

                          54         0346       

                          55     D6  0347   676 	INCL	R5			; INCREMENT TABLE INDEX

                          ED     11  0349   677 	BRB	10$			; TRY AGAIN

                          1F     BA  034B   678 20$:	POPR	#^M<R0,R1,R2,R3,R4>	; RESTORE REGISTERS

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  16

X0.1-2          TST$MATCH - KEYWORD MATCH ROUTINE                                                                                (8)



                                 05  034D   679 	RSB				; EXIT

                          FCE9   31  034E   680 30$:	BRW	PARSE_ERROR		; BRANCH TO ERROR ROUTINE

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  17

X0.1-2          TST$CVTU_DTB - CONVERT UNSIGNED DECIMAL TO BINA                                                                  (9)



                                     0351   682 	.SBTTL	TST$CVTU_DTB - CONVERT UNSIGNED DECIMAL TO BINARY

                                 00000351   683 	.PSECT	TST$CODE	NOWRT

                                     0351   684 

                                     0351   685 ;++

                                     0351   686 ; FUNCTIONAL DESCRIPTION:

                                     0351   687 ;

                                     0351   688 ;	TST$CVTU_DTB CONVERTS AN UNSIGNED ASCII STRING OF 1 TO 8 DECIMAL

                                     0351   689 ;	DIGITS TO A 32-BIT BINARY VALUE. IF THE RESULTANT VALUE EXCEEDS

                                     0351   690 ;	THE GIVEN LIMIT, CONTROL IS TRANSFERRED TO AN ERROR ROUTINE.

                                     0351   691 ;

                                     0351   692 ; CALLING SEQUENCE:

                                     0351   693 ;

                                     0351   694 ;	BSB/JSB	TST$CVTU_DTB

                                     0351   695 ;

                                     0351   696 ; INPUT PARAMETERS:

                                     0351   697 ;

                                     0351   698 ;	R3	LENGTH OF ASCII STRING

                                     0351   699 ;	R7	MAXIMUM VALUE

                                     0351   700 ;

                                     0351   701 ; IMPLICIT INPUTS:

                                     0351   702 ;

                                     0351   703 ;	TST$GT_VALUE = ASCII STRING TO CONVERT

                                     0351   704 ;

                                     0351   705 ; OUTPUT PARAMETERS:

                                     0351   706 ;

                                     0351   707 ;	R2-R5	DESTROYED

                                     0351   708 ;	R6	BINARY VALUE OF STRING

                                     0351   709 ;	R7	UNCHANGED

                                     0351   710 ;

                                     0351   711 ; IMPLICIT OUTPUTS:

                                     0351   712 ;

                                     0351   713 ;	NONE

                                     0351   714 ;

                                     0351   715 ; COMPLETION CODES:

                                     0351   716 ;

                                     0351   717 ;	NONE

                                     0351   718 ;

                                     0351   719 ; SIDE EFFECTS:

                                     0351   720 ;

                                     0351   721 ;	CONTROL IS TRANSFERRED TO PARSE_ERROR IF AN ERROR IS DETECTED.

                                     0351   722 ;

                                     0351   723 ;--

                                     0351   724 

                                     0351   725 TST$CVTU_DTB::				; CONTROL POINT

            52       0000'CF     DE  0351   726 	MOVAL	W^TST$GT_VALUE,R2	; GET ADDRESS OF ASCII STRING

                                     0356   727 

                                     0356   728 ;

                                     0356   729 ; THE ASCII STRING IS STORED IN REVERSE ORDER, SO THE POINTER IS PLACED

                                     0356   730 ; ONE PAST THE END OF THE STRING. THEREFORE, THE STRING IS SCANNED IN

                                     0356   731 ; REVERSE ORDER TO OBTAIN THE LEAST-SIGNIFICANT TO MOST-SIGNIFICANT

                                     0356   732 ; CHARACTERS.

                                     0356   733 ;

                                     0356   734 

            52            53     C0  0356   735 	ADDL2	R3,R2			; ADD STRING LENGTH TO POINTER

            08            53     91  0359   736 	CMPB	R3,#8			; IS STRING TOO LONG?

                          22     1A  035C   737 	BGTRU	20$			; YES

            54            01     9A  035E   738 	MOVZBL	#1,R4			; SET-UP DIGIT PLACE VALUE

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  18

X0.1-2          TST$CVTU_DTB - CONVERT UNSIGNED DECIMAL TO BINA                                                                  (9)



                          56     D4  0361   739 	CLRL	R6			; ZERO RETURN VALUE

            55            72     9A  0363   740 10$:	MOVZBL	-(R2),R5		; GET NEXT ASCII CHARACTER

            55            30     82  0366   741 	SUBB2	#^X30,R5		; CONVERT ASCII DIGIT TO BINARY

            09            55     91  0369   742 	CMPB	R5,#9			; IS IT NON-NUMERIC?

                          12     1A  036C   743 	BGTRU	20$			; YES

            55            54     C4  036E   744 	MULL2	R4,R5			; MULTIPLY DIGIT BY ITS PLACE VALUE

            56            55     C0  0371   745 	ADDL2	R5,R6			; ADD THIS TO THE TOTAL

            54            0A     C4  0374   746 	MULL2	#10,R4			; MULTIPLY PLACE VALUE BY 10

            E9            53     F5  0377   747 	SOBGTR	R3,10$			; ANOTHER DIGIT TO CONVERT?

            57            56     D1  037A   748 	CMPL	R6,R7			; IS CONVERTED VALUE TOO LARGE?

                          01     1A  037D   749 	BGTRU	20$			; YES

                                 05  037F   750 	RSB				; NO, EXIT

                          FCB7   31  0380   751 20$:	BRW	PARSE_ERROR		; BRANCH TO ERROR ROUTINE

                                     0383   752 	.END

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  19

SYMBOL TABLE                                                                                                                     (9)



$$COUNT        = 00000004            NAK              000001FD R     03   TST$GL_SECONDS   ********   X   03   

BACK             000001BD R     03   NEXT_ELEMENT     00000002 R     03   TST$GL_SPEED     ********   X   03   

BIT...         = 00000017            NOBACK           0000020A R     03   TST$GL_VALID     ********   X   03   

CONNTEST         0000008E R     03   NODENAME         0000020F R     03   TST$GT_KEYWORD   ********   X   03   

DATATEST         000000A2 R     03   NODISPLAY        00000229 R     03   TST$GT_NODENAME  ********   X   03   

DFT_K_BACK     = 00000000            NOFLOW           0000022E R     03   TST$GT_VALUE     ********   X   03   

DFT_K_DISPLAY  = 00000000            NONAK            00000233 R     03   TST$GW_SIZE      ********   X   03   

DFT_K_FLOW     = 00000002            NOPRINT          00000238 R     03   TST$MATCH        00000334 RG    03   

DFT_K_NAK      = 00000000            NORETURN         0000023D R     03   TST$NEXTCHAR     000002FC RG    03   

DFT_K_PRINT    = 00000000            NOSTATISTICS     00000242 R     03   TST$PARSE        00000000 RG    03   

DFT_K_RETURN_CO= 00000000            P                00000000 RG    03   TYPE             000002C6 R     03   

DFT_K_RETURN_DI= 00000000            PARAM            00000021 R     03   VALUE_CHAR       00000155 R     03   

DFT_K_RQUEUE_DA= 00000001            PARAMETER        0000003E R     03   VALUE_LOOP       00000144 R     03   

DFT_K_RQUEUE_IN= 00000001            PARAM_CHAR       0000005F R     03   VAL_K_BACK_NO  = 00000000            

DFT_K_SIZE_DA  = 00000080            PARAM_DELIMITER  0000006B R     03   VAL_K_DISP_NO  = 00000000            

DFT_K_SIZE_IN  = 00000010            PARAM_LOOP       0000004E R     03   VAL_K_FLOW_MESS= 00000002            

DFT_K_SPEED    = 000F4240            PARSE_ERROR      0000003A R     03   VAL_K_FLOW_NO  = 00000000            

DFT_K_SQUEUE_DA= 00000001            PRINT            00000247 R     03   VAL_K_FLOW_SEGM= 00000001            

DFT_K_SQUEUE_IN= 00000001            QUAL             00000018 R     03   VAL_K_NAK_NO   = 00000000            

DFT_K_STAT     = 00000001            QUALIFIER        0000011C R     03   VAL_K_PRIN_NO  = 00000000            

DFT_K_TIME_DA  = 0000001E            QUAL_CHAR        00000161 R     03   VAL_K_PRIN_YES = 00000080            

DFT_K_TIME_IN  = 0000001E            QUAL_DELIMITER   0000016D R     03   VAL_K_RETU_NO  = 00000000            

DFT_K_TYPE_CO  = 00000001            QUAL_DISPATCH    00000186 R     03   VAL_K_RETU_RECE= 00000004            

DFT_K_TYPE_DA  = 00000000            QUAL_LOOP        0000012C R     03   VAL_K_RETU_STAN= 00000002            

DFT_K_TYPE_DI  = 00000001            QUAL_REEXAMINE   0000012F R     03   VAL_K_STAT_NO  = 00000000            

DFT_K_TYPE_IN  = 00000000            QUAL_VALUE       0000013D R     03   VAL_K_STAT_YES = 00000001            

DFT_K_TYPE_MI  = 00000000            REEXAMINE_CHAR   00000005 R     03   VAL_K_TEST_CONN= 00000000            

DISCTEST         000000D6 R     03   RETURN           0000024E R     03   VAL_K_TEST_DATA= 00000001            

DISPLAY          000001CA R     03   RQUEUE           0000025E R     03   VAL_K_TEST_DISC= 00000002            

END_OF_LINE      0000002C R     03   SECONDS          00000272 R     03   VAL_K_TEST_INTE= 00000003            

FLG_M_DELIMITER= 00000008            SIZE             00000286 R     03   VAL_K_TEST_MISC= 00000004            

FLG_M_MULTILINE= 00000002            SPACE_OR_TAB     00000013 R     03   VAL_K_TYPE_ABRT= 00000001            

FLG_M_PARAMETER= 00000004            SPEED            0000029C R     03   VAL_K_TYPE_ACCE= 00000001            

FLG_M_PARSERROR= 00000001            SQUEUE           000002AC R     03   VAL_K_TYPE_ECHO= 00000003            

FLG_V_DELIMITER= 00000003            STATISTICS       000002C0 R     03   VAL_K_TYPE_NAME= 00000000            

FLG_V_MULTILINE= 00000001            TIME             0000027C R     03   VAL_K_TYPE_PATT= 00000002            

FLG_V_PARAMETER= 00000002            TST$AZ_FLOW      ********   X   03   VAL_K_TYPE_REJE= 00000000            

FLG_V_PARSERROR= 00000000            TST$AZ_PARAM     ********   X   03   VAL_K_TYPE_SEQU= 00000001            

FLOW             000001D6 R     03   TST$AZ_QUAL      ********   X   03   VAL_K_TYPE_SINK= 00000000            

GBL...         = 00000000            TST$AZ_RETURN    ********   X   03   VAL_K_TYPE_SYNC= 00000000            

HOURS            000001E6 R     03   TST$AZ_TYPE_CO   ********   X   03   VLD_M_BACK     = 00000001            

INTETEST         000000EA R     03   TST$AZ_TYPE_DA   ********   X   03   VLD_M_DISPLAY  = 00000002            

K_LIST_MEB     = 00000000            TST$AZ_TYPE_DI   ********   X   03   VLD_M_FLOW     = 00000004            

MAX_K_BACK     = 00000080            TST$AZ_TYPE_IN   ********   X   03   VLD_M_HOURS    = 00000008            

MAX_K_DISPLAY  = 00000026            TST$AZ_TYPE_MI   ********   X   03   VLD_M_MINUTES  = 00000010            

MAX_K_NAK      = 00000080            TST$CVTU_DTB     00000351 RG    03   VLD_M_NAK      = 00000020            

MAX_K_RQUEUE_DA= 00000008            TST$GB_BACK      ********   X   03   VLD_M_NOBACK   = 00000040            

MAX_K_RQUEUE_IN= 00000008            TST$GB_DISPLAY   ********   X   03   VLD_M_NODENAME = 00000080            

MAX_K_SIZE_DA  = 00001000            TST$GB_FLOW      ********   X   03   VLD_M_NODISPLAY= 00000100            

MAX_K_SIZE_IN  = 00000010            TST$GB_NAK       ********   X   03   VLD_M_NOFLOW   = 00000200            

MAX_K_SPEED    = 000F4240            TST$GB_PRINT     ********   X   03   VLD_M_NONAK    = 00000400            

MAX_K_SQUEUE_DA= 00000008            TST$GB_RETURN    ********   X   03   VLD_M_NOPRINT  = 00000800            

MAX_K_SQUEUE_IN= 00000008            TST$GB_RQUEUE    ********   X   03   VLD_M_NORETURN = 00001000            

MAX_K_TIME_DA  = 00057E40            TST$GB_SQUEUE    ********   X   03   VLD_M_NOSTAT   = 00002000            

MAX_K_TIME_IN  = 00057E40            TST$GB_STAT      ********   X   03   VLD_M_PRINT    = 00004000            

MINUTES          000001F2 R     03   TST$GB_TEST      ********   X   03   VLD_M_RETURN   = 00008000            

MISCTEST         0000010D R     03   TST$GB_TYPE      ********   X   03   VLD_M_RQUEUE   = 00010000            

TST$DTSPARSE    - PARSE DTS COMMAND LINE                         22-AUG-1978 01:06:39   VAX-11 MACRO X0.3-11               Page  20

SYMBOL TABLE                                                                                                                     (9)



VLD_M_SECONDS  = 00020000            

VLD_M_SIZE     = 00040000            

VLD_M_SPEED    = 00080000            

VLD_M_SQUEUE   = 00100000            

VLD_M_STAT     = 00200000            

VLD_M_TYPE     = 00400000            

VLD_V_BACK     = 00000000            

VLD_V_DISPLAY  = 00000001            

VLD_V_FLOW     = 00000002            

VLD_V_HOURS    = 00000003            

VLD_V_MINUTES  = 00000004            

VLD_V_NAK      = 00000005            

VLD_V_NOBACK   = 00000006            

VLD_V_NODENAME = 00000007            

VLD_V_NODISPLAY= 00000008            

VLD_V_NOFLOW   = 00000009            

VLD_V_NONAK    = 0000000A            

VLD_V_NOPRINT  = 0000000B            

VLD_V_NORETURN = 0000000C            

VLD_V_NOSTAT   = 0000000D            

VLD_V_PRINT    = 0000000E            

VLD_V_RETURN   = 0000000F            

VLD_V_RQUEUE   = 00000010            

VLD_V_SECONDS  = 00000011            

VLD_V_SIZE     = 00000012            

VLD_V_SPEED    = 00000013            

VLD_V_SQUEUE   = 00000014            

VLD_V_STAT     = 00000015            

VLD_V_TYPE     = 00000016            





PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            00000000      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

TST$CODE         00000383      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT BYTE  





THERE WERE NO ERRORS OR WARNINGS.

19308. BYTES LEFT IN FREE MEMORY POOL.

OBJ$:DTSPARSE,LIS$:DTSPARSE/-SP=SRC$:DTPREFIX,DTSPARSE

20 MLB DIR RDS - 227 GETS TO DEFINE 15 MACROS. 25 INTER. FILE WRITES. 

