                                XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 1
                                                                19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    0	      1 MODULE XOPEN (	IDENT = 'X1.2-45'		%TITLE 'XPO$OPEN - XPORT File Open'
    0	      2 		%BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) )
    0	      3 		%BLISS36( ,ENTRY( XPO$OPEN ),OTS='' )
    0	      4 		) =
    0	      5 BEGIN
    1	      6 
    1	      7 !
    1	      8 !			  COPYRIGHT (c) 1982 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 is the XPORT file open module.
    1	     33 !
    1	     34 ! ENVIRONMENT:  User mode - multiple host operating/file systems
    1	     35 !
    1	     36 ! AUTHORS:  Ward Clark,		CREATION DATE:  26 June 1978
    1	     37 !	    Linda Duffell
    1	     38 !
    1	     39 !--

XOPEN                           XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 2
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    1	     41 !
    1	     42 ! TABLE OF CONTENTS:
    1	     43 !
    1	     44 
    1	     45 FORWARD ROUTINE
    1	     46     XPO$OPEN;						! XPORT File Open Routine
    1	     47 
    1	     48 !
    1	     49 ! INCLUDE FILES:
    1	     50 !
    1	     51 
    1	     52 LIBRARY  'XPORT' ;					! Public XPORT control block and macro definitions
    1	     54 LIBRARY  'XPOSYS' ;					! Internal XPORT macro definitions
    1	     56 
    1	     57      $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	     58 
    1	     59 %IF $TOPS10 %THEN
U   1	     60 REQUIRE  'XT10' ;					! TOPS-10 I/O interface macros
U   1	     61 %FI
    1	     62 
    1	     63 %IF $TOPS20 %THEN
U   1	     64 REQUIRE  'XT20' ;					! TOPS-20 I/O interface macros
U   1	     65 %FI
    1	     66 
    1	     67 %IF $VMS %THEN
    1	     68 REQUIRE  'XVMS' ;					! XPORT-specific VAX/VMS interface definitions
    1	     98 %FI
    1	     99 
    1	    100 %IF $11M %THEN
U   1	    101 REQUIRE  'XRSX' ;					! XPORT-specific RSX-11 and FCS interface definitions
U   1	    102 %FI
    1	    103 
    1	    104 %IF $RSTS %THEN
U   1	    105 REQUIRE  'XRSTS' ;					! RSTS/E system interface definitions
U   1	    106 %FI
    1	    107 
    1	    108 %IF $RT11 %THEN
U   1	    109 REQUIRE  'XRT11'  ;					! RT-11 system interface definitions
U   1	    110 %FI
    1	    111 
    1	    112 !
    1	    113 ! MACROS:
    1	    114 !
    1	    115 
    1	    116 !
    1	    117 ! EQUATED SYMBOLS:
    1	    118 !
    1	    119 
    1	    120 LITERAL
    1	    121     yes = 1,						! Used to turn an indicator on
    1	    122     no = 0;						! Used to turn an indicator off
    1	    123 
    1	    124 %IF $VMS %THEN
    1	    125 LITERAL
    1	    126     max_file_spec = 255,				! Maximum length of a file specification

XOPEN                           XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 3
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    1	    127     bytes_per_block = 512,				! Size of a Files-11 disk block
    1	    128     binary_record_len = 512,				! Default length of a binary file "record"
    1	    129     io_buffer_size = 512;				! Default I/O buffer size
    1	    130 
    1	    131 %FI
    1	    132 
    1	    133 %IF $11M %THEN
U   1	    134 LITERAL
U   1	    135     bytes_per_block = 512,				! Size of a Files-11 disk block
U   1	    136     default_alloc = 5;					! Standard file allocation size
U   1	    137 %FI
    1	    138 
    1	    139 !
    1	    140 ! PSECT DECLARATIONS:
    1	    141 !
    1	    142 
    1	    143     $XPO_PSECTS						! Declare XPORT PSECT names and attributes
    1	    144 
    1	    145 !
    1	    146 ! OWN STORAGE:
    1	    147 !
    1	    148 
    1	    149 !
    1	    150 ! EXTERNAL REFERENCES:
    1	    151 !
    1	    152 
    1	    153 %IF $TOPS20 OR $RT11 %THEN
U   1	    154 EXTERNAL LITERAL
U   1	    155     xpo$k_max_chan;					! Maximum I/O channel/JFN number
U   1	    156 %FI
    1	    157 
    1	    158 %IF $TOPS20 %THEN
U   1	    159 EXTERNAL
U   1	    160     X20$BUFFER_CB :  BLOCKVECTOR[ ,3 ];			! Buffer control blocks for each channel
U   1	    161 %FI
    1	    162 
    1	    163 %IF $TOPS10 %THEN
U   1	    164 EXTERNAL ROUTINE
U   1	    165     X10$CHAN_ASSIGN,					! Channel assignment routine
U   1	    166     X10$ASCII_6BIT,					! ASCII to 6-bit conversion routine
U   1	    167     X10$ENTER_LOOKUP;					! Setup routine for ENTER/LOOKUP block
U   1	    168 %FI
    1	    169 
    1	    170 %IF $TOPS20 %THEN
U   1	    171 EXTERNAL ROUTINE
U   1	    172     X20$IN,						! File input routine
U   1	    173     X20$OUT,						! File output routine
U   1	    174     X20$ERROR :  NOVALUE;				! TOPS-20 to XPORT completion code conversion routine
U   1	    175 %FI
    1	    176 
    1	    177 %IF $VMS %THEN
    1	    178 EXTERNAL ROUTINE
    1	    179     XPO$RMS_PARSE,					! RMS file specification resultion routine
    1	    180     XPO$RMS_ERROR :  NOVALUE,				! RMS-to-XPORT completion code conversion routine
    1	    181     XPO$RMS_CLEANUP;					! RMS control block cleanup routine
    1	    182 %FI
    1	    183 

XOPEN                           XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 4
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    1	    184 %IF $11M %THEN
U   1	    185 EXTERNAL
U   1	    186     XRSX$EVENT_FLAG;					! XPORT QIO/FCS event flag number
U   1	    187 
U   1	    188 EXTERNAL ROUTINE
U   1	    189     XRSX$SPEC_SETUP,					! File-spec setup and LUN assignment routine
U   1	    190     XRSX$DSPT_SETUP :  NOVALUE,				! FCS DSPT setup routine
U   1	    191     XRSX$XOPEN,						! FCS file open routine
U   1	    192     XRSX$RSLT_FIXUP,					! Resultant file-spec fixup routine
U   1	    193     XRSX$IO_ERROR :  NOVALUE,				! FCS-to-XPORT completion code conversion routine
U   1	    194     XRSX$CLEANUP;					! QIO/FCS cleanup routine
U   1	    195 %FI
    1	    196 
    1	    197 %IF $RSTS %THEN
U   1	    198 EXTERNAL ROUTINE
U   1	    199     XRST$SPEC_SETUP,					! File-spec setup routine
U   1	    200     XRST$ASSIGN_CH,					! Channel assignment routine
U   1	    201     XRST$OUT,						! File output routine
U   1	    202     XRST$ERROR :  NOVALUE,				! RSTS-to-XPORT completion code conversion routine
U   1	    203     XRST$FIXUP;						! Channel assignment cleanup routine
U   1	    204 %FI
    1	    205 
    1	    206 %IF $RT11 %THEN
U   1	    207 EXTERNAL
U   1	    208     XPO$CHANNELS :  BITVECTOR,				! I/O channel assignment vector
U   1	    209     XRT$BUFFER_CB :  BLOCKVECTOR[ ,4 ];			! Buffer control blocks for each channel
U   1	    210 
U   1	    211 EXTERNAL ROUTINE
U   1	    212     XRT$ASCII_RAD50 :  NOVALUE,				! ASCII to RADIX-50 conversion routine
U   1	    213     XRT$CHK_BACKGRD,					! Background job verification
U   1	    214     XRT$FETCH,						! Fetch handler routine
U   1	    215     XRT$OUT;						! File output routine
U   1	    216 %FI

XOPEN                           XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 5
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    1	    218 GLOBAL ROUTINE XPO$OPEN ( iob, success_action, failure_action ) =
    1	    219 
    1	    220 !++
    1	    221 !
    1	    222 ! FUNCTIONAL DESCRIPTION:
    1	    223 !
    1	    224 !	This routine is the XPORT file open routine.  It performs the
    1	    225 !	following functions:
    1	    226 !
    1	    227 !	    * establish IOB defaults
    1	    228 !
    1	    229 !	    * check for missing or conflicting IOB information
    1	    230 !
    1	    231 !	    * build a resultant file specification
    1	    232 !
    1	    233 !	    * open the specified file
    1	    234 !
    1	    235 ! FORMAL PARAMETERS:
    1	    236 !
    1	    237 !	iob - address of an IOB
    1	    238 !	success_action - address of success action routine
    1	    239 !	failure_action - address of failure action routine
    1	    240 !
    1	    241 ! IMPLICIT INPUTS:
    1	    242 !
    1	    243 !	Information contained in or pointed to by the caller's IOB
    1	    244 !
    1	    245 ! IMPLICIT OUTPUTS:
    1	    246 !
    1	    247 !	Various fields in the caller's IOB are updated to reflect
    1	    248 !	the results of the requested I/O function
    1	    249 !
    1	    250 ! COMPLETION CODES:  (also returned in IOB$G_COMP_CODE)
    1	    251 !
    1	    252 !	XPO$_NORMAL - the file was successfully opened
    1	    253 !	XPO$_CREATED - the file was successfully created
    1	    254 !
    1	    255 !	XPO$_BAD_DEVICE - invalid device specified (TOPS-10)
    1	    256 !	XPO$_BAD_IO_OPT - invalid I/O option (e.g., binary terminal I/O) (TOPS-10, TOPS-20, 11M, RSTS, ,RT-11)
    1	    257 !	XPO$_BAD_IOB - the IOB is invalid
    1	    258 !		(IOB$G_2ND_CODE = XPO$_CONFLICT - conflicting information
    1	    259 !				or XPO$_BAD_LENGTH - invalid IOB length)
    1	    260 !	XPO$_BAD_LOGIC - internal logic error detected
    1	    261 !	XPO$_BAD_RSLT - invalid resultant file specification
    1	    262 !		(IOB$G_2ND_CODE = completion code from $XPO_PARSE_SPEC (TOPS-10, RT-11)
    1	    263 !				or completion code from $STR_COPY (VMS)
    1	    264 !				or completion code from XRSX$RSLT_FIXUP (11M))
    1	    265 !	XPO$BAD_CONCAT - concatenated input file-CONCAT cannot be saved
    1	    266 !		(IOB$G_2ND_CODE = completion code from $STR_COPY or $XPO_FREE_MEM)
    1	    267 !	XPO$_BAD_NAME - no file name was specified (RT-11)
    1	    268 !	XPO$_BAD_SIZE - invalid file size specified (RT-11)
    1	    269 !	XPO$_BAD_SPEC - invalid file specification
    1	    270 !		(IOB$G_2ND_CODE = XPO$_BAD_LENGTH - invalid length (TOPS-20)
    1	    271 !				or completion code from $STR_COPY or $STR_SCAN)
    1	    272 !	XPO$_FOREGROUND - this is a foreground job (RT-11)
    1	    273 !	XPO$_FREE_MEM - error deallocating IOB-related memory
    1	    274 !		(IOB$G_2ND_CODE = completion code from $XPO_FREE_MEM)

XOPEN                           XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 6
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    1	    275 !	XPO$_GET_MEM - insufficient memory for RMS control blocks or buffers (VMS)
    1	    276 !		( IOB$G_2ND_CODE = completion code from $XPO_GET_MEM )
    1	    277 !	XPO$_IO_ERROR - I/O error (TOPS-10)
    1	    278 !	XPO$_NO_APPEND - append function not allowed (RT-11)
    1	    279 !	XPO$_NO_CHANNEL - no I/O channel is available (TOPS-10, TOPS-20, RT-11)
    1	    280 !	XPO$_NO_FILE - file not found (RT-11)
    1	    281 !	XPO$_NO_MEMORY - insufficient memory for buffers (TOPS-10, RSTS, RT-11)
    1	    282 !	XPO$_NO_SEQ - sequenced files not allowed (RSTS, RT-11)
    1	    283 !	XPO$_NO_SPACE - insufficient space (RT-11)
    1	    284 !	XPO$_OPEN - the file is already open
    1	    285 !	failure completion codes from $XPO_VALID_IOB
    1	    286 !	failure completion code from $T10_ERROR (TOPS-10)
    1	    287 !	failure completion codes from $XPO_BUILD_SPEC (TOPS-10, TOPS-20, RT-11)
    1	    288 !	failure completion codes from X20$ERROR (TOPS-20)
    1	    289 !	failure completion codes from X20$IN (TOPS-20)
    1	    290 !	failure completion codes from X20$OUT (TOPS-20)
    1	    291 !	failure completion codes from XPO$RMS_PARSE (VMS)
    1	    292 !	failure completion codes from XPO$RMS_ERROR (VMS)
    1	    293 !	failure completion codes from XRSX$SPEC_SETUP (11M)
    1	    294 !	failure completion codes from XRSX$IO_ERROR (11M)
    1	    295 !	failure completion codes from XRSX$CLEANUP (11M)
    1	    296 !	failure completion codes from XRST$SPEC_SETUP (RSTS)
    1	    297 !	failure completion codes from XRST$ASSIGN_CH (RSTS)
    1	    298 !	failure completion codes from XRST$ERROR (RSTS)
    1	    299 !	failure completion codes from XRT$FETCH (RT-11)
    1	    300 !
    1	    301 ! SIDE EFFECTS:
    1	    302 !
    1	    303 !	None
    1	    304 !
    1	    305 !--
    1	    306 
    1	    307     BEGIN
    2	    308 
    2	    309     MAP
    2	    310 	iob :  REF $XPO_IOB();				! Redefine the IOB parameter
    2	    311 
    2	    312     LOCAL
    2	    313 	current_iob : REF $XPO_IOB();			! Temporary IOB pointer
    2	    314 
    2	    315 %IF $TOPS10 OR $TOPS20 OR $RT11 %THEN
U   2	    316     LOCAL
U   2	    317 	channel_open;					! Channel open indicator
U   2	    318 %FI
    2	    319 
    2	    320 %IF $TOPS20 OR $RT11 %THEN
U   2	    321     LOCAL
U   2	    322 	channel_assign;					! Channel assignment indicator
U   2	    323 %FI
    2	    324 
    2	    325 %IF $VMS %THEN
    2	    326     LOCAL
    2	    327 	header_xab :  REF $XABFHC_DECL;			! Address of file header XAB
    2	    328 %FI
    2	    329 
    2	    330 %IF $RT11 %THEN
U   2	    331     LOCAL

XOPEN                           XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 7
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	    332         error_code,					! Error condition indicator
U   2	    333         lookup_args :  $XRT_LOOK_ARGS;			! RT-11 LOOKUP/ENTER argument list
U   2	    334 %FI
    2	    335 
    2	    336 !
    2	    337 ! XPORT routine initialization.
    2	    338 !
    2	    339 
    2	    340     $XPO_MAIN_BEGIN( IO, FIXUP_IOB )			! Define the MAIN_BLOCK code block
    3	    341 
    3	    342 
    3	    343 %IF $TOPS10 %THEN
U   3	    344     channel_open = no;					! Indicate that no channel has been opened.
U   3	    345 %FI							
    3	    346 
    3	    347 %IF $TOPS20 OR $RT11 %THEN
U   3	    348     channel_assign = no;				! Indicate that no channel has been assigned
U   3	    349     channel_open = no;					! or opened.
U   3	    350 %FI
    3	    351 
    3	    352 %IF $VMS %THEN
    3	    353     header_xab = 0;					! Initialize the file header XAB address.
    3	    354 %FI
    3	    355 
    3	    356 %IF $RT11 %THEN
U   3	    357     error_code = no;					! Indicate that an error has not occurred.
U   3	    358 %FI
    3	    359 
    3	    360 !
    3	    361 ! Establish IOB defaults.
    3	    362 !
    3	    363 
    3	    364     $XPO_VALID_IOB( .iob );				! Validate or default caller's file-spec and prompt string.
    3	    365 
    3	    366     IF .iob[IOB$V_OVERWRITE] OR .iob[IOB$V_APPEND]	! If overwrite/extend existing file is requested
    3	    367     THEN						!
    3	    368 	iob[IOB$V_OUTPUT] = yes;			! assume this is an output file.
    3	    369 
    3	    370     IF NOT (.iob[IOB$V_INPUT] OR .iob[IOB$V_OUTPUT])	! If neither INPUT or OUTPUT was specified
    4	    371 	AND ($STR_EQL( STRING1 = .iob[IOB$A_FILE_SPEC],	! and the user's "terminal" was specified,
P   4	    372 			STRING2 = $XPO_INPUT,		!
P   4	    373 			FAILURE = 0 )			!
    5	    374 %IF $VMS %THEN						!
    5	    375 	OR $STR_EQL( STRING1 = .iob[IOB$A_FILE_SPEC],	!
P   4	    376 			STRING2 = $XPO_OUTPUT,		!
P   4	    377 			FAILURE = 0 ) OR		!
    4	    378 	    $STR_EQL( STRING1 = .iob[IOB$A_FILE_SPEC],	!
P   4	    379 			STRING2 = $XPO_ERROR,		!
P   4	    380 			FAILURE = 0 )			!
    5	    381 %FI		)					!
    4	    382     THEN						!
    3	    383 	BEGIN						!
    4	    384 	iob[IOB$V_INPUT] = yes;				! allow both input and output.
    4	    385 	iob[IOB$V_OUTPUT] = yes;
    4	    386 	END;
    3	    387 
    3	    388     IF NOT .iob[IOB$V_OUTPUT]				! If this is not an output file,

XOPEN                           XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 8
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    3	    389     THEN						!
    3	    390 	iob[IOB$V_INPUT] = yes;				! assume that it is an input file.
    3	    391 
    3	    392     IF .iob[IOB$V_SEQUENCED] OR				! If sequenced record format is requested
    3	    393 	NOT (.iob[IOB$V_BINARY] OR .iob[IOB$V_STREAM]   ! or if binary or stream or random I/O
    4	    394                                 OR .iob[IOB$V_RANDOM] )	! are not requested,
    4	    395     THEN						!
    3	    396 	iob[IOB$V_RECORD] = yes;			! assume that this is a record format file.
    3	    397 
    3	    398 !
    3	    399 ! Setup initial IOB field values.
    3	    400 !
    3	    401 
    3	    402     iob[IOB$V_CLOSED] = no;				! Turn off the file-closed indicator.
    3	    403 
    3	    404     IF .iob[IOB$H_PAGE_NUMB] EQL 0
    3	    405     THEN
    3	    406 	iob[IOB$H_PAGE_NUMB] = 1;
    3	    407 
    3	    408 !
    3	    409 ! Check the IOB for invalid or conflicting information.
    3	    410 !
    3	    411 
    3	    412 							! Return an error code if the IOB is invalid
    3	    413 							! for one of the following reasons:
    3	    414 
    3	    415     IF .iob[IOB$V_OPEN]					!    the file is already open
    3	    416     THEN
    3	    417 	$XPO_QUIT( OPEN );
    3	    418 
    3	    419     IF (.iob[IOB$V_BINARY] AND				!    both binary and record data
    4	    420 		.iob[IOB$V_RECORD]) OR			!
    3	    421 	(.iob[IOB$V_BINARY] AND				!    both binary and stream data
    4	    422 		.iob[IOB$V_STREAM]) OR			!
    3	    423 	(.iob[IOB$V_RANDOM] AND				!    both random and record data
    4	    424 		.iob[IOB$V_RECORD]) OR			!
    3	    425 	(.iob[IOB$V_RANDOM] AND				!    both random and stream data
    4	    426 		.iob[IOB$V_STREAM]) OR			!
    3	    427         (.iob[IOB$V_STREAM] AND .iob[IOB$V_RECORD]) OR	!    both stream and record format
    3	    428 	(.iob[IOB$G_REC_SIZE] NEQ 0 AND			!    fixed record length and not record format
    4	    429 			    NOT .iob[IOB$V_RECORD])
    4	    430     THEN
    3	    431 	$XPO_QUIT( BAD_IOB, CONFLICT );
    3	    432 
    3	    433     IF .iob[IOB$V_REMEMBER]				!    OPTION=REMEMBER specified
    3	    434     THEN
    3	    435 	$XPO_QUIT( BAD_IO_OPT );
    3	    436 
    3	    437 !+
    3	    438 !   Random access i/o has been implemented and tested for VMS.  Though some code is in place to
    3	    439 !   support random access i/o for TOPS-20 as well, it is NOT COMPLETE and is known to not be
    3	    440 !   reliable.  Therefor, a conditional check for use of the random attribute is in XPORT.REQ and
    3	    441 !   XOPEN.BLI.  When the TOPS20 code is completed and tested, this conditional can be changed to 
    3	    442 !   	" %IF NOT $VMS OR NOT $TOPS20 %THEN "  for XOPEN.BLI
    3	    443 !   	" %IF NOT %BLISS(BLISS32) OR NOT %BLISS(BLISS36) %THEN "  for XPORT.REQ
    3	    444 !   
    3	    445 !   See also:

XOPEN                           XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 9
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    3	    446 !   		XPORT.REQ  -  $XPO_OPEN definition, random disallowed.
    3	    447 !   		XOPEN.BLI  -  $IOB initialization, random disallowed.
    3	    448 !   		XGET.BLI  -  comments in 'TOPS-10/TOPS-20 Stream-mode and Binary-mode GET'
    3	    449 !   		XPUT.BLI  -  comments in 'TOPS-10/TOPS-20/RT-11 File PUT'
    3	    450 !-
    3	    451 %IF NOT $VMS %THEN
U   3	    452 
U   3	    453     IF .iob[IOB$V_RANDOM]
U   3	    454     THEN
U   3	    455 	$XPO_QUIT( BAD_ATTR, NO_SUPPORT );
U   3	    456 %FI
    3	    457 
    3	    458 !
    3	    459 ! Complete IOB setup.
    3	    460 !
    3	    461 
    3	    462     BEGIN
    4	    463     BIND
    4	    464 	concat = iob[IOB$T_CONCAT] :  $STR_DESCRIPTOR( CLASS = DYNAMIC_BOUNDED ),
    4	    465 	input_string = iob[IOB$T_STRING] :  $STR_DESCRIPTOR();
    4	    466 
    4	    467     IF .iob[IOB$V_INPUT]				! Input IOB setup:
    4	    468     THEN						!
    4	    469 	BEGIN						!
    5	    470 	iob[IOB$V_SEQUENCED] = no;			!    assume an unsequenced file
    5	    471 	IF .iob[IOB$V_RECORD] OR .iob[IOB$V_STREAM]	!
    5	    472 	THEN						!
    5	    473 	    input_string[STR$B_DTYPE] = STR$K_DTYPE_T	!    character input if RECORD or STREAM mode
    5	    474 	ELSE						!
    5	    475 	    input_string[STR$B_DTYPE] = XPO$K_DTYPE_BU;	!
    5	    476 	input_string[STR$B_CLASS] = STR$K_CLASS_DB;	!    input string will be DYNAMIC_BOUNDED
    5	    477 	END;
    4	    478 
    4	    479     IF NOT .iob[IOB$V_AUTO_CONC]			! Concatenated input file-spec setup:
    4	    480     THEN
    4	    481 	BEGIN
    5	    482 	IF NOT .iob[IOB$V_OUTPUT] AND
    5	    483 	    $STR_SCAN( STRING = .iob[IOB$A_FILE_SPEC],
P   5	    484 			FIND = '+',
P   5	    485 			FAILURE = 0 )
    6	    486 	THEN
    5	    487 	    BEGIN
    6	    488 	    iob[IOB$V_CONC_SPEC] = yes;			!    Indicate concatenated input file-spec.
    6	    489 
    6	    490 	    IF .iob[IOB$V_RANDOM]			! Random access does not allow concatenated
    6	    491 	    THEN					! file specs
    6	    492 	        $XPO_QUIT( BAD_IOB, CONFLICT );
    6	    493 
    6	    494 	    $STR_DESC_INIT( DESCRIPTOR = concat,	!    First setup the concatenated file-spec descriptor
P   6	    495 			    CLASS = DYNAMIC );		!    to be a DYNAMIC descriptor.
    6	    496 
    6	    497 	    $XPO_IF_NOT( $STR_COPY(			!    Save the caller's concatenated file-spec.
P   6	    498 				STRING = .iob[IOB$A_FILE_SPEC],
P   6	    499 				TARGET = concat,
P   6	    500 				FAILURE = 0 ) )
    8	    501 	    THEN
    7	    502 		$XPO_QUIT( BAD_SPEC, (.$XPO_STATUS) );

XOPEN                           XPO$OPEN - XPORT File Open       4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 10
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    6	    503 
    6	    504 	    iob[IOB$A_FILE_SPEC] = concat;		!    Update the primary file-spec field.
    6	    505 
    6	    506 	    concat[STR$B_CLASS] = STR$K_CLASS_DB;	!    Change the descriptor to DYNAMIC_BOUNDED.
    6	    507 	    concat[STR$H_MAXLEN] = .concat[STR$H_LENGTH];
    6	    508 	    concat[STR$H_LENGTH] = 0;
    6	    509 	    concat[STR$H_PFXLEN] = 0;
    6	    510 
    6	    511 	    $STR_SCAN( REMAINDER = concat,		!    Find the end of the 1st file specification.
P   6	    512 			STOP = '+',
P   6	    513 			SUBSTRING = concat,
P   6	    514 			FAILURE = 0 );
    6	    515 	    END;
    5	    516 	END
    5	    517     ELSE						! Internal (automatic) open:
    4	    518 	BEGIN
    5	    519 	concat[STR$H_LENGTH] =				!    Bypass the "+" which follows the last file-spec.
    5	    520 			.concat[STR$H_LENGTH] + 1;
    5	    521 
    5	    522 	$XPO_IF_NOT( $STR_SCAN( REMAINDER = concat,	!    Find the next file-spec.
P   5	    523 				STOP = '+',
P   5	    524 				SUBSTRING = concat,
P   5	    525 				FAILURE = 0 ) )
    7	    526 	THEN
    6	    527 	    $XPO_QUIT( BAD_SPEC, (.$XPO_STATUS) );
    5	    528 	END;
    4	    529     END;						! End of BIND declaration block
    3	    530 
    3	    531 !+
    3	    532 !
    3	    533 !	System-specific OPEN processing follows.
    3	    534 !
    3	    535 !-

XOPEN                           TOPS-10 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 11
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    3	    537 %TITLE 'TOPS-10 File Open'
    3	    538 %IF $TOPS10 %THEN
U   3	    539 
U   3	    540 !+
U   3	    541 !
U   3	    542 !	TOPS-10 OPEN Processing
U   3	    543 !
U   3	    544 !-
U   3	    545 
U   3	    546     BEGIN
U   3	    547     LOCAL
U   3	    548 	file_parse :  $XPO_SPEC_BLOCK,			! Current file-spec parse block
U   3	    549 	open_args :  $T10_OPEN_ARGS,			! TOPS-10 OPEN argument list
U   3	    550 	lookup_args :  $T10_LOOK_ARGS;			! TOPS-10 LOOKUP argument list
U   3	    551 
U   3	    552     BIND						! Redefine several spec-block fields.
U   3	    553 	device = file_parse[XPO$T_DEVICE] :  $STR_DESCRIPTOR();
U   3	    554 
U   3	    555 !
U   3	    556 ! Build a resultant file specification from the specifications passed by the caller.
U   3	    557 !
U   3	    558 
U   3	    559     $XPO_BUILD_SPEC( .iob );
U   3	    560 
U   3	    561 !
U   3	    562 ! Bypass opening the user's terminal.
U   3	    563 !
U   3	    564 
U   3	    565     IF .iob[IOB$V_TERMINAL]				! If this is the user's terminal,
U   3	    566     THEN						!
U   3	    567 	BEGIN						!
U   3	    568 	IF .iob[IOB$V_BINARY]				! return an error code if binary I/O is requested
U   3	    569 	THEN						!
U   3	    570 	    $XPO_QUIT( BAD_IO_OPT );			!
U   3	    571 							!
U   3	    572 	$XPO_QUIT( NORMAL );				! or return a success code to the caller.
U   3	    573 	END;
U   3	    574 
U   3	    575 !
U   3	    576 ! Further validate the caller's IOB.
U   3	    577 !
U   3	    578 
U   3	    579     IF .iob[IOB$V_INPUT] AND .iob[IOB$V_OUTPUT]		! If the file is being opened for both input and output,
U   3	    580     THEN						!
U   3	    581 	$XPO_QUIT( BAD_IOB, CONFLICT );			! return error codes to the caller.
U   3	    582 
U   3	    583 !
U   3	    584 ! Parse the resultant file-specification into its individual components.
U   3	    585 !
U   3	    586 
U   3	    587     $XPO_IF_NOT( $XPO_PARSE_SPEC(			! Parse the file-specification.
U   3	    588 		FILE_SPEC = iob[IOB$T_RESULTANT],
U   3	    589 		SPEC_BLOCK = file_parse,
U   3	    590 		FAILURE = 0 ) )
U   3	    591     THEN
U   3	    592 	$XPO_QUIT( BAD_RSLT, (.$XPO_STATUS) );
U   3	    593 

