Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-1


					PAGE	90,132			;AN000;A2
					TITLE	TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;
				;****************** START OF SPECIFICATIONS *****************************
				; MODULE NAME: TREESYSP.SAL
				;
				; DESCRIPTIVE NAME: Include the DOS system PARSER
				;
				;FUNCTION: The common code of the DOS command line PARSER is optimized by
				;	   the setting of certain switches that cause the conditional
				;	   assembly of only the required portions of the common PARSER.
				;	   The segment registers are ASSUMED according to the type .COM.
				;	   The Common PARSER is then INCLUDEd.
				;
				; ENTRY POINT: SYSPARSE, near
				;
				; INPUT:
				;	ES - has seg id of the SEGMENT
				;	     that contains the input control blocks,
				;	     defined below.
				;
				;	DI - offset into ES of the PARMS INPUT BLOCK
				;
				;	DS - has seg id of the SEGMENT
				;	     that contains the DOS input COMMAND
				;	     string, which is originally presented at 81h
				;	     in the PSP.
				;
				;	SI - offset into DS of the text of the DOS input COMMAND string
				;	     as originally presented at 81H in the PSP.
				;
				;	DX - zero
				;
				;	CX - ordinal value, intially zero, updated on each subsequent call
				;	     to the value returned in CX on the previous call.
				;
				;	CS - points to the segment containing the
				;	     INCLUDE PARSE.ASM statement
				;
				;	DS - also points to the segment containing the INCLUDE
				;	     PARSE.ASM statement.
				;
				; EXIT-NORMAL:	Output registers:
				;	 AX - return code:
				;	    RC_No_Error     equ     0	 ; No error
				;	    RC_EOL	    equ     -1	 ; End of command line
				;
				;	 DX - Offset into ES of the selected RESULT BLOCK.
				;	 BL - terminated delimiter code
				;	 CX - new operand ordinal
				;	 SI - set past scanned operand
				;
				; EXIT-ERROR: Output registers:
				;	 AX - return code:
				;	    RC_Too_Many     equ     1	 ; Too many operands
				;	    RC_Op_Missing   equ     2	 ; Required operand missing
				;	    RC_Not_In_SW    equ     3	 ; Not in switch list provided
				;	    RC_Not_In_Key   equ     4	 ; Not in keyword list provided
				;	    RC_Out_Of_Range equ     6	 ; Out of range specified
				;	    RC_Not_In_Val   equ     7	 ; Not in value list provided
				;	    RC_Not_In_Str   equ     8	 ; Not in string list provided
				;	    RC_Syntax	    equ     9	 ; Syntax error
				;
				; INCLUDED FILES: PARSE.ASM - System Parser
				;		  PSDATA.INC - Equates and workareas used by PARSE.ASM
				;		  PATHMAC.INC - PATHGEN MACRO
				;
				; INTERNAL REFERENCES:
				;    ROUTINES: SYSPARSE:near (INCLUDEd in PARSE.ASM)
				;
				;    DATA AREAS: none
				;
				; EXTERNAL REFERENCES:
				;    ROUTINES: none
				;
				;    DATA AREAS: control blocks pointed to by input registers.
				;
				; NOTES:
				;	 This module should be processed with the SALUT preprocessor
				;	 with the re-alignment not requested, as:
				;
				;		SALUT TREESYSP,NUL,;
				;
				;	 To assemble these modules, the alphabetical or sequential
				;	 ordering of segments may be used.
				;
				;	 For LINK instructions, refer to the PROLOG of the main module,
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-2


				;	 TREE.SAL.
				;
				;****************** END OF SPECIFICATIONS *****************************
				
					INCLUDE PATHMAC.INC		;AN013;
			     C	;;***********************************************************************
			     C	;; NAME: pathlabl
			     C	;; DESC: creates a public label at the spot it is placed, using the name
			     C	;;       given.
			     C	;; INPUT: either module name or procedure name
			     C	;; OUTPUT: public label
			     C	;; LOGIC: LBL-parameter-name will have four values -
			     C	;;            - one for each pass (2)
			     C	;;            - one for start and one for stop
			     C	;;        if LBL is not defined, it is first pass, at beginning label
			     C	;;              - set it to 1 and create the start label
			     C	;;        if LBL = 1, it is first pass, at end label
			     C	;;              - set it to 2 and create stop label
			     C	;;        if LBL = 2, it is second pass, at beginning label
			     C	;;              - set it to 3 and create the start label
			     C	;;        if LBL = 3, it is second pass, at end label
			     C	;;              - set it to 4 and create stop label
			     C	;;        if LBL = 4, it is second pass,
			     C	;;              - this macro has been invoked more than twice with same parm
			     C	;;              - issue error message
			     C	;;***********************************************************************
			     C	
			     C	pathlabl MACRO pnam
			     C	IFNDEF LBL_&pnam                        ;;IF THIS IS THE FIRST TIME,
			     C	    LBL_&pnam = 0                       ;;DEFINE IT, INITIALLY ZERO
			     C	ELSE                                    ;;SINCE IT IS DEFINED
			     C	    IF (LBL_&pnam GT 3)                 ;;IF USED TOO MANY TIMES,
			     C	        .ERR NON-UNIQUE OPERAND ON PATHLABL
			     C	        EXITM                           ;;ABORT THIS GENERATION
			     C	    ENDIF
			     C	ENDIF
			     C	
			     C	IF (LBL_&pnam EQ 0) OR (LBL_&pnam EQ 2) ;;ready for START?
			     C	    $$A_START_&pnam:                    ;;create START label
			     C	    PUBLIC $$A_START_&pnam              ;;make it public
			     C	ELSE                                    ;;SINCE SWITCH MAY BE 1 OR 3,
			     C	    $$A_STOP_&pnam:                     ;;create STOP label
			     C	    PUBLIC $$A_STOP_&pnam               ;;make it public
			     C	ENDIF
			     C	LBL_&pnam = LBL_&pnam + 1               ;;INCREMENT SWITCH
			     C	ENDM
				
 0000				CSEG	SEGMENT PARA PUBLIC 'CODE'	;AN000;
					ASSUME	CS:CSEG 		;AN000;ESTABLISHED BY CALLER
					ASSUME	SS:CSEG 		;AN000;ESTABLISHED BY CALLER
					ASSUME	DS:CSEG 		;AN000;ESTABLISHED BY CALLER
					ASSUME	ES:CSEG 		;AN000;ESTABLISHED BY CALLER
				
					PUBLIC	SYSPARSE		;AN000;SUBROUTINE ENTRY POINT
				
 = 0000				DATESW	=	0			;AN000;SUPPRESS DATE CHECKING
 = 0000				TIMESW	=	0			;AN000;SUPPRESS TIME CHECKING
 = 0000				CMPXSW	=	0			;AN000;SUPPRESS CHECKING COMPLEX LIST
 = 0000				NUMSW	=	0			;AN000;SUPPRESS CHECKING NUMERIC VALUE
 = 0000				KEYSW	=	0			;AN000;SUPPRESS KEYWORD SUPPORT
 = 0000				VAL1SW	=	0			;AN000;SUPPRESS SUPPORT OF VALUE DEFINITION 1
 = 0000				VAL2SW	=	0			;AN000;SUPPRESS SUPPORT OF VALUE DEFINITION 2
 = 0000				VAL3SW	=	0			;AN000;SUPPRESS SUPPORT OF VALUE DEFINITION 3
 = 0000				DRVSW	=	0			;AN000;SUPPRESS SUPPORT OF DRIVE ONLY FORMAT
 = 0000				QUSSW	=	0			;AN000;SUPPRESS SUPPORT OF QUOTED STRING FORMAT
 = 0001				BASESW	=	1			;AN012;SPECIFY, PSDATA POINTED TO BY "DS"
 = 0000				INCSW	=	0			;AN013;PSDATA.INC IS ALREADY INCLUDED
					INCLUDE PSDATA.INC
			     C	;*******************************************************************
			     C	; Parser include file
			     C	;*******************************************************************
			     C	;
			     C	;**** Default assemble switches definition *************************
			     C	
			     C	
			     C	
			     C	
			     C	
			     C	
			     C	
			     C	
			     C	
			     C	
			     C	
			     C	
			     C	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-3


			     C	
			     C	
			     C	
			     C	;**** Equation field
			     C	;-------- Character code definition
			     C	
 = 0081                      C	$P_DBSP1	   equ	81h		;AN000; 1st byte of DBCS blank
 = 0040                      C	$P_DBSP2	   equ	40h		;AN000; 2nd byte of DBCS blank
 = 002E                      C	$P_Period	   equ	"."             ;AN020;
 = 002F                      C	$P_Slash	   equ	"/"             ;AN020;
 = 0020                      C	$P_Space	   equ	" "             ;AN000; SBCS blank
 = 002C                      C	$P_Comma	   equ	","             ;AN000;
 = 002F                      C	$P_Switch	   equ	"/"             ;AN000;
 = 003D                      C	$P_Keyword	   equ	"="             ;AN000;
 = 003A                      C	$P_Colon	   equ	":"             ;AN000;
 = 002B                      C	$P_Plus 	   equ	"+"             ;AN000;
 = 002D                      C	$P_Minus	   equ	"-"             ;AN000;
 = 0029                      C	$P_Rparen	   equ	")"             ;AN000;
 = 0028                      C	$P_Lparen	   equ	"("             ;AN000;
			     C	;(deleted ;AN025;) $P_SQuote	      equ  "'"
 = 0022                      C	$P_DQuote	   equ	'"'             ;AN000;
 = 0000                      C	$P_NULL 	   equ	0		;AN000;
 = 0009                      C	$P_TAB		   equ	9		;AN000;
 = 000D                      C	$P_CR		   equ	0Dh		;AN000;
 = 000A                      C	$P_LF		   equ	0Ah		;AN000;
 = 0080                      C	$P_ASCII80	   equ	80h		;AN000; ASCII 80h character code
			     C	
			     C	;-------- Masks
 = 0020                      C	$P_Make_Lower	   equ	20h		;AN000; make lower case character
 = 00DF                      C	$P_Make_Upper	   equ	0ffh-$P_Make_Lower ;AN000; make upper case character
			     C	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-4


			     C			   PAGE 		   ;AN000;
			     C	;-------- DOS function call related equs
			     C	
 = 3800                      C	$P_DOS_Get_CDI	   equ	3800h		;AN000; get country dependent information
			     C						; by this call, following information
			     C	$P_CDI		   struc		;AN000; is returned.
 0000  0000                  C	$P_CDI_DateF	   dw	0		;AN000;
 0002  00 00 00 00 00        C	$P_CDI_Money	   db	0,0,0,0,0	;AN000;
 0007  00 00                 C	$P_CDI_1000	   db	0,0		;AN000;
 0009  00 00                 C	$P_CDI_Dec	   db	0,0		;AN000;
 000B  00 00                 C	$P_CDI_DateS	   db	0,0		;AN000;
 000D  00 00                 C	$P_CDI_TimeS	   db	0,0		;AN000;
 000F  00                    C			   db	0		;AN000;
 0010  00                    C			   db	0		;AN000;
 0011  00                    C	$P_CDI_TimeF	   db	0		;AN000;
 0012  0000 0000             C			   dw	0,0		;AN000;
 0016  00 00                 C			   db	0,0		;AN000;
 0018  0005[                 C			   dw	5 dup(0)	;AN000;
	   0000              C	
			 ]   C	
			     C	
 0022                        C	$P_CDI		   ends 		;AN000;
			     C	
 = 0000                      C	$P_Date_MDY	   equ	0		;AN000;
 = 0001                      C	$P_Date_DMY	   equ	1		;AN000;
 = 0002                      C	$P_Date_YMD	   equ	2		;AN000;
			     C	;-------------
 = 6300                      C	$P_DOS_GetEV	   equ	6300h		;AN000; get DBCS EV call
			     C						;AN000; DS:SI will points to DBCS EV
			     C	;-------------
 = 0065                      C	$P_DOS_Get_TBL	   equ	65h		;AN000; get uppercase table call
			     C						;AN000; following parameters are set
			     C						;AN000; to get casemap table.
 =-0001                      C	$P_DOSTBL_Def	   equ	-1		;AN000; get default
 = 0005                      C	$P_DOSTBL_BL	   equ	5		;AN000; buffer length for Tbl pointer
 = 0004                      C	$P_DOSTBL_File	   equ	4		;AN000; get file uppercase table
 = 0002                      C	$P_DOSTBL_Char	   equ	2		;AN000; get character uppercase table
			     C						; By this call following information
			     C						; is returned.
			     C	$P_DOS_TBL	   struc		;AN000;
 0000  00                    C	$P_DOS_InfoID	   db	0		;AN000; information id for the table
 0001  0000                  C	$P_DOS_TBL_Off	   dw	0		;AN000; offset address of the table
 0003  0000                  C	$P_DOS_TBL_Seg	   dw	0		;AN000; segment address of the table
 0005                        C	$P_DOS_TBL	   ends 		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-5


			     C			   PAGE 		;AN000;
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	; PARMS 	LABEL	BYTE
			     C	;		DW	PARMSX
			     C	;		DB	2			; NUMBER OF STRINGS (0, 1, 2)
			     C	;		DB	length			; LENGTH OF THE NEXT LIST, 0 IF NONE
			     C	;		DB	" .. "                  ; EXTRA DELIMITER LIST,
			     C	;						; TYPICAL ARE ";", "="
			     C	;						; "," & WHITESPACE ALWAYS
			     C	;		DB	length			; LENGTH OF THE NEXT LIST, 0 IF NONE
			     C	;		DB	" .. "                  ; EXTRA END OF LINE LIST, CR, LF OR 0 ALWAYS
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	
			     C	;-------------------------------- PARMS block structure
			     C	$P_PARMS_Blk	   struc		;AN000;
 0000  0000                  C	$P_PARMSX_Address  dw	0		;AN000; Address of PARMSX
 0002  00                    C	$P_Num_Extra	   db	0		;AN000; Number of extra stuff
 0003  00                    C	$P_Len_Extra_Delim db	0		;AN000; Length of extra delimiter
 0004                        C	$P_PARMS_Blk	   ends 		;AN000;
			     C	
 = 0004                      C	$P_Len_PARMS	   equ	4		;AN000;
 = 0000                      C	$P_I_Use_Default   equ	0		;AN000; no extra stuff specified
 = 0001                      C	$P_I_Have_Delim    equ	1		;AN000; extra delimiter specified
 = 0002                      C	$P_I_Have_EOL	   equ	2		;AN000; extra EOL specified
			     C	
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	; PARMSX	LABEL	BYTE
			     C	;		DB	minp,maxp		; MIN, MAX POSITIONAL OPERANDS ALLOWED
			     C	;		DW	CONTROL 		; DESCRIPTION OF POSITIONAL 1
			     C	;		:				; REPEATS maxp-1 TIMES
			     C	;		DB	maxs			; # OF SWITCHES
			     C	;		DW	CONTROL 		; DESCRIPTION OF SWITCH 1
			     C	;		:				; REPEATS maxs-1 TIMES
			     C	;		DB	maxk			; # OF KEYWORD
			     C	;		DW	CONTROL 		; DESCRIPTION OF KEYWORD 1
			     C	;		:				; REPEATS maxk-1 TIMES
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	
			     C	;-------------------------------- PARMSX block structure
			     C	$P_PARMSX_Blk	   struc		;AN000;
 0000  00                    C	$P_MinP 	   db	0		;AN000; Minimum positional number
 0001  00                    C	$P_Maxp 	   db	0		;AN000; Maximum positional number
 0002  0000                  C	$P_1st_Control	   dw	0		;AN000; Address of the 1st CONTROL block
 0004                        C	$P_PARMSX_Blk	   ends 		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-6


			     C			   PAGE 		;AN000;
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	; << Control field definition  >>
			     C	;
			     C	;
			     C	;CONTROL   LABEL   BYTE
			     C	;	   DW	   MATCH_FLAGS	   ; CONTROLS TYPE MATCHED
			     C	;				   ; 8000H=NUMERIC VALUE, (VALUE LIST WILL BE CHECKED)
			     C	;				   ; 4000H=SIGNED NUMERIC VALUE (VALUE LIST WILL BE CHECKED)
			     C	;				   ; 2000H=SIMPLE STRING(VALUE LIST WILL BE CHECKED)
			     C	;				   ; 1000H=DATE STRING (VALUE LIST WON'T BE CHECKED)
			     C	;				   ; 0800H=TIME STRING (VALUE LIST WON'T BE CHECKED)
			     C	;				   ; 0400H=COMPLEX LIST (VALUE LIST WON'T BE CHECKED)
			     C	;				   ; 0200H=FILE SPEC (VALUE LIST WON'T BE CHECKED)
			     C	;				   ; 0100H=DRIVE ONLY (VALUE LIST WON'T BE CHECKED)
			     C	;				   ; 0080H=QUOTED STRING (VALUE LIST WON'T BE CHECKED)
			     C	;				   ; 0010H=IGNORE ":" AT END IN MATCH
			     C	;				   ; 0002H=REPEATS ALLOWED
			     C	;				   ; 0001H=OPTIONAL
			     C	;	   DW	   FUNCTION_FLAGS
			     C	;				   ; 0001H=CAP RESULT BY FILE TABLE
			     C	;				   ; 0002H=CAP RESULT BY CHAR TABLE
			     C	;				   ; 0010H=REMOVE ":" AT END
			     C	; (tm10)			   ; 0020H=colon is not necessary for switch
			     C	;	   DW	   RESULT	   ; RESULT BUFFER
			     C	;	   DW	   VALUES	   ; VALUE LISTS
			     C	;	   DB	   nid		   ; NUMBER OF KEYWORD/SWITCH SYNONYMS IN FOLLOWING LIST
			     C	;	   DB	   "...",0         ; IF n >0, KEYWORD 1
			     C	;	   :
			     C	;
			     C	;Note:
			     C	;    - The MATCH_FLAG is bit significant. You can set, for example, TIME bit and
			     C	;      DATE bit simalteniously.
			     C	;
			     C	;      The parser examins each bit along with the following priority.
			     C	;
			     C	;      COMPLEX -> DATE -> TIME -> NUMERIC VAL -> SIGNED NUMERIC VAL -> DRIVE ->
			     C	;      FILE SPEC -> SIMPLE STRING.
			     C	;
			     C	;
			     C	;    - When the FUNCTION_FLAG is 0001 or 0002, the STRING pointed to by a pointer
			     C	;      in the result buffer is capitalized.
			     C	;
			     C	;    - Match_Flags 0001H and 0002H have meaning only for the positional.
			     C	;
			     C	;
			     C	;    - The "...",0 (bottom most line) does require '=' or '/'. When you need a
			     C	;      switch, for example, '/A', then STRING points to;
			     C	;
			     C	;			DB    1 	; number of following synonyms
			     C	;			DB   '/A',0
			     C	;
			     C	;      When you need a keyword, for example, 'CODEPAGE=', then "...",0 will be;
			     C	;
			     C	;			DB    1 	; number of following synonyms
			     C	;			DB   'CODEPAGE=',0
			     C	;
			     C	;
			     C	;    - "..." must consist of upper case characters only because the parser
			     C	;      performs pattern matching after converting input to upper case (by
			     C	;      using the current country upper case table)
			     C	;
			     C	;
			     C	;    - One "..." can contain only one switch or keyword. If you need, for
			     C	;      example /A and /B, the format will be;
			     C	;
			     C	;			DB    2 	; number of following synonyms
			     C	;			DB    '/A',0
			     C	;			DB    '/B',0
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	
			     C	;**** Match_Flags
			     C	
 = 8000                      C	$P_Num_Val	   equ	8000h		;AN000; Numeric Value
 = 4000                      C	$P_SNum_Val	   equ	4000h		;AN000; Signed numeric value
 = 2000                      C	$P_Simple_S	   equ	2000h		;AN000; Simple string
 = 1000                      C	$P_Date_S	   equ	1000h		;AN000; Date string
 = 0800                      C	$P_Time_S	   equ	0800h		;AN000; Time string
 = 0400                      C	$P_Cmpx_S	   equ	0400h		;AN000; Complex string
 = 0200                      C	$P_File_Spc	   equ	0200h		;AN000; File Spec
 = 0100                      C	$P_Drv_Only	   equ	0100h		;AN000; Drive Only
 = 0080                      C	$P_Qu_String	   equ	0080h		;AN000; Quoted string
 = 0010                      C	$P_Ig_Colon	   equ	0010h		;AN000; Ignore colon at end in match
 = 0002                      C	$P_Repeat	   equ	0002h		;AN000; Repeat allowed
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-7


 = 0001                      C	$P_Optional	   equ	0001h		;AN000; Optional
			     C	
			     C	;**** Function flags
			     C	
 = 0001                      C	$P_CAP_File	   equ	0001h		;AN000; CAP result by file table
 = 0002                      C	$P_CAP_Char	   equ	0002h		;AN000; CAP result by character table
 = 0010                      C	$P_Rm_Colon	   equ	0010h		;AN000; Remove ":" at the end
 = 0020                      C	$P_colon_is_not_necessary equ 0020h	;AN000;(tm10) /+10 and /+:10
			     C	
			     C	;-------------------------------- Control block structure
			     C	$P_Control_Blk	   struc		;AN000;
 0000  0000                  C	$P_Match_Flag	   dw	0		;AN000; Controls type matched
 0002  0000                  C	$P_Function_Flag   dw	0		;AN000; Function should be taken
 0004  0000                  C	$P_Result_Buf	   dw	0		;AN000; Result buffer address
 0006  0000                  C	$P_Value_List	   dw	0		;AN000; Value list address
 0008  00                    C	$P_nid		   db	0		;AN000; # of keyword/SW synonyms
 0009  00                    C	$P_KeyorSW	   db	0		;AN000; keyword or sw
 000A                        C	$P_Control_Blk	   ends 		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-8


			     C			   PAGE 		;AN000;
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	; << Value List Definition >>
			     C	;
			     C	;VALUES 	LABEL	BYTE
			     C	;		DB	nval			; NUMBER OF VALUE DEFINITIONS (0 - 3)
			     C	;	     Ú
			     C	;	     ³	DB	nrng			; NUMBER OF RANGES
			     C	;	     ³ ÚDB	ITEM_TAG		; RETURN VALUE IF RANGE MATCHED
			     C	;	     ³ ÀDD	X,Y			; RANGE OF VALUES
			     C	;	     ³	:
			     C	;	     ³	DB	nnval			; NUMBER OF CHOICES
			     C	;	     ³ ÚDB	ITEM_TAG		; RETURN VALUE IF NUMBER CHOICE MATCHED
			     C	;	     ³ ÀDD	VALUE			; SPECIFIC CHOICE IF NUMBER
			     C	;	     ³	:
			     C	;	     ³	DB	nstrval 		; NUMBER OF CHOICES
			     C	;	     ³ ÚDB	ITEM_TAG		; RETURN VALUE IF STRING CHOICE MATCHED
			     C	;	     ³ ÀDW	STRING			; SPECIFIC CHOICE IF STING
			     C	;	     À	:
			     C	;
			     C	;STRING 	DB	"...",0                 ; ASCIIZ STRING IMAGE
			     C	;
			     C	;Note:
			     C	;    - ITEM_TAG must not be 0FFH, which will be used in the result buffer
			     C	;      when no choice lists are provided.
			     C	;
			     C	;    - STRING must consist of upper case characters only because the parser
			     C	;      performs pattern matching after converting input to upper case (by
			     C	;      using the current country upper case table)
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	
 = 0000                      C	$P_nval_None	   equ	0		;AN000; no value list ID
 = 0001                      C	$P_nval_Range	   equ	1		;AN000; range list ID
 = 0002                      C	$P_nval_Value	   equ	2		;AN000; value list ID
 = 0003                      C	$P_nval_String	   equ	3		;AN000; string list ID
 = 0009                      C	$P_Len_Range	   equ	9		;AN000; Length of a range choice(two DD plus one DB)
 = 0005                      C	$P_Len_Value	   equ	5		;AN000; Length of a value choice(one DD plus one DB)
 = 0003                      C	$P_Len_String	   equ	3		;AN000; Length of a string choice(one DW plus one DB)
 = 0000                      C	$P_No_nrng	   equ	0		;AN000; (tm07) no nrng. nnval must not be 0.
			     C	
			     C	$P_Val_List	   struc		;AN000;
 0000  00                    C	$P_NumofList	   db	0		;AN000; number of following choice
 0001  0000                  C	$P_Val_XL	   dw	0		;AN000; lower word of value
 0003  0000                  C	$P_Val_XH	   dw	0		;AN000; higher word of value
 0005  0000                  C	$P_Val_YL	   dw	0		;AN000; lower word of another value
 0007  0000                  C	$P_Val_YH	   dw	0		;AN000; higher word of another value
 0009                        C	$P_Val_List	   ends 		;AN000;
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-9


			     C			   PAGE 		;AN000;
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	; << Result Buffer Definition  >>
			     C	;
			     C	;RESULT 	LABEL	BYTE			; BELOW FILLED IN FOR DEFAULTS
			     C	;		DB	type			; TYPE RETURNED: 0=RESERVED,
			     C	;						;	1=NUMBER, 2=LIST INDEX,
			     C	;						;	3=STRING, 4=COMPLEX,
			     C	;						;	5=FILESPEC, 6=DRIVE
			     C	;						;	7=DATE, 8=TIME
			     C	;						;	9=QUOTED STRING
			     C	;		DB	ITEM_TAG		; MATCHED ITEM TAG
			     C	;
			     C	;		dw	synonym@		; es:@ points to found SYNONYM if provided.
			     C	;
			     C	;
			     C	;	    Ú	DD	n			; VALUE IF NUMBER
			     C	;	    ³ or
			     C	;	    ³	DW	i			; INDEX (OFFSET) INTO VALUE LIST
			     C	;	    ³					; (ES presents Segment address)
			     C	;	    ³ or
			     C	;	    ³	DD	STRING			; OFFSET OF STRING VALUE
			     C	;	    ³ or
			     C	;	    ³	DB	drv			; DRIVE NUMBER (1-A, 2-B,..., 26-Z)
			     C	;	    ³ or
			     C	;	    ³	DW	YEAR	   ;(1980-2099)  IN CASE OF DATE
			     C	;	    ³	DB	MONTH	   ;(1-12)	 Note: Range check is not performed.
			     C	;	    ³	DB	DATE	   ;(1-31)	       0 is filled when the corresponding field was 
				not specified.
			     C	;	    ³ or
			     C	;	    ³	DB	HOUR	   ;(0-23)	  IN CASE OF TIME
			     C	;	    ³	DB	MINUTES    ;(0-59)	  Note: Range check is not performed .
			     C	;	    ³	DB	SECONDS    ;(0-59)		0 is filled when the corresponding field was
				 not specified .
			     C	;	    ³	DB	HUNDREDTHS ;(0-99)
			     C	;	    À
			     C	;
			     C	;
			     C	;Note: ITEM_TAG is 0FFH when the caller does not specify the choice
			     C	;      list.
			     C	;
			     C	;      YEAR: If the input value for the year is less than 100, parser
			     C	;	     adds 1900 to it.  For example, when 87 is input to parser for
			     C	;	     the year value, he returns 1987.
			     C	;---------------------------------------------------------------------------------------------------
				------
			     C	
			     C	;-------------------------------- Result block structure
			     C	$P_Result_Blk	   struc		;AN000;
 0000  00                    C	$P_Type 	   db	0		;AN000; Type returned
 0001  00                    C	$P_Item_Tag	   db	0		;AN000; Matched item tag
 0002  0000                  C	$P_SYNONYM_Ptr	   dw	0		;AN000; pointer to Synonym list returned
 0004  00 00 00 00           C	$P_Picked_Val	   db	0,0,0,0 	;AN000; value
 0008                        C	$P_Result_Blk	   ends 		;AN000;
			     C	;--------------------------------
			     C	;**** values for the type field in the result block
			     C	
 = 0000                      C	$P_EOL		   equ	0		;AN000; End of line
 = 0001                      C	$P_Number	   equ	1		;AN000; Number
 = 0002                      C	$P_List_Idx	   equ	2		;AN000; List Index
 = 0003                      C	$P_String	   equ	3		;AN000; String
 = 0004                      C	$P_Complex	   equ	4		;AN000; Complex
 = 0005                      C	$P_File_Spec	   equ	5		;AN000; File Spec
 = 0006                      C	$P_Drive	   equ	6		;AN000; Drive
 = 0007                      C	$P_Date_F	   equ	7		;AN000; Date
 = 0008                      C	$P_Time_F	   equ	8		;AN000; Time
 = 0009                      C	$P_Quoted_String   equ	9		;AN000; Quoted String
			     C	
 = 00FF                      C	$P_No_Tag	   equ	0FFH		;AN000; No ITEM_TAG found
			     C	;**** Return code
			     C	;
			     C	; following return code will be returned in the AX register.
			     C	
 = 0000                      C	$P_No_Error	   equ	0		;AN000; No error
 = 0001                      C	$P_Too_Many	   equ	1		;AN000; Too many operands
 = 0002                      C	$P_Op_Missing	   equ	2		;AN000; Required operand missing
 = 0003                      C	$P_Not_In_SW	   equ	3		;AN000; Not in switch list provided
 = 0004                      C	$P_Not_In_Key	   equ	4		;AN000; Not in keyword list provided
 = 0006                      C	$P_Out_Of_Range    equ	6		;AN000; Out of range specified
 = 0007                      C	$P_Not_In_Val	   equ	7		;AN000; Not in value list provided
 = 0008                      C	$P_Not_In_Str	   equ	8		;AN000; Not in string list provided
 = 0009                      C	$P_Syntax	   equ	9		;AN000; Syntax error
 =-0001                      C	$P_RC_EOL	   equ	-1		;AN000; End of command line
			     C	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Page     1-10


			     C			   PAGE 		;AN000;
			     C	;********************** Local Data *************************************
 0000  0000                  C	$P_ORDINAL	   dw	0		;AN000; Operand ordinal save area
 0002  0000                  C	$P_RC		   dw	0		;AN000; Return code from parser
 0004  0000                  C	$P_SI_Save	   dw	0		;AN000; Pointer of command buffer
 0006  0000                  C	$P_DX		   dw	0		;AN000; Return result buffer address
 0008  00                    C	$P_Terminator	   db	0		;AN000; Terminator code (ASCII)
 0009  0000                  C	$P_DBCSEV_OFF	   dw	0		;AN000; Offset of DBCS EV
 000B  0000                  C	$P_DBCSEV_SEG	   dw	0		;AN000; Segment of DBCS EV
 000D  0000                  C	$P_Flags	   dw	0		;AN000; Parser internal flags
 = 000D                      C	$P_Flags1	   equ	byte ptr $P_Flags ;AN038; to reference first byte flags
 = 000E                      C	$P_Flags2	   equ	byte ptr $P_Flags+1 ;AN038; to reference second byte flags only
			     C	
			     C	;in second byte of $P_Flags, referenced as $P_Flags2:
 = 0001                      C	$P_equ		   equ	01h	      ;AN000; "=" packed in string buffet
 = 0002                      C	$P_Neg		   equ	02h	      ;AN000; Negative value
 = 0004                      C	$P_Time12	   equ	04h	      ;AN000; set when PM is specified
 = 0008                      C	$P_Key_Cmp	   equ	08h	      ;AN000; set when keyword compare
 = 0010                      C	$P_SW_Cmp	   equ	10h	      ;AN000; set when switch compare
 = 0020                      C	$P_Extra	   equ	20h	      ;AN000; set when extra delimiter found
 = 0040                      C	$P_SW		   equ	40h	      ;AN000; set when switch found (tm08)
 = 0080                      C	$P_Signed	   equ	80h	      ;AN000; signed numeric specified
			     C	
			     C	;in first byte of $P_Flags, referenced as $P_Flags1:
 = 0001                      C	$P_time12am	   equ	01h	      ;AN038; set when AM is specified on time
 = 0002                      C	$P_TIME_AGAIN	   EQU	02H	      ;AN039; SET WHEN READY TO RE-PARSE TIME
			     C	
 000F  0000                  C	$P_SaveSI_Cmpx	   dw	0		;AN000; save si for later use by complex
 0011  0000                  C	$P_KEYorSW_Ptr	   dw	0		;AN000; points next to "=" or ":" code
 0013  0000                  C	$P_Save_EOB	   dw	0		;AN000; save pointer to EOB
 0015  0000                  C	$P_Found_SYNONYM   dw	0		;AN000; es:@ points to found synonym
			     C	
 0017  0080[                 C	$P_STRING_BUF	   db	128 dup(0)	;AN000; Pick a operand from command line
	   00                C	
			 ]   C	
			     C	
 = 0097                      C	$P_STRING_BUF_END  equ	$		;AN000;
 0097  FF                    C	$P_Char_CAP_Ptr    db	0ffh		;AN000; info id
 0098  0000                  C			   dw	0		;AN000; offset	of char case map table
 009A  0000                  C			   dw	0		;AN000; segment of char case map table
			     C	IF		   CAPSW		;AN000;(Check if uppercase conversion is supported)
 009C  FF                    C	$P_File_CAP_Ptr    db	0ffh		;AN000; info id
 009D  0000                  C			   dw	0		;AN000; offset	of file case map table
 009F  0000                  C			   dw	0		;AN000; segment of file case map table
			     C	ENDIF					;AN000;(of CAPSW)
			     C	; (tm06) IF	   FileSW		;AN000;(Check if file spec is supported)
			     C	IF		   FileSW+DrvSW 	;AN000;(Check if file spec is supported)
 00A1  5B 5D 7C 3C 3E 2B     C	$P_FileSp_Char	   db	'[]|<>+=;"'     ;AN000; delimitter of file spec
       3D 3B 22              C	
 = 0009                      C	$P_FileSp_Len	   equ	$-$P_FileSp_Char ;AN000;
			     C	ENDIF					;AN000;(of FileSW)
			     C	; (tm05) IF	   QusSW		;AN000;(Check if quoted string is supported)
			     C	;(deleted ;AN025;) IF		      QusSW+CmpxSW	   ; (tm05) ;AN000;(Check if quoted string i
				s supported)
			     C	;(deleted ;AN025;) $P_SorD_Quote      db   0		   ;AN000; keep double or single quote
			     C	;(deleted ;AN025;) ENDIF				   ;AN000;(of QueSW)
			     C	
			     C	; delimiter parsing
 = 0001                      C	$P_colon_period    equ	01		;AN032; check for colon & period
 = 0002                      C	$P_period_only	   equ	02		;AN032; check only for period
			     C	
			     C	;filespec error flag
 00AA  00                    C	$P_err_flag	   db	00		;AN033; flag set if filespec parsing error
			     C						;AN033;  was detected.
 = 0001                      C	$P_error_filespec  equ	01		;AN033; mask to set flag
			     C	;***********************************************************************
					PATHLABL TREESYSP		;AN013;
 00AB                        1	    $$A_START_TREESYSP:                    ; 
				;	INCLUDE PARSE.ASM		 ;GENERATED CODE SUPPRESSED FROM LISTING
				.LIST					;AN000;
				.CREF					;AN000;
					PATHLABL TREESYSP		;AN013;
 0682                        1	    $$A_STOP_TREESYSP:                     ; 
 0682				CSEG	ENDS				;AN000;
					END				;AN000;

Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Symbols-1


Macros:

		N a m e			Lines

PATHLABL . . . . . . . . . . . .  	  16

Structures and Records:

                N a m e                 Width   # fields
                                        Shift   Width   Mask    Initial

$P_CDI . . . . . . . . . . . . .  	0022	000C
  $P_CDI_DATEF . . . . . . . . .  	0000
  $P_CDI_MONEY . . . . . . . . .  	0002
  $P_CDI_1000  . . . . . . . . .  	0007
  $P_CDI_DEC . . . . . . . . . .  	0009
  $P_CDI_DATES . . . . . . . . .  	000B
  $P_CDI_TIMES . . . . . . . . .  	000D
  $P_CDI_TIMEF . . . . . . . . .  	0011
$P_CONTROL_BLK . . . . . . . . .  	000A	0006
  $P_MATCH_FLAG  . . . . . . . .  	0000
  $P_FUNCTION_FLAG . . . . . . .  	0002
  $P_RESULT_BUF  . . . . . . . .  	0004
  $P_VALUE_LIST  . . . . . . . .  	0006
  $P_NID . . . . . . . . . . . .  	0008
  $P_KEYORSW . . . . . . . . . .  	0009
$P_DOS_TBL . . . . . . . . . . .  	0005	0003
  $P_DOS_INFOID  . . . . . . . .  	0000
  $P_DOS_TBL_OFF . . . . . . . .  	0001
  $P_DOS_TBL_SEG . . . . . . . .  	0003
$P_PARMSX_BLK  . . . . . . . . .  	0004	0003
  $P_MINP  . . . . . . . . . . .  	0000
  $P_MAXP  . . . . . . . . . . .  	0001
  $P_1ST_CONTROL . . . . . . . .  	0002
$P_PARMS_BLK . . . . . . . . . .  	0004	0003
  $P_PARMSX_ADDRESS  . . . . . .  	0000
  $P_NUM_EXTRA . . . . . . . . .  	0002
  $P_LEN_EXTRA_DELIM . . . . . .  	0003
$P_RESULT_BLK  . . . . . . . . .  	0008	0004
  $P_TYPE  . . . . . . . . . . .  	0000
  $P_ITEM_TAG  . . . . . . . . .  	0001
  $P_SYNONYM_PTR . . . . . . . .  	0002
  $P_PICKED_VAL  . . . . . . . .  	0004
$P_VAL_LIST  . . . . . . . . . .  	0009	0005
  $P_NUMOFLIST . . . . . . . . .  	0000
  $P_VAL_XL  . . . . . . . . . .  	0001
  $P_VAL_XH  . . . . . . . . . .  	0003
  $P_VAL_YL  . . . . . . . . . .  	0005
  $P_VAL_YH  . . . . . . . . . .  	0007

Segments and Groups:

                N a m e         	Length	 Align	Combine Class

CSEG . . . . . . . . . . . . . .  	0682	PARA	PUBLIC	'CODE'

Symbols:            

                N a m e         	Type	 Value	 Attr

BASESW . . . . . . . . . . . . .  	NUMBER	0001	

CAPSW  . . . . . . . . . . . . .  	NUMBER	0001	
CMPXSW . . . . . . . . . . . . .  	NUMBER	0000	

DATESW . . . . . . . . . . . . .  	NUMBER	0000	
DRVSW  . . . . . . . . . . . . .  	NUMBER	0000	

FARSW  . . . . . . . . . . . . .  	NUMBER	0000	
FILESW . . . . . . . . . . . . .  	NUMBER	0001	

INCSW  . . . . . . . . . . . . .  	NUMBER	0000	

KEYSW  . . . . . . . . . . . . .  	NUMBER	0000	

LBL_TREESYSP . . . . . . . . . .  	NUMBER	0004	
LFEOLSW  . . . . . . . . . . . .  	NUMBER	0001	

NUMSW  . . . . . . . . . . . . .  	NUMBER	0000	

PSDATA_SEG . . . . . . . . . . .  	ALIAS	 DS		

QUSSW  . . . . . . . . . . . . .  	NUMBER	0000	

SWSW . . . . . . . . . . . . . .  	NUMBER	0001	
SYSPARSE . . . . . . . . . . . .  	N PROC	00AB	CSEG	Global	Length = 013E
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Symbols-2



TIMESW . . . . . . . . . . . . .  	NUMBER	0000	

VAL1SW . . . . . . . . . . . . .  	NUMBER	0000	
VAL2SW . . . . . . . . . . . . .  	NUMBER	0000	
VAL3SW . . . . . . . . . . . . .  	NUMBER	0000	

$$A_START_TREESYSP . . . . . . .  	L NEAR	00AB	CSEG	Global
$$A_STOP_TREESYSP  . . . . . . .  	L NEAR	0682	CSEG	Global
$P_0099  . . . . . . . . . . . .  	N PROC	0413	CSEG	Length = 000E
$P_0099ERR . . . . . . . . . . .  	L NEAR	041F	CSEG
$P_ASCII80 . . . . . . . . . . .  	NUMBER	0080	
$P_BRIDGE  . . . . . . . . . . .  	L NEAR	034C	CSEG
$P_CAPS_RET  . . . . . . . . . .  	L NEAR	0412	CSEG
$P_CAP_CHAR  . . . . . . . . . .  	NUMBER	0002	
$P_CAP_FILE  . . . . . . . . . .  	NUMBER	0001	
$P_CHAR_CAP_PTR  . . . . . . . .  	L BYTE	0097	CSEG
$P_CHECK_MATCH_FLAGS . . . . . .  	N PROC	0326	CSEG	Length = 0062
$P_CHKDFIN . . . . . . . . . . .  	L NEAR	05FE	CSEG
$P_CHK_DBCS  . . . . . . . . . .  	N PROC	0631	CSEG	Length = 0051
$P_CHK_DELIM . . . . . . . . . .  	N PROC	05B8	CSEG	Length = 005C
$P_CHK_DELIM00 . . . . . . . . .  	L NEAR	05D0	CSEG
$P_CHK_DELIM01 . . . . . . . . .  	L NEAR	05E0	CSEG
$P_CHK_DELIM_EXIT  . . . . . . .  	L NEAR	05FE	CSEG
$P_CHK_DELIM_EXIT0 . . . . . . .  	L NEAR	0601	CSEG
$P_CHK_DELIM_LOOP  . . . . . . .  	L NEAR	05F4	CSEG
$P_CHK_DELIM_NZ  . . . . . . . .  	L NEAR	05FC	CSEG
$P_CHK_EOL . . . . . . . . . . .  	N PROC	0582	CSEG	Length = 0036
$P_CHK_EOL_EXIT  . . . . . . . .  	L NEAR	05B5	CSEG
$P_CHK_EOL_LOOP  . . . . . . . .  	L NEAR	05AB	CSEG
$P_CHK_EOL_NZ  . . . . . . . . .  	L NEAR	05B3	CSEG
$P_CHK_IF_DATA_REQUIRED  . . . .  	L NEAR	027B	CSEG
$P_CHK_KEY_CONTROL . . . . . . .  	N PROC	0218	CSEG	Length = 0002
$P_CHK_POS_CONTROL . . . . . . .  	N PROC	01E9	CSEG	Length = 002F
$P_CHK_SWITCH  . . . . . . . . .  	N PROC	0614	CSEG	Length = 001D
$P_CHK_SW_CONTROL  . . . . . . .  	N PROC	024A	CSEG	Length = 005A
$P_CHK_SW_ERR0 . . . . . . . . .  	L NEAR	0296	CSEG
$P_CHK_SW_EXIT . . . . . . . . .  	L NEAR	0299	CSEG
$P_CHK_SW_SINGLE_EXIT  . . . . .  	L NEAR	02A3	CSEG
$P_CMPX_S  . . . . . . . . . . .  	NUMBER	0400	
$P_COLON . . . . . . . . . . . .  	NUMBER	003A	
$P_COLON_IS_NOT_NECESSARY  . . .  	NUMBER	0020	
$P_COLON_PERIOD  . . . . . . . .  	NUMBER	0001	
$P_COMMA . . . . . . . . . . . .  	NUMBER	002C	
$P_COMPLEX . . . . . . . . . . .  	NUMBER	0004	
$P_CPC00 . . . . . . . . . . . .  	L NEAR	01F6	CSEG
$P_CPC01 . . . . . . . . . . . .  	L NEAR	0213	CSEG
$P_CPC02 . . . . . . . . . . . .  	L NEAR	0208	CSEG
$P_CPC_EXIT  . . . . . . . . . .  	L NEAR	0216	CSEG
$P_CR  . . . . . . . . . . . . .  	NUMBER	000D	
$P_CSW00 . . . . . . . . . . . .  	L NEAR	0290	CSEG
$P_DATE_DMY  . . . . . . . . . .  	NUMBER	0001	
$P_DATE_F  . . . . . . . . . . .  	NUMBER	0007	
$P_DATE_MDY  . . . . . . . . . .  	NUMBER	0000	
$P_DATE_S  . . . . . . . . . . .  	NUMBER	1000	
$P_DATE_YMD  . . . . . . . . . .  	NUMBER	0002	
$P_DBCS00  . . . . . . . . . . .  	L NEAR	0660	CSEG
$P_DBCS01  . . . . . . . . . . .  	L NEAR	0679	CSEG
$P_DBCS02  . . . . . . . . . . .  	L NEAR	0658	CSEG
$P_DBCSEV_OFF  . . . . . . . . .  	L WORD	0009	CSEG
$P_DBCSEV_SEG  . . . . . . . . .  	L WORD	000B	CSEG
$P_DBCS_EXIT . . . . . . . . . .  	L NEAR	067E	CSEG
$P_DBCS_LOOP . . . . . . . . . .  	L NEAR	0668	CSEG
$P_DBSP1 . . . . . . . . . . . .  	NUMBER	0081	
$P_DBSP2 . . . . . . . . . . . .  	NUMBER	0040	
$P_DCC00 . . . . . . . . . . . .  	L NEAR	03E8	CSEG
$P_DCC01 . . . . . . . . . . . .  	L NEAR	0403	CSEG
$P_DCC_GO  . . . . . . . . . . .  	L NEAR	03D8	CSEG
$P_DCS00 . . . . . . . . . . . .  	L NEAR	03C1	CSEG
$P_DCS01 . . . . . . . . . . . .  	L NEAR	03C2	CSEG
$P_DCS_EXIT  . . . . . . . . . .  	L NEAR	03C5	CSEG
$P_DCS_LOOP  . . . . . . . . . .  	L NEAR	03AF	CSEG
$P_DOSTBL_BL . . . . . . . . . .  	NUMBER	0005	
$P_DOSTBL_CHAR . . . . . . . . .  	NUMBER	0002	
$P_DOSTBL_DEF  . . . . . . . . .  	NUMBER	-0001	
$P_DOSTBL_FILE . . . . . . . . .  	NUMBER	0004	
$P_DOS_GETEV . . . . . . . . . .  	NUMBER	6300	
$P_DOS_GET_CDI . . . . . . . . .  	NUMBER	3800	
$P_DOS_GET_TBL . . . . . . . . .  	NUMBER	0065	
$P_DO_CAPS_CHAR  . . . . . . . .  	N PROC	03C8	CSEG	Length = 004B
$P_DO_CAPS_STRING  . . . . . . .  	N PROC	03AB	CSEG	Length = 001D
$P_DQUOTE  . . . . . . . . . . .  	NUMBER	0022	
$P_DRIVE . . . . . . . . . . . .  	NUMBER	0006	
$P_DRV_ONLY  . . . . . . . . . .  	NUMBER	0100	
$P_DRV_ONLY_EXIT . . . . . . . .  	L NEAR	0549	CSEG
$P_DX  . . . . . . . . . . . . .  	L WORD	0006	CSEG
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Symbols-3


$P_EOL . . . . . . . . . . . . .  	NUMBER	0000	
$P_EQU . . . . . . . . . . . . .  	NUMBER	0001	
$P_ERROR_FILESPEC  . . . . . . .  	NUMBER	0001	
$P_ERR_FLAG  . . . . . . . . . .  	L BYTE	00AA	CSEG
$P_EXIT_AT_EXTRA . . . . . . . .  	L NEAR	0580	CSEG
$P_EXTRA . . . . . . . . . . . .  	NUMBER	0020	
$P_FILEF00 . . . . . . . . . . .  	L NEAR	052D	CSEG
$P_FILEF01 . . . . . . . . . . .  	L NEAR	0529	CSEG
$P_FILEF02 . . . . . . . . . . .  	L NEAR	053A	CSEG
$P_FILEF03 . . . . . . . . . . .  	L NEAR	0515	CSEG
$P_FILEF_ERR . . . . . . . . . .  	L NEAR	0501	CSEG
$P_FILEF_LOOP0 . . . . . . . . .  	L NEAR	04EA	CSEG
$P_FILEF_LOOP1 . . . . . . . . .  	L NEAR	0517	CSEG
$P_FILEF_RLT . . . . . . . . . .  	L NEAR	0538	CSEG
$P_FILESP_CHAR . . . . . . . . .  	L BYTE	00A1	CSEG
$P_FILESP_CHK  . . . . . . . . .  	N PROC	054A	CSEG	Length = 0014
$P_FILESP_EXIT . . . . . . . . .  	L NEAR	055B	CSEG
$P_FILESP_LEN  . . . . . . . . .  	NUMBER	0009	
$P_FILESP_LOOP . . . . . . . . .  	L NEAR	0553	CSEG
$P_FILE_CAP_PTR  . . . . . . . .  	L BYTE	009C	CSEG
$P_FILE_FORMAT . . . . . . . . .  	N PROC	04E3	CSEG	Length = 0067
$P_FILE_SPC  . . . . . . . . . .  	NUMBER	0200	
$P_FILE_SPEC . . . . . . . . . .  	NUMBER	0005	
$P_FILL_RESULT . . . . . . . . .  	N PROC	02A4	CSEG	Length = 0082
$P_FIN . . . . . . . . . . . . .  	L NEAR	00DC	CSEG
$P_FLAGS . . . . . . . . . . . .  	L WORD	000D	CSEG
$P_FLAGS1  . . . . . . . . . . .  	BYTE	000D	CSEG
$P_FLAGS2  . . . . . . . . . . .  	BYTE	000E	CSEG
$P_FOUND_SYNONYM . . . . . . . .  	L WORD	0015	CSEG
$P_IG_COLON  . . . . . . . . . .  	NUMBER	0010	
$P_I_HAVE_DELIM  . . . . . . . .  	NUMBER	0001	
$P_I_HAVE_EOL  . . . . . . . . .  	NUMBER	0002	
$P_I_USE_DEFAULT . . . . . . . .  	NUMBER	0000	
$P_KEYORSW_EXIT  . . . . . . . .  	L NEAR	023B	CSEG
$P_KEYORSW_FOUND . . . . . . . .  	L NEAR	0236	CSEG
$P_KEYORSW_LOOP  . . . . . . . .  	L NEAR	0229	CSEG
$P_KEYORSW_NOT_FOUND . . . . . .  	L NEAR	0233	CSEG
$P_KEYORSW_PTR . . . . . . . . .  	L WORD	0011	CSEG
$P_KEYWORD . . . . . . . . . . .  	NUMBER	003D	
$P_KEY_CMP . . . . . . . . . . .  	NUMBER	0008	
$P_KEY_MANAGER . . . . . . . . .  	L NEAR	019E	CSEG
$P_KEY_MGR_LOOP  . . . . . . . .  	L NEAR	01BD	CSEG
$P_KEY_NOT_FOUND . . . . . . . .  	L NEAR	01CB	CSEG
$P_LEN_PARMS . . . . . . . . . .  	NUMBER	0004	
$P_LEN_RANGE . . . . . . . . . .  	NUMBER	0009	
$P_LEN_STRING  . . . . . . . . .  	NUMBER	0003	
$P_LEN_VALUE . . . . . . . . . .  	NUMBER	0005	
$P_LF  . . . . . . . . . . . . .  	NUMBER	000A	
$P_LIST_IDX  . . . . . . . . . .  	NUMBER	0002	
$P_LPAREN  . . . . . . . . . . .  	NUMBER	0028	
$P_MAKE_LOWER  . . . . . . . . .  	NUMBER	0020	
$P_MAKE_UPPER  . . . . . . . . .  	NUMBER	00DF	
$P_MAT . . . . . . . . . . . . .  	L NEAR	034A	CSEG
$P_MATCH03 . . . . . . . . . . .  	L NEAR	034F	CSEG
$P_MATCH07 . . . . . . . . . . .  	L NEAR	0364	CSEG
$P_MATCH09 . . . . . . . . . . .  	L NEAR	0372	CSEG
$P_MATCH2_EXIT . . . . . . . . .  	L NEAR	0386	CSEG
$P_MATCH_EXIT  . . . . . . . . .  	L NEAR	0372	CSEG
$P_MBP_EXIT  . . . . . . . . . .  	L NEAR	0248	CSEG
$P_MBP_LOOP  . . . . . . . . . .  	L NEAR	023E	CSEG
$P_MINUS . . . . . . . . . . . .  	NUMBER	002D	
$P_MOVEBP_NUL  . . . . . . . . .  	N PROC	023E	CSEG	Length = 000C
$P_NEG . . . . . . . . . . . . .  	NUMBER	0002	
$P_NON_DBCS  . . . . . . . . . .  	L NEAR	067D	CSEG
$P_NOT_APPLICABLE  . . . . . . .  	L NEAR	04B7	CSEG
$P_NOT_IN_KEY  . . . . . . . . .  	NUMBER	0004	
$P_NOT_IN_STR  . . . . . . . . .  	NUMBER	0008	
$P_NOT_IN_SW . . . . . . . . . .  	NUMBER	0003	
$P_NOT_IN_VAL  . . . . . . . . .  	NUMBER	0007	
$P_NO_ERROR  . . . . . . . . . .  	NUMBER	0000	
$P_NO_NRNG . . . . . . . . . . .  	NUMBER	0000	
$P_NO_SET_EXTRA  . . . . . . . .  	L NEAR	0610	CSEG
$P_NO_TAG  . . . . . . . . . . .  	NUMBER	00FF	
$P_NULL  . . . . . . . . . . . .  	NUMBER	0000	
$P_NUMBER  . . . . . . . . . . .  	NUMBER	0001	
$P_NUM_VAL . . . . . . . . . . .  	NUMBER	8000	
$P_NVAL_NONE . . . . . . . . . .  	NUMBER	0000	
$P_NVAL_RANGE  . . . . . . . . .  	NUMBER	0001	
$P_NVAL_STRING . . . . . . . . .  	NUMBER	0003	
$P_NVAL_VALUE  . . . . . . . . .  	NUMBER	0002	
$P_OPTIONAL  . . . . . . . . . .  	NUMBER	0001	
$P_OP_MISSING  . . . . . . . . .  	NUMBER	0002	
$P_ORDINAL . . . . . . . . . . .  	L WORD	0000	CSEG
$P_OUT_OF_RANGE  . . . . . . . .  	NUMBER	0006	
$P_PACK_END  . . . . . . . . . .  	L NEAR	0130	CSEG
$P_PACK_END_BACKUP_SI  . . . . .  	L NEAR	010E	CSEG
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Symbols-4


$P_PACK_END_BY_EOL . . . . . . .  	L NEAR	012F	CSEG
$P_PACK_LOOP . . . . . . . . . .  	L NEAR	00F2	CSEG
$P_PERIOD  . . . . . . . . . . .  	NUMBER	002E	
$P_PERIOD_ONLY . . . . . . . . .  	NUMBER	0002	
$P_PL00  . . . . . . . . . . . .  	L NEAR	0123	CSEG
$P_PL01  . . . . . . . . . . . .  	L NEAR	0118	CSEG
$P_PLUS  . . . . . . . . . . . .  	NUMBER	002B	
$P_POSITIONAL_MANAGER  . . . . .  	L NEAR	014E	CSEG
$P_QUOTED_STRING . . . . . . . .  	NUMBER	0009	
$P_QU_STRING . . . . . . . . . .  	NUMBER	0080	
$P_RC  . . . . . . . . . . . . .  	L WORD	0002	CSEG
$P_RCOL00  . . . . . . . . . . .  	L NEAR	039F	CSEG
$P_RCOL01  . . . . . . . . . . .  	L NEAR	03A5	CSEG
$P_RCOL_EXIT . . . . . . . . . .  	L NEAR	03A8	CSEG
$P_RCOL_LOOP . . . . . . . . . .  	L NEAR	038A	CSEG
$P_RC_EOL  . . . . . . . . . . .  	NUMBER	-0001	
$P_REMOVE_COLON  . . . . . . . .  	N PROC	0388	CSEG	Length = 0023
$P_REPEAT  . . . . . . . . . . .  	NUMBER	0002	
$P_RETURN_TO_CALLER  . . . . . .  	L NEAR	01D1	CSEG
$P_RETURN_TO_CALLER0 . . . . . .  	L NEAR	01D1	CSEG
$P_RLT00 . . . . . . . . . . . .  	L NEAR	02CB	CSEG
$P_RLT01 . . . . . . . . . . . .  	L NEAR	02D5	CSEG
$P_RLT02 . . . . . . . . . . . .  	L NEAR	02C1	CSEG
$P_RLT03 . . . . . . . . . . . .  	L NEAR	02E7	CSEG
$P_RLT04 . . . . . . . . . . . .  	L NEAR	02BD	CSEG
$P_RLT05 . . . . . . . . . . . .  	L NEAR	02F9	CSEG
$P_RLT_CAP00 . . . . . . . . . .  	L NEAR	030D	CSEG
$P_RLT_CAP01 . . . . . . . . . .  	L NEAR	0319	CSEG
$P_RLT_CAP02 . . . . . . . . . .  	L NEAR	0316	CSEG
$P_RLT_EXIT  . . . . . . . . . .  	L NEAR	0324	CSEG
$P_RM_COLON  . . . . . . . . . .  	NUMBER	0010	
$P_RPAREN  . . . . . . . . . . .  	NUMBER	0029	
$P_SAVESI_CMPX . . . . . . . . .  	L WORD	000F	CSEG
$P_SAVE_EOB  . . . . . . . . . .  	L WORD	0013	CSEG
$P_SCOM00  . . . . . . . . . . .  	L NEAR	048D	CSEG
$P_SCOM01  . . . . . . . . . . .  	L NEAR	049F	CSEG
$P_SCOM02  . . . . . . . . . . .  	L NEAR	04CB	CSEG
$P_SCOM03  . . . . . . . . . . .  	L NEAR	047F	CSEG
$P_SCOM04  . . . . . . . . . . .  	L NEAR	046A	CSEG
$P_SCOM05  . . . . . . . . . . .  	L NEAR	047C	CSEG
$P_SCOM_DIFFER . . . . . . . . .  	L NEAR	04D6	CSEG
$P_SCOM_DIFFER0  . . . . . . . .  	L NEAR	04A1	CSEG
$P_SCOM_EXIT . . . . . . . . . .  	L NEAR	04DE	CSEG
$P_SCOM_LOOP . . . . . . . . . .  	L NEAR	044C	CSEG
$P_SCOM_SAME . . . . . . . . . .  	L NEAR	04D9	CSEG
$P_SEARCH_KEYORSW  . . . . . . .  	N PROC	021A	CSEG	Length = 0024
$P_SIGNED  . . . . . . . . . . .  	NUMBER	0080	
$P_SIM00 . . . . . . . . . . . .  	L NEAR	0434	CSEG
$P_SIM01 . . . . . . . . . . . .  	L NEAR	0434	CSEG
$P_SIMPLE_S  . . . . . . . . . .  	NUMBER	2000	
$P_SIMPLE_STRING . . . . . . . .  	N PROC	0421	CSEG	Length = 0025
$P_SIM_EXIT  . . . . . . . . . .  	L NEAR	043C	CSEG
$P_SIM_EXIT0 . . . . . . . . . .  	L NEAR	043E	CSEG
$P_SINGLE_EXIT . . . . . . . . .  	L NEAR	01E7	CSEG
$P_SI_SAVE . . . . . . . . . . .  	L WORD	0004	CSEG
$P_SKIP_DELIM  . . . . . . . . .  	N PROC	055E	CSEG	Length = 0024
$P_SKIP_DELIM_CY . . . . . . . .  	L NEAR	057A	CSEG
$P_SKIP_DELIM_EXIT . . . . . . .  	L NEAR	057E	CSEG
$P_SKIP_DELIM_LOOP . . . . . . .  	L NEAR	055E	CSEG
$P_SKIP_DELIM_NCY  . . . . . . .  	L NEAR	057D	CSEG
$P_SLASH . . . . . . . . . . . .  	NUMBER	002F	
$P_SNUM_VAL  . . . . . . . . . .  	NUMBER	4000	
$P_SPACE . . . . . . . . . . . .  	NUMBER	0020	
$P_START . . . . . . . . . . . .  	L NEAR	00E0	CSEG
$P_STRING  . . . . . . . . . . .  	NUMBER	0003	
$P_STRING_BUF  . . . . . . . . .  	L BYTE	0017	CSEG	Length = 0080
$P_STRING_BUF_END  . . . . . . .  	NEAR	0097	CSEG
$P_STRING_COMP . . . . . . . . .  	N PROC	0446	CSEG	Length = 009D
$P_STRUC_L1  . . . . . . . . . .  	L NEAR	0630	CSEG
$P_STRUC_L12 . . . . . . . . . .  	L NEAR	062F	CSEG
$P_STRUC_L2  . . . . . . . . . .  	L NEAR	0626	CSEG
$P_STRUC_L5  . . . . . . . . . .  	L NEAR	0623	CSEG
$P_SW  . . . . . . . . . . . . .  	NUMBER	0040	
$P_SWITCH  . . . . . . . . . . .  	NUMBER	002F	
$P_SW_CMP  . . . . . . . . . . .  	NUMBER	0010	
$P_SW_MANAGER  . . . . . . . . .  	L NEAR	0173	CSEG
$P_SW_MGR_LOOP . . . . . . . . .  	L NEAR	0188	CSEG
$P_SW_NOT_FOUND  . . . . . . . .  	L NEAR	0196	CSEG
$P_SYNTAX  . . . . . . . . . . .  	NUMBER	0009	
$P_TAB . . . . . . . . . . . . .  	NUMBER	0009	
$P_TERMINATOR  . . . . . . . . .  	L BYTE	0008	CSEG
$P_TIME12  . . . . . . . . . . .  	NUMBER	0004	
$P_TIME12AM  . . . . . . . . . .  	NUMBER	0001	
$P_TIME_AGAIN  . . . . . . . . .  	NUMBER	0002	
$P_TIME_F  . . . . . . . . . . .  	NUMBER	0008	
$P_TIME_S  . . . . . . . . . . .  	NUMBER	0800	
Microsoft (R) Macro Assembler Version 5.10                  2/14/25 23:45:25
TREESYSP.SAL - INCLUDES THE COMMON SYSTEM PARSER ;AN000;    Symbols-5


$P_TOO_MANY  . . . . . . . . . .  	NUMBER	0001	
$P_TOO_MANY_ERROR  . . . . . . .  	L NEAR	016B	CSEG
@CPU . . . . . . . . . . . . . .  	TEXT  0101h		
@FILENAME  . . . . . . . . . . .  	TEXT  treesysp		
@VERSION . . . . . . . . . . . .  	TEXT  510		


   3648 Source  Lines
   3680 Total   Lines
    319 Symbols

  46194 + 208473 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors
