                                XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 1
                                                                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    0	      1 MODULE XPARSE (	IDENT = 'V1.2-23'		%TITLE 'XPO$PARSE_SPEC - XPORT File-spec Parser'
    0	      2 		%BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) )
    0	      3 		%BLISS36( ,ENTRY( XPO$PARSE_SPEC ),OTS='' )
    0	      4 		) =
    0	      5 BEGIN
    1	      6 
    1	      7 !
    1	      8 !			  COPYRIGHT (c) 1983 BY
    1	      9 !	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
    1	     10 !
    1	     11 ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
    1	     12 ! ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
    1	     13 ! INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
    1	     14 ! COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
    1	     15 ! OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
    1	     16 ! TRANSFERRED.
    1	     17 !
    1	     18 ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
    1	     19 ! AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
    1	     20 ! CORPORATION.
    1	     21 !
    1	     22 ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
    1	     23 ! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
    1	     24 !
    1	     25 
    1	     26 !++
    1	     27 !
    1	     28 ! FACILITY:  BLISS Library
    1	     29 !
    1	     30 ! ABSTRACT:
    1	     31 !
    1	     32 !	This module parses a system-specific file-specification.
    1	     33 !
    1	     34 ! ENVIRONMENT:  User Mode
    1	     35 !
    1	     36 ! AUTHORS:  Ward Clark,			CREATION DATE:  6 August 1980
    1	     37 !	    Linda Duffell
    1	     38 !
    1	     39 !--

XPARSE                          XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 2
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	     41 !
    1	     42 ! INCLUDE FILES:
    1	     43 !
    1	     44 
    1	     45 LIBRARY  'XPORT' ;					! Public XPORT control block and macro definitions
    1	     47 LIBRARY  'XPOSYS' ;					! Internal XPORT macro definitions
    1	     49 
    1	     50     $XPO_SYS_TEST( $TOPS10, $TOPS20, $VMS, $11M, $RSTS, $RT11  )
		; %PRINT:		This module was compiled for VAX/VMS
		; %PRINT:		XPORT V1.3-51    XPOSYS V1.3-16    XPO$K_VERSION = 1    XPO$K_LEVEL = 3
    1	     51 
    1	     52 !
    1	     53 ! TABLE OF CONTENTS:
    1	     54 !
    1	     55 
    1	     56 FORWARD ROUTINE
    1	     57     xpo$parse_spec;					! Parsing control routine
    1	     58 %IF %BLISS(BLISS16) %THEN
U   1	     59 EXTERNAL ROUTINE
U   1	     60 %ELSE
    1	     61 FORWARD ROUTINE
    1	     62 %FI
    1	     63     xpo$setup_parse :  NOVALUE,				! Parsing initialization
    1	     64 %IF $VMS %THEN
    1	     65     xpo$node_parse,					! Node name parsing routine
    1	     66 %FI
    1	     67     xpo$dvice_parse,					! Device parsing routine
    1	     68 %IF NOT $RT11 %THEN
    1	     69     xpo$direct_parse,					! Directory parsing routine
    1	     70 %FI
    1	     71     xpo$name_parse,					! File name/type parsing routine
    1	     72 %IF $RSTS %THEN
U   1	     73     xpo$ppn_parse,					! Special PPN parsing routine
U   1	     74     xpo$prot_parse,					! File protection parsing routine
U   1	     75     xpo$extra_parse,					! File option parsing routine
U   1	     76 %FI
    1	     77 %IF $TOPS20 %THEN
U   1	     78     xpo$extra_parse,					! File attribute parsing routine
U   1	     79 %FI
    1	     80 %IF $RT11 %THEN
U   1	     81     xpo$size_parse,					! File size parsing routine
U   1	     82 %FI
    1	     83     xpo$last_parse;					! Previous field cleanup routine
    1	     84 
    1	     85 !
    1	     86 ! MACROS:
    1	     87 !
    1	     88 
    1	     89 !
    1	     90 ! EQUATED SYMBOLS:
    1	     91 !
    1	     92 
    1	     93 !
    1	     94 ! PSECT DECLARATIONS:
    1	     95 !
    1	     96 
    1	     97     $XPO_PSECTS						! Declare XPORT PSECT names and attributes

XPARSE                          XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 3
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	     98 
    1	     99 !
    1	    100 ! OWN STORAGE:
    1	    101 !
    1	    102 
    1	    103 GLOBAL
    1	    104     xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
    1	    105     xpo$scan_spec :  $STR_DESCRIPTOR( CLASS=BOUNDED ),	! File-specification scanning descriptor
    1	    106     xpo$field_delim,					! Current delimiter code
    1	    107     xpo$next_field;					! Expected field indicator
    1	    108 
    1	    109 !
    1	    110 ! EXTERNAL REFERENCES:
    1	    111 !
    1	    112 
    1	    113 %IF $RT11 %THEN
U   1	    114 EXTERNAL ROUTINE
U   1	    115     XRT$CHK_BACKGRD;					! Background job verification
U   1	    116 %FI