XOPEN                           TOPS-10 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 12
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   3	    594 !
U   3	    595 ! Assign a TOPS-10 I/O channel to this file.
U   3	    596 !
U   3	    597 
U   3	    598     IF NOT X10$CHAN_ASSIGN( .iob )
U   3	    599     THEN
U   3	    600     	$XPO_QUIT();
U   3	    601 
U   3	    602 !
U   3	    603 ! Allocate an XPORT TOPS10 control block.
U   3	    604 !
U   3	    605 
U   3	    606     $XPO_IF_NOT( $XPO_GET_MEM( FULLWORDS = XT10$K_BLK_LEN,
U   3	    607     				RESULT = iob[IOB$A_BUFFER_CB],
U   3	    608     				FILL = 0,
U   3	    609     				FAILURE = 0 ) )
U   3	    610     THEN
U   3	    611     	$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   3	    612 
U   3	    613     BEGIN
U   3	    614     BIND
U   3	    615     	t10_block = .iob[IOB$A_BUFFER_CB] :  $XT10_BLOCK,
U   3	    616     	buffer_cb = t10_block[XT10$Z_CB] : VECTOR,
U   3	    617     	extra_buffer_cb = t10_block[XT10$Z_XTRA_CB] :  VECTOR;
U   3	    618 !
U   3	    619 ! Setup the OPEN argument list.
U   3	    620 !
U   3	    621 
U   3	    622     INCR index FROM 0 TO OPEN$K_ARG_LEN-1 DO		! Zero the open argument list.
U   3	    623 	open_args[.index,0,%BPVAL,0] = 0;
U   3	    624 
U   3	    625     IF .iob[IOB$V_BINARY]				! If this is a binary file,
U   3	    626     THEN						!
U   3	    627 	open_args[OPEN$H_STATUS] = $IOBIN		! set binary data mode.
U   3	    628     ELSE
U   3	    629 	open_args[OPEN$H_STATUS] = $IOASC;		! Otherwise, set ASCII data mode.
U   3	    630 
U   3	    631     open_args[OPEN$T_DEVICE] =				! Convert the device name to 6-bit and put it
U   3	    632 	    X10$ASCII_6BIT(				! in the argument list.
U   3	    633 		.device[STR$H_LENGTH] - 1,
U   3	    634 		.device[STR$A_POINTER] );
U   3	    635 
U   3	    636     IF .iob[IOB$V_INPUT]				! If this is an input file
U   3	    637     THEN						!
U   3	    638     	open_args[OPEN$A_IN_BCB] = buffer_cb		! setup the input buffer control block address
U   3	    639     ELSE						! If this is an output file,
U   3	    640 	BEGIN						!
U   3	    641 	open_args[OPEN$A_OUT_BCB] = buffer_cb;		! setup the output buffer control block address
U   3	    642 
U   3	    643 	IF .iob[IOB$V_APPEND] AND .iob[IOB$V_RECORD]	! If a record-mode file is being extended,
U   3	    644 	THEN						!
U   3	    645 	    open_args[OPEN$A_IN_BCB] =			! setup the input buffer control block address
U   3	    646 			extra_buffer_cb;		! since an initial input operation will be needed.
U   3	    647 	END;
U   3	    648 
U   3	    649 !
U   3	    650 ! Open the assigned channel.

XOPEN                           TOPS-10 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 13
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   3	    651 !
U   3	    652 
U   3	    653     IF $T10_OPEN( .iob[IOB$H_CHANNEL], open_args )	! If the assigned channel can be opened,
U   3	    654     THEN						!
U   3	    655 	channel_open = yes				! indicate that a channel has been opened.
U   3	    656     ELSE
U   3	    657 	$XPO_QUIT( BAD_DEVICE );			! Otherwise, return an error code to the caller.
U   3	    658 
U   3	    659 !
U   3	    660 ! Generate our own I/O buffers( 2 ).
U   3	    661 !
U   3	    662 
U   3	    663     $XPO_IF_NOT( $XPO_GET_MEM( FULLWORDS = X10$K_BUFFER_SZ + X10$K_HEADER_SZ,
U   3	    664     				RESULT = t10_block[XT10$A_BUFFER1],
U   3	    665     				FILL = 0,
U   3	    666     				FAILURE = 0 ) )
U   3	    667     THEN
U   3	    668     	$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   3	    669 
U   3	    670     $XPO_IF_NOT( $XPO_GET_MEM( FULLWORDS = X10$K_BUFFER_SZ + X10$K_HEADER_SZ,
U   3	    671     				RESULT = t10_block[XT10$A_BUFFER2],
U   3	    672     				FILL = 0,
U   3	    673     				FAILURE = 0 ) )
U   3	    674     THEN
U   3	    675     	$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   3	    676 
U   3	    677 !
U   3	    678 ! Indicate to the monitor that we are generating our own buffers.
U   3	    679 !
U   3	    680 
U   3	    681     BEGIN
U   3	    682     BIND
U   3	    683     	buffer1 = .t10_block[XT10$A_BUFFER1] :  $XT10_HEADER_BLK,
U   3	    684     	buffer2 = .t10_block[XT10$A_BUFFER2] :  $XT10_HEADER_BLK;
U   3	    685 
U   3	    686     buffer_cb[$BFADR] = X10$K_USE_BIT +			! Indicate that the buffer was never referenced and
U   3	    687     				 buffer1[XT10$Z_BFHDR];	! point to the first buffer in the ring.
U   3	    688     buffer1[XT10$V_SIZE] = X10$K_BUFFER_SZ + 1;		! Save the size of the first buffer and
U   3	    689     buffer1[XT10$A_NXT_BUFF] = buffer2[XT10$Z_BFHDR];	! point to the address of the next buffer.
U   3	    690 
U   3	    691     buffer2[XT10$V_SIZE] = X10$K_BUFFER_SZ + 1;		! Save the size of the second buffer and
U   3	    692     buffer2[XT10$A_NXT_BUFF] = buffer1[XT10$Z_BFHDR];	! point to the address of the next buffer.
U   3	    693 
U   3	    694     END;
U   3	    695 
U   3	    696 !
U   3	    697 ! Perform a LOOKUP monitor call.
U   3	    698 !
U   3	    699 
U   3	    700     IF NOT X10$ENTER_LOOKUP( .iob, file_parse, lookup_args )	! Setup the LOOKUP/ENTER argument list.
U   3	    701     THEN
U   3	    702         $XPO_QUIT();
U   3	    703 
U   3	    704     iob[IOB$G_COMP_CODE] = XPO$_CREATED;		! Initially assume that a file will be created.
U   3	    705 
U   3	    706     IF .iob[IOB$V_INPUT] OR				! If this is an open for input
U   3	    707 	.iob[IOB$V_OVERWRITE] OR .iob[IOB$V_APPEND]	! or and open for output of an existing file,

XOPEN                           TOPS-10 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 14
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   3	    708     THEN						!
U   3	    709 	IF $T10_LOOKUP(					! perform a TOPS-10 LOOKUP:
U   3	    710 		.iob[IOB$H_CHANNEL],			!    channel number
U   3	    711 		lookup_args )				!    address of argument list
U   3	    712 
U   3	    713 	THEN						! If the LOOKUP is successful,
U   3	    714 	    iob[IOB$G_COMP_CODE] = XPO$_NORMAL		! setup a new successful completion code.
U   3	    715 	ELSE
U   3	    716 	    IF NOT (.iob[IOB$V_OUTPUT] AND		! Otherwise, unless this is an open for output
U   3	    717 		      (.lookup_args[LOOK$H_STATUS] EQL	! and the error is "file does not exist",
U   3	    718 				ERFNF_))		!
U   3	    719 	    THEN					!
U   3	    720 		$T10_ERROR(.lookup_args[LOOK$H_STATUS],	! return error codes to the caller.
U   3	    721 			NO_FILE );
U   3	    722 
U   3	    723 !
U   3	    724 ! Reset the LOOKUP/ENTER argument list. ( LOOKUP writes into this block. )
U   3	    725 !
U   3	    726 
U   3	    727     IF .iob[IOB$V_APPEND] OR .iob[IOB$V_OVERWRITE]
U   3	    728     THEN
U   3	    729     	IF NOT X10$ENTER_LOOKUP( .iob, file_parse, lookup_args )
U   3	    730     	THEN
U   3	    731     	    $XPO_QUIT();
U   3	    732 
U   3	    733 !
U   3	    734 ! Perform an ENTER monitor call.
U   3	    735 !
U   3	    736 
U   3	    737     IF .iob[IOB$V_OUTPUT]				! If this is an open for output,
U   3	    738     THEN						!
U   3	    739 	IF NOT $T10_ENTER(				! perform a TOPS-10 ENTER:
U   3	    740 		.iob[IOB$H_CHANNEL],			!    channel number
U   3	    741 		lookup_args )				!    address of argument list
U   3	    742 
U   3	    743 	THEN						! If the ENTER fails,
U   3	    744 	    $T10_ERROR( .lookup_args[LOOK$H_STATUS],	! return error codes to the caller.
U   3	    745 			NO_CREATE );
U   3	    746 
U   3	    747 !
U   3	    748 ! If this is a record-mode input file, check to see if it is sequenced.
U   3	    749 !
U   3	    750 
U   3	    751     IF .iob[IOB$V_INPUT] AND .iob[IOB$V_RECORD]		! If this is a record-mode input file,
U   3	    752     THEN						!
U   3	    753 	IF $T10_IN( .iob[IOB$H_CHANNEL] )		! fill the first system input buffer.
U   3	    754 	THEN
U   3	    755 	    IF .(.( buffer_cb[$BFPTR] ) + 1)		! Test the low bit (bit 35) of the 1st word of the file
U   3	    756 	    THEN					! and assume that the file is sequenced
U   3	    757 		iob[IOB$V_SEQUENCED] = yes		! if the bit is 1
U   3	    758 	    ELSE					! or that it is not sequenced
U   3	    759 		iob[IOB$V_SEQUENCED] = no		! if the bit is 0.
U   3	    760 	ELSE
U   3	    761 	    IF ($T10_GETSTS( .iob[IOB$H_CHANNEL] )	! If an immediate end-of-file was reached,
U   3	    762 			AND IO$EOF) NEQ 0		!
U   3	    763 	    THEN					! turn on the IOB end-of-file indicator which
U   3	    764 		iob[IOB$V_EOF] = yes			! will cause the first $XPO_GET to fail.

XOPEN                           TOPS-10 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 15
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   3	    765 
U   3	    766 	    ELSE					! If any other read error occurred,
U   3	    767 		$XPO_QUIT( IO_ERROR );			! return an error code to the caller.
U   3	    768 
U   3	    769 !
U   3	    770 ! If an existing record-mode file is being extended, check to see if it is sequenced.
U   3	    771 !
U   3	    772 
U   3	    773     IF .iob[IOB$V_APPEND] AND .iob[IOB$V_RECORD] AND	! If an existing record-mode file is being extended,
U   3	    774 	(.iob[IOB$G_COMP_CODE] EQL XPO$_NORMAL)		!
U   3	    775     THEN						!
U   3	    776 	IF $T10_IN( .iob[IOB$H_CHANNEL] )		! fill the first system input buffer.
U   3	    777 	THEN
U   3	    778 	    IF .(.(extra_buffer_cb + $BFPTR) + 1)	! Test the low bit (bit 35) of the 1st word of the file
U   3	    779 	    THEN					! and assume that the file is sequenced
U   3	    780 		iob[IOB$V_SEQUENCED] = yes		! if the bit is 1
U   3	    781 	    ELSE					! or that it is not sequenced
U   3	    782 		iob[IOB$V_SEQUENCED] = no		! if the bit is 0.
U   3	    783 	ELSE
U   3	    784 	    IF ($T10_GETSTS( .iob[IOB$H_CHANNEL] )	! If an error other than end-of-file was detected,
U   3	    785 			AND IO$EOF) EQL 0		!
U   3	    786 	    THEN					!
U   3	    787 		$XPO_QUIT( IO_ERROR );			! return an error code to the caller.
U   3	    788 
U   3	    789 !
U   3	    790 ! Position at end-of-file if an existing file is being extended.
U   3	    791 !
U   3	    792 
U   3	    793     IF .iob[IOB$V_APPEND] AND				! If an existing file is being extended,
U   3	    794 	(.iob[IOB$G_COMP_CODE] EQL XPO$_NORMAL)		!
U   3	    795     THEN						!
U   3	    796 	$T10_USETI(					! use TOPS-10 USETI to position to end-of-file:
U   3	    797 		.iob[IOB$H_CHANNEL],			!    channel number
U   3	    798 		-1 );					!    end-of-file indicator
U   3	    799 
U   3	    800     IF .iob[IOB$V_APPEND] AND .iob[IOB$V_RECORD]	! If a record-mode file is being extended,
U   3	    801     THEN						!
U   3	    802 	$T10_CLOSE( .iob[IOB$H_CHANNEL], CL$OUT );	! close the input side of the channel.
U   3	    803 
U   3	    804 !
U   3	    805 ! If this is an output file, perform a dummy output operation
U   3	    806 ! to force the system to allocate its I/O buffer(s).
U   3	    807 !
U   3	    808 
U   3	    809     IF .iob[IOB$V_OUTPUT]				! If this is an output file,
U   3	    810     THEN						!
U   3	    811 	IF NOT $T10_OUT( .iob[IOB$H_CHANNEL] )		! force buffer allocation.
U   3	    812 
U   3	    813 	THEN						! If the allocation fails,
U   3	    814 	    $XPO_QUIT( NO_MEMORY );			! return an error code to the caller.
U   3	    815 
U   3	    816     END;						! End of "TOPS10 control block" code block
U   3	    817     END;						! End of TOPS-10 code block
U   3	    818 
U   3	    819 !
U   3	    820 ! End of the MAIN_BLOCK code block.
U   3	    821 !

XOPEN                           TOPS-10 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 16
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   3	    822 
U   3	    823     $XPO_MAIN_END;					! Terminate MAIN_BLOCK.
U   3	    824 
U   3	    825 !
U   3	    826 ! Close and release the assigned I/O channel in the event of an OPEN error.
U   3	    827 !
U   3	    828 
U   3	    829     IF NOT .iob[IOB$G_COMP_CODE] AND .channel_open	! If an open error occurred and a channel has been opened,
U   3	    830     THEN						!
U   3	    831 	BEGIN						!
U   3	    832         $T10_CLOSE( .iob[IOB$H_CHANNEL] );		! close the assigned channel
U   3	    833         $T10_RELEASE( .iob[IOB$H_CHANNEL] );		! and release the channel.
U   3	    834 	END;
U   3	    835 
U   3	    836 !+
U   3	    837 !
U   3	    838 !	End of TOPS-10 OPEN Processing
U   3	    839 !
U   3	    840 !-
U   3	    841 
U   3	    842 %FI

XOPEN                           TOPS-20 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 17
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    3	    844 %TITLE 'TOPS-20 File Open'
    3	    845 %IF $TOPS20 %THEN
U   3	    846 
U   3	    847 !+
U   3	    848 !
U   3	    849 !	TOPS-20 OPEN processing
U   3	    850 !
U   3	    851 !-
U   3	    852 
U   3	    853     BEGIN
U   3	    854 
U   3	    855     BIND
U   3	    856 	resultant = iob[IOB$T_RESULTANT] :  $STR_DESCRIPTOR();
U   3	    857 
U   3	    858     LOCAL
U   3	    859 	resultant_spec :  VECTOR [CH$ALLOCATION(X20$K_MAX_SPEC)],
U   3	    860 	jfn_or_error,					! Storage area for JFN or error code
U   3	    861 	flags;						! Parameter used for getting a JFN
U   3	    862 
U   3	    863 !
U   3	    864 ! Build a resultant file specification from the specification passed by the caller.
U   3	    865 !
U   3	    866 
U   3	    867     $XPO_BUILD_SPEC( .iob );
U   3	    868 
U   3	    869 !
U   3	    870 ! Bypass opening the user's terminal.
U   3	    871 !
U   3	    872 
U   3	    873     If .iob[IOB$V_TERMINAL]				! If this is the user's terminal,
U   3	    874     THEN						!
U   3	    875 	BEGIN						!
U   3	    876 	IF .iob[IOB$V_BINARY]                           ! return an error code if binary 
U   3	    877             OR .iob[IOB$V_RANDOM]                       ! or random I/O is requested
U   3	    878 	THEN						!
U   3	    879 	    $XPO_QUIT( BAD_IO_OPT );			!
U   3	    880 							!
U   3	    881 	$XPO_QUIT( NORMAL );				! or return a success code to the caller.
U   3	    882 	END;
U   3	    883 
U   3	    884 !
U   3	    885 ! Further validate the caller's IOB.
U   3	    886 !
U   3	    887 
U   3	    888     IF (.iob[IOB$V_INPUT] AND .iob[IOB$V_OUTPUT])	! If the file is being opened for both input and output,
U   3	    889 	AND (NOT .iob[IOB$V_RANDOM])			! and random I/O not requested
U   3	    890     THEN						!
U   3	    891 	$XPO_QUIT( BAD_IOB, CONFLICT );			! return error codes to the caller.
U   3	    892 
U   3	    893 !
U   3	    894 ! Get prepared for associating a JFN with the file.
U   3	    895 !
U   3	    896 
U   3	    897     IF NOT $X20_ASCIZ( resultant, resultant_spec )	! Copy the file-spec to resultant_spec and make it ASCIZ.
U   3	    898     THEN
U   3	    899 	$XPO_QUIT( BAD_SPEC, BAD_LENGTH );		! Return an error code to the caller if file-spec is too lon
U   3	    899 g.

XOPEN                           TOPS-20 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 18
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   3	    900 
U   3	    901     IF .iob[IOB$V_INPUT] OR .iob[IOB$V_APPEND] OR	! If we're doing input or appending or
U   3	    902       .iob[IOB$V_OVERWRITE]				! overwriting a file,
U   3	    903     THEN						!
U   3	    904 	flags = GJ_SHT OR GJ_OLD			! first refer to an existing file.
U   3	    905     ELSE						!
U   3	    906     	IF .iob[IOB$V_TEMPORARY]			! Otherwise, create a new generation of the file.
U   3	    907     	THEN
U   3	    908     	    flags = GJ_SHT OR GJ_FOU OR GJ_TMP
U   3	    909     	ELSE
U   3	    910     	    flags = GJ_SHT OR GJ_FOU OR GJ_NEW OR $GJNHG;
U   3	    911 !
U   3	    912 ! Associate the file with a JFN.
U   3	    913 !
U   3	    914 
U   3	    915     iob[IOB$G_COMP_CODE] = XPO$_CREATED;		! Initially assume a file is being created
U   3	    916 
U   3	    917     IF $T20_GTJFN(					! Get the JFN:
U   3	    918 			.flags,				!    specified options
U   3	    919 			CH$PTR(resultant_spec),		!    pointer to file-spec
U   3	    920 			jfn_or_error )			!    JFN or error code returned here
U   3	    921     THEN
U   3	    922 	BEGIN
U   3	    923 	IF .iob[IOB$V_INPUT] OR .iob[IOB$V_APPEND] OR	! If we were doing input, appending
U   3	    924 	   .iob[IOB$V_OVERWRITE]			! or overwriting and found the file,
U   3	    925 	THEN						!
U   3	    926 	    iob[IOB$G_COMP_CODE] = XPO$_NORMAL;		! indicate the file already exists.
U   3	    927 	END
U   3	    928     ELSE						! Here if GTJFN failed.
U   3	    929 
U   3	    930 	IF ( (.jfn_or_error NEQ GJFX24) AND		! If the file exists or
U   3	    931 		(.jfn_or_error NEQ GJFX18) AND		!
U   3	    932 		(.jfn_or_error NEQ GJFX19) ) OR		!
U   3	    933 	     .iob[IOB$V_INPUT]				! we're doing input,
U   3	    934 	THEN						!
U   3	    935 	    BEGIN					!
U   3	    936 	    X20$ERROR( .iob, .jfn_or_error );		! convert the error to equivalent XPORT completion codes
U   3	    937 	    $XPO_QUIT();				! and return to the caller.
U   3	    938 	    END
U   3	    939 	ELSE
U   3	    940 	    BEGIN					! Otherwise, we're appending or overwriting to a new file.
U   3	    941 
U   3	    942 	    IF NOT $T20_GTJFN(				! Get the JFN:
U   3	    943 				GJ_SHT OR GJ_FOU OR	!    use short form and file is a new file
U   3	    944     				 GJ_NEW OR $GJNHG,	!    increment generation number if not specified
U   3	    945 				CH$PTR(resultant_spec),	!    pointer to file-spec
U   3	    946 				jfn_or_error )		!    JFN or error code returned here
U   3	    947 	    THEN
U   3	    948 	        BEGIN					! If GTJFN failed,
U   3	    949 	        X20$ERROR( .iob, .jfn_or_error );	! convert the error to equivalent XPORT completion codes
U   3	    950 	        $XPO_QUIT();				! and return to the caller.
U   3	    951 	        END;
U   3	    952 	    END;
U   3	    953 
U   3	    954     channel_assign = yes;				! Indicate JFN has been assigned.
U   3	    955 
U   3	    956     iob[IOB$H_CHANNEL] = .jfn_or_error;			! Save the JFN.

XOPEN                           TOPS-20 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 19
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   3	    957 
U   3	    958 !
U   3	    959 ! Get prepared for opening the file.
U   3	    960 !
U   3	    961 
U   3	    962     flags = OF_PLN OR X20$K_WORD_SIZE;			! Include line number information,
U   3	    963 							! and always read/write in word mode.
U   3	    964 
U   3	    965     IF .iob[IOB$V_INPUT] OR				! If we're doing input or we're appending
U   3	    966     	(.iob[IOB$V_APPEND] AND				! to a file which exists,
U   3	    967     		.iob[IOB$G_COMP_CODE] EQL XPO$_NORMAL)	!
U   3	    968     THEN						!
U   3	    969 	flags = .flags OR OF_RD;			! then indicate we're reading.
U   3	    970 
U   3	    971     IF .iob[IOB$V_OUTPUT]				! If we're doing output,
U   3	    972     THEN						!
U   3	    973 	flags = .flags OR OF_WR OR OF_RTD;		! indicate we're writing and restrict access by other users.
U   3	    974 
U   3	    975 !
U   3	    976 ! Open the file.
U   3	    977 !
U   3	    978 
U   3	    979     IF NOT $T20_OPENF(					! Open the file:
U   3	    980 			 .iob[IOB$H_CHANNEL],		!    JFN
U   3	    981 			 .flags,			!    specified options
U   3	    982 			 jfn_or_error )			!    storage area for JFN or error code
U   3	    983     THEN
U   3	    984         BEGIN
U   3	    985         X20$ERROR( .iob, .jfn_or_error );		! Convert the error to an equivalent XPORT completion code
U   3	    986         $XPO_QUIT();					! and return to the caller.
U   3	    987         END;
U   3	    988 
U   3	    989     channel_open = yes;					! Indicate that a file has been opened.
U   3	    990 
U   3	    991     iob[IOB$A_BUFFER_CB] =				! Save the address of the buffer control block.
U   3	    992 	X20$BUFFER_CB[.iob[IOB$H_CHANNEL],$BASE];
U   3	    993 
U   3	    994 !
U   3	    995 ! If this is a record mode input file or an existing record mode
U   3	    996 ! file is being extended, check to see if it is sequenced.
U   3	    997 !
U   3	    998 
U   3	    999     IF ( .iob[IOB$V_INPUT] AND .iob[IOB$V_RECORD] ) OR
U   3	   1000        ( .iob[IOB$V_APPEND] AND .iob[IOB$V_RECORD] AND
U   3	   1001 	  ( .iob[IOB$G_COMP_CODE] EQL XPO$_NORMAL ) )
U   3	   1002     THEN
U   3	   1003     	BEGIN
U   3	   1004 	SELECTONE X20$IN( .iob ) OF			! Allocate and fill the input buffer.
U   3	   1005 	    SET
U   3	   1006 
U   3	   1007 	    [ XPO$_END_FILE ] :				! End-of-file:
U   3	   1008 		IF .iob[IOB$V_INPUT]			!    If we're doing input
U   3	   1009 		THEN					!    turn on the IOB end-of-file indicator which
U   3	   1010 		    .iob[IOB$V_EOF] = yes;		!    will cause the first $XPO_GET to fail.
U   3	   1011 
U   3	   1012 	    [ XPO$_NORMAL ] :				! Successful return:
U   3	   1013 		BEGIN

XOPEN                           TOPS-20 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 20
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   3	   1014 		IF .(.(.iob[IOB$A_BUFFER_CB]+$BFPTR)+1)	!    Test the low bit (bit 35) of the 1st word of the file
U   3	   1015 		THEN					!    and assume that the file is sequenced
U   3	   1016 		    iob[IOB$V_SEQUENCED] = yes		!    if the bit is 1
U   3	   1017 		ELSE					!    or it is not sequenced
U   3	   1018 		    iob[IOB$V_SEQUENCED] = no;		!    if the bit is 0.
U   3	   1019 		END;
U   3	   1020 
U   3	   1021 	    [ OTHERWISE ] :				! All other error conditions:
U   3	   1022 		$XPO_QUIT();				!    Return with the previously set completion codes.
U   3	   1023 
U   3	   1024 	    TES;
U   3	   1025 
U   3	   1026     	    IF .iob[IOB$V_APPEND]			!    If we're appending to an existing file
U   3	   1027 	    THEN					!
U   3	   1028 		BEGIN					!
U   3	   1029 		$XPO_FREE_QUIT( STRING =		!    get rid of the input buffer,
U   3	   1030 		    (.(.iob[IOB$A_BUFFER_CB] + $BFCTR),
U   3	   1031 			.(.iob[IOB$A_BUFFER_CB] + $BFPTR)) );
U   3	   1032 
U   3	   1033 		INCR count FROM 0 TO 2 DO		!    Then zero out the buffer control block.
U   3	   1034 		    (.iob[IOB$A_BUFFER_CB] + .count) = 0;
U   3	   1035 		END;
U   3	   1036 
U   3	   1037     	END;
U   3	   1038 
U   3	   1039 !
U   3	   1040 ! Position at end-of-file if an existing file is being extended.
U   3	   1041 !
U   3	   1042 
U   3	   1043     IF .iob[IOB$V_APPEND] AND
U   3	   1044 	(.iob[IOB$G_COMP_CODE] EQL XPO$_NORMAL)
U   3	   1045     THEN
U   3	   1046 	$T20_SFPTR( .iob[IOB$H_CHANNEL], -1 );
U   3	   1047 
U   3	   1048 !
U   3	   1049 ! If this is an output file, perform a dummy output operation
U   3	   1050 ! to allocate its I/O buffer.
U   3	   1051 !
U   3	   1052 
U   3	   1053     IF .iob[IOB$V_OUTPUT]				! If this is an output file,
U   3	   1054     THEN						!
U   3	   1055 	IF NOT X20$OUT( .iob )				! allocate the buffer.
U   3	   1056 	THEN
U   3	   1057 	    $XPO_QUIT();
U   3	   1058 
U   3	   1059     END;						! End of TOPS-20 code block
U   3	   1060 
U   3	   1061 !
U   3	   1062 ! End of MAIN_BLOCK code block.
U   3	   1063 !
U   3	   1064 
U   3	   1065     $XPO_MAIN_END;					! Terminate MAIN_BLOCK.
U   3	   1066 
U   3	   1067 !
U   3	   1068 ! In the event of an OPEN error, close and release the assigned JFN.
U   3	   1069 !
U   3	   1070 

XOPEN                           TOPS-20 File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 21
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   3	   1071     IF NOT .iob[IOB$G_COMP_CODE]			! If an open error occurred,
U   3	   1072     THEN						!
U   3	   1073 	BEGIN						!
U   3	   1074 	IF .channel_open				! and a file has been opened,
U   3	   1075 	THEN						!
U   3	   1076 	    $T20_CLOSF( .iob[IOB$H_CHANNEL] )		! then close the file and release the JFN.
U   3	   1077 
U   3	   1078 	ELSE
U   3	   1079 	    IF .channel_assign				! If the file has not been opened,
U   3	   1080 	    THEN					! and the JFN has been assigned
U   3	   1081 		$T20_RLJFN( .iob[IOB$H_CHANNEL] );	! then release the JFN.
U   3	   1082 
U   3	   1083 	iob[IOB$H_CHANNEL] = 0;				! Zero the IOB channel field.
U   3	   1084 	END;
U   3	   1085 
U   3	   1086 !+
U   3	   1087 !
U   3	   1088 !	End of TOPS-20 OPEN processing
U   3	   1089 !
U   3	   1090 !-
U   3	   1091 
U   3	   1092 %FI

XOPEN                           VAX/VMS File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 22
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    3	   1094 %TITLE 'VAX/VMS File Open'
    3	   1095 %IF $VMS %THEN
    3	   1096 
    3	   1097 !+
    3	   1098 !
    3	   1099 !	VAX/VMS OPEN Processing
    3	   1100 !
    3	   1101 !-
    3	   1102 
    3	   1103     BEGIN
    4	   1104     LOCAL
    4	   1105 	fab :  REF $FAB_DECL,				! Address of RMS FAB
    4	   1106 	rab :  REF $RAB_DECL,				! Address of RMS RAB
    4	   1107 	name_block :  REF $NAM_DECL,			! Address of RMS Name Block
    4	   1108 	resultant_spec :				! Space for a resultant file-spec
    4	   1109 	    VECTOR[ CH$ALLOCATION(max_file_spec) ];
    4	   1110 
    4	   1111 !
    4	   1112 ! Make sure that no FAB or RAB already exists.
    4	   1113 !
    4	   1114 
    4	   1115     IF .iob[IOB$A_RMS_FAB] NEQ 0 OR			! If a FAB already exists
    4	   1116 	.iob[IOB$A_RMS_RAB] NEQ 0			! or a RAB already exists,
    4	   1117     THEN						!
    4	   1118 	$XPO_QUIT( BAD_LOGIC );				! return an error code to the caller.
    4	   1119 
    4	   1120 !
    4	   1121 ! Create an RMS File Access Block (FAB).
    4	   1122 !
    4	   1123 
    4	   1124     $XPO_IF_NOT( $XPO_GET_MEM( UNITS = FAB$C_BLN,	! Get dynamic memory for a FAB.
P   4	   1125 				RESULT = fab,
P   4	   1126 				FAILURE = 0 ) )
    6	   1127     THEN
    5	   1128 	$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
    4	   1129 
    4	   1130     iob[IOB$A_RMS_FAB] = .fab;				! Save the address of the FAB.
    4	   1131 
    4	   1132     $FAB_INIT( FAB = .fab,				! Initialize the FAB:
P   4	   1133 		BKS = .iob[IOB$G_BLK_SIZE] /		!    bucket size
P   4	   1134 				bytes_per_block,	!
P   4	   1135 		BLS = .iob[IOB$G_BLK_SIZE],		!    block size (mag tape only)
P   4	   1136 		CTX = .iob,				!    address of XPORT IOB
P   4	   1137 		FAC =,					!    no file access indicators - overrides FAC=GET default
P   4	   1138 		FOP = SQO,				!    file processing option: sequential only
P   4	   1139 		MRS = .iob[IOB$G_REC_SIZE],		!    fixed-length record size
P   4	   1140 		ORG = SEQ,				!    sequential file organization
P   4	   1141 		RFM = VAR );				!    variable record format ($FAB_INIT default)
    4	   1142 							!
    4	   1143     fab[FAB$V_NEF] = NOT .iob[IOB$V_APPEND];		!    "not end of file" indicator
    4	   1144     fab[FAB$V_CIF] = .iob[IOB$V_APPEND] OR		!    "create if" indicator
    4	   1145 			.iob[IOB$V_OVERWRITE];		!
    4	   1146     fab[FAB$V_TRN] = .iob[IOB$V_OVERWRITE];		!    "allow truncate file with PUT" indicator
    4	   1147     fab[FAB$V_BIO] = .iob[IOB$V_BINARY] OR		!    "block I/O" indicator for binary or
    4	   1148 			.iob[IOB$V_RANDOM];		!     random files
    4	   1149 
    4	   1150     IF .iob[IOB$V_INPUT]				! Special input file FAB setup:

XOPEN                           VAX/VMS File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 23
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    4	   1151     THEN						!
    4	   1152 	BEGIN						!
    5	   1153 	fab[FAB$V_GET] = yes;				!    "GET" indicator
    5	   1154 	fab[FAB$V_BRO] = .iob[IOB$V_STREAM];		!    "mixed block/record I/O" indicator for stream I/O
    5	   1155 	fab[FAB$V_SHRGET] = yes;			!    allow others to read file
    5	   1156 	END;
    4	   1157 
    4	   1158     IF .iob[IOB$V_OUTPUT]				! Special output file FAB setup:
    4	   1159     THEN						!
    4	   1160 	BEGIN						!
    5	   1161 	fab[FAB$V_MXV] = .iob[IOB$V_MAX_VERSI];		!    "maximize file version" indicator
    5	   1162 	fab[FAB$V_OFP] = yes;				!    "output file parse" indicator
    5	   1163 	fab[FAB$V_PUT] = yes;				!    "PUT" indicator
    5	   1164 	fab[FAB$V_CR] = .iob[IOB$V_RECORD];		!    "implicit CR/LF" indicator
    5	   1165 	fab[FAB$V_NIL] = yes;				!    "no file sharing" indicator
    5	   1166 	fab[FAB$V_GET] = .iob[IOB$V_RANDOM];		!    "input and output" for an OUTPUT RANDOM file
    5	   1167 							! N.B. If a file is open for random access output,
    5	   1168 							! XPORT must be able to read in the file before writing.
    5	   1169 							!
    5	   1170 	IF .iob[IOB$V_BINARY] OR .iob[IOB$V_RANDOM]	!
    5	   1171 	THEN						!
    5	   1172 	    BEGIN					!
    6	   1173 	    fab[FAB$B_RFM] = FAB$C_FIX;			!    binary "record" format (actually FIXED)
    6	   1174 	    fab[FAB$W_MRS] = binary_record_len;		!    binary "record" length
    6	   1175 	    END						!
    6	   1176 	ELSE						!
    5	   1177 	    IF .iob[IOB$V_SEQUENCED]			!
    5	   1178 	    THEN					!
    5	   1179 		fab[FAB$B_RFM] = FAB$C_VFC		!    sequenced (VFC) record format
    5	   1180 	    ELSE					!
    5	   1181 		IF .iob[IOB$G_REC_SIZE] NEQ 0		!
    5	   1182 		THEN					!
    5	   1183 		    fab[FAB$B_RFM] = FAB$C_FIX;		!    fixed record format
    5	   1184 	END;
    4	   1185 
    4	   1186 !
    4	   1187 ! Use RMS PARSE to perform file specification resolution.
    4	   1188 !
    4	   1189 
    4	   1190     IF NOT XPO$RMS_PARSE( .iob )			! Perform file-spec resolution.
    4	   1191     THEN
    4	   1192 	$XPO_QUIT();					! Jump to return error codes if file-spec resolution fails.
    4	   1193 
    4	   1194     name_block = .fab[FAB$L_NAM];			! Update the Name Block built by XPO$RMS_PARSE:
    4	   1195     name_block[NAM$B_RSS] = max_file_spec;		!    length of resultant file-spec buffer
    4	   1196     name_block[NAM$L_RSA] = resultant_spec;		!    pointer to the resultant file-spec buffer
    4	   1197 
    4	   1198 !
    4	   1199 ! Special setup for terminal I/O.
    4	   1200 !
    4	   1201 
    4	   1202     IF .iob[IOB$V_TERMINAL]
    4	   1203     THEN
    4	   1204 	BEGIN
    5	   1205 	fab[FAB$V_UFO] = yes;				! Turn on "user file open"
    5	   1206 	fab[FAB$V_BRO] = no;				! and turn off "mixed block/record I/O".
    5	   1207 	END;

XOPEN                           VAX/VMS File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 24
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    4	   1208 
    4	   1209 !
    4	   1210 ! Build a file header extended attributes block (XAB).
    4	   1211 !
    4	   1212 
    4	   1213     IF ( .iob[IOB$V_INPUT] AND .iob[IOB$V_RECORD] ) OR	! If this file may be read in record or
    4	   1214        ( .iob[IOB$V_INPUT] AND .iob[IOB$V_STREAM] ) OR	! stream mode, we need the LRL
    4	   1215 	( .iob[IOB$V_RANDOM] AND .iob[IOB$V_APPEND] )	! If appending to a random file, we need
    5	   1216 							! to save the end of file.
    5	   1217     THEN						!
    4	   1218 	BEGIN						!
    5	   1219 	$XPO_IF_NOT( $XPO_GET_MEM(			! get dynamic memory for a file header XAB.
P   5	   1220 				UNITS = XAB$C_FHCLEN,
P   5	   1221 				RESULT = header_xab,
P   5	   1222 				FAILURE = 0 ) )
    7	   1223 	THEN
    6	   1224 	    $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
    5	   1225 
    5	   1226 	fab[FAB$L_XAB] = .header_xab;			! Have the FAB point to the XAB.
    5	   1227 
    5	   1228 	$XABFHC_INIT( XAB = .header_xab );		! Initialize the XAB.
    5	   1229 	END;
    4	   1230 
    4	   1231 !
    4	   1232 ! Open the specified file.
    4	   1233 !
    4	   1234 
    4	   1235     IF .iob[IOB$V_INPUT]				! If this is an input file,
    4	   1236     THEN						!
    4	   1237 	$RMS_OPEN( FAB = .fab )				! open the file.
    5	   1238     ELSE
    4	   1239 	$RMS_CREATE( FAB = .fab );			! Otherwise, create an output file.
    4	   1240 
    4	   1241 !
    4	   1242 ! If there was an error on the open, and the file was a random file, then special processing
    4	   1243 ! is required.
    4	   1244 !
    4	   1245 
    4	   1246     IF ( .iob[IOB$V_RANDOM] AND (NOT .fab[FAB$L_STS] ) )
    5	   1247     THEN
    4	   1248 	SELECTONE .fab[FAB$L_STS] OF
    4	   1249 	    SET
    4	   1250 	    [ RMS$_FNF ]:				! ERROR:  File not found
    4	   1251 		IF .iob[IOB$V_OUTPUT]
    4	   1252 		THEN					! If the open was for input and output and the file doesn't 
    4	   1252 exist
    4	   1253 		    $RMS_CREATE ( FAB = .fab ) ;	! then open the file for output
    4	   1254 
    4	   1255 	    [ RMS$_FEX ]:				! ERROR:  File already exists
    4	   1256 
    4	   1257 		$RMS_OPEN ( FAB = .fab ) ;		! If the open was for output and an EXACT file specification
    4	   1257  was
    4	   1258 							! given, then open the file - don't create it
    4	   1259 	    TES ;
    4	   1260 
    4	   1261     fab[FAB$L_XAB] = 0;					! Disconnect the file header XAB from the FAB.
    4	   1262 

XOPEN                           VAX/VMS File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 25
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    4	   1263 !
    4	   1264 ! Save the resultant file specification.
    4	   1265 !
    4	   1266 
    4	   1267     IF .name_block[NAM$B_RSL] NEQ 0			! If a resultant file-spec was created by RMS,
    4	   1268     THEN						!
    4	   1269 	BEGIN						!
    5	   1270 	$XPO_IF_NOT( $STR_COPY(				! copy the file-spec into dynamic memory.
P   5	   1271 		    STRING = (.name_block[NAM$B_RSL],
P   5	   1272 				.name_block[NAM$L_RSA]),
P   5	   1273 		    TARGET = iob[IOB$T_RESULTANT],
P   5	   1274 		    FAILURE = 0 ) )
    7	   1275 	THEN
    6	   1276 	    $XPO_QUIT( BAD_RSLT, (.$XPO_STATUS) );
    5	   1277 
    5	   1278 	name_block[NAM$L_RSA] =				! Then have the Name Block point to the copied file-spec.
    5	   1279 	    .iob[$SUB_FIELD(IOB$T_RESULTANT,STR$A_POINTER)];
    5	   1280 	END;
    4	   1281 
    4	   1282     name_block[NAM$B_RSS] = 0;				! Zero the resultant buffer length for safety sake.
    4	   1283 
    4	   1284 !
    4	   1285 ! Interpret the RMS OPEN or CREATE completion code.
    4	   1286 !
    4	   1287 
    4	   1288     SELECTONE .fab[FAB$L_STS] OF			! Translate the RMS completion code into
    4	   1289 	SET						! an appropriate XPORT completion code.
    4	   1290 	[ RMS$_NORMAL ] :
    4	   1291 	    IF .iob[IOB$V_INPUT] OR .fab[FAB$V_CIF]	! If an existing file was opened,
    4	   1292 	    THEN					!
    4	   1293 		iob[IOB$G_COMP_CODE] = XPO$_NORMAL	! setup a normal success code.
    4	   1294 	    ELSE
    4	   1295 		iob[IOB$G_COMP_CODE] = XPO$_CREATED;	! Otherwise, indicate a new file was created.
    4	   1296 
    4	   1297 	[ RMS$_CREATED, RMS$_FILEPURGED ] :		! "file was created" or "oldest version deleted"
    4	   1298 	    iob[IOB$G_COMP_CODE] = XPO$_CREATED;
    4	   1299 
    4	   1300 	[ RMS$_SUPERSEDE ] :				! "existing file was superseded"
    4	   1301 	    iob[IOB$G_COMP_CODE] = XPO$_NORMAL;
    4	   1302 
    4	   1303 	[ OTHERWISE ] :					! Any other RMS error:
    4	   1304 	    BEGIN
    5	   1305 	    XPO$RMS_ERROR( .iob,			!    Convert the RMS completion codes into
    5	   1306 			    .fab[FAB$L_STS],		!    equivalent XPORT completion codes
    5	   1307 			    .fab[FAB$L_STV] );		!
    5	   1308 	    $XPO_QUIT();				!    and then jump to return to the caller.
    5	   1309 	    END;
    4	   1310 	TES;
    4	   1311 
    4	   1312 !
    4	   1313 ! Verify device characteristics.
    4	   1314 !
    4	   1315 
    4	   1316     IF .iob[IOB$V_INPUT] AND .iob[IOB$V_OUTPUT] AND	! If this file is being opened for both input and output
    4	   1317 	(NOT .iob[IOB$V_RANDOM]) AND			! and the file isn't a random file
    4	   1318 	((.fab[FAB$L_DEV] AND DEV$M_FOD) NEQ 0)		! and the device is file structured,
    5	   1319     THEN						!

XOPEN                           VAX/VMS File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 26
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    4	   1320 	$XPO_QUIT( BAD_IOB, CONFLICT );			! return error codes to the caller.
    4	   1321 
    4	   1322     IF .fab[FAB$V_UFO]					! If this is a "user file open",
    4	   1323     THEN						!
    4	   1324 	BEGIN						!
    5	   1325 	iob[IOB$H_CHANNEL] = .fab[FAB$L_STV];		! save the I/O channel number
    5	   1326 	$XPO_QUIT();					! and bypass the rest of XPORT open processing.
    5	   1327 	END;
    4	   1328 
    4	   1329 !
    4	   1330 ! Update the caller's IOB after a successful file open.
    4	   1331 !
    4	   1332 
    4	   1333     IF .iob[IOB$V_TERMINAL]				! *** BYPASS FOR RMS ERROR ***
    4	   1334     THEN
    4	   1335 	fab[FAB$V_CR] = yes;
    4	   1336 
    4	   1337     iob[IOB$V_SEQUENCED] =				! Indicate whether the file is sequenced.
    4	   1338 		.fab[FAB$B_RFM] EQL FAB$C_VFC AND
    4	   1339 		NOT .fab[FAB$V_PRN] AND
    4	   1340 		.fab[FAB$B_FSZ] EQL 2;
    4	   1341 
    4	   1342     IF .fab[FAB$B_RFM] EQL FAB$C_FIX			! If this is a fixed-length record file,
    4	   1343     THEN						!
    4	   1344 	iob[IOB$G_REC_SIZE] = .fab[FAB$W_MRS];		! save the record length.
    4	   1345 
    4	   1346     iob[IOB$G_BLK_SIZE] = .fab[FAB$W_BLS];		! Save the file block size.
    4	   1347 
    4	   1348 !
    4	   1349 ! Create an RMS Record Access Block (RAB).
    4	   1350 !
    4	   1351 
    4	   1352     $XPO_IF_NOT( $XPO_GET_MEM( UNITS = RAB$C_BLN,	! Get dynamic memory for a RAB.
P   4	   1353 				RESULT = rab,
P   4	   1354 				FAILURE = 0 ) )
    6	   1355     THEN
    5	   1356 	$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
    4	   1357 
    4	   1358     iob[IOB$A_RMS_RAB] = .rab;				! Save the address of the RAB.
    4	   1359 
    4	   1360     $RAB_INIT( RAB = .rab,				! Initialize the RAB:
P   4	   1361 		FAB = .fab,				!    address of the associated FAB
P   4	   1362 		ROP = (LOC,PMT),			!    locate-mode GET & input prompt indicators
P   4	   1363 		UBF = 0 );				!    "no buffer allocated" indicator
    4	   1364 							!
    4	   1365     rab[RAB$V_EOF] = .iob[IOB$V_APPEND];		!    "position to end-of-file" indicator
    4	   1366     rab[RAB$V_TPT] = .iob[IOB$V_OVERWRITE];		!    "truncate file with PUT" indicator
    4	   1367     rab[RAB$V_BIO] = .iob[IOB$V_BINARY] OR		!    "block I/O only" indicator for binary I/O
    4	   1368 		     .iob[IOB$V_RANDOM] OR		!	or random I/O
    4	   1369 			(.iob[IOB$V_STREAM] AND		!	or stream I/O of undefined file
    5	   1370 			.fab[FAB$B_RFM] EQL FAB$C_UDF);
    4	   1371 
    4	   1372 !
    4	   1373 ! Allocate an XPORT internal I/O buffer.
    4	   1374 !
    4	   1375 
    4	   1376     IF .iob[IOB$V_INPUT] OR .iob[IOB$V_BINARY] OR	! If an XPORT I/O buffer will be needed,

XOPEN                           VAX/VMS File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 27
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    4	   1377 		.iob[IOB$V_RANDOM]
    4	   1378     THEN						! build the buffer in dynamic memory.
    4	   1379 	BEGIN
    5	   1380 	rab[RAB$W_USZ] =				! Setup the buffer size
    5	   1381 	    (IF .rab[RAB$V_BIO]				!
    6	   1382 	     THEN					!
    6	   1383 		.fab[FAB$W_BLS]				! for binary block I/O
    6	   1384 	     ELSE					!
    6	   1385 		.header_xab[XAB$W_LRL]);		! or character record I/O.
    5	   1386 
    5	   1387 	IF .rab[RAB$W_USZ] EQL 0			! If no record/block size exists,
    5	   1388 	THEN						!
    5	   1389 	    rab[RAB$W_USZ] = io_buffer_size;		! assume a maximum sized buffer.
    5	   1390 
    5	   1391 	$XPO_IF_NOT( $XPO_GET_MEM(			! Allocate the dynamic buffer.
P   5	   1392 			    UNITS = .rab[RAB$W_USZ],
P   5	   1393 			    RESULT = rab[RAB$L_UBF],
P   5	   1394 			    FAILURE = 0 ) )
    7	   1395 	THEN
    6	   1396 	    $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
    5	   1397 	END;
    4	   1398 
    4	   1399 !
    4	   1400 ! Save the end of file pointer.
    4	   1401 !
    4	   1402 	IF ( .iob[IOB$V_RANDOM] AND .iob[IOB$V_APPEND] )	! If appending to a non-zero file
    5	   1403 	    AND (.header_xab[XAB$L_EBK] NEQ 0)			! with random access, we
    5	   1404 	THEN							! need to save the end of file.
    4	   1405 	    iob[IOB$G_NEXT_POS] =				!  End of file block is origin 1
    4	   1406 		(.header_xab[XAB$L_EBK] - 1 ) * bytes_per_block;
    4	   1407 
    4	   1408 !
    4	   1409 ! Perform an RMS CONNECT operation.
    4	   1410 !
    4	   1411 
    4	   1412     IF NOT $RMS_CONNECT( RAB = .rab )			! If connecting the RAB to the FAB fails,
    5	   1413     THEN						!
    4	   1414 	BEGIN						!
    5	   1415 	XPO$RMS_ERROR( .iob,				! convert the RMS completion codes into
    5	   1416 			.rab[rab$L_STS],		! equivalent XPORT completion codes
    5	   1417 			.rab[rab$L_STV] );		!
    5	   1418 	$XPO_QUIT();					! and then jump to return to the caller.
    5	   1419 	END;
    4	   1420     END;						! End of VMS code block
    3	   1421 
    3	   1422 !
    3	   1423 ! End of the MAIN_BLOCK code block.
    3	   1424 !
    3	   1425 
    3	   1426     $XPO_MAIN_END;					! Terminate MAIN_BLOCK.
    2	   1427 
    2	   1428 !
    2	   1429 ! Free the RMS file header XAB if one was created.
    2	   1430 !
    2	   1431 
    2	   1432     IF .header_xab NEQ 0
    2	   1433     THEN

XOPEN                           VAX/VMS File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 28
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    2	   1434 	$XPO_FREE_MEM( BINARY_DATA = ( XAB$C_FHCLEN, .header_xab, UNITS ),
P   2	   1435 			FAILURE = 0 );
    2	   1436 
    2	   1437 !+
    2	   1438 !
    2	   1439 !	End of VAX/VMS OPEN Processing
    2	   1440 !
    2	   1441 !-
    2	   1442 
    2	   1443 %FI

XOPEN                           RSX-11M File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 29
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    2	   1445 %TITLE 'RSX-11M File Open'
    2	   1446 %IF $11M %THEN
U   2	   1447 
U   2	   1448 !+
U   2	   1449 !
U   2	   1450 !	RSX-11M OPEN Processing
U   2	   1451 !
U   2	   1452 !-
U   2	   1453 
U   2	   1454     BEGIN
U   2	   1455     LOCAL
U   2	   1456 	spec_parse :  $XPO_SPEC_BLOCK;			! Resultant file-spec parse block
U   2	   1457 
U   2	   1458 !
U   2	   1459 ! Make sure that no QIO/FCS information already exists.
U   2	   1460 !
U   2	   1461 
U   2	   1462     IF .iob[IOB$H_CHANNEL] NEQ 0 OR			! If a LUN has been assigned
U   2	   1463 	.iob[IOB$A_FCS_FDB] NEQ 0			! or XPORT's FCS blocks have been allocated,
U   2	   1464     THEN						!
U   2	   1465 	$XPO_QUIT( BAD_LOGIC );				! return an error code to the caller.
U   2	   1466 
U   2	   1467 !
U   2	   1468 ! Build a resultant file specification from the specifications passed by the caller
U   2	   1469 ! and assign an RSX-11M Logical Unit Number (LUN) to this file.
U   2	   1470 !
U   2	   1471 
U   2	   1472     IF NOT XRSX$SPEC_SETUP( .iob, spec_parse )
U   2	   1473     THEN
U   2	   1474 	$XPO_QUIT();
U   2	   1475 
U   2	   1476 !
U   2	   1477 ! Perform special OPEN processing for terminal devices.
U   2	   1478 !
U   2	   1479 
U   2	   1480     IF .iob[IOB$V_TERMINAL]				! If this is the user's terminal,
U   2	   1481     THEN						! perform special setup instead of OPEN$.
U   2	   1482 	BEGIN
U   2	   1483 	LOCAL
U   2	   1484 	    status :  $QIO_STATUS;			! QIO status codes
U   2	   1485 
U   2	   1486 	IF .iob[IOB$V_BINARY]				! If binary I/O is requested,
U   2	   1487 	THEN						!
U   2	   1488 	    $XPO_QUIT( BAD_IO_OPT );			! return an error code to the caller.
U   2	   1489 
U   2	   1490 	IF NOT ALUN$S( .iob[IOB$H_CHANNEL],		! Assign the LUN to the terminal device:
U   2	   1491 			.(.spec_parse[XPO$A_DEVICE]),	!    2 character device name
U   2	   1492 			0 )				!    device unit number **** TEMPORARY ****
U   2	   1493 	THEN
U   2	   1494 	    $XPO_QUIT( BAD_LOGIC );			! Return an error code if the LUN assignment failed.
U   2	   1495 
U   2	   1496 	$XPO_QUIT( NORMAL );				! Otherwise, return a success code to the caller.
U   2	   1497 	END;
U   2	   1498 
U   2	   1499 !
U   2	   1500 ! Further validate the caller's IOB.
U   2	   1501 !

XOPEN                           RSX-11M File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 30
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   1502 
U   2	   1503     IF .iob[IOB$V_INPUT] AND .iob[IOB$V_OUTPUT]	! If the file is being opened for both input and output,
U   2	   1504     THEN						!
U   2	   1505 	$XPO_QUIT( BAD_IOB, CONFLICT );			! return error codes to the caller.
U   2	   1506 
U   2	   1507 !
U   2	   1508 ! Allocate an XPORT set of FCS control blocks.
U   2	   1509 !
U   2	   1510 
U   2	   1511     $XPO_IF_NOT( $XPO_GET_MEM( FULLWORDS = FCS$K_BLK_LEN,
U   2	   1512 				RESULT = iob[IOB$A_FCS_FDB],
U   2	   1513 				FILL = 0,
U   2	   1514 				FAILURE = 0 ) )
U   2	   1515     THEN
U   2	   1516 	$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   2	   1517 
U   2	   1518     BEGIN
U   2	   1519     BIND						! Redeclare each FCS control block
U   2	   1520 	fcs_blocks = .iob[IOB$A_FCS_FDB] :  $FCS_BLOCKS,
U   2	   1521 	fdb = fcs_blocks[FCS$Z_FDB] :  FDB$;
U   2	   1522 
U   2	   1523 !
U   2	   1524 ! Setup the FCS File Descriptor Block (FDB).
U   2	   1525 !
U   2	   1526 
U   2	   1527 							! Setup all common FDB fields:
U   2	   1528     fdb[F$LUN] = .iob[IOB$H_CHANNEL];			!    logical unit number (LUN)
U   2	   1529     fdb[F$OVBS] = .iob[IOB$G_BLK_SIZE];			!    override blocksize
U   2	   1530     fdb[F$DSPT] = fcs_blocks[FCS$Z_DS_DESC];		!    address of FCS dataset descriptor
U   2	   1531     fdb[F$EFN] = .XRSX$EVENT_FLAG;			!    event flag number
U   2	   1532 							!	(NOTE: F$EFN and F$BKEF are the same field)
U   2	   1533 
U   2	   1534     IF .iob[IOB$V_INPUT]				! Setup all input file FDB fields:
U   2	   1535     THEN						!
U   2	   1536 	BEGIN						!
U   2	   1537 	fdb[FO$$RD] = yes;				!    open existing file for input
U   2	   1538 	fdb[FA$$SHR] = yes;				!    shared access
U   2	   1539 	END;
U   2	   1540 
U   2	   1541     IF .iob[IOB$V_OUTPUT]				! Setup all output file FDB fields:
U   2	   1542     THEN						!
U   2	   1543 	BEGIN						!
U   2	   1544 	fdb[F$CNTG] = -default_alloc;			!    file allocation size (non-contiguous)
U   2	   1545 	fdb[F$ALOC] = -1;				!    file extension quantity - use system default
U   2	   1546 	fdb[FO$$WRT] = NOT .iob[IOB$V_APPEND];		!    open new file for output
U   2	   1547 	fdb[FA$$EXT] = yes;				!    allow extend of existing file
U   2	   1548 	fdb[FA$$CRE] = NOT .iob[IOB$V_APPEND] AND	!    create new file
U   2	   1549 			NOT .iob[IOB$V_OVERWRITE];	!
U   2	   1550 	fdb[FO$$APD] = .iob[IOB$V_APPEND] OR		!    open existing file for append or
U   2	   1551 			    NOT .iob[IOB$V_OVERWRITE];	!    don't supersede existing file
U   2	   1552 							!	(NOTE: FO$$APD and FO$$NSP are the same bit)
U   2	   1553 	END;
U   2	   1554 
U   2	   1555     IF .iob[IOB$V_RECORD]				! Setup all RECORD-mode FDB fields:
U   2	   1556     THEN						!
U   2	   1557 	BEGIN						!
U   2	   1558 	fdb[R$$FIX] = .iob[IOB$G_REC_SIZE] NEQ 0;	!    fixed length records

XOPEN                           RSX-11M File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 31
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   1559 	fdb[R$$VAR] = .iob[IOB$G_REC_SIZE] EQL 0;	!    variable length records
U   2	   1560 	fdb[R$$SEQ] = .iob[IOB$V_SEQUENCED];		!    sequenced records
U   2	   1561 	fdb[FD$$CR] = yes;				!    implied CR/LF carriage control
U   2	   1562 	fdb[F$RSIZ] = .iob[IOB$G_REC_SIZE];		!    fixed record length
U   2	   1563 	END;
U   2	   1564 
U   2	   1565     IF .iob[IOB$V_STREAM]				! Setup all STREAM-mode FDB fields:
U   2	   1566     THEN						!
U   2	   1567 	fdb[R$$VAR] = yes;				!    variable length records
U   2	   1568 
U   2	   1569     IF .iob[IOB$V_BINARY]				! Setup all BINARY-mode FDB fields:
U   2	   1570     THEN						!
U   2	   1571 	BEGIN						!
U   2	   1572 	fdb[FD$$RWM] = yes;				!    READ$/WRITE$ file access
U   2	   1573 	fdb[F$BKST] = fcs_blocks[FCS$Z_STATUS];		!    address of FCS status block
U   2	   1574 	END;
U   2	   1575 
U   2	   1576 !
U   2	   1577 ! Setup the FCS Dataset Descriptor (DSPT).
U   2	   1578 !
U   2	   1579 
U   2	   1580     XRSX$DSPT_SETUP( fcs_blocks[FCS$Z_DS_DESC], spec_parse );
U   2	   1581 
U   2	   1582 !
U   2	   1583 ! Open the file.
U   2	   1584 !
U   2	   1585 
U   2	   1586     IF XRSX$XOPEN( .iob )				! Open the specified file.
U   2	   1587     THEN
U   2	   1588 	IF .fdb[FA$$CRE]				! Set an appropriate success completion code.
U   2	   1589 	THEN
U   2	   1590 	    iob[IOB$G_COMP_CODE] = XPO$_CREATED
U   2	   1591 	ELSE
U   2	   1592 	    iob[IOB$G_COMP_CODE] = XPO$_NORMAL
U   2	   1593     ELSE
U   2	   1594 	IF .iob[IOB$V_OUTPUT] AND			! If an attempt to open an existing file for output fails,
U   2	   1595 	    .fdb[F$ERR] EQL IE$NSF			!
U   2	   1596 	THEN						!
U   2	   1597 	    BEGIN					!
U   2	   1598 	    fdb[FA$$CRE] = yes;				!
U   2	   1599 	    IF XRSX$XOPEN( .iob )			! attempt to create a new output file.
U   2	   1600 	    THEN
U   2	   1601 		iob[IOB$G_COMP_CODE] = XPO$_CREATED
U   2	   1602 	    ELSE
U   2	   1603 		BEGIN
U   2	   1604 		XRSX$RSLT_FIXUP( .iob );
U   2	   1605 		XRSX$IO_ERROR( .iob, .fdb[F$ERR] );
U   2	   1606 		$XPO_QUIT();
U   2	   1607 		END;
U   2	   1608 	    END
U   2	   1609 	ELSE
U   2	   1610 	    BEGIN
U   2	   1611 	    XRSX$RSLT_FIXUP( .iob );
U   2	   1612 	    XRSX$IO_ERROR( .iob, .fdb[F$ERR] );
U   2	   1613 	    $XPO_QUIT();
U   2	   1614 	    END;
U   2	   1615 