XPARSE                          XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 4
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	    118 GLOBAL ROUTINE XPO$PARSE_SPEC( file_spec, spec_block, free_temp, success_action, failure_action ) =
    1	    119 
    1	    120 !++
    1	    121 !
    1	    122 ! FUNCTIONAL DESCRIPTION:
    1	    123 !
    1	    124 !	This routine controls file-specification parsing.
    1	    125 !
    1	    126 ! FORMAL PARAMETERS:
    1	    127 !
    1	    128 !	file_spec - address of file-spec string descriptor
    1	    129 !	spec_block - address of XPORT file-specification parse block
    1	    130 !	free_temp - temporary string indicator ( 0 = don't free, 1 = free )
    1	    131 !	success_action - address of success action routine
    1	    132 !	failure_action - address of failure action routine
    1	    133 !
    1	    134 ! IMPLICIT INPUTS:
    1	    135 !
    1	    136 !	None
    1	    137 !
    1	    138 ! IMPLICIT OUTPUTS:
    1	    139 !
    1	    140 !	None
    1	    141 !
    1	    142 ! COMPLETION CODES:  (secondary codes are indented)
    1	    143 !
    1	    144 !	XPO$_NORMAL - the file-specification was successfully parsed
    1	    145 !
    1	    146 !	STR$_BAD_DESC - invalid file-spec descriptor
    1	    147 !		failure completion code from $STR_VALIDATE
    1	    148 !	XPO$_FOREGROUND - this is a foreground job (RT-11 only)
    1	    149 !	primary failure completion code from XPO$xxx_PARSE
    1	    150 !		secondary failure completion code from XPO$xxx_PARSE
    1	    151 !
    1	    152 ! SIDE EFFECTS:
    1	    153 !
    1	    154 !	None
    1	    155 !
    1	    156 !--
    1	    157 
    1	    158     BEGIN
    2	    159 
    2	    160 %IF $VMS %THEN 
    2	    161     LABEL
    2	    162 	vms_native;
    2	    163     %IF NOT %DECLARED (FSCN$_FILESPEC)	! The definitions for the SYS$FILESCAN codes don't
L   2	    164     %THEN				!  go into STARLET until V3B.
    2	    165 	REQUIRE 'FSCN';			! Take this out after then.
    2	    207     %FI
    2	    208 %FI
    2	    209 
    2	    210     MAP
    2	    211 	file_spec :  REF $STR_DESCRIPTOR(),
    2	    212 	spec_block : REF $XPO_SPEC_BLOCK ;
    2	    213 
    2	    214     LOCAL
    2	    215 	status;						! Temporary completion code

XPARSE                          XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 5
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	    216 
    2	    217 !
    2	    218 ! Initialization
    2	    219 !
    2	    220 
    2	    221     $XPO_MAIN_BEGIN( PARSE )				! Beginning of MAIN_BLOCK code block
    3	    222 
    3	    223 %IF $RT11 %THEN
U   3	    224     IF NOT XRT$CHK_BACKGRD()				! Verify that this is a background job.
U   3	    225     THEN
U   3	    226         $XPO_QUIT( FOREGROUND );
U   3	    227 %FI
    3	    228 
    3	    229     $STR_VALIDATE( file_spec[$BASE], BAD_DESC );	! Validate the caller's file-spec descriptor.
    3	    230 
    3	    231     xpo$setup_parse( file_spec[$BASE],			! Setup the caller's file-spec block
    3	    232 		    spec_block[$BASE] );		! and internal parsing variables.
    3	    233 
    3	    234 
    3	    235 %IF $VMS %THEN
    3	    236 !
    3	    237 ! Use native VMS systems call to parse the file spec
    3	    238 !
    3	    239 	vms_native:
    3	    240 	BEGIN					! The system service SYS$FILESCAN exists in VMS V3B,
    4	    241 	EXTERNAL ROUTINE SYS$FILESCAN :		!  but not before.
    4	    242 	    BLISS ADDRESSING_MODE (GENERAL) WEAK;
    4	    243 
    4	    244 	IF sys$filescan	NEQ 0 THEN				! If it is non-zero then we can call it.
    4	    245 	    BEGIN
    5	    246 
    5	    247 	    $LITERAL
    5	    248 		_FILESPEC = $DISTINCT -1,
    5	    249 		_NODE = $DISTINCT -1,
    5	    250 		_DEVICE = $DISTINCT -1,
    5	    251 		_DIRECTORY = $DISTINCT -1,
    5	    252 		_NAME = $DISTINCT -1,
    5	    253 		_TYPE = $DISTINCT -1,
    5	    254 		_VERSION = $DISTINCT -1,
    5	    255 		end_item_list = $DISTINCT -1;				! null item code specifies end of list
    5	    256 
    5	    257 	    LOCAL
    5	    258 		items : BLOCKVECTOR [end_item_list + 1, FSCN$S_ITEM_LEN, 1]	! pseudo item list for SYS$FILESCAN
    5	    259 			PRESET(
    5	    260 				[_filespec, FSCN$W_ITEM_CODE] = FSCN$_FILESPEC,
    5	    261 				[_node, FSCN$W_ITEM_CODE] = FSCN$_NODE,
    5	    262 				[_device, FSCN$W_ITEM_CODE] = FSCN$_DEVICE,
    5	    263 				[_directory, FSCN$W_ITEM_CODE] = FSCN$_DIRECTORY,
    5	    264 				[_name, FSCN$W_ITEM_CODE] = FSCN$_NAME,
    5	    265 				[_type, FSCN$W_ITEM_CODE] = FSCN$_TYPE,
    5	    266 				[_version, FSCN$W_ITEM_CODE] = FSCN$_VERSION
    5	    267 				),
    5	    268 		filescan_spec :  $STR_DESCRIPTOR( CLASS=FIXED );	! File-specification scanning descriptor
    5	    269 
    5	    270 	    $STR_DESC_INIT( DESCRIPTOR = filescan_spec,			! If and when BOUNDED and DYNAMIC_BOUNDED
P   5	    271 			    CLASS = FIXED,				!  descriptors become part of VMS, we can 
P   5	    272 			    STRING = file_spec[$BASE] );		!  eliminate this and just use xpo$scan_spec

XPARSE                          XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 6
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    5	    273 
    5	    274 	    SYS$FILESCAN (filescan_spec, items, 0);
    5	    275 
    5	    276 	    IF .items[_filespec, FSCN$W_LENGTH]
    5	    277 		EQLU .filescan_spec[STR$H_LENGTH]		! Did SYS$FILESCAN accept the entire string?
    5	    278 	    THEN						! Then we have a good file spec.
    5	    279 		BEGIN
    6	    280 		!
    6	    281 		! Copy the lengths and pointers to the $XPO_SPEC_BLOCK descriptors
    6	    282 		!
    6	    283 		spec_block[XPO$H_NODE] = .items [_node, FSCN$W_LENGTH];
    6	    284 		spec_block[XPO$A_NODE] = .items [_node, FSCN$L_ADDR];
    6	    285 		spec_block[XPO$H_DEVICE] = .items [_device, FSCN$W_LENGTH];
    6	    286 		spec_block[XPO$A_DEVICE] = .items [_device, FSCN$L_ADDR];
    6	    287 		spec_block[XPO$H_DIRECT] = .items [_directory, FSCN$W_LENGTH];
    6	    288 		spec_block[XPO$A_DIRECT] = .items [_directory, FSCN$L_ADDR];
    6	    289 		spec_block[XPO$H_FILE_NAME] = .items [_name, FSCN$W_LENGTH];
    6	    290 		spec_block[XPO$A_FILE_NAME] = .items [_name, FSCN$L_ADDR];
    6	    291 		spec_block[XPO$H_FILE_TYPE] = .items [_type, FSCN$W_LENGTH];
    6	    292 		spec_block[XPO$A_FILE_TYPE] = .items [_type, FSCN$L_ADDR];
    6	    293 		spec_block[XPO$H_FILE_VER] = .items [_version, FSCN$W_LENGTH];
    6	    294 		spec_block[XPO$A_FILE_VER] = .items [_version, FSCN$L_ADDR];
    6	    295 		!
    6	    296 		!  SYS$FILESCAN does not return wildcard info so scan for wildcards
    6	    297 		!  This may break as file spec rules evolve -- BE CAREFULL!!
    6	    298 		!
    6	    299 		!  Scan the directory, file_name, file_type, and version for wildcards.
    6	    300 		!
    6	    301 		IF $STR_SCAN( STRING = spec_block[XPO$T_DIRECT], STOP = '*%', FAILURE = 0 ) EQLU STR$_NORMAL
    6	    302 		    THEN   spec_block[XPO$V_WILD_DIR] = 1;
    6	    303 		!
    6	    304 		!
    6	    305 		! If the file name is a quoted string, don't scan for wildcards.
    6	    306 		!
    6	    307 		IF NOT ( .spec_block[XPO$H_FILE_NAME] GEQ 2 AND
    7	    308 			CH$RCHAR( .spec_block[XPO$A_FILE_NAME] ) EQL %C'"' AND
    7	    309 			CH$RCHAR( CH$PLUS( .spec_block[XPO$A_FILE_NAME],  .spec_block[XPO$H_FILE_NAME] - 1 ) )
    7	    310 			    EQL %C'"' )
    7	    311 		THEN
    6	    312 		    IF $STR_SCAN( STRING = spec_block[XPO$T_FILE_NAME], STOP = '*%', FAILURE = 0 ) EQLU STR$_NORMAL
    6	    313 			THEN   spec_block[XPO$V_WILD_NAME] = 1;
    6	    314 		!
    6	    315 		IF $STR_SCAN( STRING = spec_block[XPO$T_FILE_TYPE], STOP = '*%', FAILURE = 0 ) EQLU STR$_NORMAL
    6	    316 		    THEN   spec_block[XPO$V_WILD_TYPE] = 1;
    6	    317 		!
    6	    318 		IF $STR_SCAN( STRING = spec_block[XPO$T_FILE_VER], STOP = '*%', FAILURE = 0 ) EQLU STR$_NORMAL
    6	    319 		    THEN   spec_block[XPO$V_WILD_VER] = 1;
    6	    320 		!
    6	    321 		! We will not support GRP,MBR binary conversion in VMS starting with V3B
    6	    322 		! I.e. both  spec_block[XPO$H_PROJ_NUMB] and  spec_block[XPO$H_PGMR_NUMB] will always be zero.
    6	    323 		!
    6	    324 		LEAVE vms_native;
    6	    325 		END;
    5	    326 	    $XPO_QUIT( BAD_SPEC, BAD_SYNTAX );		! Shall we do this instead of (2) below?
    5	    327 	    END;					! I.e. don't try to give a more specific error code.
    4	    328     !							! It just makes for potential problems.	
    4	    329     ! If (1) SYS$FILESCAN is not present (i.e. before VMS V3B) or

XPARSE                          XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 7
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    4	    330     !    (2) it didn't take the whole string as a valid file spec,
    4	    331     ! we fall through to the old string scanning code to
    4	    332     !    (1) parse the file spec ourselves, or
    4	    333     !    (2) try to identify the error that stopped SYS$FILESCAN.
    4	    334     !
    4	    335 %FI
    4	    336 
    4	    337 
    4	    338 !
    4	    339 ! Scan the file-specification one field at a time.
    4	    340 !
    4	    341 
    4	    342     WHILE .xpo$field_delim NEQ null DO			! Repeat the following block as long
    4	    343 	BEGIN						! as there are characters to be processed.
    5	    344 
    5	    345 !
    5	    346 ! Search for the next delimiter character.
    5	    347 !
    5	    348 
    5	    349 	$STR_SCAN( REMAINDER = xpo$scan_spec[$BASE],
P   5	    350 		    SUBSTRING = xpo$scan_spec[$BASE],
P   5	    351 		    DELIMITER = xpo$field_delim,
P   5	    352 		    FAILURE = 0,
P   5	    353 		    SPAN = %STRING( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
L   5	    354 				    'abcdefghijklmnopqrstuvwxyz',
L   5	    355 %IF $TOPS20 %THEN		    '$-_',	%FI
L   5	    356 %IF $VMS %THEN			    '$_',	%FI
L   5	    357 %IF $RSTS %THEN			    ' ',	%FI
L   5	    358 				    '*0123456789' ) );
    5	    359 	    
    5	    360 !
    5	    361 ! Check for a quoted file-spec string (VMS only).
    5	    362 !
    5	    363 
    5	    364 %IF $VMS %THEN
    5	    365 	IF .xpo$field_delim EQL %C'"'
    5	    366 	THEN
    5	    367 	    BEGIN
    6	    368 	    LOCAL temp_pointer, temp_pfxlen;
    6	    369 
    6	    370 	    temp_pointer = .xpo$scan_spec[STR$A_POINTER];
    6	    371 	    temp_pfxlen = .xpo$scan_spec[STR$H_PFXLEN];
    6	    372 
    6	    373 	    WHILE 1 DO
    6	    374 		BEGIN
    7	    375 		xpo$scan_spec[STR$H_LENGTH] = .xpo$scan_spec[STR$H_LENGTH] + 1;
    7	    376 
    7	    377 		IF NOT $STR_SCAN( REMAINDER = xpo$scan_spec[$BASE],
P   7	    378 				    FIND = '"',
P   7	    379 				    SUBSTRING = xpo$scan_spec[$BASE],
P   7	    380 				    DELIMITER = xpo$field_delim,
P   7	    381 				    FAILURE = 0 )
    8	    382 		THEN
    7	    383 		    $XPO_QUIT( BAD_SPEC, BAD_SYNTAX );
    7	    384 
    7	    385 		IF .xpo$field_delim NEQ %C'"'		! Check for a two imbedded quotation marks.
    7	    386 		THEN

XPARSE                          XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 8
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    7	    387 		    EXITLOOP;
    7	    388 		END;
    6	    389 
    6	    390 	    xpo$scan_spec[STR$H_LENGTH] = .xpo$scan_spec[STR$A_POINTER] - .temp_pointer + 1;
    6	    391 	    xpo$scan_spec[STR$A_POINTER] = .temp_pointer;
    6	    392 	    xpo$scan_spec[STR$H_PFXLEN] = .temp_pfxlen;
    6	    393 	    END;
    5	    394 %FI
    5	    395 
    5	    396 !
    5	    397 ! Select an appropriate processing routine based on the current delimiter.
    5	    398 !
    5	    399 
    5	    400 	status = (SELECTONE .xpo$field_delim OF		! Use the delimiter value to select a processing routine.
    6	    401 	    SET
    6	    402 
    6	    403 	    [ %C':' ] :
    6	    404 %IF $VMS %THEN
    6	    405 		IF .xpo$scan_spec[STR$H_MAXLEN] - .xpo$scan_spec[STR$H_PFXLEN]
    6	    406 				- .xpo$scan_spec[STR$H_LENGTH] GEQ 2 AND
    6	    407 		    CH$RCHAR( CH$PLUS( .xpo$scan_spec[STR$A_POINTER], .xpo$scan_spec[STR$H_LENGTH] + 1 ) ) EQL %C':'
    6	    408 		THEN
    6	    409 		    xpo$node_parse( spec_block[$BASE], secondary_code )
    6	    410 		ELSE
    6	    411 %FI
    6	    412 		    xpo$dvice_parse( spec_block[$BASE], secondary_code );
    6	    413 
    6	    414 	    [ %C'[' ] :
    6	    415 %IF $RT11 %THEN
U   6	    416 		xpo$size_parse( spec_block[$BASE], secondary_code );
U   6	    417 %ELSE
    6	    418 		xpo$direct_parse( spec_block[$BASE], %C']', secondary_code );
    6	    419 %FI
    6	    420 
    6	    421 %IF $TOPS20 OR $VMS %THEN
    6	    422 	    [ %C'<' ] :
    6	    423 		xpo$direct_parse( spec_block[$BASE], %C'>', secondary_code );
    6	    424 %FI
    6	    425 
    6	    426 	    [ %C'.' ] :
    6	    427 		xpo$name_parse( spec_block[$BASE], secondary_code );
    6	    428 
    6	    429 %IF $TOPS20 %THEN
U   6	    430 	    [ %C';' ] :
U   6	    431 		xpo$extra_parse( spec_block[$BASE], secondary_code );
U   6	    432 %FI
    6	    433 
    6	    434 %IF $VMS OR $11M %THEN
    6	    435 	    [ %C';' ] :
    6	    436 		xpo$name_parse( spec_block[$BASE], secondary_code );
    6	    437 %FI
    6	    438 
    6	    439 %IF $RSTS %THEN
U   6	    440 	    [ %C'<' ] :
U   6	    441 		xpo$prot_parse( spec_block[$BASE], secondary_code );
U   6	    442 
U   6	    443     	    [ %C'(' ]:

XPARSE                          XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 9
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

U   6	    444 		xpo$direct_parse( spec_block[$BASE], %C')', secondary_code );
U   6	    445 
U   6	    446     	    [ %C'$', %C'!', %C'%', %C'&', %C'#', %C'@' ]:
U   6	    447 		xpo$ppn_parse( spec_block[$BASE], secondary_code );
U   6	    448 
U   6	    449             [ %C'/' ]:
U   6	    450 		xpo$extra_parse( spec_block[$BASE], secondary_code );
U   6	    451 %FI
    6	    452 
    6	    453 	    [ null ] :
    6	    454 		xpo$last_parse( spec_block[$BASE], secondary_code );
    6	    455 
    6	    456 	    [ OTHERWISE ] :
    6	    457 		$XPO_QUIT( BAD_SYNTAX, (STR$_BAD_CHAR) );
    6	    458 
    6	    459 	    TES);
    5	    460 
    5	    461 !
    5	    462 ! Terminate file-spec parsing if an error is detected.
    5	    463 !
    5	    464 
    5	    465 	IF NOT .status
    5	    466 	THEN
    5	    467 	    $XPO_QUIT( (.status) );
    5	    468 	END;						! End of scanning loop
    4	    469 
    4	    470 %IF $VMS %THEN
    4	    471 	END;			! This terminates the VMS V3B labeled block - "vms_native"
    3	    472 %FI
    3	    473 
    3	    474 !
    3	    475 ! Complete the file-specification parse block.
    3	    476 !
    3	    477 
    3	    478     spec_block[XPO$V_WILD_CARD] =			! Turn on the overall wildcard indicator if any single
    3	    479 	.spec_block[XPO$V_WILD_NODE] OR			! wildcard indicator is on.
    3	    480 	.spec_block[XPO$V_WILD_DEV] OR
    3	    481 	.spec_block[XPO$V_WILD_DIR] OR
    3	    482 	.spec_block[XPO$V_WILD_NAME] OR
    3	    483 	.spec_block[XPO$V_WILD_TYPE] OR
    3	    484 	.spec_block[XPO$V_WILD_VER] OR
    3	    485 	.spec_block[XPO$V_WILD_ATTR];
    3	    486 
    3	    487     $XPO_QUIT( NORMAL );
    3	    488 
    3	    489     $XPO_MAIN_END;					! End of MAIN_BLOCK code block
    2	    490 
    2	    491 !
    2	    492 ! Call an appropriate action routine.
    2	    493 !
    2	    494 
    2	    495     $XPO_ACTION_RTN( .file_spec );
    2	    496 
    2	    497 !
    2	    498 ! Free an XPORT temporary string used in this file-spec parse.
    2	    499 !
    2	    500 

XPARSE                          XPO$PARSE_SPEC - XPORT File-spe  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 10
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	    501     IF .free_temp					! If this is a user call,
    2	    502     THEN						!
    2	    503 	$STR_FREE_TEMP( .file_spec );			! free the file-spec string if it is a temporary string.
    2	    504 
    2	    505 !
    2	    506 ! Return the final completion code to the caller.
    2	    507 !
    2	    508 
    2	    509     RETURN .primary_code
    2	    510 
    2	    511     END;
    1	    512 
    1	    513 $XPO_MODULE( XPARS1 )

XPARSE                          XPO$SETUP_PARSE - File-spec Par  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 11
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	    515 %TITLE 'XPO$SETUP_PARSE - File-spec Parsing Setup'
    1	    516 
    1	    517 GLOBAL ROUTINE xpo$setup_parse( file_spec, spec_block ) :  NOVALUE =
    1	    518 
    1	    519 !++
    1	    520 !
    1	    521 ! FUNCTIONAL DESCRIPTION:
    1	    522 !
    1	    523 !	This routine initializes the caller's file-spec parse block
    1	    524 !	and various internal file-spec parsing variables.
    1	    525 !
    1	    526 ! FORMAL PARAMETERS:
    1	    527 !
    1	    528 !	file_spec - address of file-spec string descriptor
    1	    529 !	spec_block - address of file-spec block
    1	    530 !
    1	    531 ! IMPLICIT INPUTS:
    1	    532 !
    1	    533 !	None
    1	    534 !
    1	    535 ! IMPLICIT OUTPUTS:
    1	    536 !
    1	    537 !	xpo$state - file-spec parsing state vector zeroed
    1	    538 !	xpo$scan_spec - file-spec scanning descriptor initialized
    1	    539 !	xpo$field_delim - set to non-null
    1	    540 !	xpo$next_field - set to indicate file name expected
    1	    541 !
    1	    542 ! ROUTINE VALUE:
    1	    543 !
    1	    544 !	None
    1	    545 !
    1	    546 ! SIDE EFFECTS:
    1	    547 !
    1	    548 !	None
    1	    549 !
    1	    550 !--
    1	    551 
    1	    552     BEGIN
    2	    553 
    2	    554     MAP
    2	    555 	file_spec :  REF $STR_DESCRIPTOR(),
    2	    556 	spec_block : REF $XPO_SPEC_BLOCK ;
    2	    557 
    2	    558     EXTERNAL
    2	    559 	xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
    2	    560 	xpo$scan_spec :  $STR_DESCRIPTOR(),		! File-specification scanning descriptor
    2	    561 	xpo$field_delim,				! Current delimiter code
    2	    562 	xpo$next_field;					! Expected field indicator
    2	    563 
    2	    564 !
    2	    565 ! Zero all of the file-specification parsing state indicators.
    2	    566 !
    2	    567 
    2	    568     INCR index FROM 0 TO XPO$K_STATE_LEN-1 DO
    2	    569 	xpo$state[.index] = 0;
    2	    570 
    2	    571 !

XPARSE                          XPO$SETUP_PARSE - File-spec Par  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 12
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	    572 ! Setup the file-spec scanning string descriptor.
    2	    573 !
    2	    574 
    2	    575     $STR_DESC_INIT( DESCRIPTOR = xpo$scan_spec[$BASE],
P   2	    576 		    CLASS = BOUNDED,
P   2	    577 		    STRING = file_spec[$BASE] );
    2	    578 
    2	    579 !
    2	    580 ! Initialize the current delimiter code to a non-null value.
    2	    581 !
    2	    582 
    2	    583     xpo$field_delim = del;
    2	    584 
    2	    585 !
    2	    586 ! Assume that the first file-spec field will be the file name.
    2	    587 !
    2	    588 
    2	    589     xpo$next_field = XPO$K_NAME_NEXT;
    2	    590 
    2	    591 !
    2	    592 ! Initialize the entire file-spec block.
    2	    593 !
    2	    594 
    2	    595     spec_block[XPO$V_SPEC_STAT] = 0;
    2	    596     $STR_DESC_INIT( DESCRIPTOR = spec_block[XPO$T_NODE] );
    2	    597     $STR_DESC_INIT( DESCRIPTOR = spec_block[XPO$T_DEVICE] );
    2	    598     $STR_DESC_INIT( DESCRIPTOR = spec_block[XPO$T_DIRECT] );
    2	    599     spec_block[XPO$H_PROJ_NUMB] = 0;
    2	    600     spec_block[XPO$H_PGMR_NUMB] = 0;
    2	    601     $STR_DESC_INIT( DESCRIPTOR = spec_block[XPO$T_FILE_NAME] );
    2	    602     $STR_DESC_INIT( DESCRIPTOR = spec_block[XPO$T_FILE_TYPE] );
    2	    603     $STR_DESC_INIT( DESCRIPTOR = spec_block[XPO$T_FILE_VER] );
    2	    604     $STR_DESC_INIT( DESCRIPTOR = spec_block[XPO$T_FILE_PROT] );
    2	    605     $STR_DESC_INIT( DESCRIPTOR = spec_block[XPO$T_EXTRA] );
    2	    606 
    2	    607 !
    2	    608 ! Return to the caller.
    2	    609 !
    2	    610 
    2	    611     RETURN
    2	    612     END;

XPARSE                          XPO$NODE_PARSE - VAX/VMS Node N  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 13
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	    614 %TITLE 'XPO$NODE_PARSE - VAX/VMS Node Name Parsing'
    1	    615 %IF $VMS %THEN
    1	    616 
    1	    617 ROUTINE xpo$node_parse( spec_block, secondary_code ) =
    1	    618 
    1	    619 !++
    1	    620 !
    1	    621 ! FUNCTIONAL DESCRIPTION:
    1	    622 !
    1	    623 !	This routine sets up node name information in the file-spec block.
    1	    624 !
    1	    625 ! FORMAL PARAMETERS:
    1	    626 !
    1	    627 !	spec_block - address of file-spec block
    1	    628 !	secondary_code - address of secondary completion code
    1	    629 !
    1	    630 ! IMPLICIT INPUTS:
    1	    631 !
    1	    632 !	xpo$state - current parsing state
    1	    633 !	xpo$scan_spec - current file-spec field descriptor
    1	    634 !
    1	    635 ! IMPLICIT OUTPUTS:
    1	    636 !
    1	    637 !	xpo$state - updated to indicate node name processed
    1	    638 !	xpo$scan_spec - sub-string extended to include the trailing punctuation
    1	    639 !
    1	    640 ! COMPLETION CODES:  (secondary codes are indented)
    1	    641 !
    1	    642 !	XPO$_NORMAL - the node name was successfully processed
    1	    643 !	XPO$_BAD_NODE - the node name is invalid
    1	    644 !		XPO$_BAD_LENGTH - too long
    1	    645 !		XPO$_BAD_ORDER - misplaced or duplicated
    1	    646 !		XPO$_WILDCARD - contains an imbedded wildcard
    1	    647 !
    1	    648 ! SIDE EFFECTS:
    1	    649 !
    1	    650 !	None
    1	    651 !
    1	    652 !--
    1	    653 
    1	    654     BEGIN
    2	    655 
    2	    656     MAP
    2	    657 	spec_block :  REF $XPO_SPEC_BLOCK;		! Redefine the file-spec block parameter
    2	    658 
    2	    659     EXTERNAL
    2	    660 	xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
    2	    661 	xpo$scan_spec :  $STR_DESCRIPTOR();		! File-specification scanning descriptor
    2	    662 
    2	    663     $XPO_PARSE_MAX					! Maximum field length literals
    2	    664 
    2	    665 !
    2	    666 ! Validate the node name.
    2	    667 !
    2	    668 							! Test for one of the following syntax errors:
    2	    669     IF .xpo$state[XPO$V_SPEC_NODE]			!    node name already specified or assumed
    2	    670     THEN

XPARSE                          XPO$NODE_PARSE - VAX/VMS Node N  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 14
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	    671 	$XPO_RETURN2( BAD_NODE, BAD_ORDER );
    2	    672 
    2	    673     IF .xpo$scan_spec[STR$H_LENGTH] EQL 0 OR		!    null node name
    2	    674 	.xpo$scan_spec[STR$H_LENGTH] GTR XPO$K_MAX_NODE	!    node name is too long
    2	    675     THEN
    2	    676 	$XPO_RETURN2( BAD_NODE, BAD_LENGTH );
    2	    677 	
    2	    678     IF $STR_SCAN( STRING = xpo$scan_spec[$BASE], FIND = '*', FAILURE = 0 )
    3	    679     THEN
    2	    680 	IF .xpo$scan_spec[STR$H_LENGTH] NEQ 1		!    imbedded wild-card in node name
    2	    681 	THEN
    2	    682 	    $XPO_RETURN2( BAD_NODE, WILDCARD )
    3	    683 	ELSE
    2	    684 	    spec_block[XPO$V_WILD_NODE] = 1;
    2	    685 
    2	    686 !
    2	    687 ! Setup the node name information in the file-specification block.
    2	    688 !
    2	    689 
    2	    690     xpo$scan_spec[STR$H_LENGTH] =			! Add the delimiters to the node name.
    2	    691 		.xpo$scan_spec[STR$H_LENGTH] + 2;
    2	    692 
    2	    693     spec_block[XPO$H_NODE] = .xpo$scan_spec[STR$H_LENGTH];
    2	    694     spec_block[XPO$A_NODE] = .xpo$scan_spec[STR$A_POINTER];
    2	    695 
    2	    696 !
    2	    697 ! Setup to process the next field.
    2	    698 !
    2	    699 
    2	    700     xpo$state[XPO$V_SPEC_NODE] = 1;			! Indicate a node name has been processed.
    2	    701 
    2	    702 !
    2	    703 ! Return to the caller.
    2	    704 !
    2	    705 
    2	    706     RETURN XPO$_NORMAL
    2	    707 
    2	    708     END;
    1	    709 %FI
    1	    710 
    1	    711 $XPO_MODULE( XPARS2 )

XPARSE                          XPO$DVICE_PARSE - Device Name P  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 15
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	    713 %TITLE 'XPO$DVICE_PARSE - Device Name Parsing'
    1	    714 
    1	    715 GLOBAL ROUTINE xpo$dvice_parse( spec_block, secondary_code ) =
    1	    716 
    1	    717 !++
    1	    718 !
    1	    719 ! FUNCTIONAL DESCRIPTION:
    1	    720 !
    1	    721 !	This routine sets up device name information in the file-spec block.
    1	    722 !
    1	    723 ! FORMAL PARAMETERS:
    1	    724 !
    1	    725 !	spec_block - address of file-spec block
    1	    726 !	secondary_code - address of secondary completion code
    1	    727 !
    1	    728 ! IMPLICIT INPUTS:
    1	    729 !
    1	    730 !	xpo$state - current parsing state
    1	    731 !	xpo$scan_spec - current file-spec field descriptor
    1	    732 !
    1	    733 ! IMPLICIT OUTPUTS:
    1	    734 !
    1	    735 !	xpo$state - updated to indicate device name processed
    1	    736 !	xpo$scan_spec - sub-string extended to include the trailing punctuation
    1	    737 !
    1	    738 ! COMPLETION CODES:  (secondary codes are indented)
    1	    739 !
    1	    740 !	XPO$_NORMAL - the device name was successfully processed
    1	    741 !	XPO$_BAD_DEVICE - the device name is invalid
    1	    742 !		XPO$_BAD_LENGTH - too long
    1	    743 !		XPO$_BAD_ORDER - misplaced or duplicated
    1	    744 !		XPO$_WILDCARD - contains an imbedded wildcard
    1	    745 !
    1	    746 ! SIDE EFFECTS:
    1	    747 !
    1	    748 !	None
    1	    749 !
    1	    750 !--
    1	    751 
    1	    752     BEGIN
    2	    753 
    2	    754     MAP
    2	    755 	spec_block :  REF $XPO_SPEC_BLOCK;		! Redefine the file-spec block parameter
    2	    756 
    2	    757     EXTERNAL
    2	    758 	xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
    2	    759 	xpo$scan_spec :  $STR_DESCRIPTOR();		! File-specification scanning descriptor
    2	    760 
    2	    761     $XPO_PARSE_MAX					! Maximum field length literals
    2	    762 
    2	    763 !
    2	    764 ! Validate the device name.
    2	    765 !
    2	    766 							! Test for one of the following syntax errors:
    2	    767     IF .xpo$state[XPO$V_SPEC_DEV]			!    device name already specified or assumed
    2	    768     THEN
    2	    769 	$XPO_RETURN2( BAD_DEVICE, BAD_ORDER );

XPARSE                          XPO$DVICE_PARSE - Device Name P  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 16
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	    770 
    2	    771     IF .xpo$scan_spec[STR$H_LENGTH] EQL 0 OR		!    null device name
    2	    772 	.xpo$scan_spec[STR$H_LENGTH] GTR XPO$K_MAX_DEV	!    device name is too long
    2	    773     THEN
    2	    774 	$XPO_RETURN2( BAD_DEVICE, BAD_LENGTH );
    2	    775 	
    2	    776     IF $STR_SCAN( STRING = xpo$scan_spec[$BASE], FIND = '*', FAILURE = 0 )
    3	    777     THEN
    2	    778 	IF .xpo$scan_spec[STR$H_LENGTH] NEQ 1		!    imbedded wild-card in device name
    2	    779 	THEN
    2	    780 	    $XPO_RETURN2( BAD_DEVICE, WILDCARD )
    3	    781 	ELSE
    2	    782 	    spec_block[XPO$V_WILD_DEV] = 1;
    2	    783 
    2	    784 !
    2	    785 ! Setup the device name information in the file-specification block.
    2	    786 !
    2	    787 
    2	    788     xpo$scan_spec[STR$H_LENGTH] =			! Add the colon to the device name.
    2	    789 		.xpo$scan_spec[STR$H_LENGTH] + 1;
    2	    790 
    2	    791     spec_block[XPO$H_DEVICE] = .xpo$scan_spec[STR$H_LENGTH];
    2	    792     spec_block[XPO$A_DEVICE] = .xpo$scan_spec[STR$A_POINTER];
    2	    793 
    2	    794 !
    2	    795 ! Setup to process the next field.
    2	    796 !
    2	    797 
    2	    798     xpo$state[XPO$V_SPEC_DEV] = 1;			! Indicate a device name has been processed
    2	    799     xpo$state[XPO$V_SPEC_NODE] = 1;			! and that a node name cannot appear later.
    2	    800 
    2	    801 !
    2	    802 ! Return to the caller.
    2	    803 !
    2	    804 
    2	    805     RETURN XPO$_NORMAL
    2	    806 
    2	    807     END;
    1	    808 
    1	    809 $XPO_MODULE( XPARS3 )

XPARSE                          XPO$DIRECT_PARSE - Directory Sp  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 17
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	    811 %TITLE 'XPO$DIRECT_PARSE - Directory Spec Parsing'
    1	    812 %IF NOT $RT11 %THEN
    1	    813 
    1	    814 GLOBAL ROUTINE xpo$direct_parse( spec_block, right_delimiter, secondary_code ) =
    1	    815 
    1	    816 !++
    1	    817 !
    1	    818 ! FUNCTIONAL DESCRIPTION:
    1	    819 !
    1	    820 !	This routine processes a directory specification, converting PPN values
    1	    821 !	(if any) to binary.
    1	    822 !
    1	    823 ! FORMAL PARAMETERS:
    1	    824 !
    1	    825 !	spec_block - address of file-spec block
    1	    826 !	right_delimiter - end of field delimiter (either %C']' or %C'>' or %C')')
    1	    827 !	secondary_code - address of secondary completion code
    1	    828 !
    1	    829 ! IMPLICIT INPUTS:
    1	    830 !
    1	    831 !	xpo$state - current parsing state
    1	    832 !	xpo$scan_spec - current file-spec field descriptor
    1	    833 !
    1	    834 ! IMPLICIT OUTPUTS:
    1	    835 !
    1	    836 !	xpo$state - updated to indicate directory specification processed
    1	    837 !	xpo$scan_spec - sub-string extended thru the trailing punctuation
    1	    838 !	xpo$field_delim - end-of-directory-spec delimiter
    1	    839 !	xpo$next_field - XPO$K_NO_NEXT (conditionally on TOPS-10 only)
    1	    840 !
    1	    841 ! COMPLETION CODES:  (secondary codes are indented)
    1	    842 !
    1	    843 !	XPO$_NORMAL - the directory specification was successfully processed
    1	    844 !	XPO$_BAD_DIRECT - the directory specification specification is invalid
    1	    845 !		XPO$_BAD_ORDER - misplaced or duplicated
    1	    846 !		XPO$_BAD_SYNTAX - invalid syntax
    1	    847 !		XPO$_WILDCARD - contains an imbedded wildcard
    1	    848 !	failure completion code from XPO$LAST_PARSE
    1	    849 !
    1	    850 ! SIDE EFFECTS:
    1	    851 !
    1	    852 !	This routine calls XPO$LAST_PARSE.
    1	    853 !
    1	    854 !--
    1	    855 
    1	    856     BEGIN
    2	    857 
    2	    858     MAP
    2	    859 	spec_block :  REF $XPO_SPEC_BLOCK;		! Redefine the file-spec block parameter
    2	    860 
    2	    861     EXTERNAL
    2	    862 	xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
    2	    863 	xpo$scan_spec :  $STR_DESCRIPTOR(		! File-specification scanning descriptor
P   2	    864 				CLASS = BOUNDED ),
    2	    865 	xpo$field_delim,				! Current delimiter code
    2	    866 	xpo$next_field;					! Expected field indicator
    2	    867 

XPARSE                          XPO$DIRECT_PARSE - Directory Sp  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 18
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	    868     EXTERNAL ROUTINE
    2	    869 	xpo$last_parse;					! Previous field cleanup routine.
    2	    870 
    2	    871     LOCAL
    2	    872 	next_character;					! Look-ahead character
    2	    873 
    2	    874     MACRO
    2	    875 	ppn_radix =					! PPN radix for $STR_BINARY conversion
M   2	    876 	    %IF $RSTS %THEN BASE10 %ELSE BASE8 %FI %;
    2	    877 
    2	    878 !
    2	    879 ! Complete the processing of the previous field, if any.
    2	    880 !
    2	    881 
    2	    882     $XPO_IF_NOT( xpo$last_parse( spec_block[$BASE], .secondary_code ) )
    4	    883     THEN
    3	    884 	RETURN .$XPO_STATUS;
    2	    885 
    2	    886 !
    2	    887 ! Verify the location of the directory specification.
    2	    888 !
    2	    889 
    2	    890     IF .xpo$state[XPO$V_SPEC_DIR]			! If a directory field has been processed or omitted,
    2	    891     THEN						!
    2	    892 	$XPO_RETURN2( BAD_DIRECT, BAD_ORDER );		! return an error code to the caller.
    2	    893 
    2	    894 !
    2	    895 ! Scan the entire directory specification.
    2	    896 !
    2	    897 
    2	    898     $STR_SCAN( REMAINDER = xpo$scan_spec[$BASE],	! Scan for the end of the directory specification.
P   2	    899 		STOP = ']>)',
P   2	    900 		SUBSTRING = xpo$scan_spec[$BASE],
P   2	    901 		DELIMITER = xpo$field_delim,
P   2	    902 		FAILURE = 0 );
    2	    903 
    2	    904     IF .xpo$field_delim EQL .right_delimiter		! Verify that the right delimiter is correct.
    2	    905     THEN
    2	    906 	xpo$scan_spec[STR$H_LENGTH] =			! Include the right delimiter in the directory sub-string.
    2	    907 		.xpo$scan_spec[STR$H_LENGTH] + 1
    2	    908     ELSE
    2	    909 %IF $TOPS10 OR $TOPS20 %THEN
U   2	    910 	IF .xpo$field_delim NEQ null			! Allow no right delimiter on TOPS-10 and TOPS-20.
U   2	    911 	THEN
U   2	    912 %FI
    2	    913 	    $XPO_RETURN2( BAD_DIRECT, BAD_SYNTAX );
    2	    914 
    2	    915     IF $STR_SCAN( STRING = xpo$scan_spec[$BASE],	! Test for a valid wildcard directory specification.
P   2	    916 		FIND = '*',
P   2	    917 		FAILURE = 0 )
    3	    918     THEN
    2	    919 	IF .xpo$scan_spec[STR$H_LENGTH] EQL 3
    2	    920 	THEN
    2	    921 	    spec_block[XPO$V_WILD_DIR] = 1
    2	    922 	ELSE
    2	    923 	    $XPO_RETURN2( BAD_DIRECT, WILDCARD );
    2	    924 

XPARSE                          XPO$DIRECT_PARSE - Directory Sp  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 19
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	    925 !
    2	    926 ! Convert PPN values, if any, to binary.
    2	    927 !
    2	    928 
    2	    929     next_character = CH$RCHAR( CH$PLUS( .xpo$scan_spec[STR$A_POINTER], 1 ) );
    2	    930 
    2	    931     IF $STR_SCAN( STRING = xpo$scan_spec[$BASE],	! If directory spec contains a comma, assume a P,PN format.
P   2	    932 		FIND = ',',
P   2	    933 		FAILURE = 0 )
    3	    934     THEN
    2	    935 	BEGIN
    3	    936 	LOCAL
    3	    937 	    ppn_scan :  $STR_DESCRIPTOR( CLASS = BOUNDED );
    3	    938 
    3	    939 	$STR_DESC_INIT( DESCRIPTOR = ppn_scan, CLASS = BOUNDED );
    3	    940 	ppn_scan[STR$H_LENGTH] = 1;
    3	    941 	ppn_scan[STR$A_POINTER] = .xpo$scan_spec[STR$A_POINTER];
    3	    942 	ppn_scan[STR$H_MAXLEN] = .xpo$scan_spec[STR$H_MAXLEN];
    3	    943 	ppn_scan[STR$H_PFXLEN] = .xpo$scan_spec[STR$H_PFXLEN];
    3	    944 
    3	    945 	$STR_SCAN( REMAINDER = ppn_scan,		! Scan the project number field.
P   3	    946 		    SPAN = %STRING( '0123456789' %IF $RSTS %THEN , '#' %FI ),
P   3	    947 		    SUBSTRING = ppn_scan,
P   3	    948 		    DELIMITER = xpo$field_delim,
P   3	    949 		    FAILURE = 0 );
    3	    950 
    3	    951 	IF .xpo$field_delim NEQ %C','			! The project number must be followed by a comma.
    3	    952 	THEN
    3	    953 	    $XPO_RETURN2( BAD_DIRECT, BAD_SYNTAX );
    3	    954 
    3	    955 	IF .ppn_scan[STR$H_LENGTH] NEQ 0		! Bypass conversion if no project number specified.
    3	    956 	THEN
    3	    957 %IF $RSTS %THEN
U   3	    958 	    IF CH$RCHAR( .ppn_scan[STR$A_POINTER] ) EQL %C'#'
U   3	    959 	    THEN
U   3	    960 		BEGIN					! Convert an octal project number to binary
U   3	    961 		IF NOT $STR_BINARY( STRING = ( .ppn_scan[STR$H_LENGTH]-1, .ppn_scan[STR$A_POINTER]+1 ),
U   3	    962 				OPTION = BASE8,
U   3	    963 				RESULT = spec_block[XPO$H_PROJ_NUMB],
U   3	    964 				FAILURE = 0 )
U   3	    965 		THEN
U   3	    966 		    $XPO_RETURN2( BAD_DIRECT, BAD_SYNTAX );
U   3	    967 		END
U   3	    968 	    ELSE
U   3	    969 %FI
    3	    970 		BEGIN
    4	    971 		IF NOT $STR_BINARY( STRING = ppn_scan,	! Convert a project number to binary.
P   4	    972 				OPTION = ppn_radix,
P   4	    973 				RESULT = spec_block[XPO$H_PROJ_NUMB],
P   4	    974 				FAILURE = 0 )
    5	    975 		THEN
    4	    976 		    $XPO_RETURN2( BAD_DIRECT, BAD_SYNTAX );
    4	    977 		END;
    3	    978 	
    3	    979 	ppn_scan[STR$H_LENGTH] = .ppn_scan[STR$H_LENGTH] + 1;
    3	    980 
    3	    981 	$STR_SCAN( REMAINDER = ppn_scan,		! Scan the programmer number field.

XPARSE                          XPO$DIRECT_PARSE - Directory Sp  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 20
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

P   3	    982 		    SPAN = %STRING( '0123456789' %IF $RSTS %THEN , '#' %FI ),
P   3	    983 		    SUBSTRING = ppn_scan,
P   3	    984 		    DELIMITER = xpo$field_delim,
P   3	    985 		    FAILURE = 0 );
    3	    986 
    3	    987 	IF .xpo$field_delim NEQ .right_delimiter	! The programmer number must be followed
    3	    988 	THEN						! the the proper right delimiter.
    3	    989 %IF $TOPS10 %THEN
U   3	    990 	    IF .xpo$field_delim EQL %C','		! A comma indicates a TOPS-10 SFD.
U   3	    991 	    THEN
U   3	    992 		spec_block[XPO$V_SFD] = 1
U   3	    993 	    ELSE
U   3	    994 %FI
    3	    995 		$XPO_RETURN2( BAD_DIRECT, BAD_SYNTAX );
    3	    996 	
    3	    997 	IF .ppn_scan[STR$H_LENGTH] NEQ 0		! Bypass conversion if no programmer number specified.
    3	    998 	THEN
    3	    999 %IF $RSTS %THEN
U   3	   1000 	    IF CH$RCHAR( .ppn_scan[STR$A_POINTER] ) EQL %C'#'
U   3	   1001 	    THEN
U   3	   1002 		BEGIN					! Convert an octal programmer number to binary
U   3	   1003 		IF NOT $STR_BINARY( STRING = ( .ppn_scan[STR$H_LENGTH]-1, .ppn_scan[STR$A_POINTER]+1 ),
U   3	   1004 				OPTION = BASE8,
U   3	   1005 				RESULT = spec_block[XPO$H_PGMR_NUMB],
U   3	   1006 				FAILURE = 0 )
U   3	   1007 		THEN
U   3	   1008 		    $XPO_RETURN2( BAD_DIRECT, BAD_SYNTAX );
U   3	   1009 		END
U   3	   1010 	    ELSE
U   3	   1011 %FI
    3	   1012 		BEGIN
    4	   1013 		IF NOT $STR_BINARY( STRING = ppn_scan,	! Convert a programmer number to binary.
P   4	   1014 				OPTION = ppn_radix,
P   4	   1015 				RESULT = spec_block[XPO$H_PGMR_NUMB],
P   4	   1016 				FAILURE = 0 )
    5	   1017 		THEN
    4	   1018 		    $XPO_RETURN2( BAD_DIRECT, BAD_SYNTAX );
    4	   1019 		END;
    3	   1020 
    3	   1021 	spec_block[XPO$V_PPN] = 1;			! Indicate that a PPN was specified.
    3	   1022 	END
    3	   1023     ELSE
    2	   1024 	IF .next_character NEQ %C'*' AND
    2	   1025 	    .next_character NEQ .right_delimiter
    2	   1026 	THEN
    2	   1027 %IF $TOPS10 OR $11M OR $RSTS %THEN
U   2	   1028 	    $XPO_RETURN2( BAD_DIRECT, BAD_SYNTAX );	! Some systems require PPN, wild-card or null directory spec
U   2	   1028 .
U   2	   1029 %ELSE
    2	   1030 	    spec_block[XPO$V_DIR_NAME] = 1;		! Indicate a directory name was specified.
    2	   1031 %FI
    2	   1032 
    2	   1033 !
    2	   1034 ! Complete the PPN information in the file-specification block.
    2	   1035 !
    2	   1036 
    2	   1037     spec_block[XPO$H_DIRECT] = .xpo$scan_spec[STR$H_LENGTH];

XPARSE                          XPO$DIRECT_PARSE - Directory Sp  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 21
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	   1038     spec_block[XPO$A_DIRECT] = .xpo$scan_spec[STR$A_POINTER];
    2	   1039 
    2	   1040 !
    2	   1041 ! Setup to process the next field.
    2	   1042 !
    2	   1043 
    2	   1044     xpo$state[XPO$V_SPEC_DIR] = 1;			! Indicate that a PPN has been processed
    2	   1045 %IF NOT $RSTS %THEN					!
    2	   1046     xpo$state[XPO$V_SPEC_NODE] = 1;			! and that a node name or device name cannot appear later.
    2	   1047     xpo$state[XPO$V_SPEC_DEV] = 1;
    2	   1048 %FI
    2	   1049 
    2	   1050 %IF $TOPS10 %THEN
U   2	   1051     IF .xpo$state[XPO$V_SPEC_NAME] OR			! If this TOPS-10 directory specification follows
U   2	   1052 	.xpo$state[XPO$V_SPEC_TYPE]			! a file name or file type,
U   2	   1053     THEN						!
U   2	   1054 	BEGIN						!
U   2	   1055 	xpo$state[XPO$V_SPEC_NAME] = 1;			! indicate that neither can appear later
U   2	   1056 	xpo$state[XPO$V_SPEC_TYPE] = 1;			!
U   2	   1057 	xpo$next_field = XPO$K_NO_NEXT;			! and that no further fields are expected.
U   2	   1058 	END;
U   2	   1059 %FI
    2	   1060 
    2	   1061 !
    2	   1062 ! Return to the caller.
    2	   1063 !
    2	   1064 
    2	   1065     RETURN XPO$_NORMAL
    2	   1066 
    2	   1067     END;
    1	   1068 %FI
    1	   1069 
    1	   1070 $XPO_MODULE( XPARS4 )

XPARSE                          XPO$NAME_PARSE - File Name, Typ  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 22
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	   1072 %TITLE 'XPO$NAME_PARSE - File Name, Type and Version Parsing'
    1	   1073 
    1	   1074 GLOBAL ROUTINE xpo$name_parse( spec_block, secondary_code ) =
    1	   1075 
    1	   1076 !++
    1	   1077 !
    1	   1078 ! FUNCTIONAL DESCRIPTION:
    1	   1079 !
    1	   1080 !	This routine completes the processing of a field which ends
    1	   1081 !	with a comma.
    1	   1082 !
    1	   1083 ! FORMAL PARAMETERS:
    1	   1084 !
    1	   1085 !	spec_block - address of file-spec block
    1	   1086 !	secondary_code - address of secondary completion code
    1	   1087 !
    1	   1088 ! IMPLICIT INPUTS:
    1	   1089 !
    1	   1090 !	xpo$state - current parsing state
    1	   1091 !	xpo$field_delim - current field delimiter (11M only)
    1	   1092 !
    1	   1093 ! IMPLICIT OUTPUTS:
    1	   1094 !
    1	   1095 !	xpo$scan_spec - set to describe delimiter which will be part of the next field
    1	   1096 !
    1	   1097 ! COMPLETION CODES:  (secondary codes are indented)
    1	   1098 !
    1	   1099 !	XPO$_NORMAL - the previous field was successfully processed
    1	   1100 !	XPO$_BAD_VER - the file version field is invalid (11M only)
    1	   1101 !		XPO$_BAD_SYNTAX - period cannot precede version number
    1	   1102 !	completion code from XPO$LAST_PARSE
    1	   1103 !
    1	   1104 ! SIDE EFFECTS:
    1	   1105 !
    1	   1106 !	This routine calls XPO$LAST_PARSE.
    1	   1107 !
    1	   1108 !--
    1	   1109 
    1	   1110     BEGIN
    2	   1111 
    2	   1112     MAP
    2	   1113 	spec_block :  REF $XPO_SPEC_BLOCK;		! Redefine the file-spec block parameter
    2	   1114 
    2	   1115     EXTERNAL
    2	   1116 	xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
    2	   1117 	xpo$scan_spec :  $STR_DESCRIPTOR(),		! File-specification scanning descriptor
    2	   1118 	xpo$field_delim;				! Current delimiter code
    2	   1119 
    2	   1120     EXTERNAL ROUTINE
    2	   1121 	xpo$last_parse;					! Previous field cleanup routine.
    2	   1122 
    2	   1123 !
    2	   1124 ! Check for a period preceding a version number (11M only).
    2	   1125 !
    2	   1126 
    2	   1127 %IF $11M %THEN
U   2	   1128     IF .xpo$field_delim EQL %C'.' AND .xpo$state[XPO$V_SPEC_NAME]

XPARSE                          XPO$NAME_PARSE - File Name, Typ  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 23
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

U   2	   1129     THEN
U   2	   1130 	$XPO_RETURN2( BAD_VER, BAD_SYNTAX );
U   2	   1131 %FI
    2	   1132 
    2	   1133 !
    2	   1134 ! Complete the processing of the previous field, if any.
    2	   1135 !
    2	   1136 
    2	   1137     $XPO_IF_NOT( xpo$last_parse( spec_block[$BASE], .secondary_code ) )
    4	   1138     THEN
    3	   1139 	RETURN .$XPO_STATUS;
    2	   1140 
    2	   1141 !
    2	   1142 ! Setup to process the next field.
    2	   1143 !
    2	   1144 
    2	   1145     xpo$scan_spec[STR$H_LENGTH] = 1;			! Leave the scanning descriptor describing
    2	   1146 							! the current delimiter (period or semi-colon).
    2	   1147 
    2	   1148 !
    2	   1149 ! Return to the caller.
    2	   1150 !
    2	   1151 
    2	   1152     RETURN XPO$_NORMAL
    2	   1153 
    2	   1154     END;
    1	   1155 
    1	   1156 $XPO_MODULE( XPARS5 )

XPARSE                          XPO$PPN_PARSE - Special RSTS/E   4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 24
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	   1158 %TITLE 'XPO$PPN_PARSE - Special RSTS/E PPN Parsing'
    1	   1159 %IF $RSTS %THEN
U   1	   1160 
U   1	   1161 GLOBAL ROUTINE xpo$ppn_parse( spec_block, secondary_code ) =
U   1	   1162 
U   1	   1163 !++
U   1	   1164 !
U   1	   1165 ! FUNCTIONAL DESCRIPTION:
U   1	   1166 !
U   1	   1167 !	This routine sets up special PPN information in the file-spec block.
U   1	   1168 !
U   1	   1169 ! FORMAL PARAMETERS:
U   1	   1170 !
U   1	   1171 !	spec_block - address of file-spec block
U   1	   1172 !	secondary_code - address of secondary completion code
U   1	   1173 !
U   1	   1174 ! IMPLICIT INPUTS:
U   1	   1175 !
U   1	   1176 !	xpo$state - current parsing state
U   1	   1177 !	xpo$scan_spec - current file-spec field descriptor
U   1	   1178 !
U   1	   1179 ! IMPLICIT OUTPUTS:
U   1	   1180 !
U   1	   1181 !	xpo$state - updated to indicate a directory spec has been processed
U   1	   1182 !	xpo$scan_spec - updated to describe the current special PPN
U   1	   1183 !
U   1	   1184 ! COMPLETION CODES:  (secondary codes are indented)
U   1	   1185 !
U   1	   1186 !	XPO$_NORMAL - the PPN was successfully processed
U   1	   1187 !	XPO$_BAD_DIRECT - the PPN specification is invalid
U   1	   1188 !		XPO$_BAD_ORDER - misplaced or duplicated
U   1	   1189 !	completion code from XPO$LAST_PARSE
U   1	   1190 !
U   1	   1191 ! SIDE EFFECTS:
U   1	   1192 !
U   1	   1193 !	This routine calls XPO$LAST_PARSE.
U   1	   1194 !
U   1	   1195 !--
U   1	   1196 
U   1	   1197     BEGIN
U   1	   1198 
U   1	   1199     MAP
U   1	   1200 	spec_block :  REF $XPO_SPEC_BLOCK;
U   1	   1201 
U   1	   1202     EXTERNAL
U   1	   1203 	xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
U   1	   1204 	xpo$scan_spec :  $STR_DESCRIPTOR();		! File-specification scanning descriptor
U   1	   1205 
U   1	   1206     EXTERNAL ROUTINE
U   1	   1207 	xpo$last_parse;					! Previous field cleanup routine.
U   1	   1208 
U   1	   1209 !
U   1	   1210 ! Complete the processing of the previous field, if any.
U   1	   1211 !
U   1	   1212 
U   1	   1213     $XPO_IF_NOT( xpo$last_parse( xpo$scan_spec[$BASE] ) )
U   1	   1214     THEN

XPARSE                          XPO$PPN_PARSE - Special RSTS/E   4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 25
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

U   1	   1215 	RETURN .$XPO_STATUS;
U   1	   1216 
U   1	   1217 !
U   1	   1218 ! Verify the location of the PPN.
U   1	   1219 !
U   1	   1220 
U   1	   1221     IF .xpo$state[XPO$V_SPEC_DIR]			! If a directory field has been processed or omitted,
U   1	   1222     THEN						!
U   1	   1223 	$XPO_RETURN2( BAD_DIRECT, BAD_ORDER );		! return an error code to the caller.
U   1	   1224 
U   1	   1225 !
U   1	   1226 ! Complete the special PPN information in the file-spec block.
U   1	   1227 !
U   1	   1228 
U   1	   1229     xpo$scan_spec[STR$H_LENGTH] = 1;			! Setup the scanning descriptor to describe
U   1	   1230 							! the current descriptor (special PPN).
U   1	   1231 
U   1	   1232     spec_block[XPO$H_DIRECT] = .xpo$scan_spec[STR$H_LENGTH];
U   1	   1233     spec_block[XPO$A_DIRECT] = .xpo$scan_spec[STR$A_POINTER];
U   1	   1234 
U   1	   1235     spec_block[XPO$V_DIR_NAME] = 1;			! Indicate a special PPN was specified.
U   1	   1236 
U   1	   1237 !
U   1	   1238 ! Setup to process the next field.
U   1	   1239 !
U   1	   1240 
U   1	   1241     xpo$state[XPO$V_SPEC_DIR] = 1;			! Indicate that a directory spec has been processed.
U   1	   1242 
U   1	   1243 !
U   1	   1244 ! Return to the caller.
U   1	   1245 !
U   1	   1246 
U   1	   1247     RETURN XPO$_NORMAL
U   1	   1248 
U   1	   1249     END;
U   1	   1250 %FI
    1	   1251 
    1	   1252 $XPO_MODULE( XPARS6 )

XPARSE                          XPO$PROT_PARSE - Special RSTS/E  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 26
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	   1254 %TITLE 'XPO$PROT_PARSE - Special RSTS/E File Protection Parsing'
    1	   1255 %IF $RSTS %THEN
U   1	   1256 
U   1	   1257 GLOBAL ROUTINE xpo$prot_parse( spec_block, secondary_code ) =
U   1	   1258 
U   1	   1259 !++
U   1	   1260 !
U   1	   1261 ! FUNCTIONAL DESCRIPTION:
U   1	   1262 !
U   1	   1263 !	This routine sets up protection information in the file-spec block.
U   1	   1264 !
U   1	   1265 ! FORMAL PARAMETERS:
U   1	   1266 !
U   1	   1267 !	spec_block - address of file-spec block
U   1	   1268 !	secondary_code - address of secondary completion code
U   1	   1269 !
U   1	   1270 ! IMPLICIT INPUTS:
U   1	   1271 !
U   1	   1272 !	xpo$state - current parsing state
U   1	   1273 !	xpo$scan_spec - current file-spec field descriptor
U   1	   1274 !
U   1	   1275 ! IMPLICIT OUTPUTS:
U   1	   1276 !
U   1	   1277 !	xpo$state - updated to indicate a protection spec has been processed
U   1	   1278 !	xpo$scan_spec - updated to describe the entire protection spec
U   1	   1279 !	xpo$field_delim - set to %C']'
U   1	   1280 !	xpo$next_field - set to indicate no further field expected
U   1	   1281 !
U   1	   1282 ! COMPLETION CODES:  (secondary codes are indented)
U   1	   1283 !
U   1	   1284 !	XPO$_NORMAL - the size was successfully processed
U   1	   1285 !	XPO$_BAD_PROT - the protection specification is invalid
U   1	   1286 !		XPO$_BAD_ORDER - misplaced or duplicated
U   1	   1287 !		XPO$_BAD_SYNTAX - invalid syntax
U   1	   1288 !	completion code from XPO$LAST_PARSE
U   1	   1289 !
U   1	   1290 ! SIDE EFFECTS:
U   1	   1291 !
U   1	   1292 !	This routine calls XPO$LAST_PARSE.
U   1	   1293 !
U   1	   1294 !--
U   1	   1295 
U   1	   1296     BEGIN
U   1	   1297 
U   1	   1298     MAP
U   1	   1299 	spec_block :  REF $XPO_SPEC_BLOCK;		! Redefine the file-spec block parameter
U   1	   1300 
U   1	   1301     EXTERNAL
U   1	   1302 	xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
U   1	   1303 	xpo$scan_spec :  $STR_DESCRIPTOR(),		! File-specification scanning descriptor
U   1	   1304 	xpo$field_delim,				! Current delimiter code
U   1	   1305 	xpo$next_field;					! Expected field indicator
U   1	   1306 
U   1	   1307     EXTERNAL ROUTINE
U   1	   1308 	xpo$last_parse;					! Previous field cleanup routine.
U   1	   1309 
U   1	   1310 !

XPARSE                          XPO$PROT_PARSE - Special RSTS/E  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 27
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

U   1	   1311 ! Complete the processing of the previous field, if any.
U   1	   1312 !
U   1	   1313 
U   1	   1314     $XPO_IF_NOT( xpo$last_parse( xpo$scan_spec[$BASE] ) )
U   1	   1315     THEN
U   1	   1316 	RETURN .$XPO_STATUS;
U   1	   1317 
U   1	   1318 !
U   1	   1319 ! Verify the location of the protection specification.
U   1	   1320 !
U   1	   1321 
U   1	   1322     IF .xpo$state[XPO$V_SPEC_PROT]			! If a protection field has been processed
U   1	   1323     THEN						!
U   1	   1324     	$XPO_RETURN2( BAD_PROT, BAD_ORDER );		! return an error code to the caller.
U   1	   1325 
U   1	   1326 !
U   1	   1327 ! Scan the entire protection specification.
U   1	   1328 !
U   1	   1329 
U   1	   1330     $STR_SCAN( REMAINDER = xpo$scan_spec[$BASE],	! Scan for the end of the protection specification.
U   1	   1331 		STOP = '>',
U   1	   1332 		SUBSTRING = xpo$scan_spec[$BASE],
U   1	   1333 		DELIMITER = xpo$field_delim,
U   1	   1334 		FAILURE = 0 );
U   1	   1335 
U   1	   1336     IF .xpo$field_delim NEQ %C'>'			! Verify that the right delimiter is correct.
U   1	   1337     THEN
U   1	   1338 	$XPO_RETURN2( BAD_DIRECT, BAD_SYNTAX );
U   1	   1339 
U   1	   1340     xpo$scan_spec[STR$H_LENGTH] =			! Include the right delimiter in the protection sub-string.
U   1	   1341 		.xpo$scan_spec[STR$H_LENGTH] + 1;
U   1	   1342 
U   1	   1343 !
U   1	   1344 ! Complete the protection information in the file-spec block.
U   1	   1345 !
U   1	   1346 
U   1	   1347     spec_block[XPO$H_FILE_PROT] = .xpo$scan_spec[STR$H_LENGTH];
U   1	   1348     spec_block[XPO$A_FILE_PROT] = .xpo$scan_spec[STR$A_POINTER];
U   1	   1349 
U   1	   1350 !
U   1	   1351 ! Setup to process the next field.
U   1	   1352 !
U   1	   1353 
U   1	   1354     xpo$state[XPO$V_SPEC_PROT] = 1;			! Indicate that a protection spec has been processed
U   1	   1355     xpo$state[XPO$V_SPEC_DEV] = 1;			! and that a device name,
U   1	   1356     xpo$state[XPO$V_SPEC_NAME] = 1;			!    a file name,
U   1	   1357     xpo$state[XPO$V_SPEC_TYPE] = 1;			!    or a file type cannot appear later.
U   1	   1358 
U   1	   1359     xpo$next_field = XPO$K_NO_NEXT;			! Indicate that no further field are expected.
U   1	   1360 
U   1	   1361 !
U   1	   1362 ! Return to the caller.
U   1	   1363 !
U   1	   1364 
U   1	   1365     RETURN XPO$_NORMAL
U   1	   1366 
U   1	   1367     END;

XPARSE                          XPO$PROT_PARSE - Special RSTS/E  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 28
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

U   1	   1368 %FI
    1	   1369 
    1	   1370 $XPO_MODULE( XPARS7 )

XPARSE                          XPO$EXTRA_PARSE - Extra Field(s  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 29
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	   1372 %TITLE 'XPO$EXTRA_PARSE - Extra Field(s) Parsing'
    1	   1373 %IF $TOPS20 OR $RSTS %THEN
U   1	   1374 
U   1	   1375 GLOBAL ROUTINE xpo$extra_parse( spec_block, secondary_code ) =
U   1	   1376 
U   1	   1377 !++
U   1	   1378 !
U   1	   1379 ! FUNCTIONAL DESCRIPTION:
U   1	   1380 !
U   1	   1381 !	This routine completes the processing of the previous field and
U   1	   1382 !	sets up the 'EXTRA' information in the file_spec block.
U   1	   1383 !
U   1	   1384 ! FORMAL PARAMETERS:
U   1	   1385 !
U   1	   1386 !	spec_block - address of file-spec block
U   1	   1387 !	secondary_code - address of secondary completion code
U   1	   1388 !
U   1	   1389 ! IMPLICIT INPUTS:
U   1	   1390 !
U   1	   1391 !	xpo$scan_spec - current file-spec field descriptor
U   1	   1392 !
U   1	   1393 ! IMPLICIT OUTPUTS:
U   1	   1394 !
U   1	   1395 !	xpo$scan_spec - updated to describe the extra file-spec info
U   1	   1396 !	xpo$field_delim - set to "null"
U   1	   1397 !	xpo$next_field - set to indicate no further field expected
U   1	   1398 !
U   1	   1399 ! COMPLETION CODES:  (secondary codes are indented)
U   1	   1400 !
U   1	   1401 !	XPO$_NORMAL - the previous field was successfully processed.
U   1	   1402 !	XPO$_BAD_ATTR - invalid attribute
U   1	   1403 !		XPO$_BAD_LENGTH - too long (TOPS-20 only)
U   1	   1404 !		XPO$_WILDCARD - contains an imbedded wildcard
U   1	   1405 !	completion code from XPO$LAST_PARSE
U   1	   1406 !
U   1	   1407 ! SIDE EFFECTS:
U   1	   1408 !
U   1	   1409 !	This routine calls XPO$LAST_PARSE.
U   1	   1410 !
U   1	   1411 !--
U   1	   1412 
U   1	   1413     BEGIN
U   1	   1414 
U   1	   1415     MAP
U   1	   1416 	spec_block :  REF $XPO_SPEC_BLOCK;		! Redefine the file-spec block parameter
U   1	   1417 
U   1	   1418     EXTERNAL
U   1	   1419 	xpo$scan_spec :  $STR_DESCRIPTOR(),		! File-specification scanning descriptor
U   1	   1420 	xpo$field_delim,				! Current delimiter code
U   1	   1421 	xpo$next_field;					! Expected field indicator
U   1	   1422 
U   1	   1423     EXTERNAL ROUTINE
U   1	   1424 	xpo$last_parse;					! Previous field cleanup routine.
U   1	   1425 
U   1	   1426     $XPO_PARSE_MAX					! Maximum field length literals
U   1	   1427 
U   1	   1428 !

XPARSE                          XPO$EXTRA_PARSE - Extra Field(s  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 30
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

U   1	   1429 ! Complete the processing of the previous field.
U   1	   1430 !
U   1	   1431 
U   1	   1432     $XPO_IF_NOT( xpo$last_parse( spec_block[$BASE], .secondary_code ) )
U   1	   1433     THEN
U   1	   1434 	RETURN .$XPO_STATUS;
U   1	   1435 
U   1	   1436 !
U   1	   1437 ! Scan to the end of the file-spec string.
U   1	   1438 !
U   1	   1439 
U   1	   1440     $STR_SCAN( REMAINDER = xpo$scan_spec[$BASE],
U   1	   1441 		STOP = %CHAR(del),
U   1	   1442 		SUBSTRING = xpo$scan_spec[$BASE],
U   1	   1443 		DELIMITER = xpo$field_delim,
U   1	   1444 		FAILURE = 0 );
U   1	   1445 
U   1	   1446 !
U   1	   1447 ! Validate the file attribute.
U   1	   1448 !
U   1	   1449 
U   1	   1450 %IF $TOPS20 %THEN					! Test for one of the following syntax errors:
U   1	   1451     IF .xpo$scan_spec[STR$H_LENGTH] GTR XPO$K_MAX_ATTR	!    file attribute string is too long
U   1	   1452     THEN
U   1	   1453 	$XPO_RETURN2( BAD_ATTR, BAD_LENGTH );
U   1	   1454 %FI
U   1	   1455 
U   1	   1456     IF $STR_SCAN( STRING = xpo$scan_spec[$BASE], FIND = '*', FAILURE = 0 )
U   1	   1457     THEN
U   1	   1458 	IF .xpo$scan_spec[STR$H_LENGTH] NEQ 2		!    imbedded wildcard in attribute info
U   1	   1459 	THEN
U   1	   1460 	    $XPO_RETURN2( BAD_ATTR, WILDCARD )
U   1	   1461 	ELSE
U   1	   1462 	    spec_block[XPO$V_WILD_ATTR] = 1;
U   1	   1463 
U   1	   1464 !
U   1	   1465 ! Complete the file attribute information in the file-spec block.
U   1	   1466 !
U   1	   1467 
U   1	   1468     spec_block[XPO$H_EXTRA] = .xpo$scan_spec[STR$H_LENGTH];
U   1	   1469     spec_block[XPO$A_EXTRA] = .xpo$scan_spec[STR$A_POINTER];
U   1	   1470 
U   1	   1471 !
U   1	   1472 ! Setup to process the next field.
U   1	   1473 !
U   1	   1474 
U   1	   1475     xpo$next_field = XPO$K_NO_NEXT;			! Indicate no further field expected.
U   1	   1476 
U   1	   1477 !
U   1	   1478 ! Return to the caller
U   1	   1479 !
U   1	   1480 
U   1	   1481     RETURN XPO$_NORMAL
U   1	   1482 
U   1	   1483     END;
U   1	   1484 %FI
    1	   1485 

XPARSE                          XPO$EXTRA_PARSE - Extra Field(s  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 31
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	   1486 $XPO_MODULE( XPARS8 )

XPARSE                          XPO$SIZE_PARSE - Special RT-11   4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 32
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	   1488 %TITLE 'XPO$SIZE_PARSE - Special RT-11 File Size Parsing'
    1	   1489 %IF $RT11 %THEN
U   1	   1490 
U   1	   1491 GLOBAL ROUTINE xpo$size_parse( spec_block, secondary_code ) =
U   1	   1492 
U   1	   1493 !++
U   1	   1494 !
U   1	   1495 ! FUNCTIONAL DESCRIPTION:
U   1	   1496 !
U   1	   1497 !	This routine sets up size information in the file-spec block.
U   1	   1498 !
U   1	   1499 ! FORMAL PARAMETERS:
U   1	   1500 !
U   1	   1501 !	spec_block - address of file-spec block
U   1	   1502 !	secondary_code - address of secondary completion code
U   1	   1503 !
U   1	   1504 ! IMPLICIT INPUTS:
U   1	   1505 !
U   1	   1506 !	xpo$state - current parsing state
U   1	   1507 !	xpo$scan_spec - current file-spec field descriptor
U   1	   1508 !
U   1	   1509 ! IMPLICIT OUTPUTS:
U   1	   1510 !
U   1	   1511 !	xpo$state - updated to indicate a size field has been processed
U   1	   1512 !	xpo$scan_spec - updated to describe the entire size field
U   1	   1513 !	xpo$field_delim - set to %C']'
U   1	   1514 !	xpo$next_field - set to indicate no further field expected
U   1	   1515 !
U   1	   1516 ! COMPLETION CODES:  (secondary codes are indented)
U   1	   1517 !
U   1	   1518 !	XPO$_NORMAL - the size was successfully processed
U   1	   1519 !	XPO$_BAD_SIZE - the size specification is invalid
U   1	   1520 !		XPO$_BAD_ORDER - misplaced or duplicated
U   1	   1521 !		XPO$_BAD_SYNTAX - invalid syntax
U   1	   1522 !	completion code from XPO$LAST_PARSE
U   1	   1523 !
U   1	   1524 ! SIDE EFFECTS:
U   1	   1525 !
U   1	   1526 !	This routine calls XPO$LAST_PARSE.
U   1	   1527 !
U   1	   1528 !--
U   1	   1529 
U   1	   1530     BEGIN
U   1	   1531 
U   1	   1532     MAP
U   1	   1533 	spec_block :  REF $XPO_SPEC_BLOCK;		! Redefine the file-spec block parameter
U   1	   1534 
U   1	   1535     EXTERNAL
U   1	   1536 	xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
U   1	   1537 	xpo$scan_spec :  $STR_DESCRIPTOR(),		! File-specification scanning descriptor
U   1	   1538 	xpo$field_delim,				! Current delimiter code
U   1	   1539 	xpo$next_field;					! Expected field indicator
U   1	   1540 
U   1	   1541     EXTERNAL ROUTINE
U   1	   1542 	xpo$last_parse;					! Previous field cleanup routine.
U   1	   1543 
U   1	   1544 !

XPARSE                          XPO$SIZE_PARSE - Special RT-11   4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 33
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

U   1	   1545 ! Complete the processing of the previous field, if any.
U   1	   1546 !
U   1	   1547 
U   1	   1548     $XPO_IF_NOT( xpo$last_parse( xpo$scan_spec[$BASE] ) )
U   1	   1549     THEN
U   1	   1550 	RETURN .$XPO_STATUS;
U   1	   1551 
U   1	   1552 !
U   1	   1553 ! Verify the location of the size specification.
U   1	   1554 !
U   1	   1555 
U   1	   1556     IF .xpo$state[XPO$V_SPEC_SIZE]			! If a size field has been processed or omitted,
U   1	   1557     THEN						!
U   1	   1558 	$XPO_RETURN2( BAD_SIZE, BAD_ORDER );		! return an error code to the caller.
U   1	   1559 
U   1	   1560 !
U   1	   1561 ! Scan the size field.
U   1	   1562 !
U   1	   1563 
U   1	   1564     $STR_SCAN( REMAINDER = xpo$scan_spec[$BASE],	! Scan to the end of the size field.
U   1	   1565 		STOP = ']',
U   1	   1566 		SUBSTRING = xpo$scan_spec[$BASE],
U   1	   1567 		DELIMITER = xpo$field_delim,
U   1	   1568 		FAILURE = 0 );
U   1	   1569 
U   1	   1570     IF .xpo$field_delim NEQ %C']'
U   1	   1571     THEN
U   1	   1572 	$XPO_RETURN2( BAD_SIZE, BAD_SYNTAX );
U   1	   1573 
U   1	   1574     xpo$scan_spec[STR$H_LENGTH] =			! Include the final delimiter in the size field.
U   1	   1575 	.xpo$scan_spec[STR$H_LENGTH] + 1;
U   1	   1576 
U   1	   1577 !
U   1	   1578 ! Complete the size field information in the file-spec block.
U   1	   1579 !
U   1	   1580 
U   1	   1581     spec_block[XPO$H_EXTRA] = .xpo$scan_spec[STR$H_LENGTH];
U   1	   1582     spec_block[XPO$A_EXTRA] = .xpo$scan_spec[STR$A_POINTER];
U   1	   1583 
U   1	   1584 !
U   1	   1585 ! Setup to process the next field.
U   1	   1586 !
U   1	   1587 
U   1	   1588     xpo$state[XPO$V_SPEC_SIZE] = 1;			! Indicate that a size field has been processed
U   1	   1589     xpo$state[XPO$V_SPEC_DEV] = 1;			! and that a device name,
U   1	   1590     xpo$state[XPO$V_SPEC_NAME] = 1;			!    a file name,
U   1	   1591     xpo$state[XPO$V_SPEC_TYPE] = 1;			!    and a file type cannot appear later.
U   1	   1592 
U   1	   1593     xpo$next_field = XPO$K_NO_NEXT;			! Indicate that there should be no other fields.
U   1	   1594 
U   1	   1595 !
U   1	   1596 ! Return to the caller.
U   1	   1597 !
U   1	   1598 
U   1	   1599     RETURN XPO$_NORMAL
U   1	   1600 
U   1	   1601     END;

XPARSE                          XPO$SIZE_PARSE - Special RT-11   4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 34
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

U   1	   1602 %FI
    1	   1603     
    1	   1604 $XPO_MODULE( XPARS9 )

XPARSE                          XPO$LAST_PARSE - Previous Field  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 35
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    1	   1606 %TITLE 'XPO$LAST_PARSE - Previous Field Parsing'
    1	   1607 
    1	   1608 GLOBAL ROUTINE xpo$last_parse( spec_block, secondary_code ) =
    1	   1609 
    1	   1610 !++
    1	   1611 !
    1	   1612 ! FUNCTIONAL DESCRIPTION:
    1	   1613 !
    1	   1614 !	This routine sets up the field which precedes the current delimiter
    1	   1615 !	and then updates the scanning string descriptor.
    1	   1616 !
    1	   1617 ! FORMAL PARAMETERS:
    1	   1618 !
    1	   1619 !	spec_block - address of file-spec block
    1	   1620 !	secondary_code - address of secondary completion code
    1	   1621 !
    1	   1622 ! IMPLICIT INPUTS:
    1	   1623 !
    1	   1624 !	xpo$state - current parsing state
    1	   1625 !	xpo$scan_spec - current file-spec field descriptor
    1	   1626 !
    1	   1627 ! IMPLICIT OUTPUTS:
    1	   1628 !
    1	   1629 !	xpo$state - updated to indicate a file name, type or version has been processed
    1	   1630 !	xpo$scan_spec - updated to describe null string preceding current delimiter
    1	   1631 !	xpo$next_field - set to indicate next expected field
    1	   1632 !
    1	   1633 ! COMPLETION CODES:  (secondary codes are indented)
    1	   1634 !
    1	   1635 !	XPO$_NORMAL - the previous field was successfully processed
    1	   1636 !	XPO$_BAD_NAME - invalid file name
    1	   1637 !		XPO$_BAD_LENGTH - too long
    1	   1638 !		XPO$_BAD_ORDER - misplaced or duplicated
    1	   1639 !		XPO$_WILDCARD - contains an imbedded wildcard
    1	   1640 !	XPO$_BAD_SYNTAX - invalid file-spec syntax
    1	   1641 !		XPO$_BAD_ORDER - field is misplaced or duplicated
    1	   1642 !	XPO$_BAD_TYPE - invalid file type
    1	   1643 !		XPO$_BAD_LENGTH - too long
    1	   1644 !		XPO$_BAD_ORDER - misplaced or duplicated
    1	   1645 !		XPO$_WILDCARD - contains an imbedded wildcard
    1	   1646 !	XPO$_BAD_VER - invalid file version (TOPS20, VMS and 11M only)
    1	   1647 !		XPO$_BAD_ORDER - misplaced or duplicated
    1	   1648 !		XPO$_BAD_SYNTAX - invalid syntax (not numbers or wildcard)
    1	   1649 !		XPO$_WILDCARD - contains an imbedded wildcard
    1	   1650 !
    1	   1651 ! SIDE EFFECTS:
    1	   1652 !
    1	   1653 !	None
    1	   1654 !
    1	   1655 !--
    1	   1656 
    1	   1657     BEGIN
    2	   1658 
    2	   1659     MAP
    2	   1660 	spec_block :  REF $XPO_SPEC_BLOCK;		! Redefine the file-spec block parameter
    2	   1661 
    2	   1662     EXTERNAL

XPARSE                          XPO$LAST_PARSE - Previous Field  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 36
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	   1663 	xpo$state :  $XPO_PARSE_STATE,			! File-specification parsing state indicators
    2	   1664 	xpo$scan_spec :  $STR_DESCRIPTOR(		! File-specification scanning descriptor
P   2	   1665 				CLASS = BOUNDED ),
    2	   1666 	xpo$field_delim,				! Current delimiter code
    2	   1667 	xpo$next_field;					! Expected field indicator
    2	   1668 
    2	   1669     $XPO_PARSE_MAX					! Maximum field length literals
    2	   1670 
    2	   1671 !
    2	   1672 ! Determine whether a "previous field" exists.
    2	   1673 !
    2	   1674 
    2	   1675     IF .xpo$scan_spec[STR$H_LENGTH] EQL 0 AND		! If there is no previous field,
    2	   1676 	.xpo$field_delim NEQ %C'.' AND			!
    2	   1677 	.xpo$field_delim NEQ %C';' AND			!
    2	   1678 	.xpo$next_field EQL XPO$K_NAME_NEXT		!
    2	   1679     THEN						!
    2	   1680 	RETURN XPO$_NORMAL;				! return a success code to the caller.
    2	   1681 
    2	   1682 !
    2	   1683 ! Select processing based on the "expected field" type.
    2	   1684 !
    2	   1685 
    2	   1686     CASE .xpo$next_field				! Use the expected field code to select
    2	   1687 	FROM XPO$K_NO_NEXT				! appropriate processing.
    2	   1688 %IF $TOPS20 OR $VMS OR $11M %THEN
    2	   1689 		TO XPO$K_VER_NEXT
    2	   1690 %ELSE
U   2	   1691 		TO XPO$K_TYPE_NEXT
U   2	   1692 %FI			OF
    2	   1693 	SET
    2	   1694 
    2	   1695 !
    2	   1696 ! File name processing.
    2	   1697 !
    2	   1698 
    2	   1699 	[ XPO$K_NAME_NEXT ] :
    2	   1700 	    BEGIN					! Check for one of the following syntax errors:
    3	   1701 	    IF .xpo$state[XPO$V_SPEC_NAME]		!    a file name has already appeared
    3	   1702 	    THEN
    3	   1703 		$XPO_RETURN2( BAD_NAME, BAD_ORDER );
    3	   1704 
    3	   1705 	    IF .xpo$scan_spec[STR$H_LENGTH] GTR		!    the file name is too long
    3	   1706 				XPO$K_MAX_NAME
    3	   1707 	    THEN
    3	   1708 		$XPO_RETURN2( BAD_NAME, BAD_LENGTH );
    3	   1709 
    3	   1710 	    IF $STR_SCAN( STRING = xpo$scan_spec[$BASE], FIND = '*', FAILURE = 0 )
    4	   1711 	    THEN
    3	   1712 		IF .xpo$scan_spec[STR$H_LENGTH] NEQ 1	!    the file name contains an imbedded wildcard
    3	   1713 		THEN
    3	   1714 		    $XPO_RETURN2( BAD_NAME, WILDCARD )
    4	   1715 		ELSE
    3	   1716 		    spec_block[XPO$V_WILD_NAME] = 1;
    3	   1717 
    3	   1718 	    spec_block[XPO$H_FILE_NAME] =		! Save the length of and a pointer to the file name.
    3	   1719 			.xpo$scan_spec[STR$H_LENGTH];

XPARSE                          XPO$LAST_PARSE - Previous Field  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 37
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    3	   1720 	    spec_block[XPO$A_FILE_NAME] = .xpo$scan_spec[STR$A_POINTER];
    3	   1721 
    3	   1722 	    xpo$state[XPO$V_SPEC_NAME] = 1;		! Indicate a file name has appeared.
    3	   1723 
    3	   1724 %IF $VMS OR $11M %THEN
    3	   1725 	    IF .xpo$field_delim EQL %C';'		! If the current delimiter is a semi-colon,
    3	   1726 	    THEN					!
    3	   1727 		BEGIN					!
    4	   1728 		xpo$next_field = XPO$K_VER_NEXT;	! indicate that the next field should be a version
    4	   1729 		xpo$state[XPO$V_SPEC_TYPE] = 1;		! and that a file type cannot appear later.
    4	   1730 		END
    4	   1731 	    ELSE
    3	   1732 %FI
    3	   1733 		xpo$next_field = XPO$K_TYPE_NEXT;	! Otherwise, indicate that a type is expected.
    3	   1734 	    END;
    2	   1735 
    2	   1736 !
    2	   1737 ! File type processing.
    2	   1738 !
    2	   1739 
    2	   1740 	[ XPO$K_TYPE_NEXT ] :
    2	   1741 	    BEGIN					! Check for one of the following syntax errors:
    3	   1742 	    IF .xpo$state[XPO$V_SPEC_TYPE]		!    a file type has already appeared
    3	   1743 	    THEN
    3	   1744 		$XPO_RETURN2( BAD_TYPE, BAD_ORDER );
    3	   1745 
    3	   1746 	    IF .xpo$scan_spec[STR$H_LENGTH] GTR		!    the file type is too long
    3	   1747 				XPO$K_MAX_TYPE
    3	   1748 	    THEN
    3	   1749 		$XPO_RETURN2( BAD_TYPE, BAD_LENGTH );
    3	   1750 
    3	   1751 	    IF $STR_SCAN( STRING = xpo$scan_spec[$BASE], FIND = '*', FAILURE = 0 )
    4	   1752 	    THEN
    3	   1753 		IF .xpo$scan_spec[STR$H_LENGTH] NEQ 1	!    the file type contains an imbedded wildcard
    3	   1754 		THEN
    3	   1755 		    $XPO_RETURN2( BAD_TYPE, WILDCARD )
    4	   1756 		ELSE
    3	   1757 		    spec_block[XPO$V_WILD_TYPE] = 1;
    3	   1758 
    3	   1759 	    spec_block[XPO$H_FILE_TYPE] =		! Save the length of and a pointer to the file type.
    3	   1760 			.xpo$scan_spec[STR$H_LENGTH] + 1;
    3	   1761 	    spec_block[XPO$A_FILE_TYPE] = CH$PLUS( .xpo$scan_spec[STR$A_POINTER], -1 );
    3	   1762 
    3	   1763 	    xpo$state[XPO$V_SPEC_TYPE] = 1;		! Indicate a file type has appeared
    3	   1764 	    xpo$state[XPO$V_SPEC_NAME] = 1;		! and that a file name cannot appear later.
    3	   1765 
    3	   1766 %IF $TOPS20 OR $VMS OR $11M %THEN
    3	   1767 	    xpo$next_field = XPO$K_VER_NEXT;		! Indicate that a file version is expected.
    3	   1768 	    END;
    2	   1769 
    2	   1770 !
    2	   1771 ! File version processing.
    2	   1772 !
    2	   1773 
    2	   1774 	[ XPO$K_VER_NEXT ] :
    2	   1775 	    BEGIN					! Check for one of the following syntax errors:
    3	   1776 	    IF .xpo$state[XPO$V_SPEC_VER]		!    a file version has already appeared

XPARSE                          XPO$LAST_PARSE - Previous Field  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 38
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    3	   1777 	    THEN
    3	   1778 		$XPO_RETURN2( BAD_VER, BAD_ORDER );
    3	   1779 
    3	   1780 	    IF $STR_SCAN( STRING = xpo$scan_spec[$BASE], SPAN = '0123456789*', FAILURE = 0 ) NEQ STR$_END_STRING
    3	   1781 	    THEN
    3	   1782 		$XPO_RETURN2( BAD_VER, BAD_SYNTAX );	!    file version was not a number or an asterisk
    3	   1783 
    3	   1784 	    IF $STR_SCAN( STRING = xpo$scan_spec[$BASE], FIND = '*', FAILURE = 0 )
    4	   1785 	    THEN
    3	   1786 		IF .xpo$scan_spec[STR$H_LENGTH] NEQ 1	!    the file version contains an imbedded wildcard
    3	   1787 		THEN
    3	   1788 		    $XPO_RETURN2( BAD_VER, WILDCARD )
    4	   1789 		ELSE
    3	   1790 		    spec_block[XPO$V_WILD_VER] = 1;
    3	   1791 
    3	   1792 	    spec_block[XPO$H_FILE_VER] =		! Save the length of and a pointer to the file version.
    3	   1793 			.xpo$scan_spec[STR$H_LENGTH] + 1;
    3	   1794 	    spec_block[XPO$A_FILE_VER] = CH$PLUS( .xpo$scan_spec[STR$A_POINTER], -1 );
    3	   1795 
    3	   1796 	    xpo$state[XPO$V_SPEC_VER] = 1;		! Indicate a file version has appeared
    3	   1797 	    xpo$state[XPO$V_SPEC_NAME] = 1;		! and that a file name or type cannot appear later.
    3	   1798 	    xpo$state[XPO$V_SPEC_TYPE] = 1;
    3	   1799 %FI
    3	   1800 	    xpo$next_field = XPO$K_NO_NEXT;		! Indicate no further fields expected.
    3	   1801 	    END;
    2	   1802 
    2	   1803 !
    2	   1804 ! Expected null field processing.
    2	   1805 !
    2	   1806 
    2	   1807 	[ XPO$K_NO_NEXT ] :
    2	   1808 	    IF .xpo$scan_spec[STR$H_LENGTH] EQL 0	! If there is no previous field,
    2	   1809 	    THEN					!
    2	   1810 		RETURN XPO$_NORMAL			! return a success code to the caller.
    2	   1811 	    ELSE
    2	   1812 		$XPO_RETURN2( BAD_SYNTAX, BAD_ORDER );	! Otherwise, return error codes to the caller.
    2	   1813 
    2	   1814 	TES;
    2	   1815 
    2	   1816 !
    2	   1817 ! Complete setup for processing the next field.
    2	   1818 !
    2	   1819 
    2	   1820     xpo$scan_spec[STR$A_POINTER] =			! Setup the scanning descriptor describe a null string
    2	   1821 	CH$PLUS( .xpo$scan_spec[STR$A_POINTER],		! which precedes the current delimiter.
    2	   1822 		    .xpo$scan_spec[STR$H_LENGTH] );
    2	   1823     xpo$scan_spec[STR$H_PFXLEN] = .xpo$scan_spec[STR$H_PFXLEN] + .xpo$scan_spec[STR$H_LENGTH];
    2	   1824     xpo$scan_spec[STR$H_LENGTH] = 0;
    2	   1825 
    2	   1826 							! Indicate that the following fields cannot appear later:
    2	   1827     xpo$state[XPO$V_SPEC_NODE] = 1;			!    node name
    2	   1828     xpo$state[XPO$V_SPEC_DEV] = 1;			!    device name
    2	   1829 %IF NOT $TOPS10 AND NOT $RSTS %THEN			!
    2	   1830     xpo$state[XPO$V_SPEC_DIR] = 1;			!    directory specification
    2	   1831 %FI
    2	   1832 
    2	   1833 !

XPARSE                          XPO$LAST_PARSE - Previous Field  4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 39
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

    2	   1834 ! Return to the caller.
    2	   1835 !
    2	   1836 
    2	   1837     RETURN XPO$_NORMAL
    2	   1838 
    2	   1839     END;
    1	   1840 END
    1	   1841 ELUDOM

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 40
V1.2-23                                                         19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

				      .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC
				      .proc   XPO$PARSE_SPEC
				      .align 32
				      .global  XPO$PARSE_SPEC
			XPO$PARSE_SPEC:											   // 000118
			   { .mii 
0119F8C40300     0000		      adds    r12 = -96, r12
012000002640     0001		      mov     r25 = 1									   // 000229
000008000000     0002		      nop.i   0 ;;
			   }
			   { .mmi 
010800CD00C0     0010		      adds    r3 = 104, r12 ;;								   // 000221
002C059C1DC0     0011		      alloc   r119 = rspfs, 5, 84, 7, 0							   // 000118
000188001D80     0012		      mov     r118 = br0
			   }
			   { .mib 
010800101E00     0020		      mov     r120 = r1
0000B2001E40     0021		      sxt4    r121 = FILE_SPEC			// r121 = r32				   // 000229
004000000000     0022		      nop.b   0 ;;
			   }
			   { .mfb 
008C80300000     0030		      st4     [r3] = r0									   // 000221
000008000000     0031		      nop.f   0
00A000001000     0032		      br.call.sptk.many br0 = XST$VALIDATE						   // 000229
			   }
			   { .mib 
010807800040     0040		      mov     r1 = r120
00A0308001C0     0041		      tbit.z  pr7, pr6 = $STR$STATUS, 0		// pr7, pr6 = r8, 0
008600006006     0042	       (pr6)  br.cond.dpnt.few L$126
			   }
			   { .mlx 
010800CD0A40     0050		      adds    r41 = 104, r12
000000000000     0051		      movl    PRIMARY_CODE = 2402322 ;;		// r40 = 2402322
0195024494
			   }
			   { .mfb 
008C82910000     0060		      st4     [r41] = $STR$STATUS		// [r41] = r8
000008000000     0061		      nop.f   0
008000150000     0062		      br.sptk.few L$128 ;;
			   }
	         0070	L$126:
			   { .mii 
000008000000     0070		      nop.m   0
0000B2101E80     0071		      sxt4    r122 = SPEC_BLOCK			// r122 = r33				   // 000231
0000B2001E40     0072		      sxt4    r121 = FILE_SPEC			// r121 = r32
			   }
			   { .mfb 
000008000000     0080		      nop.m   0
000008000000     0081		      nop.f   0
00A000001000     0082		      br.call.sptk.many br0 = XPO$SETUP_PARSE
			   }
			   { .mmi 
012000100A80     0090		      add     r42 = @ltoff(@fptr(SYS$FILESCAN)), 					   // 000244
					      r1 ;;
0080C2A00A80     0091		      ld8     r42 = SYS$FILESCAN		// r42 = [r42]
000008000000     0092		      nop.i   0 ;;
			   }

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 41
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   { .mfb 
01C402A00240     00A0		      cmp4.eq pr9, pr0 = r0, r42
000008000000     00A1		      nop.f   0
00860009C009     00A2	       (pr9)  br.cond.dpnt.few L$130
			   }
			   { .mii 
012000101EC0     00B0		      add     r123 = @ltoff(P.AAA), r1							   // 000266
0000B2000AC0     00B1		      sxt4    r43 = FILE_SPEC			// r43 = r32				   // 000272
012000069E80     00B2		      mov     r122 = 52									   // 000266
			   }
			   { .mmi 
010800C51E40     00C0		      adds    r121 = 40, r12
010800C40B40     00C1		      adds    r45 = 32, r12								   // 000272
010800C46BC0     00C2		      adds    r47 = 35, r12 ;;
			   }
			   { .mib 
0080C7B01EC0     00D0		      ld8     r123 = P.AAA			// r123 = [r123]			   // 000266
012000002B80     00D1		      mov     r46 = 1									   // 000272
00A000001000     00D2		      br.call.sptk.many br0 = OTS$MOVE ;;						   // 000266
			   }
			   { .mii 
010800001EC0     00E0		      mov     r123 = r0
012000019E80     00E1		      mov     r122 = 12
010807800040     00E2		      mov     r1 = r120
			   }
			   { .mmi 
010800C44C00     00F0		      adds    r48 = 34, r12								   // 000272
010800C40C80     00F1		      adds    r50 = 32, r12								   // 000274
010800C48C40     00F2		      adds    r49 = 36, r12 ;;								   // 000272
			   }
			   { .mfb 
000008000000     0100		      nop.m   0
000008000000     0101		      nop.f   0
00A000001000     0102		      br.call.sptk.many br0 = OTS$FILL							   // 000266
			   }
			   { .mii 
00A042B04B00     0110		      ld2     r44 = [r43], 2								   // 000272
0000B3201E40     0111		      sxt4    r121 = r50								   // 000274
010800C50C80     0112		      adds    r50 = 40, r12
			   }
			   { .mii 
012000006640     0120		      mov     r25 = 3
0000B0001EC0     0121		      sxt4    r123 = r0
010807800040     0122		      mov     r1 = r120 ;;								   // 000266
			   }
			   { .mmi 
008C42D58000     0130		      st2     [r45] = r44								   // 000272
00A002B04B00     0131		      ld1     r44 = [r43], 2
0000B3201E80     0132		      sxt4    r122 = r50 ;;								   // 000274
			   }
			   { .mmi 
008C02F5C000     0140		      st1     [r47] = r46								   // 000272
008C03058000     0141		      st1     [r48] = r44
000008000000     0142		      nop.i   0
			   }
			   { .mmi 
008082B00AC0     0150		      ld4     r43 = [r43] ;;

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 42
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

008C83156000     0151		      st4     [r49] = r43
000008000000     0152		      nop.i   0
			   }
			   { .mfb 
000008000000     0160		      nop.m   0
000008000000     0161		      nop.f   0
00A000001000     0162		      br.call.sptk.many br0 = SYS$FILESCAN						   // 000274
			   }
			   { .mii 
010800C40D00     0170		      adds    r52 = 32, r12								   // 000277
010800C50CC0     0171		      adds    r51 = 40, r12								   // 000276
010807800040     0172		      mov     r1 = r120 ;;								   // 000274
			   }
			   { .mmi 
008043400D00     0180		      ld2     r52 = [r52]								   // 000277
008043300CC0     0181		      ld2     r51 = [r51]								   // 000276
000008000000     0182		      nop.i   0 ;;
			   }
			   { .mfb 
01C433466000     0190		      cmp4.eq pr0, pr6 = r51, r52							   // 000277
000008000000     0191		      nop.f   0
008600078006     0192	       (pr6)  br.cond.dpnt.few L$133								   // 000276
			   }
			   { .mii 
010800C60D80     01A0		      adds    r54 = 48, r12								   // 000283
010800C68E00     01A1		      adds    r56 = 52, r12								   // 000284
0000B2100D40     01A2		      sxt4    r53 = SPEC_BLOCK			// r53 = r33				   // 000283
			   }
			   { .mmi 
010800C70E80     01B0		      adds    r58 = 56, r12								   // 000285
010800C78F00     01B1		      adds    r60 = 60, r12								   // 000286
010800C80F80     01B2		      adds    r62 = 64, r12 ;;								   // 000287
			   }
			   { .mii 
008043600D80     01C0		      ld2     r54 = [r54]								   // 000283
010800C89000     01C1		      adds    r64 = 68, r12								   // 000288
010800C91080     01C2		      adds    r66 = 72, r12								   // 000289
			   }
			   { .mmi 
010800C99100     01D0		      adds    r68 = 76, r12								   // 000290
010800CA1180     01D1		      adds    r70 = 80, r12								   // 000291
010800CA9200     01D2		      adds    r72 = 84, r12								   // 000292
			   }
			   { .mii 
010803508D40     01E0		      adds    r53 = 4, r53								   // 000283
010800CB1280     01E1		      adds    r74 = 88, r12								   // 000293
010800CB9300     01E2		      adds    r76 = 92, r12								   // 000294
			   }
			   { .mmi 
0120001013C0     01F0		      add     r79 = @ltoff($STR$PATTERN), r1						   // 000301
012000029340     01F1		      mov     r77 = 20
01200000E640     01F2		      mov     r25 = 7 ;;
			   }
			   { .mmi 
00AC4356C100     0200		      st2     [r53] = r54, 4								   // 000283
008083800E00     0201		      ld4     r56 = [r56]								   // 000284
0000B0001FC0     0202		      sxt4    r127 = r0 ;;								   // 000301

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 43
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mii 
0080C4F013C0     0210		      ld8     r79 = $STR$PATTERN		// r79 = [r79]
0000B0001F80     0211		      sxt4    r126 = r0
0000B0001F40     0212		      sxt4    r125 = r0
			   }
			   { .mmi 
00AC83570100     0220		      st4     [r53] = r56, 4								   // 000284
008043A00E80     0221		      ld2     r58 = [r58]								   // 000285
0000B0001F00     0222		      sxt4    r124 = r0 ;;								   // 000301
			   }
			   { .mib 
012400007E40     0230		      addl    r121 = 16387, r0
0000B4F01EC0     0231		      sxt4    r123 = r79
004000000000     0232		      nop.b   0
			   }
			   { .mmi 
00AC43574100     0240		      st2     [r53] = r58, 4								   // 000285
008083C00F00     0241		      ld4     r60 = [r60]								   // 000286
000008000000     0242		      nop.i   0 ;;
			   }
			   { .mmi 
00AC83578100     0250		      st4     [r53] = r60, 4
008043E00F80     0251		      ld2     r62 = [r62]								   // 000287
000008000000     0252		      nop.i   0 ;;
			   }
			   { .mmi 
00AC4357C100     0260		      st2     [r53] = r62, 4
008084001000     0261		      ld4     r64 = [r64]								   // 000288
000008000000     0262		      nop.i   0 ;;
			   }
			   { .mmi 
00AC83580200     0270		      st4     [r53] = r64, 8
008044201080     0271		      ld2     r66 = [r66]								   // 000289
000008000000     0272		      nop.i   0 ;;
			   }
			   { .mmi 
00AC43584100     0280		      st2     [r53] = r66, 4
008084401100     0281		      ld4     r68 = [r68]								   // 000290
000008000000     0282		      nop.i   0 ;;
			   }
			   { .mmi 
00AC83588100     0290		      st4     [r53] = r68, 4
008044601180     0291		      ld2     r70 = [r70]								   // 000291
000008000000     0292		      nop.i   0 ;;
			   }
			   { .mmi 
00AC4358C100     02A0		      st2     [r53] = r70, 4
008084801200     02A1		      ld4     r72 = [r72]								   // 000292
000008000000     02A2		      nop.i   0 ;;
			   }
			   { .mmi 
00AC83590100     02B0		      st4     [r53] = r72, 4
008044A01280     02B1		      ld2     r74 = [r74]								   // 000293
000008000000     02B2		      nop.i   0 ;;
			   }
			   { .mmi 

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 44
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

00BC4B595400     02C0		      st2     [r53] = r74, -48
008084C01300     02C1		      ld4     r76 = [r76]								   // 000294
000008000000     02C2		      nop.i   0 ;;
			   }
			   { .mii 
010004D6B340     02D0		      add     r77 = r53, r77								   // 000301
010803568D40     02D1		      adds    r53 = 52, r53 ;;								   // 000294
0000B4D01E80     02D2		      sxt4    r122 = r77								   // 000301
			   }
			   { .mfb 
00BC8B599300     02E0		      st4     [r53] = r76, -52								   // 000294
000008000000     02E1		      nop.f   0
00A000001000     02E2		      br.call.sptk.many br0 = XST$SCAN							   // 000301
			   }
			   { .mib 
01CC30802000     02F0		      cmp4.eq pr0, pr6 = 1, r8
010807800040     02F1		      mov     r1 = r120
008600006006     02F2	       (pr6)  br.cond.dpnt.few L$137 ;;
			   }
			   { .mmi 
008083501400     0300		      ld4     r80 = [r53] ;;								   // 000302
010175081400     0301		      or      r80 = 64, r80
000008000000     0302		      nop.i   0 ;;
			   }
			   { .mfi 
008C835A0000     0310		      st4     [r53] = r80
000008000000     0311		      nop.f   0
000008000000     0312		      nop.i   0
			   }
	         0320	L$137:												   // 000301
			   { .mii 
010803540D40     0320		      adds    r53 = 32, r53								   // 000307
0120000054C0     0321		      mov     r83 = 2
000008000000     0322		      nop.i   0 ;;
			   }
			   { .mmi 
00B04B5C1480     0330		      ld2     r82 = [r53], -32 ;;
0184053A4240     0331		      cmp4.lt pr9, pr0 = r82, r83
0119FD2FF480     0332		      adds    r82 = -1, r82
			   }
			   { .mfb 
000008000000     0340		      nop.m   0
000008000000     0341		      nop.f   0
008600012009     0342	       (pr9)  br.cond.dpnt.few L$146
			   }
			   { .mmi 
010803548D40     0350		      adds    r53 = 36, r53 ;;								   // 000308
00B08B5B9500     0351		      ld4     r84 = [r53], -36
000008000000     0352		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     0360		      nop.m   0
0000B5401500     0361		      sxt4    r84 = r84
004000000000     0362		      nop.b   0 ;;
			   }
			   { .mmi 
008005401500     0370		      ld1     r84 = [r84] ;;

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 45
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

01CC5D444000     0371		      cmp4.eq pr0, pr11 = 34, r84
000008000000     0372		      nop.i   0 ;;
			   }
			   { .mfb 
01C00000124B     0380	       (pr11) cmp.eq.unc pr9, pr0 = r0, r0							   // 000307
000008000000     0381		      nop.f   0
00860000A009     0382	       (pr9)  br.cond.dpnt.few L$146								   // 000308
			   }
			   { .mib 
010803548D40     0390		      adds    r53 = 36, r53								   // 000309
0000B5201480     0391		      sxt4    r82 = r82
004000000000     0392		      nop.b   0 ;;
			   }
			   { .mmi 
00B08B5B9540     03A0		      ld4     r85 = [r53], -36 ;;
000008000000     03A1		      nop.m   0
0000B5501540     03A2		      sxt4    r85 = r85 ;;
			   }
			   { .mmi 
0100052AB480     03B0		      add     r82 = r85, r82 ;;
008005201480     03B1		      ld1     r82 = [r82]
000008000000     03B2		      nop.i   0 ;;
			   }
			   { .mfb 
01CC05244300     03C0		      cmp4.eq pr12, pr0 = 34, r82							   // 000310
000008000000     03C1		      nop.f   0
00860001200C     03C2	       (pr12) br.cond.dpnt.few L$145
			   }
	         03D0	L$146:												   // 000312
			   { .mii 
012000041580     03D0		      mov     r86 = 32
010804F115C0     03D1		      adds    r87 = 8, r79
01200000E640     03D2		      mov     r25 = 7
			   }
			   { .mii 
012400007E40     03E0		      addl    r121 = 16387, r0
0000B0001FC0     03E1		      sxt4    r127 = r0
0000B0001F80     03E2		      sxt4    r126 = r0 ;;
			   }
			   { .mii 
01000566B580     03F0		      add     r86 = r53, r86
0000B0001F40     03F1		      sxt4    r125 = r0
0000B0001F00     03F2		      sxt4    r124 = r0 ;;
			   }
			   { .mii 
000008000000     0400		      nop.m   0
0000B5701EC0     0401		      sxt4    r123 = r87
0000B5601E80     0402		      sxt4    r122 = r86
			   }
			   { .mfb 
000008000000     0410		      nop.m   0
000008000000     0411		      nop.f   0
00A000001000     0412		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mib 
01CC30802000     0420		      cmp4.eq pr0, pr6 = 1, r8
010807800040     0421		      mov     r1 = r120

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 46
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

008600006006     0422	       (pr6)  br.cond.dpnt.few L$145
			   }
			   { .mii 
008083501600     0430		      ld4     r88 = [r53]								   // 000313
012008001640     0431		      mov     r89 = 128 ;;
0100759B1600     0432		      or      r88 = r88, r89 ;;
			   }
			   { .mfi 
008C835B0000     0440		      st4     [r53] = r88
000008000000     0441		      nop.f   0
000008000000     0442		      nop.i   0
			   }
	         0450	L$145:												   // 000315
			   { .mii 
0120000516C0     0450		      mov     r91 = 40
010804F21700     0451		      adds    r92 = 16, r79
01200000E640     0452		      mov     r25 = 7 ;;
			   }
			   { .mii 
010005B6B6C0     0460		      add     r91 = r53, r91
0000B0001FC0     0461		      sxt4    r127 = r0
0000B0001F80     0462		      sxt4    r126 = r0
			   }
			   { .mii 
012400007E40     0470		      addl    r121 = 16387, r0
0000B0001F40     0471		      sxt4    r125 = r0
0000B0001F00     0472		      sxt4    r124 = r0 ;;
			   }
			   { .mii 
000008000000     0480		      nop.m   0
0000B5C01EC0     0481		      sxt4    r123 = r92
0000B5B01E80     0482		      sxt4    r122 = r91
			   }
			   { .mfb 
000008000000     0490		      nop.m   0
000008000000     0491		      nop.f   0
00A000001000     0492		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mib 
01CC30802000     04A0		      cmp4.eq pr0, pr6 = 1, r8
010807800040     04A1		      mov     r1 = r120
008600006006     04A2	       (pr6)  br.cond.dpnt.few L$152
			   }
			   { .mii 
008083501740     04B0		      ld4     r93 = [r53]								   // 000316
012010001780     04B1		      mov     r94 = 256 ;;
010075EBB740     04B2		      or      r93 = r93, r94 ;;
			   }
			   { .mfi 
008C835BA000     04C0		      st4     [r53] = r93
000008000000     04C1		      nop.f   0
000008000000     04C2		      nop.i   0
			   }
	         04D0	L$152:												   // 000318
			   { .mii 
012000061800     04D0		      mov     r96 = 48
010804F313C0     04D1		      adds    r79 = 24, r79

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 47
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

01200000E640     04D2		      mov     r25 = 7 ;;
			   }
			   { .mii 
01000606B800     04E0		      add     r96 = r53, r96
0000B0001FC0     04E1		      sxt4    r127 = r0
0000B0001F80     04E2		      sxt4    r126 = r0
			   }
			   { .mii 
012400007E40     04F0		      addl    r121 = 16387, r0
0000B0001F40     04F1		      sxt4    r125 = r0
0000B0001F00     04F2		      sxt4    r124 = r0 ;;
			   }
			   { .mii 
000008000000     0500		      nop.m   0
0000B4F01EC0     0501		      sxt4    r123 = r79
0000B6001E80     0502		      sxt4    r122 = r96
			   }
			   { .mfb 
000008000000     0510		      nop.m   0
000008000000     0511		      nop.f   0
00A000001000     0512		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mib 
01CC30802000     0520		      cmp4.eq pr0, pr6 = 1, r8
010807800040     0521		      mov     r1 = r120
0086000A4006     0522	       (pr6)  br.cond.dpnt.few L$156
			   }
			   { .mii 
008083501840     0530		      ld4     r97 = [r53]								   // 000319
012020001880     0531		      mov     r98 = 512 ;;
0100762C3840     0532		      or      r97 = r97, r98 ;;
			   }
			   { .mfb 
008C835C2000     0540		      st4     [r53] = r97
000008000000     0541		      nop.f   0
0080000A0000     0542		      br.sptk.few L$156 ;;								   // 000318
			   }
	         0550	L$133:												   // 000276
			   { .mlx 
010800CD1900     0550		      adds    r100 = 104, r12								   // 000326
800000000000     0551		      movl    r99 = 2138850 ;;
01945058B1
			   }
			   { .mlx 
008C864C6000     0560		      st4     [r100] = r99
000000000000     0561		      movl    PRIMARY_CODE = 2138290		// r40 = 2138290
0194104C94
			   }
			   { .mfb 
000008000000     0570		      nop.m   0
000008000000     0571		      nop.f   0
0080000AE000     0572		      br.sptk.few L$128 ;;
			   }
	         0580	L$130:												   // 000342
			   { .mmi 
012000101940     0580		      add     r101 = @ltoff(XPO$FIELD_DELIM), 
					      r1 ;;

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 48
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

0080C6501940     0581		      ld8     r101 = XPO$FIELD_DELIM		// r101 = [r101]
000008000000     0582		      nop.i   0 ;;
			   }
	         0590	L$158:
			   { .mmi 
008086501980     0590		      ld4     r102 = [r101] ;;
01C406600240     0591		      cmp4.eq pr9, pr0 = r0, r102
000008000000     0592		      nop.i   0
			   }
			   { .mfb 
000008000000     05A0		      nop.m   0
000008000000     05A1		      nop.f   0
008600094009     05A2	       (pr9)  br.cond.dpnt.few L$156
			   }
			   { .mii 
010800C31A40     05B0		      adds    r105 = 24, r12								   // 000358
0119FE5E99C0     05B1		      adds    r103 = -12, r101
010806551A00     05B2		      adds    r104 = 40, r101
			   }
			   { .mii 
01200000E640     05C0		      mov     r25 = 7
0000B0001FC0     05C1		      sxt4    r127 = r0
0000B0001F80     05C2		      sxt4    r126 = r0 ;;
			   }
			   { .mii 
012410005E40     05D0		      addl    r121 = 16642, r0
0000B6901F40     05D1		      sxt4    r125 = r105
0000B6701F00     05D2		      sxt4    r124 = r103
			   }
			   { .mii 
000008000000     05E0		      nop.m   0
0000B6801EC0     05E1		      sxt4    r123 = r104
0000B6701E80     05E2		      sxt4    r122 = r103
			   }
			   { .mfb 
000008000000     05F0		      nop.m   0
000008000000     05F1		      nop.f   0
00A000001000     05F2		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mib 
010807800040     0600		      mov     r1 = r120
00A0308001C0     0601		      tbit.z  pr7, pr6 = r8, 0
008600006007     0602	       (pr7)  br.cond.dpnt.few L$161
			   }
			   { .mmi 
010800C31A80     0610		      adds    r106 = 24, r12 ;;
008086A01A80     0611		      ld4     r106 = [r106]
000008000000     0612		      nop.i   0 ;;
			   }
			   { .mfi 
008C865D4000     0620		      st4     [r101] = r106
000008000000     0621		      nop.f   0
000008000000     0622		      nop.i   0
			   }
	         0630	L$161:
			   { .mmi 
008086501B00     0630		      ld4     r108 = [r101] ;;								   // 000365

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 49
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

01CC46C44000     0631		      cmp4.eq pr0, pr8 = 34, r108
000008000000     0632		      nop.i   0
			   }
			   { .mfb 
000008000000     0640		      nop.m   0
000008000000     0641		      nop.f   0
00860001E008     0642	       (pr8)  br.cond.dpnt.few L$164
			   }
			   { .mmi 
0119FE5FD940     0650		      adds    r101 = -2, r101 ;;							   // 000371
00B04E5F5B80     0651		      ld2     TEMP_PFXLEN = [r101], -6		// r110 = [r101], -6
000008000000     0652		      nop.i   0 ;;
			   }
			   { .mfi 
00A086511B40     0660		      ld4     TEMP_POINTER = [r101], 8		// r109 = [r101], 8			   // 000370
000008000000     0661		      nop.f   0
000008000000     0662		      nop.i   0 ;;
			   }
	         0670	L$166:												   // 000373
			   { .mii 
010800C21C80     0670		      adds    r114 = 16, r12								   // 000381
0119FE5E99C0     0671		      adds    r103 = -12, r101
010806561C00     0672		      adds    r112 = 48, r101
			   }
			   { .mmi 
0119FE5E9940     0680		      adds    r101 = -12, r101								   // 000375
01200000E640     0681		      mov     r25 = 7									   // 000381
0000B0001FC0     0682		      sxt4    r127 = r0 ;;
			   }
			   { .mii 
008046501BC0     0690		      ld2     r111 = [r101]								   // 000375
0000B0001F80     0691		      sxt4    r126 = r0									   // 000381
0000B7201F40     0692		      sxt4    r125 = r114 ;;
			   }
			   { .mii 
000008000000     06A0		      nop.m   0
0000B6701F00     06A1		      sxt4    r124 = r103
010806F03BC0     06A2		      adds    r111 = 1, r111								   // 000375
			   }
			   { .mii 
012410003E40     06B0		      addl    r121 = 16641, r0								   // 000381
0000B7001EC0     06B1		      sxt4    r123 = r112
0000B6701E80     06B2		      sxt4    r122 = r103 ;;
			   }
			   { .mfb 
00AC465DE300     06C0		      st2     [r101] = r111, 12								   // 000375
000008000000     06C1		      nop.f   0
00A000001000     06C2		      br.call.sptk.many br0 = XST$SCAN							   // 000381
			   }
			   { .mib 
010807800040     06D0		      mov     r1 = r120
00A0308001C0     06D1		      tbit.z  pr7, pr6 = r8, 0
008600062007     06D2	       (pr7)  br.cond.dpnt.few L$168
			   }
			   { .mmi 
010800C21CC0     06E0		      adds    r115 = 16, r12 ;;
008087301CC0     06E1		      ld4     r115 = [r115]

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 50
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

000008000000     06E2		      nop.i   0 ;;
			   }
			   { .mmb 
01CC07344240     06F0		      cmp4.eq pr9, pr0 = 34, r115							   // 000385
008C865E6000     06F1		      st4     [r101] = r115								   // 000381
0095FFFF0009     06F2	       (pr9)  br.cond.dptk.few L$166								   // 000385
			   }
			   { .mmi 
0119FE5F1940     0700		      adds    r101 = -8, r101 ;;							   // 000390
008086501D40     0701		      ld4     r117 = [r101]
000008000000     0702		      nop.i   0 ;;
			   }
			   { .mii 
00AC865DA180     0710		      st4     [r101] = TEMP_POINTER, 6		// [r101] = r109, 6			   // 000391
01002EDEBD40     0711		      sub     r117 = r117, TEMP_POINTER ;;	// r117 = r117, r109			   // 000390
010807503D40     0712		      adds    r117 = 1, r117 ;;
			   }
			   { .mmi 
00BC4E5DDD80     0720		      st2     [r101] = TEMP_PFXLEN, -10 ;;	// [r101] = r110, -10			   // 000392
00AC465EA300     0721		      st2     [r101] = r117, 12								   // 000390
000008000000     0722		      nop.i   0 ;;
			   }
	         0730	L$164:												   // 000365
			   { .mmi 
008086500B80     0730		      ld4     r46 = [r101] ;;								   // 000400
01CC52E74000     0731		      cmp4.eq pr0, pr10 = 58, r46
000008000000     0732		      nop.i   0
			   }
			   { .mfb 
000008000000     0740		      nop.m   0
000008000000     0741		      nop.f   0
00860002200A     0742	       (pr10) br.cond.dpnt.few L$174
			   }
			   { .mii 
0119FE5FD940     0750		      adds    r101 = -2, r101								   // 000405
012000004AC0     0751		      mov     r43 = 2									   // 000406
000008000000     0752		      nop.i   0 ;;
			   }
			   { .mmi 
00B04E5FCB00     0760		      ld2     r44 = [r101], -2 ;;							   // 000405
00B04E5F0BC0     0761		      ld2     r47 = [r101], -8
000008000000     0762		      nop.i   0 ;;
			   }
			   { .mii 
00A046518C00     0770		      ld2     r48 = [r101], 12								   // 000406
01002AC5EB00     0771		      sub     r44 = r47, r44 ;;								   // 000405
01002B058B00     0772		      sub     r44 = r44, r48 ;;								   // 000406
			   }
			   { .mib 
010803002C00     0780		      adds    r48 = 1, r48
018402B58340     0781		      cmp4.lt pr13, pr0 = r44, r43
00860001200D     0782	       (pr13) br.cond.dpnt.few L$182 ;;
			   }
			   { .mib 
0119FE5F1940     0790		      adds    r101 = -8, r101								   // 000407
0000B3000C00     0791		      sxt4    r48 = r48
004000000000     0792		      nop.b   0 ;;

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 51
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mmi 
00A086510C40     07A0		      ld4     r49 = [r101], 8 ;;
000008000000     07A1		      nop.m   0
0000B3100C40     07A2		      sxt4    r49 = r49 ;;
			   }
			   { .mmi 
010003062C00     07B0		      add     r48 = r49, r48 ;;
008003000C00     07B1		      ld1     r48 = [r48]
000008000000     07B2		      nop.i   0 ;;
			   }
			   { .mfb 
01CC7B074000     07C0		      cmp4.eq pr0, pr15 = 58, r48
000008000000     07C1		      nop.f   0
00860000A00F     07C2	       (pr15) br.cond.dpnt.few L$182
			   }
			   { .mii 
010800CD0C80     07D0		      adds    r50 = 104, r12								   // 000409
0000B2101E40     07D1		      sxt4    r121 = SPEC_BLOCK ;;		// r121 = r33
0000B3201E80     07D2		      sxt4    r122 = r50
			   }
			   { .mfb 
000008000000     07E0		      nop.m   0
000008000000     07E1		      nop.f   0
00A000001000     07E2		      br.call.sptk.many br0 = XPO$NODE_PARSE
			   }
			   { .mib 
000008000000     07F0		      nop.m   0
00A0308001C0     07F1		      tbit.z  pr7, pr6 = r8, 0								   // 000465
0095FFFB4006     07F2	       (pr6)  br.cond.dptk.few L$158
			   }
			   { .mfb 
010800800A00     0800		      mov     PRIMARY_CODE = r8			// r40 = r8				   // 000467
000008000000     0801		      nop.f   0
00800005C000     0802		      br.sptk.few L$128 ;;
			   }
	         0810	L$182:												   // 000409
			   { .mii 
010800CD0CC0     0810		      adds    r51 = 104, r12								   // 000412
0000B2101E40     0811		      sxt4    r121 = SPEC_BLOCK ;;		// r121 = r33
0000B3301E80     0812		      sxt4    r122 = r51
			   }
			   { .mfb 
000008000000     0820		      nop.m   0
000008000000     0821		      nop.f   0
00A000001000     0822		      br.call.sptk.many br0 = XPO$DVICE_PARSE
			   }
			   { .mib 
000008000000     0830		      nop.m   0
00A0308001C0     0831		      tbit.z  pr7, pr6 = r8, 0								   // 000465
0095FFFAC006     0832	       (pr6)  br.cond.dptk.few L$158
			   }
			   { .mfb 
010800800A00     0840		      mov     PRIMARY_CODE = r8			// r40 = r8				   // 000467
000008000000     0841		      nop.f   0
008000054000     0842		      br.sptk.few L$128 ;;
			   }

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 52
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

	         0850	L$174:												   // 000400
			   { .mfb 
01CC32EB6000     0850		      cmp4.eq pr0, pr6 = 91, r46
000008000000     0851		      nop.f   0
00860000A006     0852	       (pr6)  br.cond.dpnt.few L$186
			   }
			   { .mii 
010800CD0D00     0860		      adds    r52 = 104, r12								   // 000418
0120000BBE80     0861		      mov     r122 = 93
0000B2101E40     0862		      sxt4    r121 = SPEC_BLOCK ;;		// r121 = r33
			   }
			   { .mib 
000008000000     0870		      nop.m   0
0000B3401EC0     0871		      sxt4    r123 = r52
00A000001000     0872		      br.call.sptk.many br0 = XPO$DIRECT_PARSE
			   }
			   { .mib 
000008000000     0880		      nop.m   0
00A0308001C0     0881		      tbit.z  pr7, pr6 = r8, 0								   // 000465
0095FFFA2006     0882	       (pr6)  br.cond.dptk.few L$158
			   }
			   { .mfb 
010800800A00     0890		      mov     PRIMARY_CODE = r8			// r40 = r8				   // 000467
000008000000     0891		      nop.f   0
00800004A000     0892		      br.sptk.few L$128 ;;
			   }
	         08A0	L$186:												   // 000400
			   { .mfb 
01CC32E78000     08A0		      cmp4.eq pr0, pr6 = 60, r46
000008000000     08A1		      nop.f   0
00860000A006     08A2	       (pr6)  br.cond.dpnt.few L$190
			   }
			   { .mii 
010800CD0D80     08B0		      adds    r54 = 104, r12								   // 000423
01200007DE80     08B1		      mov     r122 = 62
0000B2101E40     08B2		      sxt4    r121 = SPEC_BLOCK ;;		// r121 = r33
			   }
			   { .mib 
000008000000     08C0		      nop.m   0
0000B3601EC0     08C1		      sxt4    r123 = r54
00A000001000     08C2		      br.call.sptk.many br0 = XPO$DIRECT_PARSE
			   }
			   { .mib 
000008000000     08D0		      nop.m   0
00A0308001C0     08D1		      tbit.z  pr7, pr6 = r8, 0								   // 000465
0095FFF98006     08D2	       (pr6)  br.cond.dptk.few L$158
			   }
			   { .mfb 
010800800A00     08E0		      mov     PRIMARY_CODE = r8			// r40 = r8				   // 000467
000008000000     08E1		      nop.f   0
008000040000     08E2		      br.sptk.few L$128 ;;
			   }
	         08F0	L$190:												   // 000400
			   { .mfb 
01CC32E5C000     08F0		      cmp4.eq pr0, pr6 = 46, r46
000008000000     08F1		      nop.f   0
00860000A006     08F2	       (pr6)  br.cond.dpnt.few L$194

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 53
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mii 
010800CD0DC0     0900		      adds    r55 = 104, r12								   // 000427
0000B2101E40     0901		      sxt4    r121 = SPEC_BLOCK ;;		// r121 = r33
0000B3701E80     0902		      sxt4    r122 = r55
			   }
			   { .mfb 
000008000000     0910		      nop.m   0
000008000000     0911		      nop.f   0
00A000001000     0912		      br.call.sptk.many br0 = XPO$NAME_PARSE
			   }
			   { .mib 
000008000000     0920		      nop.m   0
00A0308001C0     0921		      tbit.z  pr7, pr6 = r8, 0								   // 000465
0095FFF8E006     0922	       (pr6)  br.cond.dptk.few L$158
			   }
			   { .mfb 
010800800A00     0930		      mov     PRIMARY_CODE = r8			// r40 = r8				   // 000467
000008000000     0931		      nop.f   0
008000036000     0932		      br.sptk.few L$128 ;;
			   }
	         0940	L$194:												   // 000400
			   { .mfb 
01CC32E76000     0940		      cmp4.eq pr0, pr6 = 59, r46
000008000000     0941		      nop.f   0
00860000A006     0942	       (pr6)  br.cond.dpnt.few L$198
			   }
			   { .mii 
010800CD0E00     0950		      adds    r56 = 104, r12								   // 000436
0000B2101E40     0951		      sxt4    r121 = SPEC_BLOCK ;;		// r121 = r33
0000B3801E80     0952		      sxt4    r122 = r56
			   }
			   { .mfb 
000008000000     0960		      nop.m   0
000008000000     0961		      nop.f   0
00A000001000     0962		      br.call.sptk.many br0 = XPO$NAME_PARSE
			   }
			   { .mib 
000008000000     0970		      nop.m   0
00A0308001C0     0971		      tbit.z  pr7, pr6 = r8, 0								   // 000465
0095FFF84006     0972	       (pr6)  br.cond.dptk.few L$158
			   }
			   { .mfb 
010800800A00     0980		      mov     PRIMARY_CODE = r8			// r40 = r8				   // 000467
000008000000     0981		      nop.f   0
00800002C000     0982		      br.sptk.few L$128 ;;
			   }
	         0990	L$198:												   // 000400
			   { .mfb 
01C432E00000     0990		      cmp4.eq pr0, pr6 = r0, r46
000008000000     0991		      nop.f   0
008600010006     0992	       (pr6)  br.cond.dpnt.few L$200
			   }
			   { .mii 
010800CD0E40     09A0		      adds    r57 = 104, r12								   // 000454
0000B2101E40     09A1		      sxt4    r121 = SPEC_BLOCK ;;		// r121 = r33
0000B3901E80     09A2		      sxt4    r122 = r57

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 54
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mfb 
000008000000     09B0		      nop.m   0
000008000000     09B1		      nop.f   0
00A000001000     09B2		      br.call.sptk.many br0 = XPO$LAST_PARSE
			   }
			   { .mib 
000008000000     09C0		      nop.m   0
00A0308001C0     09C1		      tbit.z  pr7, pr6 = r8, 0								   // 000465
0095FFF7A006     09C2	       (pr6)  br.cond.dptk.few L$158
			   }
			   { .mfb 
010800800A00     09D0		      mov     PRIMARY_CODE = r8			// r40 = r8				   // 000467
000008000000     09D1		      nop.f   0
008000022000     09D2		      br.sptk.few L$128 ;;
			   }
	         09E0	L$168:												   // 000377
			   { .mlx 
010800CD0EC0     09E0		      adds    r59 = 104, r12								   // 000383
000000000000     09E1		      movl    r58 = 2138850 ;;
019450589D
			   }
			   { .mlx 
008C83B74000     09F0		      st4     [r59] = r58
000000000000     09F1		      movl    PRIMARY_CODE = 2138290		// r40 = 2138290
0194104C94
			   }
			   { .mfb 
000008000000     0A00		      nop.m   0
000008000000     0A01		      nop.f   0
00800001C000     0A02		      br.sptk.few L$128 ;;
			   }
	         0A10	L$200:												   // 000400
			   { .mlx 
010800CD0F40     0A10		      adds    r61 = 104, r12								   // 000457
000000000000     0A11		      movl    r60 = 2402306 ;;
019502409E
			   }
			   { .mlx 
008C83D78000     0A20		      st4     [r61] = r60
000000000000     0A21		      movl    PRIMARY_CODE = 2138850		// r40 = 2138850
0194505894
			   }
			   { .mfb 
000008000000     0A30		      nop.m   0
000008000000     0A31		      nop.f   0
008000016000     0A32		      br.sptk.few L$128 ;;
			   }
	         0A40	L$156:												   // 000241
			   { .mib 
000008000000     0A40		      nop.m   0
0000B2100840     0A41		      sxt4    r33 = SPEC_BLOCK			// r33 = r33				   // 000478
004000000000     0A42		      nop.b   0
			   }
			   { .mlx 
000008000000     0A50		      nop.m   0
000000000000     0A51		      movl    PRIMARY_CODE = 2129921 ;;		// r40 = 2129921			   // 000487

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 55
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

0190004054
			   }
			   { .mmi 
008082100F80     0A60		      ld4     r62 = [r33] ;;								   // 000479
000008000000     0A61		      nop.m   0
00A403E15000     0A62		      extr.u  r64 = r62, 5, 1								   // 000480
			   }
			   { .mii 
000008000000     0A70		      nop.m   0
00A403E10FC0     0A71		      extr.u  r63 = r62, 4, 1								   // 000479
00A403E19040     0A72		      extr.u  r65 = r62, 6, 1 ;;							   // 000481
			   }
			   { .mii 
01007407EFC0     0A80		      or      r63 = r63, r64								   // 000479
00A403E1D080     0A81		      extr.u  r66 = r62, 7, 1								   // 000482
00A403E210C0     0A82		      extr.u  r67 = r62, 8, 1 ;;							   // 000483
			   }
			   { .mii 
01007417EFC0     0A90		      or      r63 = r63, r65								   // 000480
00A403E25100     0A91		      extr.u  r68 = r62, 9, 1								   // 000484
00A403E29140     0A92		      extr.u  r69 = r62, 10, 1 ;;							   // 000485
			   }
			   { .mmi 
01007427EFC0     0AA0		      or      r63 = r63, r66 ;;								   // 000481
01007437EFC0     0AA1		      or      r63 = r63, r67								   // 000482
000008000000     0AA2		      nop.i   0 ;;
			   }
			   { .mmi 
01007447EFC0     0AB0		      or      r63 = r63, r68 ;;								   // 000483
01007457EFC0     0AB1		      or      r63 = r63, r69								   // 000484
000008000000     0AB2		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     0AC0		      nop.m   0
009E03E7EF80     0AC1		      dep     r62 = r63, r62, 3, 1							   // 000478
004000000000     0AC2		      nop.b   0 ;;
			   }
			   { .mfi 
008C8217C000     0AD0		      st4     [r33] = r62
000008000000     0AD1		      nop.f   0
000008000000     0AD2		      nop.i   0
			   }
	         0AE0	L$128:												   // 000495
			   { .mii 
010802401180     0AE0		      mov     r70 = FAILURE_ACTION		// r70 = r36
00A042800000     0AE1		      tbit.z  pr0, pr8 = PRIMARY_CODE, 0 ;;	// pr0, pr8 = r40, 0
010802301188     0AE2	       (pr8)  mov     r70 = SUCCESS_ACTION ;;		// r70 = r35
			   }
			   { .mfb 
01C404600280     0AF0		      cmp4.eq pr10, pr0 = r0, $XPO$ACTION	// pr10, pr0 = r0, r70
000008000000     0AF1		      nop.f   0
00860001000A     0AF2	       (pr10) br.cond.dpnt.few L$204
			   }
			   { .mii 
010800CD11C0     0B00		      adds    r71 = 104, r12
0000B4601180     0B01		      sxt4    r70 = $XPO$ACTION			// r70 = r70
012000008640     0B02		      mov     r25 = 4

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 56
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mii 
012000005E40     0B10		      mov     r121 = 2
0000B2001F00     0B11		      sxt4    r124 = FILE_SPEC			// r124 = r32
0000B2801E80     0B12		      sxt4    r122 = PRIMARY_CODE ;;		// r122 = r40
			   }
			   { .mii 
0080847011C0     0B20		      ld4     r71 = [r71]
010804611180     0B21		      adds    r70 = 8, r70
000008000000     0B22		      nop.i   0 ;;
			   }
			   { .mib 
00B0CC6F0040     0B30		      ld8     r1 = [r70], -8
0000B4701EC0     0B31		      sxt4    r123 = r71
004000000000     0B32		      nop.b   0 ;;
			   }
			   { .mmi 
0080C4601180     0B40		      ld8     r70 = [r70] ;;
000008000000     0B41		      nop.m   0
000E0018C180     0B42		      mov     br6 = r70
			   }
			   { .mfb 
000008000000     0B50		      nop.m   0
000008000000     0B51		      nop.f   0
00210000C000     0B52		      br.call.sptk.few br0 = br6
			   }
			   { .mii 
010800800A00     0B60		      mov     PRIMARY_CODE = r8			// r40 = r8
010807800040     0B61		      mov     r1 = r120
000008000000     0B62		      nop.i   0
			   }
	         0B70	L$204:
			   { .mib 
000008000000     0B70		      nop.m   0
00A0322001C0     0B71		      tbit.z  pr7, pr6 = FREE_TEMP, 0		// pr7, pr6 = r34, 0			   // 000501
008600006007     0B72	       (pr7)  br.cond.dpnt.few L$206 ;;
			   }
			   { .mib 
012000002640     0B80		      mov     r25 = 1									   // 000503
0000B2001E40     0B81		      sxt4    r121 = FILE_SPEC			// r121 = r32
00A000001000     0B82		      br.call.sptk.many br0 = XST$FREE_TEMP ;;
			   }
			   { .mfi 
010807800040     0B90		      mov     r1 = r120
000008000000     0B91		      nop.f   0
000008000000     0B92		      nop.i   0
			   }
	         0BA0	L$206:												   // 000501
			   { .mii 
000008000000     0BA0		      nop.m   0
0000B2800200     0BA1		      sxt4    r8 = PRIMARY_CODE			// r8 = r40				   // 000509
0001540EE000     0BA2		      mov.i   rspfs = r119 ;;
			   }
			   { .mib 
010800CC0300     0BB0		      adds    r12 = 96, r12
000E001EC000     0BB1		      mov     br0 = r118
000108001100     0BB2		      br.ret.sptk.many br0 ;;

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 57
V1.2-23                         XPO$PARSE_SPEC                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
				      .endp   XPO$PARSE_SPEC

Routine Size: 3008 bytes,    Routine Base: _XPO$CODE + 0000

				      .proc   XPO$SETUP_PARSE
				      .align 32
				      .global  XPO$SETUP_PARSE
			XPO$SETUP_PARSE:										   // 000517
			   { .mii 
0120001000C0     0BC0		      add     r3 = @ltoff(XPO$STATE), r1						   // 000569
0119F0000240     0BC1		      adds    r9 = -256, r0
012000006280     0BC2		      mov     r10 = 3 ;;								   // 000577
			   }
			   { .mmi 
0080C03000C0     0BD0		      ld8     r3 = XPO$STATE ;;			// r3 = [r3]				   // 000569
002C00306880     0BD1		      alloc   r34 = rspfs, 2, 1, 0, 0							   // 000517
0000B2000800     0BD2		      sxt4    r32 = FILE_SPEC			// r32 = r32				   // 000577
			   }
			   { .mib 
000008000000     0BE0		      nop.m   0
0000B2100840     0BE1		      sxt4    r33 = SPEC_BLOCK			// r33 = r33				   // 000595
004000000000     0BE2		      nop.b   0
			   }
			   { .mmi 
008080300200     0BF0		      ld4     r8 = [r3] ;;								   // 000569
010060910200     0BF1		      and     r8 = r8, r9
012000100240     0BF2		      add     r9 = @ltoff(XPO$SCAN_SPEC), r1 ;;						   // 000577
			   }
			   { .mmi 
008C80310000     0C00		      st4     [r3] = r8									   // 000569
0080C0900240     0C01		      ld8     r9 = XPO$SCAN_SPEC		// r9 = [r9]				   // 000577
000008000000     0C02		      nop.i   0 ;;
			   }
			   { .mii 
00AC40900080     0C10		      st2     [r9] = r0, 2
010802004800     0C11		      adds    r32 = 2, r32
000008000000     0C12		      nop.i   0 ;;
			   }
			   { .mmi 
00A002004200     0C20		      ld1     r8 = [r32], 2 ;;
00AC00910040     0C21		      st1     [r9] = r8, 1
012000100200     0C22		      add     r8 = @ltoff(XPO$NEXT_FIELD), r1 ;;					   // 000589
			   }
			   { .mmi 
00AC00914040     0C30		      st1     [r9] = r10, 1								   // 000577
00B08A0F8280     0C31		      ld4     r10 = [r32], -4
000008000000     0C32		      nop.i   0 ;;
			   }
			   { .mmi 
0080C0800200     0C40		      ld8     r8 = XPO$NEXT_FIELD		// r8 = [r8]				   // 000589
00AC80914100     0C41		      st4     [r9] = r10, 4								   // 000577
0120000FE280     0C42		      mov     r10 = 127									   // 000583
			   }
			   { .mib 
0080420000C0     0C50		      ld2     r3 = [r32]								   // 000577
012000100800     0C51		      add     r32 = @ltoff(XPO$FIELD_DELIM), r1						   // 000583

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 58
V1.2-23                         XPO$SETUP_PARSE                 19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

004000000000     0C52		      nop.b   0 ;;
			   }
			   { .mmi 
0080C2000800     0C60		      ld8     r32 = XPO$FIELD_DELIM		// r32 = [r32]
00AC40906080     0C61		      st2     [r9] = r3, 2								   // 000577
0120000040C0     0C62		      mov     r3 = 2 ;;									   // 000589
			   }
			   { .mmi 
008C40900000     0C70		      st2     [r9] = r0									   // 000577
008C82014000     0C71		      st4     XPO$FIELD_DELIM = r10		// [r32] = r10				   // 000583
01200001C280     0C72		      mov     r10 = 14									   // 000596
			   }
			   { .mib 
008C80806000     0C80		      st4     XPO$NEXT_FIELD = r3		// [r8] = r3				   // 000589
0120000020C0     0C81		      mov     r3 = 1									   // 000596
004000000000     0C82		      nop.b   0
			   }
			   { .mii 
008C42100000     0C90		      st2     [r33] = r0								   // 000595
01080210C800     0C91		      adds    r32 = 6, r33								   // 000596
010802108840     0C92		      adds    r33 = 4, r33 ;;
			   }
			   { .mmi 
01080207A800     0CA0		      adds    r32 = 61, r32
00AC42100080     0CA1		      st2     [r33] = r0, 2
000008000000     0CA2		      nop.i   0 ;;
			   }
			   { .mmi 
00AC02114040     0CB0		      st1     [r33] = r10, 1 ;;
00AC02106F40     0CB1		      st1     [r33] = r3, 61
000008000000     0CB2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8A101E00     0CC0		      st4     [r33] = r0, -8 ;;								   // 000605
00BC8A101E00     0CC1		      st4     [r33] = r0, -8								   // 000604
000008000000     0CC2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8A101E00     0CD0		      st4     [r33] = r0, -8 ;;								   // 000603
00AC821005C0     0CD1		      st4     [r33] = r0, 23								   // 000602
000008000000     0CD2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC0A107FC0     0CE0		      st1     [r33] = r3, -1 ;;								   // 000605
00BC0A115F80     0CE1		      st1     [r33] = r10, -2
000008000000     0CE2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC4A101EC0     0CF0		      st2     [r33] = r0, -5 ;;
00BC0A107FC0     0CF1		      st1     [r33] = r3, -1								   // 000604
000008000000     0CF2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC0A115F80     0D00		      st1     [r33] = r10, -2 ;;
00BC4A101EC0     0D01		      st2     [r33] = r0, -5
000008000000     0D02		      nop.i   0 ;;
			   }

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 59
V1.2-23                         XPO$SETUP_PARSE                 19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   { .mmi 
00BC0A107FC0     0D10		      st1     [r33] = r3, -1 ;;								   // 000603
00BC0A115F80     0D11		      st1     [r33] = r10, -2
000008000000     0D12		      nop.i   0 ;;
			   }
			   { .mmi 
00BC4A101EC0     0D20		      st2     [r33] = r0, -5 ;;
00BC0A107FC0     0D21		      st1     [r33] = r3, -1								   // 000602
000008000000     0D22		      nop.i   0 ;;
			   }
			   { .mmi 
00BC0A115E80     0D30		      st1     [r33] = r10, -6 ;;
00BC8A101D00     0D31		      st4     [r33] = r0, -12								   // 000601
000008000000     0D32		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8A101E00     0D40		      st4     [r33] = r0, -8 ;;								   // 000598
00AC82100600     0D41		      st4     [r33] = r0, 24								   // 000597
000008000000     0D42		      nop.i   0 ;;
			   }
			   { .mmi 
00BC4A101EC0     0D50		      st2     [r33] = r0, -5 ;;								   // 000602
00BC0A107FC0     0D51		      st1     [r33] = r3, -1								   // 000601
000008000000     0D52		      nop.i   0 ;;
			   }
			   { .mmi 
00BC0A115F80     0D60		      st1     [r33] = r10, -2 ;;
00BC4A101F80     0D61		      st2     [r33] = r0, -2
000008000000     0D62		      nop.i   0 ;;
			   }
			   { .mmi 
00BC4A101F80     0D70		      st2     [r33] = r0, -2 ;;								   // 000600
00BC4A101EC0     0D71		      st2     [r33] = r0, -5								   // 000599
000008000000     0D72		      nop.i   0 ;;
			   }
			   { .mmi 
00BC0A107FC0     0D80		      st1     [r33] = r3, -1 ;;								   // 000598
00BC0A115F80     0D81		      st1     [r33] = r10, -2
000008000000     0D82		      nop.i   0 ;;
			   }
			   { .mmi 
00BC4A101EC0     0D90		      st2     [r33] = r0, -5 ;;
00BC0A107FC0     0D91		      st1     [r33] = r3, -1								   // 000597
000008000000     0D92		      nop.i   0 ;;
			   }
			   { .mmi 
00BC0A115F80     0DA0		      st1     [r33] = r10, -2 ;;
00BC4A101F00     0DA1		      st2     [r33] = r0, -4
000008000000     0DA2		      nop.i   0 ;;
			   }
			   { .mib 
00AC82100F00     0DB0		      st4     [r33] = r0, 60								   // 000596
000154044000     0DB1		      mov.i   rspfs = r34								   // 000611
004000000000     0DB2		      nop.b   0 ;;
			   }
			   { .mfb 
000008000000     0DC0		      nop.m   0

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 60
V1.2-23                         XPO$SETUP_PARSE                 19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

000008000000     0DC1		      nop.f   0
000108001100     0DC2		      br.ret.sptk.many br0 ;;
			   }
				      .endp   XPO$SETUP_PARSE

Routine Size: 528 bytes,    Routine Base: _XPO$CODE + 0BC0

				      .proc   XPO$NODE_PARSE
				      .align 32
			XPO$NODE_PARSE:											   // 000617
			   { .mii 
002C00D28AC0     0DD0		      alloc   r43 = rspfs, 2, 11, 7, 0
012000100A00     0DD1		      add     r40 = @ltoff(XPO$STATE), r1						   // 000669
000188000A80     0DD2		      mov     r42 = br0 ;;								   // 000617
			   }
			   { .mmi 
010800100B00     0DE0		      mov     r44 = r1
0080C2800A00     0DE1		      ld8     r40 = XPO$STATE			// r40 = [r40]				   // 000669
000008000000     0DE2		      nop.i   0 ;;
			   }
			   { .mmi 
0080828000C0     0DF0		      ld4     r3 = [r40] ;;
000008000000     0DF1		      nop.m   0
00A0303001C0     0DF2		      tbit.z  pr7, pr6 = r3, 0
			   }
			   { .mfb 
000008000000     0E00		      nop.m   0
000008000000     0E01		      nop.f   0
00860000A007     0E02	       (pr7)  br.cond.dpnt.few L$115
			   }
			   { .mib 
000008000000     0E10		      nop.m   0
0000B2100840     0E11		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 000671
004000000000     0E12		      nop.b   0
			   }
			   { .mlx 
000008000000     0E20		      nop.m   0
000000000000     0E21		      movl    r8 = 2138842 ;;
0194505684
			   }
			   { .mlx 
008C82110000     0E30		      st4     [r33] = r8
000000000000     0E31		      movl    r8 = 2138234
0194005E84
			   }
			   { .mfb 
000008000000     0E40		      nop.m   0
000008000000     0E41		      nop.f   0
00800003A000     0E42		      br.sptk.few L$116 ;;
			   }
	         0E50	L$115:												   // 000669
			   { .mmi 
012000100A40     0E50		      add     r41 = @ltoff(XPO$SCAN_SPEC), r1 ;;					   // 000673
0080C2900A40     0E51		      ld8     r41 = XPO$SCAN_SPEC		// r41 = [r41]
000008000000     0E52		      nop.i   0 ;;
			   }
			   { .mmi 

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 61
V1.2-23                         XPO$NODE_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

0080429000C0     0E60		      ld2     r3 = [r41] ;;
018C0037E200     0E61		      cmp4.lt pr8, pr0 = 63, r3								   // 000674
01C438006180     0E62		      cmp4.eq pr6, pr7 = r3, r0 ;;							   // 000673
			   }
			   { .mbb 
01C238000188     0E70	       (pr8)  cmp.eq.or.andcm pr6, pr7 = r0, r0
008600002006     0E71	       (pr6)  br.cond.dpnt.few L$117
00860000A007     0E72	       (pr7)  br.cond.dpnt.few L$118
			   }
	         0E80	L$117:
			   { .mib 
000008000000     0E80		      nop.m   0
0000B2100840     0E81		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 000676
004000000000     0E82		      nop.b   0
			   }
			   { .mlx 
000008000000     0E90		      nop.m   0
000000000000     0E91		      movl    r8 = 2138210 ;;
0194005884
			   }
			   { .mlx 
008C82110000     0EA0		      st4     [r33] = r8
000000000000     0EA1		      movl    r8 = 2138234
0194005E84
			   }
			   { .mfb 
000008000000     0EB0		      nop.m   0
000008000000     0EB1		      nop.f   0
00800002C000     0EB2		      br.sptk.few L$116 ;;
			   }
	         0EC0	L$118:												   // 000678
			   { .mii 
0120001000C0     0EC0		      add     r3 = @ltoff($STR$PATTERN), r1
01200000E640     0EC1		      mov     r25 = 7
0000B0000CC0     0EC2		      sxt4    r51 = r0
			   }
			   { .mii 
012400002B40     0ED0		      addl    r45 = 16385, r0
0000B0000C80     0ED1		      sxt4    r50 = r0
0000B0000C40     0ED2		      sxt4    r49 = r0 ;;
			   }
			   { .mii 
0080C03000C0     0EE0		      ld8     r3 = $STR$PATTERN			// r3 = [r3]
0000B0000C00     0EE1		      sxt4    r48 = r0
0000B2900B80     0EE2		      sxt4    r46 = r41 ;;
			   }
			   { .mib 
000008000000     0EF0		      nop.m   0
0000B0300BC0     0EF1		      sxt4    r47 = r3
00A000001000     0EF2		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mii 
0080429000C0     0F00		      ld2     r3 = [r41]								   // 000680
00A0308001C0     0F01		      tbit.z  pr7, pr6 = r8, 0								   // 000678
010802C00040     0F02		      mov     r1 = r44
			   }
			   { .mfb 

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 62
V1.2-23                         XPO$NODE_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

000008000000     0F10		      nop.m   0
000008000000     0F11		      nop.f   0
008600012007     0F12	       (pr7)  br.cond.dpnt.few L$120 ;;
			   }
			   { .mfb 
01CC00302240     0F20		      cmp4.eq pr9, pr0 = 1, r3								   // 000680
000008000000     0F21		      nop.f   0
00860000A009     0F22	       (pr9)  br.cond.dpnt.few L$124
			   }
			   { .mib 
000008000000     0F30		      nop.m   0
0000B2100840     0F31		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 000682
004000000000     0F32		      nop.b   0
			   }
			   { .mlx 
000008000000     0F40		      nop.m   0
000000000000     0F41		      movl    r8 = 2138674 ;;
0194404C84
			   }
			   { .mlx 
008C82110000     0F50		      st4     [r33] = r8
000000000000     0F51		      movl    r8 = 2138234
0194005E84
			   }
			   { .mfb 
000008000000     0F60		      nop.m   0
000008000000     0F61		      nop.f   0
008000016000     0F62		      br.sptk.few L$116 ;;
			   }
	         0F70	L$124:												   // 000680
			   { .mib 
000008000000     0F70		      nop.m   0
0000B2000240     0F71		      sxt4    r9 = SPEC_BLOCK			// r9 = r32				   // 000684
004000000000     0F72		      nop.b   0 ;;
			   }
			   { .mmi 
008080900280     0F80		      ld4     r10 = [r9] ;;
010170A20280     0F81		      or      r10 = 16, r10
000008000000     0F82		      nop.i   0 ;;
			   }
			   { .mfi 
008C80914000     0F90		      st4     [r9] = r10
000008000000     0F91		      nop.f   0
000008000000     0F92		      nop.i   0
			   }
	         0FA0	L$120:												   // 000678
			   { .mii 
0080429002C0     0FA0		      ld2     r11 = [r41]								   // 000691
0000B2000800     0FA1		      sxt4    r32 = SPEC_BLOCK ;;		// r32 = r32				   // 000693
010800B042C0     0FA2		      adds    r11 = 2, r11 ;;								   // 000691
			   }
			   { .mii 
000008000000     0FB0		      nop.m   0
00A478B002C0     0FB1		      extr.u  r11 = r11, 0, 16 ;;
00A478B002C0     0FB2		      extr.u  r11 = r11, 0, 16 ;;
			   }
			   { .mii 

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 63
V1.2-23                         XPO$NODE_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

00AC42916100     0FC0		      st2     [r41] = r11, 4								   // 000690
010802008800     0FC1		      adds    r32 = 4, r32								   // 000693
000008000000     0FC2		      nop.i   0 ;;
			   }
			   { .mmi 
00AC42016100     0FD0		      st2     [r32] = r11, 4
008082900A40     0FD1		      ld4     r41 = [r41]								   // 000694
000008000000     0FD2		      nop.i   0 ;;
			   }
			   { .mmi 
008C82052000     0FE0		      st4     [r32] = r41
0080828004C0     0FE1		      ld4     r19 = [r40]								   // 000700
000008000000     0FE2		      nop.i   0 ;;
			   }
			   { .mmi 
010171302200     0FF0		      or      r8 = 1, r19 ;;
008C82810000     0FF1		      st4     [r40] = r8
000008000000     0FF2		      nop.i   0
			   }
			   { .mlx 
000008000000     1000		      nop.m   0
000000000000     1001		      movl    r8 = 2129921								   // 000706
0190004044
			   }
	         1010	L$116:
			   { .mii 
000008000000     1010		      nop.m   0
000154056000     1011		      mov.i   rspfs = r43
000E00154000     1012		      mov     br0 = r42 ;;
			   }
			   { .mfb 
000008000000     1020		      nop.m   0
000008000000     1021		      nop.f   0
000108001100     1022		      br.ret.sptk.many br0 ;;
			   }
				      .endp   XPO$NODE_PARSE

Routine Size: 608 bytes,    Routine Base: _XPO$CODE + 0DD0

				      .proc   XPO$DVICE_PARSE
				      .align 32
				      .global  XPO$DVICE_PARSE
			XPO$DVICE_PARSE:										   // 000715
			   { .mii 
002C00D28AC0     1030		      alloc   r43 = rspfs, 2, 11, 7, 0
012000100A00     1031		      add     r40 = @ltoff(XPO$STATE), r1						   // 000767
000188000A80     1032		      mov     r42 = br0 ;;								   // 000715
			   }
			   { .mmi 
010800100B00     1040		      mov     r44 = r1
0080C2800A00     1041		      ld8     r40 = XPO$STATE			// r40 = [r40]				   // 000767
000008000000     1042		      nop.i   0 ;;
			   }
			   { .mmi 
0080828000C0     1050		      ld4     r3 = [r40] ;;
000008000000     1051		      nop.m   0
00A4003040C0     1052		      extr.u  r3 = r3, 1, 1 ;;

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 64
V1.2-23                         XPO$DVICE_PARSE                 19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mib 
000008000000     1060		      nop.m   0
00A0303001C0     1061		      tbit.z  pr7, pr6 = r3, 0
00860000A007     1062	       (pr7)  br.cond.dpnt.few L$102
			   }
			   { .mib 
000008000000     1070		      nop.m   0
0000B2100840     1071		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 000769
004000000000     1072		      nop.b   0
			   }
			   { .mlx 
000008000000     1080		      nop.m   0
000000000000     1081		      movl    r8 = 2138842 ;;
0194505684
			   }
			   { .mlx 
008C82110000     1090		      st4     [r33] = r8
000000000000     1091		      movl    r8 = 2138162
0194004C84
			   }
			   { .mfb 
000008000000     10A0		      nop.m   0
000008000000     10A1		      nop.f   0
00800003A000     10A2		      br.sptk.few L$103 ;;
			   }
	         10B0	L$102:												   // 000767
			   { .mmi 
012000100A40     10B0		      add     r41 = @ltoff(XPO$SCAN_SPEC), r1 ;;					   // 000771
0080C2900A40     10B1		      ld8     r41 = XPO$SCAN_SPEC		// r41 = [r41]
000008000000     10B2		      nop.i   0 ;;
			   }
			   { .mmi 
0080429000C0     10C0		      ld2     r3 = [r41] ;;
018C0037E200     10C1		      cmp4.lt pr8, pr0 = 63, r3								   // 000772
01C438006180     10C2		      cmp4.eq pr6, pr7 = r3, r0 ;;							   // 000771
			   }
			   { .mbb 
01C238000188     10D0	       (pr8)  cmp.eq.or.andcm pr6, pr7 = r0, r0
008600002006     10D1	       (pr6)  br.cond.dpnt.few L$104
00860000A007     10D2	       (pr7)  br.cond.dpnt.few L$105
			   }
	         10E0	L$104:
			   { .mib 
000008000000     10E0		      nop.m   0
0000B2100840     10E1		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 000774
004000000000     10E2		      nop.b   0
			   }
			   { .mlx 
000008000000     10F0		      nop.m   0
000000000000     10F1		      movl    r8 = 2138210 ;;
0194005884
			   }
			   { .mlx 
008C82110000     1100		      st4     [r33] = r8
000000000000     1101		      movl    r8 = 2138162
0194004C84

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 65
V1.2-23                         XPO$DVICE_PARSE                 19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mfb 
000008000000     1110		      nop.m   0
000008000000     1111		      nop.f   0
00800002C000     1112		      br.sptk.few L$103 ;;
			   }
	         1120	L$105:												   // 000776
			   { .mii 
0120001000C0     1120		      add     r3 = @ltoff($STR$PATTERN), r1
01200000E640     1121		      mov     r25 = 7
0000B0000CC0     1122		      sxt4    r51 = r0
			   }
			   { .mii 
012400002B40     1130		      addl    r45 = 16385, r0
0000B0000C80     1131		      sxt4    r50 = r0
0000B0000C40     1132		      sxt4    r49 = r0 ;;
			   }
			   { .mii 
0080C03000C0     1140		      ld8     r3 = $STR$PATTERN			// r3 = [r3]
0000B0000C00     1141		      sxt4    r48 = r0
0000B2900B80     1142		      sxt4    r46 = r41 ;;
			   }
			   { .mib 
000008000000     1150		      nop.m   0
0000B0300BC0     1151		      sxt4    r47 = r3
00A000001000     1152		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mii 
0080429000C0     1160		      ld2     r3 = [r41]								   // 000778
00A0308001C0     1161		      tbit.z  pr7, pr6 = r8, 0								   // 000776
010802C00040     1162		      mov     r1 = r44
			   }
			   { .mfb 
000008000000     1170		      nop.m   0
000008000000     1171		      nop.f   0
008600012007     1172	       (pr7)  br.cond.dpnt.few L$107 ;;
			   }
			   { .mfb 
01CC00302240     1180		      cmp4.eq pr9, pr0 = 1, r3								   // 000778
000008000000     1181		      nop.f   0
00860000A009     1182	       (pr9)  br.cond.dpnt.few L$111
			   }
			   { .mib 
000008000000     1190		      nop.m   0
0000B2100840     1191		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 000780
004000000000     1192		      nop.b   0
			   }
			   { .mlx 
000008000000     11A0		      nop.m   0
000000000000     11A1		      movl    r8 = 2138674 ;;
0194404C84
			   }
			   { .mlx 
008C82110000     11B0		      st4     [r33] = r8
000000000000     11B1		      movl    r8 = 2138162
0194004C84
			   }

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 66
V1.2-23                         XPO$DVICE_PARSE                 19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   { .mfb 
000008000000     11C0		      nop.m   0
000008000000     11C1		      nop.f   0
008000016000     11C2		      br.sptk.few L$103 ;;
			   }
	         11D0	L$111:												   // 000778
			   { .mib 
000008000000     11D0		      nop.m   0
0000B2000240     11D1		      sxt4    r9 = SPEC_BLOCK			// r9 = r32				   // 000782
004000000000     11D2		      nop.b   0 ;;
			   }
			   { .mmi 
008080900280     11E0		      ld4     r10 = [r9] ;;
010170A40280     11E1		      or      r10 = 32, r10
000008000000     11E2		      nop.i   0 ;;
			   }
			   { .mfi 
008C80914000     11F0		      st4     [r9] = r10
000008000000     11F1		      nop.f   0
000008000000     11F2		      nop.i   0
			   }
	         1200	L$107:												   // 000776
			   { .mii 
0080429002C0     1200		      ld2     r11 = [r41]								   // 000789
0000B2000800     1201		      sxt4    r32 = SPEC_BLOCK ;;		// r32 = r32				   // 000791
010800B022C0     1202		      adds    r11 = 1, r11 ;;								   // 000789
			   }
			   { .mii 
000008000000     1210		      nop.m   0
00A478B002C0     1211		      extr.u  r11 = r11, 0, 16 ;;
00A478B002C0     1212		      extr.u  r11 = r11, 0, 16 ;;
			   }
			   { .mii 
00AC42916100     1220		      st2     [r41] = r11, 4								   // 000788
010802018800     1221		      adds    r32 = 12, r32								   // 000791
000008000000     1222		      nop.i   0 ;;
			   }
			   { .mmi 
00AC42016100     1230		      st2     [r32] = r11, 4
008082900A40     1231		      ld4     r41 = [r41]								   // 000792
000008000000     1232		      nop.i   0 ;;
			   }
			   { .mmi 
008C82052000     1240		      st4     [r32] = r41
0080828004C0     1241		      ld4     r19 = [r40]								   // 000798
000008000000     1242		      nop.i   0 ;;
			   }
			   { .mmi 
010171306200     1250		      or      r8 = 3, r19 ;;
008C82810000     1251		      st4     [r40] = r8
000008000000     1252		      nop.i   0
			   }
			   { .mlx 
000008000000     1260		      nop.m   0
000000000000     1261		      movl    r8 = 2129921								   // 000805
0190004044
			   }

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 67
V1.2-23                         XPO$DVICE_PARSE                 19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

	         1270	L$103:
			   { .mii 
000008000000     1270		      nop.m   0
000154056000     1271		      mov.i   rspfs = r43
000E00154000     1272		      mov     br0 = r42 ;;
			   }
			   { .mfb 
000008000000     1280		      nop.m   0
000008000000     1281		      nop.f   0
000108001100     1282		      br.ret.sptk.many br0 ;;
			   }
				      .endp   XPO$DVICE_PARSE

Routine Size: 608 bytes,    Routine Base: _XPO$CODE + 1030

				      .proc   XPO$DIRECT_PARSE
				      .align 32
				      .global  XPO$DIRECT_PARSE
			XPO$DIRECT_PARSE:										   // 000814
			   { .mii 
002C0102EB80     1290		      alloc   r46 = rspfs, 3, 13, 7, 0
000188000B40     1291		      mov     r45 = br0
0119F8C80300     1292		      adds    r12 = -64, r12
			   }
			   { .mmi 
010800100BC0     12A0		      mov     r47 = r1
012000004640     12A1		      mov     r25 = 2									   // 000882
0000B2200C40     12A2		      sxt4    r49 = SECONDARY_CODE ;;		// r49 = r34
			   }
			   { .mib 
000008000000     12B0		      nop.m   0
0000B2000C00     12B1		      sxt4    r48 = SPEC_BLOCK			// r48 = r32
00A000001000     12B2		      br.call.sptk.many br0 = XPO$LAST_PARSE
			   }
			   { .mib 
010802F00040     12C0		      mov     r1 = r47
00A0308001C0     12C1		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
008600004006     12C2	       (pr6)  br.cond.dpnt.few L$63
			   }
			   { .mib 
000008000000     12D0		      nop.m   0
0000B0800200     12D1		      sxt4    r8 = r8									   // 000884
0080000C8000     12D2		      br.sptk.few L$65 ;;
			   }
	         12E0	L$63:												   // 000882
			   { .mmi 
012000100A00     12E0		      add     r40 = @ltoff(XPO$STATE), r1 ;;						   // 000890
0080C2800A00     12E1		      ld8     r40 = XPO$STATE			// r40 = [r40]
000008000000     12E2		      nop.i   0 ;;
			   }
			   { .mmi 
0080828000C0     12F0		      ld4     r3 = [r40] ;;
000008000000     12F1		      nop.m   0
00A4003080C0     12F2		      extr.u  r3 = r3, 2, 1 ;;
			   }
			   { .mib 
000008000000     1300		      nop.m   0

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 68
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

00A040300240     1301		      tbit.z  pr9, pr8 = r3, 0
008600008009     1302	       (pr9)  br.cond.dpnt.few L$67
			   }
			   { .mib 
000008000000     1310		      nop.m   0
0000B2200880     1311		      sxt4    r34 = SECONDARY_CODE		// r34 = r34				   // 000892
004000000000     1312		      nop.b   0
			   }
			   { .mlx 
000008000000     1320		      nop.m   0
000000000000     1321		      movl    r8 = 2138842
0194505684
			   }
			   { .mfb 
000008000000     1330		      nop.m   0
000008000000     1331		      nop.f   0
0080000BA000     1332		      br.sptk.few L$208 ;;
			   }
	         1340	L$67:												   // 000902
			   { .mii 
012000100A80     1340		      add     r42 = @ltoff(XPO$SCAN_SPEC), r1
012000100A40     1341		      add     r41 = @ltoff($STR$PATTERN), r1
010800C80240     1342		      adds    r9 = 64, r12
			   }
			   { .mii 
01200000E640     1350		      mov     r25 = 7
0000B0000D80     1351		      sxt4    r54 = r0
0000B0000D40     1352		      sxt4    r53 = r0 ;;
			   }
			   { .mii 
0080C2A00A80     1360		      ld8     r42 = XPO$SCAN_SPEC		// r42 = [r42]
012410006C00     1361		      addl    r48 = 16643, r0
0000B0900D00     1362		      sxt4    r52 = r9 ;;
			   }
			   { .mii 
0080C2900A40     1370		      ld8     r41 = $STR$PATTERN		// r41 = [r41]
0000B2A00CC0     1371		      sxt4    r51 = r42
0000B2A00C40     1372		      sxt4    r49 = r42 ;;
			   }
			   { .mib 
000008000000     1380		      nop.m   0
0000B2900C80     1381		      sxt4    r50 = r41
00A000001000     1382		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mii 
010802F00040     1390		      mov     r1 = r47
00A0308001C0     1391		      tbit.z  pr7, pr6 = r8, 0 ;;
012000100AC0     1392		      add     r43 = @ltoff(XPO$FIELD_DELIM), r1 ;;					   // 000904
			   }
			   { .mfb 
0080C2B00AC0     13A0		      ld8     r43 = XPO$FIELD_DELIM		// r43 = [r43]
000008000000     13A1		      nop.f   0
008600006007     13A2	       (pr7)  br.cond.dpnt.few L$69								   // 000902
			   }
			   { .mmi 
010800C800C0     13B0		      adds    r3 = 64, r12 ;;
0080803000C0     13B1		      ld4     r3 = [r3]

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 69
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

000008000000     13B2		      nop.i   0 ;;
			   }
			   { .mfi 
008C82B06000     13C0		      st4     [r43] = r3
000008000000     13C1		      nop.f   0
000008000000     13C2		      nop.i   0
			   }
	         13D0	L$69:
			   { .mmi 
008042A002C0     13D0		      ld2     r11 = [r42]								   // 000907
008082B00280     13D1		      ld4     r10 = [r43]								   // 000904
000008000000     13D2		      nop.i   0 ;;
			   }
			   { .mib 
010800B022C0     13E0		      adds    r11 = 1, r11								   // 000907
01C442114000     13E1		      cmp4.eq pr0, pr8 = r10, RIGHT_DELIMITER	// pr0, pr8 = r10, r33			   // 000904
0086000A0008     13E2	       (pr8)  br.cond.dpnt.few L$70
			   }
			   { .mii 
010802910440     13F0		      adds    r17 = 8, r41								   // 000917
01200000E640     13F1		      mov     r25 = 7
0000B0000D80     13F2		      sxt4    r54 = r0
			   }
			   { .mii 
012400002C00     1400		      addl    r48 = 16385, r0
0000B0000D40     1401		      sxt4    r53 = r0
0000B0000D00     1402		      sxt4    r52 = r0 ;;
			   }
			   { .mii 
008C42A16000     1410		      st2     [r42] = r11								   // 000906
0000B0000CC0     1411		      sxt4    r51 = r0									   // 000917
0000B1100C80     1412		      sxt4    r50 = r17
			   }
			   { .mib 
000008000000     1420		      nop.m   0
0000B2A00C40     1421		      sxt4    r49 = r42
00A000001000     1422		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mii 
008042A000C0     1430		      ld2     r3 = [r42]								   // 000919
00A0308001C0     1431		      tbit.z  pr7, pr6 = r8, 0								   // 000917
010802F00040     1432		      mov     r1 = r47
			   }
			   { .mfb 
000008000000     1440		      nop.m   0
000008000000     1441		      nop.f   0
008600010007     1442	       (pr7)  br.cond.dpnt.few L$73 ;;								   // 000915
			   }
			   { .mfb 
01CC40306000     1450		      cmp4.eq pr0, pr8 = 3, r3								   // 000919
000008000000     1451		      nop.f   0
008600008008     1452	       (pr8)  br.cond.dpnt.few L$76
			   }
			   { .mib 
000008000000     1460		      nop.m   0
0000B2000240     1461		      sxt4    r9 = SPEC_BLOCK			// r9 = r32				   // 000921
004000000000     1462		      nop.b   0 ;;

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 70
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mmi 
008080900280     1470		      ld4     r10 = [r9] ;;
010170A80280     1471		      or      r10 = 64, r10
000008000000     1472		      nop.i   0 ;;
			   }
			   { .mfb 
008C80914000     1480		      st4     [r9] = r10
000008000000     1481		      nop.f   0
008000008000     1482		      br.sptk.few L$73 ;;								   // 000919
			   }
	         1490	L$76:
			   { .mib 
000008000000     1490		      nop.m   0
0000B2200880     1491		      sxt4    r34 = SECONDARY_CODE		// r34 = r34				   // 000923
004000000000     1492		      nop.b   0
			   }
			   { .mlx 
000008000000     14A0		      nop.m   0
000000000000     14A1		      movl    r8 = 2138674
0194404C84
			   }
			   { .mfb 
000008000000     14B0		      nop.m   0
000008000000     14B1		      nop.f   0
00800008A000     14B2		      br.sptk.few L$208 ;;
			   }
	         14C0	L$73:												   // 000915
			   { .mii 
010802A08A80     14C0		      adds    r42 = 4, r42								   // 000929
010802920440     14C1		      adds    r17 = 16, r41								   // 000933
01200000E640     14C2		      mov     r25 = 7
			   }
			   { .mii 
012400002C00     14D0		      addl    r48 = 16385, r0
0000B0000D80     14D1		      sxt4    r54 = r0
0000B0000D40     14D2		      sxt4    r53 = r0 ;;
			   }
			   { .mii 
00B08AAF82C0     14E0		      ld4     r11 = [r42], -4								   // 000929
0000B0000D00     14E1		      sxt4    r52 = r0									   // 000933
0000B0000CC0     14E2		      sxt4    r51 = r0 ;;
			   }
			   { .mii 
000008000000     14F0		      nop.m   0
0000B0B002C0     14F1		      sxt4    r11 = r11									   // 000929
0000B1100C80     14F2		      sxt4    r50 = r17 ;;								   // 000933
			   }
			   { .mii 
000008000000     1500		      nop.m   0
0000B2A00C40     1501		      sxt4    r49 = r42
010800B022C0     1502		      adds    r11 = 1, r11 ;;								   // 000929
			   }
			   { .mfb 
008000B00B00     1510		      ld1     NEXT_CHARACTER = [r11]		// r44 = [r11]
000008000000     1511		      nop.f   0
00A000001000     1512		      br.call.sptk.many br0 = XST$SCAN							   // 000933

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 71
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mib 
010802F00040     1520		      mov     r1 = r47
00A0308001C0     1521		      tbit.z  pr7, pr6 = r8, 0
008600062007     1522	       (pr7)  br.cond.dpnt.few L$79								   // 000931
			   }
			   { .mii 
010802A08A80     1530		      adds    r42 = 4, r42								   // 000941
010800C60440     1531		      adds    r17 = 48, r12								   // 000939
000008000000     1532		      nop.i   0
			   }
			   { .mlx 
010800C604C0     1540		      adds    r19 = 48, r12								   // 000940
80000000000C     1541		      movl    r11 = 51249152 ;;								   // 000939
0180070005
			   }
			   { .mii 
00A082A080C0     1550		      ld4     r3 = [r42], 4								   // 000941
012000002480     1551		      mov     r18 = 1									   // 000940
010800C68500     1552		      adds    r20 = 52, r12								   // 000941
			   }
			   { .mmi 
010800C70540     1560		      adds    r21 = 56, r12								   // 000942
010800C505C0     1561		      adds    r23 = 40, r12								   // 000949
010800C60B00     1562		      adds    r44 = 48, r12 ;;
			   }
			   { .mii 
00B08AAF0280     1570		      ld4     r10 = [r42], -8								   // 000942
010802930240     1571		      adds    r9 = 24, r41								   // 000949
01200000E640     1572		      mov     r25 = 7
			   }
			   { .mmi 
008C81116000     1580		      st4     [r17] = r11								   // 000939
008C41324000     1581		      st2     [r19] = r18								   // 000940
0000B0000D80     1582		      sxt4    r54 = r0 ;;								   // 000949
			   }
			   { .mii 
008C81406000     1590		      st4     [r20] = r3								   // 000941
0000B0000D40     1591		      sxt4    r53 = r0									   // 000949
0000B1700D00     1592		      sxt4    r52 = r23
			   }
			   { .mii 
012410004C00     15A0		      addl    r48 = 16642, r0
0000B2C00CC0     15A1		      sxt4    r51 = r44
0000B0900C80     15A2		      sxt4    r50 = r9
			   }
			   { .mib 
008C81514000     15B0		      st4     [r21] = r10								   // 000942
0000B2C00C40     15B1		      sxt4    r49 = r44									   // 000949
00A000001000     15B2		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mib 
010802F00040     15C0		      mov     r1 = r47
00A0308001C0     15C1		      tbit.z  pr7, pr6 = r8, 0
008600006007     15C2	       (pr7)  br.cond.dpnt.few L$81
			   }
			   { .mmi 

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 72
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

010800C500C0     15D0		      adds    r3 = 40, r12 ;;
0080803000C0     15D1		      ld4     r3 = [r3]
000008000000     15D2		      nop.i   0 ;;
			   }
			   { .mfi 
008C82B06000     15E0		      st4     [r43] = r3
000008000000     15E1		      nop.f   0
000008000000     15E2		      nop.i   0
			   }
	         15F0	L$81:
			   { .mmi 
008082B00280     15F0		      ld4     r10 = [r43] ;;								   // 000951
01CC00A58240     15F1		      cmp4.eq pr9, pr0 = 44, r10
000008000000     15F2		      nop.i   0
			   }
			   { .bbb 
008600002009     1600	       (pr9)  br.cond.dpnt.few L$85
004000000000     1601		      nop.b   0
00800005C000     1602		      br.sptk.few L$70 ;;
			   }
	         1610	L$85:
			   { .mmi 
010800C602C0     1610		      adds    r11 = 48, r12 ;;								   // 000955
008040B002C0     1611		      ld2     r11 = [r11]
000008000000     1612		      nop.i   0 ;;
			   }
			   { .mfb 
01C400B002C0     1620		      cmp4.eq pr11, pr0 = r0, r11
000008000000     1621		      nop.f   0
00860001200B     1622	       (pr11) br.cond.dpnt.few L$87
			   }
			   { .mii 
010800C40480     1630		      adds    r18 = 32, r12								   // 000974
01200000E640     1631		      mov     r25 = 7
0000B0000D80     1632		      sxt4    r54 = r0
			   }
			   { .mii 
012400004C00     1640		      addl    r48 = 16386, r0
0000B0000D40     1641		      sxt4    r53 = r0
0000B0000D00     1642		      sxt4    r52 = r0 ;;
			   }
			   { .mii 
000008000000     1650		      nop.m   0
0000B0000CC0     1651		      sxt4    r51 = r0
0000B1200C80     1652		      sxt4    r50 = r18
			   }
			   { .mib 
000008000000     1660		      nop.m   0
0000B2C00C40     1661		      sxt4    r49 = r44
00A000001000     1662		      br.call.sptk.many br0 = XST$BINARY
			   }
			   { .mib 
010802F00040     1670		      mov     r1 = r47
00A0308001C0     1671		      tbit.z  pr7, pr6 = r8, 0
00860004E007     1672	       (pr7)  br.cond.dpnt.few L$70
			   }
			   { .mib 

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 73
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

010800C40240     1680		      adds    r9 = 32, r12
0000B20000C0     1681		      sxt4    r3 = SPEC_BLOCK			// r3 = r32
004000000000     1682		      nop.b   0 ;;
			   }
			   { .mii 
008080900240     1690		      ld4     r9 = [r9]
0108003380C0     1691		      adds    r3 = 28, r3
000008000000     1692		      nop.i   0 ;;
			   }
			   { .mfi 
008C40312000     16A0		      st2     [r3] = r9
000008000000     16A1		      nop.f   0
000008000000     16A2		      nop.i   0
			   }
	         16B0	L$87:												   // 000955
			   { .mii 
010800C602C0     16B0		      adds    r11 = 48, r12								   // 000979
010800C60440     16B1		      adds    r17 = 48, r12
010800C304C0     16B2		      adds    r19 = 24, r12 ;;								   // 000985
			   }
			   { .mii 
010800C60B00     16C0		      adds    r44 = 48, r12
010802940A40     16C1		      adds    r41 = 32, r41								   // 000955
01200000E640     16C2		      mov     r25 = 7									   // 000985
			   }
			   { .mii 
008040B002C0     16D0		      ld2     r11 = [r11]								   // 000979
0000B0000D80     16D1		      sxt4    r54 = r0									   // 000985
0000B0000D40     16D2		      sxt4    r53 = r0 ;;
			   }
			   { .mii 
010800B022C0     16E0		      adds    r11 = 1, r11								   // 000979
0000B1300D00     16E1		      sxt4    r52 = r19									   // 000985
0000B2C00CC0     16E2		      sxt4    r51 = r44
			   }
			   { .mii 
012410004C00     16F0		      addl    r48 = 16642, r0
0000B2900C80     16F1		      sxt4    r50 = r41
0000B2C00C40     16F2		      sxt4    r49 = r44 ;;
			   }
			   { .mfb 
008C41116000     1700		      st2     [r17] = r11								   // 000979
000008000000     1701		      nop.f   0
00A000001000     1702		      br.call.sptk.many br0 = XST$SCAN							   // 000985
			   }
			   { .mib 
010802F00040     1710		      mov     r1 = r47
00A0308001C0     1711		      tbit.z  pr7, pr6 = r8, 0
008600006007     1712	       (pr7)  br.cond.dpnt.few L$91
			   }
			   { .mmi 
010800C30A40     1720		      adds    r41 = 24, r12 ;;
008082900A40     1721		      ld4     r41 = [r41]
000008000000     1722		      nop.i   0 ;;
			   }
			   { .mfi 
008C82B52000     1730		      st4     [r43] = r41

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 74
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

000008000000     1731		      nop.f   0
000008000000     1732		      nop.i   0
			   }
	         1740	L$91:
			   { .mmi 
008082B00AC0     1740		      ld4     r43 = [r43] ;;								   // 000987
01C402156240     1741		      cmp4.eq pr9, pr0 = r43, RIGHT_DELIMITER	// pr9, pr0 = r43, r33
000008000000     1742		      nop.i   0
			   }
			   { .bbb 
008600002009     1750	       (pr9)  br.cond.dpnt.few L$93
004000000000     1751		      nop.b   0
008000032000     1752		      br.sptk.few L$70 ;;
			   }
	         1760	L$93:
			   { .mmi 
010800C60240     1760		      adds    r9 = 48, r12 ;;								   // 000997
008040900240     1761		      ld2     r9 = [r9]
000008000000     1762		      nop.i   0 ;;
			   }
			   { .mfb 
01C4009002C0     1770		      cmp4.eq pr11, pr0 = r0, r9
000008000000     1771		      nop.f   0
00860001200B     1772	       (pr11) br.cond.dpnt.few L$95
			   }
			   { .mii 
01200000E640     1780		      mov     r25 = 7									   // 001016
0000B2C00C40     1781		      sxt4    r49 = r44
010800C20B00     1782		      adds    r44 = 16, r12
			   }
			   { .mii 
012400004C00     1790		      addl    r48 = 16386, r0
0000B0000D80     1791		      sxt4    r54 = r0
0000B0000D40     1792		      sxt4    r53 = r0
			   }
			   { .mii 
000008000000     17A0		      nop.m   0
0000B0000D00     17A1		      sxt4    r52 = r0
0000B0000CC0     17A2		      sxt4    r51 = r0 ;;
			   }
			   { .mib 
000008000000     17B0		      nop.m   0
0000B2C00C80     17B1		      sxt4    r50 = r44
00A000001000     17B2		      br.call.sptk.many br0 = XST$BINARY
			   }
			   { .mib 
010802F00040     17C0		      mov     r1 = r47
00A0308001C0     17C1		      tbit.z  pr7, pr6 = r8, 0
008600024007     17C2	       (pr7)  br.cond.dpnt.few L$70
			   }
			   { .mib 
010800C20840     17D0		      adds    r33 = 16, r12
0000B2000A40     17D1		      sxt4    r41 = SPEC_BLOCK			// r41 = r32
004000000000     17D2		      nop.b   0 ;;
			   }
			   { .mii 
008082100840     17E0		      ld4     r33 = [r33]

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 75
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

01080293CA40     17E1		      adds    r41 = 30, r41
000008000000     17E2		      nop.i   0 ;;
			   }
			   { .mfi 
008C42942000     17F0		      st2     [r41] = r33
000008000000     17F1		      nop.f   0
000008000000     17F2		      nop.i   0
			   }
	         1800	L$95:												   // 000997
			   { .mib 
000008000000     1800		      nop.m   0
0000B2000B00     1801		      sxt4    r44 = SPEC_BLOCK			// r44 = r32				   // 001021
004000000000     1802		      nop.b   0 ;;
			   }
			   { .mmi 
008082C000C0     1810		      ld4     r3 = [r44] ;;
0101703040C0     1811		      or      r3 = 2, r3
000008000000     1812		      nop.i   0 ;;
			   }
			   { .mfb 
008C82C06000     1820		      st4     [r44] = r3
000008000000     1821		      nop.f   0
00800000C000     1822		      br.sptk.few L$98 ;;								   // 000936
			   }
	         1830	L$79:												   // 000931
			   { .mii 
01C4021582C0     1830		      cmp4.eq pr11, pr0 = NEXT_CHARACTER, 	// pr11, pr0 = r44, r33			   // 001025
					      RIGHT_DELIMITER
01CC42C54240     1831		      cmp4.eq pr9, pr8 = 42, NEXT_CHARACTER ;;	// pr9, pr8 = 42, r44			   // 001024
01C24000024B     1832	       (pr11) cmp.eq.or.andcm pr9, pr8 = r0, r0
			   }
			   { .bbb 
008600002008     1840	       (pr8)  br.cond.dpnt.few L$99
004000000000     1841		      nop.b   0
008600008009     1842	       (pr9)  br.cond.dpnt.few L$98
			   }
	         1850	L$99:
			   { .mib 
000008000000     1850		      nop.m   0
0000B2000240     1851		      sxt4    r9 = SPEC_BLOCK			// r9 = r32				   // 001030
004000000000     1852		      nop.b   0 ;;
			   }
			   { .mmi 
008080900280     1860		      ld4     r10 = [r9] ;;
010170A02280     1861		      or      r10 = 1, r10
000008000000     1862		      nop.i   0 ;;
			   }
			   { .mfi 
008C80914000     1870		      st4     [r9] = r10
000008000000     1871		      nop.f   0
000008000000     1872		      nop.i   0
			   }
	         1880	L$98:												   // 000931
			   { .mii 
00A042A082C0     1880		      ld2     r11 = [r42], 4								   // 001037
0000B2000800     1881		      sxt4    r32 = SPEC_BLOCK ;;		// r32 = r32
010802028800     1882		      adds    r32 = 20, r32 ;;

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 76
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mmi 
00AC42016100     1890		      st2     [r32] = r11, 4
008082A00A80     1891		      ld4     r42 = [r42]								   // 001038
000008000000     1892		      nop.i   0 ;;
			   }
			   { .mmi 
008C82054000     18A0		      st4     [r32] = r42
008082800480     18A1		      ld4     r18 = [r40]								   // 001044
000008000000     18A2		      nop.i   0 ;;
			   }
			   { .mmi 
01017120E200     18B0		      or      r8 = 7, r18 ;;
008C82810000     18B1		      st4     [r40] = r8
000008000000     18B2		      nop.i   0
			   }
			   { .mlx 
000008000000     18C0		      nop.m   0
000000000000     18C1		      movl    r8 = 2129921								   // 001065
0190004044
			   }
			   { .mfb 
000008000000     18D0		      nop.m   0
000008000000     18D1		      nop.f   0
008000008000     18D2		      br.sptk.few L$65 ;;
			   }
	         18E0	L$70:												   // 000904
			   { .mib 
000008000000     18E0		      nop.m   0
0000B2200880     18E1		      sxt4    r34 = SECONDARY_CODE		// r34 = r34				   // 000913
004000000000     18E2		      nop.b   0
			   }
			   { .mlx 
000008000000     18F0		      nop.m   0
000000000000     18F1		      movl    r8 = 2138850 ;;
0194505884
			   }
	         1900	L$208:
			   { .mlx 
008C82210000     1900		      st4     [r34] = r8
000000000000     1901		      movl    r8 = 2138178
0194005084
			   }
	         1910	L$65:
			   { .mii 
000008000000     1910		      nop.m   0
00015405C000     1911		      mov.i   rspfs = r46
010800C80300     1912		      adds    r12 = 64, r12 ;;
			   }
			   { .mib 
000008000000     1920		      nop.m   0
000E0015A000     1921		      mov     br0 = r45
000108001100     1922		      br.ret.sptk.many br0 ;;
			   }
				      .endp   XPO$DIRECT_PARSE

Routine Size: 1696 bytes,    Routine Base: _XPO$CODE + 1290

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 77
V1.2-23                         XPO$DIRECT_PARSE                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1


				      .proc   XPO$NAME_PARSE
				      .align 32
				      .global  XPO$NAME_PARSE
			XPO$NAME_PARSE:											   // 001074
			   { .mii 
002C0050E8C0     1930		      alloc   r35 = rspfs, 2, 3, 2, 0
000188000880     1931		      mov     r34 = br0
010800100900     1932		      mov     r36 = r1
			   }
			   { .mii 
012000004640     1940		      mov     r25 = 2									   // 001137
0000B2100980     1941		      sxt4    r38 = SECONDARY_CODE		// r38 = r33
0000B2000940     1942		      sxt4    r37 = SPEC_BLOCK ;;		// r37 = r32
			   }
			   { .mfb 
000008000000     1950		      nop.m   0
000008000000     1951		      nop.f   0
00A000001000     1952		      br.call.sptk.many br0 = XPO$LAST_PARSE
			   }
			   { .mib 
010802400040     1960		      mov     r1 = r36
00A0308001C0     1961		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
008600004006     1962	       (pr6)  br.cond.dpnt.few L$59
			   }
			   { .mib 
000008000000     1970		      nop.m   0
0000B0800200     1971		      sxt4    r8 = r8									   // 001139
008000008000     1972		      br.sptk.few L$61 ;;
			   }
	         1980	L$59:												   // 001137
			   { .mii 
012000100800     1980		      add     r32 = @ltoff(XPO$SCAN_SPEC), r1						   // 001145
012000002200     1981		      mov     r8 = 1
000008000000     1982		      nop.i   0 ;;
			   }
			   { .mmi 
0080C2000800     1990		      ld8     r32 = XPO$SCAN_SPEC ;;		// r32 = [r32]
008C42010000     1991		      st2     XPO$SCAN_SPEC = r8		// [r32] = r8
000008000000     1992		      nop.i   0
			   }
			   { .mlx 
000008000000     19A0		      nop.m   0
000000000000     19A1		      movl    r8 = 2129921								   // 001152
0190004044
			   }
	         19B0	L$61:
			   { .mii 
000008000000     19B0		      nop.m   0
000154046000     19B1		      mov.i   rspfs = r35
000E00144000     19B2		      mov     br0 = r34 ;;
			   }
			   { .mfb 
000008000000     19C0		      nop.m   0
000008000000     19C1		      nop.f   0
000108001100     19C2		      br.ret.sptk.many br0 ;;
			   }

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 78
V1.2-23                         XPO$NAME_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

				      .endp   XPO$NAME_PARSE

Routine Size: 160 bytes,    Routine Base: _XPO$CODE + 1930

				      .proc   XPO$LAST_PARSE
				      .align 32
				      .global  XPO$LAST_PARSE
			XPO$LAST_PARSE:											   // 001608
			   { .mii 
002C01130BC0     19D0		      alloc   r47 = rspfs, 2, 15, 7, 0
012000100A80     19D1		      add     r42 = @ltoff(XPO$FIELD_DELIM), r1						   // 001676
012000100A00     19D2		      add     r40 = @ltoff(XPO$SCAN_SPEC), r1						   // 001675
			   }
			   { .mii 
012000100AC0     19E0		      add     r43 = @ltoff(XPO$NEXT_FIELD), r1						   // 001678
000188000B80     19E1		      mov     r46 = br0									   // 001608
010800100C00     19E2		      mov     r48 = r1 ;;
			   }
			   { .mmi 
0080C2B00AC0     19F0		      ld8     r43 = XPO$NEXT_FIELD		// r43 = [r43]				   // 001678
0080C2A00A80     19F1		      ld8     r42 = XPO$FIELD_DELIM		// r42 = [r42]				   // 001676
000008000000     19F2		      nop.i   0 ;;
			   }
			   { .mmi 
0080C2800A00     1A00		      ld8     r40 = XPO$SCAN_SPEC		// r40 = [r40]				   // 001675
008082B000C0     1A01		      ld4     r3 = [r43]								   // 001678
000008000000     1A02		      nop.i   0 ;;
			   }
			   { .mmi 
008082A00200     1A10		      ld4     r8 = [r42]								   // 001676
008042800A40     1A11		      ld2     r41 = [r40]								   // 001675
01CC50304000     1A12		      cmp4.eq pr0, pr10 = 2, r3 ;;							   // 001678
			   }
			   { .mii 
01CC0085C240     1A20		      cmp4.eq pr9, pr0 = 46, r8								   // 001676
01C438052180     1A21		      cmp4.eq pr6, pr7 = r41, r0							   // 001675
01CC008762C0     1A22		      cmp4.eq pr11, pr0 = 59, r8 ;;							   // 001677
			   }
			   { .mmi 
01C2300001C9     1A30	       (pr9)  cmp.eq.or.andcm pr7, pr6 = r0, r0 ;;						   // 001675
01C2300001CB     1A31	       (pr11) cmp.eq.or.andcm pr7, pr6 = r0, r0							   // 001676
000008000000     1A32		      nop.i   0 ;;
			   }
			   { .mbb 
01C2300001CA     1A40	       (pr10) cmp.eq.or.andcm pr7, pr6 = r0, r0							   // 001677
008600002006     1A41	       (pr6)  br.cond.dpnt.few L$2								   // 001675
008600006007     1A42	       (pr7)  br.cond.dpnt.few L$3
			   }
	         1A50	L$2:
			   { .mlx 
000008000000     1A50		      nop.m   0
000000000000     1A51		      movl    r8 = 2129921								   // 001680
0190004044
			   }
			   { .mfb 
000008000000     1A60		      nop.m   0
000008000000     1A61		      nop.f   0

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 79
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

0080000F4000     1A62		      br.sptk.few L$4 ;;
			   }
	         1A70	L$3:												   // 001675
			   { .mfb 
01CC00302200     1A70		      cmp4.eq pr8, pr0 = 1, r3								   // 001686
000008000000     1A71		      nop.f   0
0086000E6008     1A72	       (pr8)  br.cond.dpnt.few L$8
			   }
			   { .mii 
012000100B00     1A80		      add     r44 = @ltoff(XPO$STATE), r1						   // 001827
01CC00306280     1A81		      cmp4.eq pr10, pr0 = 3, r3								   // 001686
000008000000     1A82		      nop.i   0 ;;
			   }
			   { .mfb 
0080C2C00B00     1A90		      ld8     r44 = XPO$STATE			// r44 = [r44]				   // 001827
000008000000     1A91		      nop.f   0
00860009600A     1A92	       (pr10) br.cond.dpnt.few L$12								   // 001686
			   }
			   { .mfb 
01CC003081C0     1AA0		      cmp4.eq pr7, pr0 = 4, r3
000008000000     1AA1		      nop.f   0
00860004A007     1AA2	       (pr7)  br.cond.dpnt.few L$16 ;;
			   }
			   { .mmi 
008082C00200     1AB0		      ld4     r8 = [r44] ;;								   // 001701
000008000000     1AB1		      nop.m   0
00A40080C200     1AB2		      extr.u  r8 = r8, 3, 1 ;;
			   }
			   { .mib 
000008000000     1AC0		      nop.m   0
00A040800240     1AC1		      tbit.z  pr9, pr8 = r8, 0
00860000A009     1AC2	       (pr9)  br.cond.dpnt.few L$18
			   }
			   { .mib 
000008000000     1AD0		      nop.m   0
0000B2100840     1AD1		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001703
004000000000     1AD2		      nop.b   0
			   }
			   { .mlx 
000008000000     1AE0		      nop.m   0
000000000000     1AE1		      movl    r8 = 2138842 ;;
0194505684
			   }
			   { .mlx 
008C82110000     1AF0		      st4     [r33] = r8
000000000000     1AF1		      movl    r8 = 2138218
0194005A84
			   }
			   { .mfb 
000008000000     1B00		      nop.m   0
000008000000     1B01		      nop.f   0
0080000E0000     1B02		      br.sptk.few L$4 ;;
			   }
	         1B10	L$18:												   // 001701
			   { .mfb 
018C5297E000     1B10		      cmp4.lt pr0, pr10 = 63, r41							   // 001705
000008000000     1B11		      nop.f   0

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 80
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

00860000A00A     1B12	       (pr10) br.cond.dpnt.few L$21
			   }
			   { .mib 
000008000000     1B20		      nop.m   0
0000B2100840     1B21		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001708
004000000000     1B22		      nop.b   0
			   }
			   { .mlx 
000008000000     1B30		      nop.m   0
000000000000     1B31		      movl    r8 = 2138210 ;;
0194005884
			   }
			   { .mlx 
008C82110000     1B40		      st4     [r33] = r8
000000000000     1B41		      movl    r8 = 2138218
0194005A84
			   }
			   { .mfb 
000008000000     1B50		      nop.m   0
000008000000     1B51		      nop.f   0
0080000D6000     1B52		      br.sptk.few L$4 ;;
			   }
	         1B60	L$21:												   // 001710
			   { .mii 
0120001000C0     1B60		      add     r3 = @ltoff($STR$PATTERN), r1
01200000E640     1B61		      mov     r25 = 7
0000B0000DC0     1B62		      sxt4    r55 = r0
			   }
			   { .mii 
012400002C40     1B70		      addl    r49 = 16385, r0
0000B0000D80     1B71		      sxt4    r54 = r0
0000B0000D40     1B72		      sxt4    r53 = r0 ;;
			   }
			   { .mii 
0080C03000C0     1B80		      ld8     r3 = $STR$PATTERN			// r3 = [r3]
0000B0000D00     1B81		      sxt4    r52 = r0
0000B2800C80     1B82		      sxt4    r50 = r40 ;;
			   }
			   { .mib 
000008000000     1B90		      nop.m   0
0000B0300CC0     1B91		      sxt4    r51 = r3
00A000001000     1B92		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mii 
0080428000C0     1BA0		      ld2     r3 = [r40]								   // 001712
00A0308001C0     1BA1		      tbit.z  pr7, pr6 = r8, 0								   // 001710
010803000040     1BA2		      mov     r1 = r48
			   }
			   { .mfb 
000008000000     1BB0		      nop.m   0
000008000000     1BB1		      nop.f   0
008600012007     1BB2	       (pr7)  br.cond.dpnt.few L$24 ;;
			   }
			   { .mfb 
01CC00302240     1BC0		      cmp4.eq pr9, pr0 = 1, r3								   // 001712
000008000000     1BC1		      nop.f   0
00860000A009     1BC2	       (pr9)  br.cond.dpnt.few L$28

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 81
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mib 
000008000000     1BD0		      nop.m   0
0000B2100840     1BD1		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001714
004000000000     1BD2		      nop.b   0
			   }
			   { .mlx 
000008000000     1BE0		      nop.m   0
000000000000     1BE1		      movl    r8 = 2138674 ;;
0194404C84
			   }
			   { .mlx 
008C82110000     1BF0		      st4     [r33] = r8
000000000000     1BF1		      movl    r8 = 2138218
0194005A84
			   }
			   { .mfb 
000008000000     1C00		      nop.m   0
000008000000     1C01		      nop.f   0
0080000C0000     1C02		      br.sptk.few L$4 ;;
			   }
	         1C10	L$28:												   // 001712
			   { .mib 
0120080002C0     1C10		      mov     r11 = 128									   // 001716
0000B2000240     1C11		      sxt4    r9 = SPEC_BLOCK			// r9 = r32
004000000000     1C12		      nop.b   0 ;;
			   }
			   { .mmi 
008080900280     1C20		      ld4     r10 = [r9] ;;
010070B14280     1C21		      or      r10 = r10, r11
000008000000     1C22		      nop.i   0 ;;
			   }
			   { .mfi 
008C80914000     1C30		      st4     [r9] = r10
000008000000     1C31		      nop.f   0
000008000000     1C32		      nop.i   0
			   }
	         1C40	L$24:												   // 001710
			   { .mii 
00A042808440     1C40		      ld2     r17 = [r40], 4								   // 001719
0000B2000800     1C41		      sxt4    r32 = SPEC_BLOCK ;;		// r32 = r32				   // 001718
010802040800     1C42		      adds    r32 = 32, r32 ;;
			   }
			   { .mmi 
00AC42022100     1C50		      st2     [r32] = r17, 4
00B08A8F84C0     1C51		      ld4     r19 = [r40], -4								   // 001720
000008000000     1C52		      nop.i   0 ;;
			   }
			   { .mmi 
008C82026000     1C60		      st4     [r32] = r19
008082C00500     1C61		      ld4     r20 = [r44]								   // 001722
000008000000     1C62		      nop.i   0 ;;
			   }
			   { .mmi 
010171410500     1C70		      or      r20 = 8, r20 ;;
008C82C28000     1C71		      st4     [r44] = r20
000008000000     1C72		      nop.i   0

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 82
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mmi 
008082A00A80     1C80		      ld4     r42 = [r42] ;;								   // 001725
01CC52A76000     1C81		      cmp4.eq pr0, pr10 = 59, r42
000008000000     1C82		      nop.i   0
			   }
			   { .mfb 
000008000000     1C90		      nop.m   0
000008000000     1C91		      nop.f   0
00860000800A     1C92	       (pr10) br.cond.dpnt.few L$31
			   }
			   { .mmi 
012000008580     1CA0		      mov     r22 = 4 ;;								   // 001728
008C82B2C000     1CA1		      st4     [r43] = r22
000008000000     1CA2		      nop.i   0
			   }
			   { .mmi 
008082C00600     1CB0		      ld4     r24 = [r44] ;;								   // 001729
010171820600     1CB1		      or      r24 = 16, r24
000008000000     1CB2		      nop.i   0 ;;
			   }
			   { .mfb 
008C82C30000     1CC0		      st4     [r44] = r24
000008000000     1CC1		      nop.f   0
00800008E000     1CC2		      br.sptk.few L$33 ;;								   // 001725
			   }
	         1CD0	L$31:
			   { .mmi 
012000006680     1CD0		      mov     r26 = 3 ;;								   // 001733
008C82B34000     1CD1		      st4     [r43] = r26
000008000000     1CD2		      nop.i   0
			   }
			   { .mfb 
000008000000     1CE0		      nop.m   0
000008000000     1CE1		      nop.f   0
00800008A000     1CE2		      br.sptk.few L$33 ;;								   // 001725
			   }
	         1CF0	L$16:												   // 001686
			   { .mmi 
008082C00700     1CF0		      ld4     r28 = [r44] ;;								   // 001776
000008000000     1CF1		      nop.m   0
00A401C14700     1CF2		      extr.u  r28 = r28, 5, 1 ;;
			   }
			   { .mib 
000008000000     1D00		      nop.m   0
00A061C00340     1D01		      tbit.z  pr13, pr12 = r28, 0
00860000A00D     1D02	       (pr13) br.cond.dpnt.few L$35
			   }
			   { .mib 
000008000000     1D10		      nop.m   0
0000B2100840     1D11		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001778
004000000000     1D12		      nop.b   0
			   }
			   { .mlx 
000008000000     1D20		      nop.m   0
000000000000     1D21		      movl    r8 = 2138842 ;;
0194505684

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 83
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   }
			   { .mlx 
008C82110000     1D30		      st4     [r33] = r8
000000000000     1D31		      movl    r8 = 2138306
0194105084
			   }
			   { .mfb 
000008000000     1D40		      nop.m   0
000008000000     1D41		      nop.f   0
008000098000     1D42		      br.sptk.few L$4 ;;
			   }
	         1D50	L$35:												   // 001780
			   { .mii 
012000100A80     1D50		      add     r42 = @ltoff($STR$PATTERN), r1
01200000E640     1D51		      mov     r25 = 7
000008000000     1D52		      nop.i   0
			   }
			   { .mlx 
012400004C40     1D60		      addl    r49 = 16386, r0
800000000000     1D61		      movl    r45 = 2394113 ;;
0191024056
			   }
			   { .mii 
0080C2A00A80     1D70		      ld8     r42 = $STR$PATTERN		// r42 = [r42]
0000B0000DC0     1D71		      sxt4    r55 = r0
0000B0000D80     1D72		      sxt4    r54 = r0
			   }
			   { .mii 
000008000000     1D80		      nop.m   0
0000B0000D40     1D81		      sxt4    r53 = r0
0000B0000D00     1D82		      sxt4    r52 = r0 ;;
			   }
			   { .mii 
000008000000     1D90		      nop.m   0
0000B2A00CC0     1D91		      sxt4    r51 = r42
0000B2800C80     1D92		      sxt4    r50 = r40
			   }
			   { .mfb 
000008000000     1DA0		      nop.m   0
000008000000     1DA1		      nop.f   0
00A000001000     1DA2		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mib 
01C402D101C0     1DB0		      cmp4.eq pr7, pr0 = r8, r45
010803000040     1DB1		      mov     r1 = r48
00860000A007     1DB2	       (pr7)  br.cond.dpnt.few L$37
			   }
			   { .mib 
000008000000     1DC0		      nop.m   0
0000B2100840     1DC1		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001782
004000000000     1DC2		      nop.b   0
			   }
			   { .mlx 
000008000000     1DD0		      nop.m   0
000000000000     1DD1		      movl    r8 = 2138850 ;;
0194505884
			   }

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 84
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   { .mlx 
008C82110000     1DE0		      st4     [r33] = r8
000000000000     1DE1		      movl    r8 = 2138306
0194105084
			   }
			   { .mfb 
000008000000     1DF0		      nop.m   0
000008000000     1DF1		      nop.f   0
008000082000     1DF2		      br.sptk.few L$4 ;;
			   }
	         1E00	L$37:												   // 001784
			   { .mii 
010802A10A80     1E00		      adds    r42 = 8, r42
01200000E640     1E01		      mov     r25 = 7
0000B0000DC0     1E02		      sxt4    r55 = r0
			   }
			   { .mii 
012400002C40     1E10		      addl    r49 = 16385, r0
0000B0000D80     1E11		      sxt4    r54 = r0
0000B0000D40     1E12		      sxt4    r53 = r0 ;;
			   }
			   { .mii 
000008000000     1E20		      nop.m   0
0000B0000D00     1E21		      sxt4    r52 = r0
0000B2A00CC0     1E22		      sxt4    r51 = r42
			   }
			   { .mib 
000008000000     1E30		      nop.m   0
0000B2800C80     1E31		      sxt4    r50 = r40
00A000001000     1E32		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mii 
008042800B40     1E40		      ld2     r45 = [r40]								   // 001786
00A0308001C0     1E41		      tbit.z  pr7, pr6 = r8, 0								   // 001784
010803000040     1E42		      mov     r1 = r48
			   }
			   { .mfb 
000008000000     1E50		      nop.m   0
000008000000     1E51		      nop.f   0
008600012007     1E52	       (pr7)  br.cond.dpnt.few L$39 ;;
			   }
			   { .mfb 
01CC02D02240     1E60		      cmp4.eq pr9, pr0 = 1, r45								   // 001786
000008000000     1E61		      nop.f   0
00860000A009     1E62	       (pr9)  br.cond.dpnt.few L$43
			   }
			   { .mib 
000008000000     1E70		      nop.m   0
0000B2100840     1E71		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001788
004000000000     1E72		      nop.b   0
			   }
			   { .mlx 
000008000000     1E80		      nop.m   0
000000000000     1E81		      movl    r8 = 2138674 ;;
0194404C84
			   }
			   { .mlx 

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 85
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

008C82110000     1E90		      st4     [r33] = r8
000000000000     1E91		      movl    r8 = 2138306
0194105084
			   }
			   { .mfb 
000008000000     1EA0		      nop.m   0
000008000000     1EA1		      nop.f   0
00800006C000     1EA2		      br.sptk.few L$4 ;;
			   }
	         1EB0	L$43:												   // 001786
			   { .mib 
012020000240     1EB0		      mov     r9 = 512									   // 001790
0000B2000A80     1EB1		      sxt4    r42 = SPEC_BLOCK			// r42 = r32
004000000000     1EB2		      nop.b   0 ;;
			   }
			   { .mmi 
008082A000C0     1EC0		      ld4     r3 = [r42] ;;
0100709060C0     1EC1		      or      r3 = r3, r9
000008000000     1EC2		      nop.i   0 ;;
			   }
			   { .mfi 
008C82A06000     1ED0		      st4     [r42] = r3
000008000000     1ED1		      nop.f   0
000008000000     1ED2		      nop.i   0
			   }
	         1EE0	L$39:												   // 001784
			   { .mii 
00A042808280     1EE0		      ld2     r10 = [r40], 4								   // 001793
0000B2000800     1EE1		      sxt4    r32 = SPEC_BLOCK			// r32 = r32				   // 001792
012000002500     1EE2		      mov     r20 = 1 ;;								   // 001800
			   }
			   { .mii 
010800A02280     1EF0		      adds    r10 = 1, r10								   // 001793
010802060800     1EF1		      adds    r32 = 48, r32								   // 001792
000008000000     1EF2		      nop.i   0 ;;
			   }
			   { .mmi 
00AC42014100     1F00		      st2     [r32] = r10, 4
00B08A8F8440     1F01		      ld4     r17 = [r40], -4								   // 001794
000008000000     1F02		      nop.i   0 ;;
			   }
			   { .mmi 
0119F91FE440     1F10		      adds    r17 = -1, r17 ;;
008C82022000     1F11		      st4     [r32] = r17
000008000000     1F12		      nop.i   0
			   }
			   { .mmi 
008082C00480     1F20		      ld4     r18 = [r44] ;;								   // 001796
010171270480     1F21		      or      r18 = 56, r18
000008000000     1F22		      nop.i   0 ;;
			   }
			   { .mmb 
008C82C24000     1F30		      st4     [r44] = r18
008C82B28000     1F31		      st4     [r43] = r20								   // 001800
008000040000     1F32		      br.sptk.few L$33 ;;								   // 001686
			   }
	         1F40	L$12:

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 86
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   { .mmi 
008082C00580     1F40		      ld4     r22 = [r44] ;;								   // 001742
000008000000     1F41		      nop.m   0
00A401610580     1F42		      extr.u  r22 = r22, 4, 1 ;;
			   }
			   { .mib 
000008000000     1F50		      nop.m   0
00A0516002C0     1F51		      tbit.z  pr11, pr10 = r22, 0
00860000A00B     1F52	       (pr11) br.cond.dpnt.few L$45
			   }
			   { .mib 
000008000000     1F60		      nop.m   0
0000B2100840     1F61		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001744
004000000000     1F62		      nop.b   0
			   }
			   { .mlx 
000008000000     1F70		      nop.m   0
000000000000     1F71		      movl    r8 = 2138842 ;;
0194505684
			   }
			   { .mlx 
008C82110000     1F80		      st4     [r33] = r8
000000000000     1F81		      movl    r8 = 2138298
0194104E84
			   }
			   { .mfb 
000008000000     1F90		      nop.m   0
000008000000     1F91		      nop.f   0
00800004E000     1F92		      br.sptk.few L$4 ;;
			   }
	         1FA0	L$45:												   // 001742
			   { .mfb 
018C6294E000     1FA0		      cmp4.lt pr0, pr12 = 39, r41							   // 001746
000008000000     1FA1		      nop.f   0
00860000A00C     1FA2	       (pr12) br.cond.dpnt.few L$48
			   }
			   { .mib 
000008000000     1FB0		      nop.m   0
0000B2100840     1FB1		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001749
004000000000     1FB2		      nop.b   0
			   }
			   { .mlx 
000008000000     1FC0		      nop.m   0
000000000000     1FC1		      movl    r8 = 2138210 ;;
0194005884
			   }
			   { .mlx 
008C82110000     1FD0		      st4     [r33] = r8
000000000000     1FD1		      movl    r8 = 2138298
0194104E84
			   }
			   { .mfb 
000008000000     1FE0		      nop.m   0
000008000000     1FE1		      nop.f   0
008000044000     1FE2		      br.sptk.few L$4 ;;
			   }
	         1FF0	L$48:												   // 001751

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 87
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   { .mii 
0120001005C0     1FF0		      add     r23 = @ltoff($STR$PATTERN), r1
01200000E640     1FF1		      mov     r25 = 7
0000B0000DC0     1FF2		      sxt4    r55 = r0
			   }
			   { .mii 
012400002C40     2000		      addl    r49 = 16385, r0
0000B0000D80     2001		      sxt4    r54 = r0
0000B0000D40     2002		      sxt4    r53 = r0 ;;
			   }
			   { .mii 
0080C17005C0     2010		      ld8     r23 = $STR$PATTERN		// r23 = [r23]
0000B0000D00     2011		      sxt4    r52 = r0
0000B2800C80     2012		      sxt4    r50 = r40 ;;
			   }
			   { .mib 
000008000000     2020		      nop.m   0
0000B1700CC0     2021		      sxt4    r51 = r23
00A000001000     2022		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mii 
008042800B40     2030		      ld2     r45 = [r40]								   // 001753
00A0308001C0     2031		      tbit.z  pr7, pr6 = r8, 0								   // 001751
010803000040     2032		      mov     r1 = r48
			   }
			   { .mfb 
000008000000     2040		      nop.m   0
000008000000     2041		      nop.f   0
008600012007     2042	       (pr7)  br.cond.dpnt.few L$51 ;;
			   }
			   { .mfb 
01CC02D02240     2050		      cmp4.eq pr9, pr0 = 1, r45								   // 001753
000008000000     2051		      nop.f   0
00860000A009     2052	       (pr9)  br.cond.dpnt.few L$55
			   }
			   { .mib 
000008000000     2060		      nop.m   0
0000B2100840     2061		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001755
004000000000     2062		      nop.b   0
			   }
			   { .mlx 
000008000000     2070		      nop.m   0
000000000000     2071		      movl    r8 = 2138674 ;;
0194404C84
			   }
			   { .mlx 
008C82110000     2080		      st4     [r33] = r8
000000000000     2081		      movl    r8 = 2138298
0194104E84
			   }
			   { .mfb 
000008000000     2090		      nop.m   0
000008000000     2091		      nop.f   0
00800002E000     2092		      br.sptk.few L$4 ;;
			   }
	         20A0	L$55:												   // 001753
			   { .mib 

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 88
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

0120100000C0     20A0		      mov     r3 = 256									   // 001757
0000B2000A80     20A1		      sxt4    r42 = SPEC_BLOCK			// r42 = r32
004000000000     20A2		      nop.b   0 ;;
			   }
			   { .mmi 
008082A00A40     20B0		      ld4     r41 = [r42] ;;
0100703520C0     20B1		      or      r3 = r41, r3
000008000000     20B2		      nop.i   0 ;;
			   }
			   { .mfi 
008C82A06000     20C0		      st4     [r42] = r3
000008000000     20C1		      nop.f   0
000008000000     20C2		      nop.i   0
			   }
	         20D0	L$51:												   // 001751
			   { .mii 
00A042808240     20D0		      ld2     r9 = [r40], 4								   // 001760
0000B2000800     20D1		      sxt4    r32 = SPEC_BLOCK			// r32 = r32				   // 001759
0120000084C0     20D2		      mov     r19 = 4 ;;								   // 001767
			   }
			   { .mii 
010800902240     20E0		      adds    r9 = 1, r9								   // 001760
010802050800     20E1		      adds    r32 = 40, r32								   // 001759
000008000000     20E2		      nop.i   0 ;;
			   }
			   { .mmi 
00AC42012100     20F0		      st2     [r32] = r9, 4
00B08A8F82C0     20F1		      ld4     r11 = [r40], -4								   // 001761
000008000000     20F2		      nop.i   0 ;;
			   }
			   { .mmi 
0119F8BFE2C0     2100		      adds    r11 = -1, r11 ;;
008C82016000     2101		      st4     [r32] = r11
000008000000     2102		      nop.i   0
			   }
			   { .mmi 
008082C00440     2110		      ld4     r17 = [r44] ;;								   // 001763
010171130440     2111		      or      r17 = 24, r17
000008000000     2112		      nop.i   0 ;;
			   }
			   { .mmi 
008C82C22000     2120		      st4     [r44] = r17
008C82B26000     2121		      st4     [r43] = r19								   // 001767
000008000000     2122		      nop.i   0
			   }
	         2130	L$33:												   // 001686
			   { .mmi 
00A042814500     2130		      ld2     r20 = [r40], 10 ;;							   // 001822
00B04A8F4540     2131		      ld2     r21 = [r40], -6								   // 001823
000008000000     2132		      nop.i   0 ;;
			   }
			   { .mii 
00B08A8F8580     2140		      ld4     r22 = [r40], -4								   // 001821
01000142A540     2141		      add     r21 = r21, r20 ;;								   // 001823
01000142C500     2142		      add     r20 = r22, r20								   // 001822
			   }
			   { .mmi 

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 89
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

00AC42800280     2150		      st2     [r40] = r0, 10 ;;								   // 001824
00BC4A82BE80     2151		      st2     [r40] = r21, -6								   // 001823
000008000000     2152		      nop.i   0 ;;
			   }
			   { .mmi 
008C82828000     2160		      st4     [r40] = r20								   // 001820
008082C00640     2161		      ld4     r25 = [r44]								   // 001827
000008000000     2162		      nop.i   0 ;;
			   }
			   { .mmi 
01017190E200     2170		      or      r8 = 7, r25 ;;
008C82C10000     2171		      st4     [r44] = r8
000008000000     2172		      nop.i   0
			   }
			   { .mlx 
000008000000     2180		      nop.m   0
000000000000     2181		      movl    r8 = 2129921								   // 001837
0190004044
			   }
			   { .mfb 
000008000000     2190		      nop.m   0
000008000000     2191		      nop.f   0
00800000E000     2192		      br.sptk.few L$4 ;;
			   }
	         21A0	L$8:												   // 001686
			   { .mfb 
01C452900000     21A0		      cmp4.eq pr0, pr10 = r0, r41							   // 001808
000008000000     21A1		      nop.f   0
00860000600A     21A2	       (pr10) br.cond.dpnt.few L$56
			   }
			   { .mlx 
000008000000     21B0		      nop.m   0
000000000000     21B1		      movl    r8 = 2129921								   // 001810
0190004044
			   }
			   { .mfb 
000008000000     21C0		      nop.m   0
000008000000     21C1		      nop.f   0
008000008000     21C2		      br.sptk.few L$4 ;;
			   }
	         21D0	L$56:												   // 001808
			   { .mib 
000008000000     21D0		      nop.m   0
0000B2100840     21D1		      sxt4    r33 = SECONDARY_CODE		// r33 = r33				   // 001812
004000000000     21D2		      nop.b   0
			   }
			   { .mlx 
000008000000     21E0		      nop.m   0
000000000000     21E1		      movl    r8 = 2138842 ;;
0194505684
			   }
			   { .mlx 
008C82110000     21F0		      st4     [r33] = r8
000000000000     21F1		      movl    r8 = 2138850
0194505884
			   }
	         2200	L$4:

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 90
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			   { .mii 
000008000000     2200		      nop.m   0
00015405E000     2201		      mov.i   rspfs = r47
000E0015C000     2202		      mov     br0 = r46 ;;
			   }
			   { .mfb 
000008000000     2210		      nop.m   0
000008000000     2211		      nop.f   0
000108001100     2212		      br.ret.sptk.many br0 ;;
			   }
				      .endp   XPO$LAST_PARSE

Routine Size: 2128 bytes,    Routine Base: _XPO$CODE + 19D0

				       .psect $INITIAL$, CON, LCL, NOSHR, NOEXE, NOWRT, NOVEC
				      .lcomm  P.AAA, 52, 16
				      .global XPO$STATE
				      .lcomm  XPO$STATE, 1, 1
				      .lcomm  fill$$1, 3, 4
				      .lcomm  $STR$STRING, 12, 16
				      .global XPO$FIELD_DELIM
				      .lcomm  XPO$FIELD_DELIM, 4, 4
				      .global XPO$NEXT_FIELD
				      .lcomm  XPO$NEXT_FIELD, 4, 4
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  P.AAB, 2, 2
				      .lcomm  fill$$2, 2, 2
				      .lcomm  P.AAC, 2, 2
				      .lcomm  fill$$3, 2, 2
				      .lcomm  P.AAD, 2, 2
				      .lcomm  fill$$4, 2, 2
				      .lcomm  P.AAE, 2, 2
				      .lcomm  fill$$5, 2, 2
				      .lcomm  P.AAF, 65, 16
				      .lcomm  fill$$6, 3, 4
				      .lcomm  P.AAG, 1, 1
				      .lcomm  fill$$7, 3, 4
				      .lcomm  P.AAH, 1, 1
				      .lcomm  fill$$8, 3, 4
				      .lcomm  P.AAI, 1, 1
				      .lcomm  fill$$9, 3, 4

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 91
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

				      .lcomm  P.AAJ, 3, 4
				      .lcomm  fill$$10, 1, 1
				      .lcomm  P.AAK, 1, 1
				      .lcomm  fill$$11, 3, 4
				      .lcomm  P.AAL, 1, 1
				      .lcomm  fill$$12, 3, 4
				      .lcomm  P.AAM, 10, 16
				      .lcomm  fill$$13, 2, 2
				      .lcomm  P.AAN, 10, 16
				      .lcomm  fill$$14, 2, 2
				      .lcomm  P.AAO, 1, 1
				      .lcomm  fill$$15, 3, 4
				      .lcomm  P.AAP, 1, 1
				      .lcomm  fill$$16, 3, 4
				      .lcomm  P.AAQ, 11, 16
				      .lcomm  fill$$17, 1, 1
				      .lcomm  P.AAR, 1, 1
				      .psect $INITIAL$, CON, LCL, NOSHR, NOEXE, NOWRT, NOVEC
			P.AAA:
      00         0000		      data1   0x0  : 2 // data1 0
    0001         0002		      data2   0x1 // data2 1
      00         0004		      data1   0x0  : 6 // data1 0
    0002         000A		      data2   0x2 // data2 2
      00         000C		      data1   0x0  : 6 // data1 0
    0003         0012		      data2   0x3 // data2 3
      00         0014		      data1   0x0  : 6 // data1 0
    0005         001A		      data2   0x5 // data2 5
      00         001C		      data1   0x0  : 6 // data1 0
    0006         0022		      data2   0x6 // data2 6
      00         0024		      data1   0x0  : 6 // data1 0
    0007         002A		      data2   0x7 // data2 7
      00         002C		      data1   0x0  : 6 // data1 0
    0008         0032		      data2   0x8 // data2 8
				      .psect _XPO$DATA, CON, LCL, NOSHR, NOEXE, WRT, NOVEC
			$STR$PATTERN:
    0002         0018		      data2   0x2 // data2 2
      0E         001A		      data1   0xE // data1 14
      01         001B		      data1   0x1 // data1 1
00000000         001C		      data4   P.AAB
			$STR$PATTERN:
    0002         0020		      data2   0x2 // data2 2
      0E         0022		      data1   0xE // data1 14
      01         0023		      data1   0x1 // data1 1
00000000         0024		      data4   P.AAC
			$STR$PATTERN:
    0002         0028		      data2   0x2 // data2 2
      0E         002A		      data1   0xE // data1 14
      01         002B		      data1   0x1 // data1 1
00000000         002C		      data4   P.AAD
			$STR$PATTERN:
    0002         0030		      data2   0x2 // data2 2
      0E         0032		      data1   0xE // data1 14
      01         0033		      data1   0x1 // data1 1
00000000         0034		      data4   P.AAE
			$STR$PATTERN:
    0041         0038		      data2   0x41 // data2 65
      0E         003A		      data1   0xE // data1 14

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 92
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

      01         003B		      data1   0x1 // data1 1
00000000         003C		      data4   P.AAF
			$STR$PATTERN:
    0001         0040		      data2   0x1 // data2 1
      0E         0042		      data1   0xE // data1 14
      01         0043		      data1   0x1 // data1 1
00000000         0044		      data4   P.AAG
			$STR$PATTERN:
    0001         0048		      data2   0x1 // data2 1
      0E         004A		      data1   0xE // data1 14
      01         004B		      data1   0x1 // data1 1
00000000         004C		      data4   P.AAH
			$STR$PATTERN:
    0001         0050		      data2   0x1 // data2 1
      0E         0052		      data1   0xE // data1 14
      01         0053		      data1   0x1 // data1 1
00000000         0054		      data4   P.AAI
			$STR$PATTERN:
    0003         0058		      data2   0x3 // data2 3
      0E         005A		      data1   0xE // data1 14
      01         005B		      data1   0x1 // data1 1
00000000         005C		      data4   P.AAJ
			$STR$PATTERN:
    0001         0060		      data2   0x1 // data2 1
      0E         0062		      data1   0xE // data1 14
      01         0063		      data1   0x1 // data1 1
00000000         0064		      data4   P.AAK
			$STR$PATTERN:
    0001         0068		      data2   0x1 // data2 1
      0E         006A		      data1   0xE // data1 14
      01         006B		      data1   0x1 // data1 1
00000000         006C		      data4   P.AAL
			$STR$PATTERN:
    000A         0070		      data2   0xA // data2 10
      0E         0072		      data1   0xE // data1 14
      01         0073		      data1   0x1 // data1 1
00000000         0074		      data4   P.AAM
			$STR$PATTERN:
    000A         0078		      data2   0xA // data2 10
      0E         007A		      data1   0xE // data1 14
      01         007B		      data1   0x1 // data1 1
00000000         007C		      data4   P.AAN
			$STR$PATTERN:
    0001         0080		      data2   0x1 // data2 1
      0E         0082		      data1   0xE // data1 14
      01         0083		      data1   0x1 // data1 1
00000000         0084		      data4   P.AAO
			$STR$PATTERN:
    0001         0088		      data2   0x1 // data2 1
      0E         008A		      data1   0xE // data1 14
      01         008B		      data1   0x1 // data1 1
00000000         008C		      data4   P.AAP
			$STR$PATTERN:
    000B         0090		      data2   0xB // data2 11
      0E         0092		      data1   0xE // data1 14
      01         0093		      data1   0x1 // data1 1
00000000         0094		      data4   P.AAQ

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 93
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

			$STR$PATTERN:
    0001         0098		      data2   0x1 // data2 1
      0E         009A		      data1   0xE // data1 14
      01         009B		      data1   0x1 // data1 1
00000000         009C		      data4   P.AAR
				      .psect _XPO$PLIT, CON, LCL, NOSHR, NOEXE, NOWRT, NOVEC
			P.AAB:
    252A         0000		      data2   0x252A // data2 9514
			P.AAC:
    252A         0004		      data2   0x252A // data2 9514
			P.AAD:
    252A         0008		      data2   0x252A // data2 9514
			P.AAE:
    252A         000C		      data2   0x252A // data2 9514
			P.AAF:
44434241         0010		      string  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz$_*0123456789"
48474645         0014
4C4B4A49         0018
504F4E4D         001C
54535251         0020
58575655         0024
62615A59         0028
66656463         002C
6A696867         0030
6E6D6C6B         0034
7271706F         0038
76757473         003C
7A797877         0040
302A5F24         0044
34333231         0048
38373635         004C
      39         0050

			P.AAG:
      22         0054		      data1   0x22 // data1 34
			P.AAH:
      2A         0058		      data1   0x2A // data1 42
			P.AAI:
      2A         005C		      data1   0x2A // data1 42
			P.AAJ:
  293E5D         0060		      string  "]>)"

			P.AAK:
      2A         0064		      data1   0x2A // data1 42
			P.AAL:
      2C         0068		      data1   0x2C // data1 44
			P.AAM:
33323130         006C		      string  "0123456789"
37363534         0070
    3938         0074

			P.AAN:
33323130         0078		      string  "0123456789"
37363534         007C
    3938         0080

			P.AAO:

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 94
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

      2A         0084		      data1   0x2A // data1 42
			P.AAP:
      2A         0088		      data1   0x2A // data1 42
			P.AAQ:
33323130         008C		      string  "0123456789*"
37363534         0090
  2A3938         0094

			P.AAR:
      2A         0098		      data1   0x2A // data1 42
				      .section .data
				      .type   XST$VALIDATE, @function 
				      .global  XST$VALIDATE
				      .section .data
				      .type   SYS$FILESCAN, @function 
				      .global  SYS$FILESCAN
				      .section .data
				      .type   OTS$MOVE, @function 
				      .global  OTS$MOVE
				      .section .data
				      .type   OTS$FILL, @function 
				      .global  OTS$FILL
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$FREE_TEMP, @function 
				      .global  XST$FREE_TEMP
				      .global XPO$STATE
				      .global XPO$SCAN_SPEC
				      .global XPO$NEXT_FIELD
				      .global XPO$FIELD_DELIM
				      .global XPO$STATE
				      .global XPO$SCAN_SPEC
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .global XPO$STATE
				      .global XPO$SCAN_SPEC
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN

XPARSE                          Machine Code Listing             4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 95
V1.2-23                         XPO$LAST_PARSE                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

				      .section .data
				      .type   XPO$LAST_PARSE, @function 
				      .global  XPO$LAST_PARSE
				      .global XPO$STATE
				      .global XPO$SCAN_SPEC
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .global XPO$FIELD_DELIM
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$BINARY, @function 
				      .global  XST$BINARY
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$BINARY, @function 
				      .global  XST$BINARY
				      .section .data
				      .type   XPO$LAST_PARSE, @function 
				      .global  XPO$LAST_PARSE
				      .global XPO$SCAN_SPEC
				      .global XPO$FIELD_DELIM
				      .global XPO$SCAN_SPEC
				      .global XPO$NEXT_FIELD
				      .global XPO$STATE
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN


;				Library Statistics
;
;					     -------- Symbols --------	    Pages
;	File				     Total    Loaded   Percent      Mapped
;
;  DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14
;					       590       119        20       270
;  DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14

                                Source Listing                   4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 96
                                                                19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

;					        91        37        40        27




                                Source Listing                   4-FEB-2004 11:01:39  BLISS-32I T1.1-053                Page 97
                                Source Listing                  19-MAR-2002 10:12:15  [LASTOVICA.XPORT.VMSGEN]XPARSE.BLI;1

COMMAND LINE:

BLISSXPARSE/VARIANT=3/LIST/DEBUG