XOPEN                           RSX-11M File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 32
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   1616 !
U   2	   1617 ! Update the caller's IOB after a successful file open.
U   2	   1618 !
U   2	   1619 
U   2	   1620     $XPO_IF_NOT( XRSX$RSLT_FIXUP( .iob ) )		! Fixup the resultant file-spec.
U   2	   1621     THEN
U   2	   1622 	$XPO_QUIT( BAD_RSLT, (.$XPO_STATUS) );
U   2	   1623 
U   2	   1624     iob[IOB$V_SEQUENCED] = .fdb[R$$SEQ];		! Indicate whether the file is sequenced.
U   2	   1625 
U   2	   1626     IF .fdb[R$$FIX]					! If the file has fixed-length records,
U   2	   1627     THEN						!
U   2	   1628 	iob[IOB$G_REC_SIZE] = .fdb[F$RSIZ];		! put the record length into the IOB.
U   2	   1629 
U   2	   1630 !    iob[IOB$G_BLK_SIZE] = .fdb[F$OVBS];		! Put the blocksize into the IOB.   *** TEMPORARY ***
U   2	   1631 
U   2	   1632 !
U   2	   1633 ! Allocate an FCS block or record I/O buffer.
U   2	   1634 !
U   2	   1635 
U   2	   1636     IF ( .iob[IOB$V_RECORD] AND .iob[IOB$V_INPUT] ) OR	! If this a character-mode input file,
U   2	   1637        ( .iob[IOB$V_STREAM] AND .iob[IOB$V_INPUT] ) 	!
U   2	   1638     THEN						!
U   2	   1639 	BEGIN						!
U   2	   1640 	$XPO_IF_NOT( $XPO_GET_MEM(			! allocate a record buffer.
U   2	   1641 				UNITS = .fdb[F$RSIZ],
U   2	   1642 				RESULT = fdb[F$URBD$A],
U   2	   1643 				FAILURE = 0 ) )
U   2	   1644 	THEN
U   2	   1645 	    $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   2	   1646 
U   2	   1647 	fdb[F$URBD$S] = .fdb[F$RSIZ];			! Save the size of the allocated input record buffer.
U   2	   1648 	END;
U   2	   1649 
U   2	   1650     IF .iob[IOB$V_BINARY]				! If this is a binary-mode file,
U   2	   1651     THEN						! allocate a block I/O buffer.
U   2	   1652 	BEGIN
U   2	   1653 	LOCAL
U   2	   1654 	    device_info :  GLUN$INFO;
U   2	   1655 
U   2	   1656 	GLUN$S( .fdb[F$LUN], device_info );		! Obtain device information.
U   2	   1657 
U   2	   1658 	IF .fdb[F$OVBS] EQL 0 OR			! If no block size has been established
U   2	   1659 	    .device_info[GL$FILES_11]			! or this is a Files-11 device,
U   2	   1660 	THEN						!
U   2	   1661 	    fdb[F$OVBS] = bytes_per_block;		! assume a default block size.
U   2	   1662 
U   2	   1663 	$XPO_IF_NOT( $XPO_GET_MEM(			! Allocate the block I/O buffer.
U   2	   1664 				UNITS = .fdb[F$OVBS],
U   2	   1665 				RESULT = fdb[F$BKDS$A],
U   2	   1666 				FAILURE = 0 ) )
U   2	   1667 	THEN
U   2	   1668 	    $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   2	   1669 
U   2	   1670 	fdb[F$BKDS$S] = .fdb[F$OVBS];			! Save the size of the allocate block I/O buffer.
U   2	   1671 	END;
U   2	   1672 

XOPEN                           RSX-11M File Open                4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 33
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   1673     END;						! End of "FCB block BINDs" code block
U   2	   1674     END;						! End of RSX-11M code block
U   2	   1675 
U   2	   1676 !
U   2	   1677 ! End of the MAIN_BLOCK code block.
U   2	   1678 !
U   2	   1679 
U   2	   1680     $XPO_MAIN_END;					! Terminate MAIN_BLOCK.
U   2	   1681 
U   2	   1682 !+
U   2	   1683 !
U   2	   1684 !	End of RSX-11M OPEN Processing
U   2	   1685 !
U   2	   1686 !-
U   2	   1687 
U   2	   1688 %FI

XOPEN                           RSTS/E File Open                 4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 34
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    2	   1690 %TITLE 'RSTS/E File Open'
    2	   1691 %IF $RSTS %THEN
U   2	   1692 
U   2	   1693 !+
U   2	   1694 !
U   2	   1695 !	RSTS/E OPEN Processing
U   2	   1696 !
U   2	   1697 !-
U   2	   1698 
U   2	   1699     BEGIN
U   2	   1700 
U   2	   1701 !
U   2	   1702 ! Check for RSTS restraints
U   2	   1703 !
U   2	   1704 
U   2	   1705     IF .iob[IOB$V_SEQUENCED]				! RSTS/E does not support sequenced files.
U   2	   1706     THEN
U   2	   1707 	$XPO_QUIT( NO_SEQ );
U   2	   1708 
U   2	   1709 !
U   2	   1710 ! Build a resultant file specification from the specifications passed by the caller,
U   2	   1711 ! and setup the FIRQB with this information.
U   2	   1712 !
U   2	   1713 
U   2	   1714     IF NOT XRST$SPEC_SETUP( .iob )
U   2	   1715     THEN
U   2	   1716         $XPO_QUIT();
U   2	   1717 
U   2	   1718 !
U   2	   1719 ! Bypass opening the user's terminal.
U   2	   1720 !
U   2	   1721 
U   2	   1722     IF .iob[IOB$V_TERMINAL]				! If this is the user's terminal and
U   2	   1723     THEN						!
U   2	   1724 	BEGIN						!
U   2	   1725 	IF .iob[IOB$V_BINARY]				! binary I/O is requested,
U   2	   1726 	THEN						! return an error code.
U   2	   1727 	    $XPO_QUIT( BAD_IO_OPT );			!
U   2	   1728 							!
U   2	   1729 	$XPO_QUIT( NORMAL );				! Otherwise, return a success code to the caller.
U   2	   1730 	END;
U   2	   1731 
U   2	   1732 !
U   2	   1733 ! Assign a RSTS/E channel number to this file.
U   2	   1734 !
U   2	   1735 
U   2	   1736     IF NOT XRST$ASSIGN_CH( .iob )
U   2	   1737     THEN
U   2	   1738     	$XPO_QUIT();
U   2	   1739 
U   2	   1740 !
U   2	   1741 ! Further validate the caller's IOB.
U   2	   1742 !
U   2	   1743 
U   2	   1744     IF .iob[IOB$V_INPUT] AND .iob[IOB$V_OUTPUT]		! If the file is being opened for both input and output,
U   2	   1745     THEN						!
U   2	   1746 	$XPO_QUIT( BAD_IOB, CONFLICT );			! return error codes to the caller.

XOPEN                           RSTS/E File Open                 4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 35
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   1747 
U   2	   1748 !
U   2	   1749 ! Allocate an XPORT set of RSTS/E control blocks.
U   2	   1750 !
U   2	   1751 
U   2	   1752     $XPO_IF_NOT( $XPO_GET_MEM( FULLWORDS = XRSTS$K_CB_LEN,
U   2	   1753     				RESULT = iob[IOB$A_RSTS_CB],
U   2	   1754     				FILL = 0,
U   2	   1755     				FAILURE = 0 ) )
U   2	   1756     THEN
U   2	   1757     	$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   2	   1758 
U   2	   1759     BEGIN
U   2	   1760     BIND
U   2	   1761     	rsts_cb = .iob[IOB$A_RSTS_CB] :  $XRSTS_CB;	! Redeclare the buffer control block.
U   2	   1762 
U   2	   1763 !
U   2	   1764 ! Complete the setup of the FIRQB
U   2	   1765 !
U   2	   1766 
U   2	   1767     $XRSTS_FIRQB[FQFIL] = .iob[IOB$H_CHANNEL] * 2;	! Common FIRQB field (channel number times 2)
U   2	   1768 
U   2	   1769     IF .iob[IOB$V_INPUT]				! Setup all input file FIRQB fields:
U   2	   1770     THEN						!
U   2	   1771     	BEGIN						!
U   2	   1772     	$XRSTS_FIRQB[FQFUN] = OPNFQ;			!    open function code
U   2	   1773     	$XRSTS_FIRQB[FQMODE] = XRSTS$K_SIGN_BIT + 0;	!    normal read/write mode
U   2	   1774     	END;
U   2	   1775 
U   2	   1776     IF .iob[IOB$V_OUTPUT]				! Setup all output FIRQB fields:		
U   2	   1777     THEN						!
U   2	   1778     	IF .iob[IOB$V_APPEND]				! Setup all append file FIRQB fields:
U   2	   1779     	THEN						!
U   2	   1780     	    BEGIN					!
U   2	   1781    	    $XRSTS_FIRQB[FQFUN] = OPNFQ;		!    open function code
U   2	   1782     	    $XRSTS_FIRQB[FQMODE] = XRSTS$K_SIGN_BIT + 2;!    append mode
U   2	   1783     	    END						!
U   2	   1784     	ELSE						! Setup all other output file FIRQB fields:
U   2	   1785     	    BEGIN					!
U   2	   1786     	    $XRSTS_FIRQB[FQFUN] = CREFQ;		!    create function code
U   2	   1787             $XRSTS_FIRQB[FQMODE] = XRSTS$K_SIGN_BIT +0;	!    normal read/write mode
U   2	   1788     	    END;
U   2	   1789 
U   2	   1790 !
U   2	   1791 ! Open the file.
U   2	   1792 !
U   2	   1793 
U   2	   1794     $CALFIP;						! Open the specified file.
U   2	   1795     		
U   2	   1796     IF .$XRSTS_FIRQB[FQIOSTS] EQL 0			! Set an appropriate success completion code.
U   2	   1797     THEN
U   2	   1798     	IF .iob[IOB$V_APPEND] OR .iob[IOB$V_INPUT]
U   2	   1799     	THEN
U   2	   1800     	    iob[IOB$G_COMP_CODE] = XPO$_NORMAL
U   2	   1801     	ELSE
U   2	   1802     	    iob[IOB$G_COMP_CODE] = XPO$_CREATED
U   2	   1803     ELSE

XOPEN                           RSTS/E File Open                 4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 36
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   1804     	BEGIN
U   2	   1805     	IF .iob[IOB$V_OUTPUT] AND			! If an attempt to open an existing file for output fails,
U   2	   1806     	   .$XRSTS_FIRQB[FQIOSTS] EQL RSTS$_NOSUCH	!
U   2	   1807     	THEN						!
U   2	   1808     	    BEGIN					!
U   2	   1809             $XRSTS_FIRQB[FQIOSTS] = 0;			! reinitialize the status word,
U   2	   1810     	    $XRSTS_FIRQB[FQFUN] = CREFQ;		! setup the create subfunction,
U   2	   1811     	    $XRSTS_FIRQB[FQMODE] = XRSTS$K_SIGN_BIT +0; ! and the normal read/write mode.
U   2	   1812     	    $CALFIP;					! Open the file.
U   2	   1813     	    IF .$XRSTS_FIRQB[FQIOSTS] EQL 0
U   2	   1814     	    THEN
U   2	   1815     		iob[IOB$G_COMP_CODE] = XPO$_CREATED
U   2	   1816     	    ELSE
U   2	   1817     		BEGIN
U   2	   1818     		XRST$FIXUP;
U   2	   1819     		XRST$ERROR( .iob, .$XRSTS_FIRQB[FQIOSTS] );
U   2	   1820     		$XPO_QUIT();
U   2	   1821     		END;
U   2	   1822     	    END
U   2	   1823     	ELSE
U   2	   1824     	    BEGIN
U   2	   1825     	    XRST$FIXUP;
U   2	   1826     	    XRST$ERROR( .iob, .$XRSTS_FIRQB[FQIOSTS] );
U   2	   1827     	    $XPO_QUIT();
U   2	   1828     	    END;
U   2	   1829     	END;
U   2	   1830 
U   2	   1831 !
U   2	   1832 ! Get the attributes of a file.
U   2	   1833 !
U   2	   1834 
U   2	   1835     IF .iob[IOB$G_COMP_CODE] EQL XPO$_NORMAL		! If we're reading a file,
U   2	   1836     THEN						! check what type a file it is.
U   2	   1837     	BEGIN						
U   2	   1838     	$XRSTS_INI_FIRQB;				! Initialize the FIRQB.
U   2	   1839     	$XRSTS_FIRQB[FQFUN] = UU$ATR;			! Setup the function code.
U   2	   1840     	$XRSTS_FIRQB[FQFIL] = .iob[IOB$H_CHANNEL];	! Setup the channel number.
U   2	   1841     	$UUO;						! Get the attributes of the file.
U   2	   1842 
U   2	   1843     	IF .$XRSTS_FIRQB[FQIOSTS] NEQ 0			! Report any errors.
U   2	   1844     	THEN
U   2	   1845     	    BEGIN
U   2	   1846     	    XRST$FIXUP;
U   2	   1847     	    XRST$ERROR( .iob, .$XRSTS_FIRQB[FQIOSTS] );
U   2	   1848     	    $XPO_QUIT();
U   2	   1849     	    END;
U   2	   1850 
U   2	   1851     	IF .$XRSTS_FIRQB[FQAT1] NEQ 0			! *** TEMPORARY *** 
U   2	   1852     	THEN						! If the file has attributes, save them:
U   2	   1853     	    BEGIN					!
U   2	   1854     	    rsts_cb[XRSTS$G_AT1] = .$XRSTS_FIRQB[FQAT1];!    word 1
U   2	   1855     	    rsts_cb[XRSTS$G_AT2] = .$XRSTS_FIRQB[FQAT2];!    word 2
U   2	   1856     	    rsts_cb[XRSTS$G_AT5] = .$XRSTS_FIRQB[FQAT5];!    word 5
U   2	   1857    	    rsts_cb[XRSTS$G_AT6] = .$XRSTS_FIRQB[FQAT6];!    word 6
U   2	   1858     	    rsts_cb[XRSTS$G_AT7] = .$XRSTS_FIRQB[FQAT7];!    word 7
U   2	   1859     	    rsts_cb[XRSTS$G_AT8] = .$XRSTS_FIRQB[FQAT8];!    word 8
U   2	   1860 

XOPEN                           RSTS/E File Open                 4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 37
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   1861     	    IF .rsts_cb[XRSTS$V_RECF] EQL RSTS$K_UNDEFINE! Verify that the record format is defined.
U   2	   1862     	    THEN
U   2	   1863     	        $XPO_QUIT( BAD_FORMAT );
U   2	   1864 
U   2	   1865     	    IF .rsts_cb[XRSTS$V_FILO] NEQ RSTS$K_SEQ	! Verify that the record is sequential.
U   2	   1866     	    THEN
U   2	   1867     	    	$XPO_QUIT( BAD_ORG );
U   2	   1868 
U   2	   1869     	    IF .iob[IOB$V_APPEND] AND			! Verify that we are appending to a STREAM ASCII file.
U   2	   1870     		( .rsts_cb[XRSTS$V_RECF] NEQ RSTS$K_STREAM)
U   2	   1871     	    THEN
U   2	   1872     	    	$XPO_QUIT( NO_APPEND, BAD_FORMAT );
U   2	   1873 
U   2	   1874     	    IF .rsts_cb[XRSTS$V_RECF] EQL RSTS$K_FIXED	! Save in the IOB the record size for fixed length records.
U   2	   1875     	    THEN
U   2	   1876     	    	iob[IOB$G_REC_SIZE] = .rsts_cb[XRSTS$G_AT2];
U   2	   1877     	    END;
U   2	   1878     	END;
U   2	   1879 
U   2	   1880 !
U   2	   1881 ! If we're doing output perform a dummy output operation to allocate it's I/O buffer.
U   2	   1882 !
U   2	   1883 
U   2	   1884     IF .iob[IOB$V_OUTPUT]				! If we're doing ouput
U   2	   1885     THEN						!
U   2	   1886 	IF NOT XRST$OUT( .iob )				! allocate an output buffer
U   2	   1887 	THEN						!
U   2	   1888 	    $XPO_QUIT(NO_MEMORY);			! and return to the user if an error occurs.
U   2	   1889 
U   2	   1890     END;						! End of RSTS/E control block BIND
U   2	   1891     END;						! End of RSTS/E code block
U   2	   1892 
U   2	   1893 !
U   2	   1894 ! End of the MAIN_BLOCK code block.
U   2	   1895 !
U   2	   1896 
U   2	   1897     $XPO_MAIN_END;					! Terminate MAIN_BLOCK.
U   2	   1898 
U   2	   1899 !+
U   2	   1900 !
U   2	   1901 !	End of RSTS/E OPEN Processing
U   2	   1902 !
U   2	   1903 !-
U   2	   1904 
U   2	   1905 %FI

XOPEN                           RT-11 File Open                  4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 38
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    2	   1907 %TITLE 'RT-11 File Open'
    2	   1908 %IF $RT11 %THEN
U   2	   1909 
U   2	   1910 !+
U   2	   1911 !
U   2	   1912 !	RT-11 OPEN Processing
U   2	   1913 !
U   2	   1914 !-
U   2	   1915 
U   2	   1916     BEGIN
U   2	   1917     LOCAL
U   2	   1918 	file_parse :  $XPO_SPEC_BLOCK,			! Current file-spec parse block
U   2	   1919 	length;						! Size of requested output file
U   2	   1920 
U   2	   1921     BIND						! Redefine several spec-block fields.
U   2	   1922 	device = file_parse[XPO$T_DEVICE] :  $STR_DESCRIPTOR(),
U   2	   1923 	file_name = file_parse[XPO$T_FILE_NAME] :  $STR_DESCRIPTOR(),
U   2	   1924 	file_type = file_parse[XPO$T_FILE_TYPE] :  $STR_DESCRIPTOR(),
U   2	   1925 	file_size = file_parse[XPO$T_EXTRA] :  $STR_DESCRIPTOR( CLASS = BOUNDED );
U   2	   1926 
U   2	   1927 !
U   2	   1928 ! Check for RT-11 restraints
U   2	   1929 !
U   2	   1930 
U   2	   1931     IF NOT XRT$CHK_BACKGRD()				! Verify that this is a background job.
U   2	   1932     THEN
U   2	   1933 	$XPO_QUIT( FOREGROUND );
U   2	   1934 
U   2	   1935     IF .iob[IOB$V_APPEND]				! The APPEND function is not allowed under RT-11.
U   2	   1936     THEN
U   2	   1937 	$XPO_QUIT( NO_APPEND );
U   2	   1938 
U   2	   1939     IF .iob[IOB$V_SEQUENCED]				! RT-11 does not support sequenced files.
U   2	   1940     THEN
U   2	   1941 	$XPO_QUIT( NO_SEQ );
U   2	   1942 
U   2	   1943 !
U   2	   1944 ! Build a resultant file specification from the specifications passed by the caller.
U   2	   1945 !
U   2	   1946 
U   2	   1947     $XPO_BUILD_SPEC( .iob );
U   2	   1948 
U   2	   1949 !
U   2	   1950 ! Bypass opening the user's terminal.
U   2	   1951 !
U   2	   1952 
U   2	   1953     IF .iob[IOB$V_TERMINAL]				! If this is the user's terminal and
U   2	   1954     THEN						!
U   2	   1955 	BEGIN						!
U   2	   1956 	IF .iob[IOB$V_BINARY]				! binary I/O is requested,
U   2	   1957 	THEN						! return an error code.
U   2	   1958 	    $XPO_QUIT( BAD_IO_OPT );			!
U   2	   1959 							!
U   2	   1960 	$XPO_QUIT( NORMAL );				! Otherwise, return a success code to the caller.
U   2	   1961 	END;
U   2	   1962 
U   2	   1963 !

XOPEN                           RT-11 File Open                  4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 39
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   1964 ! Further validate the caller's IOB.
U   2	   1965 !
U   2	   1966 
U   2	   1967     IF .iob[IOB$V_INPUT] AND .iob[IOB$V_OUTPUT]		! If the file is being opened for both input and output,
U   2	   1968     THEN						!
U   2	   1969 	$XPO_QUIT( BAD_IOB, CONFLICT );			! return error codes to the caller.
U   2	   1970 
U   2	   1971 !
U   2	   1972 ! Parse the resultant file-specification into its individual components.
U   2	   1973 !
U   2	   1974 
U   2	   1975     $XPO_IF_NOT( $XPO_PARSE_SPEC(			! Parse the file-specification.
U   2	   1976 		FILE_SPEC = iob[IOB$T_RESULTANT],
U   2	   1977 		SPEC_BLOCK = file_parse,
U   2	   1978 		FAILURE = 0 ) )
U   2	   1979     THEN
U   2	   1980 	$XPO_QUIT( BAD_RSLT, (.$XPO_STATUS) );
U   2	   1981 
U   2	   1982 !
U   2	   1983 ! Return an error if a file name was not specified.
U   2	   1984 !
U   2	   1985 
U   2	   1986     IF .file_name[STR$H_LENGTH] EQL 0
U   2	   1987     THEN
U   2	   1988 	$XPO_QUIT( BAD_NAME );
U   2	   1989 
U   2	   1990 !
U   2	   1991 ! Setup the LOOKUP/ENTER argument list.
U   2	   1992 !
U   2	   1993 
U   2	   1994     INCR index FROM 0 TO LOOK$K_ARG_LEN-1 DO		! Zero the LOOKUP argument list.
U   2	   1995 	lookup_args[.index,0,%BPVAL,0] = 0;
U   2	   1996 
U   2	   1997 							! Fill in the LOOKUP argument list:
U   2	   1998     XRT$ASCII_RAD50(					!    device name (Radix-50)
U   2	   1999         .device[STR$A_POINTER],				!
U   2	   2000         .device[STR$H_LENGTH] - 1,			!
U   2	   2001         lookup_args[LOOK$T_DEVICE],			!
U   2	   2002         1, 0 );						!
U   2	   2003 							!
U   2	   2004     XRT$ASCII_RAD50(					!    file name (Radix-50)
U   2	   2005         .file_name[STR$A_POINTER],			!
U   2	   2006         .file_name[STR$H_LENGTH],			!
U   2	   2007         lookup_args[LOOK$T_NAME1],			!
U   2	   2008         2, 0 );						!
U   2	   2009 							!
U   2	   2010     XRT$ASCII_RAD50(					!    file type (Radix-50)
U   2	   2011         CH$PLUS(.file_type[STR$A_POINTER], 1),		!
U   2	   2012         .file_type[STR$H_LENGTH] - 1,			!
U   2	   2013         lookup_args[LOOK$T_TYPE],			!
U   2	   2014         1, 0 );						!
U   2	   2015 
U   2	   2016 !
U   2	   2017 ! Fetch the I/O handler for the specified device.
U   2	   2018 !
U   2	   2019 
U   2	   2020     IF NOT XRT$FETCH(.iob, lookup_args[LOOK$T_DEVICE])

XOPEN                           RT-11 File Open                  4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 40
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   2021     THEN
U   2	   2022 	$XPO_QUIT();
U   2	   2023 
U   2	   2024 !
U   2	   2025 ! Assign an RT-11 I/O channel to this file.
U   2	   2026 !
U   2	   2027 
U   2	   2028     WHILE 1 DO						! Loop until we find a free channel.
U   2	   2029 
U   2	   2030         BEGIN
U   2	   2031         INCR channel FROM 0 TO XPO$K_MAX_CHAN+1 DO	! Search for an unused I/O channel.(i.e. unused by XPORT)
U   2	   2032            BEGIN
U   2	   2033 	    IF .channel GTR XPO$K_MAX_CHAN		! If all channels have been assigned,
U   2	   2034 	    THEN					!
U   2	   2035 	       $XPO_QUIT( NO_CHANNEL );			! return an error code to the caller.
U   2	   2036 
U   2	   2037 	    IF NOT .XPO$CHANNELS[.channel]		! If this channel is not assigned,
U   2	   2038 	    THEN					!
U   2	   2039 	       BEGIN					!
U   2	   2040 	       XPO$CHANNELS[.channel] = yes;		! indicate that this channel is in use,
U   2	   2041 	       iob[IOB$H_CHANNEL] = .channel;		! save the number in the IOB,
U   2	   2042 	       channel_assign = yes;			! indicate that a channel has been assigned,
U   2	   2043 	       EXITLOOP;				! and then exit the search loop.
U   2	   2044 	       END;
U   2	   2045 	    END;
U   2	   2046 
U   2	   2047 	    iob[IOB$A_BUFFER_CB] =			! Save the address of the buffer control block.
U   2	   2048 		    XRT$BUFFER_CB[ .iob[IOB$H_CHANNEL],$BASE ];
U   2	   2049 
U   2	   2050 !
U   2	   2051 ! Perform a LOOKUP if we're doing input.
U   2	   2052 !
U   2	   2053 
U   2	   2054         IF .iob[IOB$V_INPUT]				! If this is an open for input,
U   2	   2055         THEN						!
U   2	   2056 	    BEGIN					!
U   2	   2057 	    iob[IOB$G_COMP_CODE] = XPO$_NORMAL;		! assume a successful completion.
U   2	   2058 
U   2	   2059 	    $LOOKUP(					! Perform an RT-11 LOOKUP:
U   2	   2060 		.iob[IOB$H_CHANNEL],			!    channel number
U   2	   2061 		lookup_args, 0,				!    address of argument list
U   2	   2062 		error_code = yes );			!    if an error occurs, then set error_code
U   2	   2063 
U   2	   2064 	    IF .error_code				! If an error occurred and
U   2	   2065 	    THEN					!
U   2	   2066 		BEGIN					!
U   2	   2067 		IF .RT_ERR_EMT				! the error bit is set to 1 then
U   2	   2068 		THEN					!
U   2	   2069 		    $XPO_QUIT( NO_FILE );		! the file does not exist.
U   2	   2070 		error_code = no;			! Otherwise, the channel is in use.
U   2	   2071 		END
U   2	   2072 	    ELSE
U   2	   2073 	       EXITLOOP;				! Successful lookup - channel was not in use.
U   2	   2074 	    END;
U   2	   2075 
U   2	   2076 !
U   2	   2077 ! Perform an ENTER if we're doing output.

XOPEN                           RT-11 File Open                  4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 41
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   2078 !
U   2	   2079 
U   2	   2080         If .iob[IOB$V_OUTPUT]				! If this is an open for output,
U   2	   2081         THEN						!
U   2	   2082 	    BEGIN					!
U   2	   2083 	    iob[IOB$G_COMP_CODE] = XPO$_CREATED;	! assume a successful completion code.
U   2	   2084 	    IF .file_size[STR$H_LENGTH] EQL 0		! If the size wasn't specified,
U   2	   2085 	    THEN					!
U   2	   2086 	        length = -1				! set up the default size (largest empty entry on device).
U   2	   2087 	    ELSE					!
U   2	   2088 	       IF NOT $STR_BINARY(			! Otherwise pick up the resultant size.
U   2	   2089 		    STRING = ( .file_size[STR$H_LENGTH] - 2,
U   2	   2090 			CH$PTR(.file_size[STR$A_POINTER], 1) ),
U   2	   2091 		    RESULT = length,
U   2	   2092 		    OPTION = BASE10,
U   2	   2093 		    RANGE = ( -1, %X'7FFF' ),
U   2	   2094 		    FAILURE = 0 )
U   2	   2095 		THEN
U   2	   2096 		    $XPO_QUIT( BAD_SIZE );
U   2	   2097 
U   2	   2098 	    $ENTER(					! Perform an RT-11 ENTER:
U   2	   2099 		.iob[IOB$H_CHANNEL],			!    channel number
U   2	   2100 		lookup_args,				!    address of argument list
U   2	   2101 		.length, 0,				!    file size specification
U   2	   2102 		error_code = yes );			!    if an error occurs then set error_code
U   2	   2103 
U   2	   2104 	    IF .error_code				! If an error occurred and
U   2	   2105 	    THEN					!
U   2	   2106 		BEGIN					!
U   2	   2107 		IF .RT_ERR_EMT				! and the error bit is set to 1 then
U   2	   2108 		THEN					!
U   2	   2109 		    $XPO_QUIT( NO_SPACE );		! there is not enough room.
U   2	   2110 		error_code = no;			! Otherwise, the channel is in use.
U   2	   2111 		END
U   2	   2112 	    ELSE
U   2	   2113 	       EXITLOOP;				! Successful ENTER - channel was not in use.
U   2	   2114 
U   2	   2115 	    END;
U   2	   2116     END;						! End of channel loop
U   2	   2117 
U   2	   2118 !
U   2	   2119 ! If we're doing output perform a dummy output operation to allocate it's I/O buffer.
U   2	   2120 !
U   2	   2121 
U   2	   2122     IF .iob[IOB$V_OUTPUT]				! If we're doing ouput
U   2	   2123     THEN						!
U   2	   2124 	IF NOT XRT$OUT( .iob )				! allocate an output buffer
U   2	   2125 	THEN						!
U   2	   2126 	    $XPO_QUIT(NO_MEMORY);			! and return to user if an error occurs.
U   2	   2127 
U   2	   2128     END;						! End of RT-11 code block
U   2	   2129 
U   2	   2130 !
U   2	   2131 ! End of the MAIN_BLOCK code block.
U   2	   2132 !
U   2	   2133 
U   2	   2134     $XPO_MAIN_END;					! Terminate MAIN_BLOCK.

XOPEN                           RT-11 File Open                  4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 42
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

U   2	   2135 
U   2	   2136 !
U   2	   2137 ! In the event of an OPEN error, release the  I/O channel and the I/O handler.
U   2	   2138 !
U   2	   2139 
U   2	   2140     IF NOT .iob[IOB$G_COMP_CODE] AND			! If an open error occurred and
U   2	   2141 			.channel_assign			! a channel number was assigned
U   2	   2142     THEN						!
U   2	   2143 	BEGIN						!
U   2	   2144 	XPO$CHANNELS[ .iob[IOB$H_CHANNEL] ] = no;	! release the channel number
U   2	   2145 	iob[IOB$H_CHANNEL] = 0;				! and zero the IOB  channel field.
U   2	   2146 	END;
U   2	   2147 
U   2	   2148 !+
U   2	   2149 !
U   2	   2150 !	End of RT-11 OPEN Processing
U   2	   2151 !
U   2	   2152 !-
U   2	   2153 
U   2	   2154  %FI

XOPEN                           XPO$OPEN Routine Termination     4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 43
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

    2	   2156 %TITLE 'XPO$OPEN Routine Termination'
    2	   2157 
    2	   2158 !+
    2	   2159 !
    2	   2160 !	Continuation of system-independent file rename processing
    2	   2161 !
    2	   2162 !-
    2	   2163 
    2	   2164 !
    2	   2165 ! Update the caller's IOB.
    2	   2166 !
    2	   2167 
    2	   2168     iob[IOB$V_OPEN] = .iob[IOB$G_COMP_CODE];		! A success completion code means the file was opened.
    2	   2169 
    2	   2170 !
    2	   2171 ! Call an appropriate action routine.
    2	   2172 !
    2	   2173 
    2	   2174     $XPO_ACTION_RTN( .iob );				! Call a success or failure action routine.
    2	   2175 
    2	   2176 !
    2	   2177 ! Cleanup the IOB after a file open failure.
    2	   2178 !
    2	   2179 
    2	   2180     IF NOT .iob[IOB$G_COMP_CODE] AND NOT .iob[IOB$V_AUTO_CONC]
    2	   2181     THEN
    2	   2182 	$XPO_ZAP_IOB( .iob );
    2	   2183 
    2	   2184 !
    2	   2185 ! Return to the caller.
    2	   2186 !
    2	   2187 
    2	   2188     RETURN .iob[IOB$G_COMP_CODE]			! Return the IOB completion code to the caller.
    2	   2189 
    2	   2190     END;						! End of XPO$OPEN routine
    1	   2191 END
    1	   2192 ELUDOM

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 44
X1.2-45                                                         19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

				      .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC
				      .proc   XPO$OPEN
				      .align 32
				      .global  XPO$OPEN
			XPO$OPEN:											   // 000218
			   { .mii 
002C059C1DC0     0000		      alloc   r119 = rspfs, 3, 86, 7, 0
0000B2000A00     0001		      sxt4    r40 = IOB				// r40 = r32				   // 000340
0119E8CA0300     0002		      adds    r12 = -304, r12								   // 000218
			   }
			   { .mii 
000008000000     0010		      nop.m   0
000188001D80     0011		      mov     r118 = br0
010800101E00     0012		      mov     r120 = r1 ;;
			   }
			   { .mmi 
0080828000C0     0020		      ld4     r3 = [r40] ;;								   // 000340
01C438006180     0021		      cmp4.eq pr6, pr7 = r3, r0
000008000000     0022		      nop.i   0
			   }
			   { .mfb 
000008000000     0030		      nop.m   0
000008000000     0031		      nop.f   0
008600006007     0032	       (pr7)  br.cond.dpnt.few L$2
			   }
			   { .mmi 
01080A8B0200     0040		      adds    r8 = 216, r40 ;;
008080800200     0041		      ld4     r8 = [r8]
000008000000     0042		      nop.i   0 ;;
			   }
			   { .mmi 
01C448010200     0050		      cmp4.eq pr8, pr9 = r8, r0 ;;
01C0000011C9     0051	       (pr9)  cmp.eq.unc pr7, pr0 = r0, r0
01C000001188     0052	       (pr8)  cmp.eq.unc pr6, pr0 = r0, r0
			   }
	         0060	L$2:
			   { .mbb 
012000002A40     0060		      mov     r41 = 1
008600002006     0061	       (pr6)  br.cond.dpnt.few L$3
008600008007     0062	       (pr7)  br.cond.dpnt.few L$4
			   }
	         0070	L$3:
			   { .mii 
01200007A240     0070		      mov     r9 = 61
012000006440     0071		      mov     r17 = 3
000008000000     0072		      nop.i   0 ;;
			   }
			   { .mmi 
00AC42812080     0080		      st2     [r40] = r9, 2 ;;
00AC02852040     0081		      st1     [r40] = r41, 1
000008000000     0082		      nop.i   0 ;;
			   }
			   { .mmi 
00BC0A823F40     0090		      st1     [r40] = r17, -3 ;;
000008000000     0091		      nop.m   0
000008000000     0092		      nop.i   0
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 45
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

	         00A0	L$4:
			   { .mii 
01200001CA80     00A0		      mov     r42 = 14
012000004AC0     00A1		      mov     r43 = 2
000008000000     00A2		      nop.i   0 ;;
			   }
			   { .mmi 
00A04283C4C0     00B0		      ld2     r19 = [r40], 30 ;;
00AC02854040     00B1		      st1     [r40] = r42, 1
01CC0137A2C0     00B2		      cmp4.eq pr11, pr0 = 61, r19 ;;
			   }
			   { .mfb 
00BC0A857840     00C0		      st1     [r40] = r43, -31
000008000000     00C1		      nop.f   0
00860000A00B     00C2	       (pr11) br.cond.dpnt.few L$8 ;;
			   }
			   { .mii 
01080A8B05C0     00D0		      adds    r23 = 216, r40
01080A8B8640     00D1		      adds    r25 = 220, r40
000008000000     00D2		      nop.i   0
			   }
			   { .mlx 
000008000000     00E0		      nop.m   0
000000000000     00E1		      movl    r22 = 2146308 ;;
019800410B
			   }
			   { .mlx 
008C8172C000     00F0		      st4     [r23] = r22
000000000000     00F1		      movl    r24 = 2138210 ;;
019400588C
			   }
			   { .mfb 
008C81930000     0100		      st4     [r25] = r24
000008000000     0101		      nop.f   0
0080003A4000     0102		      br.sptk.few L$9 ;;
			   }
	         0110	L$8:
			   { .mii 
01080A8B8680     0110		      adds    r26 = 220, r40
012000002640     0111		      mov     r25 = 1									   // 000364
0000B2001E40     0112		      sxt4    r121 = IOB			// r121 = r32
			   }
			   { .mmi 
010800000B00     0120		      mov     HEADER_XAB = r0 ;;		// r44 = r0				   // 000353
008C81A00000     0121		      st4     [r26] = r0								   // 000340
000008000000     0122		      nop.i   0
			   }
			   { .mfb 
000008000000     0130		      nop.m   0
000008000000     0131		      nop.f   0
00A000001000     0132		      br.call.sptk.many br0 = XPO$VALID_IOB						   // 000364
			   }
			   { .mib 
010807800040     0140		      mov     r1 = r120
00A0308001C0     0141		      tbit.z  pr7, pr6 = r8, 0
00860039C007     0142	       (pr7)  br.cond.dpnt.few L$9
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 46
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mmi 
010802858A00     0150		      adds    r40 = 44, r40 ;;								   // 000366
00B08A8A8B40     0151		      ld4     r45 = [r40], -44
000008000000     0152		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0160		      nop.m   0
00A402D4CBC0     0161		      extr.u  r47 = r45, 19, 1
00A402D48B80     0162		      extr.u  r46 = r45, 18, 1 ;;
			   }
			   { .mii 
010162F02BC0     0170		      and     r47 = 1, r47
010162E02B80     0171		      and     r46 = 1, r46 ;;
010072F5CB80     0172		      or      r46 = r46, r47 ;;
			   }
			   { .mfb 
01C402E00240     0180		      cmp4.eq pr9, pr0 = r0, r46
000008000000     0181		      nop.f   0
008600006009     0182	       (pr9)  br.cond.dpnt.few L$12
			   }
			   { .mmi 
012000800C00     0190		      addl    r48 = 131072, r0 ;;							   // 000368
01007305AB40     0191		      or      r45 = r45, r48
010802858A00     0192		      adds    r40 = 44, r40 ;;
			   }
			   { .mmi 
00BC8A85B500     01A0		      st4     [r40] = r45, -44 ;;
000008000000     01A1		      nop.m   0
000008000000     01A2		      nop.i   0
			   }
	         01B0	L$12:												   // 000366
			   { .mmi 
010802858A00     01B0		      adds    r40 = 44, r40 ;;								   // 000370
00B08A8A8C80     01B1		      ld4     r50 = [r40], -44
000008000000     01B2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     01C0		      nop.m   0
00A403240CC0     01C1		      extr.u  r51 = r50, 16, 1
00A403244C80     01C2		      extr.u  r50 = r50, 17, 1 ;;
			   }
			   { .mii 
010163302CC0     01D0		      and     r51 = 1, r51
010163202C80     01D1		      and     r50 = 1, r50 ;;
010073266C80     01D2		      or      r50 = r51, r50 ;;
			   }
			   { .mfb 
01C4032002C0     01E0		      cmp4.eq pr11, pr0 = r0, r50
000008000000     01E1		      nop.f   0
00860000400B     01E2	       (pr11) br.cond.dpnt.few L$14								   // 000371
			   }
			   { .mfb 
010800000D00     01F0		      mov     r52 = r0
000008000000     01F1		      nop.f   0
00800002E000     01F2		      br.sptk.few L$15 ;;
			   }
	         0200	L$14:												   // 000373

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 47
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mii 
012000100D40     0200		      add     r53 = @ltoff($STR$STRING2), r1
010802808A00     0201		      adds    r40 = 4, r40
01200000C640     0202		      mov     r25 = 6
			   }
			   { .mii 
0119F80FFF00     0210		      adds    r124 = -1, r0
0000B0001F80     0211		      sxt4    r126 = r0
0000B0001F40     0212		      sxt4    r125 = r0 ;;
			   }
			   { .mii 
0080C3500D40     0220		      ld8     r53 = $STR$STRING2		// r53 = [r53]
012400001E40     0221		      addl    r121 = 16384, r0
000008000000     0222		      nop.i   0 ;;
			   }
			   { .mii 
00B08A8F9E80     0230		      ld4     r122 = [r40], -4
0000B3501EC0     0231		      sxt4    r123 = r53 ;;
0000B7A01E80     0232		      sxt4    r122 = r122
			   }
			   { .mfb 
000008000000     0240		      nop.m   0
000008000000     0241		      nop.f   0
00A000001000     0242		      br.call.sptk.many br0 = XST$EQL
			   }
			   { .mib 
010807800040     0250		      mov     r1 = r120
00A0308001C0     0251		      tbit.z  pr7, pr6 = r8, 0
008600008007     0252	       (pr7)  br.cond.dpnt.few L$17								   // 000375
			   }
			   { .mmi 
012000002D80     0260		      mov     r54 = 1 ;;
000008000000     0261		      nop.m   0
00A03B600200     0262		      tbit.z  pr8, pr7 = r54, 0								   // 000377
			   }
			   { .mfb 
000008000000     0270		      nop.m   0
000008000000     0271		      nop.f   0
008600012008     0272	       (pr8)  br.cond.dpnt.few L$20
			   }
			   { .mfb 
012000002DC0     0280		      mov     r55 = 1
000008000000     0281		      nop.f   0
00800001A000     0282		      br.sptk.few L$21 ;;
			   }
	         0290	L$17:
			   { .mii 
010802808A00     0290		      adds    r40 = 4, r40
010803511F00     0291		      adds    r124 = 8, r53
01200000C640     0292		      mov     r25 = 6
			   }
			   { .mii 
012400001E40     02A0		      addl    r121 = 16384, r0
0000B0001F80     02A1		      sxt4    r126 = r0
0000B0001F40     02A2		      sxt4    r125 = r0 ;;
			   }
			   { .mii 

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 48
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

00B08A8F9E80     02B0		      ld4     r122 = [r40], -4
010800000D80     02B1		      mov     r54 = r0									   // 000375
0000B7C01EC0     02B2		      sxt4    r123 = r124 ;;								   // 000377
			   }
			   { .mib 
0119F80FFF00     02C0		      adds    r124 = -1, r0
0000B7A01E80     02C1		      sxt4    r122 = r122
00A000001000     02C2		      br.call.sptk.many br0 = XST$EQL
			   }
			   { .mii 
010807800040     02D0		      mov     r1 = r120
00A030800000     02D1		      tbit.z  pr0, pr6 = r8, 0 ;;
010800002D86     02D2	       (pr6)  adds    r54 = 1, r0 ;;								   // 000375
			   }
			   { .mib 
000008000000     02E0		      nop.m   0
00A03B600200     02E1		      tbit.z  pr8, pr7 = r54, 0								   // 000377
008600004008     02E2	       (pr8)  br.cond.dpnt.few L$20
			   }
			   { .mfb 
012000002DC0     02F0		      mov     r55 = 1
000008000000     02F1		      nop.f   0
00800000C000     02F2		      br.sptk.few L$21 ;;
			   }
	         0300	L$20:												   // 000380
			   { .mii 
010802808A00     0300		      adds    r40 = 4, r40
010803521F00     0301		      adds    r124 = 16, r53
01200000C640     0302		      mov     r25 = 6
			   }
			   { .mii 
012400001E40     0310		      addl    r121 = 16384, r0
0000B0001F80     0311		      sxt4    r126 = r0
0000B0001F40     0312		      sxt4    r125 = r0 ;;
			   }
			   { .mii 
00B08A8F9E80     0320		      ld4     r122 = [r40], -4
010800000DC0     0321		      mov     r55 = r0									   // 000377
0000B7C01EC0     0322		      sxt4    r123 = r124 ;;								   // 000380
			   }
			   { .mib 
0119F80FFF00     0330		      adds    r124 = -1, r0
0000B7A01E80     0331		      sxt4    r122 = r122
00A000001000     0332		      br.call.sptk.many br0 = XST$EQL
			   }
			   { .mii 
010807800040     0340		      mov     r1 = r120
00A030800000     0341		      tbit.z  pr0, pr6 = r8, 0 ;;
010800002DC6     0342	       (pr6)  adds    r55 = 1, r0 ;;								   // 000377
			   }
	         0350	L$21:
			   { .mii 
010800000D00     0350		      mov     r52 = r0									   // 000371
00A03B700000     0351		      tbit.z  pr0, pr7 = r55, 0 ;;
010800002D07     0352	       (pr7)  adds    r52 = 1, r0 ;;
			   }
	         0360	L$15:

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 49
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mib 
000008000000     0360		      nop.m   0
00A043400240     0361		      tbit.z  pr9, pr8 = r52, 0								   // 000370
008600008009     0362	       (pr9)  br.cond.dpnt.few L$23
			   }
			   { .mii 
010802858A00     0370		      adds    r40 = 44, r40								   // 000384
012000C00E40     0371		      addl    r57 = 196608, r0								   // 000385
000008000000     0372		      nop.i   0 ;;
			   }
			   { .mmi 
008082800E00     0380		      ld4     r56 = [r40] ;;								   // 000384
010073970E00     0381		      or      r56 = r56, r57								   // 000385
000008000000     0382		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8A871500     0390		      st4     [r40] = r56, -44 ;;
000008000000     0391		      nop.m   0
000008000000     0392		      nop.i   0
			   }
	         03A0	L$23:												   // 000370
			   { .mmi 
010802858A00     03A0		      adds    r40 = 44, r40 ;;								   // 000388
00B08A8A8EC0     03A1		      ld4     r59 = [r40], -44
000008000000     03A2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     03B0		      nop.m   0
00A403B44F00     03B1		      extr.u  r60 = r59, 17, 1 ;;
00A053C002C0     03B2		      tbit.z  pr11, pr10 = r60, 0
			   }
			   { .mfb 
000008000000     03C0		      nop.m   0
000008000000     03C1		      nop.f   0
00860000600A     03C2	       (pr10) br.cond.dpnt.few L$24
			   }
			   { .mmi 
012000400F40     03D0		      addl    r61 = 65536, r0 ;;							   // 000390
010073D76EC0     03D1		      or      r59 = r59, r61
010802858A00     03D2		      adds    r40 = 44, r40 ;;
			   }
			   { .mmi 
00BC8A877500     03E0		      st4     [r40] = r59, -44 ;;
000008000000     03E1		      nop.m   0
000008000000     03E2		      nop.i   0
			   }
	         03F0	L$24:												   // 000388
			   { .mmi 
010802860A00     03F0		      adds    r40 = 48, r40 ;;								   // 000392
00B08A8A0FC0     03F1		      ld4     r63 = [r40], -48
000008000000     03F2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0400		      nop.m   0
00A403F11000     0401		      extr.u  r64 = r63, 4, 1 ;;
00A064000340     0402		      tbit.z  pr13, pr12 = r64, 0
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 50
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mfb 
000008000000     0410		      nop.m   0
000008000000     0411		      nop.f   0
00860000C00C     0412	       (pr12) br.cond.dpnt.few L$27
			   }
			   { .mii 
000008000000     0420		      nop.m   0
00A403F09080     0421		      extr.u  r66 = r63, 2, 1								   // 000393
00A403F01040     0422		      extr.u  r65 = r63, 0, 1 ;;
			   }
			   { .mii 
010164203080     0430		      and     r66 = 1, r66
010164103040     0431		      and     r65 = 1, r65
00A403F050C0     0432		      extr.u  r67 = r63, 1, 1 ;;							   // 000394
			   }
			   { .mii 
010074283040     0440		      or      r65 = r65, r66								   // 000393
0101643030C0     0441		      and     r67 = 1, r67 ;;								   // 000394
010074383040     0442		      or      r65 = r65, r67 ;;
			   }
			   { .mmi 
01C4741003C0     0450		      cmp4.eq pr15, pr14 = r0, r65 ;;
01C00000134E     0451	       (pr14) cmp.eq.unc pr13, pr0 = r0, r0							   // 000392
01C00000130F     0452	       (pr15) cmp.eq.unc pr12, pr0 = r0, r0
			   }
			   { .bbb 
00860000200C     0460	       (pr12) br.cond.dpnt.few L$27
004000000000     0461		      nop.b   0
00860000600D     0462	       (pr13) br.cond.dpnt.few L$28
			   }
	         0470	L$27:
			   { .mii 
010173F10FC0     0470		      or      r63 = 8, r63								   // 000396
010802860A00     0471		      adds    r40 = 48, r40
000008000000     0472		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8A87F400     0480		      st4     [r40] = r63, -48 ;;
000008000000     0481		      nop.m   0
000008000000     0482		      nop.i   0
			   }
	         0490	L$28:												   // 000392
			   { .mii 
010802860A00     0490		      adds    r40 = 48, r40								   // 000402
013FFECFF180     0491		      addl    r70 = -262145, r0
000008000000     0492		      nop.i   0 ;;
			   }
			   { .mmi 
008082801140     04A0		      ld4     r69 = [r40] ;;
01006468B140     04A1		      and     r69 = r69, r70
000008000000     04A2		      nop.i   0 ;;
			   }
			   { .mmi 
00AC8288A680     04B0		      st4     [r40] = r69, 26 ;;
00B04A86D140     04B1		      ld2     r69 = [r40], -74								   // 000404
000008000000     04B2		      nop.i   0 ;;
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 51
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mii 
000008000000     04C0		      nop.m   0
0000AC501140     04C1		      sxt2    r69 = r69 ;;
01C4345001C0     04C2		      cmp4.eq pr7, pr6 = r0, r69
			   }
			   { .mfb 
000008000000     04D0		      nop.m   0
000008000000     04D1		      nop.f   0
008600004006     04D2	       (pr6)  br.cond.dpnt.few L$29
			   }
			   { .mmi 
010802894A00     04E0		      adds    r40 = 74, r40 ;;								   // 000406
00BC4A852D80     04E1		      st2     [r40] = r41, -74
000008000000     04E2		      nop.i   0 ;;
			   }
	         04F0	L$29:												   // 000404
			   { .mmi 
010802860A00     04F0		      adds    r40 = 48, r40 ;;								   // 000415
00B08A8A1240     04F1		      ld4     r73 = [r40], -48
000008000000     04F2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0500		      nop.m   0
00A404941280     0501		      extr.u  r74 = r73, 16, 1 ;;
00A044A00240     0502		      tbit.z  pr9, pr8 = r74, 0
			   }
			   { .mfb 
000008000000     0510		      nop.m   0
000008000000     0511		      nop.f   0
008600006009     0512	       (pr9)  br.cond.dpnt.few L$32
			   }
			   { .mlx 
01080A8B1300     0520		      adds    r76 = 216, r40								   // 000417
800000000000     0521		      movl    r75 = 2138602 ;;
0194305AA5
			   }
			   { .mfb 
008C84C96000     0530		      st4     [r76] = r75
000008000000     0531		      nop.f   0
00800031E000     0532		      br.sptk.few L$9 ;;
			   }
	         0540	L$32:												   // 000415
			   { .mii 
000008000000     0540		      nop.m   0
00A40490D340     0541		      extr.u  r77 = r73, 3, 1								   // 000420
00A0549002C0     0542		      tbit.z  pr11, pr10 = r73, 0 ;;							   // 000419
			   }
			   { .mii 
01C0000011CB     0550	       (pr11) cmp.eq.unc pr7, pr0 = r0, r0
00A404909380     0551		      extr.u  r78 = r73, 2, 1								   // 000422
01C00000118A     0552	       (pr10) cmp.eq.unc pr6, pr0 = r0, r0 ;;							   // 000419
			   }
			   { .mii 
01C0000012C7     0560	       (pr7)  cmp.eq.unc pr11, pr0 = r0, r0
00A074D003C0     0561		      tbit.z  pr15, pr14 = r77, 0
01C000001286     0562	       (pr6)  cmp.eq.unc pr10, pr0 = r0, r0 ;;
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 52
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mii 
01C00000124F     0570	       (pr15) cmp.eq.unc pr9, pr0 = r0, r0
00A064E00340     0571		      tbit.z  pr13, pr12 = r78, 0							   // 000421
01C00000120E     0572	       (pr14) cmp.eq.unc pr8, pr0 = r0, r0 ;;							   // 000419
			   }
			   { .mii 
01C0000013CD     0580	       (pr13) cmp.eq.unc pr15, pr0 = r0, r0							   // 000421
00A4049053C0     0581		      extr.u  r79 = r73, 1, 1								   // 000423
01C00000138C     0582	       (pr12) cmp.eq.unc pr14, pr0 = r0, r0							   // 000421
			   }
			   { .mmi 
01C2500002C9     0590	       (pr9)  cmp.eq.or.andcm pr11, pr10 = r0, r0 ;;						   // 000419
01C2300001CF     0591	       (pr15) cmp.eq.or.andcm pr7, pr6 = r0, r0							   // 000421
00A064F00340     0592		      tbit.z  pr13, pr12 = r79, 0 ;;							   // 000423
			   }
			   { .mii 
01C258000286     05A0	       (pr6)  cmp.eq.or.andcm pr10, pr11 = r0, r0						   // 000420
01C00000118D     05A1	       (pr13) cmp.eq.unc pr6, pr0 = r0, r0							   // 000423
01C0000011CC     05A2	       (pr12) cmp.eq.unc pr7, pr0 = r0, r0 ;;
			   }
			   { .mii 
01C000001346     05B0	       (pr6)  cmp.eq.unc pr13, pr0 = r0, r0
01C000001307     05B1	       (pr7)  cmp.eq.unc pr12, pr0 = r0, r0
01C23800000F     05B2	       (pr15) cmp.eq.or.andcm pr0, pr7 = r0, r0 ;;						   // 000425
			   }
			   { .mmi 
01C260000349     05C0	       (pr9)  cmp.eq.or.andcm pr13, pr12 = r0, r0 ;;						   // 000423
01C00000134E     05C1	       (pr14) cmp.eq.unc pr13, pr0 = r0, r0							   // 000427
01C25800028C     05C2	       (pr12) cmp.eq.or.andcm pr10, pr11 = r0, r0 ;;						   // 000422
			   }
			   { .mii 
01C268000009     05D0	       (pr9)  cmp.eq.or.andcm pr0, pr13 = r0, r0						   // 000427
01C258000287     05D1	       (pr7)  cmp.eq.or.andcm pr10, pr11 = r0, r0 ;;						   // 000424
01C25800028D     05D2	       (pr13) cmp.eq.or.andcm pr10, pr11 = r0, r0						   // 000426
			   }
			   { .mfb 
000008000000     05E0		      nop.m   0
000008000000     05E1		      nop.f   0
00860000A00A     05E2	       (pr10) br.cond.dpnt.few L$34								   // 000427
			   }
			   { .mmi 
0108028B0A00     05F0		      adds    r40 = 88, r40 ;;								   // 000428
00B08A851400     05F1		      ld4     r80 = [r40], -88
000008000000     05F2		      nop.i   0 ;;
			   }
			   { .mmi 
01C465000180     0600		      cmp4.eq pr6, pr12 = r0, r80 ;;
01C260000188     0601	       (pr8)  cmp.eq.or.andcm pr6, pr12 = r0, r0
000008000000     0602		      nop.i   0 ;;
			   }
			   { .mib 
01C0000012C6     0610	       (pr6)  cmp.eq.unc pr11, pr0 = r0, r0							   // 000427
01C00000128C     0611	       (pr12) cmp.eq.unc pr10, pr0 = r0, r0
00860000400A     0612	       (pr10) br.cond.dpnt.few L$34								   // 000419
			   }
			   { .mfb 
000008000000     0620		      nop.m   0

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 53
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

000008000000     0621		      nop.f   0
00860000A00B     0622	       (pr11) br.cond.dpnt.few L$35
			   }
	         0630	L$34:
			   { .mii 
01080A8B1480     0630		      adds    r82 = 216, r40								   // 000431
01080A8B9500     0631		      adds    r84 = 220, r40
000008000000     0632		      nop.i   0
			   }
			   { .mlx 
000008000000     0640		      nop.m   0
800000000000     0641		      movl    r81 = 2146308 ;;
0198004128
			   }
			   { .mlx 
008C852A2000     0650		      st4     [r82] = r81
800000000000     0651		      movl    r83 = 2138330 ;;
01941056A9
			   }
			   { .mfb 
008C854A6000     0660		      st4     [r84] = r83
000008000000     0661		      nop.f   0
0080002F8000     0662		      br.sptk.few L$9 ;;
			   }
	         0670	L$35:												   // 000419
			   { .mmi 
010802858A00     0670		      adds    r40 = 44, r40 ;;								   // 000433
00B08A8A9540     0671		      ld4     r85 = [r40], -44
000008000000     0672		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0680		      nop.m   0
00A405551580     0681		      extr.u  r86 = r85, 20, 1 ;;
00A03D6003C0     0682		      tbit.z  pr15, pr7 = r86, 0
			   }
			   { .mfb 
000008000000     0690		      nop.m   0
000008000000     0691		      nop.f   0
00860000600F     0692	       (pr15) br.cond.dpnt.few L$37
			   }
			   { .mlx 
01080A8B1600     06A0		      adds    r88 = 216, r40								   // 000435
800000000000     06A1		      movl    r87 = 2138202 ;;
01940056AB
			   }
			   { .mfb 
008C858AE000     06B0		      st4     [r88] = r87
000008000000     06B1		      nop.f   0
0080002EE000     06B2		      br.sptk.few L$9 ;;
			   }
	         06C0	L$37:												   // 000463
			   { .mii 
012000069680     06C0		      mov     r90 = 52									   // 000465
012000021640     06C1		      mov     r89 = 16									   // 000464
00A405541540     06C2		      extr.u  r85 = r85, 16, 1 ;;							   // 000467
			   }
			   { .mii 

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 54
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

010005A51680     06D0		      add     r90 = r40, r90								   // 000465
00A06D500180     06D1		      tbit.z  pr6, pr13 = r85, 0							   // 000467
0100059516C0     06D2		      add     r91 = r40, r89								   // 000464
			   }
			   { .mfb 
000008000000     06E0		      nop.m   0
000008000000     06E1		      nop.f   0
00860000C006     06E2	       (pr6)  br.cond.dpnt.few L$39								   // 000467
			   }
			   { .mii 
012000005740     06F0		      mov     r93 = 2									   // 000473
01C24800020E     06F1	       (pr14) cmp.eq.or.andcm pr8, pr9 = r0, r0							   // 000471
01200001D780     06F2		      mov     r94 = 14									   // 000473
			   }
			   { .mmi 
0111649DF240     0700		      and     r73 = -17, r73								   // 000470
01200807D800     0701		      mov     r96 = 190									   // 000476
010802860A00     0702		      adds    r40 = 48, r40 ;;								   // 000470
			   }
			   { .mmi 
010805D017C9     0710	       (pr9)  mov     r95 = r93									   // 000473
00BC8A893400     0711		      st4     [r40] = r73, -48								   // 000470
010805A07680     0712		      adds    r90 = 3, r90 ;;								   // 000476
			   }
			   { .mmi 
010805E017C8     0720	       (pr8)  mov     r95 = r94									   // 000473
00BC0DAC1FC0     0721		      st1     [r90] = r96, -1								   // 000476
000008000000     0722		      nop.i   0 ;;
			   }
			   { .mfi 
008C05ABE000     0730		      st1     [r90] = r95								   // 000473
000008000000     0731		      nop.f   0
000008000000     0732		      nop.i   0
			   }
	         0740	L$39:												   // 000467
			   { .mmi 
010802860A00     0740		      adds    r40 = 48, r40 ;;								   // 000479
00B08A8A1880     0741		      ld4     r98 = [r40], -48
000008000000     0742		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0750		      nop.m   0
00A40624D880     0751		      extr.u  r98 = r98, 19, 1 ;;
00A066200280     0752		      tbit.z  pr10, pr12 = r98, 0
			   }
			   { .mfb 
000008000000     0760		      nop.m   0
000008000000     0761		      nop.f   0
00860005C00C     0762	       (pr12) br.cond.dpnt.few L$40
			   }
			   { .mmi 
010802858A00     0770		      adds    r40 = 44, r40 ;;								   // 000482
00B08A8A98C0     0771		      ld4     r99 = [r40], -44
000008000000     0772		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0780		      nop.m   0

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 55
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

00A4063458C0     0781		      extr.u  r99 = r99, 17, 1 ;;
00A05E3001C0     0782		      tbit.z  pr7, pr11 = r99, 0
			   }
			   { .mfb 
000008000000     0790		      nop.m   0
000008000000     0791		      nop.f   0
008600004007     0792	       (pr7)  br.cond.dpnt.few L$43
			   }
			   { .mfb 
010800001900     07A0		      mov     r100 = r0
000008000000     07A1		      nop.f   0
00800000E000     07A2		      br.sptk.few L$44 ;;
			   }
	         07B0	L$43:												   // 000485
			   { .mii 
012000101940     07B0		      add     r101 = @ltoff($STR$PATTERN), r1
010802808A00     07B1		      adds    r40 = 4, r40
01200000E640     07B2		      mov     r25 = 7
			   }
			   { .mii 
012400003E40     07C0		      addl    r121 = 16385, r0
0000B0001FC0     07C1		      sxt4    r127 = r0
0000B0001F80     07C2		      sxt4    r126 = r0 ;;
			   }
			   { .mii 
0080C6501940     07D0		      ld8     r101 = $STR$PATTERN		// r101 = [r101]
010800001900     07D1		      mov     r100 = r0									   // 000482
0000B0001F40     07D2		      sxt4    r125 = r0 ;;								   // 000485
			   }
			   { .mii 
00B08A8F9E80     07E0		      ld4     r122 = [r40], -4
0000B0001F00     07E1		      sxt4    r124 = r0
0000B6501EC0     07E2		      sxt4    r123 = r101 ;;
			   }
			   { .mib 
000008000000     07F0		      nop.m   0
0000B7A01E80     07F1		      sxt4    r122 = r122
00A000001000     07F2		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mii 
010807800040     0800		      mov     r1 = r120
00A030800000     0801		      tbit.z  pr0, pr6 = r8, 0 ;;
010800003906     0802	       (pr6)  adds    r100 = 1, r0 ;;								   // 000482
			   }
	         0810	L$44:
			   { .mib 
000008000000     0810		      nop.m   0
00A03E400200     0811		      tbit.z  pr8, pr7 = r100, 0
008600038008     0812	       (pr8)  br.cond.dpnt.few L$46
			   }
			   { .mlx 
010802860A00     0820		      adds    r40 = 48, r40								   // 000488
800000000001     0821		      movl    r103 = 4194304 ;;
0180000033
			   }
			   { .mmi 
008082801980     0830		      ld4     r102 = [r40] ;;

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 56
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

0100767CD9C0     0831		      or      r103 = r102, r103
00A406605980     0832		      extr.u  r102 = r102, 1, 1 ;;							   // 000490
			   }
			   { .mii 
008C828CE000     0840		      st4     [r40] = r103								   // 000488
00A04E600280     0841		      tbit.z  pr10, pr9 = r102, 0							   // 000490
0119FA8A0A00     0842		      adds    r40 = -48, r40								   // 000488
			   }
			   { .mfb 
000008000000     0850		      nop.m   0
000008000000     0851		      nop.f   0
00860000A00A     0852	       (pr10) br.cond.dpnt.few L$48 ;;								   // 000490
			   }
			   { .mii 
01080A8B1A80     0860		      adds    r106 = 216, r40								   // 000492
01080A8B9B00     0861		      adds    r108 = 220, r40
000008000000     0862		      nop.i   0
			   }
			   { .mlx 
000008000000     0870		      nop.m   0
800000000000     0871		      movl    r105 = 2146308 ;;
0198004134
			   }
			   { .mlx 
008C86AD2000     0880		      st4     [r106] = r105
800000000000     0881		      movl    r107 = 2138330 ;;
01941056B5
			   }
			   { .mfb 
008C86CD6000     0890		      st4     [r108] = r107
000008000000     0891		      nop.f   0
0080002B2000     0892		      br.sptk.few L$9 ;;
			   }
	         08A0	L$48:												   // 000495
			   { .mii 
00AC45B00080     08A0		      st2     [r91] = r0, 2
01200000A640     08A1		      mov     r25 = 5									   // 000500
0000B0001F40     08A2		      sxt4    r125 = r0
			   }
			   { .mii 
012400001E40     08B0		      addl    r121 = 16384, r0
0000B0001F00     08B1		      sxt4    r124 = r0 ;;
000008000000     08B2		      nop.i   0
			   }
			   { .mmi 
00AC05B54040     08C0		      st1     [r91] = r42, 1 ;;								   // 000495
00AC05B56040     08C1		      st1     [r91] = r43, 1
000008000000     08C2		      nop.i   0 ;;
			   }
			   { .mii 
00BC8DB01F00     08D0		      st4     [r91] = r0, -4
010802808A00     08D1		      adds    r40 = 4, r40								   // 000500
000008000000     08D2		      nop.i   0 ;;
			   }
			   { .mii 
00B08A8F9E80     08E0		      ld4     r122 = [r40], -4
0000B5B01EC0     08E1		      sxt4    r123 = r91 ;;

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 57
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

0000B7A01E80     08E2		      sxt4    r122 = r122
			   }
			   { .mfb 
000008000000     08F0		      nop.m   0
000008000000     08F1		      nop.f   0
00A000001000     08F2		      br.call.sptk.many br0 = XST$COPY
			   }
			   { .mib 
010807800040     0900		      mov     r1 = r120
00A0308001C0     0901		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
008600008006     0902	       (pr6)  br.cond.dpnt.few L$49
			   }
			   { .mii 
01080A8B1C80     0910		      adds    r114 = 216, r40								   // 000502
01080A8B9CC0     0911		      adds    r115 = 220, r40
000008000000     0912		      nop.i   0
			   }
			   { .mlx 
000008000000     0920		      nop.m   0
800000000000     0921		      movl    r113 = 2138290 ;;
0194104CB8
			   }
			   { .mmb 
008C872E2000     0930		      st4     [r114] = r113
008C87310000     0931		      st4     [r115] = $XPO$STATUS		// [r115] = r8
00800029E000     0932		      br.sptk.few L$9 ;;
			   }
	         0940	L$49:												   // 000500
			   { .mii 
012000100B40     0940		      add     r45 = @ltoff($STR$PATTERN), r1						   // 000514
010802808A00     0941		      adds    r40 = 4, r40								   // 000504
01200807DD40     0942		      mov     r117 = 190								   // 000506
			   }
			   { .mii 
01200000E640     0950		      mov     r25 = 7									   // 000514
0000B0001FC0     0951		      sxt4    r127 = r0
0000B0001F80     0952		      sxt4    r126 = r0 ;;
			   }
			   { .mii 
0080C2D00B40     0960		      ld8     r45 = $STR$PATTERN		// r45 = [r45]
012410007E40     0961		      addl    r121 = 16643, r0
0000B0001F40     0962		      sxt4    r125 = r0 ;;
			   }
			   { .mmi 
00BC8A8B7F00     0970		      st4     [r40] = r91, -4								   // 000504
00A045B07D00     0971		      ld2     r116 = [r91], 3								   // 000507
0000B2D01EC0     0972		      sxt4    r123 = r45 ;;								   // 000514
			   }
			   { .mmi 
00AC05BEA140     0980		      st1     [r91] = r117, 5 ;;							   // 000506
00BC4DBE9E00     0981		      st2     [r91] = r116, -8								   // 000507
000008000000     0982		      nop.i   0 ;;
			   }
			   { .mmi 
00AC45B00280     0990		      st2     [r91] = r0, 10 ;;								   // 000508
00BC4DB01D80     0991		      st2     [r91] = r0, -10								   // 000509
000008000000     0992		      nop.i   0 ;;

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 58
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mii 
000008000000     09A0		      nop.m   0
0000B5B01F00     09A1		      sxt4    r124 = r91								   // 000514
0000B5B01E80     09A2		      sxt4    r122 = r91
			   }
			   { .mfb 
000008000000     09B0		      nop.m   0
000008000000     09B1		      nop.f   0
00A000001000     09B2		      br.call.sptk.many br0 = XST$SCAN
			   }
			   { .mfi 
010807800040     09C0		      mov     r1 = r120
000008000000     09C1		      nop.f   0
000008000000     09C2		      nop.i   0 ;;
			   }
	         09D0	L$46:												   // 001104
			   { .mmi 
01080A8D0D00     09D0		      adds    r52 = 232, r40 ;;								   // 001115
008083400D00     09D1		      ld4     r52 = [r52]
000008000000     09D2		      nop.i   0 ;;
			   }
			   { .mfb 
01C443400240     09E0		      cmp4.eq pr9, pr8 = r0, r52
000008000000     09E1		      nop.f   0
008600008008     09E2	       (pr8)  br.cond.dpnt.few L$53
			   }
			   { .mmi 
01080A8D8E40     09F0		      adds    r57 = 236, r40 ;;								   // 001116
008083900E40     09F1		      ld4     r57 = [r57]
000008000000     09F2		      nop.i   0 ;;
			   }
			   { .mmi 
01C4539002C0     0A00		      cmp4.eq pr11, pr10 = r0, r57 ;;
01C00000124B     0A01	       (pr11) cmp.eq.unc pr9, pr0 = r0, r0							   // 001115
01C00000120A     0A02	       (pr10) cmp.eq.unc pr8, pr0 = r0, r0
			   }
			   { .bbb 
008600002008     0A10	       (pr8)  br.cond.dpnt.few L$53
004000000000     0A11		      nop.b   0
008600018009     0A12	       (pr9)  br.cond.dpnt.few L$54
			   }
	         0A20	L$53:
			   { .mlx 
01080A8B0E80     0A20		      adds    r58 = 216, r40								   // 001118
000000000000     0A21		      movl    r56 = 2146316 ;;
019800431C
			   }
			   { .mfb 
008C83A70000     0A30		      st4     [r58] = r56
000008000000     0A31		      nop.f   0
00800027E000     0A32		      br.sptk.few L$9 ;;
			   }
	         0A40	L$40:												   // 000479
			   { .mmi 
012000100C80     0A40		      add     r50 = @ltoff($STR$PATTERN), r1						   // 000525
008045B00C40     0A41		      ld2     r49 = [r91]								   // 000520

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 59
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

0000B0001FC0     0A42		      sxt4    r127 = r0 ;;								   // 000525
			   }
			   { .mii 
0080C3200C80     0A50		      ld8     r50 = $STR$PATTERN		// r50 = [r50]
0000B0001F80     0A51		      sxt4    r126 = r0
0000B0001F40     0A52		      sxt4    r125 = r0 ;;
			   }
			   { .mmi 
010803102C40     0A60		      adds    r49 = 1, r49								   // 000520
01200000E640     0A61		      mov     r25 = 7									   // 000525
0000B5B01F00     0A62		      sxt4    r124 = r91
			   }
			   { .mii 
012410007E40     0A70		      addl    r121 = 16643, r0
0000B3201EC0     0A71		      sxt4    r123 = r50
0000B5B01E80     0A72		      sxt4    r122 = r91 ;;
			   }
			   { .mfb 
008C45B62000     0A80		      st2     [r91] = r49								   // 000519
000008000000     0A81		      nop.f   0
00A000001000     0A82		      br.call.sptk.many br0 = XST$SCAN							   // 000525
			   }
			   { .mib 
010807800040     0A90		      mov     r1 = r120
00A0308001C0     0A91		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
0095FFFE8006     0A92	       (pr6)  br.cond.dptk.few L$46
			   }
			   { .mii 
01080A8B0D40     0AA0		      adds    r53 = 216, r40								   // 000527
01080A8B8DC0     0AA1		      adds    r55 = 220, r40
000008000000     0AA2		      nop.i   0
			   }
			   { .mlx 
000008000000     0AB0		      nop.m   0
000000000000     0AB1		      movl    r54 = 2138290 ;;
0194104C9B
			   }
			   { .mmb 
008C8356C000     0AC0		      st4     [r53] = r54
008C83710000     0AC1		      st4     [r55] = $XPO$STATUS		// [r55] = r8
00800026C000     0AC2		      br.sptk.few L$9 ;;
			   }
	         0AD0	L$54:												   // 001126
			   { .mii 
010800C78F00     0AD0		      adds    r60 = 60, r12
010800C70EC0     0AD1		      adds    r59 = 56, r12
000008000000     0AD2		      nop.i   0
			   }
			   { .mlx 
010800C70F80     0AE0		      adds    r62 = 56, r12
800000000008     0AE1		      movl    r61 = 33685504 ;;
018001001E
			   }
			   { .mii 
008C83C00000     0AF0		      st4     [r60] = r0
01200000C640     0AF1		      mov     r25 = 6
0000B0001F80     0AF2		      sxt4    r126 = r0

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 60
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mii 
0119F80FFEC0     0B00		      adds    r123 = -1, r0
0000B0001F40     0B01		      sxt4    r125 = r0
0000B0001F00     0B02		      sxt4    r124 = r0
			   }
			   { .mmi 
0120000A1E40     0B10		      mov     r121 = 80
008C83B7A000     0B11		      st4     [r59] = r61
0000B3E01E80     0B12		      sxt4    r122 = r62
			   }
			   { .mfb 
000008000000     0B20		      nop.m   0
000008000000     0B21		      nop.f   0
00A000001000     0B22		      br.call.sptk.many br0 = XPO$ALLOC_MEM
			   }
			   { .mii 
010800C79000     0B30		      adds    r64 = 60, r12
00A0308001C0     0B31		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
010807800040     0B32		      mov     r1 = r120 ;;
			   }
			   { .mii 
008084001000     0B40		      ld4     r64 = [r64]
01C000001206     0B41	       (pr6)  cmp.eq.unc pr8, pr0 = r0, r0 ;;
010804001088     0B42	       (pr8)  mov     FAB = r64				// r66 = r64
			   }
			   { .mfb 
000008000000     0B50		      nop.m   0
000008000000     0B51		      nop.f   0
008600008008     0B52	       (pr8)  br.cond.dpnt.few L$55
			   }
			   { .mii 
01080A8B1040     0B60		      adds    r65 = 216, r40								   // 001128
01080A8B8FC0     0B61		      adds    r63 = 220, r40
000008000000     0B62		      nop.i   0
			   }
			   { .mlx 
000008000000     0B70		      nop.m   0
800000000000     0B71		      movl    r67 = 2138370 ;;
01942040A1
			   }
			   { .mmb 
008C84186000     0B80		      st4     [r65] = r67
008C83F10000     0B81		      st4     [r63] = $XPO$STATUS		// [r63] = r8
008000254000     0B82		      br.sptk.few L$9 ;;
			   }
	         0B90	L$55:												   // 001126
			   { .mii 
01080A8D1180     0B90		      adds    r70 = 232, r40								   // 001130
0120000071C0     0B91		      mov     r71 = 3									   // 001141
0120000A1200     0B92		      mov     r72 = 80
			   }
			   { .mii 
012000081340     0BA0		      mov     r77 = 64
0000B4201100     0BA1		      sxt4    r68 = FAB				// r68 = r66
010800001EC0     0BA2		      mov     r123 = r0 ;;
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 61
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mii 
008C84684000     0BB0		      st4     [r70] = FAB			// [r70] = r66				   // 001130
0120000A1E80     0BB1		      mov     r122 = 80									   // 001141
010804401E40     0BB2		      mov     r121 = r68
			   }
			   { .mfb 
000008000000     0BC0		      nop.m   0
000008000000     0BC1		      nop.f   0
00A000001000     0BC2		      br.call.sptk.many br0 = OTS$FILL
			   }
			   { .mii 
008C0448E000     0BD0		      st1     [r68] = r71
010804403280     0BD1		      adds    r74 = 1, r68
010807800040     0BD2		      mov     r1 = r120
			   }
			   { .mmi 
010804403100     0BE0		      adds    r68 = 1, r68 ;;
00AC044905C0     0BE1		      st1     [r68] = r72, 23
000008000000     0BE2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8C441B00     0BF0		      st4     [r68] = IOB, -20 ;;		// [r68] = r32, -20
00AC8449A6C0     0BF1		      st4     [r68] = r77, 27
000008000000     0BF2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC0C457F80     0C00		      st1     [r68] = r43, -2 ;;
00AC04400640     0C01		      st1     [r68] = r0, 25
0108028B0A00     0C02		      adds    r40 = 88, r40 ;;
			   }
			   { .mmi 
00A0828093C0     0C10		      ld4     r79 = [r40], 4 ;;
00AC4449E180     0C11		      st2     [r68] = r79, 6
000008000000     0C12		      nop.i   0
			   }
			   { .mmi 
0080828013C0     0C20		      ld4     r79 = [r40] ;;
00AC4449E080     0C21		      st2     [r68] = r79, 2
000008000000     0C22		      nop.i   0
			   }
			   { .mmi 
00B08A8A14C0     0C30		      ld4     r83 = [r40], -48 ;;
0184000A6180     0C31		      cmp4.lt pr6, pr0 = r83, r0
01081D3FF480     0C32		      adds    r82 = 511, r83 ;;
			   }
			   { .mmi 
0108052014C6     0C40	       (pr6)  mov     r83 = r82 ;;
000008000000     0C41		      nop.m   0
0000B53014C0     0C42		      sxt4    r83 = r83 ;;
			   }
			   { .mib 
000008000000     0C50		      nop.m   0
00A5B53274C0     0C51		      shr     r83 = r83, 9
004000000000     0C52		      nop.b   0 ;;
			   }
			   { .mmi 
00BC0C4A7080     0C60		      st1     [r68] = r83, -62

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 62
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

0080828014C0     0C61		      ld4     r83 = [r40]								   // 001143
000008000000     0C62		      nop.i   0 ;;
			   }
			   { .mii 
0080C4401580     0C70		      ld8     r86 = [r68]
00A40534D4C0     0C71		      extr.u  r83 = r83, 19, 1 ;;
01117D3FF4C0     0C72		      xor     r83 = -1, r83 ;;
			   }
			   { .mib 
000008000000     0C80		      nop.m   0
008A856A74C0     0C81		      dep     r83 = r83, r86, 42, 1
004000000000     0C82		      nop.b   0 ;;
			   }
			   { .mmi 
008CC44A6000     0C90		      st8     [r68] = r83
0080828015C0     0C91		      ld4     r87 = [r40]								   // 001144
000008000000     0C92		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0CA0		      nop.m   0
00A40574D600     0CA1		      extr.u  r88 = r87, 19, 1
00A4057495C0     0CA2		      extr.u  r87 = r87, 18, 1 ;;							   // 001145
			   }
			   { .mmi 
0100757B15C0     0CB0		      or      r87 = r88, r87 ;;								   // 001144
000008000000     0CB1		      nop.m   0
0083053AF4C0     0CB2		      dep     r83 = r87, r83, 57, 1 ;;
			   }
			   { .mmi 
00ACC44A6400     0CC0		      st8     [r68] = r83, 16
00A0828094C0     0CC1		      ld4     r83 = [r40], 4								   // 001146
000008000000     0CC2		      nop.i   0 ;;
			   }
			   { .mii 
0080C4401540     0CD0		      ld8     r85 = [r68]
00A4053494C0     0CD1		      extr.u  r83 = r83, 18, 1 ;;
0085855A74C0     0CD2		      dep     r83 = r83, r85, 52, 1 ;;
			   }
			   { .mmi 
008CC44A6000     0CE0		      st8     [r68] = r83
00B08A8F9240     0CE1		      ld4     r73 = [r40], -4								   // 001147
000008000000     0CE2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0CF0		      nop.m   0
00A404901700     0CF1		      extr.u  r92 = r73, 0, 1
00A404905240     0CF2		      extr.u  r73 = r73, 1, 1 ;;							   // 001148
			   }
			   { .mmi 
0100749B9240     0D00		      or      r73 = r92, r73 ;;								   // 001147
000008000000     0D01		      nop.m   0
008505393240     0D02		      dep     r73 = r73, r83, 53, 1 ;;
			   }
			   { .mmi 
00BCCC493C00     0D10		      st8     [r68] = r73, -16
00B08A8A9740     0D11		      ld4     r93 = [r40], -44								   // 001150
000008000000     0D12		      nop.i   0 ;;

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 63
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mii 
000008000000     0D20		      nop.m   0
00A405D41740     0D21		      extr.u  r93 = r93, 16, 1 ;;
00A03DD00200     0D22		      tbit.z  pr8, pr7 = r93, 0
			   }
			   { .mfb 
000008000000     0D30		      nop.m   0
000008000000     0D31		      nop.f   0
008600010008     0D32	       (pr8)  br.cond.dpnt.few L$60
			   }
			   { .mlx 
01200006D680     0D40		      mov     r90 = 54									   // 001155
000008000000     0D41		      movl    r94 = 562949953421312 ;;							   // 001153
018000002F
			   }
			   { .mlx 
010075E93240     0D50		      or      r73 = r73, r94
81F6FFFFFFFF     0D51		      movl    r95 = -162129586585337857							   // 001155
01BFFFDFEF
			   }
			   { .mlx 
010804421100     0D60		      adds    r68 = 16, r68								   // 001153
000800000000     0D61		      movl    r96 = 144115188075855872 ;;						   // 001155
0180000030
			   }
			   { .mii 
008CC4492000     0D70		      st8     [r68] = r73								   // 001153
010802860A00     0D71		      adds    r40 = 48, r40								   // 001154
010065F93240     0D72		      and     r73 = r73, r95 ;;								   // 001155
			   }
			   { .mmi 
00B08A8A1840     0D80		      ld4     r97 = [r40], -48 ;;							   // 001154
000008000000     0D81		      nop.m   0
00A406109840     0D82		      extr.u  r97 = r97, 2, 1 ;;
			   }
			   { .mii 
000008000000     0D90		      nop.m   0
00F245AC3680     0D91		      shl     r90 = r97, r90 ;;								   // 001155
0100749B5240     0D92		      or      r73 = r90, r73 ;;
			   }
			   { .mmi 
010006093240     0DA0		      add     r73 = r73, r96 ;;
00BCCC493C00     0DA1		      st8     [r68] = r73, -16
000008000000     0DA2		      nop.i   0
			   }
	         0DB0	L$60:												   // 001150
			   { .mmi 
010802858A00     0DB0		      adds    r40 = 44, r40 ;;								   // 001158
00B08A8A98C0     0DB1		      ld4     r99 = [r40], -44
000008000000     0DB2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0DC0		      nop.m   0
00A406345940     0DC1		      extr.u  r101 = r99, 17, 1 ;;
00A04E500280     0DC2		      tbit.z  pr10, pr9 = r101, 0
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 64
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mfb 
000008000000     0DD0		      nop.m   0
000008000000     0DD1		      nop.f   0
00860003800A     0DD2	       (pr10) br.cond.dpnt.few L$62
			   }
			   { .mib 
012000043900     0DE0		      mov     r100 = 33									   // 001162
00A4063558C0     0DE1		      extr.u  r99 = r99, 21, 1								   // 001161
004000000000     0DE2		      nop.b   0
			   }
			   { .mlx 
0080C44019C0     0DF0		      ld8     r103 = [r68]
017FFFFFF7FF     0DF1		      movl    r104 = -2305843017803628545						   // 001162
01BFFFDFF4
			   }
			   { .mlx 
000008000000     0E00		      nop.m   0
008000000000     0E01		      movl    r102 = 2305843009213693952 ;;
0180000033
			   }
			   { .mlx 
0100668CF9C0     0E10		      and     r103 = r103, r104
000004000000     0E11		      movl    r106 = 281474976710656							   // 001163
0180000035
			   }
			   { .mii 
000008000000     0E20		      nop.m   0
00F2464C78C0     0E21		      shl     r99 = r99, r100 ;;							   // 001162
0100767C78C0     0E22		      or      r99 = r99, r103 ;;
			   }
			   { .mmi 
0100066C78C0     0E30		      add     r99 = r99, r102 ;;
00ACC44C6400     0E31		      st8     [r68] = r99, 16
000008000000     0E32		      nop.i   0 ;;
			   }
			   { .mmi 
0080C44018C0     0E40		      ld8     r99 = [r68] ;;								   // 001163
010076AC78C0     0E41		      or      r99 = r99, r106
000008000000     0E42		      nop.i   0 ;;
			   }
			   { .mii 
00ACC44C6200     0E50		      st8     [r68] = r99, 8
010802860A00     0E51		      adds    r40 = 48, r40								   // 001164
0100766C78C0     0E52		      or      r99 = r99, r102 ;;							   // 001165
			   }
			   { .mmi 
0080C4401B00     0E60		      ld8     r108 = [r68]								   // 001164
008082801AC0     0E61		      ld4     r107 = [r40]
000008000000     0E62		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0E70		      nop.m   0
00A406B0DAC0     0E71		      extr.u  r107 = r107, 3, 1 ;;
008706CD7AC0     0E72		      dep     r107 = r107, r108, 49, 1 ;;
			   }
			   { .mmi 
00BCCC4D7E00     0E80		      st8     [r68] = r107, -8 ;;

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 65
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

008CC44C6000     0E81		      st8     [r68] = r99								   // 001165
000008000000     0E82		      nop.i   0
			   }
			   { .mmi 
008082800A80     0E90		      ld4     r42 = [r40] ;;								   // 001166
000008000000     0E91		      nop.m   0
00A402A04A80     0E92		      extr.u  r42 = r42, 1, 1 ;;
			   }
			   { .mib 
000008000000     0EA0		      nop.m   0
008706354A80     0EA1		      dep     r42 = r42, r99, 49, 1
004000000000     0EA2		      nop.b   0 ;;
			   }
			   { .mmi 
00BCCC455C00     0EB0		      st8     [r68] = r42, -16
00B08A8A0A80     0EB1		      ld4     r42 = [r40], -48								   // 001170
000008000000     0EB2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0EC0		      nop.m   0
00A402A05C00     0EC1		      extr.u  r112 = r42, 1, 1
00A402A01BC0     0EC2		      extr.u  r111 = r42, 0, 1 ;;
			   }
			   { .mii 
010167003C00     0ED0		      and     r112 = 1, r112
010166F03BC0     0ED1		      and     r111 = 1, r111 ;;
0100770DFBC0     0ED2		      or      r111 = r111, r112 ;;
			   }
			   { .mfb 
01C406F00300     0EE0		      cmp4.eq pr12, pr0 = r0, r111
000008000000     0EE1		      nop.f   0
00860000800C     0EE2	       (pr12) br.cond.dpnt.few L$64
			   }
			   { .mii 
012020001C80     0EF0		      mov     r114 = 512								   // 001174
01080446D100     0EF1		      adds    r68 = 54, r68								   // 001173
000008000000     0EF2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC4C4E5A40     0F00		      st2     [r68] = r114, -23 ;;							   // 001174
00BC0C453840     0F01		      st1     [r68] = r41, -31								   // 001173
000008000000     0F02		      nop.i   0
			   }
			   { .mfb 
000008000000     0F10		      nop.m   0
000008000000     0F11		      nop.f   0
008000010000     0F12		      br.sptk.few L$62 ;;								   // 001170
			   }
	         0F20	L$64:
			   { .mii 
000008000000     0F20		      nop.m   0
00A402A10A80     0F21		      extr.u  r42 = r42, 4, 1 ;;							   // 001177
00A06AA00380     0F22		      tbit.z  pr14, pr13 = r42, 0
			   }
			   { .mfb 
000008000000     0F30		      nop.m   0
000008000000     0F31		      nop.f   0

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 66
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

00860000600E     0F32	       (pr14) br.cond.dpnt.few L$66
			   }
			   { .mmi 
01080443F100     0F40		      adds    r68 = 31, r68 ;;								   // 001179
00BC0C48F840     0F41		      st1     [r68] = r71, -31
000008000000     0F42		      nop.i   0
			   }
			   { .mfb 
000008000000     0F50		      nop.m   0
000008000000     0F51		      nop.f   0
008000008000     0F52		      br.sptk.few L$62 ;;								   // 001177
			   }
	         0F60	L$66:
			   { .mmi 
0108028B0A00     0F60		      adds    r40 = 88, r40 ;;								   // 001181
00B08A850BC0     0F61		      ld4     r47 = [r40], -88
000008000000     0F62		      nop.i   0 ;;
			   }
			   { .mfb 
01C402F00180     0F70		      cmp4.eq pr6, pr0 = r0, r47
000008000000     0F71		      nop.f   0
008600004006     0F72	       (pr6)  br.cond.dpnt.few L$62
			   }
			   { .mmi 
01080443F100     0F80		      adds    r68 = 31, r68 ;;								   // 001183
00BC0C453840     0F81		      st1     [r68] = r41, -31
000008000000     0F82		      nop.i   0
			   }
	         0F90	L$62:												   // 001158
			   { .mib 
012000002640     0F90		      mov     r25 = 1									   // 001190
0000B2001E40     0F91		      sxt4    r121 = IOB			// r121 = r32
00A000001000     0F92		      br.call.sptk.many br0 = XPO$RMS_PARSE
			   }
			   { .mib 
010807800040     0FA0		      mov     r1 = r120
00A0308001C0     0FA1		      tbit.z  pr7, pr6 = r8, 0
0086001D0007     0FA2	       (pr7)  br.cond.dpnt.few L$9 ;;
			   }
			   { .mii 
010804451100     0FB0		      adds    r68 = 40, r68								   // 001194
0120080FEC00     0FB1		      mov     r48 = 255									   // 001195
010800C80B40     0FB2		      adds    r45 = 64, r12 ;;								   // 001196
			   }
			   { .mmi 
00B08C4B0B80     0FC0		      ld4     r46 = [r68], -40 ;;							   // 001194
000008000000     0FC1		      nop.m   0
0000B2E00B80     0FC2		      sxt4    r46 = r46 ;;								   // 001195
			   }
			   { .mmi 
010802E04B80     0FD0		      adds    r46 = 2, r46 ;;
00AC02E60080     0FD1		      st1     [r46] = r48, 2
000008000000     0FD2		      nop.i   0 ;;
			   }
			   { .mii 
00BC8AE5BF00     0FE0		      st4     [r46] = r45, -4								   // 001196
010802860A00     0FE1		      adds    r40 = 48, r40								   // 001202

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 67
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

000008000000     0FE2		      nop.i   0 ;;
			   }
			   { .mmi 
00B08A8A0B40     0FF0		      ld4     r45 = [r40], -48 ;;
000008000000     0FF1		      nop.m   0
00A402D50B40     0FF2		      extr.u  r45 = r45, 20, 1 ;;
			   }
			   { .mib 
000008000000     1000		      nop.m   0
00A042D00240     1001		      tbit.z  pr9, pr8 = r45, 0
00860000C009     1002	       (pr9)  br.cond.dpnt.few L$70
			   }
			   { .mlx 
0080C4400CC0     1010		      ld8     r51 = [r68]								   // 001205
000008000000     1011		      movl    r50 = 562949953421312
0180000019
			   }
			   { .mlx 
000008000000     1020		      nop.m   0
81FEFFFFFFFF     1021		      movl    r53 = -18014398509481985 ;;						   // 001206
01BFFFDFDA
			   }
			   { .mmi 
010073266C80     1030		      or      r50 = r51, r50 ;;								   // 001205
00ACC4464400     1031		      st8     [r68] = r50, 16
000008000000     1032		      nop.i   0 ;;
			   }
			   { .mmi 
0080C4400C80     1040		      ld8     r50 = [r68] ;;								   // 001206
010063564C80     1041		      and     r50 = r50, r53
000008000000     1042		      nop.i   0 ;;
			   }
			   { .mmi 
00BCCC465C00     1050		      st8     [r68] = r50, -16 ;;
000008000000     1051		      nop.m   0
000008000000     1052		      nop.i   0
			   }
	         1060	L$70:												   // 001202
			   { .mmi 
010802858A00     1060		      adds    r40 = 44, r40 ;;								   // 001213
00B08A8A8DC0     1061		      ld4     r55 = [r40], -44
000008000000     1062		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1070		      nop.m   0
00A403740D00     1071		      extr.u  r52 = r55, 16, 1 ;;
00A0534002C0     1072		      tbit.z  pr11, pr10 = r52, 0 ;;
			   }
			   { .mii 
01C00000134B     1080	       (pr11) cmp.eq.unc pr13, pr0 = r0, r0
01C00000130A     1081	       (pr10) cmp.eq.unc pr12, pr0 = r0, r0 ;;
01C0000013CD     1082	       (pr13) cmp.eq.unc pr15, pr0 = r0, r0
			   }
			   { .mfb 
01C00000138C     1090	       (pr12) cmp.eq.unc pr14, pr0 = r0, r0
000008000000     1091		      nop.f   0
00860000800D     1092	       (pr13) br.cond.dpnt.few L$71

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 68
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mmi 
010802860A00     10A0		      adds    r40 = 48, r40 ;;
00B08A8A0E40     10A1		      ld4     r57 = [r40], -48
000008000000     10A2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     10B0		      nop.m   0
00A40390CE40     10B1		      extr.u  r57 = r57, 3, 1 ;;
00A0339001C0     10B2		      tbit.z  pr7, pr6 = r57, 0 ;;
			   }
			   { .mii 
01C0000013C7     10C0	       (pr7)  cmp.eq.unc pr15, pr0 = r0, r0
01C000001386     10C1	       (pr6)  cmp.eq.unc pr14, pr0 = r0, r0
000008000000     10C2		      nop.i   0
			   }
	         10D0	L$71:
			   { .mfb 
000008000000     10D0		      nop.m   0
000008000000     10D1		      nop.f   0
00860001600E     10D2	       (pr14) br.cond.dpnt.few L$75
			   }
			   { .mib 
01C00000124D     10E0	       (pr13) cmp.eq.unc pr9, pr0 = r0, r0							   // 001214
01C00000120C     10E1	       (pr12) cmp.eq.unc pr8, pr0 = r0, r0
00860000800D     10E2	       (pr13) br.cond.dpnt.few L$73
			   }
			   { .mmi 
010802860A00     10F0		      adds    r40 = 48, r40 ;;
00B08A8A0E00     10F1		      ld4     r56 = [r40], -48
000008000000     10F2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1100		      nop.m   0
00A403808E00     1101		      extr.u  r56 = r56, 2, 1 ;;
00A0538002C0     1102		      tbit.z  pr11, pr10 = r56, 0 ;;
			   }
			   { .mii 
01C00000124B     1110	       (pr11) cmp.eq.unc pr9, pr0 = r0, r0
01C00000120A     1111	       (pr10) cmp.eq.unc pr8, pr0 = r0, r0
000008000000     1112		      nop.i   0 ;;
			   }
	         1120	L$73:
			   { .mib 
01C0000013C9     1120	       (pr9)  cmp.eq.unc pr15, pr0 = r0, r0							   // 001213
01C000001388     1121	       (pr8)  cmp.eq.unc pr14, pr0 = r0, r0
00860000C00E     1122	       (pr14) br.cond.dpnt.few L$75								   // 001214
			   }
			   { .mii 
010802860A00     1130		      adds    r40 = 48, r40								   // 001215
00A40374CDC0     1131		      extr.u  r55 = r55, 19, 1 ;;
00A0337001C0     1132		      tbit.z  pr7, pr6 = r55, 0
			   }
			   { .mmi 
00B08A8A0E80     1140		      ld4     r58 = [r40], -48 ;;
000008000000     1141		      nop.m   0
00A403A04E80     1142		      extr.u  r58 = r58, 1, 1 ;;

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 69
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mii 
000008000000     1150		      nop.m   0
00A053A002C0     1151		      tbit.z  pr11, pr10 = r58, 0 ;;
01C2500002C7     1152	       (pr7)  cmp.eq.or.andcm pr11, pr10 = r0, r0 ;;
			   }
			   { .mib 
01C0000013CB     1160	       (pr11) cmp.eq.unc pr15, pr0 = r0, r0							   // 001214
01C00000138A     1161	       (pr10) cmp.eq.unc pr14, pr0 = r0, r0
00860000400E     1162	       (pr14) br.cond.dpnt.few L$75								   // 001213
			   }
			   { .mfb 
000008000000     1170		      nop.m   0
000008000000     1171		      nop.f   0
00860002200F     1172	       (pr15) br.cond.dpnt.few L$76
			   }
	         1180	L$75:												   // 001222
			   { .mii 
010800C60F00     1180		      adds    r60 = 48, r12
010800C68EC0     1181		      adds    r59 = 52, r12
010800C60F80     1182		      adds    r62 = 48, r12
			   }
			   { .mii 
01200000C640     1190		      mov     r25 = 6
0000B0001F80     1191		      sxt4    r126 = r0
0000B0001F40     1192		      sxt4    r125 = r0 ;;
			   }
			   { .mii 
008C83C7A000     11A0		      st4     [r60] = r61
0119F80FFEC0     11A1		      adds    r123 = -1, r0
0000B0001F00     11A2		      sxt4    r124 = r0
			   }
			   { .mii 
012000059E40     11B0		      mov     r121 = 44
0000B3E01E80     11B1		      sxt4    r122 = r62
010800001040     11B2		      mov     r65 = r0
			   }
			   { .mfb 
008C83B00000     11C0		      st4     [r59] = r0
000008000000     11C1		      nop.f   0
00A000001000     11C2		      br.call.sptk.many br0 = XPO$ALLOC_MEM
			   }
			   { .mii 
010800C69000     11D0		      adds    r64 = 52, r12
00A0308001C0     11D1		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
010807800040     11D2		      mov     r1 = r120 ;;
			   }
			   { .mii 
008084001000     11E0		      ld4     r64 = [r64]
01C000001206     11E1	       (pr6)  cmp.eq.unc pr8, pr0 = r0, r0 ;;
010804001048     11E2	       (pr8)  mov     r65 = r64 ;;
			   }
			   { .mfb 
010804100B00     11F0		      mov     HEADER_XAB = r65			// r44 = r65
000008000000     11F1		      nop.f   0
008600008008     11F2	       (pr8)  br.cond.dpnt.few L$77
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 70
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mii 
01080A8B0FC0     1200		      adds    r63 = 216, r40								   // 001224
01080A8B9180     1201		      adds    r70 = 220, r40
000008000000     1202		      nop.i   0
			   }
			   { .mlx 
000008000000     1210		      nop.m   0
800000000000     1211		      movl    r67 = 2138370 ;;
01942040A1
			   }
			   { .mmb 
008C83F86000     1220		      st4     [r63] = r67
008C84610000     1221		      st4     [r70] = $XPO$STATUS		// [r70] = r8
008000180000     1222		      br.sptk.few L$9 ;;
			   }
	         1230	L$77:												   // 001222
			   { .mii 
01200003B280     1230		      mov     r74 = 29									   // 001228
012000058AC0     1231		      mov     r43 = 44
0000B2C01140     1232		      sxt4    r69 = HEADER_XAB			// r69 = r44
			   }
			   { .mmi 
010804449100     1240		      adds    r68 = 36, r68								   // 001226
010800001EC0     1241		      mov     r123 = r0									   // 001228
012000059E80     1242		      mov     r122 = 44 ;;
			   }
			   { .mmb 
010804501E40     1250		      mov     r121 = r69
00BC8C459700     1251		      st4     [r68] = HEADER_XAB, -36		// [r68] = r44, -36			   // 001226
00A000001000     1252		      br.call.sptk.many br0 = OTS$FILL							   // 001228
			   }
			   { .mii 
00AC04594040     1260		      st1     [r69] = r74, 1
010807800040     1261		      mov     r1 = r120 ;;
000008000000     1262		      nop.i   0
			   }
			   { .mfi 
008C04556000     1270		      st1     [r69] = r43
000008000000     1271		      nop.f   0
000008000000     1272		      nop.i   0
			   }
	         1280	L$76:												   // 001213
			   { .mmi 
010802858A00     1280		      adds    r40 = 44, r40 ;;								   // 001235
00B08A8A9340     1281		      ld4     r77 = [r40], -44
000008000000     1282		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1290		      nop.m   0
00A404D41340     1291		      extr.u  r77 = r77, 16, 1 ;;
00A034D001C0     1292		      tbit.z  pr7, pr6 = r77, 0
			   }
			   { .mfb 
000008000000     12A0		      nop.m   0
000008000000     12A1		      nop.f   0
008600006007     12A2	       (pr7)  br.cond.dpnt.few L$82
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 71
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mib 
012000002640     12B0		      mov     r25 = 1									   // 001237
0000B4201E40     12B1		      sxt4    r121 = FAB			// r121 = r66
00A000001000     12B2		      br.call.sptk.many br0 = SYS$OPEN
			   }
			   { .mfb 
000008000000     12C0		      nop.m   0
000008000000     12C1		      nop.f   0
008000004000     12C2		      br.sptk.few L$143 ;;
			   }
	         12D0	L$82:												   // 001239
			   { .mib 
012000002640     12D0		      mov     r25 = 1
0000B4201E40     12D1		      sxt4    r121 = FAB			// r121 = r66
00A000001000     12D2		      br.call.sptk.many br0 = SYS$CREATE
			   }
	         12E0	L$143:
			   { .mii 
010802860A00     12E0		      adds    r40 = 48, r40								   // 001246
010807800040     12E1		      mov     r1 = r120									   // 001239
000008000000     12E2		      nop.i   0 ;;
			   }
			   { .mmi 
00B08A8A1380     12F0		      ld4     r78 = [r40], -48 ;;							   // 001246
000008000000     12F1		      nop.m   0
00A404E05380     12F2		      extr.u  r78 = r78, 1, 1 ;;
			   }
			   { .mib 
000008000000     1300		      nop.m   0
00A034E001C0     1301		      tbit.z  pr7, pr6 = r78, 0
008600020007     1302	       (pr7)  br.cond.dpnt.few L$86
			   }
			   { .mmi 
010804411100     1310		      adds    r68 = 8, r68 ;;
00B08C4F1400     1311		      ld4     r80 = [r68], -8
000008000000     1312		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1320		      nop.m   0
00A045000240     1321		      tbit.z  pr9, pr8 = r80, 0 ;;
01C0000011C8     1322	       (pr8)  cmp.eq.unc pr7, pr0 = r0, r0
			   }
			   { .mbb 
01C000001189     1330	       (pr9)  cmp.eq.unc pr6, pr0 = r0, r0
008600002006     1331	       (pr6)  br.cond.dpnt.few L$85
00860001A007     1332	       (pr7)  br.cond.dpnt.few L$86
			   }
	         1340	L$85:
			   { .mii 
010804411100     1340		      adds    r68 = 8, r68								   // 001248
0128284253C0     1341		      addl    r79 = 98962, r0
000008000000     1342		      nop.i   0 ;;
			   }
			   { .mmi 
00B08C4F1440     1350		      ld4     r81 = [r68], -8 ;;
01C454FA2000     1351		      cmp4.eq pr0, pr10 = r81, r79
000008000000     1352		      nop.i   0

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 72
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mfb 
000008000000     1360		      nop.m   0
000008000000     1361		      nop.f   0
00860000C00A     1362	       (pr10) br.cond.dpnt.few L$87
			   }
			   { .mmi 
010802858A00     1370		      adds    r40 = 44, r40 ;;								   // 001251
00B08A8A9480     1371		      ld4     r82 = [r40], -44
000008000000     1372		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1380		      nop.m   0
00A405245480     1381		      extr.u  r82 = r82, 17, 1 ;;
00A065200340     1382		      tbit.z  pr13, pr12 = r82, 0
			   }
			   { .mfb 
000008000000     1390		      nop.m   0
000008000000     1391		      nop.f   0
00860000E00D     1392	       (pr13) br.cond.dpnt.few L$86
			   }
			   { .mib 
012000002640     13A0		      mov     r25 = 1									   // 001253
0000B4201E40     13A1		      sxt4    r121 = FAB			// r121 = r66
00A000001000     13A2		      br.call.sptk.many br0 = SYS$CREATE
			   }
			   { .mfb 
000008000000     13B0		      nop.m   0
000008000000     13B1		      nop.f   0
008000008000     13B2		      br.sptk.few L$144 ;;
			   }
	         13C0	L$87:												   // 001248
			   { .mmi 
012828405500     13C0		      addl    r84 = 98946, r0 ;;
01C4354A2000     13C1		      cmp4.eq pr0, pr6 = r81, r84
000008000000     13C2		      nop.i   0
			   }
			   { .mfb 
000008000000     13D0		      nop.m   0
000008000000     13D1		      nop.f   0
008600006006     13D2	       (pr6)  br.cond.dpnt.few L$86
			   }
			   { .mib 
012000002640     13E0		      mov     r25 = 1									   // 001257
0000B4201E40     13E1		      sxt4    r121 = FAB			// r121 = r66
00A000001000     13E2		      br.call.sptk.many br0 = SYS$OPEN
			   }
	         13F0	L$144:
			   { .mfi 
010807800040     13F0		      mov     r1 = r120
000008000000     13F1		      nop.f   0
000008000000     13F2		      nop.i   0
			   }
	         1400	L$86:												   // 001246
			   { .mmi 
010804449100     1400		      adds    r68 = 36, r68 ;;								   // 001261
00BC8C401700     1401		      st4     [r68] = r0, -36

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 73
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

010802E06B80     1402		      adds    r46 = 3, r46 ;;								   // 001267
			   }
			   { .mmi 
00B00AEFB580     1410		      ld1     r86 = [r46], -3 ;;
01C4056001C0     1411		      cmp4.eq pr7, pr0 = r0, r86
000008000000     1412		      nop.i   0
			   }
			   { .mfb 
000008000000     1420		      nop.m   0
000008000000     1421		      nop.f   0
00860001C007     1422	       (pr7)  br.cond.dpnt.few L$92
			   }
			   { .mii 
010800C51600     1430		      adds    r88 = 40, r12								   // 001274
010800C55640     1431		      adds    r89 = 42, r12
01201001D5C0     1432		      mov     r87 = 270
			   }
			   { .mmi 
010800C59700     1440		      adds    r92 = 44, r12
012000039540     1441		      mov     r85 = 28
010800C514C0     1442		      adds    r83 = 40, r12 ;;
			   }
			   { .mii 
008C458AC000     1450		      st2     [r88] = r86
01200000A640     1451		      mov     r25 = 5
010005551540     1452		      add     r85 = r40, r85
			   }
			   { .mmi 
008C459AE000     1460		      st2     [r89] = r87
010802E08B80     1461		      adds    r46 = 4, r46
0000B0001F40     1462		      sxt4    r125 = r0 ;;
			   }
			   { .mii 
012400001E40     1470		      addl    r121 = 16384, r0
0000B0001F00     1471		      sxt4    r124 = r0
0000B5501EC0     1472		      sxt4    r123 = r85
			   }
			   { .mib 
00B08AEF95C0     1480		      ld4     r87 = [r46], -4
0000B5301E80     1481		      sxt4    r122 = r83
004000000000     1482		      nop.b   0 ;;
			   }
			   { .mfb 
008C85CAE000     1490		      st4     [r92] = r87
000008000000     1491		      nop.f   0
00A000001000     1492		      br.call.sptk.many br0 = XST$COPY
			   }
			   { .mib 
010807800040     14A0		      mov     r1 = r120
00A0308001C0     14A1		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
008600008006     14A2	       (pr6)  br.cond.dpnt.few L$93
			   }
			   { .mii 
01080A8B1780     14B0		      adds    r94 = 216, r40								   // 001276
01080A8B9840     14B1		      adds    r97 = 220, r40
000008000000     14B2		      nop.i   0
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 74
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mlx 
000008000000     14C0		      nop.m   0
800000000000     14C1		      movl    r93 = 2138282 ;;
0194104AAE
			   }
			   { .mmb 
008C85EBA000     14D0		      st4     [r94] = r93
008C86110000     14D1		      st4     [r97] = $XPO$STATUS		// [r97] = r8
00800012A000     14D2		      br.sptk.few L$9 ;;
			   }
	         14E0	L$93:												   // 001274
			   { .mmi 
010802840A00     14E0		      adds    r40 = 32, r40 ;;								   // 001279
00B08A8C17C0     14E1		      ld4     r95 = [r40], -32
010802E08B80     14E2		      adds    r46 = 4, r46 ;;								   // 001278
			   }
			   { .mmi 
00BC8AEBFF00     14F0		      st4     [r46] = r95, -4 ;;
000008000000     14F1		      nop.m   0
000008000000     14F2		      nop.i   0
			   }
	         1500	L$92:												   // 001267
			   { .mii 
010802E04B80     1500		      adds    r46 = 2, r46								   // 001282
012000403880     1501		      addl    r98 = 65537, r0								   // 001288
000008000000     1502		      nop.i   0 ;;
			   }
			   { .mii 
008C02E00000     1510		      st1     [r46] = r0								   // 001282
010804411100     1511		      adds    r68 = 8, r68								   // 001288
000008000000     1512		      nop.i   0 ;;
			   }
			   { .mmi 
00B08C4F1240     1520		      ld4     r73 = [r68], -8 ;;
01C446292000     1521		      cmp4.eq pr0, pr8 = r73, r98
000008000000     1522		      nop.i   0
			   }
			   { .mfb 
000008000000     1530		      nop.m   0
000008000000     1531		      nop.f   0
008600014008     1532	       (pr8)  br.cond.dpnt.few L$95
			   }
			   { .mmi 
010802858A00     1540		      adds    r40 = 44, r40 ;;								   // 001291
00B08A8A9940     1541		      ld4     r101 = [r40], -44
000008000000     1542		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1550		      nop.m   0
00A406541940     1551		      extr.u  r101 = r101, 16, 1 ;;
00A056500000     1552		      tbit.z  pr0, pr10 = r101, 0
			   }
			   { .mfb 
000008000000     1560		      nop.m   0
000008000000     1561		      nop.f   0
00860000600A     1562	       (pr10) br.cond.dpnt.few L$97
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 75
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mmi 
0080C4401900     1570		      ld8     r100 = [r68] ;;
000008000000     1571		      nop.m   0
00A4064E5900     1572		      extr.u  r100 = r100, 57, 1 ;;
			   }
			   { .mii 
000008000000     1580		      nop.m   0
00A05E400000     1581		      tbit.z  pr0, pr11 = r100, 0 ;;
01C00000128B     1582	       (pr11) cmp.eq.unc pr10, pr0 = r0, r0
			   }
	         1590	L$97:
			   { .mlx 
01080A8B1A80     1590		      adds    r106 = 216, r40								   // 001293
800000000000     1591		      movl    r103 = 2129921
0190004073
			   }
			   { .mlx 
000008000000     15A0		      nop.m   0
800000000000     15A1		      movl    r105 = 2129929 ;;
0190004274
			   }
			   { .mmi 
010806701A4A     15B0	       (pr10) mov     r105 = r103 ;;
008C86AD2000     15B1		      st4     [r106] = r105
000008000000     15B2		      nop.i   0
			   }
			   { .mfb 
000008000000     15C0		      nop.m   0
000008000000     15C1		      nop.f   0
008000014000     15C2		      br.sptk.few L$98 ;;								   // 001291
			   }
	         15D0	L$95:												   // 001288
			   { .mii 
0120604F3AC0     15D0		      addl    r107 = 67193, r0
012060433B00     15D1		      addl    r108 = 67097, r0 ;;
01C406B923C0     15D2		      cmp4.eq pr15, pr0 = r73, r107
			   }
			   { .mmi 
01C466C92340     15E0		      cmp4.eq pr13, pr12 = r73, r108 ;;
01C26000000F     15E1	       (pr15) cmp.eq.or.andcm pr0, pr12 = r0, r0
000008000000     15E2		      nop.i   0
			   }
			   { .mfb 
000008000000     15F0		      nop.m   0
000008000000     15F1		      nop.f   0
00860000600C     15F2	       (pr12) br.cond.dpnt.few L$99
			   }
			   { .mlx 
01080A8B1980     1600		      adds    r102 = 216, r40								   // 001298
800000000000     1601		      movl    r109 = 2129929 ;;
0190004276
			   }
			   { .mfb 
008C866DA000     1610		      st4     [r102] = r109
000008000000     1611		      nop.f   0
00800000A000     1612		      br.sptk.few L$98 ;;								   // 001288
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 76
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

	         1620	L$99:
			   { .mmi 
0120604638C0     1620		      addl    r99 = 67121, r0 ;;
01C436392000     1621		      cmp4.eq pr0, pr6 = r73, r99
000008000000     1622		      nop.i   0
			   }
			   { .mfb 
000008000000     1630		      nop.m   0
000008000000     1631		      nop.f   0
0086000F6006     1632	       (pr6)  br.cond.dpnt.few L$101
			   }
			   { .mlx 
01080A8B1C00     1640		      adds    r112 = 216, r40								   // 001301
000000000000     1641		      movl    r110 = 2129921 ;;
0190004077
			   }
			   { .mfi 
008C870DC000     1650		      st4     [r112] = r110
000008000000     1651		      nop.f   0
000008000000     1652		      nop.i   0
			   }
	         1660	L$98:												   // 001288
			   { .mmi 
010802858A00     1660		      adds    r40 = 44, r40 ;;								   // 001316
00B08A8A9BC0     1661		      ld4     r111 = [r40], -44
000008000000     1662		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1670		      nop.m   0
00A406F41C40     1671		      extr.u  r113 = r111, 16, 1
00A406F45BC0     1672		      extr.u  r111 = r111, 17, 1 ;;
			   }
			   { .mii 
000008000000     1680		      nop.m   0
00A05EF00280     1681		      tbit.z  pr10, pr11 = r111, 0
00A047100240     1682		      tbit.z  pr9, pr8 = r113, 0 ;;
			   }
			   { .mfb 
01C24000024A     1690	       (pr10) cmp.eq.or.andcm pr9, pr8 = r0, r0
000008000000     1691		      nop.f   0
00860000E009     1692	       (pr9)  br.cond.dpnt.few L$104
			   }
			   { .mmi 
010802860A00     16A0		      adds    r40 = 48, r40 ;;								   // 001317
00B08A8A1C80     16A1		      ld4     r114 = [r40], -48
000008000000     16A2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     16B0		      nop.m   0
00A407205C80     16B1		      extr.u  r114 = r114, 1, 1 ;;
00A0772003C0     16B2		      tbit.z  pr15, pr14 = r114, 0 ;;
			   }
			   { .mib 
01C00000124E     16C0	       (pr14) cmp.eq.unc pr9, pr0 = r0, r0							   // 001316
01C00000120F     16C1	       (pr15) cmp.eq.unc pr8, pr0 = r0, r0
008600008009     16C2	       (pr9)  br.cond.dpnt.few L$104								   // 001317
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 77
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mii 
010804481100     16D0		      adds    r68 = 64, r68								   // 001318
012400000A80     16D1		      addl    r42 = 16384, r0
000008000000     16D2		      nop.i   0 ;;
			   }
			   { .mmi 
00B08C481CC0     16E0		      ld4     r115 = [r68], -64 ;;
010062AE6A80     16E1		      and     r42 = r115, r42
000008000000     16E2		      nop.i   0 ;;
			   }
			   { .mmi 
01C462A00340     16F0		      cmp4.eq pr13, pr12 = r0, r42 ;;
01C00000124D     16F1	       (pr13) cmp.eq.unc pr9, pr0 = r0, r0							   // 001317
01C00000120C     16F2	       (pr12) cmp.eq.unc pr8, pr0 = r0, r0
			   }
	         1700	L$104:
			   { .bbb 
008600002008     1700	       (pr8)  br.cond.dpnt.few L$105								   // 001316
004000000000     1701		      nop.b   0
00860000A009     1702	       (pr9)  br.cond.dpnt.few L$106
			   }
	         1710	L$105:
			   { .mii 
01080A8B1D40     1710		      adds    r117 = 216, r40								   // 001320
01080A8B9D00     1711		      adds    r116 = 220, r40
000008000000     1712		      nop.i   0
			   }
			   { .mlx 
000008000000     1720		      nop.m   0
800000000000     1721		      movl    r71 = 2146308 ;;
0198004123
			   }
			   { .mlx 
008C8758E000     1730		      st4     [r117] = r71
800000000000     1731		      movl    r47 = 2138330 ;;
0194105697
			   }
			   { .mfb 
008C8745E000     1740		      st4     [r116] = r47
000008000000     1741		      nop.f   0
0080000DC000     1742		      br.sptk.few L$9 ;;
			   }
	         1750	L$106:												   // 001316
			   { .mmi 
0080C4400C00     1750		      ld8     r48 = [r68] ;;								   // 001322
000008000000     1751		      nop.m   0
00A4030C4C00     1752		      extr.u  r48 = r48, 49, 1 ;;
			   }
			   { .mib 
000008000000     1760		      nop.m   0
00A0330001C0     1761		      tbit.z  pr7, pr6 = r48, 0
008600008007     1762	       (pr7)  br.cond.dpnt.few L$108
			   }
			   { .mii 
010804419100     1770		      adds    r68 = 12, r68								   // 001325
01080A8E0B40     1771		      adds    r45 = 240, r40
000008000000     1772		      nop.i   0 ;;

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 78
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mmi 
008084400C40     1780		      ld4     r49 = [r68] ;;
008C42D62000     1781		      st2     [r45] = r49
000008000000     1782		      nop.i   0
			   }
			   { .mfb 
000008000000     1790		      nop.m   0
000008000000     1791		      nop.f   0
0080000D2000     1792		      br.sptk.few L$9 ;;								   // 001326
			   }
	         17A0	L$108:												   // 001322
			   { .mmi 
010802860A00     17A0		      adds    r40 = 48, r40 ;;								   // 001333
00B08A8A0CC0     17A1		      ld4     r51 = [r40], -48
000008000000     17A2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     17B0		      nop.m   0
00A403350CC0     17B1		      extr.u  r51 = r51, 20, 1 ;;
00A05B300280     17B2		      tbit.z  pr10, pr11 = r51, 0
			   }
			   { .mfb 
000008000000     17C0		      nop.m   0
000008000000     17C1		      nop.f   0
00860000800A     17C2	       (pr10) br.cond.dpnt.few L$110
			   }
			   { .mlx 
010804431100     17D0		      adds    r68 = 24, r68								   // 001335
800008000000     17D1		      movl    r53 = 562949953421312 ;;
018000001A
			   }
			   { .mmi 
0080C44016C0     17E0		      ld8     r91 = [r68] ;;
0100735B6D40     17E1		      or      r53 = r91, r53
000008000000     17E2		      nop.i   0 ;;
			   }
			   { .mmi 
00BCCC46BA00     17F0		      st8     [r68] = r53, -24 ;;
000008000000     17F1		      nop.m   0
000008000000     17F2		      nop.i   0
			   }
	         1800	L$110:												   // 001333
			   { .mii 
01080443F100     1800		      adds    r68 = 31, r68								   // 001338
010800000E00     1801		      mov     r56 = r0
010800000DC0     1802		      mov     r55 = r0 ;;								   // 001339
			   }
			   { .mmi 
00B00C4F2D00     1810		      ld1     r52 = [r68], -7 ;;							   // 001338
00A0C444ED80     1811		      ld8     r54 = [r68], 39								   // 001339
01CC03406380     1812		      cmp4.eq pr14, pr0 = 3, r52 ;;							   // 001338
			   }
			   { .mii 
00B00C4C0E40     1820		      ld1     r57 = [r68], -32								   // 001340
010802860A00     1821		      adds    r40 = 48, r40								   // 001337
00A4036C8D80     1822		      extr.u  r54 = r54, 50, 1 ;;							   // 001339

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 79
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mii 
010800002E0E     1830	       (pr14) adds    r56 = 1, r0								   // 001338
01CC039043C0     1831		      cmp4.eq pr15, pr0 = 2, r57							   // 001340
01117B6FED80     1832		      xor     r54 = -1, r54 ;;								   // 001339
			   }
			   { .mii 
008082800E80     1840		      ld4     r58 = [r40]								   // 001337
010800002DCF     1841	       (pr15) adds    r55 = 1, r0								   // 001339
010063670D80     1842		      and     r54 = r56, r54 ;;								   // 001338
			   }
			   { .mmi 
01006376CD80     1850		      and     r54 = r54, r55 ;;								   // 001339
000008000000     1851		      nop.m   0
009D83A6CD80     1852		      dep     r54 = r54, r58, 4, 1 ;;							   // 001337
			   }
			   { .mmi 
00BC8A86D400     1860		      st4     [r40] = r54, -48
00B00C4C2D80     1861		      ld1     r54 = [r68], -31								   // 001342
000008000000     1862		      nop.i   0 ;;
			   }
			   { .mfb 
01CC63602000     1870		      cmp4.eq pr0, pr12 = 1, r54
000008000000     1871		      nop.f   0
00860000600C     1872	       (pr12) br.cond.dpnt.few L$113
			   }
			   { .mmi 
01080446D100     1880		      adds    r68 = 54, r68 ;;								   // 001344
00B04C494EC0     1881		      ld2     r59 = [r68], -54
0108028B0A00     1882		      adds    r40 = 88, r40 ;;
			   }
			   { .mmi 
00BC8A876A00     1890		      st4     [r40] = r59, -88 ;;
000008000000     1891		      nop.m   0
000008000000     1892		      nop.i   0
			   }
	         18A0	L$113:												   // 001342
			   { .mii 
010804479100     18A0		      adds    r68 = 60, r68								   // 001346
010800C40FC0     18A1		      adds    r63 = 32, r12								   // 001354
010800C490C0     18A2		      adds    r67 = 36, r12 ;;
			   }
			   { .mii 
00B04C489000     18B0		      ld2     r64 = [r68], -60								   // 001346
010800C41180     18B1		      adds    r70 = 32, r12								   // 001354
01200000C640     18B2		      mov     r25 = 6
			   }
			   { .mii 
0119F80FFEC0     18C0		      adds    r123 = -1, r0
0000B0001F80     18C1		      sxt4    r126 = r0
0000B0001F40     18C2		      sxt4    r125 = r0
			   }
			   { .mmi 
012000089E40     18D0		      mov     r121 = 68
0108028B8A00     18D1		      adds    r40 = 92, r40								   // 001346
0000B0001F00     18D2		      sxt4    r124 = r0 ;;								   // 001354
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 80
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mib 
000008000000     18E0		      nop.m   0
0000B4601E80     18E1		      sxt4    r122 = r70
004000000000     18E2		      nop.b   0
			   }
			   { .mmi 
00BC8A880900     18F0		      st4     [r40] = r64, -92								   // 001346
008C83F7A000     18F1		      st4     [r63] = r61								   // 001354
000008000000     18F2		      nop.i   0
			   }
			   { .mfb 
008C84300000     1900		      st4     [r67] = r0
000008000000     1901		      nop.f   0
00A000001000     1902		      br.call.sptk.many br0 = XPO$ALLOC_MEM
			   }
			   { .mii 
010800C49200     1910		      adds    r72 = 36, r12
00A0308001C0     1911		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
010807800040     1912		      mov     r1 = r120 ;;
			   }
			   { .mii 
008084801200     1920		      ld4     r72 = [r72]
01C000001206     1921	       (pr6)  cmp.eq.unc pr8, pr0 = r0, r0 ;;
010804801288     1922	       (pr8)  mov     RAB = r72				// r74 = r72
			   }
			   { .mfb 
000008000000     1930		      nop.m   0
000008000000     1931		      nop.f   0
008600008008     1932	       (pr8)  br.cond.dpnt.few L$115
			   }
			   { .mii 
01080A8B0AC0     1940		      adds    r43 = 216, r40								   // 001356
01080A8B9140     1941		      adds    r69 = 220, r40
000008000000     1942		      nop.i   0
			   }
			   { .mlx 
000008000000     1950		      nop.m   0
800000000000     1951		      movl    r75 = 2138370 ;;
01942040A5
			   }
			   { .mmb 
008C82B96000     1960		      st4     [r43] = r75
008C84510000     1961		      st4     [r69] = $XPO$STATUS		// [r69] = r8
008000098000     1962		      br.sptk.few L$9 ;;
			   }
	         1970	L$115:												   // 001354
			   { .mii 
01080A8D9340     1970		      adds    r77 = 236, r40								   // 001358
012000089400     1971		      mov     r80 = 68									   // 001363
000008000000     1972		      nop.i   0
			   }
			   { .mlx 
010800001EC0     1980		      mov     r123 = r0
000000000100     1981		      movl    r82 = 1073807360 ;;
0180008029
			   }
			   { .mii 

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 81
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

012000089E80     1990		      mov     r122 = 68
0000B4A01300     1991		      sxt4    r76 = RAB				// r76 = r74
010800001540     1992		      mov     r85 = r0									   // 001369
			   }
			   { .mmi 
008C84D94000     19A0		      st4     [r77] = RAB ;;			// [r77] = r74				   // 001358
010804C01E40     19A1		      mov     r121 = r76								   // 001363
000008000000     19A2		      nop.i   0
			   }
			   { .mfb 
000008000000     19B0		      nop.m   0
000008000000     19B1		      nop.f   0
00A000001000     19B2		      br.call.sptk.many br0 = OTS$FILL
			   }
			   { .mii 
00AC04C52040     19C0		      st1     [r76] = r41, 1
010807800040     19C1		      mov     r1 = r120 ;;
000008000000     19C2		      nop.i   0
			   }
			   { .mmi 
00AC04CA00C0     19D0		      st1     [r76] = r80, 3 ;;
00AC84CA4E00     19D1		      st4     [r76] = r82, 56
000008000000     19D2		      nop.i   0 ;;
			   }
			   { .mii 
00BC8CC85100     19E0		      st4     [r76] = FAB, -60			// [r76] = r66, -60
010802858A00     19E1		      adds    r40 = 44, r40								   // 001365
000008000000     19E2		      nop.i   0 ;;
			   }
			   { .mmi 
008082801080     19F0		      ld4     r66 = [r40]
0080C4C01580     19F1		      ld8     r86 = [r76]
000008000000     19F2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1A00		      nop.m   0
00A40424D080     1A01		      extr.u  r66 = r66, 19, 1 ;;
008B85685080     1A02		      dep     r66 = r66, r86, 40, 1 ;;
			   }
			   { .mmi 
008CC4C84000     1A10		      st8     [r76] = r66
00A082809600     1A11		      ld4     r88 = [r40], 4								   // 001366
000008000000     1A12		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1A20		      nop.m   0
00A405849600     1A21		      extr.u  r88 = r88, 18, 1 ;;
008F042B1080     1A22		      dep     r66 = r88, r66, 33, 1 ;;
			   }
			   { .mii 
008CC4C84000     1A30		      st8     [r76] = r66
01080443F100     1A31		      adds    r68 = 31, r68								   // 001370
000008000000     1A32		      nop.i   0 ;;
			   }
			   { .mmi 
00B00C4C3640     1A40		      ld1     r89 = [r68], -31
00B08A8F95C0     1A41		      ld4     r87 = [r40], -4								   // 001367

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 82
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

000008000000     1A42		      nop.i   0 ;;
			   }
			   { .mii 
01C4000B2180     1A50		      cmp4.eq pr6, pr0 = r89, r0							   // 001370
00A4057054C0     1A51		      extr.u  r83 = r87, 1, 1								   // 001368
00A405701700     1A52		      extr.u  r92 = r87, 0, 1 ;;							   // 001367
			   }
			   { .mii 
010800003546     1A60	       (pr6)  adds    r85 = 1, r0								   // 001369
00A4057095C0     1A61		      extr.u  r87 = r87, 2, 1
0100753B94C0     1A62		      or      r83 = r92, r83 ;;								   // 001367
			   }
			   { .mmi 
0100655AF540     1A70		      and     r85 = r87, r85 ;;								   // 001369
0100755A74C0     1A71		      or      r83 = r83, r85								   // 001368
000008000000     1A72		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     1A80		      nop.m   0
008A042A7080     1A81		      dep     r66 = r83, r66, 43, 1							   // 001367
004000000000     1A82		      nop.b   0 ;;
			   }
			   { .mmi 
008CC4C84000     1A90		      st8     [r76] = r66
00B08A8A9080     1A91		      ld4     r66 = [r40], -44								   // 001376
000008000000     1A92		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1AA0		      nop.m   0
00A404241080     1AA1		      extr.u  r66 = r66, 16, 1 ;;
00A03C200200     1AA2		      tbit.z  pr8, pr7 = r66, 0
			   }
			   { .mfb 
000008000000     1AB0		      nop.m   0
000008000000     1AB1		      nop.f   0
008600010007     1AB2	       (pr7)  br.cond.dpnt.few L$121
			   }
			   { .mmi 
010802860A00     1AC0		      adds    r40 = 48, r40 ;;
00B08A8A1780     1AC1		      ld4     r94 = [r40], -48
000008000000     1AC2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1AD0		      nop.m   0
00A04DE00280     1AD1		      tbit.z  pr10, pr9 = r94, 0 ;;
01C00000120A     1AD2	       (pr10) cmp.eq.unc pr8, pr0 = r0, r0
			   }
			   { .mfb 
01C0000011C9     1AE0	       (pr9)  cmp.eq.unc pr7, pr0 = r0, r0
000008000000     1AE1		      nop.f   0
00860000A007     1AE2	       (pr7)  br.cond.dpnt.few L$121
			   }
			   { .mmi 
010802860A00     1AF0		      adds    r40 = 48, r40 ;;								   // 001377
00B08A8A1840     1AF1		      ld4     r97 = [r40], -48
000008000000     1AF2		      nop.i   0 ;;
			   }

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 83
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   { .mii 
000008000000     1B00		      nop.m   0
00A406105840     1B01		      extr.u  r97 = r97, 1, 1 ;;
00A05E100300     1B02		      tbit.z  pr12, pr11 = r97, 0 ;;							   // 001376
			   }
			   { .mib 
01C00000120C     1B10	       (pr12) cmp.eq.unc pr8, pr0 = r0, r0
01C0000011CB     1B11	       (pr11) cmp.eq.unc pr7, pr0 = r0, r0
008600004007     1B12	       (pr7)  br.cond.dpnt.few L$121
			   }
			   { .mfb 
000008000000     1B20		      nop.m   0
000008000000     1B21		      nop.f   0
008600032008     1B22	       (pr8)  br.cond.dpnt.few L$122
			   }
	         1B30	L$121:
			   { .mii 
01C000001380     1B30		      cmp.eq.unc pr14, pr0 = r0, r0							   // 001381
00A06D300000     1B31		      tbit.z  pr0, pr13 = r83, 0 ;;
01A00000038D     1B32	       (pr13) cmp.ltu pr14, pr0 = r0, r0
			   }
			   { .mfb 
000008000000     1B40		      nop.m   0
000008000000     1B41		      nop.f   0
00860000600E     1B42	       (pr14) br.cond.dpnt.few L$125
			   }
			   { .mmi 
010804479680     1B50		      adds    r90 = 60, r68 ;;								   // 001383
008045A01100     1B51		      ld2     r68 = [r90]
000008000000     1B52		      nop.i   0
			   }
			   { .mfb 
000008000000     1B60		      nop.m   0
000008000000     1B61		      nop.f   0
008000006000     1B62		      br.sptk.few L$124 ;;
			   }
	         1B70	L$125:
			   { .mii 
000008000000     1B70		      nop.m   0
0000B2C017C0     1B71		      sxt4    r95 = HEADER_XAB ;;		// r95 = r44				   // 001385
010805F157C0     1B72		      adds    r95 = 10, r95 ;;
			   }
			   { .mfi 
008045F01100     1B80		      ld2     r68 = [r95]
000008000000     1B81		      nop.f   0
000008000000     1B82		      nop.i   0 ;;
			   }
	         1B90	L$124:												   // 001381
			   { .mii 
000008000000     1B90		      nop.m   0
00A47C401100     1B91		      extr.u  r68 = r68, 0, 16
010804C41300     1B92		      adds    r76 = 32, r76 ;;								   // 001380
			   }
			   { .mmb 
01C47C400000     1BA0		      cmp4.eq pr0, pr15 = r0, r68							   // 001387
00BC4CC89800     1BA1		      st2     [r76] = r68, -32								   // 001380
00860000600F     1BA2	       (pr15) br.cond.dpnt.few L$126 ;;								   // 001387

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 84
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mii 
012020000B80     1BB0		      mov     r46 = 512									   // 001389
010804C41300     1BB1		      adds    r76 = 32, r76
000008000000     1BB2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC4CC5D800     1BC0		      st2     [r76] = r46, -32 ;;
000008000000     1BC1		      nop.m   0
000008000000     1BC2		      nop.i   0
			   }
	         1BD0	L$126:												   // 001394
			   { .mii 
010800C31940     1BD0		      adds    r101 = 24, r12
010800C39900     1BD1		      adds    r100 = 28, r12
01200000C640     1BD2		      mov     r25 = 6 ;;
			   }
			   { .mii 
008C8657A000     1BE0		      st4     [r101] = r61
0000B0001F80     1BE1		      sxt4    r126 = r0
0000B0001F40     1BE2		      sxt4    r125 = r0
			   }
			   { .mmi 
008C86400000     1BF0		      st4     [r100] = r0
010804C41300     1BF1		      adds    r76 = 32, r76
0000B0001F00     1BF2		      sxt4    r124 = r0 ;;
			   }
			   { .mmi 
0119F80FFEC0     1C00		      adds    r123 = -1, r0
00B04CCC1900     1C01		      ld2     r100 = [r76], -32
000008000000     1C02		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1C10		      nop.m   0
0000B6401E40     1C11		      sxt4    r121 = r100
010800C31900     1C12		      adds    r100 = 24, r12 ;;
			   }
			   { .mib 
000008000000     1C20		      nop.m   0
0000B6401E80     1C21		      sxt4    r122 = r100
00A000001000     1C22		      br.call.sptk.many br0 = XPO$ALLOC_MEM
			   }
			   { .mii 
010807800040     1C30		      mov     r1 = r120
00A0308001C0     1C31		      tbit.z  pr7, pr6 = $XPO$STATUS, 0 ;;	// pr7, pr6 = r8, 0
01C000001247     1C32	       (pr7)  cmp.eq.unc pr9, pr0 = r0, r0
			   }
			   { .mbb 
01C000001206     1C40	       (pr6)  cmp.eq.unc pr8, pr0 = r0, r0
008600002008     1C41	       (pr8)  br.cond.dpnt.few L$128
008600006009     1C42	       (pr9)  br.cond.dpnt.few L$129
			   }
	         1C50	L$128:
			   { .mmi 
010800C399C0     1C50		      adds    r103 = 28, r12 ;;
0080867019C0     1C51		      ld4     r103 = [r103]
010804C49300     1C52		      adds    r76 = 36, r76 ;;

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 85
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mmi 
00BC8CCCF700     1C60		      st4     [r76] = r103, -36 ;;
000008000000     1C61		      nop.m   0
000008000000     1C62		      nop.i   0
			   }
	         1C70	L$129:
			   { .mfb 
000008000000     1C70		      nop.m   0
000008000000     1C71		      nop.f   0
008600008008     1C72	       (pr8)  br.cond.dpnt.few L$122
			   }
			   { .mii 
01080A8B1A80     1C80		      adds    r106 = 216, r40								   // 001396
01080A8B9B00     1C81		      adds    r108 = 220, r40
000008000000     1C82		      nop.i   0
			   }
			   { .mlx 
000008000000     1C90		      nop.m   0
800000000000     1C91		      movl    r105 = 2138370 ;;
01942040B4
			   }
			   { .mmb 
008C86AD2000     1CA0		      st4     [r106] = r105
008C86C10000     1CA1		      st4     [r108] = $XPO$STATUS		// [r108] = r8
008000030000     1CA2		      br.sptk.few L$9 ;;
			   }
	         1CB0	L$122:												   // 001376
			   { .mmi 
010802860A00     1CB0		      adds    r40 = 48, r40 ;;								   // 001402
00B08A8A1AC0     1CB1		      ld4     r107 = [r40], -48
000008000000     1CB2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1CC0		      nop.m   0
00A406B05AC0     1CC1		      extr.u  r107 = r107, 1, 1 ;;
00A056B002C0     1CC2		      tbit.z  pr11, pr10 = r107, 0
			   }
			   { .mfb 
000008000000     1CD0		      nop.m   0
000008000000     1CD1		      nop.f   0
00860001800B     1CD2	       (pr11) br.cond.dpnt.few L$134
			   }
			   { .mmi 
010802858A00     1CE0		      adds    r40 = 44, r40 ;;
00B08A8A9980     1CE1		      ld4     r102 = [r40], -44
000008000000     1CE2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1CF0		      nop.m   0
00A40664D980     1CF1		      extr.u  r102 = r102, 19, 1 ;;
00A066600340     1CF2		      tbit.z  pr13, pr12 = r102, 0 ;;
			   }
			   { .mib 
01C0000012CD     1D00	       (pr13) cmp.eq.unc pr11, pr0 = r0, r0
01C00000128C     1D01	       (pr12) cmp.eq.unc pr10, pr0 = r0, r0
00860000800B     1D02	       (pr11) br.cond.dpnt.few L$132								   // 001403

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 86
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
			   { .mii 
000008000000     1D10		      nop.m   0
0000B2C01B40     1D11		      sxt4    r109 = HEADER_XAB ;;		// r109 = r44
010806D21B40     1D12		      adds    r109 = 16, r109 ;;
			   }
			   { .mmi 
008086D01B40     1D20		      ld4     r109 = [r109] ;;
01C476D003C0     1D21		      cmp4.eq pr15, pr14 = r0, r109
000008000000     1D22		      nop.i   0 ;;
			   }
			   { .mii 
01C0000012CF     1D30	       (pr15) cmp.eq.unc pr11, pr0 = r0, r0
01C00000128E     1D31	       (pr14) cmp.eq.unc pr10, pr0 = r0, r0
000008000000     1D32		      nop.i   0
			   }
	         1D40	L$132:
			   { .bbb 
00860000200A     1D40	       (pr10) br.cond.dpnt.few L$133								   // 001402
004000000000     1D41		      nop.b   0
00860000A00B     1D42	       (pr11) br.cond.dpnt.few L$134
			   }
	         1D50	L$133:
			   { .mii 
000008000000     1D50		      nop.m   0
0000B2C018C0     1D51		      sxt4    r99 = HEADER_XAB ;;		// r99 = r44				   // 001406
0108063218C0     1D52		      adds    r99 = 16, r99 ;;
			   }
			   { .mmi 
0080863018C0     1D60		      ld4     r99 = [r99] ;;
000008000000     1D61		      nop.m   0
00A7B36C78C0     1D62		      shl     r99 = r99, 9 ;;
			   }
			   { .mii 
0119E63018C0     1D70		      adds    r99 = -512, r99
0108028A8A00     1D71		      adds    r40 = 84, r40								   // 001405
000008000000     1D72		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8A8C6B00     1D80		      st4     [r40] = r99, -84 ;;
000008000000     1D81		      nop.m   0
000008000000     1D82		      nop.i   0
			   }
	         1D90	L$134:												   // 001412
			   { .mib 
012000002640     1D90		      mov     r25 = 1
0000B4A01E40     1D91		      sxt4    r121 = RAB			// r121 = r74
00A000001000     1D92		      br.call.sptk.many br0 = SYS$CONNECT
			   }
			   { .mib 
010807800040     1DA0		      mov     r1 = r120
00A0308001C0     1DA1		      tbit.z  pr7, pr6 = r8, 0
008600010006     1DA2	       (pr6)  br.cond.dpnt.few L$9 ;;
			   }
			   { .mii 
010804C11300     1DB0		      adds    r76 = 8, r76								   // 001415
0000B2001E40     1DB1		      sxt4    r121 = IOB ;;			// r121 = r32

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 87
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

010804C09EC0     1DB2		      adds    r123 = 4, r76
			   }
			   { .mmi 
008084C01E80     1DC0		      ld4     r122 = [r76] ;;
000008000000     1DC1		      nop.m   0
0000B7A01E80     1DC2		      sxt4    r122 = r122
			   }
			   { .mfb 
000008000000     1DD0		      nop.m   0
000008000000     1DD1		      nop.f   0
008000004000     1DD2		      br.sptk.few L$145 ;;
			   }
	         1DE0	L$101:												   // 001288
			   { .mii 
010804419EC0     1DE0		      adds    r123 = 12, r68								   // 001305
0000B4901E80     1DE1		      sxt4    r122 = r73
0000B2001E40     1DE2		      sxt4    r121 = IOB			// r121 = r32
			   }
	         1DF0	L$145:
			   { .mmi 
012000006640     1DF0		      mov     r25 = 3 ;;
008087B01EC0     1DF1		      ld4     r123 = [r123]
000008000000     1DF2		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     1E00		      nop.m   0
0000B7B01EC0     1E01		      sxt4    r123 = r123
00A000001000     1E02		      br.call.sptk.many br0 = XPO$RMS_ERROR
			   }
			   { .mfi 
010807800040     1E10		      mov     r1 = r120
000008000000     1E11		      nop.f   0
000008000000     1E12		      nop.i   0
			   }
	         1E20	L$9:												   // 000340
			   { .mfb 
01C402C001C0     1E20		      cmp4.eq pr7, pr0 = r0, HEADER_XAB		// pr7, pr0 = r0, r44			   // 001432
000008000000     1E21		      nop.f   0
00860000E007     1E22	       (pr7)  br.cond.dpnt.few L$137
			   }
			   { .mii 
010800C21C00     1E30		      adds    r112 = 16, r12								   // 001435
010800C29C40     1E31		      adds    r113 = 20, r12
000008000000     1E32		      nop.i   0
			   }
			   { .mlx 
010800C21BC0     1E40		      adds    r111 = 16, r12
000000000008     1E41		      movl    r110 = 33685548 ;;
0180010B37
			   }
			   { .mii 
008C870DC000     1E50		      st4     [r112] = r110
01200000A640     1E51		      mov     r25 = 5
0000B0001F40     1E52		      sxt4    r125 = r0
			   }
			   { .mii 
0119F80FDE80     1E60		      adds    r122 = -2, r0

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 88
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

0000B0001F00     1E61		      sxt4    r124 = r0
0000B0001EC0     1E62		      sxt4    r123 = r0
			   }
			   { .mib 
008C87158000     1E70		      st4     [r113] = HEADER_XAB		// [r113] = r44
0000B6F01E40     1E71		      sxt4    r121 = r111
00A000001000     1E72		      br.call.sptk.many br0 = XPO$FREE_MEM
			   }
			   { .mfi 
010807800040     1E80		      mov     r1 = r120
000008000000     1E81		      nop.f   0
000008000000     1E82		      nop.i   0
			   }
	         1E90	L$137:												   // 001432
			   { .mii 
01080A8B1C80     1E90		      adds    r114 = 216, r40								   // 002168
01080A8B0A80     1E91		      adds    r42 = 216, r40								   // 002174
010802201D40     1E92		      mov     r117 = FAILURE_ACTION ;;		// r117 = r34
			   }
			   { .mii 
008087201C80     1EA0		      ld4     r114 = [r114]								   // 002168
010802860A00     1EA1		      adds    r40 = 48, r40
000008000000     1EA2		      nop.i   0 ;;
			   }
			   { .mmi 
008082801CC0     1EB0		      ld4     r115 = [r40] ;;
000008000000     1EB1		      nop.m   0
0097873E5C80     1EB2		      dep     r114 = r114, r115, 16, 1 ;;
			   }
			   { .mmi 
00BC8A8E5400     1EC0		      st4     [r40] = r114, -48
008082A011C0     1EC1		      ld4     r71 = [r42]								   // 002174
000008000000     1EC2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1ED0		      nop.m   0
00A034700000     1ED1		      tbit.z  pr0, pr6 = r71, 0 ;;
010802101D46     1ED2	       (pr6)  mov     r117 = SUCCESS_ACTION ;;		// r117 = r33
			   }
			   { .mfb 
01C407500200     1EE0		      cmp4.eq pr8, pr0 = r0, $XPO$ACTION	// pr8, pr0 = r0, r117
000008000000     1EE1		      nop.f   0
008600010008     1EE2	       (pr8)  br.cond.dpnt.few L$139
			   }
			   { .mii 
01080A8B9EC0     1EF0		      adds    r123 = 220, r40
0000B7501D40     1EF1		      sxt4    r117 = $XPO$ACTION		// r117 = r117
01080A8B0C00     1EF2		      adds    r48 = 216, r40
			   }
			   { .mii 
012000008640     1F00		      mov     r25 = 4
0000B2001F00     1F01		      sxt4    r124 = IOB			// r124 = r32
0000B4701E80     1F02		      sxt4    r122 = r71 ;;
			   }
			   { .mii 
008087B01EC0     1F10		      ld4     r123 = [r123]
012000003E40     1F11		      mov     r121 = 1

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 89
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

000008000000     1F12		      nop.i   0 ;;
			   }
			   { .mii 
00A0C7510BC0     1F20		      ld8     r47 = [r117], 8
0000B7B01EC0     1F21		      sxt4    r123 = r123 ;;
000E0015E180     1F22		      mov     br6 = r47
			   }
			   { .mfi 
0080C7500040     1F30		      ld8     r1 = [r117]
000008000000     1F31		      nop.f   0
000008000000     1F32		      nop.i   0 ;;
			   }
			   { .mfb 
000008000000     1F40		      nop.m   0
000008000000     1F41		      nop.f   0
00210000C000     1F42		      br.call.sptk.few br0 = br6
			   }
			   { .mii 
008C83010000     1F50		      st4     [r48] = r8
010807800040     1F51		      mov     r1 = r120
000008000000     1F52		      nop.i   0
			   }
	         1F60	L$139:
			   { .mmi 
01080A8B0B40     1F60		      adds    r45 = 216, r40 ;;								   // 002180
008082D00B40     1F61		      ld4     r45 = [r45]
000008000000     1F62		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     1F70		      nop.m   0
00A032D001C0     1F71		      tbit.z  pr7, pr6 = r45, 0
00860000C006     1F72	       (pr6)  br.cond.dpnt.few L$141
			   }
			   { .mmi 
010802860A00     1F80		      adds    r40 = 48, r40 ;;
00B08A8A0C40     1F81		      ld4     r49 = [r40], -48
000008000000     1F82		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1F90		      nop.m   0
00A40314CC40     1F91		      extr.u  r49 = r49, 19, 1 ;;
00A043100240     1F92		      tbit.z  pr9, pr8 = r49, 0 ;;
			   }
			   { .mfb 
01C000001188     1FA0	       (pr8)  cmp.eq.unc pr6, pr0 = r0, r0
000008000000     1FA1		      nop.f   0
008600006006     1FA2	       (pr6)  br.cond.dpnt.few L$141
			   }
			   { .mib 
012000002640     1FB0		      mov     r25 = 1									   // 002182
0000B2001E40     1FB1		      sxt4    r121 = IOB			// r121 = r32
00A000001000     1FB2		      br.call.sptk.many br0 = XPO$ZAP_IOB
			   }
			   { .mfi 
010807800040     1FC0		      mov     r1 = r120
000008000000     1FC1		      nop.f   0
000008000000     1FC2		      nop.i   0

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 90
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

			   }
	         1FD0	L$141:												   // 002180
			   { .mmi 
01080A8B0A00     1FD0		      adds    r40 = 216, r40 ;;								   // 002188
008082800200     1FD1		      ld4     r8 = [r40]
000008000000     1FD2		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     1FE0		      nop.m   0
0000B0800200     1FE1		      sxt4    r8 = r8
004000000000     1FE2		      nop.b   0
			   }
			   { .mii 
000008000000     1FF0		      nop.m   0
0001540EE000     1FF1		      mov.i   rspfs = r119
010810C60300     1FF2		      adds    r12 = 304, r12 ;;
			   }
			   { .mib 
000008000000     2000		      nop.m   0
000E001EC000     2001		      mov     br0 = r118
000108001100     2002		      br.ret.sptk.many br0 ;;
			   }
				      .endp   XPO$OPEN

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

				       .psect _XPO$DATA, CON, LCL, NOSHR, NOEXE, WRT, NOVEC
				      .lcomm  $STR$STRING2, 8, 8
				      .lcomm  $STR$STRING2, 8, 8
				      .lcomm  $STR$STRING2, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  $STR$PATTERN, 8, 8
				      .lcomm  P.AAA, 9, 16
				      .lcomm  fill$$1, 3, 4
				      .lcomm  P.AAB, 10, 16
				      .lcomm  fill$$2, 2, 2
				      .lcomm  P.AAC, 9, 16
				      .lcomm  fill$$3, 3, 4
				      .lcomm  P.AAD, 1, 1
				      .lcomm  fill$$4, 3, 4
				      .lcomm  P.AAE, 1, 1
				      .lcomm  fill$$5, 3, 4
				      .lcomm  P.AAF, 1, 1
				      .psect _XPO$DATA, CON, LCL, NOSHR, NOEXE, WRT, NOVEC
			$STR$STRING2:
    0009         0000		      data2   0x9 // data2 9
      0E         0002		      data1   0xE // data1 14
      01         0003		      data1   0x1 // data1 1
00000000         0004		      data4   P.AAA
			$STR$STRING2:
    000A         0008		      data2   0xA // data2 10
      0E         000A		      data1   0xE // data1 14
      01         000B		      data1   0x1 // data1 1
00000000         000C		      data4   P.AAB
			$STR$STRING2:
    0009         0010		      data2   0x9 // data2 9

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 91
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

      0E         0012		      data1   0xE // data1 14
      01         0013		      data1   0x1 // data1 1
00000000         0014		      data4   P.AAC
			$STR$PATTERN:
    0001         0018		      data2   0x1 // data2 1
      0E         001A		      data1   0xE // data1 14
      01         001B		      data1   0x1 // data1 1
00000000         001C		      data4   P.AAD
			$STR$PATTERN:
    0001         0020		      data2   0x1 // data2 1
      0E         0022		      data1   0xE // data1 14
      01         0023		      data1   0x1 // data1 1
00000000         0024		      data4   P.AAE
			$STR$PATTERN:
    0001         0028		      data2   0x1 // data2 1
      0E         002A		      data1   0xE // data1 14
      01         002B		      data1   0x1 // data1 1
00000000         002C		      data4   P.AAF
				      .psect _XPO$PLIT, CON, LCL, NOSHR, NOEXE, NOWRT, NOVEC
			P.AAA:
24535953         0000		      string  "SYS$INPUT"
55504E49         0004
      54         0008

			P.AAB:
24535953         000C		      string  "SYS$OUTPUT"
5054554F         0010
    5455         0014

			P.AAC:
24535953         0018		      string  "SYS$ERROR"
4F525245         001C
      52         0020

			P.AAD:
      2B         0024		      data1   0x2B // data1 43
			P.AAE:
      2B         0028		      data1   0x2B // data1 43
			P.AAF:
      2B         002C		      data1   0x2B // data1 43
				      .section .data
				      .type   XPO$VALID_IOB, @function 
				      .global  XPO$VALID_IOB
				      .section .data
				      .type   XST$EQL, @function 
				      .global  XST$EQL
				      .section .data
				      .type   XST$EQL, @function 
				      .global  XST$EQL
				      .section .data
				      .type   XST$EQL, @function 
				      .global  XST$EQL
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$COPY, @function 

XOPEN                           Machine Code Listing             4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 92
X1.2-45                         XPO$OPEN                        19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

				      .global  XST$COPY
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XST$SCAN, @function 
				      .global  XST$SCAN
				      .section .data
				      .type   XPO$ALLOC_MEM, @function 
				      .global  XPO$ALLOC_MEM
				      .section .data
				      .type   OTS$FILL, @function 
				      .global  OTS$FILL
				      .section .data
				      .type   XPO$RMS_PARSE, @function 
				      .global  XPO$RMS_PARSE
				      .section .data
				      .type   XPO$ALLOC_MEM, @function 
				      .global  XPO$ALLOC_MEM
				      .section .data
				      .type   SYS$OPEN, @function 
				      .global  SYS$OPEN
				      .section .data
				      .type   SYS$CREATE, @function 
				      .global  SYS$CREATE
				      .section .data
				      .type   SYS$CREATE, @function 
				      .global  SYS$CREATE
				      .section .data
				      .type   SYS$OPEN, @function 
				      .global  SYS$OPEN
				      .section .data
				      .type   XST$COPY, @function 
				      .global  XST$COPY
				      .section .data
				      .type   XPO$ALLOC_MEM, @function 
				      .global  XPO$ALLOC_MEM
				      .section .data
				      .type   XPO$ALLOC_MEM, @function 
				      .global  XPO$ALLOC_MEM
				      .section .data
				      .type   SYS$CONNECT, @function 
				      .global  SYS$CONNECT
				      .section .data
				      .type   XPO$RMS_ERROR, @function 
				      .global  XPO$RMS_ERROR
				      .section .data
				      .type   XPO$FREE_MEM, @function 
				      .global  XPO$FREE_MEM
				      .section .data
				      .type   XPO$ZAP_IOB, @function 
				      .global  XPO$ZAP_IOB


;				Library Statistics
;
;					     -------- Symbols --------	    Pages

                                Source Listing                   4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 93
                                                                19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

;	File				     Total    Loaded   Percent      Mapped
;
;  DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14
;					       590       169        28       270
;  DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14
;					        91        19        20        27
;  SYS$COMMON:[SYSLIB]STARLET.L32;1	     28352       116         0      2178


    0	   2193 


                                Source Listing                   4-FEB-2004 11:01:38  BLISS-32I T1.1-053                Page 94
                                Source Listing                  19-MAR-2002 10:53:14  [LASTOVICA.XPORT.VMSGEN]XOPEN.BLI;2

COMMAND LINE:

BLISSXOPEN/VARIANT=3/LIST/DEBUG
