                                XPO$GET - XPORT File Input       4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 1
                                                                19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    0	      1 MODULE XGET (	IDENT = 'X1.2-26'		%TITLE 'XPO$GET - XPORT File Input'
    0	      2 		%BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) )
    0	      3 		%BLISS36( ,ENTRY( XPO$GET ),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 input 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 ! MODIFIED BY: Edward G. Freedman	See CMS history for details
    1	     40 !
    1	     41 !--

XGET                            XPO$GET - XPORT File Input       4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 2
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    1	     43 !
    1	     44 ! TABLE OF CONTENTS:
    1	     45 !
    1	     46 
    1	     47 FORWARD ROUTINE
    1	     48     XPO$GET;						! XPORT File Input Routine
    1	     49 
    1	     50 !
    1	     51 ! INCLUDE FILES:
    1	     52 !
    1	     53 
    1	     54 LIBRARY  'XPORT' ;					! Public XPORT control block and macro definitions
    1	     56 LIBRARY  'XPOSYS' ;					! Internal XPORT macro definitions
    1	     58 
    1	     59     $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	     60 
    1	     61 %IF $TOPS10 %THEN
U   1	     62 REQUIRE  'XT10' ;					! TOPS-10 I/O interface macros
U   1	     63 %FI
    1	     64 
    1	     65 %IF $TOPS20 %THEN
U   1	     66 REQUIRE  'XT20' ;					! TOPS-20 I/O interface macros
U   1	     67 %FI
    1	     68 
    1	     69 %IF $VMS %THEN
    1	     70 REQUIRE  'XVMS' ;					! XPORT-specific VAX/VMS interface definitions
    1	    100 %FI
    1	    101 
    1	    102 %IF $11M %THEN
U   1	    103 REQUIRE  'XRSX' ;					! XPORT-specific RSX-11 and FCS-11 interface definitions
U   1	    104 %FI
    1	    105 
    1	    106 %IF $RSTS %THEN
U   1	    107 REQUIRE  'XRSTS' ;					! RSTS/E I/O interface definitions
U   1	    108 %FI
    1	    109 
    1	    110 %IF $RT11 %THEN
U   1	    111 REQUIRE  'XRT11' ;					! RT-11 I/O interface macros
U   1	    112 %FI
    1	    113 
    1	    114 !
    1	    115 ! MACROS:
    1	    116 !
    1	    117 
    1	    118 %IF $TOPS20 %THEN
U   1	    119 MACRO
U   1	    120     get_error =
U   1	    121 	BEGIN
U   1	    122 	LOCAL error;					! Storage area for error code.
U   1	    123 	$T20_GETER( $FHSLF, error );			! Pick up the last error for this process.
U   1	    124 
U   1	    125 	X20$ERROR( .iob, .error );			! Convert the error into an equivalent XPORT completion code
U   1	    126 	END % ;
U   1	    127 %FI
    1	    128 

XGET                            XPO$GET - XPORT File Input       4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 3
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    1	    129 !
    1	    130 ! EQUATED SYMBOLS:
    1	    131 !
    1	    132 
    1	    133 LITERAL
    1	    134     yes = 1,						! Used to turn an indicator on
    1	    135     no = 0,						! Used to turn an indicator off
    1	    136 
    1	    137     max_prompt_len = 255,				! Maximum number of characters in an input prompt
    1	    138     buffer_length = 80,					! Input buffer allocation and increment size
    1	    139 
    1	    140     ctrl_d = %O'4',					! Control-D
    1	    141     ctrl_z = %O'32',					! Control-Z (terminal EOF)
    1	    142 
    1	    143     term_buffer_len = 255;				! Length of terminal input buffer (RSX-11M/RSTS only)
    1	    144 
    1	    145 !
    1	    146 ! PSECT DECLARATIONS:
    1	    147 !
    1	    148 
    1	    149     $XPO_PSECTS						! Declare XPORT PSECT names and attributes
    1	    150 
    1	    151 !
    1	    152 ! OWN STORAGE:
    1	    153 !
    1	    154 
    1	    155 !
    1	    156 ! EXTERNAL REFERENCES:
    1	    157 !
    1	    158 
    1	    159 EXTERNAL ROUTINE
    1	    160     XPO$OPEN,						! XPORT file open routine
    1	    161     XPO$CLOSE;						! XPORT file close routine
    1	    162 
    1	    163 %IF $TOPS10 OR $TOPS20 %THEN
U   1	    164 EXTERNAL ROUTINE
U   1	    165     X36$SEQ_INFO,					! TOPS-10/TOPS-20 file sequence info routine
U   1	    166     X36$GET_FILE;					! TOPS-10/TOPS-20 file read routine
U   1	    167 %FI
    1	    168 
    1	    169 %IF $TOPS20 %THEN
U   1	    170 EXTERNAL ROUTINE
U   1	    171     X20$IN,						! TOPS-20 input routine
U   1	    172     X20$ERROR :  NOVALUE;				! TOPS-20 to XPORT completion code conversion table
U   1	    173 %FI
    1	    174 
    1	    175 %IF $VMS %THEN
    1	    176 EXTERNAL ROUTINE
    1	    177     XPO$RMS_ERROR :  NOVALUE,				! RMS-to-XPORT completion code conversion routine
    1	    178     LIB$GET_EF : ADDRESSING_MODE(GENERAL),		! Event flag allocation
    1	    179     LIB$FREE_EF : ADDRESSING_MODE(GENERAL);		! Event flag deallocation
    1	    180 %FI
    1	    181 
    1	    182 %IF $11M %THEN
U   1	    183 EXTERNAL
U   1	    184     XRSX$EVENT_FLAG;					! XPORT QIO/FCS event flag number
U   1	    185 

XGET                            XPO$GET - XPORT File Input       4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 4
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   1	    186 EXTERNAL ROUTINE
U   1	    187     XRSX$IO_ERROR :  NOVALUE;				! RSX-to-XPORT completion code conversion routine
U   1	    188 %FI
    1	    189 
    1	    190 %IF $RSTS %THEN
U   1	    191 EXTERNAL ROUTINE
U   1	    192     XRST$IN,						! RSTS/E input routine
U   1	    193     XRST$GET_FILE,					! RSTS/E file read routine
U   1	    194     XRST$ERROR :  NOVALUE;				! RSTS-to-XPORT completion code routine
U   1	    195 %FI
    1	    196 
    1	    197  %IF $RT11 %THEN
U   1	    198 EXTERNAL ROUTINE
U   1	    199     XRT$IN,						! RT-11 input routine
U   1	    200     XRT$GET_FILE;					! RT-11 file read routine
U   1	    201 %FI

XGET                            XPO$GET - XPORT File Input       4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 5
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    1	    203 GLOBAL ROUTINE XPO$GET ( iob, success_action, failure_action ) =
    1	    204 
    1	    205 !++
    1	    206 !
    1	    207 ! FUNCTIONAL DESCRIPTION:
    1	    208 !
    1	    209 !	This routine inputs a single record from the file described
    1	    210 !	by the caller's IOB.
    1	    211 !
    1	    212 ! FORMAL PARAMETERS:
    1	    213 !
    1	    214 !	iob - address of the caller's IOB
    1	    215 !	success_action - address of success action routine
    1	    216 !	failure_action - address of failure action routine
    1	    217 !
    1	    218 ! IMPLICIT INPUTS:
    1	    219 !
    1	    220 !	Information contained in or pointed to by the caller's IOB
    1	    221 !
    1	    222 ! IMPLICIT OUTPUTS:
    1	    223 !
    1	    224 !	Various fields in the caller's IOB are updated to reflect
    1	    225 !	the results of the requested I/O function
    1	    226 !
    1	    227 ! COMPLETION CODES:  (also returned in IOB$G_COMP_CODE)
    1	    228 !
    1	    229 !	XPO$_NORMAL - the input operation was successful
    1	    230 !	XPO$_INCOMPLETE - an incomplete amount of data was read
    1	    231 !	XPO$_NEW_FILE - the first get on a concatenated file was successful
    1	    232 !	XPO$_NEW_PAGE - the first read on a new SOS page was successful
    1	    233 !
    1	    234 !	XPO$_END_FILE - end-of-file reached
    1	    235 !
    1	    236 !	XPO$_BAD_IOB - invalid IOB
    1	    237 !		(IOB$G_2ND_CODE = XPO$_BAD_LENGTH - invalid length
    1	    238 !				or XPO$_CORRUPTED - IOB$T_STRING is invalid (TOPS-10))
    1	    239 !	XPO$_BAD_PROMPT - invalid input prompt
    1	    240 !		(IOB$G_2ND_CODE = XPO$_BAD_LENGTH - prompt longer than 255 characters
    1	    241 !				or XPO$_CONFLICT - prompt on binary or random GET
    1	    242 !				or $STR_APPEND completion code
    1	    243 !				or $STR_COPY completion code(TOPS-10, TOPS-20, RT-11)
    1	    244 !				or completion code from $STR_VALIDATE)
    1	    245 !	XPO$_BAD_REQ - invalid request
    1	    246 !		(IOB$G_2ND_CODE = XPO$_BAD_LENGTH - zero count (STREAM or BINARY only)
    1	    247 !				or XPO$_BAD_DTYPE - invalid input data type)
    1	    248 !	XPO$_FREE_MEM - buffer deallocation error
    1	    249 !		(IOB$G_2ND_CODE = $XPO_FREE_MEM completion code)
    1	    250 !	XPO$_GET_MEM - buffer allocation error (TOPS-10,TOPS-20,RSX-11M,RSTS)
    1	    251 !		( IOB$G_2ND_CODE = completion code from $XPO_GET_MEM )
    1	    252 !	XPO$_IO_BUFFER - I/O buffering error (VMS, 11M)
    1	    253 !		(IOB$G_2ND_CODE = $STR_COPY or $STR_APPEND completion code)
    1	    254 !	XPO$_NOT_INPUT - file is not open for output
    1	    255 !	XPO$_NOT_OPEN - the file is not opened
    1	    256 !	XPO$_NO_SPACE - quota exceeded or disk full (TOPS-20)
    1	    257 !	XPO$_SYS_ERROR - unexpected operating system error (VMS)
    1	    258 !		( IOB$G_2ND_CODE = completion code from LIB$GET_EF or LIB$FREE_EF)
    1	    259 !	failure completion codes from X20$ERROR (TOPS-20)

XGET                            XPO$GET - XPORT File Input       4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 6
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    1	    260 !	failure completion codes from X36$SEQ_INFO (TOPS-10/TOPS-20)
    1	    261 !	failure completion codes from X36$GET_FILE (TOPS-10/TOPS-20)
    1	    262 !	failure completion code from $STR_APPEND (VMS)
    1	    263 !	failure completion codes from XPO$RMS_ERROR (VMS)
    1	    264 !	failure completion codes from XRSX$IO_ERROR (RSX-11M)
    1	    265 !	failure completion codes from XRST$GET_FILE (RSTS)
    1	    266 !	failure completion codes from XRST$ERROR (RSTS)
    1	    267 !	failure completion codes from XRT$GET_FILE (RT-11)
    1	    268 !
    1	    269 !	Note:  If automatic input concatenation occurs and the necessary
    1	    270 !	       file close or open operation fails, the appropriate $XPO_CLOSE
    1	    271 !	       or $XPO_OPEN failure completion codes are returned.
    1	    272 !
    1	    273 ! SIDE EFFECTS:
    1	    274 !
    1	    275 !	None
    1	    276 !
    1	    277 !--
    1	    278 
    1	    279     BEGIN
    2	    280 
    2	    281     MAP
    2	    282 	iob :  REF $XPO_IOB();				! Redefine the IOB parameter
    2	    283 
    2	    284     BIND
    2	    285 	prompt = .iob[IOB$A_PROMPT] : $STR_DESCRIPTOR();! Redefine the input prompt descriptor
    2	    286 
    2	    287     LABEL
    2	    288 	READ_BLOCK;					! System-specific file input block
    2	    289 
    2	    290 %IF $RT11 %THEN
U   2	    291     LOCAL
U   2	    292 	lower_case_bit,
U   2	    293 	special_mode;
U   2	    294 %FI
    2	    295 
    2	    296 !
    2	    297 ! XPORT routine initialization.
    2	    298 !
    2	    299 
    2	    300     $XPO_MAIN_BEGIN( IO )				! Define the MAIN_BLOCK code block
    3	    301 							! and validate the caller's IOB.
    3	    302 
    3	    303     iob[IOB$G_COMP_CODE] = XPO$_NORMAL;			! Start out assuming everything will be ok.
    3	    304 
    3	    305 !
    3	    306 ! Validate the caller's IOB.
    3	    307 !
    3	    308 
    3	    309     IF NOT .iob[IOB$V_OPEN]				! If the file is not open
    3	    310     THEN						!
    3	    311 	$XPO_QUIT( NOT_OPEN );				! return an error code to the caller.
    3	    312 
    3	    313     IF NOT .iob[IOB$V_INPUT]				! If the file is not opened for input,
    3	    314     THEN						!
    3	    315 	$XPO_QUIT( NOT_INPUT );				! return an error code to the caller.
    3	    316 

XGET                            XPO$GET - XPORT File Input       4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 7
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    3	    317     IF NOT .iob[IOB$V_RECORD] AND			! If this is not a character record file
    3	    318 	.iob[IOB$H_STRING] LEQ 0			! and the data length is zero,
    3	    319     THEN						!
    3	    320 	$XPO_QUIT( BAD_REQ, BAD_LENGTH );		! return error codes to the caller.
    3	    321 
    3	    322     IF (.iob[IOB$V_RECORD] AND				! Check for the following conflicts:
    4	    323 	    .iob[$SUB_FIELD(IOB$T_STRING,STR$B_DTYPE)]	!    character file with bad data type
    4	    324 				NEQ STR$K_DTYPE_T) OR	!
    3	    325 	(.iob[IOB$V_STREAM] AND				! Check for the following conflicts:
    4	    326 	    .iob[$SUB_FIELD(IOB$T_STRING,STR$B_DTYPE)]	!    character file with bad data type
    4	    327 				NEQ STR$K_DTYPE_T) OR	!
    3	    328         ((.iob[IOB$V_BINARY] OR .iob[IOB$V_RANDOM]) AND	!    binary or random file with bad data type
    4	    329 	    .iob[$SUB_FIELD(IOB$T_DATA,XPO$B_DTYPE)]
    4	    330 				NEQ XPO$K_DTYPE_BU)
    4	    331     THEN						! If the IOB is questionable,
    3	    332 	$XPO_QUIT( BAD_REQ, BAD_DTYPE );		! return error codes to the caller.
    3	    333 
    3	    334     $STR_VALIDATE( prompt, (XPO$_BAD_PROMPT) );		! Validate the prompt string descriptor.
    3	    335 
    3	    336     IF .prompt[STR$H_LENGTH] NEQ 0  AND			! If a prompt is specified for a binary
    3	    337 	(.iob[IOB$V_BINARY] OR .iob[IOB$V_RANDOM])	! or random GET,
    4	    338     THEN						!
    3	    339 	$XPO_QUIT( BAD_PROMPT, CONFLICT );		! return error codes to the caller.
    3	    340 
    3	    341     IF .prompt[STR$H_LENGTH] GTR max_prompt_len		! If the input prompt is too long,
    3	    342     THEN						!
    3	    343 	$XPO_QUIT( BAD_PROMPT, BAD_LENGTH );		! return error codes to the caller.
    3	    344 
    3	    345 !
    3	    346 ! Repeat the remainder of this routine in order to perform
    3	    347 ! automatic input concatenation.
    3	    348 !
    3	    349 
    3	    350     WHILE 1 DO						! The following repeat loop is terminated
    3	    351 	BEGIN						! by a return to the caller.
    4	    352 
    4	    353 !
    4	    354 ! Read the next record from the input stream.
    4	    355 !
    4	    356 
    4	    357 	IF ( NOT .iob[IOB$V_EOF] )			! If end-of-file has not been reached,
    5	    358 		OR .iob[IOB$V_RANDOM]			! or random access is allowed
    4	    359 	THEN						! read one record from the input file.
    4	    360 	    READ_BLOCK :  BEGIN
    5	    361 
    5	    362 !+
    5	    363 !
    5	    364 !	System-specific file input processing follows.
    5	    365 !
    5	    366 !-

XGET                            TOPS-10/TOPS-20/RT-11 Terminal   4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 8
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	    368 %TITLE 'TOPS-10/TOPS-20/RT-11 Terminal GET Prompting'
    5	    369 %IF $TOPS10 OR $TOPS20 OR $RT11 %THEN
U   5	    370 
U   5	    371 !+
U   5	    372 !
U   5	    373 !	TOPS-10/TOPS-20/RT-11 GET Processing
U   5	    374 !
U   5	    375 !-
U   5	    376 
U   5	    377     BEGIN
U   5	    378 
U   5	    379     BIND
U   5	    380 	buffer_cb = .iob[IOB$A_BUFFER_CB] : VECTOR;	! TOPS-10/TOPS-20/RT-11 buffer control block
U   5	    381 
U   5	    382 %IF $RT11 %THEN
U   5	    383     LOCAL
U   5	    384 	value :  BYTE;					! Single ASCII character
U   5	    385     OWN
U   5	    386     	no_crlf :  $STR_DESCRIPTOR( STRING = (1, UPLIT BYTE(%O'200')) );
U   5	    387 %ELSE
U   5	    388     LOCAL
U   5	    389 	value;						! Single ASCII character or value
U   5	    390 %FI
U   5	    391 
U   5	    392     LOCAL
U   5	    393 	req_length,					! Requested input data length
U   5	    394 	new_buffer,					! New input buffer pointer/address
U   5	    395 	buffer_pointer;					! XPORT input buffer pointer
U   5	    396 
U   5	    397     MACRO
U   5	    398 	max_string_len =
U   5	    399 	    $SUB_FIELD( IOB$T_STRING, STR$H_MAXLEN ) %;
U   5	    400 
U   5	    401 %IF $RT11 %THEN
U   5	    402 !
U   5	    403 ! RT-11 initialization
U   5	    404 !
U   5	    405 
U   5	    406     IF .iob[IOB$V_TERMINAL]				! If this is a terminal file
U   5	    407     THEN						!
U   5	    408 	BEGIN						!
U   5	    409 	lower_case_bit = .RT_JSW_LC;			! Save the original terminal status
U   5	    410 	special_mode = .RT_JSW_STT;			! of both the lower_case and special_mode bits.
U   5	    411 	RT_JSW_LC = yes;				! Disable automatic conversion of lower-case to upper-case.
U   5	    412 	END;
U   5	    413 %FI
U   5	    414 
U   5	    415 !
U   5	    416 ! TOPS-10/TOPS-20/RT-11 initialization.
U   5	    417 !
U   5	    418 
U   5	    419     IF .iob[$SUB_FIELD(IOB$T_STRING,STR$B_CLASS)]	! Make sure IOB$T_STRING is DYNAMIC_BOUNDED.
U   5	    420 			NEQ STR$K_CLASS_DB
U   5	    421     THEN
U   5	    422 	$XPO_QUIT( BAD_IOB, CORRUPTED );
U   5	    423 
U   5	    424     req_length = .iob[IOB$H_STRING];			! Pickup the input request length before

XGET                            TOPS-10/TOPS-20/RT-11 Terminal   4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 9
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	    425 							! it is smashed by input prompting.
U   5	    426 
U   5	    427 
U   5	    428 !+
U   5	    429 !
U   5	    430 !	TOPS-10/TOPS-20/RT-11 Terminal GET Prompting
U   5	    431 !
U   5	    432 !-
U   5	    433 
U   5	    434 !
U   5	    435 ! Issue a terminal input prompt, if requested.
U   5	    436 !
U   5	    437 
U   5	    438     IF .iob[IOB$V_TERMINAL] AND				! If this is a terminal file
U   5	    439 	.prompt[STR$H_LENGTH] GTR 0			! and a prompt string was specified,
U   5	    440     THEN						! issue an input prompt.
U   5	    441 	BEGIN
U   5	    442 	LOCAL status;
U   5	    443 
U   5	    444     	iob[IOB$H_STRING] =  0;				! Allow for prompt to be placed in input buffer.
U   5	    445 
U   5	    446 	status = $STR_COPY(				! Move the prompt string into the input data buffer.
U   5	    447 			STRING = .iob[IOB$A_PROMPT],
U   5	    448 			TARGET = iob[IOB$T_STRING],
U   5	    449 			FAILURE = 0 );
U   5	    450 
U   5	    451 	IF .status					
U   5	    452 	THEN
U   5	    453 %IF NOT $RT11 %THEN
U   5	    454 	    status = $STR_APPEND(			! Add an ASCII null to the end of the prompt.
U   5	    455 			STRING = %CHAR(null),
U   5	    456 			TARGET = iob[IOB$T_STRING],
U   5	    457 			FAILURE = 0);
U   5	    458 %ELSE
U   5	    459 	    status = $STR_APPEND(			! (RT-11) Indicate we don't want to append a 'crlf'.
U   5	    460 			STRING = no_crlf,
U   5	    461 			TARGET = iob[IOB$T_STRING],
U   5	    462 			FAILURE = 0);
U   5	    463 %FI
U   5	    464         IF NOT .status					! If the prompt string was not successfully built,
U   5	    465 	THEN						!
U   5	    466 	    $XPO_QUIT( BAD_PROMPT, (.status) )		! return error codes to the caller.
U   5	    467 	ELSE						! Otherwise,
U   5	    468 %IF $TOPS10 %THEN					!
U   5	    469 	    $T10_OUTSTR(				! send it to the user's terminal.
U   5	    470 		    $XPO_ADDRESS(.iob[IOB$A_STRING]) );
U   5	    471 %FI
U   5	    472 
U   5	    473 %IF $TOPS20 %THEN
U   5	    474 	    IF NOT $T20_PSOUT( .iob[IOB$A_STRING] )	! send it to the user's terminal.
U   5	    475 
U   5	    476 	    THEN					
U   5	    477 		BEGIN					
U   5	    478 		get_error;				
U   5	    479 		$XPO_QUIT ();
U   5	    480 		END;
U   5	    481 %FI

XGET                            TOPS-10/TOPS-20/RT-11 Terminal   4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 10
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	    482 
U   5	    483 %IF $RT11 %THEN
U   5	    484 	$PRINT( .iob[IOB$A_STRING] );			! send it to the user's terminal
U   5	    485 %FI
U   5	    486 	END;
U   5	    487 %FI

XGET                            TOPS-20 Terminal Record-mode GE  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 11
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	    489 %TITLE 'TOPS-20 Terminal Record-mode GET'
    5	    490 %IF $TOPS20 %THEN
U   5	    491 
U   5	    492 !+
U   5	    493 !
U   5	    494 !	TOPS-20 Terminal Record-mode GET Processing
U   5	    495 !
U   5	    496 !-
U   5	    497 
U   5	    498 IF .iob[IOB$V_RECORD] AND .iob[IOB$V_TERMINAL]		! IF this is a record-mode terminal file
U   5	    499 THEN							! execute the following block.
U   5	    500     BEGIN
U   5	    501 
U   5	    502     LOCAL
U   5	    503         flags,						! Parameter used with RDTTY.
U   5	    504         ptr_or_error,					! Parameter used with RDTTY.
U   5	    505         flags_count;					! Parameter used with RDTTY.
U   5	    506 
U   5	    507 !
U   5	    508 ! Allocate a buffer if we haven't already.
U   5	    509 !
U   5	    510 
U   5	    511     IF .iob[max_string_len] EQL 0
U   5	    512     THEN
U   5	    513 	BEGIN
U   5	    514 	$XPO_IF_NOT( $XPO_GET_MEM(			! Allocate a buffer.
U   5	    515 		CHARACTERS = buffer_length,
U   5	    516 		DESCRIPTOR = iob[IOB$T_STRING],
U   5	    517 		FAILURE = 0 ) )
U   5	    518 	THEN
U   5	    519 	    $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );	! Report any errors.
U   5	    520 
U   5	    521 
U   5	    522 	END;
U   5	    523 
U   5	    524 
U   5	    525 !
U   5	    526 ! Initialize some locations.
U   5	    527 !
U   5	    528 
U   5	    529     iob[IOB$G_SEQ_NUMB]=				! Increment the input record count.
U   5	    530 		.iob[IOB$G_SEQ_NUMB] + 1;
U   5	    531 
U   5	    532     buffer_pointer = .iob[IOB$A_STRING];		! Setup the local input buffer pointer.
U   5	    533 
U   5	    534     iob[IOB$H_STRING] = 0;				! Indicate that no data has been read.
U   5	    535 
U   5	    536 !
U   5	    537 ! Move a single record into the local input buffer.
U   5	    538 !
U   5	    539 
U   5	    540     flags = .iob[max_string_len];			! Initialize to amount remaining in buffer
U   5	    541 
U   5	    542     WHILE 1 DO
U   5	    543         BEGIN
U   5	    544 	flags = .flags OR RD_BRK OR RD_BEL OR	 	! Break on ^Z, ESC, or End-Of-Line,
U   5	    545 		RD_CRF;					! and store only the line feed when RETURN key is hit. 

XGET                            TOPS-20 Terminal Record-mode GE  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 12
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	    546 
U   5	    547  	IF NOT $T20_RDTTY(				! Read in a record:
U   5	    548 			 .buffer_pointer,		!    pointer to buffer area used for terminal input
U   5	    549 			 .flags,			!    preset options and number of bytes
U   5	    550 			 0,				!    indicates no prompting text
U   5	    551 			 ptr_or_error,			!    updated string pointer or error code returned here
U   5	    552 			 flags_count )			!    indicator bits and updated count returned here
U   5	    553 
U   5	    554 	THEN
U   5	    555 	    $XPO_QUIT( NO_SPACE );			! Return to caller if error occurred.
U   5	    556 
U   5	    557 	iob[IOB$H_STRING] = .iob[IOB$H_STRING] +	! Update the character count:
U   5	    558 	   ( (.flags AND X20$K_RIGHT_HLF)-		!    count of available bytes before RDTTY
U   5	    559 		(.flags_count AND X20$K_RIGHT_HLF) );	!    count of available bytes after RDTTY
U   5	    560 	
U   5	    561 	IF (.flags_count AND RD_BTM) EQL RD_BTM		! If one of the break characters was reached,
U   5	    562 	THEN						! then figure out which one.
U   5	    563 	    BEGIN
U   5	    564 	    SELECTONE CH$RCHAR(CH$PLUS(.buffer_pointer,	! Get the last character input.
U   5	    565 			(CH$DIFF(.ptr_or_error,
U   5	    566 				 .buffer_pointer)-1))) OF
U   5	    567 	        SET
U   5	    568 
U   5	    569 		[ ctrl_Z ] :				! End-Of-File:
U   5	    570 		    BEGIN				!
U   5	    571 		    IF NOT $T20_PSOUT(			!    Echo a CR/LF.
U   5	    572 		    UPLIT( %STRING(%CHAR(cr,lf,0)) ) )
U   5	    573 		    THEN				!    If error condition encountered,
U   5	    574 			BEGIN				!
U   5	    575 			get_error;			!    return appropriate completion code to caller.
U   5	    576 			$XPO_QUIT ();
U   5	    577 			END;
U   5	    578 							!
U   5	    579 		    IF .iob[IOB$H_STRING] EQL 1		!
U   5	    580 		    THEN				!    and jump to EOF processing if it is the
U   5	    581 			BEGIN				!
U   5	    582 			iob[IOB$H_STRING] = 0;		!
U   5	    583 		        LEAVE READ_BLOCK;		!    first character on the line
U   5	    584 			END
U   5	    585 		    ELSE				!
U   5	    586 		        BEGIN				!
U   5	    587 		        iob[IOB$V_EOF] = yes;		!    or turn on the EOF indicator
U   5	    588 		        EXITLOOP;			!    and then exit the terminal read loop.
U   5	    589 		        END;
U   5	    590 		    END;
U   5	    591 
U   5	    592 		[ lf ] :				! End-Of-Line:
U   5	    593 		    EXITLOOP;				!    exit the terminal read loop
U   5	    594 
U   5	    595 		[ esc ] :				! Escape character:
U   5	    596 		    BEGIN				!
U   5	    597 		    flags = .flags_count AND 
U   5	    598 				 X20$K_RIGHT_HLF;	!    Figure how much room is left in buffer.
U   5	    599 		    buffer_pointer = .ptr_or_error;	!    Update the pointer and continue inputting.
U   5	    600 		    END;
U   5	    601 
U   5	    602 		TES;

XGET                            TOPS-20 Terminal Record-mode GE  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 13
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	    603 	    END
U   5	    604         ELSE
U   5	    605 	    BEGIN					! When the buffer is full,
U   5	    606 	    $XPO_IF_NOT( $XPO_GET_MEM(			! allocate a larger input buffer.
U   5	    607 			CHARACTERS = (.iob[max_string_len] + buffer_length),
U   5	    608 			RESULT = new_buffer, FAILURE = 0 ) )
U   5	    609 	    THEN
U   5	    610 		$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	    611 
U   5	    612 	    buffer_pointer =				! Copy the current input data into the new buffer.
U   5	    613 	    	    CH$MOVE( .iob[IOB$H_STRING],
U   5	    614 			.iob[IOB$A_STRING], .new_buffer );
U   5	    615 
U   5	    616 	    $XPO_FREE_QUIT(				! Free the original input buffer
U   5	    617 		    STRING = (.iob[IOB$H_STRING],	! but don't zero the descriptor length fields.
U   5	    618 			.iob[IOB$A_STRING]) );
U   5	    619 
U   5	    620 							! Update the XPORT input buffer descriptor:
U   5	    621 	    iob[IOB$A_STRING] = .new_buffer;		!    pointer to input buffer
U   5	    622 	    iob[max_string_len] = 
U   5	    623 	       .iob[max_string_len] + buffer_length;	!    length of the input buffer
U   5	    624 	    flags = buffer_length;
U   5	    625 
U   5	    626 	    END;
U   5	    627 
U   5	    628     END;
U   5	    629 
U   5	    630 !
U   5	    631 ! Remove any control characters from the end of the record.
U   5	    632 !
U   5	    633 
U   5	    634 	buffer_pointer = CH$PLUS( .iob[IOB$A_STRING],	! Point past the last input character.
U   5	    635 				.iob[IOB$H_STRING] );
U   5	    636 
U   5	    637 	WHILE .iob[IOB$H_STRING] GTR 0 DO		! Loop to remove control characters from
U   5	    638 	    BEGIN					! the end of the input record.
U   5	    639 
U   5	    640 	    buffer_pointer =				! Decrement the buffer pointer.
U   5	    641 		CH$PLUS( .buffer_pointer, -1 );
U   5	    642 
U   5	    643 	    value = CH$RCHAR( .buffer_pointer );	! Pickup the last character in the record.
U   5	    644 
U   5	    645 	    IF .value EQL lf OR .value EQL ctrl_z	! If the character is a line feed or ^Z,
U   5	    646 	    THEN					!
U   5	    647 		iob[IOB$H_STRING] =			! decrement the record length.
U   5	    648 			.iob[IOB$H_STRING] - 1
U   5	    649 	    ELSE
U   5	    650 		EXITLOOP;				! Otherwise, exit this cleanup loop.
U   5	    651 	    END;
U   5	    652 
U   5	    653 	$XPO_QUIT();					! Return the current success code to the caller.
U   5	    654 	END;
U   5	    655 %FI

XGET                            TOPS-10/TOPS-20 Record-mode GET  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 14
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	    657 %TITLE 'TOPS-10/TOPS-20 Record-mode GET'
    5	    658 %IF $TOPS10 OR $TOPS20 %THEN
U   5	    659 
U   5	    660 !+
U   5	    661 !
U   5	    662 !	TOPS-10 Record-mode GET Processing for File and Terminal.
U   5	    663 !	TOPS-20 Record-mode GET Processing for File only.
U   5	    664 !
U   5	    665 !-
U   5	    666 
U   5	    667 %IF $TOPS10 %THEN
U   5	    668     IF .iob[IOB$V_RECORD]				! If this a record-mode character file,
U   5	    669 %FI
U   5	    670 
U   5	    671 %IF $TOPS20 %THEN
U   5	    672     IF .iob[IOB$V_RECORD] AND NOT .iob[IOB$V_TERMINAL]	! If this is record-mode and not the terminal,
U   5	    673 %FI
U   5	    674 
U   5	    675     THEN						! execute the following block.
U   5	    676 	BEGIN
U   5	    677 
U   5	    678 !
U   5	    679 ! Indicate that no data has been read into the XPORT input buffer.
U   5	    680 !
U   5	    681 
U   5	    682 	iob[IOB$H_STRING] = 0;				! Indicate that no data has been read.
U   5	    683 
U   5	    684 !
U   5	    685 ! Process any page or sequence number information in the record.
U   5	    686 !
U   5	    687 
U   5	    688 	IF .iob[IOB$V_SEQUENCED]			! If this is a sequenced file,
U   5	    689 	THEN						!
U   5	    690 	    SELECTONE X36$SEQ_INFO( .iob ) OF		! update the page number and/or sequence number in the IOB
U   5	    691 		SET					! and process any error completion code.
U   5	    692 
U   5	    693 		[ XPO$_END_FILE ] :			! End-of-file:
U   5	    694 		    LEAVE READ_BLOCK;			!    Jump to EOF processing.
U   5	    695 
U   5	    696 		[ XPO$_NORMAL ] :			! Successful return:
U   5	    697 		    XPO$_NORMAL;			!    Just fall out of 'SELECTONE'
U   5	    698 
U   5	    699 		[ OTHERWISE ] :				! All other error conditions:
U   5	    700 		    $XPO_QUIT();			!    Return error codes to the caller.
U   5	    701 
U   5	    702 		TES
U   5	    703 	ELSE						! If this is not a sequenced file,
U   5	    704 	    iob[IOB$G_SEQ_NUMB] =			! simply increment the input record count.
U   5	    705 		.iob[IOB$G_SEQ_NUMB] + 1;
U   5	    706 
U   5	    707 
U   5	    708 !
U   5	    709 ! Move a single record into the local input buffer.
U   5	    710 !
U   5	    711 
U   5	    712 	buffer_pointer = .iob[IOB$A_STRING];		! Setup the local input buffer pointer.
U   5	    713 

XGET                            TOPS-10/TOPS-20 Record-mode GET  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 15
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	    714 	WHILE 1 DO					! Fill the input buffer a character at a time.
U   5	    715 	    BEGIN
U   5	    716 
U   5	    717 %IF $TOPS10 %THEN
U   5	    718 	    IF .iob[IOB$V_TERMINAL]			! If this is a terminal file,
U   5	    719 	    THEN					! read one character from the user's terminal
U   5	    720 	        BEGIN
U   5	    721 		$T10_INCHWL( value );			! in record mode (wait for end-of-line).
U   5	    722     	        IF .value EQL ctrl_z			! If the character is a ^Z,
U   5	    723 	        THEN					!
U   5	    724 		    BEGIN				!
U   5	    725 		    $T10_OUTSTR(			! echo a CR/LF
U   5	    726 		    UPLIT( %STRING(%CHAR(cr,lf,0)) ) );	!
U   5	    727 							!
U   5	    728 		    IF .iob[IOB$H_STRING] EQL 0		!
U   5	    729 		    THEN				! and jump to EOF processing if it is the
U   5	    730 		        LEAVE READ_BLOCK		! first character on the line
U   5	    731 		    ELSE				!
U   5	    732 		        BEGIN				!
U   5	    733 		        iob[IOB$V_EOF] = yes;		! or turn on the EOF indicator
U   5	    734 		        EXITLOOP;			! and then exit the terminal read loop.
U   5	    735 		        END;
U   5	    736 		    END;
U   5	    737 		END;
U   5	    738 %FI
U   5	    739 
U   5	    740 	    IF NOT .iob[IOB$V_TERMINAL]			! Here if working with files.
U   5	    741 	    THEN
U   5	    742 		BEGIN
U   5	    743 		SELECTONE X36$GET_FILE(.iob,value) OF	! Read one character from the data file
U   5	    744 		    SET					! and process any error completion code.
U   5	    745 		    [ XPO$_END_FILE ] :			! End-of-file:
U   5	    746 			IF .iob[IOB$H_STRING] EQL 0	!    If no data has been read,
U   5	    747 			THEN				!
U   5	    748 			    LEAVE READ_BLOCK		!    jump to EOF processing.
U   5	    749 			ELSE				!
U   5	    750 			    BEGIN			!    Otherwise,
U   5	    751 			    iob[IOB$V_EOF] = yes;	!    turn on the EOF indicator
U   5	    752 			    EXITLOOP;			!    and exit the character read loop.
U   5	    753 			    END;
U   5	    754 
U   5	    755 		    [ XPO$_NORMAL ] :			! Successful return:
U   5	    756 			XPO$_NORMAL;			!    Just fall out of 'SELECTONE'
U   5	    757 
U   5	    758 		    [ OTHERWISE ] :			! All other error conditions:
U   5	    759 			$XPO_QUIT();			!    Return error codes to the caller.
U   5	    760 
U   5	    761 		    TES;
U   5	    762 		END;
U   5	    763 
U   5	    764 	    IF .value EQL lf OR				! If the character is a line feed
U   5	    765 		(.value EQL null AND			! or a page mark has been reached,
U   5	    766 		    .iob[IOB$G_COMP_CODE] EQL		!
U   5	    767 				XPO$_NEW_PAGE)		!
U   5	    768 	    THEN					!
U   5	    769 		EXITLOOP;				! exit the read loop.
U   5	    770 

XGET                            TOPS-10/TOPS-20 Record-mode GET  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 16
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	    771 
U   5	    772 	    IF .iob[IOB$H_STRING] GTR 0 OR		! If a non-null character has been found
U   5	    773 		.value NEQ null				!
U   5	    774 	    THEN					!
U   5	    775 		BEGIN					! put it into the XPORT input buffer.
U   5	    776 
U   5	    777 		IF .iob[IOB$H_STRING] GEQ		! If the XPORT input buffer is full,
U   5	    778 				.iob[max_string_len]	!
U   5	    779 		THEN					!
U   5	    780 		    BEGIN				!
U   5	    781 		    $XPO_IF_NOT( $XPO_GET_MEM(		! allocate a larger input buffer.
U   5	    782 				CHARACTERS = (.iob[max_string_len] + buffer_length),
U   5	    783 				RESULT = new_buffer,
U   5	    784 				FAILURE = 0 ) )
U   5	    785 		    THEN
U   5	    786 			$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	    787 
U   5	    788 		    buffer_pointer =			! Copy the current input data into the new buffer.
U   5	    789 			CH$MOVE( .iob[IOB$H_STRING],
U   5	    790 				.iob[IOB$A_STRING],
U   5	    791 				.new_buffer );
U   5	    792 
U   5	    793 		    $XPO_FREE_QUIT(			! Free the original input buffer
U   5	    794 			STRING = (.iob[IOB$H_STRING],	! but don't zero the descriptor length fields.
U   5	    795 				.iob[IOB$A_STRING]) );
U   5	    796 
U   5	    797 							! Update the XPORT input buffer descriptor:
U   5	    798 		    iob[IOB$A_STRING] = .new_buffer;	!    pointer to input buffer
U   5	    799 		    iob[max_string_len] =		!    length of the input buffer
U   5	    800 			.iob[max_string_len] + buffer_length;
U   5	    801 		    END;
U   5	    802 
U   5	    803 		CH$WCHAR_A( .value, buffer_pointer );	! Put the new character into the XPORT input buffer
U   5	    804 		iob[IOB$H_STRING] =			! and increment the input record length.
U   5	    805 		    .iob[IOB$H_STRING] + 1;
U   5	    806 		END;
U   5	    807 	    END;
U   5	    808 
U   5	    809 !
U   5	    810 ! Remove any control characters from the end of the record.
U   5	    811 !
U   5	    812 
U   5	    813 	buffer_pointer = CH$PLUS( .iob[IOB$A_STRING],	! Point past the last input character.
U   5	    814 				.iob[IOB$H_STRING] );
U   5	    815 
U   5	    816 	WHILE .iob[IOB$H_STRING] GTR 0 DO		! Loop to remove control characters from
U   5	    817 	    BEGIN					! the end of the input record.
U   5	    818 
U   5	    819 	    buffer_pointer =				! Decrement the buffer pointer.
U   5	    820 		CH$PLUS( .buffer_pointer, -1 );
U   5	    821 
U   5	    822 	    value = CH$RCHAR( .buffer_pointer );	! Pickup the last character in the record.
U   5	    823 
U   5	    824 	    IF .value EQL cr				! If the character is a carriage return,
U   5	    825 	    THEN					!
U   5	    826 		iob[IOB$H_STRING] =			! decrement the record length.
U   5	    827 			.iob[IOB$H_STRING] - 1

XGET                            TOPS-10/TOPS-20 Record-mode GET  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 17
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	    828 	    ELSE
U   5	    829 		EXITLOOP;				! Otherwise, exit this cleanup loop.
U   5	    830 	    END;
U   5	    831 
U   5	    832 	$XPO_QUIT();					! Return the current success code to the caller.
U   5	    833 	END;
U   5	    834 %FI

XGET                            TOPS-10/TOPS-20 Stream-mode and  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 18
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	    836 %TITLE 'TOPS-10/TOPS-20 Stream-mode and Binary-mode GET'
    5	    837 %IF $TOPS10 OR $TOPS20 %THEN
U   5	    838 
U   5	    839 !+
U   5	    840 !
U   5	    841 !	TOPS-10/TOPS-20 Stream-mode and Binary-mode GET Processing
U   5	    842 !
U   5	    843 !	Note that the following section depends on IOB$T_STRING and IOB$T_DATA
U   5	    844 !	being the same actual IOB fields.
U   5	    845 !
U   5	    846 !-
U   5	    847 
U   5	    848 !+
U   5	    849 !   Random access i/o has been implemented and tested for VMS.  Though some code is in place to
U   5	    850 !   support random access i/o for TOPS-20 as well, it is NOT COMPLETE and is known to not be
U   5	    851 !   reliable.  Therefor, a conditional check for use of the random attribute is in XPORT.REQ and
U   5	    852 !   XOPEN.BLI.  When the TOPS20 code is completed and tested, this conditional can be changed to 
U   5	    853 !   	" %IF NOT $VMS OR NOT $TOPS20 %THEN "  for XOPEN.BLI
U   5	    854 !   	" %IF NOT %BLISS(BLISS32) OR NOT %BLISS(BLISS36) %THEN "  for XPORT.REQ
U   5	    855 !   
U   5	    856 !   See also:
U   5	    857 !   		XPORT.REQ  -  $XPO_OPEN definition, random disallowed.
U   5	    858 !   		XOPEN.BLI  -  $IOB initialization, random disallowed.
U   5	    859 !   		XGET.BLI  -  comments in 'TOPS-10/TOPS-20 Stream-mode and Binary-mode GET'
U   5	    860 !   		XPUT.BLI  -  comments in 'TOPS-10/TOPS-20/RT-11 File PUT'
U   5	    861 !-
U   5	    862 
U   5	    863 !
U   5	    864 ! Indicate that no data has been read into the XPORT input buffer.
U   5	    865 !
U   5	    866 
U   5	    867     iob[IOB$H_STRING] = 0;				! Indicate that no data has been read.
U   5	    868 
U   5	    869 !
U   5	    870 ! Allocate a new input buffer if the current buffer is too small.
U   5	    871 !
U   5	    872 
U   5	    873     IF .req_length GTR .iob[max_string_len]		! If the current input buffer is too small,
U   5	    874     THEN						!
U   5	    875 	BEGIN						!
U   5	    876 	$XPO_FREE_QUIT( STRING = iob[IOB$T_STRING] );	! free the buffer.
U   5	    877 
U   5	    878 	IF .iob[IOB$V_RECORD] OR .iob[IOB$V_STREAM]	! If this is a character file,
U   5	    879 	THEN						!
U   5	    880 	    BEGIN					!
U   5	    881 	    $XPO_IF_NOT( $XPO_GET_MEM(			! allocate a new character input buffer.
U   5	    882 			    CHARACTERS = .req_length,
U   5	    883 			    RESULT = new_buffer,
U   5	    884 			    FAILURE = 0 ) )
U   5	    885 	    THEN
U   5	    886 		$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	    887 	    END
U   5	    888 	ELSE
U   5	    889 	    $XPO_IF_NOT( $XPO_GET_MEM(			! Otherwise, allocate a new binary input buffer.
U   5	    890 			    UNITS = .req_length,
U   5	    891 			    RESULT = new_buffer,
U   5	    892 			    FAILURE = 0 ) )

XGET                            TOPS-10/TOPS-20 Stream-mode and  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 19
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	    893 	    THEN
U   5	    894 		$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	    895 
U   5	    896 							! Update the input data descriptor:
U   5	    897 	iob[IOB$A_STRING] = .new_buffer;		!    new input buffer pointer/address
U   5	    898 	iob[max_string_len] = .req_length;		!    length of the new input buffer
U   5	    899 	END;
U   5	    900 
U   5	    901 !
U   5	    902 ! Setup a local pointer to the input buffer.
U   5	    903 !
U   5	    904 
U   5	    905     IF .iob[IOB$V_RECORD] OR .iob[IOB$V_STREAM]		! If this is a character operation,
U   5	    906     THEN						!
U   5	    907 	buffer_pointer = .iob[IOB$A_STRING]		! pickup the character buffer pointer.
U   5	    908     ELSE
U   5	    909 	buffer_pointer =				! Otherwise, create a "unit pointer".
U   5	    910 	    CH$PTR( .iob[IOB$A_DATA], 0, %BPVAL );
U   5	    911 
U   5	    912 !
U   5	    913 ! If this is a random file, then set the file position.
U   5	    914 !
U   5	    915 
U   5	    916 %IF $TOPS20 %THEN
U   5	    917 
U   5	    918     IF .iob[IOB$V_RANDOM]
U   5	    919     THEN
U   5	    920         BEGIN
U   5	    921         LOCAL
U   5	    922             file_pos ;
U   5	    923 
U   5	    924         file_pos = .iob[IOB$G_NEXT_POS] ;   ! Go to the indicated record
U   5	    925 
U   5	    926         $T20_SFPTR ( .iob[IOB$H_CHANNEL], .file_pos ) ;
U   5	    927 
U   5	    928 !
U   5	    929 ! Check to see what the last operation was.  If it was a PUT, then the buffer
U   5	    930 ! count is wrong.  Reset the buffer_cb[$BFCTR] to 0, so that when X36$GET_FILE
U   5	    931 ! is called, it will refresh the buffer.
U   5	    932 !
U   5	    933 
U   5	    934 	IF .iob[$IOB$FILLER2] EQL 2
U   5	    935 	THEN
U   5	    936 	    buffer_cb[$BFCTR] = 0 ;
U   5	    937 
U   5	    938 	iob[$IOB$FILLER2] = 1	;       ! Indicate that the last operation was GET
U   5	    939 
U   5	    940         END ;                           ! of IF .iob[IOB$V_RANDOM]
U   5	    941 
U   5	    942 %FI
U   5	    943 
U   5	    944 !
U   5	    945 ! Fill the input buffer one character/value at a time.
U   5	    946 !
U   5	    947 
U   5	    948     INCR count FROM 1 TO .req_length DO			! Fill the buffer one character/value at a time.
U   5	    949 	BEGIN

XGET                            TOPS-10/TOPS-20 Stream-mode and  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 20
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	    950 	IF .iob[IOB$V_TERMINAL]				! If this is a terminal file,
U   5	    951 	THEN						!
U   5	    952 	    BEGIN					!
U   5	    953 
U   5	    954 %IF $TOPS10 %THEN
U   5	    955 	    $T10_INCHRW( value );			! read one character from the terminal
U   5	    956 %FI
U   5	    957 
U   5	    958 %IF $TOPS20 %THEN
U   5	    959 	    IF NOT $T20_PBIN( value )			! read one character from the terminal
U   5	    960 
U   5	    961 	    THEN					
U   5	    962 		BEGIN					
U   5	    963 		get_error;				
U   5	    964 		$XPO_QUIT();
U   5	    965 		END;
U   5	    966 %FI
U   5	    967 							!
U   5	    968 	    IF .value EQL ctrl_z			! If a ^Z is read from the terminal,
U   5	    969 	    THEN					!
U   5	    970 		BEGIN					!
U   5	    971 
U   5	    972 %IF $TOPS10 %THEN
U   5	    973 		$T10_OUTSTR(				! echo a CR/LF
U   5	    974 		    UPLIT( %STRING(%CHAR(cr,lf,0)) ) );	!
U   5	    975 %FI
U   5	    976 
U   5	    977 %IF $TOPS20 %THEN
U   5	    978 		IF NOT $T20_PSOUT( CH$PTR(		! echo a CR/LF
U   5	    979 		    UPLIT( %STRING(%CHAR(cr,lf,0)) )))
U   5	    980 	        THEN					
U   5	    981 		    BEGIN
U   5	    982 		    get_error;				
U   5	    983 		    $XPO_QUIT();
U   5	    984 		    END;
U   5	    985 %FI
U   5	    986 							!
U   5	    987 		IF .iob[IOB$H_STRING] EQL 0		!
U   5	    988 		THEN					! and jump to EOF processing if it is the
U   5	    989 		    LEAVE READ_BLOCK			! first character read
U   5	    990 		ELSE					!
U   5	    991 		    BEGIN				!
U   5	    992 		    iob[IOB$V_EOF] = yes;		! or turn on the EOF indicator
U   5	    993 		    EXITLOOP;				! and then exit the terminal read loop.
U   5	    994 		    END;
U   5	    995 		END;
U   5	    996 	    END
U   5	    997 	ELSE
U   5	    998 	    SELECTONE X36$GET_FILE( .iob, value ) OF	! Otherwise, read one character/value from the data file
U   5	    999 		SET					! and process any error completion code.
U   5	   1000 
U   5	   1001 		[ XPO$_END_FILE ] :			! End-of-file:
U   5	   1002 		    IF .iob[IOB$H_STRING] EQL 0		!    If no data has been read,
U   5	   1003 		    THEN				!
U   5	   1004 			LEAVE READ_BLOCK		!    jump to EOF processing.
U   5	   1005 		    ELSE				!
U   5	   1006 			BEGIN				!    Otherwise,

XGET                            TOPS-10/TOPS-20 Stream-mode and  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 21
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   1007 			iob[IOB$V_EOF] = yes;		!    turn on the EOF indicator
U   5	   1008 			EXITLOOP;			!    and exit the character read loop.
U   5	   1009 			END;
U   5	   1010 
U   5	   1011 		[ XPO$_NORMAL ] :			! Successful return:
U   5	   1012 		    XPO$_NORMAL;			!    Just fall out of 'SELECTONE'
U   5	   1013 
U   5	   1014 		[ OTHERWISE ] :				! All other error conditions:
U   5	   1015 		    $XPO_QUIT();			!    Return error codes to the caller.
U   5	   1016 
U   5	   1017 		TES;
U   5	   1018 
U   5	   1019 	CH$WCHAR_A( .value, buffer_pointer );		! Move one character/value into the buffer
U   5	   1020 	iob[IOB$H_STRING] = .iob[IOB$H_STRING] + 1;	! and increment the data length.
U   5	   1021 	END;
U   5	   1022 
U   5	   1023 !
U   5	   1024 ! Calculate the number of fullwords of binary data which have been read.
U   5	   1025 !
U   5	   1026 
U   5	   1027     IF .iob[IOB$V_BINARY] OR .iob[IOB$V_RANDOM]		! If this is a binary or random read,
U   5	   1028     THEN						!
U   5	   1029 	iob[IOB$H_FULLWORDS] =				! calculate the number of complete BLISS fullwords read.
U   5	   1030 			.iob[IOB$H_UNITS] / %UPVAL;
U   5	   1031 
U   5	   1032 !
U   5	   1033 ! If this was a random request, save the file position in G_NEXT_POS
U   5	   1034 !
U   5	   1035 
U   5	   1036 %IF $TOPS20 %THEN
U   5	   1037 
U   5	   1038     IF .iob[IOB$V_RANDOM]
U   5	   1039     THEN			! Add the starting position to the number of words read
U   5	   1040 	BEGIN
U   5	   1041     	iob[IOB$G_CURR_POS] = .iob[IOB$G_NEXT_POS];
U   5	   1042     	iob[IOB$G_NEXT_POS] = .iob[IOB$G_NEXT_POS] + .iob[IOB$H_UNITS];		! and get next available word
U   5	   1043 	END;
U   5	   1044 
U   5	   1045 %FI
U   5	   1046 
U   5	   1047 !
U   5	   1048 ! Check for a truncated input request.
U   5	   1049 !
U   5	   1050 
U   5	   1051     IF .iob[IOB$H_STRING] LSS .req_length		! If not enough data was read,
U   5	   1052     THEN						!
U   5	   1053 	$XPO_QUIT( INCOMPLETE )				! return a non-standard success code to the caller.
U   5	   1054     ELSE
U   5	   1055 	$XPO_QUIT();					! Otherwise, return the current success code to the caller.
U   5	   1056 
U   5	   1057     END;						! End of TOPS-10/TOPS-20 input processing.
U   5	   1058 
U   5	   1059 !+
U   5	   1060 !
U   5	   1061 !	End of TOPS-10/TOPS-20 GET Processing
U   5	   1062 !
U   5	   1063 !-

XGET                            TOPS-10/TOPS-20 Stream-mode and  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 22
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   1064 
U   5	   1065 %FI

XGET                            VAX/VMS Terminal GET             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 23
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   1067 %TITLE 'VAX/VMS Terminal GET'
    5	   1068 %IF $VMS %THEN
    5	   1069 
    5	   1070 !+
    5	   1071 !
    5	   1072 !	VAX/VMS Terminal GET
    5	   1073 !
    5	   1074 !	NOTE:  The following code is very similar to the corresponding code for RSX-11M.
    5	   1075 !
    5	   1076 !-
    5	   1077 
    5	   1078     IF .iob[IOB$V_TERMINAL]
    5	   1079     THEN
    5	   1080 	BEGIN
    6	   1081 	LOCAL
    6	   1082 	    function_code,				! I/O function code
    6	   1083 	    req_length,					! Number of characters requested
    6	   1084 	    terminator_mask :  VECTOR[2],		! Input terminator info
    6	   1085 	    status :  $VIOSB,				! QIO status block
    6	   1086 	    event_flag;					! Event flag number for QIOW
    6	   1087 
    6	   1088 	OWN
    6	   1089 	    stream_terminator :  VECTOR[2]		! ^Z (sub) is the only STREAM input terminator.
    6	   1090 				INITIAL( 0, 1^sub );
    6	   1091 
    6	   1092 	MACRO
    6	   1093 	    max_string_len =
M   6	   1094 		$SUB_FIELD( IOB$T_STRING, STR$H_MAXLEN ) %;
    6	   1095 
    6	   1096 	LOCAL							! *** VMS BUG BYPASS ***
    6	   1097 	    bug_fix_buffer :  VECTOR[ max_prompt_len+1, BYTE ],	! "leading line-feed on prompt is ignored"
    6	   1098 	    bug_fix_prompt :  $STR_DESCRIPTOR( CLASS=BOUNDED );
    6	   1099 
    6	   1100 	$STR_DESC_INIT( DESCRIPTOR = bug_fix_prompt,
P   6	   1101 			    CLASS = BOUNDED,
P   6	   1102 			    STRING = ( max_prompt_len+1, bug_fix_buffer ) );
    6	   1103 
    6	   1104 	IF .prompt[STR$H_LENGTH] GTR 0
    6	   1105 	THEN
    6	   1106 	    BEGIN
    7	   1107 	    $STR_COPY( STRING = %CHAR(lf), TARGET = bug_fix_prompt, FAILURE = 0 );
    7	   1108 	    $XPO_IF_NOT( $STR_APPEND( STRING = prompt,
P   7	   1109 					TARGET = bug_fix_prompt,
P   7	   1110 					FAILURE = 0 ) )
    9	   1111 	    THEN
    8	   1112 		$XPO_QUIT( BAD_PROMPT, (.$XPO_STATUS) );
    7	   1113 	    END;						! *** End of VMS BUG BYPASS ***
    6	   1114 
    6	   1115 !
    6	   1116 ! Setup for RECORD-mode terminal input.
    6	   1117 !
    6	   1118 
    6	   1119 	IF .iob[IOB$V_RECORD]
    6	   1120 	THEN
    6	   1121 	    BEGIN
    7	   1122 	    function_code = IO$_READPROMPT;		! I/O function code
    7	   1123 	    req_length = term_buffer_len;		! maximum input record length

XGET                            VAX/VMS Terminal GET             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 24
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    7	   1124 	    terminator_mask = 0;			! standard RMS input terminators indicator
    7	   1125 	    END
    7	   1126 
    7	   1127 !
    7	   1128 ! Setup for STREAM-mode terminal input.
    7	   1129 !
    7	   1130 
    7	   1131 	ELSE
    6	   1132 	    BEGIN
    7	   1133 	    function_code = IO$_TTYREADPALL;		! I/O function code
    7	   1134 	    req_length = .iob[IOB$H_STRING];		! number of characters requested
    7	   1135 	    terminator_mask = stream_terminator;	! address of input terminator mask
    7	   1136 	    
    7	   1137 	    iob[IOB$H_STRING] = 0;			! Indicate that the input buffer is empty.
    7	   1138 	    END;
    6	   1139 
    6	   1140 !
    6	   1141 ! Allocate a terminal input buffer, if necessary.
    6	   1142 !
    6	   1143 
    6	   1144 	IF .iob[max_string_len] LSS .req_length		! See if the input buffer is large enough.
    6	   1145 	THEN
    6	   1146 	    BEGIN
    7	   1147 	    $XPO_IF_NOT( $XPO_FREE_MEM(			! Free the current input buffer.
P   7	   1148 			    STRING = iob[IOB$T_STRING],
P   7	   1149 			    FAILURE = 0 ) )
    9	   1150 	    THEN
    8	   1151 		$XPO_QUIT( FREE_MEM, (.$XPO_STATUS) );
    7	   1152 
    7	   1153 	    $XPO_IF_NOT( $XPO_GET_MEM(			! Allocate a new input buffer.
P   7	   1154 			CHARACTERS = .req_length,
P   7	   1155 			RESULT = iob[IOB$A_STRING],
P   7	   1156 			FAILURE = 0 ) )
    9	   1157 	    THEN
    8	   1158 		$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
    7	   1159 
    7	   1160 	    iob[max_string_len] = .req_length;		! Then setup the terminal buffer length.
    7	   1161 	    END;
    6	   1162 
    6	   1163 !
    6	   1164 ! Read ASCII characters from the terminal.
    6	   1165 !
    6	   1166 
    6	   1167 	$XPO_IF_NOT ( LIB$GET_EF ( event_flag ) )	! Allocate an event flag
    8	   1168 	THEN						! If the allocation failed,
    7	   1169 	    $XPO_QUIT( SYS_ERROR, (.$XPO_STATUS) );	! return these codes to the caller.
    6	   1170 
    6	   1171 	$QIOW( FUNC = .function_code,			! Read a stream of characters from the terminal:
P   6	   1172 		EFN = .event_flag,			!    Event flag number
P   6	   1173 		CHAN = .iob[IOB$H_CHANNEL],		!    I/O channel number
P   6	   1174 		IOSB = status,				!    address of QIO status block
P   6	   1175 		P1 = .iob[IOB$A_STRING],		!    address of the terminal input buffer
P   6	   1176 		P2 = .req_length,			!    length of the terminal input buffer
P   6	   1177 		P4 = .terminator_mask,			!    address of terminator mask
P   6	   1178 !		P5 = .prompt[STR$A_POINTER],		!    address of the prompt string (if any)
P   6	   1179 !		P6 = .prompt[STR$H_LENGTH] );		!    length of the prompt string
P   6	   1180 		P5 = .bug_fix_prompt[STR$A_POINTER],	!    address of the prompt string (if any)  *** BUG BYPASS *

XGET                            VAX/VMS Terminal GET             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 25
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

P   6	   1180 **
P   6	   1181 		P6 = .bug_fix_prompt[STR$H_LENGTH] );	!    length of the prompt string	    *** BUG BYPASS *
P   6	   1181 **
    6	   1182 
    6	   1183 	$XPO_IF_NOT ( LIB$FREE_EF ( event_flag ) )	! Free the allocated event flag
    8	   1184 	THEN						! If the free failed,
    7	   1185 	    $XPO_QUIT( SYS_ERROR, (.$XPO_STATUS) );	! return these codes to the caller.
    6	   1186 
    6	   1187 	IF NOT .status[VIOSB$H_STATUS]			! If the QIO operation failed,
    6	   1188 	THEN						!
    6	   1189 	    BEGIN					!
    7	   1190 	    XPO$RMS_ERROR( .iob,			! convert the QIO error code into XPORT completion codes
    7	   1191 			.status[VIOSB$H_STATUS], 0 );	!
    7	   1192 	    $XPO_QUIT();				! and return these codes to the caller.
    7	   1193 	    END;
    6	   1194 
    6	   1195 	IF .status[VIOSB$B_TERM1] EQL sub		! If end-of-file was reached,
    6	   1196 	THEN						!
    6	   1197 	    IF .status[VIOSB$H_IO_COUNT] EQL 0		!
    6	   1198 	    THEN					!
    6	   1199 		LEAVE READ_BLOCK			! either jump to end-of-file processing
    6	   1200 	    ELSE					!
    6	   1201 		iob[IOB$V_EOF] = yes;			! or indicate a pending end-of-file.
    6	   1202 
    6	   1203 !
    6	   1204 ! Remove the parity bit from all characters read.
    6	   1205 !
    6	   1206 
    6	   1207 	BEGIN
    7	   1208 	LOCAL buffer_pointer;
    7	   1209 
    7	   1210 	iob[IOB$H_STRING] = .status[VIOSB$H_IO_COUNT];	! Indicate how many characters were read
    7	   1211 
    7	   1212 	buffer_pointer = .iob[IOB$A_STRING];		! Point to the terminal input buffer.
    7	   1213 
    7	   1214 	INCR index FROM 1 TO .iob[IOB$H_STRING] DO	! Convert one character at a time.
    7	   1215 	    CH$WCHAR_A( CH$RCHAR( .buffer_pointer ) AND %X'7F', buffer_pointer );
    7	   1216 	END;
    6	   1217 
    6	   1218 !
    6	   1219 ! Check for a truncated STREAM input request.
    6	   1220 !
    6	   1221 
    6	   1222 	IF .iob[IOB$V_STREAM] AND .iob[IOB$H_STRING] LSS .req_length
    6	   1223 	THEN
    6	   1224 	    $XPO_QUIT( INCOMPLETE )
    7	   1225 
    7	   1226 !
    7	   1227 ! Return the current success code to the caller.
    7	   1228 !
    7	   1229 
    7	   1230 	ELSE
    6	   1231 	    $XPO_QUIT();
    6	   1232 
    6	   1233 	END;
    5	   1234 %FI

XGET                            VAX/VMS Record-mode GET          4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 26
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   1236 %TITLE 'VAX/VMS Record-mode GET'
    5	   1237 %IF $VMS %THEN
    5	   1238 
    5	   1239 !+
    5	   1240 !
    5	   1241 !	VAX/VMS Record-mode GET Processing
    5	   1242 !
    5	   1243 !-
    5	   1244 
    5	   1245     BEGIN
    6	   1246 
    6	   1247     BIND
    6	   1248 	fab = .iob[IOB$A_RMS_FAB] :  $FAB_DECL,		! Define the IOB's FAB
    6	   1249 	rab = .iob[IOB$A_RMS_RAB] :  $RAB_DECL;		! and RAB.
    6	   1250 
    6	   1251     IF .iob[IOB$V_RECORD]				! If this is a record-mode file,
    6	   1252     THEN						! execute the following block.
    6	   1253 	BEGIN
    7	   1254 
    7	   1255 	LOCAL
    7	   1256 	    fixed_control :  WORD VOLATILE;		! VFC record header buffer
    7	   1257 
    7	   1258 !
    7	   1259 ! Setup the RAB for a GET record operation.
    7	   1260 !
    7	   1261 
    7	   1262 	IF .iob[IOB$V_SEQUENCED]			! If this is a sequenced file,
    7	   1263 	THEN						!
    7	   1264 	    rab[RAB$L_RHB] = fixed_control;		! point to the record header buffer.
    7	   1265 
    7	   1266 !
    7	   1267 ! Read a single record.
    7	   1268 !
    7	   1269 
    7	   1270 	IF NOT $RMS_GET( RAB = rab )			! Read a single record.
    8	   1271 	THEN
    7	   1272 	    SELECTONE .rab[RAB$L_STS] OF		! Process a GET failure.
    7	   1273 		SET
    7	   1274 		[ RMS$_EOF ] :				! "end-of-file":
    7	   1275 		    LEAVE READ_BLOCK;			!    Jump to end-of-file processing.
    7	   1276 
    7	   1277 		[ RMS$_RTB ] :				! "record too large for user buffer":
    7	   1278 		    iob[IOB$G_COMP_CODE] =		!    Indicate that the current record has been truncated.
    7	   1279 				XPO$_TRUNCATED;
    7	   1280 
    7	   1281 		[ OTHERWISE ] :				! Any other RMS error:
    7	   1282 		    BEGIN				!
    8	   1283 		    XPO$RMS_ERROR( .iob,		!    Convert the RMS completion codes into
    8	   1284 				    .rab[RAB$L_STS],	!    equivalent XPORT completion codes
    8	   1285 				    .rab[RAB$L_STV] );	!
    8	   1286 		    $XPO_QUIT();			!    and then jump to return to the caller.
    8	   1287 		    END;
    7	   1288 		TES;
    7	   1289 
    7	   1290 !
    7	   1291 ! Check for a page mark in a sequenced file.
    7	   1292 !

XGET                            VAX/VMS Record-mode GET          4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 27
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    7	   1293 
    7	   1294 	IF .iob[IOB$V_SEQUENCED]			! If this is a sequenced file
    7	   1295 	THEN						!
    7	   1296 	    IF .fixed_control EQL %X'FFFF' AND		! and the sequence number is %X'FFFF'
    7	   1297 		    .rab[RAB$W_RSZ] EQL 1 AND		! and the record is a single form feed,
    7	   1298 		    .(.rab[RAB$L_RBF])<0,8> EQL FF	!
    7	   1299 	    THEN					!
    7	   1300 		BEGIN					!
    8	   1301 		iob[IOB$H_PAGE_NUMB] =			! increment the IOB page count,
    8	   1302 			.iob[IOB$H_PAGE_NUMB] + 1;	!
    8	   1303 		iob[IOB$G_SEQ_NUMB] = 0;		! zero the record sequence number,
    8	   1304 		iob[IOB$G_COMP_CODE] =			! and setup a special success completion code.
    8	   1305 				XPO$_NEW_PAGE;
    8	   1306 		END
    8	   1307 
    8	   1308 !
    8	   1309 ! Setup the sequence number or record number.
    8	   1310 !
    8	   1311 
    8	   1312 	    ELSE					! If a sequenced record was read,
    7	   1313 		iob[IOB$G_SEQ_NUMB] =			! return the record sequence number.
    7	   1314 				.fixed_control
    7	   1315 	ELSE						! Otherwise, if an unsequence record was read,
    7	   1316 	    iob[IOB$G_SEQ_NUMB] =			! increment the input record count.
    7	   1317 			.iob[IOB$G_SEQ_NUMB] + 1;
    7	   1318 
    7	   1319 !
    7	   1320 ! Return the actual input record.
    7	   1321 !
    7	   1322 
    7	   1323 	$XPO_IF_NOT( $STR_COPY( STRING = ( .rab[RAB$W_RSZ], .rab[RAB$L_RBF] ),
P   7	   1324 				TARGET = iob[IOB$T_STRING],
P   7	   1325 				FAILURE = 0 ) )
    9	   1326 	THEN
    8	   1327 	    $XPO_QUIT( IO_BUFFER, (.$XPO_STATUS) );
    7	   1328 
    7	   1329 !
    7	   1330 ! Return to the caller after successfully reading a single record.
    7	   1331 !
    7	   1332 
    7	   1333 	$XPO_QUIT();					! Jump to return a success code to the caller.
    7	   1334 	END;
    6	   1335 %FI

XGET                            VAX/VMS Stream-mode GET          4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 28
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    6	   1337 %TITLE 'VAX/VMS Stream-mode GET'
    6	   1338 %IF $VMS %THEN
    6	   1339 
    6	   1340 !+
    6	   1341 !
    6	   1342 !	VAX/VMS Stream-mode GET Processing
    6	   1343 !
    6	   1344 !	NOTES:
    6	   1345 !	    The following code is similar to the corresponding code for RSX-11M.
    6	   1346 !
    6	   1347 !-
    6	   1348 
    6	   1349     IF .iob[IOB$V_STREAM]				! If this is a stream-mode file get,
    6	   1350     THEN						! execute the following block.
    6	   1351 	BEGIN
    7	   1352 
    7	   1353 	MACRO
    7	   1354 	    buffer_data [] =				! Moves data into the XPORT internal I/O buffer
M   7	   1355 		$XPO_IF_NOT( $STR_APPEND( STRING = (%REMAINING),
M   7	   1356 			    TARGET = iob[IOB$T_STRING],
M   7	   1357 			    FAILURE = 0 ) )
M   7	   1358 		THEN
M   7	   1359 		    $XPO_QUIT( IO_BUFFER, (.$XPO_STATUS) ) %,
    7	   1360 
    7	   1361 	    amt_data_left = rab[RAB$L_CTX] %;		! Amount of unprocessed data in RMS input buffer
    7	   1362 
    7	   1363 	LOCAL
    7	   1364 	    req_length;					! Number of characters/units requested
    7	   1365 
    7	   1366 !
    7	   1367 ! Setup the IOB for buffered input.
    7	   1368 !
    7	   1369 
    7	   1370 	req_length = .iob[IOB$H_STRING];		! Pickup the number of characters/units requested
    7	   1371 	iob[IOB$H_STRING] = 0;				! and then indicate that the input buffer is empty.
    7	   1372 
    7	   1373 	WHILE .req_length GTR 0 DO			! Loop until enough characters/units have been read.
    7	   1374 	    BEGIN
    8	   1375 
    8	   1376 	    IF .amt_data_left EQL -2			! If CR/LF generation is pending,
    8	   1377 	    THEN					!
    8	   1378 		BEGIN					!
    9	   1379 		buffer_data( %CHAR(cr) );		! put a CR in the input buffer,
    9	   1380 		amt_data_left = -1;			! indicate a LF is still needed,
    9	   1381 		req_length = .req_length - 1;		! decrement the request count,
    9	   1382 		IF .req_length EQL 0			! and exit if the input buffer is now full.
    9	   1383 		THEN
    9	   1384 		    EXITLOOP;
    9	   1385 		END;
    8	   1386 
    8	   1387 	    IF .amt_data_left EQL -1			! If LF generation is pending,
    8	   1388 	    THEN					!
    8	   1389 		BEGIN					!
    9	   1390 		buffer_data( %CHAR(lf) );		! put a LF in the input buffer,
    9	   1391 		amt_data_left = 0;			! indicate all RMS data has been processed,
    9	   1392 		req_length = .req_length - 1;		! decrement the request count,
    9	   1393 		IF .req_length EQL 0			! and exit if the input buffer is now full.

XGET                            VAX/VMS Stream-mode GET          4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 29
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    9	   1394 		THEN
    9	   1395 		    EXITLOOP;
    9	   1396 		END;
    8	   1397 
    8	   1398 !
    8	   1399 ! Read a record or a block from the input file.
    8	   1400 !
    8	   1401 
    8	   1402 	    IF .amt_data_left EQL 0			! If all previous RMS data has been processed,
    8	   1403 	    THEN					!
    8	   1404 		BEGIN					!
    9	   1405 		IF .rab[RAB$V_BIO]			!
    9	   1406 		THEN					!
    9	   1407 		    $RMS_READ( RAB = rab )		! read a single block
   10	   1408 		ELSE					!
    9	   1409 		    $RMS_GET( RAB = rab );		! or a single record.
    9	   1410 
    9	   1411 		IF NOT .rab[RAB$L_STS]
    9	   1412 		THEN
    9	   1413 		    SELECTONE .rab[RAB$L_STS] OF	! Process an RMS GET failure.
    9	   1414 			SET
    9	   1415 			[ RMS$_EOF ] :			! End-of-file detected:
    9	   1416 			    IF .iob[IOB$H_STRING] EQL 0	!    If no data has been processed,
    9	   1417 			    THEN			!
    9	   1418 				LEAVE READ_BLOCK	!    jump to end-of-file processing.
    9	   1419 			    ELSE
    9	   1420 				BEGIN			!
   10	   1421 				iob[IOB$V_EOF] = yes;	!    Otherwise, simply remember the end-of-file
   10	   1422 				EXITLOOP;		!    and return an incomplete amount of data.
   10	   1423 			    END;
    9	   1424 
    9	   1425 			[ OTHERWISE ] :			! Any other RMS error:
    9	   1426 			    BEGIN			!
   10	   1427 			    XPO$RMS_ERROR( .iob,	!    Convert the RMS completion codes into
   10	   1428 				    .rab[RAB$L_STS],	!    equivalent XPORT completion codes
   10	   1429 				    .rab[RAB$L_STV] );	!
   10	   1430 			    $XPO_QUIT();		!    and then jump to return to the caller.
   10	   1431 			    END;
    9	   1432 		       TES;
    9	   1433 
    9	   1434 		amt_data_left = .rab[RAB$W_RSZ];	! Save the amount of data actually read.
    9	   1435 		END;
    8	   1436 
    8	   1437 !
    8	   1438 ! Move data into the XPORT internal input buffer.
    8	   1439 !
    8	   1440 
    8	   1441 	    IF .amt_data_left LEQ .req_length		! If not enough data has been read,
    8	   1442 	    THEN					!
    8	   1443 		BEGIN					!
    9	   1444 		buffer_data( .amt_data_left,		! move all unprocessed data into the XPORT input buffer,
P   9	   1445 		    .rab[RAB$L_RBF] + .rab[RAB$W_RSZ] -	!
P   9	   1446 			    .amt_data_left );		!
    9	   1447 							!
    9	   1448 		req_length = .req_length - .amt_data_left;	! calculate how much addition data is needed,
    9	   1449 							!
    9	   1450 		IF .fab[FAB$V_CR]			!

XGET                            VAX/VMS Stream-mode GET          4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 30
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    9	   1451 		THEN					!
    9	   1452 		    amt_data_left = -2			! and then indicate that a CR/LF is needed
    9	   1453 		ELSE					!
    9	   1454 		    amt_data_left = 0;			! or than there is no unprocessed input data.
    9	   1455 		END
    9	   1456 	    ELSE
    8	   1457 		BEGIN					! If more than enough data has been read,
    9	   1458 		buffer_data( .req_length,		! move enough data to satisfy this request,
P   9	   1459 		    .rab[RAB$L_RBF] + .rab[RAB$W_RSZ] -	!
P   9	   1460 			    .amt_data_left );		!
    9	   1461 		amt_data_left = .amt_data_left -	! calculate how much unprocessed data remains,
    9	   1462 					.req_length;	!
    9	   1463 		req_length = 0;				! and indicate no more data is needed for this request.
    9	   1464 		END;
    8	   1465 	    END;
    7	   1466 
    7	   1467 !
    7	   1468 ! Check for a truncated input request.
    7	   1469 !
    7	   1470 
    7	   1471 	IF .req_length NEQ 0				! If not enough data was read,
    7	   1472 	THEN						!
    7	   1473 	    $XPO_QUIT( INCOMPLETE )			! return a non-standard success code to the caller.
    8	   1474 	ELSE
    7	   1475 	    $XPO_QUIT();				! Otherwise, return the current success code to the caller.
    7	   1476 
    7	   1477 	END;						! End of stream input processing.
    6	   1478 %FI

XGET                            VAX/VMS Binary-mode GET          4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 31
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    6	   1480 %TITLE 'VAX/VMS Binary-mode GET'
    6	   1481 %IF $VMS %THEN
    6	   1482 
    6	   1483 !+
    6	   1484 !
    6	   1485 !	VAX/VMS Binary-mode GET Processing
    6	   1486 !
    6	   1487 !	NOTES:
    6	   1488 !	    The following code is similar to the corresponding code for RSX-11M.
    6	   1489 !
    6	   1490 !-
    6	   1491 
    6	   1492     IF .iob[IOB$V_BINARY] AND NOT .iob[IOB$V_RANDOM] THEN	! If this is a binary-mode file get,
    6	   1493     BEGIN							! execute the following block.
    7	   1494 
    7	   1495     MACRO
    7	   1496 	amt_data_left = rab[RAB$L_CTX] %;		! Amount of unprocessed data in RMS input buffer
    7	   1497 
    7	   1498     LOCAL
    7	   1499 	req_length;					! Number of characters/units requested
    7	   1500 
    7	   1501 !
    7	   1502 ! Setup the IOB for buffered input.
    7	   1503 !
    7	   1504 
    7	   1505     req_length = .iob[IOB$H_UNITS];			! Pickup the number of units requested
    7	   1506     iob[IOB$H_UNITS] = 0;				! and then indicate that the input buffer is empty.
    7	   1507 
    7	   1508     IF .req_length GTRU					! Reallocate the input buffer if it is too small.
    7	   1509 	.iob[$SUB_FIELD(IOB$T_DATA,XPO$H_MAXLEN)]
    7	   1510     THEN
    7	   1511 	BEGIN
    8	   1512 	$XPO_IF_NOT( $XPO_FREE_MEM( BINARY_DATA = iob[IOB$T_DATA], FAILURE = 0 ) )
   10	   1513 	THEN
    9	   1514 	    $XPO_QUIT( IO_BUFFER, (.$XPO_STATUS) );
    8	   1515 
    8	   1516 	$XPO_IF_NOT( $XPO_GET_MEM( UNITS = .req_length, DESCRIPTOR = iob[IOB$T_DATA], FAILURE = 0 ) )
   10	   1517 	THEN
    9	   1518 	    $XPO_QUIT( IO_BUFFER, (.$XPO_STATUS) );
    8	   1519 	END;
    7	   1520 
    7	   1521 !
    7	   1522 ! Read a block from the input file.
    7	   1523 !
    7	   1524 
    7	   1525     WHILE .req_length GTR 0 DO				! Loop until enough units have been read.
    7	   1526 	BEGIN
    8	   1527 	IF .amt_data_left EQL 0				! If all previous RMS data has been processed,
    8	   1528 	THEN						!
    8	   1529 	    BEGIN					!
    9	   1530 		$RMS_READ( RAB = rab );			! read a single block
    9	   1531 
    9	   1532 	    IF NOT .rab[RAB$L_STS]
    9	   1533 	    THEN
    9	   1534 		SELECTONE .rab[RAB$L_STS] OF		! Process an RMS GET failure.
    9	   1535 		    SET
    9	   1536 		    [ RMS$_EOF ] :			! End-of-file detected:

XGET                            VAX/VMS Binary-mode GET          4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 32
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    9	   1537 			IF .iob[IOB$H_UNITS] EQL 0	!    If no data has been processed,
    9	   1538 			THEN				!
    9	   1539 			    LEAVE READ_BLOCK		!    jump to end-of-file processing.
    9	   1540 			ELSE
    9	   1541 			    BEGIN			!
   10	   1542 			    iob[IOB$V_EOF] = yes;	!    Otherwise, simply remember the end-of-file
   10	   1543 			    EXITLOOP;			!    and return an incomplete amount of data.
   10	   1544 			END;
    9	   1545 
    9	   1546 		    [ OTHERWISE ] :			! Any other RMS error:
    9	   1547 			BEGIN				!
   10	   1548 			XPO$RMS_ERROR( .iob,		!    Convert the RMS completion codes into
   10	   1549 				.rab[RAB$L_STS],	!    equivalent XPORT completion codes
   10	   1550 				.rab[RAB$L_STV] );	!
   10	   1551 			$XPO_QUIT();			!    and then jump to return to the caller.
   10	   1552 			END;
    9	   1553 		   TES;
    9	   1554 
    9	   1555 	    amt_data_left = .rab[RAB$W_RSZ];		! Save the amount of data actually read.
    9	   1556 	    END;
    8	   1557 
    8	   1558 !
    8	   1559 ! Move data into the XPORT internal input buffer.
    8	   1560 !
    8	   1561 
    8	   1562 	IF .amt_data_left LEQ .req_length		! If not enough data has been read,
    8	   1563 	THEN						!
    8	   1564 	    BEGIN					!
    9	   1565 	    CH$MOVE( .amt_data_left,			! move all unprocessed data into the XPORT input buffer,
    9	   1566 		.rab[RAB$L_RBF] + .rab[RAB$W_RSZ] - .amt_data_left,
    9	   1567 		.iob[IOB$A_DATA] + .iob[IOB$H_UNITS] );	!
    9	   1568 							!
    9	   1569 	    iob[IOB$H_UNITS] = .iob[IOB$H_UNITS] +	! update the length of the input data,
    9	   1570 					.amt_data_left;	!
    9	   1571 	    req_length = .req_length - .amt_data_left;	! calculate how much addition data is needed,
    9	   1572 	    amt_data_left = 0;				! and indicate there is no unprocessed input data.
    9	   1573 	    END
    9	   1574 	ELSE
    8	   1575 	    BEGIN					! If more than enough data has been read,
    9	   1576 	    CH$MOVE( .req_length,			! move enough data to satisfy this request,
    9	   1577 		.rab[RAB$L_RBF] + .rab[RAB$W_RSZ] - .amt_data_left,
    9	   1578 		.iob[IOB$A_DATA] + .iob[IOB$H_UNITS] );	!
    9	   1579 							!
    9	   1580 	    iob[IOB$H_UNITS] = .iob[IOB$H_UNITS] +	! update the length of the input data,
    9	   1581 					.req_length;	!
    9	   1582 	    amt_data_left = .amt_data_left -		! calculate how much unprocessed data remains,
    9	   1583 					.req_length;	!
    9	   1584 	    req_length = 0;				! and indicate no more data is needed for this request.
    9	   1585 	    END;
    8	   1586 	END;
    7	   1587 
    7	   1588 !
    7	   1589 ! Calculate the number of fullwords of binary data which have been read.
    7	   1590 !
    7	   1591 
    7	   1592     iob[IOB$H_FULLWORDS] =				! calculate the number of complete BLISS fullwords read.
    7	   1593 	    .iob[IOB$H_UNITS] / %UPVAL;

XGET                            VAX/VMS Binary-mode GET          4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 33
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    7	   1594 
    7	   1595 !
    7	   1596 ! Check for a truncated input request.
    7	   1597 !
    7	   1598 
    7	   1599     IF .req_length NEQ 0				! If not enough data was read,
    7	   1600     THEN						!
    7	   1601 	$XPO_QUIT( INCOMPLETE )				! return a non-standard success code to the caller.
    8	   1602     ELSE
    7	   1603 	$XPO_QUIT();					! Otherwise, return the current success code to the caller.
    7	   1604 
    7	   1605     END;						! End of binary input processing.
    6	   1606 %FI

XGET                            VAX/VMS Random Binary-mode GET   4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 34
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    6	   1608 %TITLE 'VAX/VMS Random Binary-mode GET'
    6	   1609 %IF $VMS %THEN
    6	   1610 
    6	   1611 !+
    6	   1612 !	VAX/VMS Random Binary-mode GET Processing
    6	   1613 !
    6	   1614 ! Implicit inputs:
    6	   1615 !	IOB$G_NEXT_POS - the byte after the last read/write
    6	   1616 !	amt_buff_used (rab[RAB$L_CTX]) - indicates modified data in the XPORT internal output buffer
    6	   1617 !		set by XPO$PUT, cleared by XPO$GET and XPO$CLOSE
    6	   1618 !
    6	   1619 ! Implicit outputs:
    6	   1620 !	IOB$G_CURR_POS - the byte starting the current read
    6	   1621 !	amt_buff_used (rab[RAB$L_CTX]) - indicates modified data in the XPORT internal output buffer
    6	   1622 !		tested by XPO$PUT, XPO$GET and XPO$CLOSE
    6	   1623 !-
    6	   1624 
    6	   1625     IF .iob[IOB$V_RANDOM] THEN			! If this is a random-mode file get,
    6	   1626     BEGIN					! execute the following block.
    7	   1627 
    7	   1628     BIND
    7	   1629 	fab = .iob[IOB$A_RMS_FAB] :  $FAB_DECL,		! Define the IOB's FAB
    7	   1630 	rab = .iob[IOB$A_RMS_RAB] :  $RAB_DECL;		! and RAB.
    7	   1631 
    7	   1632     MACRO
    7	   1633 	amt_buff_used = rab[RAB$L_CTX] %,		! Indicates modified data in the XPORT internal output buffe
    7	   1633 r
    7	   1634 
    7	   1635    	requested_block = ( ( .next_pos  / .rab[RAB$W_USZ] ) + 1 ) %,		! VBN is 1 origin
    7	   1636 	requested_unit = ( .next_pos  MOD .rab[RAB$W_USZ] ) %;			! byte in block
    7	   1637 
    7	   1638     LOCAL
    7	   1639 	move_amt,					! Amount of data to move after a given $RMS_READ
    7	   1640 	next_pos,					! Position in file of requested characters/units
    7	   1641 	req_length;					! Number of characters/units requested
    7	   1642 
    7	   1643 !
    7	   1644 ! Setup the IOB for buffered input.
    7	   1645 !
    7	   1646 
    7	   1647     req_length = .iob[IOB$H_UNITS];			! Pickup the number of units requested
    7	   1648     next_pos = .iob[IOB$G_NEXT_POS];			! Pickup the position of requested units
    7	   1649     iob[IOB$H_UNITS] = 0;				! and then indicate that the input buffer is empty.
    7	   1650     iob[IOB$H_FULLWORDS] = 0;				! and then indicate that the input buffer is empty.	?
    7	   1651 
    7	   1652     IF .req_length GTRU					! Reallocate the input buffer if it is too small.
    7	   1653 	.iob[$SUB_FIELD(IOB$T_DATA,XPO$H_MAXLEN)]
    7	   1654     THEN
    7	   1655 	BEGIN
    8	   1656 	$XPO_IF_NOT( $XPO_FREE_MEM( BINARY_DATA = iob[IOB$T_DATA], FAILURE = 0 ) )
   10	   1657 	THEN
    9	   1658 	    $XPO_QUIT( IO_BUFFER, (.$XPO_STATUS) );
    8	   1659 
    8	   1660 	$XPO_IF_NOT( $XPO_GET_MEM( UNITS = .req_length, DESCRIPTOR = iob[IOB$T_DATA], FAILURE = 0 ) )
   10	   1661 	THEN
    9	   1662 	    $XPO_QUIT( IO_BUFFER, (.$XPO_STATUS) );
    8	   1663 	END;

XGET                            VAX/VMS Random Binary-mode GET   4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 35
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    7	   1664 
    7	   1665 !
    7	   1666 ! Read a block from the input file.
    7	   1667 !
    7	   1668 
    7	   1669     WHILE .req_length GTR 0 DO				! Loop until enough units have been read.
    7	   1670 	BEGIN
    8	   1671 	IF requested_block NEQ .rab[RAB$L_RFA0]		! If the block has not been read into the buffer,
    8	   1672 	THEN						!
    8	   1673 	    BEGIN					!
    9	   1674 	    IF .iob[IOB$V_OUTPUT] AND 			! and this is also an output file
    9	   1675 		.amt_buff_used NEQ 0			! and there is modified data in the buffer
    9	   1676 	    THEN					!
    9	   1677 		BEGIN					! then flush the buffer to disk.
   10	   1678 
   10	   1679 		rab[RAB$W_RSZ] = .rab[RAB$W_USZ];		! Setup the output block length
   10	   1680 		rab[RAB$L_RBF] = .rab[RAB$L_UBF];		! and address of the data buffer.
   10	   1681 
   10	   1682 		IF $RMS_WRITE( RAB = rab )			! If the write operation is successful,
   11	   1683 		THEN						!
   10	   1684 		    amt_buff_used = 0				! indicate that the output buffer is empty.
   10	   1685 		ELSE
   10	   1686 		    BEGIN
   11	   1687 		    XPO$RMS_ERROR( .iob,			! Otherwise, convert the RMS completion codes
   11	   1688 				    .rab[RAB$L_STS],		! into appropriate XPORT completion codes
   11	   1689 				    .rab[RAB$L_STV] );		!
   11	   1690 		    $XPO_QUIT();				! and then jump to return an error to the caller.
   11	   1691 		    END;
   10	   1692 		END;
    9	   1693 
    9	   1694 	    rab[RAB$L_BKT] = requested_block;		! Now specify the block to read
    9	   1695 	    $RMS_READ( RAB = rab );			! read a single block
    9	   1696 
    9	   1697 	    IF NOT .rab[RAB$L_STS]
    9	   1698 	    THEN
    9	   1699 		SELECTONE .rab[RAB$L_STS] OF		! Process an RMS GET failure.
    9	   1700 		    SET
    9	   1701 		    [ RMS$_EOF ] :			! End-of-file detected:
    9	   1702 			IF .iob[IOB$H_UNITS] EQL 0	!    If no data has been processed,
    9	   1703 			THEN				!
    9	   1704 			    LEAVE READ_BLOCK		!    jump to end-of-file processing.
    9	   1705 			ELSE
    9	   1706 			    BEGIN			!
   10	   1707 			    iob[IOB$V_EOF] = yes;	!    Otherwise, simply remember the end-of-file
   10	   1708 			    EXITLOOP;			!    and return an incomplete amount of data.
   10	   1709 			    END;
    9	   1710 
    9	   1711 		    [ OTHERWISE ] :			! Any other RMS error:
    9	   1712 			BEGIN				!
   10	   1713 			XPO$RMS_ERROR( .iob,		!    Convert the RMS completion codes into
   10	   1714 				.rab[RAB$L_STS],	!    equivalent XPORT completion codes
   10	   1715 				.rab[RAB$L_STV] );	!
   10	   1716 			$XPO_QUIT();			!    and then jump to return to the caller.
   10	   1717 			END;
    9	   1718 		    TES;
    9	   1719 	    END;
    8	   1720 

XGET                            VAX/VMS Random Binary-mode GET   4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 36
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    8	   1721 !
    8	   1722 ! Check if request for data is beyond the EOF
    8	   1723 !
    8	   1724 
    8	   1725 	IF requested_unit GEQU .rab[RAB$W_RSZ]		! If the requested unit is beyond the available data
    8	   1726 	THEN					! then this is an EOF condition.
    8	   1727 	    IF .iob[IOB$H_UNITS] EQL 0		! If no data has been processed,
    8	   1728 	    THEN				!
    8	   1729 		LEAVE READ_BLOCK		!   jump to end-of-file processing.
    8	   1730 	    ELSE
    8	   1731 		BEGIN
    9	   1732 		iob[IOB$V_EOF] = yes;		! Otherwise, simply remember the end-of-file
    9	   1733 		EXITLOOP;			!   and return an incomplete amount of data.
    9	   1734 	        END;
    8	   1735 
    8	   1736 !
    8	   1737 ! Move data into the XPORT internal input buffer.
    8	   1738 !
    8	   1739 
    8	   1740 	move_amt = MINU (					! amount to move is the minimum of
    8	   1741 			.req_length,				! the requested length to read
    8	   1742 			.rab[RAB$W_RSZ] - requested_unit );	! and the amount of data available
    8	   1743 
    8	   1744 	CH$MOVE( .move_amt,				! move the data
    8	   1745 	    .rab[RAB$L_RBF] + requested_unit,		! from the XPORT internal buffer
    8	   1746 	    .iob[IOB$A_DATA] + .iob[IOB$H_UNITS] );	! into the XPORT input buffer
    8	   1747 
    8	   1748 	iob[IOB$H_UNITS] = .iob[IOB$H_UNITS] +	.move_amt;	! update the length of the input data,
    8	   1749 
    8	   1750 	req_length = .req_length - .move_amt;		! calculate how much additional data is needed,
    8	   1751 
    8	   1752 	next_pos = .next_pos + .move_amt;		! update the pointer (requested_block and requested_byte)
    8	   1753 
    8	   1754 	END;		! of WHILE 
    7	   1755 
    7	   1756 !
    7	   1757 ! Calculate the file position and number of fullwords of binary data which have been read.
    7	   1758 !
    7	   1759 
    7	   1760     iob[IOB$H_FULLWORDS] = .iob[IOB$H_UNITS] / %UPVAL;	! calculate the number of complete BLISS fullwords read.
    7	   1761 
    7	   1762     iob[IOB$G_CURR_POS] = .iob[IOB$G_NEXT_POS];		! position just read from (in UNITS)
    7	   1763     iob[IOB$G_NEXT_POS] = .next_pos;			! next position to read from (in UNITS)
    7	   1764 
    7	   1765 !
    7	   1766 ! Check for a truncated input request.
    7	   1767 !
    7	   1768 
    7	   1769     IF .req_length NEQ 0				! If not enough data was read,
    7	   1770     THEN						!
    7	   1771 	$XPO_QUIT( INCOMPLETE )				! return a non-standard success code to the caller.
    8	   1772     ELSE
    7	   1773 	$XPO_QUIT();					! Otherwise, return the current success code to the caller.
    7	   1774 
    7	   1775     END;						! End of RANDOM input processing.
    6	   1776 
    6	   1777     END;						! End of VAX/VMS input processing.

XGET                            VAX/VMS Random Binary-mode GET   4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 37
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   1778 
    5	   1779 !+
    5	   1780 !
    5	   1781 !	End of VAX/VMS GET Processing
    5	   1782 !
    5	   1783 !-
    5	   1784 
    5	   1785 %FI

XGET                            RSX-11M Terminal GET Prompting   4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 38
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   1787 %TITLE 'RSX-11M Terminal GET Prompting'
    5	   1788 %IF $11M %THEN
U   5	   1789 
U   5	   1790 !+
U   5	   1791 !
U   5	   1792 !	RSX-11M GET Processing
U   5	   1793 !
U   5	   1794 !-
U   5	   1795 
U   5	   1796     BEGIN
U   5	   1797 
U   5	   1798 !+
U   5	   1799 !
U   5	   1800 !	RSX-11M Terminal GET Prompting
U   5	   1801 !
U   5	   1802 !-
U   5	   1803 
U   5	   1804 !
U   5	   1805 ! Issue a terminal input prompt, if requested.
U   5	   1806 !
U   5	   1807 
U   5	   1808     IF .iob[IOB$V_TERMINAL] AND				! If this is a terminal file
U   5	   1809 	.prompt[STR$H_LENGTH] GTR 0			! and a prompt string was specified,
U   5	   1810     THEN						! issue an input prompt.
U   5	   1811 	BEGIN
U   5	   1812 	LOCAL
U   5	   1813 	    prompt_buffer :  VECTOR[ max_prompt_len+2, BYTE ],
U   5	   1814 	    crlf_prompt :  $STR_DESCRIPTOR( CLASS=BOUNDED ),
U   5	   1815 	    status :  $QIO_STATUS;			! QIO status block
U   5	   1816 
U   5	   1817 	$STR_DESC_INIT( DESCRIPTOR = crlf_prompt,	! Add a CRLF to the beginning of the prompt.
U   5	   1818 			CLASS = BOUNDED,
U   5	   1819 			STRING = ( max_prompt_len+2, prompt_buffer ) );
U   5	   1820 	$STR_COPY( STRING = %CHAR(cr,lf), TARGET = crlf_prompt,
U   5	   1821 		    FAILURE = 0 );
U   5	   1822 	$XPO_IF_NOT( $STR_APPEND( STRING = prompt,
U   5	   1823 				TARGET = crlf_prompt,
U   5	   1824 				FAILURE = 0 ) )
U   5	   1825 	THEN
U   5	   1826 	    $XPO_QUIT( BAD_PROMPT, (.$XPO_STATUS) );
U   5	   1827 
U   5	   1828 	QIOW$S( IO$WVB,					! Write a "virtual block" to the terminal:
U   5	   1829 			.iob[IOB$H_CHANNEL],		!    LUN
U   5	   1830 			.XRSX$EVENT_FLAG,,		!    event flag number
U   5	   1831 			status,,			!    address of QIO status block
U   5	   1832 			< .crlf_prompt[STR$A_POINTER],	!    address of prompt data
U   5	   1833 			    .crlf_prompt[STR$H_LENGTH],	!    length of prompt data
U   5	   1834 			    0 > );			!    indicate no carriage control
U   5	   1835 
U   5	   1836 	IF .status[QS$ERR] NEQ IS$SUC			! If writing to the terminal fails,
U   5	   1837 	THEN						!
U   5	   1838 	    BEGIN					!
U   5	   1839 	    XRSX$IO_ERROR( .iob, .status[QS$ERR] );	! convert the QIO error code to XPORT completion codes
U   5	   1840 	    $XPO_QUIT();				! and return these codes to the caller.
U   5	   1841 	    END;
U   5	   1842 	END;						! End of terminal prompting
U   5	   1843 %FI

XGET                            RSX-11M Record-mode Terminal GE  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 39
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   1845 %TITLE 'RSX-11M Record-mode Terminal GET'
    5	   1846 %IF $11M %THEN
U   5	   1847 
U   5	   1848 !+
U   5	   1849 !
U   5	   1850 !	RSX-11M Record-mode Terminal GET
U   5	   1851 !
U   5	   1852 !-
U   5	   1853 
U   5	   1854     IF .iob[IOB$V_RECORD] AND .iob[IOB$V_TERMINAL]
U   5	   1855     THEN
U   5	   1856 	BEGIN
U   5	   1857 	LOCAL
U   5	   1858 	    status :  $QIO_STATUS;			! QIO status block
U   5	   1859 
U   5	   1860 	MACRO
U   5	   1861 	    max_string_len =
U   5	   1862 		$SUB_FIELD( IOB$T_STRING, STR$H_MAXLEN ) %;
U   5	   1863 
U   5	   1864 !
U   5	   1865 ! Allocate a terminal input buffer, if necessary.
U   5	   1866 !
U   5	   1867 
U   5	   1868 	IF .iob[max_string_len] EQL 0			! If this is the first get,
U   5	   1869 	THEN						!
U   5	   1870 	    BEGIN					!
U   5	   1871 	    $XPO_IF_NOT( $XPO_GET_MEM(			! allocate the buffer.
U   5	   1872 			CHARACTERS = term_buffer_len,
U   5	   1873 			RESULT = iob[IOB$A_STRING],
U   5	   1874 			FAILURE = 0 ) )
U   5	   1875 	    THEN
U   5	   1876 		$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	   1877 
U   5	   1878 	    iob[max_string_len] = term_buffer_len;	! Then setup the terminal buffer length.
U   5	   1879 	    END;
U   5	   1880 
U   5	   1881 !
U   5	   1882 ! Read a single line from the terminal.
U   5	   1883 !
U   5	   1884 
U   5	   1885 	QIOW$S( IO$RVB,					! Read a "virtual block" from the terminal.
U   5	   1886 			.iob[IOB$H_CHANNEL],		!    LUN
U   5	   1887 			.XRSX$EVENT_FLAG,,		!    event flag number
U   5	   1888 			status,,			!    address of QIO status block
U   5	   1889 			< .iob[IOB$A_STRING],		!    address of the terminal input buffer
U   5	   1890 			    .iob[max_string_len] > );	!    length of the terminal input buffer
U   5	   1891 
U   5	   1892 	IF .status[QS$ERR] NEQ IS$SUC
U   5	   1893 	THEN
U   5	   1894 	    IF .status[QS$ERR] EQL IE$EOF		! If end-of-file was reached,
U   5	   1895 	    THEN					!
U   5	   1896 		IF .status[QS$IO_COUNT] EQL 0		!
U   5	   1897 		THEN					!
U   5	   1898 		    LEAVE READ_BLOCK			! either jump to end-of-file processing
U   5	   1899 		ELSE					!
U   5	   1900 		    iob[IOB$V_EOF] = yes		! or indicate a pending end-of-file.
U   5	   1901 	    ELSE

XGET                            RSX-11M Record-mode Terminal GE  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 40
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   1902 		BEGIN					! If any other error occurred,
U   5	   1903 		XRSX$IO_ERROR( .iob, .status[QS$ERR] );	! convert the QIO error codes into XPORT completion codes
U   5	   1904 		$XPO_QUIT();				! and return these codes to the caller.
U   5	   1905 		END;
U   5	   1906 
U   5	   1907 	iob[IOB$H_STRING] = .status[QS$IO_COUNT];	! Indicate how many characters were read
U   5	   1908 	$XPO_QUIT();					! and return the current success code to the caller.
U   5	   1909 	END;
U   5	   1910 %FI

XGET                            RSX-11M Stream-mode Terminal GE  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 41
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   1912 %TITLE 'RSX-11M Stream-mode Terminal GET'
    5	   1913 %IF $11M %THEN
U   5	   1914 
U   5	   1915 !+
U   5	   1916 !
U   5	   1917 !	RSX-11M Stream-mode Terminal GET
U   5	   1918 !
U   5	   1919 !	NOTE:  The following code is very similar to the corresponding code for VAX/VMS.
U   5	   1920 !
U   5	   1921 !-
U   5	   1922 
U   5	   1923     IF .iob[IOB$V_STREAM] AND .iob[IOB$V_TERMINAL]
U   5	   1924     THEN
U   5	   1925 	BEGIN
U   5	   1926 	LOCAL
U   5	   1927 	    req_length,					! Number of characters requested
U   5	   1928 	    buffer_pointer,				! Pointer into terminal input buffer
U   5	   1929 	    status :  $QIO_STATUS;			! QIO status block
U   5	   1930 
U   5	   1931 	MACRO
U   5	   1932 	    max_string_len =
U   5	   1933 		$SUB_FIELD( IOB$T_STRING, STR$H_MAXLEN ) %;
U   5	   1934 
U   5	   1935 !
U   5	   1936 ! Allocate a terminal input buffer, if necessary.
U   5	   1937 !
U   5	   1938 
U   5	   1939 	req_length = .iob[IOB$H_STRING];		! Save the number of characters requested.
U   5	   1940 
U   5	   1941 	IF .iob[max_string_len] LSS .req_length		! See if the input buffer is large enough.
U   5	   1942 	THEN
U   5	   1943 	    BEGIN
U   5	   1944 	    $XPO_IF_NOT( $XPO_FREE_MEM(			! Free the current input buffer.
U   5	   1945 			    STRING = iob[IOB$T_STRING],
U   5	   1946 			    FAILURE = 0 ) )
U   5	   1947 	    THEN
U   5	   1948 		$XPO_QUIT( FREE_MEM, (.$XPO_STATUS) );
U   5	   1949 
U   5	   1950 	    $XPO_IF_NOT( $XPO_GET_MEM(			! Allocate a new input buffer.
U   5	   1951 			CHARACTERS = .req_length,
U   5	   1952 			RESULT = iob[IOB$A_STRING],
U   5	   1953 			FAILURE = 0 ) )
U   5	   1954 	    THEN
U   5	   1955 		$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	   1956 
U   5	   1957 	    iob[max_string_len] = .req_length;		! Then setup the terminal buffer length.
U   5	   1958 	    END;
U   5	   1959 
U   5	   1960 !
U   5	   1961 ! Read a stream of characters from the terminal.
U   5	   1962 !
U   5	   1963 
U   5	   1964 	QIOW$S( IO$RAL,					! Read a stream of characters from the terminal.
U   5	   1965 			.iob[IOB$H_CHANNEL],		!    LUN
U   5	   1966 			.XRSX$EVENT_FLAG,,		!    event flag number
U   5	   1967 			status,,			!    address of QIO status block
U   5	   1968 			< .iob[IOB$A_STRING],		!    address of the terminal input buffer

XGET                            RSX-11M Stream-mode Terminal GE  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 42
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   1969 			    .req_length > );		!    length of the terminal input buffer
U   5	   1970 
U   5	   1971 	IF .status[QS$ERR] NEQ IS$SUC
U   5	   1972 	THEN
U   5	   1973 	    IF .status[QS$ERR] EQL IE$EOF		! If end-of-file was reached,
U   5	   1974 	    THEN					!
U   5	   1975 		IF .status[QS$IO_COUNT] EQL 0		!
U   5	   1976 		THEN					!
U   5	   1977 		    LEAVE READ_BLOCK			! either jump to end-of-file processing
U   5	   1978 		ELSE					!
U   5	   1979 		    iob[IOB$V_EOF] = yes		! or indicate a pending end-of-file.
U   5	   1980 	    ELSE
U   5	   1981 		BEGIN					! If any other error occurred,
U   5	   1982 		XRSX$IO_ERROR( .iob, .status[QS$ERR] );	! convert the QIO error codes into XPORT completion codes
U   5	   1983 		$XPO_QUIT();				! and return these codes to the caller.
U   5	   1984 		END;
U   5	   1985 
U   5	   1986 !
U   5	   1987 ! Remove the parity bit from all characters read.
U   5	   1988 !
U   5	   1989 
U   5	   1990 	iob[IOB$H_STRING] = .status[QS$IO_COUNT];	! Indicate how many characters were read
U   5	   1991 
U   5	   1992 	buffer_pointer = .iob[IOB$A_STRING];		! Point to the terminal input buffer.
U   5	   1993 
U   5	   1994 	INCR index FROM 1 TO .iob[IOB$H_STRING] DO	! Convert one character at a time.
U   5	   1995 	    CH$WCHAR_A( CH$RCHAR( .buffer_pointer ) AND %X'7F', buffer_pointer );
U   5	   1996 
U   5	   1997 !
U   5	   1998 ! Check for a truncated input request.
U   5	   1999 !
U   5	   2000 
U   5	   2001 	IF .iob[IOB$H_STRING] LSS .req_length		! If not enough data was read,
U   5	   2002 	THEN						!
U   5	   2003 	    $XPO_QUIT( INCOMPLETE )			! return a non-standard success code to the caller.
U   5	   2004 	ELSE
U   5	   2005 	    $XPO_QUIT();				! Otherwise, return the current success code to the caller.
U   5	   2006 
U   5	   2007 	END;
U   5	   2008 %FI

XGET                            RSX-11M Record-mode File GET     4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 43
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   2010 %TITLE 'RSX-11M Record-mode File GET'
    5	   2011 %IF $11M %THEN
U   5	   2012 
U   5	   2013 !+
U   5	   2014 !
U   5	   2015 !	RSX-11M Record-mode File GET
U   5	   2016 !
U   5	   2017 !-
U   5	   2018 
U   5	   2019     IF .iob[IOB$V_RECORD]
U   5	   2020     THEN
U   5	   2021 	BEGIN
U   5	   2022 	BIND
U   5	   2023 	    fcs_blocks = .iob[IOB$A_FCS_FDB] :  $FCS_BLOCKS,
U   5	   2024 	    fdb = fcs_blocks[FCS$Z_FDB] :  FDB$;
U   5	   2025 
U   5	   2026 !
U   5	   2027 ! Read a single record.
U   5	   2028 !
U   5	   2029 
U   5	   2030 	IF NOT GET$( fdb )
U   5	   2031 	THEN
U   5	   2032 	    SELECTONE .fdb[F$ERR] OF			! Process a GET$ failure.
U   5	   2033 		SET
U   5	   2034 		[ IE$EOF ] :				! "end-of-file":
U   5	   2035 		    LEAVE READ_BLOCK;			!    Jump to end-of-file processing.
U   5	   2036 
U   5	   2037 		[ OTHERWISE ] :				! Any other FCS-11 error:
U   5	   2038 		    BEGIN				!
U   5	   2039 	    	    XRSX$IO_ERROR( .iob,		! convert the FCS-11 error code into XPORT completion codes
U   5	   2040 				    .fdb[F$ERR] );	!
U   5	   2041 		    $XPO_QUIT();			! and return these codes to the caller.
U   5	   2042 		    END;
U   5	   2043 		TES;
U   5	   2044 
U   5	   2045 !
U   5	   2046 ! Check for a page mark in a sequenced file.
U   5	   2047 !
U   5	   2048 
U   5	   2049 	IF .iob[IOB$V_SEQUENCED]			! If this is a sequenced file
U   5	   2050 	THEN						!
U   5	   2051 	    IF .fdb[F$SEQN] EQL %X'FFFF' AND		! and the sequence number is %X'FFFF'
U   5	   2052 		    .fdb[F$NRBD$S] EQL 1 AND		! and the record is a single form feed,
U   5	   2053 		    .(.fdb[F$NRBD$A])<0,8> EQL FF	!
U   5	   2054 	    THEN					!
U   5	   2055 		BEGIN					!
U   5	   2056 		iob[IOB$H_PAGE_NUMB] =			! increment the IOB page count,
U   5	   2057 			    .iob[IOB$H_PAGE_NUMB] + 1;	!
U   5	   2058 		iob[IOB$G_SEQ_NUMB] = 0;		! zero the record sequence number,
U   5	   2059 		iob[IOB$G_COMP_CODE] =			! and setup a special success completion code.
U   5	   2060 				XPO$_NEW_PAGE;
U   5	   2061 		END
U   5	   2062 
U   5	   2063 !
U   5	   2064 ! Update the IOB after a successful file read operation.
U   5	   2065 !
U   5	   2066 

XGET                            RSX-11M Record-mode File GET     4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 44
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2067 	    ELSE					! If this is a sequenced file,
U   5	   2068 		iob[IOB$G_SEQ_NUMB] = .fdb[F$SEQN]	! return the record sequence number.
U   5	   2069 	ELSE
U   5	   2070 	    iob[IOB$G_SEQ_NUMB] =			! Otherwise, increment the input record count.
U   5	   2071 		.iob[IOB$G_SEQ_NUMB] + 1;
U   5	   2072 
U   5	   2073 	$STR_DESC_INIT( DESCRIPTOR = iob[IOB$T_STRING],	! Setup the IOB input record descriptor.
U   5	   2074 			CLASS = FIXED,
U   5	   2075 			STRING = (.fdb[F$NRBD$S],.fdb[F$NRBD$A]) );
U   5	   2076 
U   5	   2077 !
U   5	   2078 ! Return to the caller after successfully reading a single record.
U   5	   2079 !
U   5	   2080 
U   5	   2081 	$XPO_QUIT();					! Jump to return a success code to the caller.
U   5	   2082 	END;
U   5	   2083 %FI

XGET                            RSX-11M Stream-mode and Binary-  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 45
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   2085 %TITLE 'RSX-11M Stream-mode and Binary-mode GET'
    5	   2086 %IF $11M %THEN
U   5	   2087 
U   5	   2088 !+
U   5	   2089 !
U   5	   2090 !	RSX-11M Stream-mode and Binary-mode GET Processing
U   5	   2091 !
U   5	   2092 !	NOTES:
U   5	   2093 !	    The following code is very similar to the corresponding code for VAX/VMS.
U   5	   2094 !
U   5	   2095 !	    The following code depends on IOB$T_STRING and IOB$T_DATA being the same IOB fields.
U   5	   2096 !
U   5	   2097 !-
U   5	   2098 
U   5	   2099     BEGIN
U   5	   2100     BIND
U   5	   2101 	fcs_blocks = .iob[IOB$A_FCS_FDB] :  $FCS_BLOCKS,
U   5	   2102 	fdb = fcs_blocks[FCS$Z_FDB] :  FDB$,
U   5	   2103 	amt_data_left = fcs_blocks[FCS$G_BUFF_LEFT];
U   5	   2104 
U   5	   2105     LOCAL
U   5	   2106 	io_count,					! Address of I/O count
U   5	   2107 	io_buffer;					! Address of I/O buffer address
U   5	   2108 
U   5	   2109     MACRO
U   5	   2110 	buffer_data [] =				! Moves data into the XPORT internal I/O buffer
U   5	   2111 	    BEGIN
U   5	   2112 	    LOCAL status;
U   5	   2113 
U   5	   2114 	    iob[$SUB_FIELD(IOB$T_DATA,XPO$B_DTYPE)] = STR$K_DTYPE_T;
U   5	   2115 
U   5	   2116 	    status = $STR_APPEND( STRING = (%REMAINING),
U   5	   2117 			TARGET = iob[IOB$T_STRING],
U   5	   2118 			FAILURE = 0 );
U   5	   2119 
U   5	   2120 	    IF .iob[IOB$V_BINARY]
U   5	   2121 	    THEN
U   5	   2122 		iob[$SUB_FIELD(IOB$T_DATA,XPO$B_DTYPE)] = XPO$K_DTYPE_BU;
U   5	   2123 
U   5	   2124 	    IF NOT .status
U   5	   2125 	    THEN
U   5	   2126 		$XPO_QUIT( IO_BUFFER, (.status) );
U   5	   2127 	    END %;
U   5	   2128 
U   5	   2129     LOCAL
U   5	   2130 	req_length;					! Number of characters/units requested
U   5	   2131 
U   5	   2132 !
U   5	   2133 ! Setup the IOB for buffered input.
U   5	   2134 !
U   5	   2135 
U   5	   2136     req_length = .iob[IOB$H_STRING];			! Pickup the number of characters/units requested
U   5	   2137     iob[IOB$H_STRING] = 0;				! and then indicate that the input buffer is empty.
U   5	   2138 
U   5	   2139     IF .iob[IOB$V_BINARY]				! Setup pointers to the I/O count, buffer address,
U   5	   2140     THEN						! and completion code.
U   5	   2141 	BEGIN

XGET                            RSX-11M Stream-mode and Binary-  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 46
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2142 	io_count = fcs_blocks[FCS$G_IO_COUNT];
U   5	   2143 	io_buffer = fdb[F$BKDS$A];
U   5	   2144 	END
U   5	   2145     ELSE
U   5	   2146 	BEGIN
U   5	   2147 	io_count = fdb[F$NRBD$S];
U   5	   2148 	io_buffer = fdb[F$NRBD$A];
U   5	   2149 	END;
U   5	   2150 
U   5	   2151 !
U   5	   2152 ! Loop until enough characters/units have been read.
U   5	   2153 !
U   5	   2154 
U   5	   2155     WHILE .req_length GTR 0 DO
U   5	   2156 	BEGIN
U   5	   2157 
U   5	   2158 	IF .amt_data_left EQL -2			! If CR/LF generation is pending,
U   5	   2159 	THEN						!
U   5	   2160 	    BEGIN					!
U   5	   2161 	    buffer_data( %CHAR(cr) );			! put a CR in the input buffer,
U   5	   2162 	    amt_data_left = -1;				! indicate a LF is still needed,
U   5	   2163 	    req_length = .req_length - 1;		! decrement the request count,
U   5	   2164 	    IF .req_length EQL 0			! and exit if the input buffer is now full.
U   5	   2165 	    THEN
U   5	   2166 		EXITLOOP;
U   5	   2167 	    END;
U   5	   2168 
U   5	   2169 	IF .amt_data_left EQL -1			! If LF generation is pending,
U   5	   2170 	THEN						!
U   5	   2171 	    BEGIN					!
U   5	   2172 	    buffer_data( %CHAR(lf) );			! put a LF in the input buffer,
U   5	   2173 	    amt_data_left = 0;				! indicate all RMS data has been processed,
U   5	   2174 	    req_length = .req_length - 1;		! decrement the request count,
U   5	   2175 	    IF .req_length EQL 0			! and exit if the input buffer is now full.
U   5	   2176 	    THEN
U   5	   2177 		EXITLOOP;
U   5	   2178 	    END;
U   5	   2179 
U   5	   2180 !
U   5	   2181 ! Read a record or a block from the input file.
U   5	   2182 !
U   5	   2183 
U   5	   2184 	IF .amt_data_left EQL 0				! If all previous RMS data has been processed,
U   5	   2185 	THEN						!
U   5	   2186 	    BEGIN					!
U   5	   2187 	    IF .iob[IOB$V_BINARY]			!
U   5	   2188 	    THEN					!
U   5	   2189 		BEGIN					!
U   5	   2190 		READ$( fdb );				! read a single block
U   5	   2191 		IF .fdb[F$ERR] EQL IS$SUC		!
U   5	   2192 		THEN					!
U   5	   2193 		    WAIT$( fdb );			!
U   5	   2194 		END					!
U   5	   2195 	    ELSE					!
U   5	   2196 		GET$( fdb );				! or a single record.
U   5	   2197 
U   5	   2198 	    IF .fdb[F$ERR] NEQ IS$SUC

XGET                            RSX-11M Stream-mode and Binary-  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 47
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2199 	    THEN
U   5	   2200 		SELECTONE .fdb[F$ERR] OF		! Process a GET$ or READ$ failure.
U   5	   2201 		    SET
U   5	   2202 		    [ IE$EOF ] :			! "End-of-file reached":
U   5	   2203 			IF .iob[IOB$H_STRING] EQL 0	!    If no data has been read,
U   5	   2204 			THEN				!
U   5	   2205 			    LEAVE READ_BLOCK		!    jump to end-of-file processing.
U   5	   2206 			ELSE
U   5	   2207 			    BEGIN
U   5	   2208 			    iob[IOB$V_EOF] = yes;	!    Otherwise, simply remember the end-of-file
U   5	   2209 			    EXITLOOP;			!    and return an incomplete amount of data.
U   5	   2210 			    END;
U   5	   2211 
U   5	   2212 		    [ OTHERWISE ] :			! Any other FCS-11 error:
U   5	   2213 			BEGIN				!
U   5	   2214 			XRSX$IO_ERROR( .iob,		!    Convert the FCS-11 completion code into
U   5	   2215 				    .fdb[F$ERR] );	!    equivalent XPORT completion codes
U   5	   2216 			$XPO_QUIT();			!    and then jump to return to the caller.
U   5	   2217 			END;
U   5	   2218 		    TES;
U   5	   2219 
U   5	   2220 	    amt_data_left = ..io_count;			! Save the amount of data actually read.
U   5	   2221 	    END;
U   5	   2222 
U   5	   2223 !
U   5	   2224 ! Move data into the XPORT internal input buffer.
U   5	   2225 !
U   5	   2226 
U   5	   2227 	IF .amt_data_left LEQ .req_length		! If not enough data has been read,
U   5	   2228 	THEN						!
U   5	   2229 	    BEGIN					!
U   5	   2230 	    buffer_data( .amt_data_left,		! move all unprocessed data into the XPORT input buffer,
U   5	   2231 		..io_buffer + ..io_count -		!
U   5	   2232 			.amt_data_left );		!
U   5	   2233 							!
U   5	   2234 	    req_length = .req_length - .amt_data_left;	! calculate how much addition data is needed,
U   5	   2235 							!
U   5	   2236 	    IF .fdb[FD$$CR] AND .iob[IOB$V_STREAM]	!
U   5	   2237 	    THEN					!
U   5	   2238 		amt_data_left = -2			! and then indicate that a CR/LF is needed
U   5	   2239 	    ELSE					!
U   5	   2240 		amt_data_left = 0;			! or than there is no unprocessed input data.
U   5	   2241 	    END
U   5	   2242 	ELSE
U   5	   2243 	    BEGIN					! If more than enough data has been read,
U   5	   2244 	    buffer_data( .req_length,			! move enough data to satisfy this request,
U   5	   2245 		..io_buffer + ..io_count -		!
U   5	   2246 			.amt_data_left );		!
U   5	   2247 	    amt_data_left = .amt_data_left -		! calculate how much unprocessed data remains,
U   5	   2248 					.req_length;	!
U   5	   2249 	    req_length = 0;				! and indicate no more data is needed for this request.
U   5	   2250 	    END;
U   5	   2251 	END;
U   5	   2252 
U   5	   2253 !
U   5	   2254 ! Calculate the number of fullwords of binary data which have been read.
U   5	   2255 !

XGET                            RSX-11M Stream-mode and Binary-  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 48
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2256 
U   5	   2257     IF .iob[IOB$V_BINARY]				! If this is a binary read,
U   5	   2258     THEN						!
U   5	   2259 	iob[IOB$H_FULLWORDS] =				! calculate the number of complete BLISS fullwords read.
U   5	   2260 		.iob[IOB$H_UNITS] / %UPVAL;
U   5	   2261 
U   5	   2262 !
U   5	   2263 ! Check for a truncated input request.
U   5	   2264 !
U   5	   2265 
U   5	   2266     IF .req_length NEQ 0				! If not enough data was read,
U   5	   2267     THEN						!
U   5	   2268 	$XPO_QUIT( INCOMPLETE )				! return a non-standard success code to the caller.
U   5	   2269     ELSE
U   5	   2270 	$XPO_QUIT();					! Otherwise, return the current success code to the caller.
U   5	   2271 
U   5	   2272     END;						! End of stream/binary input processing.
U   5	   2273 
U   5	   2274     END;						! End of RSX-11M input processing.
U   5	   2275 
U   5	   2276 !+
U   5	   2277 !
U   5	   2278 !	End of RSX-11M GET Processing
U   5	   2279 !
U   5	   2280 !-
U   5	   2281 
U   5	   2282 %FI

XGET                            RSTS/E GET Prompting             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 49
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   2284 %TITLE 'RSTS/E GET Prompting'
    5	   2285 %IF $RSTS %THEN
U   5	   2286 
U   5	   2287 !+
U   5	   2288 !
U   5	   2289 !	RSTS/E GET Processing
U   5	   2290 !
U   5	   2291 !-
U   5	   2292 
U   5	   2293     BEGIN
U   5	   2294 
U   5	   2295     BIND
U   5	   2296 	rsts_cb = .iob[IOB$A_RSTS_CB] :  $XRSTS_CB;	! XPORT-specific RSTS/E interface info
U   5	   2297 
U   5	   2298     LOCAL
U   5	   2299     	value :  BYTE,					! Single ASCII character
U   5	   2300 	req_length,					! Requested input data length
U   5	   2301 	new_buffer,					! New input buffer pointer/address
U   5	   2302 	buffer_pointer;					! XPORT input buffer pointer
U   5	   2303 
U   5	   2304     MACRO
U   5	   2305 	max_string_len =
U   5	   2306 	    $SUB_FIELD( IOB$T_STRING, STR$H_MAXLEN ) %;
U   5	   2307 
U   5	   2308 !
U   5	   2309 ! RSTS/E initialization.
U   5	   2310 !
U   5	   2311 
U   5	   2312     IF .iob[$SUB_FIELD(IOB$T_STRING,STR$B_CLASS)]	! Make sure IOB$T_STRING is DYNAMIC_BOUNDED.
U   5	   2313 			NEQ STR$K_CLASS_DB
U   5	   2314     THEN
U   5	   2315 	$XPO_QUIT( BAD_IOB, CORRUPTED );
U   5	   2316 
U   5	   2317     req_length = .iob[IOB$H_STRING];			! Pickup the input request length before
U   5	   2318 							! it is smashed by input prompting.
U   5	   2319 
U   5	   2320 
U   5	   2321 !+
U   5	   2322 !
U   5	   2323 !	RSTS/E Terminal GET Prompting
U   5	   2324 !
U   5	   2325 !	NOTE: This code is very similar to the TOPS10/TOPS20/RT11 terminal prompting.
U   5	   2326 !-
U   5	   2327 
U   5	   2328 !
U   5	   2329 ! Issue a terminal input prompt, if requested.
U   5	   2330 !
U   5	   2331 
U   5	   2332     IF .iob[IOB$V_TERMINAL] AND				! If this is a terminal file
U   5	   2333 	.prompt[STR$H_LENGTH] GTR 0			! and a prompt string was specified,
U   5	   2334     THEN						! issue an input prompt.
U   5	   2335 	BEGIN
U   5	   2336 	$XRSTS_INI_FIRQB;				! Initialize the FIRQB.
U   5	   2337     	$XRSTS_INI_XRB;					! Initialize the XRB.
U   5	   2338     							! Setup the XRB:
U   5	   2339     	$XRSTS_XRB[XRLEN] = .prompt[STR$H_LENGTH];	!    length of prompt
U   5	   2340     	$XRSTS_XRB[XRBC] = .prompt[STR$H_LENGTH];	!    length of prompt 

XGET                            RSTS/E GET Prompting             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 50
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2341     	$XRSTS_XRB[XRLOC] = .prompt[STR$A_POINTER];	!    starting address of prompt
U   5	   2342     	$XRSTS_XRB[XRCI] = 0;				!    channel number times 2 (user's terminal is always 0)
U   5	   2343 
U   5	   2344     	$WRITE;						! Send the prompt to the terminal.
U   5	   2345     	IF .$XRSTS_FIRQB[FQIOSTS] NEQ 0			! Report any errors.
U   5	   2346     	THEN
U   5	   2347      	    BEGIN
U   5	   2348     	    XRST$ERROR( .iob, .$XRSTS_FIRQB[FQIOSTS] );
U   5	   2349     	    $XPO_QUIT();
U   5	   2350     	    END;
U   5	   2351     	END;
U   5	   2352 %FI

XGET                            RSTS/E Record-mode Terminal GET  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 51
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   2354 %TITLE 'RSTS/E Record-mode Terminal GET'
    5	   2355 %IF $RSTS %THEN
U   5	   2356 
U   5	   2357 !+
U   5	   2358 !
U   5	   2359 !	RSTS/E Record-mode Terminal GET
U   5	   2360 !
U   5	   2361 !-
U   5	   2362 
U   5	   2363     IF .iob[IOB$V_RECORD] AND .iob[IOB$V_TERMINAL]
U   5	   2364     THEN
U   5	   2365 	BEGIN
U   5	   2366 
U   5	   2367 !
U   5	   2368 ! Allocate a terminal input buffer, if necessary.
U   5	   2369 !
U   5	   2370 
U   5	   2371 	IF .iob[max_string_len] EQL 0			! If this is the first get,
U   5	   2372 	THEN						!
U   5	   2373 	    BEGIN					!
U   5	   2374 	    $XPO_IF_NOT( $XPO_GET_MEM(			! allocate the buffer.
U   5	   2375 			CHARACTERS = term_buffer_len,
U   5	   2376 			RESULT = iob[IOB$A_STRING],
U   5	   2377 			FAILURE = 0 ) )
U   5	   2378 	    THEN
U   5	   2379 		$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	   2380 
U   5	   2381 	    iob[max_string_len] = term_buffer_len;	! Then setup the terminal buffer length.
U   5	   2382 	    END;
U   5	   2383 
U   5	   2384 !
U   5	   2385 ! Read a single line from the terminal.
U   5	   2386 !
U   5	   2387 
U   5	   2388     	$XRSTS_INI_FIRQB;				! Initialize the FIRQB.
U   5	   2389     	$XRSTS_INI_XRB;					! Initialize the XRB.
U   5	   2390     							! Setup the XRB:
U   5	   2391     	$XRSTS_XRB[XRLEN] = .iob[max_string_len];	!    size of the buffer in bytes
U   5	   2392     	$XRSTS_XRB[XRLOC] = .iob[IOB$A_STRING];		!    starting address of buffer
U   5	   2393     	$XRSTS_XRB[XRCI] = 0;				!    channel number times 2 (user's terminal is always 0)
U   5	   2394 
U   5	   2395     	$READ;						! Read from the terminal.
U   5	   2396 	IF .$XRSTS_FIRQB[FQIOSTS] NEQ 0
U   5	   2397 	THEN
U   5	   2398 	    IF .$XRSTS_FIRQB[FQIOSTS] EQL RSTS$_EOF	! If end-of-file was reached,
U   5	   2399 	    THEN					!
U   5	   2400 		IF .$XRSTS_XRB[XRBC] LEQ 1		! (^Z is counted as one character)
U   5	   2401 		THEN					!
U   5	   2402 		    LEAVE READ_BLOCK			! either jump to end-of-file processing
U   5	   2403 		ELSE					!
U   5	   2404 		    iob[IOB$V_EOF] = yes		! or indicate a pending end-of-file.
U   5	   2405 	    ELSE
U   5	   2406 		BEGIN					! If any other error occurred,
U   5	   2407 		XRST$ERROR(.iob,.$XRSTS_FIRQB[FQIOSTS]);! convert the RSTS error codes into XPORT completion codes
U   5	   2408 		$XPO_QUIT();				! and return these codes to the caller.
U   5	   2409 		END;
U   5	   2410 

XGET                            RSTS/E Record-mode Terminal GET  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 52
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2411 	iob[IOB$H_STRING] = .$XRSTS_XRB[XRBC];		! Indicate how many characters were read
U   5	   2412 
U   5	   2413 !
U   5	   2414 ! Remove any control characters from the end of the record.
U   5	   2415 !
U   5	   2416 
U   5	   2417 	buffer_pointer = CH$PLUS( .iob[IOB$A_STRING],	! Point past the last input character.
U   5	   2418 				.iob[IOB$H_STRING] );
U   5	   2419 
U   5	   2420 	WHILE .iob[IOB$H_STRING] GTR 0 DO		! Loop to remove control characters from
U   5	   2421 	    BEGIN					! the end of the input record.
U   5	   2422 
U   5	   2423 	    buffer_pointer =				! Decrement the buffer pointer.
U   5	   2424 		CH$PLUS( .buffer_pointer, -1 );
U   5	   2425 
U   5	   2426 	    value = CH$RCHAR( .buffer_pointer );	! Pickup the last character in the record.
U   5	   2427 
U   5	   2428 	    IF .value EQL cr OR	 .value EQL ctrl_z OR	! If the character is a control character,
U   5	   2429     		.value EQL lf OR .value EQL esc OR	!		
U   5	   2430     		.value EQL ff OR .value EQL ctrl_d 	!
U   5	   2431 	    THEN					!
U   5	   2432 		iob[IOB$H_STRING] =			! decrement the record length.
U   5	   2433 			.iob[IOB$H_STRING] - 1
U   5	   2434 	    ELSE
U   5	   2435 		EXITLOOP;				! Otherwise, exit this cleanup loop.
U   5	   2436 	    END;
U   5	   2437 	$XPO_QUIT();					! and return the current success code to the caller.
U   5	   2438 	END;
U   5	   2439 %FI

XGET                            RSTS/E Record-mode GET from rec  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 53
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   2441 %TITLE 'RSTS/E Record-mode GET from record file'
    5	   2442 %IF $RSTS %THEN
U   5	   2443 
U   5	   2444 !+
U   5	   2445 !
U   5	   2446 !	RSTS/E Record-mode GET From a Record Format File
U   5	   2447 !
U   5	   2448 !-
U   5	   2449 
U   5	   2450     IF .iob[IOB$V_RECORD] AND				! Test for record-mode input and a record format file.
U   5	   2451 	( .rsts_cb[XRSTS$V_RECF] EQL RSTS$K_FIXED OR
U   5	   2452 	  .rsts_cb[XRSTS$V_RECF] EQL RSTS$K_VARIABLE OR
U   5	   2453 	  .rsts_cb[XRSTS$V_RECF] EQL RSTS$K_VFC )
U   5	   2454     THEN
U   5	   2455 	BEGIN
U   5	   2456 	LOCAL
U   5	   2457 	    record_length;				! Length of current record
U   5	   2458 
U   5	   2459 !
U   5	   2460 ! Fill the XPORT internal buffer if it is empty.
U   5	   2461 !
U   5	   2462 
U   5	   2463 	IF .rsts_cb[XRSTS$G_BFCTR] EQL 0
U   5	   2464 	THEN
U   5	   2465 	    SELECTONE XRST$IN( .iob ) OF
U   5	   2466 		SET
U   5	   2467 		[ XPO$_END_FILE ] :
U   5	   2468 		    LEAVE read_block;
U   5	   2469 
U   5	   2470 		[ XPO$_NORMAL ] :
U   5	   2471 		    XPO$_NORMAL;
U   5	   2472 
U   5	   2473 		[ OTHERWISE ] :
U   5	   2474 		    $XPO_QUIT();
U   5	   2475 		TES;
U   5	   2476 
U   5	   2477 !
U   5	   2478 ! Determine the current record length based on the record format
U   5	   2479 ! and adjust the buffer pointer if necessary.
U   5	   2480 !
U   5	   2481 
U   5	   2482 	SELECTONE .rsts_cb[XRSTS$V_RECF] OF
U   5	   2483 	    SET
U   5	   2484 	    [ RSTS$K_FIXED ] :
U   5	   2485 		record_length = .iob[IOB$G_REC_SIZE];
U   5	   2486 
U   5	   2487 	    [ RSTS$K_VARIABLE ] :
U   5	   2488 		BEGIN
U   5	   2489 		record_length = ..rsts_cb[XRSTS$A_BFPTR];
U   5	   2490 		rsts_cb[XRSTS$A_BFPTR] = .rsts_cb[XRSTS$A_BFPTR] + 2;
U   5	   2491 		rsts_cb[XRSTS$G_BFCTR] = .rsts_cb[XRSTS$G_BFCTR] - 2;
U   5	   2492 		END;
U   5	   2493 
U   5	   2494 	    [ RSTS$K_VFC ] :
U   5	   2495 		BEGIN
U   5	   2496 		record_length = ..rsts_cb[XRSTS$A_BFPTR] - .rsts_cb[XRSTS$V_FIXS];
U   5	   2497 		rsts_cb[XRSTS$A_BFPTR] = .rsts_cb[XRSTS$A_BFPTR] + 2 + .rsts_cb[XRSTS$V_FIXS];

XGET                            RSTS/E Record-mode GET from rec  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 54
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2498 		rsts_cb[XRSTS$G_BFCTR] = .rsts_cb[XRSTS$G_BFCTR] - 2 - .rsts_cb[XRSTS$V_FIXS];
U   5	   2499 		END;
U   5	   2500 	    TES;
U   5	   2501 
U   5	   2502 !
U   5	   2503 ! Copy the record text into another XPORT internal buffer.
U   5	   2504 !
U   5	   2505 
U   5	   2506 	iob[IOB$H_STRING] = 0;				! Indicate that the input record buffer is empty.
U   5	   2507 
U   5	   2508 	WHILE .record_length GTRU .rsts_cb[XRSTS$G_BFCTR] DO
U   5	   2509 	    BEGIN
U   5	   2510 	    $XPO_IF_NOT( $STR_APPEND( STRING = ( .rsts_cb[XRSTS$G_BFCTR], .rsts_cb[XRSTS$A_BFPTR] ),
U   5	   2511 					TARGET = iob[IOB$H_STRING],
U   5	   2512 					FAILURE = 0 ) )
U   5	   2513 	    THEN
U   5	   2514 		$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	   2515 
U   5	   2516 	    record_length = .record_length - .rsts_cb[XRSTS$G_BFCTR];
U   5	   2517 
U   5	   2518 	    SELECTONE XRST$IN( .iob ) OF
U   5	   2519 		SET
U   5	   2520 		[ XPO$_END_FILE ] :
U   5	   2521 		    $XPO_QUIT( SYS_ERROR, END_FILE );
U   5	   2522 
U   5	   2523 		[ XPO$_NORMAL ] :
U   5	   2524 		    XPO$_NORMAL;
U   5	   2525 
U   5	   2526 		[ OTHERWISE ] :
U   5	   2527 		    $XPO_QUIT();
U   5	   2528 		TES;
U   5	   2529 	    END;
U   5	   2530 
U   5	   2531 	$XPO_IF_NOT( $STR_APPEND( STRING = ( .record_length, .rsts_cb[XRSTS$A_BFPTR] ),
U   5	   2532 				TARGET = iob[IOB$H_STRING],
U   5	   2533 				FAILURE = 0 ) )
U   5	   2534 	THEN
U   5	   2535 	    $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	   2536 
U   5	   2537 	record_length = .record_length + 1		! Round record length up to even number.
U   5	   2538 					AND %X'FFFE';
U   5	   2539 
U   5	   2540 !
U   5	   2541 ! Adjust the buffer pointer and remaining buffer count.
U   5	   2542 !
U   5	   2543 
U   5	   2544 	rsts_cb[XRSTS$A_BFPTR] = .rsts_cb[XRSTS$A_BFPTR] + .record_length;
U   5	   2545 	rsts_cb[XRSTS$G_BFCTR] = .rsts_cb[XRSTS$G_BFCTR] - .record_length;
U   5	   2546 
U   5	   2547 !
U   5	   2548 ! Determine whether the next record is in the current buffer.
U   5	   2549 !
U   5	   2550 
U   5	   2551 	SELECTONE .rsts_cb[XRSTS$V_RECF] OF
U   5	   2552 	    SET
U   5	   2553 	    [ RSTS$K_FIXED ] :
U   5	   2554 		IF .iob[IOB$G_REC_SIZE] GTRU .rsts_cb[XRSTS$G_BFCTR] AND

XGET                            RSTS/E Record-mode GET from rec  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 55
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2555 		    (.rsts_cb[XRSTS$V_PRIC] AND RSTS$K_NO_SPAN) NEQ 0
U   5	   2556 		THEN
U   5	   2557 		    rsts_cb[XRSTS$G_BFCTR] = 0;
U   5	   2558 
U   5	   2559 	    [ RSTS$K_VFC ] :
U   5	   2560 		IF .rsts_cb[XRSTS$G_BFCTR] NEQ 0 AND
U   5	   2561 		    ..rsts_cb[XRSTS$A_BFPTR] EQL 0
U   5	   2562 		THEN
U   5	   2563 		    rsts_cb[XRSTS$G_BFCTR] = 0;
U   5	   2564 	    TES;
U   5	   2565 	
U   5	   2566 !
U   5	   2567 ! Return to the caller after a successful GET.
U   5	   2568 !
U   5	   2569 
U   5	   2570 	$XPO_QUIT();
U   5	   2571 	END;
U   5	   2572 %FI

XGET                            RSTS/E Record-mode GET from Str  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 56
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   2574 %TITLE 'RSTS/E Record-mode GET from Stream File'
    5	   2575 %IF $RSTS %THEN
U   5	   2576 
U   5	   2577 !+
U   5	   2578 !
U   5	   2579 !	RSTS/E Record-mode GET from a Stream Format File
U   5	   2580 !
U   5	   2581 !	Note that the following section is very similar to TOPS-10/RT11
U   5	   2582 !	record-mode GET processing for file.
U   5	   2583 
U   5	   2584 !-
U   5	   2585 
U   5	   2586     IF .iob[IOB$V_RECORD]				! If this a record-mode character file,
U   5	   2587     THEN						! execute the following block.
U   5	   2588 	BEGIN
U   5	   2589 
U   5	   2590 !
U   5	   2591 ! Allocate a buffer if we haven't already.
U   5	   2592 !
U   5	   2593 
U   5	   2594         IF .iob[max_string_len] EQL 0
U   5	   2595         THEN
U   5	   2596 	    BEGIN
U   5	   2597 	    $XPO_IF_NOT( $XPO_GET_MEM(			! Allocate a buffer.
U   5	   2598 			CHARACTERS = buffer_length,
U   5	   2599 			DESCRIPTOR = iob[IOB$T_STRING],
U   5	   2600 			FAILURE = 0 ) )
U   5	   2601 	    THEN
U   5	   2602 	        $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );	! Report any errors.
U   5	   2603 	    END;
U   5	   2604 
U   5	   2605 !
U   5	   2606 ! Indicate that no data has been read into the XPORT input buffer.
U   5	   2607 !
U   5	   2608 
U   5	   2609 	iob[IOB$H_STRING] = 0;				! Indicate that no data has been read.
U   5	   2610 
U   5	   2611 !
U   5	   2612 ! Process any page or sequence number information in the record.
U   5	   2613 !
U   5	   2614 
U   5	   2615 	iob[IOB$G_SEQ_NUMB] =				! Simply increment the input record count.
U   5	   2616 		.iob[IOB$G_SEQ_NUMB] + 1;
U   5	   2617 
U   5	   2618 !
U   5	   2619 ! Move a single record into the local input buffer.
U   5	   2620 !
U   5	   2621 
U   5	   2622 	buffer_pointer = .iob[IOB$A_STRING];		! Setup the local input buffer pointer.
U   5	   2623 
U   5	   2624 	WHILE 1 DO					! Fill the input buffer a character at a time.
U   5	   2625 	    BEGIN
U   5	   2626     	    SELECTONE XRST$GET_FILE(.iob,value) OF	! Read one character from the data file
U   5	   2627 	        SET					! and process any error completion code.
U   5	   2628 	        [ XPO$_END_FILE ] :			! End-of-file:
U   5	   2629 			IF .iob[IOB$H_STRING] EQL 0	!    If no data has been read,
U   5	   2630 			THEN				!

XGET                            RSTS/E Record-mode GET from Str  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 57
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2631 			    LEAVE READ_BLOCK		!    jump to EOF processing.
U   5	   2632 			ELSE				!
U   5	   2633 			    BEGIN			!    Otherwise,
U   5	   2634 			    iob[IOB$V_EOF] = yes;	!    turn on the EOF indicator
U   5	   2635 			    EXITLOOP;			!    and exit the character read loop.
U   5	   2636 			    END;
U   5	   2637 
U   5	   2638     	        [ XPO$_NORMAL ] :			! Successful return:
U   5	   2639 			XPO$_NORMAL;			!    Just fall out of 'SELECTONE'
U   5	   2640 
U   5	   2641 		[ OTHERWISE ] :				! All other error conditions:
U   5	   2642 			$XPO_QUIT();			!    Return to caller with the preset completion code.
U   5	   2643 
U   5	   2644 		TES;
U   5	   2645 
U   5	   2646 	    IF .value EQL lf				! If the character is a line feed,
U   5	   2647 	    THEN					!
U   5	   2648 	    	EXITLOOP;				! exit the read loop.
U   5	   2649 
U   5	   2650 
U   5	   2651             IF .iob[IOB$H_STRING] GTR 0 OR		! If a non-null character has been found
U   5	   2652     	        .value NEQ null				!
U   5	   2653             THEN					!
U   5	   2654 	    	BEGIN					! put it into the XPORT input buffer.
U   5	   2655 
U   5	   2656 	    	IF .iob[IOB$H_STRING] GEQ		! If the XPORT input buffer is full,
U   5	   2657 				.iob[max_string_len]	!
U   5	   2658 	        THEN					!
U   5	   2659 	            BEGIN				!
U   5	   2660 		    $XPO_IF_NOT( $XPO_GET_MEM(		! allocate a larger input buffer.
U   5	   2661 					CHARACTERS = (.iob[max_string_len] + buffer_length),
U   5	   2662 					RESULT = new_buffer,
U   5	   2663 					FAILURE = 0 ) )
U   5	   2664 		    THEN
U   5	   2665 		        $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	   2666 
U   5	   2667 		    buffer_pointer =			! Copy the current input data into the new buffer.
U   5	   2668 			CH$MOVE( .iob[IOB$H_STRING],
U   5	   2669 				.iob[IOB$A_STRING],
U   5	   2670 				.new_buffer );
U   5	   2671 
U   5	   2672 		    $XPO_FREE_QUIT(			! Free the original input buffer
U   5	   2673 			STRING = (.iob[IOB$H_STRING],	! but don't zero the descriptor length fields.
U   5	   2674 				.iob[IOB$A_STRING]) );
U   5	   2675 
U   5	   2676 							! Update the XPORT input buffer descriptor:
U   5	   2677 		    iob[IOB$A_STRING] = .new_buffer;	!    pointer to input buffer
U   5	   2678 		    iob[max_string_len] =		!    length of the input buffer
U   5	   2679 			.iob[max_string_len] + buffer_length;
U   5	   2680 		    END;
U   5	   2681 
U   5	   2682   	        CH$WCHAR_A( .value, buffer_pointer );	! Put the new character into the XPORT input buffer
U   5	   2683    	        iob[IOB$H_STRING] =			! and increment the input record length.
U   5	   2684 		    .iob[IOB$H_STRING] + 1;
U   5	   2685 	        END;
U   5	   2686     	    END;
U   5	   2687 

XGET                            RSTS/E Record-mode GET from Str  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 58
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2688 !
U   5	   2689 ! Remove any control characters from the end of the record.
U   5	   2690 !
U   5	   2691 
U   5	   2692 	buffer_pointer = CH$PLUS( .iob[IOB$A_STRING],	! Point past the last input character.
U   5	   2693 				.iob[IOB$H_STRING] );
U   5	   2694 
U   5	   2695 	WHILE .iob[IOB$H_STRING] GTR 0 DO		! Loop to remove control characters from
U   5	   2696 	    BEGIN					! the end of the input record.
U   5	   2697 
U   5	   2698 	    buffer_pointer =				! Decrement the buffer pointer.
U   5	   2699 		CH$PLUS( .buffer_pointer, -1 );
U   5	   2700 
U   5	   2701 	    value = CH$RCHAR( .buffer_pointer );	! Pickup the last character in the record.
U   5	   2702 
U   5	   2703 	    IF .value EQL cr				! If the character is a carriage return,
U   5	   2704 	    THEN					!
U   5	   2705 		iob[IOB$H_STRING] =			! decrement the record length.
U   5	   2706 			.iob[IOB$H_STRING] - 1
U   5	   2707 	    ELSE
U   5	   2708 		EXITLOOP;				! Otherwise, exit this cleanup loop.
U   5	   2709 	    END;
U   5	   2710 
U   5	   2711 	$XPO_QUIT();					! Return the current success code to the caller.
U   5	   2712 	END;
U   5	   2713 %FI

XGET                            RSTS/E Stream-mode and Binary-m  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 59
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   2715 %TITLE 'RSTS/E Stream-mode and Binary-mode GET'
    5	   2716 %IF $RSTS %THEN
U   5	   2717 
U   5	   2718 !+
U   5	   2719 !
U   5	   2720 !	RSTS/E Stream-mode and Binary-mode GET Processing
U   5	   2721 !
U   5	   2722 !	Note that the following section depends on IOB$T_STRING and IOB$T_DATA
U   5	   2723 !	being the same actual IOB fields and resembles TOPS-10/TOPS-20/RT11 GET processing.
U   5	   2724 !
U   5	   2725 !-
U   5	   2726 
U   5	   2727 !
U   5	   2728 ! Indicate that no data has been read into the XPORT input buffer.
U   5	   2729 !
U   5	   2730 
U   5	   2731     iob[IOB$H_STRING] = 0;				! Indicate that no data has been read.
U   5	   2732 
U   5	   2733 !
U   5	   2734 ! Allocate a new input buffer if the current buffer is too small.
U   5	   2735 !
U   5	   2736 
U   5	   2737     IF .req_length GTR .iob[max_string_len]		! If the current input buffer is too small,
U   5	   2738     THEN						!
U   5	   2739 	BEGIN						!
U   5	   2740 	$XPO_FREE_QUIT( STRING = iob[IOB$T_STRING] );	! free the buffer.
U   5	   2741 
U   5	   2742 	$XPO_IF_NOT( $XPO_GET_MEM(			! Allocate a new input buffer.
U   5	   2743 			    UNITS = .req_length,
U   5	   2744 			    RESULT = new_buffer,
U   5	   2745 			    FAILURE = 0 ) )
U   5	   2746 	THEN
U   5	   2747 	    $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	   2748 
U   5	   2749 							! Update the input data descriptor:
U   5	   2750 	iob[IOB$A_STRING] = .new_buffer;		!    new input buffer pointer/address
U   5	   2751 	iob[max_string_len] = .req_length;		!    length of the new input buffer
U   5	   2752 	END;
U   5	   2753 
U   5	   2754 !
U   5	   2755 ! Setup a local pointer to the input buffer.
U   5	   2756 !
U   5	   2757 
U   5	   2758     buffer_pointer = .iob[IOB$A_STRING];		! Pickup the buffer pointer.
U   5	   2759 
U   5	   2760 !
U   5	   2761 ! Fill the input buffer one character/value at a time.
U   5	   2762 !
U   5	   2763 
U   5	   2764     INCR count FROM 1 TO .req_length DO			! Fill the buffer one character/value at a time.
U   5	   2765 	BEGIN
U   5	   2766 	IF .iob[IOB$V_TERMINAL]				! If this is a terminal file,
U   5	   2767 	THEN						!
U   5	   2768 	    BEGIN					!
U   5	   2769     	    $TTDDT;					! Enable stream mode input from terminal.
U   5	   2770 
U   5	   2771     	    $XRSTS_INI_FIRQB;				! Initialize the FIRQ.

XGET                            RSTS/E Stream-mode and Binary-m  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 60
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2772     	    $XRSTS_INI_XRB;				! Initialize the XRB.
U   5	   2773     							! Setup the XRB:
U   5	   2774     	    $XRSTS_XRB[XRLEN] = 1;			!    terminal input buffer length
U   5	   2775     	    $XRSTS_XRB[XRLOC] = value;			!    buffer address
U   5	   2776     	    $XRSTS_XRB[XRCI] = 0;			!    channel number times 2(user's terminal is always 0)
U   5	   2777 
U   5	   2778     	    $READ;					! Read one character from the user's terminal.
U   5	   2779 	    IF .$XRSTS_FIRQB[FQIOSTS] NEQ 0		!
U   5	   2780     	    THEN					!
U   5	   2781     	        BEGIN					!
U   5	   2782 		IF .$XRSTS_FIRQB[FQIOSTS] EQL RSTS$_EOF	!
U   5	   2783     		THEN					!
U   5	   2784     	    	    IF .iob[IOB$H_STRING] EQL 0		!
U   5	   2785 		    THEN				! and jump to EOF processing if it is the
U   5	   2786 		        LEAVE READ_BLOCK		! first character read
U   5	   2787 		    ELSE				!
U   5	   2788 		        BEGIN				!
U   5	   2789 		        iob[IOB$V_EOF] = yes;		! or turn on the EOF indicator
U   5	   2790 		        EXITLOOP;			! and then exit the terminal read loop.
U   5	   2791 		        END
U   5	   2792 	        ELSE
U   5	   2793     	            BEGIN
U   5	   2794     		    XRST$ERROR(.iob, .$XRSTS_FIRQB[FQIOSTS]);
U   5	   2795     		    $XPO_QUIT();
U   5	   2796     		    END;
U   5	   2797     		END;
U   5	   2798 	    END
U   5	   2799 	ELSE
U   5	   2800 	    SELECTONE XRST$GET_FILE( .iob, value ) OF	! Read one character from the data file
U   5	   2801 		SET					! and process any error completion code.
U   5	   2802 
U   5	   2803 		[ XPO$_END_FILE ] :			! End-of-file:
U   5	   2804 		    IF .iob[IOB$H_STRING] EQL 0		!    If no data has been read,
U   5	   2805 		    THEN				!
U   5	   2806 			LEAVE READ_BLOCK		!    jump to EOF processing.
U   5	   2807 		    ELSE				!
U   5	   2808 			BEGIN				!    Otherwise,
U   5	   2809 			iob[IOB$V_EOF] = yes;		!    turn on the EOF indicator
U   5	   2810 			EXITLOOP;			!    and exit the character read loop.
U   5	   2811 			END;
U   5	   2812 
U   5	   2813 		[ XPO$_NORMAL ] :			! Successful return:
U   5	   2814 		    XPO$_NORMAL;			!    Just fall out of 'SELECTONE'
U   5	   2815 
U   5	   2816 		[ OTHERWISE ] :				! All other error conditions:
U   5	   2817 		    $XPO_QUIT();			!    Return error codes to the caller.
U   5	   2818 
U   5	   2819 		TES;
U   5	   2820 
U   5	   2821 	CH$WCHAR_A( .value, buffer_pointer );		! Move one character into the buffer
U   5	   2822 	iob[IOB$H_STRING] = .iob[IOB$H_STRING] + 1;	! and increment the data length.
U   5	   2823 	END;
U   5	   2824 
U   5	   2825 !
U   5	   2826 ! Calculate the number of fullwords of binary data which have been read.
U   5	   2827 !
U   5	   2828 

XGET                            RSTS/E Stream-mode and Binary-m  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 61
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2829     IF .iob[IOB$V_BINARY]				! If this is a binary read,
U   5	   2830     THEN						!
U   5	   2831 	iob[IOB$H_FULLWORDS] =				! calculate the number of complete BLISS fullwords read.
U   5	   2832 			.iob[IOB$H_UNITS] / %UPVAL;
U   5	   2833 
U   5	   2834 !
U   5	   2835 ! Check for a truncated input request.
U   5	   2836 !
U   5	   2837 
U   5	   2838     IF .iob[IOB$H_STRING] LSS .req_length		! If not enough data was read,
U   5	   2839     THEN						!
U   5	   2840 	$XPO_QUIT( INCOMPLETE )				! return a non-standard success code to the caller.
U   5	   2841     ELSE
U   5	   2842 	$XPO_QUIT();					! Otherwise, return the current success code to the caller.
U   5	   2843 
U   5	   2844     END;						! End of RSTS/E input processing.
U   5	   2845 
U   5	   2846 !+
U   5	   2847 !
U   5	   2848 !	End of RSTS/E GET Processing
U   5	   2849 !
U   5	   2850 !-
U   5	   2851 
U   5	   2852 %FI

XGET                            RT-11 Record-mode GET            4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 62
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   2854 %TITLE 'RT-11 Record-mode GET'
    5	   2855 %IF $RT11 %THEN
U   5	   2856 
U   5	   2857 !+
U   5	   2858 !
U   5	   2859 !	RT-11 Record-mode GET Processing for File and Terminal.
U   5	   2860 !
U   5	   2861 !	Note that the following section is very similar to TOPS-10
U   5	   2862 !	record-mode GET processing for file and terminal.
U   5	   2863 
U   5	   2864 !-
U   5	   2865 
U   5	   2866     IF .iob[IOB$V_RECORD]				! If this a record-mode character file,
U   5	   2867 
U   5	   2868     THEN						! execute the following block.
U   5	   2869 	BEGIN
U   5	   2870 
U   5	   2871 !
U   5	   2872 ! Allocate a buffer if we haven't already.
U   5	   2873 !
U   5	   2874 
U   5	   2875         IF .iob[max_string_len] EQL 0
U   5	   2876         THEN
U   5	   2877 	    BEGIN
U   5	   2878 	    $XPO_IF_NOT( $XPO_GET_MEM(			! Allocate a buffer.
U   5	   2879 				CHARACTERS = buffer_length,
U   5	   2880 				DESCRIPTOR = iob[IOB$T_STRING],
U   5	   2881 				FAILURE = 0 ) )
U   5	   2882 	    THEN
U   5	   2883 	        $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );	! Report any errors.
U   5	   2884 	    END;
U   5	   2885 
U   5	   2886 !
U   5	   2887 ! Indicate that no data has been read into the XPORT input buffer.
U   5	   2888 !
U   5	   2889 
U   5	   2890 	iob[IOB$H_STRING] = 0;				! Indicate that no data has been read.
U   5	   2891 
U   5	   2892 !
U   5	   2893 ! Process any page or sequence number information in the record.
U   5	   2894 !
U   5	   2895 
U   5	   2896 	iob[IOB$G_SEQ_NUMB] =				! Simply increment the input record count.
U   5	   2897 		.iob[IOB$G_SEQ_NUMB] + 1;
U   5	   2898 
U   5	   2899 !
U   5	   2900 ! Move a single record into the local input buffer.
U   5	   2901 !
U   5	   2902 
U   5	   2903 	buffer_pointer = .iob[IOB$A_STRING];		! Setup the local input buffer pointer.
U   5	   2904 
U   5	   2905 	WHILE 1 DO					! Fill the input buffer a character at a time.
U   5	   2906 	    BEGIN
U   5	   2907 	    IF .iob[IOB$V_TERMINAL]			! If this is a terminal file,
U   5	   2908 	    THEN					! read one character from the user's terminal
U   5	   2909 	        BEGIN					!
U   5	   2910 		$TTYIN( value );			! in record mode (wait for end-of-line).

XGET                            RT-11 Record-mode GET            4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 63
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2911     	        IF .value EQL ctrl_z			! If the character is a ^Z,
U   5	   2912 	        THEN					!
U   5	   2913 		    BEGIN				!
U   5	   2914 		    $PRINT(				! echo a CR/LF
U   5	   2915 		    UPLIT( %STRING(%CHAR(cr,lf,0)) ) );	!
U   5	   2916 							!
U   5	   2917 		    IF .iob[IOB$H_STRING] EQL 0		!
U   5	   2918 		    THEN				! and jump to EOF processing if it is the
U   5	   2919 		        LEAVE READ_BLOCK		! first character on the line
U   5	   2920 		    ELSE				!
U   5	   2921 		        BEGIN				!
U   5	   2922 		        iob[IOB$V_EOF] = yes;		! or turn on the EOF indicator
U   5	   2923 		        EXITLOOP;			! and then exit the terminal read loop.
U   5	   2924 		        END;
U   5	   2925 		    END;
U   5	   2926 		END;
U   5	   2927 
U   5	   2928 	    IF NOT .iob[IOB$V_TERMINAL]			! Here if working with files.
U   5	   2929 	    THEN
U   5	   2930 		BEGIN
U   5	   2931 		SELECTONE XRT$GET_FILE(.iob,value) OF	! Otherwise, read one character from the data file
U   5	   2932 		    SET					! and process any error completion code.
U   5	   2933 		    [ XPO$_END_FILE ] :			! End-of-file:
U   5	   2934 			IF .iob[IOB$H_STRING] EQL 0	!    If no data has been read,
U   5	   2935 			THEN				!
U   5	   2936 			    LEAVE READ_BLOCK		!    jump to EOF processing.
U   5	   2937 			ELSE				!
U   5	   2938 			    BEGIN			!    Otherwise,
U   5	   2939 			    iob[IOB$V_EOF] = yes;	!    turn on the EOF indicator
U   5	   2940 			    EXITLOOP;			!    and exit the character read loop.
U   5	   2941 			    END;
U   5	   2942 
U   5	   2943 		    [ XPO$_NORMAL ] :			! Successful return:
U   5	   2944 			XPO$_NORMAL;			!    Just fall out of 'SELECTONE'
U   5	   2945 
U   5	   2946 		    [ OTHERWISE ] :			! All other error conditions:
U   5	   2947 			$XPO_QUIT();			!    Return to caller with the preset completion code.
U   5	   2948 
U   5	   2949 		    TES;
U   5	   2950 		END;
U   5	   2951 
U   5	   2952 	    IF .value EQL lf				! If the character is a line feed,
U   5	   2953 	    THEN					!
U   5	   2954 		EXITLOOP;				! exit the read loop.
U   5	   2955 
U   5	   2956 
U   5	   2957 	    IF .iob[IOB$H_STRING] GTR 0 OR		! If a non-null character has been found
U   5	   2958 		.value NEQ null				!
U   5	   2959 	    THEN					!
U   5	   2960 		BEGIN					! put it into the XPORT input buffer.
U   5	   2961 
U   5	   2962 		IF .iob[IOB$H_STRING] GEQ		! If the XPORT input buffer is full,
U   5	   2963 				.iob[max_string_len]	!
U   5	   2964 		THEN					!
U   5	   2965 		    BEGIN				!
U   5	   2966 		    $XPO_IF_NOT( $XPO_GET_MEM(		! allocate a larger input buffer.
U   5	   2967 					CHARACTERS = (.iob[max_string_len] + buffer_length),

XGET                            RT-11 Record-mode GET            4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 64
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   2968 					RESULT = new_buffer,
U   5	   2969 					FAILURE = 0 ) )
U   5	   2970 		    THEN
U   5	   2971 			$XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	   2972 
U   5	   2973 		    buffer_pointer =			! Copy the current input data into the new buffer.
U   5	   2974 			CH$MOVE( .iob[IOB$H_STRING],
U   5	   2975 				.iob[IOB$A_STRING],
U   5	   2976 				.new_buffer );
U   5	   2977 
U   5	   2978 		    $XPO_FREE_QUIT(			! Free the original input buffer
U   5	   2979 			STRING = (.iob[IOB$H_STRING],	! but don't zero the descriptor length fields.
U   5	   2980 				.iob[IOB$A_STRING]) );
U   5	   2981 
U   5	   2982 							! Update the XPORT input buffer descriptor:
U   5	   2983 		    iob[IOB$A_STRING] = .new_buffer;	!    pointer to input buffer
U   5	   2984 		    iob[max_string_len] =		!    length of the input buffer
U   5	   2985 			.iob[max_string_len] + buffer_length;
U   5	   2986 		    END;
U   5	   2987 
U   5	   2988 		CH$WCHAR_A( .value, buffer_pointer );	! Put the new character into the XPORT input buffer
U   5	   2989 		iob[IOB$H_STRING] =			! and increment the input record length.
U   5	   2990 		    .iob[IOB$H_STRING] + 1;
U   5	   2991 		END;
U   5	   2992 	    END;
U   5	   2993 
U   5	   2994 !
U   5	   2995 ! Remove any control characters from the end of the record.
U   5	   2996 !
U   5	   2997 
U   5	   2998 	buffer_pointer = CH$PLUS( .iob[IOB$A_STRING],	! Point past the last input character.
U   5	   2999 				.iob[IOB$H_STRING] );
U   5	   3000 
U   5	   3001 	WHILE .iob[IOB$H_STRING] GTR 0 DO		! Loop to remove control characters from
U   5	   3002 	    BEGIN					! the end of the input record.
U   5	   3003 
U   5	   3004 	    buffer_pointer =				! Decrement the buffer pointer.
U   5	   3005 		CH$PLUS( .buffer_pointer, -1 );
U   5	   3006 
U   5	   3007 	    value = CH$RCHAR( .buffer_pointer );	! Pickup the last character in the record.
U   5	   3008 
U   5	   3009 	    IF .value EQL cr				! If the character is a carriage return,
U   5	   3010 	    THEN					!
U   5	   3011 		iob[IOB$H_STRING] =			! decrement the record length.
U   5	   3012 			.iob[IOB$H_STRING] - 1
U   5	   3013 	    ELSE
U   5	   3014 		EXITLOOP;				! Otherwise, exit this cleanup loop.
U   5	   3015 	    END;
U   5	   3016 
U   5	   3017 	$XPO_QUIT();					! Return the current success code to the caller.
U   5	   3018 	END;
U   5	   3019 %FI

XGET                            RT-11 Stream-mode and Binary-mo  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 65
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   3021 %TITLE 'RT-11 Stream-mode and Binary-mode GET'
    5	   3022 %IF $RT11 %THEN
U   5	   3023 
U   5	   3024 !+
U   5	   3025 !
U   5	   3026 !	RT-11 Stream-mode and Binary-mode GET Processing
U   5	   3027 !
U   5	   3028 !	Note that the following section depends on IOB$T_STRING and IOB$T_DATA
U   5	   3029 !	being the same actual IOB fields and resembles TOPS-10/TOPS-20 GET processing.
U   5	   3030 !
U   5	   3031 !-
U   5	   3032 
U   5	   3033 !
U   5	   3034 ! Indicate that no data has been read into the XPORT input buffer.
U   5	   3035 !
U   5	   3036 
U   5	   3037     iob[IOB$H_STRING] = 0;				! Indicate that no data has been read.
U   5	   3038 
U   5	   3039 !
U   5	   3040 ! Allocate a new input buffer if the current buffer is too small.
U   5	   3041 !
U   5	   3042 
U   5	   3043     IF .req_length GTR .iob[max_string_len]		! If the current input buffer is too small,
U   5	   3044     THEN						!
U   5	   3045 	BEGIN						!
U   5	   3046 	$XPO_FREE_QUIT( STRING = iob[IOB$T_STRING] );	! free the buffer.
U   5	   3047 
U   5	   3048 	$XPO_IF_NOT( $XPO_GET_MEM(			! Allocate a new input buffer.
U   5	   3049 			    UNITS = .req_length,
U   5	   3050 			    RESULT = new_buffer,
U   5	   3051 			    FAILURE = 0 ) )
U   5	   3052 	THEN
U   5	   3053 	    $XPO_QUIT( GET_MEM, (.$XPO_STATUS) );
U   5	   3054 
U   5	   3055 							! Update the input data descriptor:
U   5	   3056 	iob[IOB$A_STRING] = .new_buffer;		!    new input buffer pointer/address
U   5	   3057 	iob[max_string_len] = .req_length;		!    length of the new input buffer
U   5	   3058 	END;
U   5	   3059 
U   5	   3060 !
U   5	   3061 ! Setup a local pointer to the input buffer.
U   5	   3062 !
U   5	   3063 
U   5	   3064     buffer_pointer = .iob[IOB$A_STRING];		! Pickup the buffer pointer.
U   5	   3065 
U   5	   3066 !
U   5	   3067 ! Set the special mode TT bit for terminal files.
U   5	   3068 !
U   5	   3069 
U   5	   3070     IF .iob[IOB$V_TERMINAL]
U   5	   3071     THEN
U   5	   3072 	RT_JSW_STT = yes;
U   5	   3073 
U   5	   3074 !
U   5	   3075 ! Fill the input buffer one character/value at a time.
U   5	   3076 !
U   5	   3077 

XGET                            RT-11 Stream-mode and Binary-mo  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 66
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   3078     INCR count FROM 1 TO .req_length DO			! Fill the buffer one character/value at a time.
U   5	   3079 	BEGIN
U   5	   3080 	IF .iob[IOB$V_TERMINAL]				! If this is a terminal file,
U   5	   3081 	THEN						!
U   5	   3082 	    BEGIN					!
U   5	   3083 	    $TTYIN( value );				! read one character from the terminal
U   5	   3084 	    $TTYOUT( value );				! and echo the character.
U   5	   3085 	    IF .value EQL ctrl_z			! If a ^Z is read from the terminal,
U   5	   3086 	    THEN					!
U   5	   3087 		BEGIN					!
U   5	   3088 		$PRINT(					! echo a CR/LF
U   5	   3089 		    UPLIT( %STRING(%CHAR(cr,lf,0)) ) );	!
U   5	   3090 							!
U   5	   3091 		IF .iob[IOB$H_STRING] EQL 0		!
U   5	   3092 		THEN					! and jump to EOF processing if it is the
U   5	   3093 		    LEAVE READ_BLOCK			! first character read
U   5	   3094 		ELSE					!
U   5	   3095 		    BEGIN				!
U   5	   3096 		    iob[IOB$V_EOF] = yes;		! or turn on the EOF indicator
U   5	   3097 		    EXITLOOP;				! and then exit the terminal read loop.
U   5	   3098 		    END;
U   5	   3099 		END;
U   5	   3100 	    END
U   5	   3101 	ELSE
U   5	   3102 	    SELECTONE XRT$GET_FILE( .iob, value ) OF	! Read one character from the data file
U   5	   3103 		SET					! and process any error completion code.
U   5	   3104 
U   5	   3105 		[ XPO$_END_FILE ] :			! End-of-file:
U   5	   3106 		    IF .iob[IOB$H_STRING] EQL 0		!    If no data has been read,
U   5	   3107 		    THEN				!
U   5	   3108 			LEAVE READ_BLOCK		!    jump to EOF processing.
U   5	   3109 		    ELSE				!
U   5	   3110 			BEGIN				!    Otherwise,
U   5	   3111 			iob[IOB$V_EOF] = yes;		!    turn on the EOF indicator
U   5	   3112 			EXITLOOP;			!    and exit the character read loop.
U   5	   3113 			END;
U   5	   3114 
U   5	   3115 		[ XPO$_NORMAL ] :			! Successful return:
U   5	   3116 		    XPO$_NORMAL;			!    Just fall out of 'SELECTONE'
U   5	   3117 
U   5	   3118 		[ OTHERWISE ] :				! All other error conditions:
U   5	   3119 		    $XPO_QUIT();			!    Return error codes to the caller.
U   5	   3120 
U   5	   3121 		TES;
U   5	   3122 
U   5	   3123 	CH$WCHAR_A( .value, buffer_pointer );		! Move one character into the buffer
U   5	   3124 	iob[IOB$H_STRING] = .iob[IOB$H_STRING] + 1;	! and increment the data length.
U   5	   3125 	END;
U   5	   3126 
U   5	   3127 !
U   5	   3128 ! Calculate the number of fullwords of binary data which have been read.
U   5	   3129 !
U   5	   3130 
U   5	   3131     IF .iob[IOB$V_BINARY]				! If this is a binary read,
U   5	   3132     THEN						!
U   5	   3133 	iob[IOB$H_FULLWORDS] =				! calculate the number of complete BLISS fullwords read.
U   5	   3134 			.iob[IOB$H_UNITS] / %UPVAL;

XGET                            RT-11 Stream-mode and Binary-mo  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 67
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

U   5	   3135 
U   5	   3136 !
U   5	   3137 ! Check for a truncated input request.
U   5	   3138 !
U   5	   3139 
U   5	   3140     IF .iob[IOB$H_STRING] LSS .req_length		! If not enough data was read,
U   5	   3141     THEN						!
U   5	   3142 	$XPO_QUIT( INCOMPLETE )				! return a non-standard success code to the caller.
U   5	   3143     ELSE
U   5	   3144 	$XPO_QUIT();					! Otherwise, return the current success code to the caller.
U   5	   3145 
U   5	   3146     END;						! End of RT-11 input processing.
U   5	   3147 
U   5	   3148 !+
U   5	   3149 !
U   5	   3150 !	End of RT-11 GET Processing
U   5	   3151 !
U   5	   3152 !-
U   5	   3153 
U   5	   3154 %FI

XGET                            XPO$GET - Common End-of-File Pr  4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 68
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    5	   3156 %TITLE 'XPO$GET - Common End-of-File Processing'
    5	   3157 
    5	   3158 !+
    5	   3159 !
    5	   3160 !	Continuation of system-independent file input processing
    5	   3161 !
    5	   3162 !-
    5	   3163 
    5	   3164 	    END;					! End of READ_BLOCK block
    4	   3165 
    4	   3166 !
    4	   3167 ! Input end-of-file processing.
    4	   3168 !
    4	   3169 
    4	   3170 	iob[IOB$V_EOF] = yes;				! Indicate end-of-file has been reached.
    4	   3171 
    4	   3172 	BEGIN
    5	   3173 	BIND
    5	   3174 	    concat = iob[IOB$T_CONCAT] :  $STR_DESCRIPTOR( CLASS = DYNAMIC_BOUNDED );
    5	   3175 
    5	   3176 	IF NOT .iob[IOB$V_CONC_SPEC] OR			! If there was no input concatenation
    5	   3177 	    .concat[STR$H_LENGTH] +			! or the last concatenated file has already been read,
    5	   3178 		.concat[STR$H_PFXLEN] GEQ		!
    5	   3179 				.concat[STR$H_MAXLEN]	!
    5	   3180 	THEN						!
    5	   3181 	    $XPO_QUIT( END_FILE );			! return a warning failure code to the caller.
    5	   3182 	END;
    4	   3183 
    4	   3184 !
    4	   3185 ! Automatic input concatenation at end-of-file.
    4	   3186 !
    4	   3187 
    4	   3188 	iob[IOB$V_AUTO_CONC] = yes;			! Indicate that input switching is in progress so
    4	   3189 							! that XPO$CLOSE will not reset vital IOB information.
    4	   3190 
    4	   3191 	IF NOT XPO$CLOSE( .iob, 0, 0 )			! If the current file cannot be closed,
    4	   3192 	THEN						!
    4	   3193 	    $XPO_QUIT();				! jump to XPO$GET termination.
    4	   3194 
    4	   3195 	IF NOT XPO$OPEN( .iob, 0, 0 )			! If the next input file cannot be opened,
    4	   3196 	THEN						!
    4	   3197 	    $XPO_QUIT();				! jump to XPO$GET termination.
    4	   3198 
    4	   3199 							! Otherwise, if the open was successful,
    4	   3200 	iob[IOB$V_AUTO_CONC] = no;			! turn off the input switching indicator,
    4	   3201 							!
    4	   3202 	iob[IOB$G_COMP_CODE] = XPO$_NEW_FILE;		! setup the success completion code for the
    4	   3203 							! first get operation on the new file,
    4	   3204 							!
    4	   3205 	END;						! and then loop back to attempt reading the new file.

XGET                            XPO$GET - Routine Termination    4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 69
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

    3	   3207 %TITLE 'XPO$GET - Routine Termination'
    3	   3208 
    3	   3209 !+
    3	   3210 !
    3	   3211 ! XPORT routine termination.
    3	   3212 !
    3	   3213 !-
    3	   3214 
    3	   3215     $XPO_MAIN_END;					! End of MAIN_BLOCK code block
    2	   3216 
    2	   3217 !
    2	   3218 ! Call an appropriate action routine.
    2	   3219 !
    2	   3220 
    2	   3221     $XPO_ACTION_RTN( .iob );
    2	   3222 
    2	   3223 !
    2	   3224 ! Cleanup the IOB after a GET failure.
    2	   3225 !
    2	   3226 
    2	   3227     IF NOT .iob[IOB$G_COMP_CODE]			! If the GET operation failed,
    2	   3228     THEN						!
    2	   3229 	iob[IOB$V_AUTO_CONC] = no;			! turn off auto-concatenation so CLOSE can perform
    2	   3230 							! standard IOB cleanup.
    2	   3231 %IF $RT11 %THEN
U   2	   3232     IF .iob[IOB$V_TERMINAL]				! Set the terminal characteristics to their orignal state.
U   2	   3233     THEN
U   2	   3234 	BEGIN
U   2	   3235 	RT_JSW_LC = .lower_case_bit;
U   2	   3236 	RT_JSW_STT = .special_mode;
U   2	   3237 	END;
U   2	   3238 %FI
    2	   3239 
    2	   3240 !
    2	   3241 ! Return to the caller.
    2	   3242 !
    2	   3243 
    2	   3244     RETURN .iob[IOB$G_COMP_CODE]			! Return the IOB completion code to the caller.
    2	   3245 
    2	   3246     END;
    1	   3247 END
    1	   3248 ELUDOM

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 70
X1.2-26                                                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

				      .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC
				      .proc   XPO$GET
				      .align 32
				      .global  XPO$GET
			XPO$GET:											   // 000203
			   { .mmi 
0119E8C00300     0000		      adds    r12 = -384, r12 ;;
010818C00380     0001		      adds    r14 = 384, r12
000008000000     0002		      nop.i   0 ;;
			   }
			   { .mii 
002C058C1D80     0010		      alloc   r118 = rspfs, 3, 85, 8, 0
0000B2000A00     0011		      sxt4    r40 = IOB				// r40 = r32				   // 000285
000188001D40     0012		      mov     r117 = br0 ;;								   // 000203
			   }
			   { .mmi 
00ACC0E02200     0020		      st8     [r14] = r1, 8
00A042848200     0021		      ld2     r8 = [r40], 36								   // 000300
000198001DC0     0022		      mov     r119 = pr ;;								   // 000203
			   }
			   { .mii 
00B08A8B80C0     0030		      ld4     r3 = [r40], -36								   // 000285
01CC0087A1C0     0031		      cmp4.eq pr7, pr0 = 61, r8 ;;							   // 000300
0000B0300A40     0032		      sxt4    r41 = r3									   // 000285
			   }
			   { .mfb 
000008000000     0040		      nop.m   0
000008000000     0041		      nop.f   0
00860000A007     0042	       (pr7)  br.cond.dpnt.few L$5								   // 000300
			   }
			   { .mii 
01080A8B0280     0050		      adds    r10 = 216, r40
01080A8B8440     0051		      adds    r17 = 220, r40
000008000000     0052		      nop.i   0
			   }
			   { .mlx 
000008000000     0060		      nop.m   0
800000000000     0061		      movl    r9 = 2146308 ;;
0198004104
			   }
			   { .mlx 
008C80A12000     0070		      st4     [r10] = r9
800000000000     0071		      movl    r11 = 2138210 ;;
0194005885
			   }
			   { .mfb 
008C81116000     0080		      st4     [r17] = r11
000008000000     0081		      nop.f   0
008000490000     0082		      br.sptk.few L$6 ;;
			   }
	         0090	L$5:
			   { .mlx 
010802860A00     0090		      adds    r40 = 48, r40								   // 000309
800000000000     0091		      movl    r21 = 2129921 ;;								   // 000303
019000404A
			   }
			   { .mii 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 71
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

008082800480     00A0		      ld4     r18 = [r40]								   // 000309
01080A858500     00A1		      adds    r20 = 172, r40								   // 000300
01080A850580     00A2		      adds    r22 = 168, r40								   // 000303
			   }
			   { .mmi 
0119FA8A0A00     00B0		      adds    r40 = -48, r40 ;;
008C81400000     00B1		      st4     [r20] = r0								   // 000300
00A4012404C0     00B2		      extr.u  r19 = r18, 16, 1 ;;							   // 000309
			   }
			   { .mib 
008C8162A000     00C0		      st4     [r22] = r21								   // 000303
00A041300240     00C1		      tbit.z  pr9, pr8 = r19, 0								   // 000309
008600006008     00C2	       (pr8)  br.cond.dpnt.few L$7
			   }
			   { .mlx 
01080A8B0600     00D0		      adds    r24 = 216, r40								   // 000311
800000000000     00D1		      movl    r23 = 2138586 ;;
019430568B
			   }
			   { .mfb 
008C8182E000     00E0		      st4     [r24] = r23
000008000000     00E1		      nop.f   0
008000484000     00E2		      br.sptk.few L$6 ;;
			   }
	         00F0	L$7:												   // 000309
			   { .mmi 
010802858A00     00F0		      adds    r40 = 44, r40 ;;								   // 000313
00B08A8A8640     00F1		      ld4     r25 = [r40], -44
000008000000     00F2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0100		      nop.m   0
00A401940640     0101		      extr.u  r25 = r25, 16, 1 ;;
00A0519002C0     0102		      tbit.z  pr11, pr10 = r25, 0
			   }
			   { .mfb 
000008000000     0110		      nop.m   0
000008000000     0111		      nop.f   0
00860000600A     0112	       (pr10) br.cond.dpnt.few L$9
			   }
			   { .mlx 
01080A8B06C0     0120		      adds    r27 = 216, r40								   // 000315
000000000000     0121		      movl    r26 = 2138570 ;;
019430528D
			   }
			   { .mfb 
008C81B34000     0130		      st4     [r27] = r26
000008000000     0131		      nop.f   0
00800047A000     0132		      br.sptk.few L$6 ;;
			   }
	         0140	L$9:												   // 000313
			   { .mii 
000008000000     0140		      nop.m   0
00A40120C700     0141		      extr.u  r28 = r18, 3, 1 ;;							   // 000317
00A061C00340     0142		      tbit.z  pr13, pr12 = r28, 0 ;;
			   }
			   { .mib 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 72
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

01C0000013CD     0150	       (pr13) cmp.eq.unc pr15, pr0 = r0, r0
01C00000138C     0151	       (pr12) cmp.eq.unc pr14, pr0 = r0, r0
00860000E00E     0152	       (pr14) br.cond.dpnt.few L$17
			   }
			   { .mmi 
010802868A00     0160		      adds    r40 = 52, r40 ;;								   // 000318
00B04A898740     0161		      ld2     r29 = [r40], -52
000008000000     0162		      nop.i   0 ;;
			   }
			   { .mfb 
018C01D001C0     0170		      cmp4.lt pr7, pr0 = 0, r29
000008000000     0171		      nop.f   0
00860000A007     0172	       (pr7)  br.cond.dpnt.few L$17
			   }
			   { .mii 
01080A8B07C0     0180		      adds    r31 = 216, r40								   // 000320
01080A8B8AC0     0181		      adds    r43 = 220, r40
000008000000     0182		      nop.i   0
			   }
			   { .mlx 
000008000000     0190		      nop.m   0
000000000000     0191		      movl    r30 = 2138266 ;;
019410468F
			   }
			   { .mlx 
008C81F3C000     01A0		      st4     [r31] = r30
000000000000     01A1		      movl    r42 = 2138210 ;;
0194005895
			   }
			   { .mfb 
008C82B54000     01B0		      st4     [r43] = r42
000008000000     01B1		      nop.f   0
00800046A000     01B2		      br.sptk.few L$6 ;;
			   }
	         01C0	L$17:												   // 000317
			   { .mfb 
000008000000     01C0		      nop.m   0
000008000000     01C1		      nop.f   0
00860000600F     01C2	       (pr15) br.cond.dpnt.few L$20								   // 000322
			   }
			   { .mmi 
01080286CA00     01D0		      adds    r40 = 54, r40 ;;								   // 000323
00B00A894B00     01D1		      ld1     r44 = [r40], -54
000008000000     01D2		      nop.i   0 ;;
			   }
			   { .mfb 
01CC42C1C000     01E0		      cmp4.eq pr0, pr8 = 14, r44							   // 000324
000008000000     01E1		      nop.f   0
008600014008     01E2	       (pr8)  br.cond.dpnt.few L$37
			   }
	         01F0	L$20:
			   { .mii 
000008000000     01F0		      nop.m   0
00A401208B40     01F1		      extr.u  r45 = r18, 2, 1 ;;							   // 000325
00A052D002C0     01F2		      tbit.z  pr11, pr10 = r45, 0
			   }
			   { .mfb 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 73
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     0200		      nop.m   0
000008000000     0201		      nop.f   0
00860000600B     0202	       (pr11) br.cond.dpnt.few L$25
			   }
			   { .mmi 
01080286CA00     0210		      adds    r40 = 54, r40 ;;								   // 000326
00B00A894B80     0211		      ld1     r46 = [r40], -54
000008000000     0212		      nop.i   0 ;;
			   }
			   { .mfb 
01CC62E1C000     0220		      cmp4.eq pr0, pr12 = 14, r46							   // 000327
000008000000     0221		      nop.f   0
00860000C00C     0222	       (pr12) br.cond.dpnt.few L$37
			   }
	         0230	L$25:
			   { .mii 
000008000000     0230		      nop.m   0
00A401200BC0     0231		      extr.u  r47 = r18, 0, 1								   // 000328
00A401204480     0232		      extr.u  r18 = r18, 1, 1 ;;
			   }
			   { .mii 
010162F02BC0     0240		      and     r47 = 1, r47
010161202480     0241		      and     r18 = 1, r18 ;;
01007125E480     0242		      or      r18 = r47, r18 ;;
			   }
			   { .mfb 
01C401200380     0250		      cmp4.eq pr14, pr0 = r0, r18
000008000000     0251		      nop.f   0
00860000E00E     0252	       (pr14) br.cond.dpnt.few L$38
			   }
			   { .mmi 
01080286CA00     0260		      adds    r40 = 54, r40 ;;								   // 000329
00B00A894C00     0261		      ld1     r48 = [r40], -54
000008000000     0262		      nop.i   0 ;;
			   }
			   { .mfb 
01CC030041C0     0270		      cmp4.eq pr7, pr0 = 2, r48								   // 000330
000008000000     0271		      nop.f   0
00860000A007     0272	       (pr7)  br.cond.dpnt.few L$38
			   }
	         0280	L$37:												   // 000322
			   { .mii 
01080A8B0C80     0280		      adds    r50 = 216, r40								   // 000332
01080A8B8D00     0281		      adds    r52 = 220, r40
000008000000     0282		      nop.i   0
			   }
			   { .mlx 
000008000000     0290		      nop.m   0
800000000000     0291		      movl    r49 = 2138266 ;;
0194104698
			   }
			   { .mlx 
008C83262000     02A0		      st4     [r50] = r49
800000000000     02A1		      movl    r51 = 2138186 ;;
0194005299
			   }
			   { .mfb 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 74
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

008C83466000     02B0		      st4     [r52] = r51
000008000000     02B1		      nop.f   0
00800044A000     02B2		      br.sptk.few L$6 ;;
			   }
	         02C0	L$38:												   // 000334
			   { .mib 
012000002640     02C0		      mov     r25 = 1
0000B2901E00     02C1		      sxt4    r120 = r41
00A000001000     02C2		      br.call.sptk.many br0 = XST$VALIDATE
			   }
			   { .mib 
010818C00380     02D0		      adds    r14 = 384, r12
00A0308001C0     02D1		      tbit.z  pr7, pr6 = $STR$STATUS, 0		// pr7, pr6 = r8, 0
004000000000     02D2		      nop.b   0 ;;
			   }
			   { .mfb 
0080C0E00040     02E0		      ld8     r1 = [r14]
000008000000     02E1		      nop.f   0
008600008006     02E2	       (pr6)  br.cond.dpnt.few L$39
			   }
			   { .mii 
01080A8B0D80     02F0		      adds    r54 = 216, r40
01080A8B8DC0     02F1		      adds    r55 = 220, r40
000008000000     02F2		      nop.i   0
			   }
			   { .mlx 
000008000000     0300		      nop.m   0
800000000000     0301		      movl    r53 = 2138250 ;;
019410429A
			   }
			   { .mmb 
008C8366A000     0310		      st4     [r54] = r53
008C83710000     0311		      st4     [r55] = $STR$STATUS		// [r55] = r8
00800043E000     0312		      br.sptk.few L$6 ;;
			   }
	         0320	L$39:
			   { .mmi 
008042900E00     0320		      ld2     r56 = [r41] ;;								   // 000336
01C443800240     0321		      cmp4.eq pr9, pr8 = r0, r56
000008000000     0322		      nop.i   0
			   }
			   { .mfb 
000008000000     0330		      nop.m   0
000008000000     0331		      nop.f   0
008600014009     0332	       (pr9)  br.cond.dpnt.few L$43
			   }
			   { .mmi 
010802860A00     0340		      adds    r40 = 48, r40 ;;								   // 000337
00B08A8A0E40     0341		      ld4     r57 = [r40], -48
000008000000     0342		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     0350		      nop.m   0
00A403900E80     0351		      extr.u  r58 = r57, 0, 1
00A403904E40     0352		      extr.u  r57 = r57, 1, 1 ;;
			   }
			   { .mii 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 75
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

010163A02E80     0360		      and     r58 = 1, r58
010163902E40     0361		      and     r57 = 1, r57 ;;
010073974E40     0362		      or      r57 = r58, r57 ;;
			   }
			   { .mmi 
01C4539002C0     0370		      cmp4.eq pr11, pr10 = r0, r57 ;;
01C00000124B     0371	       (pr11) cmp.eq.unc pr9, pr0 = r0, r0							   // 000336
01C00000120A     0372	       (pr10) cmp.eq.unc pr8, pr0 = r0, r0
			   }
			   { .bbb 
008600002008     0380	       (pr8)  br.cond.dpnt.few L$42
004000000000     0381		      nop.b   0
00860000A009     0382	       (pr9)  br.cond.dpnt.few L$43
			   }
	         0390	L$42:
			   { .mii 
01080A8B0F00     0390		      adds    r60 = 216, r40								   // 000339
01080A8B8F80     0391		      adds    r62 = 220, r40
000008000000     0392		      nop.i   0
			   }
			   { .mlx 
000008000000     03A0		      nop.m   0
800000000000     03A1		      movl    r59 = 2138250 ;;
019410429D
			   }
			   { .mlx 
008C83C76000     03B0		      st4     [r60] = r59
800000000000     03B1		      movl    r61 = 2138330 ;;
019410569E
			   }
			   { .mfb 
008C83E7A000     03C0		      st4     [r62] = r61
000008000000     03C1		      nop.f   0
008000428000     03C2		      br.sptk.few L$6 ;;
			   }
	         03D0	L$43:												   // 000336
			   { .mmi 
0120080FEFC0     03D0		      mov     r63 = 255 ;;								   // 000341
01846387E000     03D1		      cmp4.lt pr0, pr12 = r63, r56
000008000000     03D2		      nop.i   0
			   }
			   { .mfb 
000008000000     03E0		      nop.m   0
000008000000     03E1		      nop.f   0
00860000A00C     03E2	       (pr12) br.cond.dpnt.few L$44
			   }
			   { .mii 
01080A8B1040     03F0		      adds    r65 = 216, r40								   // 000343
01080A8B90C0     03F1		      adds    r67 = 220, r40
000008000000     03F2		      nop.i   0
			   }
			   { .mlx 
000008000000     0400		      nop.m   0
000000000000     0401		      movl    r64 = 2138250 ;;
01941042A0
			   }
			   { .mlx 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 76
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

008C84180000     0410		      st4     [r65] = r64
000000000000     0411		      movl    r66 = 2138210 ;;
01940058A1
			   }
			   { .mfb 
008C84384000     0420		      st4     [r67] = r66
000008000000     0421		      nop.f   0
00800041C000     0422		      br.sptk.few L$6 ;;
			   }
	         0430	L$44:												   // 000350
			   { .mii 
012000101180     0430		      add     r70 = @ltoff($STR$STRING), r1						   // 001390
012000069140     0431		      mov     r69 = 52									   // 001149
010802860A00     0432		      adds    r40 = 48, r40								   // 000357
			   }
			   { .mlx 
012010001380     0440		      mov     r78 = 256									   // 001102
000000000008     0441		      movl    r76 = 34471936 ;;								   // 001156
0180070026
			   }
			   { .mlx 
0080C4601180     0450		      ld8     r70 = $STR$STRING			// r70 = [r70]				   // 001390
80000000000C     0451		      movl    r79 = 51249152								   // 001102
0180070027
			   }
			   { .mii 
00B08A8A1100     0460		      ld4     r68 = [r40], -48								   // 000357
0119F80FF2C0     0461		      adds    r75 = -1, r0								   // 001660
0128204F5280     0462		      addl    r74 = 98938, r0								   // 001699
			   }
			   { .mib 
01201001D200     0470		      mov     r72 = 270									   // 001460
010802069340     0471		      adds    r77 = 52, IOB			// r77 = 52, r32			   // 001149
004000000000     0472		      nop.b   0 ;;
			   }
			   { .mlx 
010004551240     0480		      add     r73 = r40, r69								   // 001516
800000000000     0481		      movl    r71 = 2129945 ;;								   // 003202
0190004663
			   }
	         0490	L$46:												   // 000350
			   { .mii 
000008000000     0490		      nop.m   0
00A404405440     0491		      extr.u  r81 = r68, 1, 1								   // 000358
00A404445400     0492		      extr.u  r80 = r68, 17, 1 ;;							   // 000357
			   }
			   { .mii 
000008000000     04A0		      nop.m   0
00A0351001C0     04A1		      tbit.z  pr7, pr6 = r81, 0								   // 000358
00A0750003C0     04A2		      tbit.z  pr15, pr14 = r80, 0 ;;							   // 000357
			   }
			   { .mii 
01C000001086     04B0	       (pr6)  cmp.eq.unc pr2, pr0 = r0, r0							   // 000358
01C0000010C7     04B1	       (pr7)  cmp.eq.unc pr3, pr0 = r0, r0 ;;
01C2700003C2     04B2	       (pr2)  cmp.eq.or.andcm pr15, pr14 = r0, r0
			   }
			   { .bbb 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 77
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

00860000200F     04C0	       (pr15) br.cond.dpnt.few L$47								   // 000357
004000000000     04C1		      nop.b   0
00860029E00E     04C2	       (pr14) br.cond.dpnt.few L$48
			   }
	         04D0	L$47:
			   { .mii 
000008000000     04D0		      nop.m   0
00A404451480     04D1		      extr.u  r82 = r68, 20, 1 ;;							   // 001078
00A0552002C0     04D2		      tbit.z  pr11, pr10 = r82, 0
			   }
			   { .mfb 
000008000000     04E0		      nop.m   0
000008000000     04E1		      nop.f   0
00860008A00B     04E2	       (pr11) br.cond.dpnt.few L$50
			   }
			   { .mii 
010800CB14C0     04F0		      adds    r83 = 88, r12								   // 001102
010800CB9500     04F1		      adds    r84 = 92, r12
010800CC1540     04F2		      adds    r85 = 96, r12 ;;
			   }
			   { .mii 
008C8539E000     0500		      st4     [r83] = r79
010808C014C0     0501		      adds    r83 = 128, r12
000008000000     0502		      nop.i   0 ;;
			   }
			   { .mmi 
008C854A6000     0510		      st4     [r84] = r83
008C8559C000     0511		      st4     [r85] = r78
000008000000     0512		      nop.i   0
			   }
			   { .mmi 
008042901540     0520		      ld2     r85 = [r41] ;;								   // 001104
018C45500000     0521		      cmp4.lt pr0, pr8 = 0, r85
000008000000     0522		      nop.i   0
			   }
			   { .mfb 
000008000000     0530		      nop.m   0
000008000000     0531		      nop.f   0
008600014008     0532	       (pr8)  br.cond.dpnt.few L$53
			   }
			   { .mii 
010800CB1580     0540		      adds    r86 = 88, r12								   // 001107
01200000A640     0541		      mov     r25 = 5
0000B0001F00     0542		      sxt4    r124 = r0
			   }
			   { .mii 
012400001E00     0550		      addl    r120 = 16384, r0
0000B0001EC0     0551		      sxt4    r123 = r0
0000B4601E40     0552		      sxt4    r121 = r70 ;;
			   }
			   { .mib 
000008000000     0560		      nop.m   0
0000B5601E80     0561		      sxt4    r122 = r86
00A000001000     0562		      br.call.sptk.many br0 = XST$COPY ;;
			   }
			   { .mii 
010818C00380     0570		      adds    r14 = 384, r12

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 78
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

01200000A640     0571		      mov     r25 = 5									   // 001110
0000B0001F00     0572		      sxt4    r124 = r0
			   }
			   { .mii 
012400001E00     0580		      addl    r120 = 16384, r0
0000B0001EC0     0581		      sxt4    r123 = r0
0000B5601E80     0582		      sxt4    r122 = r86 ;;
			   }
			   { .mib 
0080C0E00040     0590		      ld8     r1 = [r14]								   // 001107
0000B2901E40     0591		      sxt4    r121 = r41								   // 001110
004000000000     0592		      nop.b   0 ;;
			   }
			   { .mfb 
000008000000     05A0		      nop.m   0
000008000000     05A1		      nop.f   0
00A000001000     05A2		      br.call.sptk.many br0 = XST$APPEND
			   }
			   { .mib 
010818C00380     05B0		      adds    r14 = 384, r12
00A0308001C0     05B1		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
004000000000     05B2		      nop.b   0 ;;
			   }
			   { .mfb 
0080C0E00040     05C0		      ld8     r1 = [r14]
000008000000     05C1		      nop.f   0
0086002A8007     05C2	       (pr7)  br.cond.dpnt.few L$55
			   }
	         05D0	L$53:												   // 001104
			   { .mmi 
010802860A00     05D0		      adds    r40 = 48, r40 ;;								   // 001119
00B08A8A1600     05D1		      ld4     r88 = [r40], -48
000008000000     05D2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     05E0		      nop.m   0
00A40580D600     05E1		      extr.u  r88 = r88, 3, 1 ;;
00A045800240     05E2		      tbit.z  pr9, pr8 = r88, 0
			   }
			   { .mfb 
000008000000     05F0		      nop.m   0
000008000000     05F1		      nop.f   0
008600006009     05F2	       (pr9)  br.cond.dpnt.few L$57
			   }
			   { .mii 
0108000016C0     0600		      mov     r91 = r0									   // 001124
0120080FF680     0601		      mov     REQ_LENGTH = 255			// r90 = 255				   // 001123
01200006F640     0602		      mov     FUNCTION_CODE = 55		// r89 = 55				   // 001122
			   }
			   { .mfb 
000008000000     0610		      nop.m   0
000008000000     0611		      nop.f   0
008000006000     0612		      br.sptk.few L$58 ;;								   // 001119
			   }
	         0620	L$57:
			   { .mii 
010802868A00     0620		      adds    r40 = 52, r40								   // 001134

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 79
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

012000077640     0621		      mov     FUNCTION_CODE = 59		// r89 = 59				   // 001133
0119FC6F16C0     0622		      adds    r91 = -8, r70 ;;								   // 001135
			   }
			   { .mmi 
008042801680     0630		      ld2     REQ_LENGTH = [r40] ;;		// r90 = [r40]				   // 001134
00BC4A801300     0631		      st2     [r40] = r0, -52								   // 001137
000008000000     0632		      nop.i   0 ;;
			   }
	         0640	L$58:												   // 001119
			   { .mmi 
010802878A00     0640		      adds    r40 = 60, r40 ;;								   // 001144
00B04A889780     0641		      ld2     r94 = [r40], -60
000008000000     0642		      nop.i   0 ;;
			   }
			   { .mfb 
01845DABC000     0650		      cmp4.lt pr0, pr11 = r94, REQ_LENGTH	// pr0, pr11 = r94, r90
000008000000     0651		      nop.f   0
00860002400B     0652	       (pr11) br.cond.dpnt.few L$60
			   }
			   { .mii 
01200000A640     0660		      mov     r25 = 5									   // 001149
0000B0001F00     0661		      sxt4    r124 = r0
0000B0001EC0     0662		      sxt4    r123 = r0
			   }
			   { .mii 
0119F80FDE40     0670		      adds    r121 = -2, r0
0000B0001E80     0671		      sxt4    r122 = r0
0000B4D01E00     0672		      sxt4    r120 = r77
			   }
			   { .mfb 
000008000000     0680		      nop.m   0
000008000000     0681		      nop.f   0
00A000001000     0682		      br.call.sptk.many br0 = XPO$FREE_MEM
			   }
			   { .mii 
010818C00380     0690		      adds    r14 = 384, r12
00A0308001C0     0691		      tbit.z  pr7, pr6 = r8, 0
0108008017C0     0692		      mov     $XPO$STATUS = r8 ;;		// r95 = r8
			   }
			   { .mfb 
0080C0E00040     06A0		      ld8     r1 = [r14]
000008000000     06A1		      nop.f   0
008600292007     06A2	       (pr7)  br.cond.dpnt.few L$62
			   }
			   { .mii 
010800CA1800     06B0		      adds    r96 = 80, r12								   // 001156
010800CA9840     06B1		      adds    r97 = 84, r12
010800CA1880     06B2		      adds    r98 = 80, r12
			   }
			   { .mii 
01200000C640     06C0		      mov     r25 = 6
0000B0001F40     06C1		      sxt4    r125 = r0
0000B0001F00     06C2		      sxt4    r124 = r0 ;;
			   }
			   { .mii 
008C86098000     06D0		      st4     [r96] = r76
0119F80FFE80     06D1		      adds    r122 = -1, r0

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 80
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

0000B0001EC0     06D2		      sxt4    r123 = r0
			   }
			   { .mii 
008C86100000     06E0		      st4     [r97] = r0
0000B6201E40     06E1		      sxt4    r121 = r98
0000B5A01E00     06E2		      sxt4    r120 = REQ_LENGTH			// r120 = r90
			   }
			   { .mfb 
000008000000     06F0		      nop.m   0
000008000000     06F1		      nop.f   0
00A000001000     06F2		      br.call.sptk.many br0 = XPO$ALLOC_MEM
			   }
			   { .mii 
010818C00380     0700		      adds    r14 = 384, r12
00A0308001C0     0701		      tbit.z  pr7, pr6 = r8, 0
0108008018C0     0702		      mov     $XPO$STATUS = r8 ;;		// r99 = r8
			   }
			   { .mii 
0080C0E00040     0710		      ld8     r1 = [r14]
01C000001247     0711	       (pr7)  cmp.eq.unc pr9, pr0 = r0, r0
01C000001206     0712	       (pr6)  cmp.eq.unc pr8, pr0 = r0, r0
			   }
			   { .bbb 
008600002008     0720	       (pr8)  br.cond.dpnt.few L$63
004000000000     0721		      nop.b   0
008600006009     0722	       (pr9)  br.cond.dpnt.few L$64
			   }
	         0730	L$63:
			   { .mmi 
010800CA9900     0730		      adds    r100 = 84, r12 ;;
008086401900     0731		      ld4     r100 = [r100]
010802870A00     0732		      adds    r40 = 56, r40 ;;
			   }
			   { .mmi 
00BC8A8C9200     0740		      st4     [r40] = r100, -56 ;;
000008000000     0741		      nop.m   0
000008000000     0742		      nop.i   0
			   }
	         0750	L$64:
			   { .bbb 
008600002008     0750	       (pr8)  br.cond.dpnt.few L$65
004000000000     0751		      nop.b   0
008600282009     0752	       (pr9)  br.cond.dpnt.few L$66
			   }
	         0760	L$65:
			   { .mmi 
010802878A00     0760		      adds    r40 = 60, r40 ;;								   // 001160
00BC4A8B5100     0761		      st2     [r40] = REQ_LENGTH, -60		// [r40] = r90, -60
000008000000     0762		      nop.i   0
			   }
	         0770	L$60:												   // 001167
			   { .mii 
010800CD19C0     0770		      adds    r103 = 104, r12
012000002640     0771		      mov     r25 = 1 ;;
0000B6701E00     0772		      sxt4    r120 = r103
			   }
			   { .mfb 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 81
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     0780		      nop.m   0
000008000000     0781		      nop.f   0
00A000001000     0782		      br.call.sptk.many br0 = LIB$GET_EF
			   }
			   { .mii 
010818C00380     0790		      adds    r14 = 384, r12
00A0308001C0     0791		      tbit.z  pr7, pr6 = r8, 0
010800801A00     0792		      mov     $XPO$STATUS = r8 ;;		// r104 = r8
			   }
			   { .mfb 
0080C0E00040     07A0		      ld8     r1 = [r14]
000008000000     07A1		      nop.f   0
00860027E007     07A2	       (pr7)  br.cond.dpnt.few L$68
			   }
			   { .mii 
010800CB9B00     07B0		      adds    r108 = 92, r12								   // 001181
010800CB1AC0     07B1		      adds    r107 = 88, r12
01080A8E1A40     07B2		      adds    r105 = 240, r40
			   }
			   { .mmi 
010800CD1A80     07C0		      adds    r106 = 104, r12
010800C21B40     07C1		      adds    r109 = 16, r12
010800C31B80     07C2		      adds    r110 = 24, r12 ;;
			   }
			   { .mii 
008086C01B00     07D0		      ld4     r108 = [r108]
0000B5B016C0     07D1		      sxt4    r91 = r91
010800C41BC0     07D2		      adds    r111 = 32, r12
			   }
			   { .mmi 
008046B01AC0     07E0		      ld2     r107 = [r107]
008046901A40     07E1		      ld2     r105 = [r105]
010802870A00     07E2		      adds    r40 = 56, r40 ;;
			   }
			   { .mii 
008086A01A80     07F0		      ld4     r106 = [r106]
0000B6C01B00     07F1		      sxt4    r108 = r108
010800C51C00     07F2		      adds    r112 = 40, r12
			   }
			   { .mmi 
008CC6D00000     0800		      st8     [r109] = r0
00B08A891F80     0801		      ld4     r126 = [r40], -56
0000B6B01AC0     0802		      sxt4    r107 = r107
			   }
			   { .mii 
008CC6EB6000     0810		      st8     [r110] = r91
0000B5901E80     0811		      sxt4    r122 = FUNCTION_CODE		// r122 = r89
010800CE1640     0812		      adds    r89 = 112, r12 ;;
			   }
			   { .mii 
008CC6FD8000     0820		      st8     [r111] = r108
0000AE901A40     0821		      sxt2    r105 = r105
012000018640     0822		      mov     r25 = 12
			   }
			   { .mii 
008CC70D6000     0830		      st8     [r112] = r107
0000B5A01FC0     0831		      sxt4    r127 = REQ_LENGTH			// r127 = r90

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 82
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

0000B7E01F80     0832		      sxt4    r126 = r126
			   }
			   { .mii 
000008000000     0840		      nop.m   0
0000B0001F40     0841		      sxt4    r125 = r0
0000B0001F00     0842		      sxt4    r124 = r0 ;;
			   }
			   { .mii 
000008000000     0850		      nop.m   0
0000B5901EC0     0851		      sxt4    r123 = r89
0000B6901E40     0852		      sxt4    r121 = r105
			   }
			   { .mib 
000008000000     0860		      nop.m   0
0000B6A01E00     0861		      sxt4    r120 = r106
00A000001000     0862		      br.call.sptk.many br0 = SYS$QIOW ;;
			   }
			   { .mii 
010818C00380     0870		      adds    r14 = 384, r12
012000002640     0871		      mov     r25 = 1									   // 001183
0000B6701E00     0872		      sxt4    r120 = r103 ;;
			   }
			   { .mfi 
0080C0E00040     0880		      ld8     r1 = [r14]								   // 001181
000008000000     0881		      nop.f   0
000008000000     0882		      nop.i   0
			   }
			   { .mfi 
000008000000     0890		      nop.m   0
000008000000     0891		      nop.f   0
000008000000     0892		      nop.i   0 ;;
			   }
			   { .mfb 
000008000000     08A0		      nop.m   0
000008000000     08A1		      nop.f   0
00A000001000     08A2		      br.call.sptk.many br0 = LIB$FREE_EF						   // 001183
			   }
			   { .mii 
010818C00380     08B0		      adds    r14 = 384, r12
00A0308001C0     08B1		      tbit.z  pr7, pr6 = r8, 0
010800801C80     08B2		      mov     $XPO$STATUS = r8 ;;		// r114 = r8
			   }
			   { .mfb 
0080C0E00040     08C0		      ld8     r1 = [r14]
000008000000     08C1		      nop.f   0
008600260007     08C2	       (pr7)  br.cond.dpnt.few L$70
			   }
			   { .mmi 
010800CE1CC0     08D0		      adds    r115 = 112, r12 ;;							   // 001187
008047301CC0     08D1		      ld2     r115 = [r115]
000008000000     08D2		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     08E0		      nop.m   0
00A047300240     08E1		      tbit.z  pr9, pr8 = r115, 0
008600262009     08E2	       (pr9)  br.cond.dpnt.few L$72
			   }

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 83
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   { .mmi 
010800CE9D00     08F0		      adds    r116 = 116, r12 ;;							   // 001195
008007401D00     08F1		      ld1     r116 = [r116]
000008000000     08F2		      nop.i   0 ;;
			   }
			   { .mfb 
01CC57434000     0900		      cmp4.eq pr0, pr10 = 26, r116
000008000000     0901		      nop.f   0
00860026C00A     0902	       (pr10) br.cond.dpnt.few L$75
			   }
			   { .mmi 
010800CE4A80     0910		      adds    r42 = 114, r12 ;;								   // 001197
008042A00A80     0911		      ld2     r42 = [r42]
000008000000     0912		      nop.i   0 ;;
			   }
			   { .mbb 
01C462A00000     0920		      cmp4.eq pr0, pr12 = r0, r42
00860026200C     0921	       (pr12) br.cond.dpnt.few L$77
008000212000     0922		      br.sptk.few L$48 ;;
			   }
	         0930	L$50:												   // 001247
			   { .mii 
01080A8D8B40     0930		      adds    r45 = 236, r40								   // 001249
01080A8D0AC0     0931		      adds    r43 = 232, r40								   // 001248
00A40440CB00     0932		      extr.u  r44 = r68, 3, 1 ;;							   // 001251
			   }
			   { .mib 
008082D00B40     0940		      ld4     r45 = [r45]								   // 001249
00A072C003C0     0941		      tbit.z  pr15, pr14 = r44, 0							   // 001251
004000000000     0942		      nop.b   0 ;;
			   }
			   { .mii 
008082B00AC0     0950		      ld4     r43 = [r43]								   // 001248
0000B2D00B80     0951		      sxt4    r46 = r45 ;;								   // 001249
0000B2B00AC0     0952		      sxt4    r43 = r43									   // 001248
			   }
			   { .mfb 
000008000000     0960		      nop.m   0
000008000000     0961		      nop.f   0
00860001400F     0962	       (pr15) br.cond.dpnt.few L$79								   // 001251
			   }
			   { .mii 
000008000000     0970		      nop.m   0
00A404410BC0     0971		      extr.u  r47 = r68, 4, 1 ;;							   // 001262
00A032F001C0     0972		      tbit.z  pr7, pr6 = r47, 0
			   }
			   { .mfb 
000008000000     0980		      nop.m   0
000008000000     0981		      nop.f   0
008600006007     0982	       (pr7)  br.cond.dpnt.few L$81
			   }
			   { .mii 
010800C90C00     0990		      adds    r48 = 72, r12								   // 001264
010802E58B80     0991		      adds    r46 = 44, r46
000008000000     0992		      nop.i   0 ;;
			   }
			   { .mmi 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 84
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

00BC8AE61500     09A0		      st4     [r46] = r48, -44 ;;
000008000000     09A1		      nop.m   0
000008000000     09A2		      nop.i   0
			   }
	         09B0	L$81:												   // 001270
			   { .mib 
012000002640     09B0		      mov     r25 = 1
0000B2E01E00     09B1		      sxt4    r120 = r46
00A000001000     09B2		      br.call.sptk.many br0 = SYS$GET
			   }
			   { .mib 
010818C00380     09C0		      adds    r14 = 384, r12
00A0308001C0     09C1		      tbit.z  pr7, pr6 = r8, 0
004000000000     09C2		      nop.b   0 ;;
			   }
			   { .mfb 
0080C0E00040     09D0		      ld8     r1 = [r14]
000008000000     09D1		      nop.f   0
008600294006     09D2	       (pr6)  br.cond.dpnt.few L$82
			   }
			   { .mmi 
010802E10B80     09E0		      adds    r46 = 8, r46 ;;								   // 001272
00B08AEF0C80     09E1		      ld4     r50 = [r46], -8
000008000000     09E2		      nop.i   0 ;;
			   }
			   { .mbb 
01C444A64000     09F0		      cmp4.eq pr0, pr8 = r50, r74
008600288008     09F1	       (pr8)  br.cond.dpnt.few L$84
0080001F8000     09F2		      br.sptk.few L$48 ;;
			   }
	         0A00	L$79:												   // 001251
			   { .mii 
000008000000     0A00		      nop.m   0
00A404408CC0     0A01		      extr.u  r51 = r68, 2, 1 ;;							   // 001349
00A0533002C0     0A02		      tbit.z  pr11, pr10 = r51, 0
			   }
			   { .mfb 
000008000000     0A10		      nop.m   0
000008000000     0A11		      nop.f   0
00860008A00B     0A12	       (pr11) br.cond.dpnt.few L$86
			   }
			   { .mmi 
010802868A00     0A20		      adds    r40 = 52, r40 ;;								   // 001370
008042800D00     0A21		      ld2     REQ_LENGTH = [r40]		// r52 = [r40]
000008000000     0A22		      nop.i   0 ;;
			   }
			   { .mib 
00BC4A801300     0A30		      st2     [r40] = r0, -52								   // 001371
018C63400000     0A31		      cmp4.lt pr0, pr12 = 0, REQ_LENGTH		// pr0, pr12 = 0, r52			   // 001373
00860007A00C     0A32	       (pr12) br.cond.dpnt.few L$89 ;;
			   }
	         0A40	L$91:
			   { .mmi 
010802E30B80     0A40		      adds    r46 = 24, r46 ;;								   // 001376
00B08AED0D80     0A41		      ld4     r54 = [r46], -24
000008000000     0A42		      nop.i   0 ;;
			   }

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 85
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   { .mfb 
01DC736FC000     0A50		      cmp4.eq pr0, pr14 = -2, r54
000008000000     0A51		      nop.f   0
00860001000E     0A52	       (pr14) br.cond.dpnt.few L$94
			   }
			   { .mii 
010804610DC0     0A60		      adds    r55 = 8, r70								   // 001379
01200000A640     0A61		      mov     r25 = 5
0000B0001F00     0A62		      sxt4    r124 = r0
			   }
			   { .mii 
012400001E00     0A70		      addl    r120 = 16384, r0
0000B0001EC0     0A71		      sxt4    r123 = r0
0000B4D01E80     0A72		      sxt4    r122 = r77 ;;
			   }
			   { .mib 
0119FB4FED00     0A80		      adds    r52 = -1, r52								   // 001376
0000B3701E40     0A81		      sxt4    r121 = r55								   // 001379
00A000001000     0A82		      br.call.sptk.many br0 = XST$APPEND
			   }
			   { .mii 
010818C00380     0A90		      adds    r14 = 384, r12
00A0308001C0     0A91		      tbit.z  pr7, pr6 = r8, 0
010800800E80     0A92		      mov     $XPO$STATUS = r8 ;;		// r58 = r8
			   }
			   { .mfb 
0080C0E00040     0AA0		      ld8     r1 = [r14]
000008000000     0AA1		      nop.f   0
0086002C8007     0AA2	       (pr7)  br.cond.dpnt.few L$97
			   }
			   { .mii 
010802E30B80     0AB0		      adds    r46 = 24, r46								   // 001380
01C403400240     0AB1		      cmp4.eq pr9, pr0 = r0, REQ_LENGTH		// pr9, pr0 = r0, r52			   // 001382
000008000000     0AB2		      nop.i   0 ;;
			   }
			   { .mfb 
00BC8AE97A00     0AC0		      st4     [r46] = r75, -24								   // 001380
000008000000     0AC1		      nop.f   0
008600068009     0AC2	       (pr9)  br.cond.dpnt.few L$89 ;;								   // 001382
			   }
	         0AD0	L$94:												   // 001376
			   { .mmi 
010802E30B80     0AD0		      adds    r46 = 24, r46 ;;								   // 001387
00B08AED0EC0     0AD1		      ld4     r59 = [r46], -24
000008000000     0AD2		      nop.i   0 ;;
			   }
			   { .mfb 
01DC53BFE000     0AE0		      cmp4.eq pr0, pr10 = -1, r59
000008000000     0AE1		      nop.f   0
00860001000A     0AE2	       (pr10) br.cond.dpnt.few L$100
			   }
			   { .mii 
010804620F00     0AF0		      adds    r60 = 16, r70								   // 001390
01200000A640     0AF1		      mov     r25 = 5
0000B0001F00     0AF2		      sxt4    r124 = r0
			   }
			   { .mii 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 86
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

012400001E00     0B00		      addl    r120 = 16384, r0
0000B0001EC0     0B01		      sxt4    r123 = r0
0000B4D01E80     0B02		      sxt4    r122 = r77 ;;
			   }
			   { .mib 
0119FB4FED00     0B10		      adds    r52 = -1, r52								   // 001387
0000B3C01E40     0B11		      sxt4    r121 = r60								   // 001390
00A000001000     0B12		      br.call.sptk.many br0 = XST$APPEND
			   }
			   { .mii 
010818C00380     0B20		      adds    r14 = 384, r12
00A0308001C0     0B21		      tbit.z  pr7, pr6 = r8, 0
010800800F40     0B22		      mov     $XPO$STATUS = r8 ;;		// r61 = r8
			   }
			   { .mfb 
0080C0E00040     0B30		      ld8     r1 = [r14]
000008000000     0B31		      nop.f   0
0086002BC007     0B32	       (pr7)  br.cond.dpnt.few L$103
			   }
			   { .mii 
010802E30B80     0B40		      adds    r46 = 24, r46								   // 001391
01C403400240     0B41		      cmp4.eq pr9, pr0 = r0, REQ_LENGTH		// pr9, pr0 = r0, r52			   // 001393
000008000000     0B42		      nop.i   0 ;;
			   }
			   { .mfb 
00BC8AE01A00     0B50		      st4     [r46] = r0, -24								   // 001391
000008000000     0B51		      nop.f   0
008600056009     0B52	       (pr9)  br.cond.dpnt.few L$89 ;;								   // 001393
			   }
	         0B60	L$100:												   // 001387
			   { .mmi 
010802E30B80     0B60		      adds    r46 = 24, r46 ;;								   // 001402
00B08AED0E00     0B61		      ld4     r56 = [r46], -24
000008000000     0B62		      nop.i   0 ;;
			   }
			   { .mfb 
01C453800000     0B70		      cmp4.eq pr0, pr10 = r0, r56
000008000000     0B71		      nop.f   0
00860001600A     0B72	       (pr10) br.cond.dpnt.few L$104
			   }
			   { .mmi 
0080C2E00FC0     0B80		      ld8     r63 = [r46] ;;								   // 001405
000008000000     0B81		      nop.m   0
00A403FACFC0     0B82		      extr.u  r63 = r63, 43, 1 ;;
			   }
			   { .mib 
000008000000     0B90		      nop.m   0
00A063F00340     0B91		      tbit.z  pr13, pr12 = r63, 0
00860000600D     0B92	       (pr13) br.cond.dpnt.few L$107
			   }
			   { .mib 
012000002640     0BA0		      mov     r25 = 1									   // 001407
0000B2E01E00     0BA1		      sxt4    r120 = r46
00A000001000     0BA2		      br.call.sptk.many br0 = SYS$READ
			   }
			   { .mfb 
000008000000     0BB0		      nop.m   0

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 87
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     0BB1		      nop.f   0
008000004000     0BB2		      br.sptk.few L$217 ;;
			   }
	         0BC0	L$107:												   // 001409
			   { .mib 
012000002640     0BC0		      mov     r25 = 1
0000B2E01E00     0BC1		      sxt4    r120 = r46
00A000001000     0BC2		      br.call.sptk.many br0 = SYS$GET
			   }
	         0BD0	L$217:
			   { .mii 
010802E10B80     0BD0		      adds    r46 = 8, r46								   // 001411
010818C00380     0BD1		      adds    r14 = 384, r12								   // 001409
000008000000     0BD2		      nop.i   0 ;;
			   }
			   { .mmi 
00B08AEF1000     0BE0		      ld4     r64 = [r46], -8								   // 001411
0080C0E00040     0BE1		      ld8     r1 = [r14]								   // 001409
000008000000     0BE2		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     0BF0		      nop.m   0
00A0340001C0     0BF1		      tbit.z  pr7, pr6 = r64, 0								   // 001411
008600048007     0BF2	       (pr7)  br.cond.dpnt.few L$110
			   }
			   { .mmi 
010802E44B80     0C00		      adds    r46 = 34, r46 ;;								   // 001434
00B04AEED040     0C01		      ld2     r65 = [r46], -10
000008000000     0C02		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8AE83A00     0C10		      st4     [r46] = r65, -24 ;;
000008000000     0C11		      nop.m   0
000008000000     0C12		      nop.i   0
			   }
	         0C20	L$104:												   // 001402
			   { .mmi 
010802E30B80     0C20		      adds    r46 = 24, r46 ;;								   // 001441
00B08AED10C0     0C21		      ld4     r67 = [r46], -24
000008000000     0C22		      nop.i   0 ;;
			   }
			   { .mfb 
018404368240     0C30		      cmp4.lt pr9, pr0 = REQ_LENGTH, r67	// pr9, pr0 = r52, r67
000008000000     0C31		      nop.f   0
008600020009     0C32	       (pr9)  br.cond.dpnt.few L$112
			   }
			   { .mii 
010800C71140     0C40		      adds    r69 = 56, r12								   // 001446
010800C75400     0C41		      adds    r80 = 58, r12
010800C79480     0C42		      adds    r82 = 60, r12
			   }
			   { .mmi 
010800C714C0     0C50		      adds    r83 = 56, r12
01200000A640     0C51		      mov     r25 = 5
0000B0001F00     0C52		      sxt4    r124 = r0 ;;
			   }
			   { .mii 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 88
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

008C44586000     0C60		      st2     [r69] = r67
0000B0001EC0     0C61		      sxt4    r123 = r0
0000B4D01E80     0C62		      sxt4    r122 = r77
			   }
			   { .mmi 
008C45090000     0C70		      st2     [r80] = r72
010802E50B80     0C71		      adds    r46 = 40, r46
0000B5301E40     0C72		      sxt4    r121 = r83 ;;
			   }
			   { .mmi 
012400001E00     0C80		      addl    r120 = 16384, r0
00B08AEF5440     0C81		      ld4     r81 = [r46], -6
000008000000     0C82		      nop.i   0 ;;
			   }
			   { .mmi 
00B04AEED400     0C90		      ld2     r80 = [r46], -10 ;;
0100050A3400     0C91		      add     r80 = r81, r80
000008000000     0C92		      nop.i   0 ;;
			   }
			   { .mmi 
01002C3A1400     0CA0		      sub     r80 = r80, r67 ;;
008C852A0000     0CA1		      st4     [r82] = r80
000008000000     0CA2		      nop.i   0
			   }
			   { .mfb 
000008000000     0CB0		      nop.m   0
000008000000     0CB1		      nop.f   0
00A000001000     0CB2		      br.call.sptk.many br0 = XST$APPEND
			   }
			   { .mii 
010818C00380     0CC0		      adds    r14 = 384, r12
00A0308001C0     0CC1		      tbit.z  pr7, pr6 = r8, 0
010800801500     0CC2		      mov     $XPO$STATUS = r8 ;;		// r84 = r8
			   }
			   { .mfb 
0080C0E00040     0CD0		      ld8     r1 = [r14]
000008000000     0CD1		      nop.f   0
00860029E007     0CD2	       (pr7)  br.cond.dpnt.few L$114
			   }
			   { .mii 
010802B30AC0     0CE0		      adds    r43 = 24, r43								   // 001450
010800001600     0CE1		      mov     r88 = r0									   // 001452
0119F80FD580     0CE2		      adds    r86 = -2, r0
			   }
			   { .mmi 
008082E015C0     0CF0		      ld4     r87 = [r46] ;;								   // 001448
00B0CABD1540     0CF1		      ld8     r85 = [r43], -24								   // 001450
01002D768D00     0CF2		      sub     REQ_LENGTH = REQ_LENGTH, r87 ;;	// r52 = r52, r87			   // 001448
			   }
			   { .mii 
000008000000     0D00		      nop.m   0
00A4055C5540     0D01		      extr.u  r85 = r85, 49, 1 ;;							   // 001450
00A045500000     0D02		      tbit.z  pr0, pr8 = r85, 0 ;;
			   }
			   { .mmi 
010805601608     0D10	       (pr8)  mov     r88 = r86 ;;								   // 001452
00BC8AEB1A00     0D11		      st4     [r46] = r88, -24

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 89
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     0D12		      nop.i   0
			   }
			   { .mfb 
000008000000     0D20		      nop.m   0
000008000000     0D21		      nop.f   0
00800001A000     0D22		      br.sptk.few L$218 ;;
			   }
	         0D30	L$112:												   // 001460
			   { .mii 
010800C61740     0D30		      adds    r93 = 48, r12
010800C65780     0D31		      adds    r94 = 50, r12
010800C69840     0D32		      adds    r97 = 52, r12
			   }
			   { .mmi 
010800C61880     0D40		      adds    r98 = 48, r12
01200000A640     0D41		      mov     r25 = 5
0000B0001F00     0D42		      sxt4    r124 = r0 ;;
			   }
			   { .mii 
008C45D68000     0D50		      st2     [r93] = REQ_LENGTH		// [r93] = r52
0000B0001EC0     0D51		      sxt4    r123 = r0
0000B4D01E80     0D52		      sxt4    r122 = r77
			   }
			   { .mmi 
008C45E90000     0D60		      st2     [r94] = r72
010802E44B80     0D61		      adds    r46 = 34, r46
0000B6201E40     0D62		      sxt4    r121 = r98 ;;
			   }
			   { .mmi 
012400001E00     0D70		      addl    r120 = 16384, r0
00A042E0D780     0D71		      ld2     r94 = [r46], 6
000008000000     0D72		      nop.i   0 ;;
			   }
			   { .mmi 
00B08AEE1800     0D80		      ld4     r96 = [r46], -16 ;;
010005EC1780     0D81		      add     r94 = r96, r94
000008000000     0D82		      nop.i   0 ;;
			   }
			   { .mmi 
01002C3BD0C0     0D90		      sub     r67 = r94, r67 ;;
008C86186000     0D91		      st4     [r97] = r67
000008000000     0D92		      nop.i   0
			   }
			   { .mfb 
000008000000     0DA0		      nop.m   0
000008000000     0DA1		      nop.f   0
00A000001000     0DA2		      br.call.sptk.many br0 = XST$APPEND
			   }
			   { .mii 
010818C00380     0DB0		      adds    r14 = 384, r12
00A0308001C0     0DB1		      tbit.z  pr7, pr6 = r8, 0
010800801900     0DB2		      mov     $XPO$STATUS = r8 ;;		// r100 = r8
			   }
			   { .mfb 
0080C0E00040     0DC0		      ld8     r1 = [r14]
000008000000     0DC1		      nop.f   0
008600286007     0DC2	       (pr7)  br.cond.dpnt.few L$117

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 90
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mmi 
008082E01940     0DD0		      ld4     r101 = [r46] ;;								   // 001461
01002B4CB940     0DD1		      sub     r101 = r101, REQ_LENGTH		// r101 = r101, r52
010800000D00     0DD2		      mov     REQ_LENGTH = r0 ;;		// r52 = r0				   // 001463
			   }
			   { .mmi 
00BC8AECBA00     0DE0		      st4     [r46] = r101, -24 ;;							   // 001461
000008000000     0DE1		      nop.m   0
000008000000     0DE2		      nop.i   0
			   }
	         0DF0	L$218:												   // 001373
			   { .mfb 
018C03400240     0DF0		      cmp4.lt pr9, pr0 = 0, REQ_LENGTH		// pr9, pr0 = 0, r52
000008000000     0DF1		      nop.f   0
0095FFF8A009     0DF2	       (pr9)  br.cond.dptk.few L$91 ;;
			   }
	         0E00	L$89:
			   { .mfb 
01C4034000C0     0E00		      cmp4.eq pr3, pr0 = r0, REQ_LENGTH		// pr3, pr0 = r0, r52			   // 001471
000008000000     0E01		      nop.f   0
0086002E0003     0E02	       (pr3)  br.cond.dpnt.few L$6
			   }
			   { .mlx 
01080A8B1C40     0E10		      adds    r113 = 216, r40								   // 001473
000000000000     0E11		      movl    r108 = 2129937 ;;
0190004476
			   }
			   { .mfb 
008C871D8000     0E20		      st4     [r113] = r108
000008000000     0E21		      nop.f   0
0080002DC000     0E22		      br.sptk.few L$6 ;;
			   }
	         0E30	L$110:												   // 001411
			   { .mfb 
01C454A80000     0E30		      cmp4.eq pr0, pr10 = r64, r74							   // 001413
000008000000     0E31		      nop.f   0
00860026800A     0E32	       (pr10) br.cond.dpnt.few L$120
			   }
			   { .mmi 
010802868A00     0E40		      adds    r40 = 52, r40 ;;								   // 001416
00B04A8996C0     0E41		      ld2     r91 = [r40], -52
000008000000     0E42		      nop.i   0 ;;
			   }
			   { .mbb 
01C465B00000     0E50		      cmp4.eq pr0, pr12 = r0, r91
00860025E00C     0E51	       (pr12) br.cond.dpnt.few L$122
00800016C000     0E52		      br.sptk.few L$48 ;;
			   }
	         0E60	L$86:												   // 001349
			   { .mii 
000008000000     0E60		      nop.m   0
00A0744003C0     0E61		      tbit.z  pr15, pr14 = r68, 0 ;;							   // 001492
01C2700003C2     0E62	       (pr2)  cmp.eq.or.andcm pr15, pr14 = r0, r0
			   }
			   { .bbb 
00860000200E     0E70	       (pr14) br.cond.dpnt.few L$123

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 91
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

004000000000     0E71		      nop.b   0
00860007200F     0E72	       (pr15) br.cond.dpnt.few L$124
			   }
	         0E80	L$123:												   // 001498
			   { .mmi 
010802868A00     0E80		      adds    r40 = 52, r40 ;;								   // 001505
00A042811B80     0E81		      ld2     REQ_LENGTH = [r40], 8		// r110 = [r40], 8
000008000000     0E82		      nop.i   0 ;;
			   }
			   { .mmi 
00B04A8F1B00     0E90		      ld2     r108 = [r40], -8 ;;							   // 001509
00BC4A801300     0E91		      st2     [r40] = r0, -52								   // 001506
01A436ED8000     0E92		      cmp4.ltu pr0, pr6 = r108, REQ_LENGTH	// pr0, pr6 = r108, r110		   // 001508
			   }
			   { .mfb 
000008000000     0EA0		      nop.m   0
000008000000     0EA1		      nop.f   0
008600016006     0EA2	       (pr6)  br.cond.dpnt.few L$125
			   }
			   { .mii 
01200000A640     0EB0		      mov     r25 = 5									   // 001512
0000B0001F00     0EB1		      sxt4    r124 = r0
0000B0001EC0     0EB2		      sxt4    r123 = r0
			   }
			   { .mii 
0119F80FDE40     0EC0		      adds    r121 = -2, r0
0000B0001E80     0EC1		      sxt4    r122 = r0
0000B4D01E00     0EC2		      sxt4    r120 = r77
			   }
			   { .mfb 
000008000000     0ED0		      nop.m   0
000008000000     0ED1		      nop.f   0
00A000001000     0ED2		      br.call.sptk.many br0 = XPO$FREE_MEM ;;
			   }
			   { .mii 
010818C00380     0EE0		      adds    r14 = 384, r12
00A0308001C0     0EE1		      tbit.z  pr7, pr6 = r8, 0
010800801AC0     0EE2		      mov     $XPO$STATUS = r8 ;;		// r107 = r8
			   }
			   { .mfb 
0080C0E00040     0EF0		      ld8     r1 = [r14]
000008000000     0EF1		      nop.f   0
008600266007     0EF2	       (pr7)  br.cond.dpnt.few L$128
			   }
			   { .mii 
01200000C640     0F00		      mov     r25 = 6									   // 001516
0000B0001F40     0F01		      sxt4    r125 = r0
0000B0001F00     0F02		      sxt4    r124 = r0
			   }
			   { .mii 
0119F80FFE80     0F10		      adds    r122 = -1, r0
0000B0001EC0     0F11		      sxt4    r123 = r0
0000B4901E40     0F12		      sxt4    r121 = r73 ;;
			   }
			   { .mib 
000008000000     0F20		      nop.m   0
0000B6E01E00     0F21		      sxt4    r120 = REQ_LENGTH			// r120 = r110

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 92
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

00A000001000     0F22		      br.call.sptk.many br0 = XPO$ALLOC_MEM
			   }
			   { .mii 
010818C00380     0F30		      adds    r14 = 384, r12
00A0308001C0     0F31		      tbit.z  pr7, pr6 = r8, 0
010800801C00     0F32		      mov     $XPO$STATUS = r8 ;;		// r112 = r8
			   }
			   { .mfb 
0080C0E00040     0F40		      ld8     r1 = [r14]
000008000000     0F41		      nop.f   0
008600272007     0F42	       (pr7)  br.cond.dpnt.few L$129
			   }
	         0F50	L$125:												   // 001525
			   { .mfb 
018C46E00000     0F50		      cmp4.lt pr0, pr8 = 0, REQ_LENGTH		// pr0, pr8 = 0, r110
000008000000     0F51		      nop.f   0
008600042008     0F52	       (pr8)  br.cond.dpnt.few L$132 ;;
			   }
	         0F60	L$134:
			   { .mmi 
010802E30B80     0F60		      adds    r46 = 24, r46 ;;								   // 001527
00B08AED1A80     0F61		      ld4     r106 = [r46], -24
000008000000     0F62		      nop.i   0 ;;
			   }
			   { .mfb 
01C456A00000     0F70		      cmp4.eq pr0, pr10 = r0, r106
000008000000     0F71		      nop.f   0
00860000E00A     0F72	       (pr10) br.cond.dpnt.few L$135
			   }
			   { .mib 
012000002640     0F80		      mov     r25 = 1									   // 001530
0000B2E01E00     0F81		      sxt4    r120 = r46
00A000001000     0F82		      br.call.sptk.many br0 = SYS$READ
			   }
			   { .mii 
010802E10B80     0F90		      adds    r46 = 8, r46								   // 001532
010818C00380     0F91		      adds    r14 = 384, r12								   // 001530
000008000000     0F92		      nop.i   0 ;;
			   }
			   { .mmi 
00B08AEF1A40     0FA0		      ld4     r105 = [r46], -8								   // 001532
0080C0E00040     0FA1		      ld8     r1 = [r14]								   // 001530
000008000000     0FA2		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     0FB0		      nop.m   0
00A0369001C0     0FB1		      tbit.z  pr7, pr6 = r105, 0							   // 001532
008600044007     0FB2	       (pr7)  br.cond.dpnt.few L$138
			   }
			   { .mmi 
010802E44B80     0FC0		      adds    r46 = 34, r46 ;;								   // 001555
00B04AEED640     0FC1		      ld2     r89 = [r46], -10
000008000000     0FC2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8AEB3A00     0FD0		      st4     [r46] = r89, -24 ;;
000008000000     0FD1		      nop.m   0

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 93
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     0FD2		      nop.i   0
			   }
	         0FE0	L$135:												   // 001527
			   { .mmi 
010802E30B80     0FE0		      adds    r46 = 24, r46 ;;								   // 001562
00B08AED1E80     0FE1		      ld4     r122 = [r46], -24
000008000000     0FE2		      nop.i   0 ;;
			   }
			   { .mfb 
018407ADC240     0FF0		      cmp4.lt pr9, pr0 = REQ_LENGTH, r122	// pr9, pr0 = r110, r122
000008000000     0FF1		      nop.f   0
008600016009     0FF2	       (pr9)  br.cond.dpnt.few L$140
			   }
			   { .mii 
010802E50B80     1000		      adds    r46 = 40, r46								   // 001566
0000B7A00BC0     1001		      sxt4    r47 = r122
0000B7A01E40     1002		      sxt4    r121 = r122 ;;								   // 001565
			   }
			   { .mii 
00B08AEF5D00     1010		      ld4     r116 = [r46], -6								   // 001566
010802870A00     1011		      adds    r40 = 56, r40 ;;								   // 001567
0000B7401D00     1012		      sxt4    r116 = r116								   // 001566
			   }
			   { .mmi 
00B08A8F8A80     1020		      ld4     r42 = [r40], -4								   // 001567
00B04AEECB40     1021		      ld2     r45 = [r46], -10								   // 001566
000008000000     1022		      nop.i   0 ;;
			   }
			   { .mii 
008042800B00     1030		      ld2     r44 = [r40]								   // 001567
0000B2D00B40     1031		      sxt4    r45 = r45									   // 001566
0000B2A00A80     1032		      sxt4    r42 = r42 ;;								   // 001567
			   }
			   { .mii 
010002DE8B40     1040		      add     r45 = r116, r45								   // 001566
0000B2C00B00     1041		      sxt4    r44 = r44 ;;								   // 001567
01002AF5AB40     1042		      sub     r45 = r45, r47 ;;								   // 001566
			   }
			   { .mib 
010002C55E00     1050		      add     r120 = r42, r44								   // 001567
010802D01E80     1051		      mov     r122 = r45								   // 001565
00A000001000     1052		      br.call.sptk.many br0 = OTS$MOVE
			   }
			   { .mmi 
008042800C00     1060		      ld2     r48 = [r40]								   // 001569
008082E00C40     1061		      ld4     r49 = [r46]								   // 001570
010818C00380     1062		      adds    r14 = 384, r12 ;;								   // 001565
			   }
			   { .mmi 
010003160C00     1070		      add     r48 = r48, r49								   // 001569
0080C0E00040     1071		      ld8     r1 = [r14]								   // 001565
000008000000     1072		      nop.i   0 ;;
			   }
			   { .mmi 
00BC4A861300     1080		      st2     [r40] = r48, -52								   // 001569
008082E00C00     1081		      ld4     r48 = [r46]								   // 001571
000008000000     1082		      nop.i   0 ;;

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 94
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mib 
00BC8AE01A00     1090		      st4     [r46] = r0, -24								   // 001572
01002B0DDB80     1091		      sub     REQ_LENGTH = REQ_LENGTH, r48	// r110 = r110, r48			   // 001571
008000018000     1092		      br.sptk.few L$219 ;;								   // 001572
			   }
	         10A0	L$140:												   // 001562
			   { .mii 
010802E50B80     10A0		      adds    r46 = 40, r46								   // 001577
0000B7A01E80     10A1		      sxt4    r122 = r122
0000B6E01E40     10A2		      sxt4    r121 = REQ_LENGTH ;;		// r121 = r110				   // 001576
			   }
			   { .mii 
00B08AEF4D80     10B0		      ld4     r54 = [r46], -6								   // 001577
010802870A00     10B1		      adds    r40 = 56, r40 ;;								   // 001578
0000B3600D80     10B2		      sxt4    r54 = r54									   // 001577
			   }
			   { .mmi 
00B08A8F8DC0     10C0		      ld4     r55 = [r40], -4								   // 001578
00B04AEECE40     10C1		      ld2     r57 = [r46], -10								   // 001577
000008000000     10C2		      nop.i   0 ;;
			   }
			   { .mii 
008042800EC0     10D0		      ld2     r59 = [r40]								   // 001578
0000B3900E40     10D1		      sxt4    r57 = r57									   // 001577
0000B3700DC0     10D2		      sxt4    r55 = r55 ;;								   // 001578
			   }
			   { .mii 
01000396CD80     10E0		      add     r54 = r54, r57								   // 001577
0000B3B00EC0     10E1		      sxt4    r59 = r59 ;;								   // 001578
010003B6FE00     10E2		      add     r120 = r55, r59
			   }
			   { .mfb 
01002FA6DE80     10F0		      sub     r122 = r54, r122								   // 001577
000008000000     10F1		      nop.f   0
00A000001000     10F2		      br.call.sptk.many br0 = OTS$MOVE							   // 001576
			   }
			   { .mii 
008042800F00     1100		      ld2     r60 = [r40]								   // 001580
010818C00380     1101		      adds    r14 = 384, r12								   // 001576
000008000000     1102		      nop.i   0 ;;
			   }
			   { .mmi 
010006E78F00     1110		      add     r60 = r60, REQ_LENGTH		// r60 = r60, r110			   // 001580
0080C0E00040     1111		      ld8     r1 = [r14]								   // 001576
000008000000     1112		      nop.i   0 ;;
			   }
			   { .mmi 
00BC4A879300     1120		      st2     [r40] = r60, -52								   // 001580
008082E00F00     1121		      ld4     r60 = [r46]								   // 001582
000008000000     1122		      nop.i   0 ;;
			   }
			   { .mii 
01002EE78F00     1130		      sub     r60 = r60, REQ_LENGTH		// r60 = r60, r110
010800001B80     1131		      mov     REQ_LENGTH = r0			// r110 = r0				   // 001584
000008000000     1132		      nop.i   0 ;;
			   }

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 95
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   { .mmi 
00BC8AE79A00     1140		      st4     [r46] = r60, -24 ;;							   // 001582
000008000000     1141		      nop.m   0
000008000000     1142		      nop.i   0
			   }
	         1150	L$219:												   // 001525
			   { .mfb 
018C06E001C0     1150		      cmp4.lt pr7, pr0 = 0, REQ_LENGTH		// pr7, pr0 = 0, r110
000008000000     1151		      nop.f   0
0095FFFC2007     1152	       (pr7)  br.cond.dptk.few L$134 ;;
			   }
	         1160	L$132:
			   { .mii 
010802868A00     1160		      adds    r40 = 52, r40								   // 001593
01C406E00180     1161		      cmp4.eq pr6, pr0 = r0, REQ_LENGTH		// pr6, pr0 = r0, r110			   // 001599
000008000000     1162		      nop.i   0 ;;
			   }
			   { .mmi 
00A042818E40     1170		      ld2     r57 = [r40], 12 ;;							   // 001593
018400072080     1171		      cmp4.lt pr2, pr0 = r57, r0
010803906DC0     1172		      adds    r55 = 3, r57 ;;
			   }
			   { .mmi 
010803700E42     1180	       (pr2)  mov     r57 = r55 ;;
000008000000     1181		      nop.m   0
0000B3900E40     1182		      sxt4    r57 = r57 ;;
			   }
			   { .mib 
000008000000     1190		      nop.m   0
00A5EB90AE40     1191		      shr     r57 = r57, 2
004000000000     1192		      nop.b   0 ;;
			   }
			   { .mfb 
00BC4A873000     11A0		      st2     [r40] = r57, -64								   // 001592
000008000000     11A1		      nop.f   0
00860026C006     11A2	       (pr6)  br.cond.dpnt.few L$6 ;;								   // 001599
			   }
			   { .mlx 
01080A8B0E00     11B0		      adds    r56 = 216, r40								   // 001601
800000000000     11B1		      movl    r103 = 2129937 ;;
0190004473
			   }
			   { .mfb 
008C838CE000     11C0		      st4     [r56] = r103
000008000000     11C1		      nop.f   0
008000268000     11C2		      br.sptk.few L$6 ;;
			   }
	         11D0	L$138:												   // 001532
			   { .mfb 
01C444AD2000     11D0		      cmp4.eq pr0, pr8 = r105, r74							   // 001534
000008000000     11D1		      nop.f   0
008600216008     11D2	       (pr8)  br.cond.dpnt.few L$148
			   }
			   { .mmi 
010802868A00     11E0		      adds    r40 = 52, r40 ;;								   // 001537
00B04A899040     11E1		      ld2     r65 = [r40], -52
000008000000     11E2		      nop.i   0 ;;

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 96
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mbb 
01C454100000     11F0		      cmp4.eq pr0, pr10 = r0, r65
00860020C00A     11F1	       (pr10) br.cond.dpnt.few L$150
0080000F8000     11F2		      br.sptk.few L$48 ;;
			   }
	         1200	L$124:												   // 001492
			   { .bbb 
008600002002     1200	       (pr2)  br.cond.dpnt.few L$151								   // 001625
0086000F6003     1201	       (pr3)  br.cond.dpnt.few L$48
004000000000     1202		      nop.b   0
			   }
	         1210	L$151:												   // 001638
			   { .mmi 
010802868A00     1210		      adds    r40 = 52, r40 ;;								   // 001647
00A042811080     1211		      ld2     REQ_LENGTH = [r40], 8		// r66 = [r40], 8
000008000000     1212		      nop.i   0 ;;
			   }
			   { .mmi 
00A042831140     1220		      ld2     r69 = [r40], 24 ;;							   // 001653
00B08A8D9440     1221		      ld4     NEXT_POS = [r40], -20		// r81 = [r40], -20			   // 001648
01A46428A000     1222		      cmp4.ltu pr0, pr12 = r69, REQ_LENGTH ;;	// pr0, pr12 = r69, r66			   // 001652
			   }
			   { .mmi 
00BC4A801D00     1230		      st2     [r40] = r0, -12 ;;							   // 001650
00BC4A801300     1231		      st2     [r40] = r0, -52								   // 001649
000008000000     1232		      nop.i   0
			   }
			   { .mfb 
000008000000     1240		      nop.m   0
000008000000     1241		      nop.f   0
00860001600C     1242	       (pr12) br.cond.dpnt.few L$152								   // 001652
			   }
			   { .mii 
01200000A640     1250		      mov     r25 = 5									   // 001656
0000B0001F00     1251		      sxt4    r124 = r0
0000B0001EC0     1252		      sxt4    r123 = r0
			   }
			   { .mii 
0119F80FDE40     1260		      adds    r121 = -2, r0
0000B0001E80     1261		      sxt4    r122 = r0
0000B4D01E00     1262		      sxt4    r120 = r77
			   }
			   { .mfb 
000008000000     1270		      nop.m   0
000008000000     1271		      nop.f   0
00A000001000     1272		      br.call.sptk.many br0 = XPO$FREE_MEM
			   }
			   { .mii 
010818C00380     1280		      adds    r14 = 384, r12
00A0108000C0     1281		      tbit.z  pr3, pr2 = r8, 0
0108008014C0     1282		      mov     $XPO$STATUS = r8 ;;		// r83 = r8
			   }
			   { .mfb 
0080C0E00040     1290		      ld8     r1 = [r14]
000008000000     1291		      nop.f   0
00860020E003     1292	       (pr3)  br.cond.dpnt.few L$155

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 97
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mii 
01200000C640     12A0		      mov     r25 = 6									   // 001660
0000B0001F40     12A1		      sxt4    r125 = r0
0000B0001F00     12A2		      sxt4    r124 = r0
			   }
			   { .mii 
0119F80FFE80     12B0		      adds    r122 = -1, r0
0000B0001EC0     12B1		      sxt4    r123 = r0
0000B4901E40     12B2		      sxt4    r121 = r73 ;;
			   }
			   { .mib 
000008000000     12C0		      nop.m   0
0000B4201E00     12C1		      sxt4    r120 = REQ_LENGTH			// r120 = r66
00A000001000     12C2		      br.call.sptk.many br0 = XPO$ALLOC_MEM
			   }
			   { .mii 
010818C00380     12D0		      adds    r14 = 384, r12
00A0108000C0     12D1		      tbit.z  pr3, pr2 = r8, 0
010800801540     12D2		      mov     $XPO$STATUS = r8 ;;		// r85 = r8
			   }
			   { .mfb 
0080C0E00040     12E0		      ld8     r1 = [r14]
000008000000     12E1		      nop.f   0
00860023A003     12E2	       (pr3)  br.cond.dpnt.few L$156
			   }
	         12F0	L$152:												   // 001669
			   { .mfb 
018C34200000     12F0		      cmp4.lt pr0, pr6 = 0, REQ_LENGTH		// pr0, pr6 = 0, r66
000008000000     12F1		      nop.f   0
008600228006     12F2	       (pr6)  br.cond.dpnt.few L$159 ;;
			   }
	         1300	L$161:
			   { .mii 
010802E40B80     1300		      adds    r46 = 32, r46								   // 001671
0000B51015C0     1301		      sxt4    r87 = NEXT_POS			// r87 = r81
0119F80FC440     1302		      adds    r17 = -2, r0 ;;
			   }
			   { .mmi 
00B04AEE1580     1310		      ld2     r86 = [r46], -16 ;;
000008000000     1311		      nop.m   0
0000B5601600     1312		      sxt4    r88 = r86 ;;
			   }
			   { .mfi 
01C005800200     1320		      cmp.eq  pr8, pr0 = r0, r88
000008000000     1321		      nop.f   0
000008000000     1322		      nop.i   0 ;;
			   }
			   { .mmi 
001000000048     1330	       (pr8)  break.m 1048577
00C7080B01C0     1331		      setf.sig f7 = r88
000008000000     1332		      nop.i   0 ;;
			   }
			   { .mmi 
00C7080AE180     1340		      setf.sig f6 = r87
00B08AEE1740     1341		      ld4     r93 = [r46], -16
000008000000     1342		      nop.i   0 ;;

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 98
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mfi 
000008000000     1350		      nop.m   0
0000E000E240     1351		      fcvt.xf f9 = f7
000008000000     1352		      nop.i   0
			   }
			   { .mfi 
000008000000     1360		      nop.m   0
0000E000C200     1361		      fcvt.xf f8 = f6
000008000000     1362		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1370		      nop.m   0
000640910280     1371		      frcpa.s1 f10, pr8 = f8, f9
000008000000     1372		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1380		      nop.m   0
018448A021C8     1381	       (pr8)  fnma.s1 f7 = f10, f9, f1
000008000000     1382		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1390		      nop.m   0
010438A142C8     1391	       (pr8)  fma.s1  f11 = f10, f7, f10
000008000000     1392		      nop.i   0
			   }
			   { .mfi 
000008000000     13A0		      nop.m   0
010438700188     13A1	       (pr8)  fma.s1  f6 = f7, f7, f0
000008000000     13A2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     13B0		      nop.m   0
0104508001C8     13B1	       (pr8)  fma.s1  f7 = f8, f10, f0
000008000000     13B2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     13C0		      nop.m   0
010430B16288     13C1	       (pr8)  fma.s1  f10 = f11, f6, f11
000008000000     13C2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     13D0		      nop.m   0
0184389102C8     13D1	       (pr8)  fnma.s1 f11 = f9, f7, f8
000008000000     13D2		      nop.i   0
			   }
			   { .mfi 
000008000000     13E0		      nop.m   0
018448A02188     13E1	       (pr8)  fnma.s1 f6 = f10, f9, f1
000008000000     13E2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     13F0		      nop.m   0
010430A14288     13F1	       (pr8)  fma.s1  f10 = f10, f6, f10
000008000000     13F2		      nop.i   0 ;;
			   }
			   { .mfi 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 99
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     1400		      nop.m   0
010450B0E1C8     1401	       (pr8)  fma.s1  f7 = f11, f10, f7
000008000000     1402		      nop.i   0
			   }
			   { .mfi 
000008000000     1410		      nop.m   0
018450902188     1411	       (pr8)  fnma.s1 f6 = f9, f10, f1
000008000000     1412		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1420		      nop.m   0
010430A142C8     1421	       (pr8)  fma.s1  f11 = f10, f6, f10
000008000000     1422		      nop.i   0
			   }
			   { .mfi 
000008000000     1430		      nop.m   0
018438910188     1431	       (pr8)  fnma.s1 f6 = f9, f7, f8
000008000000     1432		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1440		      nop.m   0
010430B0E288     1441	       (pr8)  fma.s1  f10 = f11, f6, f7
000008000000     1442		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1450		      nop.m   0
0004D00141C0     1451		      fcvt.fx.trunc.s1 f7 = f10
000008000000     1452		      nop.i   0 ;;
			   }
			   { .mmi 
00870800F700     1460		      getf.sig r92 = f7 ;;
010805C03700     1461		      adds    r92 = 1, r92
000008000000     1462		      nop.i   0 ;;
			   }
			   { .mfb 
01C405DB8280     1470		      cmp4.eq pr10, pr0 = r92, r93
000008000000     1471		      nop.f   0
00860005200A     1472	       (pr10) br.cond.dpnt.few L$163
			   }
			   { .mmi 
010802858A00     1480		      adds    r40 = 44, r40 ;;								   // 001674
00B08A8A9800     1481		      ld4     r96 = [r40], -44
000008000000     1482		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1490		      nop.m   0
00A406045800     1491		      extr.u  r96 = r96, 17, 1 ;;
00A05E000300     1492		      tbit.z  pr12, pr11 = r96, 0
			   }
			   { .mfb 
000008000000     14A0		      nop.m   0
000008000000     14A1		      nop.f   0
00860001600C     14A2	       (pr12) br.cond.dpnt.few L$166
			   }
			   { .mmi 
010802E30B80     14B0		      adds    r46 = 24, r46 ;;								   // 001675
00B08AED1780     14B1		      ld4     r94 = [r46], -24

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 100
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     14B2		      nop.i   0 ;;
			   }
			   { .mmi 
01C46DE00380     14C0		      cmp4.eq pr14, pr13 = r0, r94 ;;
01C00000130E     14C1	       (pr14) cmp.eq.unc pr12, pr0 = r0, r0							   // 001674
01C0000012CD     14C2	       (pr13) cmp.eq.unc pr11, pr0 = r0, r0
			   }
			   { .bbb 
00860000200B     14D0	       (pr11) br.cond.dpnt.few L$165
004000000000     14D1		      nop.b   0
00860001000C     14D2	       (pr12) br.cond.dpnt.few L$166
			   }
	         14E0	L$165:
			   { .mii 
010802E48B80     14E0		      adds    r46 = 36, r46								   // 001680
012000002640     14E1		      mov     r25 = 1									   // 001682
000008000000     14E2		      nop.i   0 ;;
			   }
			   { .mmi 
00B08AEFD0C0     14F0		      ld4     r67 = [r46], -2 ;;							   // 001680
00AC42EAC180     14F1		      st2     [r46] = r86, 6								   // 001679
000008000000     14F2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8AE87600     1500		      st4     [r46] = r67, -40 ;;							   // 001680
000008000000     1501		      nop.m   0
0000B2E01E00     1502		      sxt4    r120 = r46								   // 001682
			   }
			   { .mfb 
000008000000     1510		      nop.m   0
000008000000     1511		      nop.f   0
00A000001000     1512		      br.call.sptk.many br0 = SYS$WRITE
			   }
			   { .mib 
010818C00380     1520		      adds    r14 = 384, r12
00A0108000C0     1521		      tbit.z  pr3, pr2 = r8, 0
004000000000     1522		      nop.b   0 ;;
			   }
			   { .mfb 
0080C0E00040     1530		      ld8     r1 = [r14]
000008000000     1531		      nop.f   0
0086001C0003     1532	       (pr3)  br.cond.dpnt.few L$168
			   }
			   { .mmi 
010802E30B80     1540		      adds    r46 = 24, r46 ;;								   // 001684
00BC8AE01A00     1541		      st4     [r46] = r0, -24
000008000000     1542		      nop.i   0 ;;
			   }
	         1550	L$166:												   // 001674
			   { .mib 
010802E40B80     1550		      adds    r46 = 32, r46								   // 001694
0000B5100AC0     1551		      sxt4    r43 = NEXT_POS			// r43 = r81
004000000000     1552		      nop.b   0 ;;
			   }
			   { .mmi 
00A042E30440     1560		      ld2     r17 = [r46], 24 ;;
000008000000     1561		      nop.m   0

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 101
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

0000B1101B40     1562		      sxt4    r109 = r17 ;;
			   }
			   { .mii 
0119F80FC440     1570		      adds    r17 = -2, r0
01C006D00180     1571		      cmp.eq  pr6, pr0 = r0, r109
000008000000     1572		      nop.i   0 ;;
			   }
			   { .mmi 
001000000046     1580	       (pr6)  break.m 1048577
00C7080DA1C0     1581		      setf.sig f7 = r109
012000002640     1582		      mov     r25 = 1 ;;								   // 001695
			   }
			   { .mfi 
00C708056180     1590		      setf.sig f6 = r43									   // 001694
0000E000E240     1591		      fcvt.xf f9 = f7
000008000000     1592		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     15A0		      nop.m   0
0000E000C200     15A1		      fcvt.xf f8 = f6
000008000000     15A2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     15B0		      nop.m   0
000630910280     15B1		      frcpa.s1 f10, pr6 = f8, f9
000008000000     15B2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     15C0		      nop.m   0
018448A021C6     15C1	       (pr6)  fnma.s1 f7 = f10, f9, f1
000008000000     15C2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     15D0		      nop.m   0
010438A142C6     15D1	       (pr6)  fma.s1  f11 = f10, f7, f10
000008000000     15D2		      nop.i   0
			   }
			   { .mfi 
000008000000     15E0		      nop.m   0
010438700186     15E1	       (pr6)  fma.s1  f6 = f7, f7, f0
000008000000     15E2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     15F0		      nop.m   0
0104508001C6     15F1	       (pr6)  fma.s1  f7 = f8, f10, f0
000008000000     15F2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1600		      nop.m   0
010430B16286     1601	       (pr6)  fma.s1  f10 = f11, f6, f11
000008000000     1602		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1610		      nop.m   0
0184389102C6     1611	       (pr6)  fnma.s1 f11 = f9, f7, f8
000008000000     1612		      nop.i   0
			   }

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 102
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   { .mfi 
000008000000     1620		      nop.m   0
018448A02186     1621	       (pr6)  fnma.s1 f6 = f10, f9, f1
000008000000     1622		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1630		      nop.m   0
010430A14286     1631	       (pr6)  fma.s1  f10 = f10, f6, f10
000008000000     1632		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1640		      nop.m   0
010450B0E1C6     1641	       (pr6)  fma.s1  f7 = f11, f10, f7
000008000000     1642		      nop.i   0
			   }
			   { .mfi 
000008000000     1650		      nop.m   0
018450902186     1651	       (pr6)  fnma.s1 f6 = f9, f10, f1
000008000000     1652		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1660		      nop.m   0
010430A142C6     1661	       (pr6)  fma.s1  f11 = f10, f6, f10
000008000000     1662		      nop.i   0
			   }
			   { .mfi 
000008000000     1670		      nop.m   0
018438910186     1671	       (pr6)  fnma.s1 f6 = f9, f7, f8
000008000000     1672		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1680		      nop.m   0
010430B0E286     1681	       (pr6)  fma.s1  f10 = f11, f6, f7
000008000000     1682		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1690		      nop.m   0
0004D00141C0     1691		      fcvt.fx.trunc.s1 f7 = f10
000008000000     1692		      nop.i   0 ;;
			   }
			   { .mmi 
00870800F000     16A0		      getf.sig r64 = f7 ;;
010804003000     16A1		      adds    r64 = 1, r64
000008000000     16A2		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8AE81200     16B0		      st4     [r46] = r64, -56 ;;
000008000000     16B1		      nop.m   0
0000B2E01E00     16B2		      sxt4    r120 = r46								   // 001695
			   }
			   { .mfb 
000008000000     16C0		      nop.m   0
000008000000     16C1		      nop.f   0
00A000001000     16C2		      br.call.sptk.many br0 = SYS$READ
			   }
			   { .mii 
010802E10B80     16D0		      adds    r46 = 8, r46								   // 001697

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 103
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

010818C00380     16D1		      adds    r14 = 384, r12								   // 001695
000008000000     16D2		      nop.i   0 ;;
			   }
			   { .mmi 
00B08AEF0D00     16E0		      ld4     r52 = [r46], -8								   // 001697
0080C0E00040     16E1		      ld8     r1 = [r14]								   // 001695
000008000000     16E2		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     16F0		      nop.m   0
00A0134000C0     16F1		      tbit.z  pr3, pr2 = r52, 0								   // 001697
00860004E003     16F2	       (pr3)  br.cond.dpnt.few L$169
			   }
	         1700	L$163:												   // 001671
			   { .mib 
010802E40B80     1700		      adds    r46 = 32, r46								   // 001725
0000B5101B00     1701		      sxt4    r108 = NEXT_POS			// r108 = r81
004000000000     1702		      nop.b   0 ;;
			   }
			   { .mmi 
00A042E04440     1710		      ld2     r17 = [r46], 2 ;;
000008000000     1711		      nop.m   0
0000B1101BC0     1712		      sxt4    r111 = r17 ;;
			   }
			   { .mii 
0119F80FC440     1720		      adds    r17 = -2, r0
01C006F00180     1721		      cmp.eq  pr6, pr0 = r0, r111
000008000000     1722		      nop.i   0 ;;
			   }
			   { .mmi 
001000000046     1730	       (pr6)  break.m 1048577
00C7080DE1C0     1731		      setf.sig f7 = r111
000008000000     1732		      nop.i   0 ;;
			   }
			   { .mmi 
00C7080D8180     1740		      setf.sig f6 = r108
00A042E0D640     1741		      ld2     r89 = [r46], 6
000008000000     1742		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1750		      nop.m   0
0000E000E240     1751		      fcvt.xf f9 = f7
000008000000     1752		      nop.i   0
			   }
			   { .mfi 
000008000000     1760		      nop.m   0
0000E000C200     1761		      fcvt.xf f8 = f6
000008000000     1762		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1770		      nop.m   0
000630910280     1771		      frcpa.s1 f10, pr6 = f8, f9
000008000000     1772		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1780		      nop.m   0
018448A021C6     1781	       (pr6)  fnma.s1 f7 = f10, f9, f1

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 104
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     1782		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1790		      nop.m   0
010438A142C6     1791	       (pr6)  fma.s1  f11 = f10, f7, f10
000008000000     1792		      nop.i   0
			   }
			   { .mfi 
000008000000     17A0		      nop.m   0
010438700186     17A1	       (pr6)  fma.s1  f6 = f7, f7, f0
000008000000     17A2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     17B0		      nop.m   0
0104508001C6     17B1	       (pr6)  fma.s1  f7 = f8, f10, f0
000008000000     17B2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     17C0		      nop.m   0
010430B16286     17C1	       (pr6)  fma.s1  f10 = f11, f6, f11
000008000000     17C2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     17D0		      nop.m   0
0184389102C6     17D1	       (pr6)  fnma.s1 f11 = f9, f7, f8
000008000000     17D2		      nop.i   0
			   }
			   { .mfi 
000008000000     17E0		      nop.m   0
018448A02186     17E1	       (pr6)  fnma.s1 f6 = f10, f9, f1
000008000000     17E2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     17F0		      nop.m   0
010430A14286     17F1	       (pr6)  fma.s1  f10 = f10, f6, f10
000008000000     17F2		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1800		      nop.m   0
010450B0E1C6     1801	       (pr6)  fma.s1  f7 = f11, f10, f7
000008000000     1802		      nop.i   0
			   }
			   { .mfi 
000008000000     1810		      nop.m   0
018450902186     1811	       (pr6)  fnma.s1 f6 = f9, f10, f1
000008000000     1812		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1820		      nop.m   0
010430A142C6     1821	       (pr6)  fma.s1  f11 = f10, f6, f10
000008000000     1822		      nop.i   0
			   }
			   { .mfi 
000008000000     1830		      nop.m   0
018438910186     1831	       (pr6)  fnma.s1 f6 = f9, f7, f8
000008000000     1832		      nop.i   0 ;;
			   }

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 105
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   { .mfi 
000008000000     1840		      nop.m   0
010430B0E286     1841	       (pr6)  fma.s1  f10 = f11, f6, f7
000008000000     1842		      nop.i   0
			   }
			   { .mfi 
00C7080DE1C0     1850		      setf.sig f7 = r111
000008000000     1851		      nop.f   0
000008000000     1852		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1860		      nop.m   0
0004D0014200     1861		      fcvt.fx.trunc.s1 f8 = f10
000008000000     1862		      nop.i   0 ;;
			   }
			   { .mfi 
000008000000     1870		      nop.m   0
01D040700240     1871		      xma.l   f9 = f7, f8, f0
000008000000     1872		      nop.i   0 ;;
			   }
			   { .mmi 
008708013A80     1880		      getf.sig r106 = f9 ;;
01002EAD8440     1881		      sub     r17 = r108, r106
000008000000     1882		      nop.i   0 ;;
			   }
			   { .mfb 
01A445922000     1890		      cmp4.ltu pr0, pr8 = r17, r89
000008000000     1891		      nop.f   0
008600020008     1892	       (pr8)  br.cond.dpnt.few L$171
			   }
			   { .mii 
0100291B3640     18A0		      sub     r89 = r89, r17								   // 001742
010800CF0BC0     18A1		      adds    r47 = 120, r12								   // 001740
010800CF0A80     18A2		      adds    r42 = 120, r12								   // 001744
			   }
			   { .mmi 
00B08AEB1C40     18B0		      ld4     r113 = [r46], -40								   // 001745
010802868A00     18B1		      adds    r40 = 52, r40								   // 001746
010800CF0B40     18B2		      adds    r45 = 120, r12 ;;								   // 001748
			   }
			   { .mii 
01A405984240     18C0		      cmp4.ltu pr9, pr0 = REQ_LENGTH, r89	// pr9, pr0 = r66, r89			   // 001740
0000B1100440     18C1		      sxt4    r17 = r17									   // 001745
0000B7101C40     18C2		      sxt4    r113 = r113 ;;
			   }
			   { .mmi 
010804201649     18D0	       (pr9)  mov     r89 = REQ_LENGTH			// r89 = r66				   // 001740
00A042809D00     18D1		      ld2     r116 = [r40], 4								   // 001746
0100011E3E80     18D2		      add     r122 = r113, r17 ;;							   // 001745
			   }
			   { .mmi 
008C82FB2000     18E0		      st4     [r47] = r89								   // 001740
00B08A8F99C0     18E1		      ld4     r103 = [r40], -4								   // 001746
000008000000     18E2		      nop.i   0
			   }
			   { .mib 
008082A01E40     18F0		      ld4     r121 = [r42]								   // 001744

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 106
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

0000B7401D00     18F1		      sxt4    r116 = r116								   // 001746
004000000000     18F2		      nop.b   0 ;;
			   }
			   { .mii 
008082D00B40     1900		      ld4     r45 = [r45]								   // 001748
0000B67019C0     1901		      sxt4    r103 = r103								   // 001746
000097901E40     1902		      zxt4    r121 = r121 ;;								   // 001744
			   }
			   { .mii 
0100074CFE00     1910		      add     r120 = r103, r116								   // 001746
010002DA3440     1911		      add     NEXT_POS = NEXT_POS, r45		// r81 = r81, r45			   // 001752
01002AD85080     1912		      sub     REQ_LENGTH = REQ_LENGTH, r45	// r66 = r66, r45			   // 001750
			   }
			   { .mfb 
000008000000     1920		      nop.m   0
000008000000     1921		      nop.f   0
00A000001000     1922		      br.call.sptk.many br0 = OTS$MOVE ;;						   // 001744
			   }
			   { .mii 
008042800C00     1930		      ld2     r48 = [r40]								   // 001748
010818C00380     1931		      adds    r14 = 384, r12								   // 001744
018C042000C0     1932		      cmp4.lt pr3, pr0 = 0, REQ_LENGTH ;;	// pr3, pr0 = 0, r66			   // 001669
			   }
			   { .mmi 
010002D60B40     1940		      add     r45 = r48, r45								   // 001748
0080C0E00040     1941		      ld8     r1 = [r14]								   // 001744
000008000000     1942		      nop.i   0 ;;
			   }
			   { .mbb 
00BC4A85B300     1950		      st2     [r40] = r45, -52								   // 001748
0095FFF36003     1951	       (pr3)  br.cond.dptk.few L$161								   // 001669
00800015C000     1952		      br.sptk.few L$159 ;;
			   }
	         1960	L$169:												   // 001697
			   { .mfb 
01C434A68000     1960		      cmp4.eq pr0, pr6 = r52, r74							   // 001699
000008000000     1961		      nop.f   0
00860014A006     1962	       (pr6)  br.cond.dpnt.few L$176
			   }
			   { .mmi 
010802868A00     1970		      adds    r40 = 52, r40 ;;								   // 001702
00B04A898D80     1971		      ld2     r54 = [r40], -52
000008000000     1972		      nop.i   0 ;;
			   }
			   { .mbb 
01C443600000     1980		      cmp4.eq pr0, pr8 = r0, r54
008600140008     1981	       (pr8)  br.cond.dpnt.few L$178
008000006000     1982		      br.sptk.few L$48 ;;
			   }
	         1990	L$171:												   // 001725
			   { .mmi 
010802868A00     1990		      adds    r40 = 52, r40 ;;								   // 001727
00B04A898DC0     1991		      ld2     r55 = [r40], -52
000008000000     1992		      nop.i   0 ;;
			   }
			   { .mfb 
01C453700000     19A0		      cmp4.eq pr0, pr10 = r0, r55

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 107
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     19A1		      nop.f   0
00860014C00A     19A2	       (pr10) br.cond.dpnt.few L$179
			   }
	         19B0	L$48:												   // 000357
			   { .mii 
010802860A00     19B0		      adds    r40 = 48, r40								   // 003170
012000800F80     19B1		      addl    r62 = 131072, r0
000008000000     19B2		      nop.i   0 ;;
			   }
			   { .mmi 
008082800EC0     19C0		      ld4     r59 = [r40] ;;
010073E76F80     19C1		      or      r62 = r59, r62
00A403B58EC0     19C2		      extr.u  r59 = r59, 22, 1 ;;							   // 003176
			   }
			   { .mii 
008C8287C000     19D0		      st4     [r40] = r62								   // 003170
00A063B00340     19D1		      tbit.z  pr13, pr12 = r59, 0							   // 003176
0119FA8A0A00     19D2		      adds    r40 = -48, r40								   // 003170
			   }
			   { .mfb 
000008000000     19E0		      nop.m   0
000008000000     19E1		      nop.f   0
00860016000D     19E2	       (pr13) br.cond.dpnt.few L$181 ;;								   // 003176
			   }
			   { .mmi 
010802834A00     19F0		      adds    r40 = 26, r40 ;;								   // 003178
00B04A8ECFC0     19F1		      ld2     r63 = [r40], -10
000008000000     19F2		      nop.i   0 ;;
			   }
			   { .mmi 
00A042810F00     1A00		      ld2     r60 = [r40], 8 ;;								   // 003177
00B04A8D1A40     1A01		      ld2     r105 = [r40], -24								   // 003179
010003F78F00     1A02		      add     r60 = r60, r63 ;;								   // 003177
			   }
			   { .mmi 
018476978000     1A10		      cmp4.lt pr0, pr14 = r60, r105 ;;							   // 003178
01C00000134E     1A11	       (pr14) cmp.eq.unc pr13, pr0 = r0, r0							   // 003176
000008000000     1A12		      nop.i   0
			   }
			   { .mfb 
000008000000     1A20		      nop.m   0
000008000000     1A21		      nop.f   0
00860015800D     1A22	       (pr13) br.cond.dpnt.few L$181
			   }
			   { .mii 
012002001040     1A30		      addl    r65 = 524288, r0								   // 003188
012000006640     1A31		      mov     r25 = 3									   // 003191
0000B0001E80     1A32		      sxt4    r122 = r0 ;;
			   }
			   { .mii 
01007417CF80     1A40		      or      r62 = r62, r65								   // 003188
0000B0001E40     1A41		      sxt4    r121 = r0									   // 003191
0000B2001E00     1A42		      sxt4    r120 = IOB			// r120 = r32
			   }
			   { .mmi 
010802860A00     1A50		      adds    r40 = 48, r40 ;;								   // 003188
00BC8A87D400     1A51		      st4     [r40] = r62, -48

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 108
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     1A52		      nop.i   0
			   }
			   { .mfb 
000008000000     1A60		      nop.m   0
000008000000     1A61		      nop.f   0
00A000001000     1A62		      br.call.sptk.many br0 = XPO$CLOSE							   // 003191
			   }
			   { .mib 
010818C00380     1A70		      adds    r14 = 384, r12
00A0108000C0     1A71		      tbit.z  pr3, pr2 = r8, 0
004000000000     1A72		      nop.b   0 ;;
			   }
			   { .mfb 
0080C0E00040     1A80		      ld8     r1 = [r14]
000008000000     1A81		      nop.f   0
008600150003     1A82	       (pr3)  br.cond.dpnt.few L$6
			   }
			   { .mii 
012000006640     1A90		      mov     r25 = 3									   // 003195
0000B0001E80     1A91		      sxt4    r122 = r0
0000B0001E40     1A92		      sxt4    r121 = r0 ;;
			   }
			   { .mib 
000008000000     1AA0		      nop.m   0
0000B2001E00     1AA1		      sxt4    r120 = IOB			// r120 = r32
00A000001000     1AA2		      br.call.sptk.many br0 = XPO$OPEN
			   }
			   { .mib 
010818C00380     1AB0		      adds    r14 = 384, r12
00A0108000C0     1AB1		      tbit.z  pr3, pr2 = r8, 0
004000000000     1AB2		      nop.b   0 ;;
			   }
			   { .mfb 
0080C0E00040     1AC0		      ld8     r1 = [r14]
000008000000     1AC1		      nop.f   0
008600148003     1AC2	       (pr3)  br.cond.dpnt.few L$6
			   }
			   { .mii 
010802860A00     1AD0		      adds    r40 = 48, r40								   // 003200
013FFDCFF400     1AD1		      addl    r80 = -524289, r0 ;;
01080A8515C0     1AD2		      adds    r87 = 168, r40								   // 003202
			   }
			   { .mmi 
008082801140     1AE0		      ld4     r69 = [r40] ;;								   // 003200
01006508B100     1AE1		      and     r68 = r69, r80
000008000000     1AE2		      nop.i   0 ;;
			   }
			   { .mmb 
00BC8A889400     1AF0		      st4     [r40] = r68, -48
008C8578E000     1AF1		      st4     [r87] = r71								   // 003202
0091FFD34000     1AF2		      br.sptk.few L$46 ;;								   // 000350
			   }
	         1B00	L$55:												   // 001110
			   { .mii 
01080A8B1700     1B00		      adds    r92 = 216, r40								   // 001112
01080A8B9740     1B01		      adds    r93 = 220, r40
000008000000     1B02		      nop.i   0

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 109
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mlx 
000008000000     1B10		      nop.m   0
000000000000     1B11		      movl    r88 = 2138250 ;;
01941042AC
			   }
			   { .mmb 
008C85CB0000     1B20		      st4     [r92] = r88
008C85D10000     1B21		      st4     [r93] = $XPO$STATUS		// [r93] = r8
00800013C000     1B22		      br.sptk.few L$6 ;;
			   }
	         1B30	L$62:												   // 001149
			   { .mii 
01080A8B1780     1B30		      adds    r94 = 216, r40								   // 001151
01080A8B9580     1B31		      adds    r86 = 220, r40
000008000000     1B32		      nop.i   0
			   }
			   { .mlx 
000008000000     1B40		      nop.m   0
000000000000     1B41		      movl    r96 = 2138362 ;;
0194105EB0
			   }
			   { .mmb 
008C85EC0000     1B50		      st4     [r94] = r96
008C856BE000     1B51		      st4     [r86] = $XPO$STATUS		// [r86] = r95
008000136000     1B52		      br.sptk.few L$6 ;;
			   }
	         1B60	L$66:												   // 001156
			   { .mii 
01080A8B10C0     1B60		      adds    r67 = 216, r40								   // 001158
01080A8B9880     1B61		      adds    r98 = 220, r40
000008000000     1B62		      nop.i   0
			   }
			   { .mlx 
000008000000     1B70		      nop.m   0
800000000000     1B71		      movl    r97 = 2138370 ;;
01942040B0
			   }
			   { .mmb 
008C843C2000     1B80		      st4     [r67] = r97
008C862C6000     1B81		      st4     [r98] = $XPO$STATUS		// [r98] = r99
008000130000     1B82		      br.sptk.few L$6 ;;
			   }
	         1B90	L$68:												   // 001167
			   { .mii 
01080A8B1980     1B90		      adds    r102 = 216, r40								   // 001169
01080A8B8AC0     1B91		      adds    r43 = 220, r40
000008000000     1B92		      nop.i   0
			   }
			   { .mlx 
000008000000     1BA0		      nop.m   0
800000000000     1BA1		      movl    r101 = 2138794 ;;
0194504AB2
			   }
			   { .mmb 
008C866CA000     1BB0		      st4     [r102] = r101
008C82BD0000     1BB1		      st4     [r43] = $XPO$STATUS		// [r43] = r104

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 110
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

00800012A000     1BB2		      br.sptk.few L$6 ;;
			   }
	         1BC0	L$70:												   // 001183
			   { .mii 
01080A8B1000     1BC0		      adds    r64 = 216, r40								   // 001185
01080A8B96C0     1BC1		      adds    r91 = 220, r40
000008000000     1BC2		      nop.i   0
			   }
			   { .mlx 
000008000000     1BD0		      nop.m   0
800000000000     1BD1		      movl    r109 = 2138794 ;;
0194504AB6
			   }
			   { .mmb 
008C840DA000     1BE0		      st4     [r64] = r109
008C85BE4000     1BE1		      st4     [r91] = $XPO$STATUS		// [r91] = r114
008000124000     1BE2		      br.sptk.few L$6 ;;
			   }
	         1BF0	L$72:												   // 001187
			   { .mii 
012000006640     1BF0		      mov     r25 = 3									   // 001190
0000B0001E80     1BF1		      sxt4    r122 = r0
0000B7301E40     1BF2		      sxt4    r121 = r115
			   }
			   { .mib 
000008000000     1C00		      nop.m   0
0000B2001E00     1C01		      sxt4    r120 = IOB			// r120 = r32
00A000001000     1C02		      br.call.sptk.many br0 = XPO$RMS_ERROR
			   }
			   { .mmi 
010818C00380     1C10		      adds    r14 = 384, r12 ;;
0080C0E00040     1C11		      ld8     r1 = [r14]
000008000000     1C12		      nop.i   0
			   }
			   { .mfb 
000008000000     1C20		      nop.m   0
000008000000     1C21		      nop.f   0
00800011C000     1C22		      br.sptk.few L$6 ;;								   // 001192
			   }
	         1C30	L$77:												   // 001197
			   { .mii 
010802860A00     1C30		      adds    r40 = 48, r40								   // 001201
012000801BC0     1C31		      addl    r111 = 131072, r0
000008000000     1C32		      nop.i   0 ;;
			   }
			   { .mmi 
008082801B00     1C40		      ld4     r108 = [r40] ;;
010076FD9B00     1C41		      or      r108 = r108, r111
000008000000     1C42		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8A8D9400     1C50		      st4     [r40] = r108, -48 ;;
000008000000     1C51		      nop.m   0
000008000000     1C52		      nop.i   0
			   }
	         1C60	L$75:												   // 001208
			   { .mii 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 111
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

010800CE5640     1C60		      adds    r89 = 114, r12								   // 001210
010802870A00     1C61		      adds    r40 = 56, r40								   // 001212
012000002B00     1C62		      mov     INDEX = 1 ;;			// r44 = 1				   // 001214
			   }
			   { .mmi 
008045901640     1C70		      ld2     r89 = [r89]								   // 001210
00B08A8F8A80     1C71		      ld4     BUFFER_POINTER = [r40], -4	// r42 = [r40], -4			   // 001212
000008000000     1C72		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     1C80		      nop.m   0
00A47D901640     1C81		      extr.u  r89 = r89, 0, 16								   // 001210
004000000000     1C82		      nop.b   0 ;;
			   }
			   { .mmb 
018C15900000     1C90		      cmp4.lt pr0, pr2 = 0, r89								   // 001214
00BC4A8B3300     1C91		      st2     [r40] = r89, -52								   // 001210
008600024002     1C92	       (pr2)  br.cond.dpnt.few L$187								   // 001214
			   }
			   { .mmi 
0119FD9FB9C0     1CA0		      adds    r103 = -3, r89 ;;
01844E700000     1CA1		      cmp4.lt pr0, pr9 = r0, r103
0184367B21C0     1CA2		      cmp4.lt pr7, pr6 = r89, r103 ;;
			   }
			   { .mbb 
01C2300001C9     1CB0	       (pr9)  cmp.eq.or.andcm pr7, pr6 = r0, r0
008600002006     1CB1	       (pr6)  br.cond.dpnt.few L$191
008600018007     1CB2	       (pr7)  br.cond.dpnt.few L$193 ;;
			   }
	         1CC0	L$191:
			   { .mii 
010802C08B00     1CC0		      adds    r44 = 4, r44
0000B2A01D00     1CC1		      sxt4    r116 = BUFFER_POINTER		// r116 = r42				   // 001215
010802A02C40     1CC2		      adds    r49 = 1, BUFFER_POINTER		// r49 = 1, r42
			   }
			   { .mmi 
010802A04C00     1CD0		      adds    r48 = 2, BUFFER_POINTER		// r48 = 2, r42
010802A06E40     1CD1		      adds    r57 = 3, BUFFER_POINTER		// r57 = 3, r42
010802A08A80     1CD2		      adds    r42 = 4, r42 ;;
			   }
			   { .mii 
018452CCE000     1CE0		      cmp4.lt pr0, pr10 = r103, INDEX		// pr0, pr10 = r103, r44		   // 001214
0000B3100C40     1CE1		      sxt4    r49 = r49									   // 001215
0000B3000C00     1CE2		      sxt4    r48 = r48
			   }
			   { .mii 
008007400CC0     1CF0		      ld1     r51 = [r116]
0000B3900E40     1CF1		      sxt4    r57 = r57 ;;
0101633FECC0     1CF2		      and     r51 = 127, r51 ;;
			   }
			   { .mmi 
008C07466000     1D00		      st1     [r116] = r51
008003100D40     1D01		      ld1     r53 = [r49]
000008000000     1D02		      nop.i   0 ;;
			   }
			   { .mmi 
0101635FED40     1D10		      and     r53 = 127, r53 ;;

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 112
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

008C0316A000     1D11		      st1     [r49] = r53
000008000000     1D12		      nop.i   0
			   }
			   { .mmi 
008003000D80     1D20		      ld1     r54 = [r48] ;;
0101636FED80     1D21		      and     r54 = 127, r54
000008000000     1D22		      nop.i   0 ;;
			   }
			   { .mmi 
008C0306C000     1D30		      st1     [r48] = r54
008003900DC0     1D31		      ld1     r55 = [r57]
000008000000     1D32		      nop.i   0 ;;
			   }
			   { .mmi 
0101637FEDC0     1D40		      and     r55 = 127, r55 ;;
008C0396E000     1D41		      st1     [r57] = r55
000008000000     1D42		      nop.i   0
			   }
			   { .mfb 
000008000000     1D50		      nop.m   0
000008000000     1D51		      nop.f   0
0095FFFEE00A     1D52	       (pr10) br.cond.dptk.few L$191								   // 001214
			   }
			   { .mfb 
018402CB2340     1D60		      cmp4.lt pr13, pr0 = r89, INDEX		// pr13, pr0 = r89, r44
000008000000     1D61		      nop.f   0
00860000A00D     1D62	       (pr13) br.cond.dpnt.few L$187 ;;
			   }
	         1D70	L$193:
			   { .mii 
010802C02B00     1D70		      adds    r44 = 1, r44
0000B2A01440     1D71		      sxt4    r81 = BUFFER_POINTER		// r81 = r42				   // 001215
010802A02A80     1D72		      adds    r42 = 1, r42 ;;
			   }
			   { .mmi 
018472CB2000     1D80		      cmp4.lt pr0, pr14 = r89, INDEX		// pr0, pr14 = r89, r44			   // 001214
008005100E00     1D81		      ld1     r56 = [r81]								   // 001215
000008000000     1D82		      nop.i   0 ;;
			   }
			   { .mmi 
0101638FEE00     1D90		      and     r56 = 127, r56 ;;
008C05170000     1D91		      st1     [r81] = r56
000008000000     1D92		      nop.i   0
			   }
			   { .mfb 
000008000000     1DA0		      nop.m   0
000008000000     1DA1		      nop.f   0
0095FFFFA00E     1DA2	       (pr14) br.cond.dptk.few L$193								   // 001214
			   }
	         1DB0	L$187:												   // 001208
			   { .mmi 
010802860A00     1DB0		      adds    r40 = 48, r40 ;;								   // 001222
00B08A8A0FC0     1DB1		      ld4     r63 = [r40], -48
000008000000     1DB2		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1DC0		      nop.m   0

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 113
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

00A403F08FC0     1DC1		      extr.u  r63 = r63, 2, 1 ;;
00A013F000C0     1DC2		      tbit.z  pr3, pr2 = r63, 0
			   }
			   { .mfb 
000008000000     1DD0		      nop.m   0
000008000000     1DD1		      nop.f   0
0086000E6003     1DD2	       (pr3)  br.cond.dpnt.few L$6
			   }
			   { .mmi 
010802868A00     1DE0		      adds    r40 = 52, r40 ;;
00B04A898F00     1DE1		      ld2     r60 = [r40], -52
000008000000     1DE2		      nop.i   0 ;;
			   }
			   { .mmi 
01844DA78200     1DF0		      cmp4.lt pr8, pr9 = r60, REQ_LENGTH ;;	// pr8, pr9 = r60, r90
01C0000010C9     1DF1	       (pr9)  cmp.eq.unc pr3, pr0 = r0, r0
01C000001088     1DF2	       (pr8)  cmp.eq.unc pr2, pr0 = r0, r0
			   }
			   { .bbb 
008600002002     1E00	       (pr2)  br.cond.dpnt.few L$195
004000000000     1E01		      nop.b   0
0086000E0003     1E02	       (pr3)  br.cond.dpnt.few L$6
			   }
	         1E10	L$195:
			   { .mlx 
01080A8B1040     1E10		      adds    r65 = 216, r40								   // 001224
800000000000     1E11		      movl    r105 = 2129937 ;;
0190004474
			   }
			   { .mfb 
008C841D2000     1E20		      st4     [r65] = r105
000008000000     1E21		      nop.f   0
0080000DC000     1E22		      br.sptk.few L$6 ;;
			   }
	         1E30	L$84:												   // 001272
			   { .mmi 
012818450F80     1E30		      addl    r62 = 98728, r0 ;;
01C433E64000     1E31		      cmp4.eq pr0, pr6 = r50, r62
000008000000     1E32		      nop.i   0
			   }
			   { .mfb 
000008000000     1E40		      nop.m   0
000008000000     1E41		      nop.f   0
00860002A006     1E42	       (pr6)  br.cond.dpnt.few L$196
			   }
			   { .mlx 
01080A8B1400     1E50		      adds    r80 = 216, r40								   // 001278
000000000000     1E51		      movl    r110 = 2138666 ;;
0194404AB7
			   }
			   { .mfi 
008C850DC000     1E60		      st4     [r80] = r110
000008000000     1E61		      nop.f   0
000008000000     1E62		      nop.i   0
			   }
	         1E70	L$82:												   // 001270
			   { .mmi 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 114
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

010802860A00     1E70		      adds    r40 = 48, r40 ;;								   // 001294
00B08A8A1480     1E71		      ld4     r82 = [r40], -48
000008000000     1E72		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     1E80		      nop.m   0
00A405211480     1E81		      extr.u  r82 = r82, 4, 1 ;;
00A0152000C0     1E82		      tbit.z  pr3, pr2 = r82, 0
			   }
			   { .mfb 
000008000000     1E90		      nop.m   0
000008000000     1E91		      nop.f   0
00860002E003     1E92	       (pr3)  br.cond.dpnt.few L$199
			   }
			   { .mii 
010800C915C0     1EA0		      adds    r87 = 72, r12								   // 001296
012FF80FF140     1EA1		      addl    r69 = 65535, r0
000008000000     1EA2		      nop.i   0 ;;
			   }
			   { .mmi 
0080457015C0     1EB0		      ld2     r87 = [r87] ;;
01C43C5AE000     1EB1		      cmp4.eq pr0, pr7 = r87, r69
000008000000     1EB2		      nop.i   0
			   }
			   { .mfb 
000008000000     1EC0		      nop.m   0
000008000000     1EC1		      nop.f   0
008600024007     1EC2	       (pr7)  br.cond.dpnt.few L$207
			   }
			   { .mmi 
010802E44B80     1ED0		      adds    r46 = 34, r46 ;;								   // 001297
00B04AEBCA40     1ED1		      ld2     r41 = [r46], -34
000008000000     1ED2		      nop.i   0 ;;
			   }
			   { .mmi 
01CC4A902000     1EE0		      cmp4.eq pr0, pr9 = 1, r41 ;;
01C0000011C9     1EE1	       (pr9)  cmp.eq.unc pr7, pr0 = r0, r0							   // 001296
000008000000     1EE2		      nop.i   0
			   }
			   { .mfb 
000008000000     1EF0		      nop.m   0
000008000000     1EF1		      nop.f   0
00860001E007     1EF2	       (pr7)  br.cond.dpnt.few L$207								   // 001297
			   }
			   { .mmi 
010802E50B80     1F00		      adds    r46 = 40, r46 ;;								   // 001298
00B08AEB1100     1F01		      ld4     r68 = [r46], -40
000008000000     1F02		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     1F10		      nop.m   0
0000B4401100     1F11		      sxt4    r68 = r68
004000000000     1F12		      nop.b   0 ;;
			   }
			   { .mmi 
008004401100     1F20		      ld1     r68 = [r68] ;;
01CC5C418000     1F21		      cmp4.eq pr0, pr11 = 12, r68

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 115
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

000008000000     1F22		      nop.i   0
			   }
			   { .mfb 
000008000000     1F30		      nop.m   0
000008000000     1F31		      nop.f   0
00860001600B     1F32	       (pr11) br.cond.dpnt.few L$207
			   }
			   { .mlx 
010802894A00     1F40		      adds    r40 = 74, r40								   // 001302
000000000000     1F41		      movl    r74 = 2129953 ;;								   // 001304
0190004865
			   }
			   { .mii 
008042801180     1F50		      ld2     r70 = [r40]								   // 001302
01080A81D2C0     1F51		      adds    r75 = 142, r40								   // 001304
010802804A00     1F52		      adds    r40 = 2, r40 ;;								   // 001303
			   }
			   { .mmi 
00BC8A801F80     1F60		      st4     [r40] = r0, -2
008C84B94000     1F61		      st4     [r75] = r74								   // 001304
0000AC601180     1F62		      sxt2    r70 = r70 ;;								   // 001302
			   }
			   { .mmi 
010804603180     1F70		      adds    r70 = 1, r70 ;;
00BC4A88CD80     1F71		      st2     [r40] = r70, -74								   // 001301
000008000000     1F72		      nop.i   0
			   }
			   { .mfb 
000008000000     1F80		      nop.m   0
000008000000     1F81		      nop.f   0
008000014000     1F82		      br.sptk.few L$208 ;;								   // 001296
			   }
	         1F90	L$196:												   // 001272
			   { .mii 
010802E10B80     1F90		      adds    r46 = 8, r46								   // 001283
012000006640     1F91		      mov     r25 = 3
0000B2001E00     1F92		      sxt4    r120 = IOB ;;			// r120 = r32
			   }
			   { .mmi 
00A082E09E40     1FA0		      ld4     r121 = [r46], 4 ;;
008082E01E80     1FA1		      ld4     r122 = [r46]
0000B7901E40     1FA2		      sxt4    r121 = r121 ;;
			   }
			   { .mib 
000008000000     1FB0		      nop.m   0
0000B7A01E80     1FB1		      sxt4    r122 = r122
00A000001000     1FB2		      br.call.sptk.many br0 = XPO$RMS_ERROR
			   }
			   { .mmi 
010818C00380     1FC0		      adds    r14 = 384, r12 ;;
0080C0E00040     1FC1		      ld8     r1 = [r14]
000008000000     1FC2		      nop.i   0
			   }
			   { .mfb 
000008000000     1FD0		      nop.m   0
000008000000     1FD1		      nop.f   0
0080000A6000     1FD2		      br.sptk.few L$6 ;;								   // 001286

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 116
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
	         1FE0	L$207:												   // 001296
			   { .mmi 
010800C91300     1FE0		      adds    r76 = 72, r12 ;;								   // 001314
008044C01300     1FE1		      ld2     r76 = [r76]
010802898A00     1FE2		      adds    r40 = 76, r40 ;;								   // 001313
			   }
			   { .mfb 
00BC8A898D00     1FF0		      st4     [r40] = r76, -76
000008000000     1FF1		      nop.f   0
008000006000     1FF2		      br.sptk.few L$208 ;;								   // 001296
			   }
	         2000	L$199:												   // 001294
			   { .mmi 
010802898A00     2000		      adds    r40 = 76, r40 ;;								   // 001317
008082801380     2001		      ld4     r78 = [r40]
000008000000     2002		      nop.i   0 ;;
			   }
			   { .mmi 
010804E03380     2010		      adds    r78 = 1, r78 ;;
00BC8A89CD00     2011		      st4     [r40] = r78, -76								   // 001316
000008000000     2012		      nop.i   0
			   }
	         2020	L$208:												   // 001325
			   { .mii 
010802E44B80     2020		      adds    r46 = 34, r46
010800C81700     2021		      adds    r92 = 64, r12
010800C85740     2022		      adds    r93 = 66, r12
			   }
			   { .mmi 
010800C89780     2030		      adds    r94 = 68, r12
010800C81800     2031		      adds    r96 = 64, r12
01200000A640     2032		      mov     r25 = 5 ;;
			   }
			   { .mii 
008042E01600     2040		      ld2     r88 = [r46]
0000B0001F00     2041		      sxt4    r124 = r0
0000B0001EC0     2042		      sxt4    r123 = r0 ;;
			   }
			   { .mii 
012400001E00     2050		      addl    r120 = 16384, r0
0000B4901E80     2051		      sxt4    r122 = r73
0000B6001E40     2052		      sxt4    r121 = r96
			   }
			   { .mmi 
008C45CB0000     2060		      st2     [r92] = r88
008C45D90000     2061		      st2     [r93] = r72
010802E0D200     2062		      adds    r72 = 6, r46 ;;
			   }
			   { .mmi 
008084800B80     2070		      ld4     r46 = [r72] ;;
008C85E5C000     2071		      st4     [r94] = r46
000008000000     2072		      nop.i   0
			   }
			   { .mfb 
000008000000     2080		      nop.m   0
000008000000     2081		      nop.f   0

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 117
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

00A000001000     2082		      br.call.sptk.many br0 = XST$COPY
			   }
			   { .mib 
010818C00380     2090		      adds    r14 = 384, r12
00A0108000C0     2091		      tbit.z  pr3, pr2 = $XPO$STATUS, 0		// pr3, pr2 = r8, 0
004000000000     2092		      nop.b   0 ;;
			   }
			   { .mfb 
0080C0E00040     20A0		      ld8     r1 = [r14]
000008000000     20A1		      nop.f   0
00860008C002     20A2	       (pr2)  br.cond.dpnt.few L$6
			   }
			   { .mii 
01080A8B17C0     20B0		      adds    r95 = 216, r40								   // 001327
01080A8B90C0     20B1		      adds    r67 = 220, r40
000008000000     20B2		      nop.i   0
			   }
			   { .mlx 
000008000000     20C0		      nop.m   0
000000000000     20C1		      movl    r86 = 2138386 ;;
01942044AB
			   }
			   { .mmb 
008C85FAC000     20D0		      st4     [r95] = r86
008C84310000     20D1		      st4     [r67] = $XPO$STATUS		// [r67] = r8
008000086000     20D2		      br.sptk.few L$6 ;;
			   }
	         20E0	L$97:												   // 001379
			   { .mii 
01080A8B1880     20E0		      adds    r98 = 216, r40
01080A8B98C0     20E1		      adds    r99 = 220, r40
000008000000     20E2		      nop.i   0
			   }
			   { .mlx 
000008000000     20F0		      nop.m   0
800000000000     20F1		      movl    r97 = 2138386 ;;
01942044B0
			   }
			   { .mmb 
008C862C2000     2100		      st4     [r98] = r97
008C86374000     2101		      st4     [r99] = $XPO$STATUS		// [r99] = r58
008000080000     2102		      br.sptk.few L$6 ;;
			   }
	         2110	L$103:												   // 001390
			   { .mii 
01080A8B1980     2110		      adds    r102 = 216, r40
01080A8B8AC0     2111		      adds    r43 = 220, r40
000008000000     2112		      nop.i   0
			   }
			   { .mlx 
000008000000     2120		      nop.m   0
800000000000     2121		      movl    r101 = 2138386 ;;
01942044B2
			   }
			   { .mmb 
008C866CA000     2130		      st4     [r102] = r101
008C82B7A000     2131		      st4     [r43] = $XPO$STATUS		// [r43] = r61

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 118
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

00800007A000     2132		      br.sptk.few L$6 ;;
			   }
	         2140	L$122:												   // 001416
			   { .mii 
010802860A00     2140		      adds    r40 = 48, r40								   // 001421
012000801000     2141		      addl    r64 = 131072, r0
000008000000     2142		      nop.i   0 ;;
			   }
			   { .mmi 
008082801A00     2150		      ld4     r104 = [r40] ;;
0100740D1000     2151		      or      r64 = r104, r64
000008000000     2152		      nop.i   0 ;;
			   }
			   { .mfb 
00BC8A881400     2160		      st4     [r40] = r64, -48
000008000000     2161		      nop.f   0
0091FFD94000     2162		      br.sptk.few L$89 ;;								   // 001422
			   }
	         2170	L$120:												   // 001413
			   { .mii 
010802E10B80     2170		      adds    r46 = 8, r46								   // 001427
012000006640     2171		      mov     r25 = 3
0000B2001E00     2172		      sxt4    r120 = IOB ;;			// r120 = r32
			   }
			   { .mmi 
00A082E09E40     2180		      ld4     r121 = [r46], 4 ;;
008082E01E80     2181		      ld4     r122 = [r46]
0000B7901E40     2182		      sxt4    r121 = r121 ;;
			   }
			   { .mib 
000008000000     2190		      nop.m   0
0000B7A01E80     2191		      sxt4    r122 = r122
00A000001000     2192		      br.call.sptk.many br0 = XPO$RMS_ERROR
			   }
			   { .mmi 
010818C00380     21A0		      adds    r14 = 384, r12 ;;
0080C0E00040     21A1		      ld8     r1 = [r14]
000008000000     21A2		      nop.i   0
			   }
			   { .mfb 
000008000000     21B0		      nop.m   0
000008000000     21B1		      nop.f   0
00800006A000     21B2		      br.sptk.few L$6 ;;								   // 001430
			   }
	         21C0	L$114:												   // 001446
			   { .mii 
01080A8B1C80     21C0		      adds    r114 = 216, r40
01080A8B9A80     21C1		      adds    r106 = 220, r40
000008000000     21C2		      nop.i   0
			   }
			   { .mlx 
000008000000     21D0		      nop.m   0
800000000000     21D1		      movl    r91 = 2138386 ;;
01942044AD
			   }
			   { .mmb 
008C872B6000     21E0		      st4     [r114] = r91

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 119
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

008C86AA8000     21E1		      st4     [r106] = $XPO$STATUS		// [r106] = r84
008000064000     21E2		      br.sptk.few L$6 ;;
			   }
	         21F0	L$117:												   // 001460
			   { .mii 
01080A8B1BC0     21F0		      adds    r111 = 216, r40
01080A8B8BC0     21F1		      adds    r47 = 220, r40
000008000000     21F2		      nop.i   0
			   }
			   { .mlx 
000008000000     2200		      nop.m   0
800000000000     2201		      movl    r115 = 2138386 ;;
01942044B9
			   }
			   { .mmb 
008C86FE6000     2210		      st4     [r111] = r115
008C82FC8000     2211		      st4     [r47] = $XPO$STATUS		// [r47] = r100
00800005E000     2212		      br.sptk.few L$6 ;;
			   }
	         2220	L$128:												   // 001512
			   { .mii 
01080A8B0CC0     2220		      adds    r51 = 216, r40								   // 001514
01080A8B9D00     2221		      adds    r116 = 220, r40
000008000000     2222		      nop.i   0
			   }
			   { .mlx 
000008000000     2230		      nop.m   0
800000000000     2231		      movl    r45 = 2138386 ;;
0194204496
			   }
			   { .mmb 
008C8335A000     2240		      st4     [r51] = r45
008C874D6000     2241		      st4     [r116] = $XPO$STATUS		// [r116] = r107
008000058000     2242		      br.sptk.few L$6 ;;
			   }
	         2250	L$150:												   // 001537
			   { .mii 
010802860A00     2250		      adds    r40 = 48, r40								   // 001542
012000800D40     2251		      addl    r53 = 131072, r0
000008000000     2252		      nop.i   0 ;;
			   }
			   { .mmi 
008082800C40     2260		      ld4     r49 = [r40] ;;
010073562C40     2261		      or      r49 = r49, r53
000008000000     2262		      nop.i   0 ;;
			   }
			   { .mfb 
00BC8A863400     2270		      st4     [r40] = r49, -48
000008000000     2271		      nop.f   0
0091FFDDE000     2272		      br.sptk.few L$132 ;;								   // 001543
			   }
	         2280	L$148:												   // 001534
			   { .mii 
010802E10B80     2280		      adds    r46 = 8, r46								   // 001548
012000006640     2281		      mov     r25 = 3
0000B2001E00     2282		      sxt4    r120 = IOB ;;			// r120 = r32
			   }

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 120
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   { .mmi 
00A082E09E40     2290		      ld4     r121 = [r46], 4 ;;
008082E01E80     2291		      ld4     r122 = [r46]
0000B7901E40     2292		      sxt4    r121 = r121 ;;
			   }
			   { .mib 
000008000000     22A0		      nop.m   0
0000B7A01E80     22A1		      sxt4    r122 = r122
00A000001000     22A2		      br.call.sptk.many br0 = XPO$RMS_ERROR
			   }
			   { .mmi 
010818C00380     22B0		      adds    r14 = 384, r12 ;;
0080C0E00040     22B1		      ld8     r1 = [r14]
000008000000     22B2		      nop.i   0
			   }
			   { .mfb 
000008000000     22C0		      nop.m   0
000008000000     22C1		      nop.f   0
008000048000     22C2		      br.sptk.few L$6 ;;								   // 001551
			   }
	         22D0	L$129:												   // 001516
			   { .mii 
01080A8B1440     22D0		      adds    r81 = 216, r40								   // 001518
01080A8B8A80     22D1		      adds    r42 = 220, r40
000008000000     22D2		      nop.i   0
			   }
			   { .mlx 
000008000000     22E0		      nop.m   0
800000000000     22E1		      movl    r59 = 2138386 ;;
019420449D
			   }
			   { .mmb 
008C85176000     22F0		      st4     [r81] = r59
008C82AE0000     22F1		      st4     [r42] = $XPO$STATUS		// [r42] = r112
008000042000     22F2		      br.sptk.few L$6 ;;
			   }
	         2300	L$155:												   // 001656
			   { .mii 
01080A8B1640     2300		      adds    r89 = 216, r40								   // 001658
01080A8B8FC0     2301		      adds    r63 = 220, r40
000008000000     2302		      nop.i   0
			   }
			   { .mlx 
000008000000     2310		      nop.m   0
000000000000     2311		      movl    r44 = 2138386 ;;
0194204496
			   }
			   { .mmb 
008C85958000     2320		      st4     [r89] = r44
008C83FA6000     2321		      st4     [r63] = $XPO$STATUS		// [r63] = r83
00800003C000     2322		      br.sptk.few L$6 ;;
			   }
	         2330	L$168:												   // 001682
			   { .mii 
010802E10B80     2330		      adds    r46 = 8, r46								   // 001687
012000006640     2331		      mov     r25 = 3
0000B2001E00     2332		      sxt4    r120 = IOB ;;			// r120 = r32

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 121
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mmi 
00A082E09E40     2340		      ld4     r121 = [r46], 4 ;;
008082E01E80     2341		      ld4     r122 = [r46]
0000B7901E40     2342		      sxt4    r121 = r121 ;;
			   }
			   { .mib 
000008000000     2350		      nop.m   0
0000B7A01E80     2351		      sxt4    r122 = r122
00A000001000     2352		      br.call.sptk.many br0 = XPO$RMS_ERROR
			   }
			   { .mmi 
010818C00380     2360		      adds    r14 = 384, r12 ;;
0080C0E00040     2361		      ld8     r1 = [r14]
000008000000     2362		      nop.i   0
			   }
			   { .mfb 
000008000000     2370		      nop.m   0
000008000000     2371		      nop.f   0
008000032000     2372		      br.sptk.few L$6 ;;								   // 001690
			   }
	         2380	L$178:												   // 001702
			   { .mii 
010802860A00     2380		      adds    r40 = 48, r40								   // 001707
012000801680     2381		      addl    r90 = 131072, r0
000008000000     2382		      nop.i   0 ;;
			   }
			   { .mmi 
008082800F00     2390		      ld4     r60 = [r40] ;;
010075A78F00     2391		      or      r60 = r60, r90
000008000000     2392		      nop.i   0 ;;
			   }
			   { .mfb 
00BC8A879400     23A0		      st4     [r40] = r60, -48
000008000000     23A1		      nop.f   0
008000012000     23A2		      br.sptk.few L$159 ;;								   // 001708
			   }
	         23B0	L$176:												   // 001699
			   { .mii 
010802E10B80     23B0		      adds    r46 = 8, r46								   // 001713
012000006640     23B1		      mov     r25 = 3
0000B2001E00     23B2		      sxt4    r120 = IOB ;;			// r120 = r32
			   }
			   { .mmi 
00A082E09E40     23C0		      ld4     r121 = [r46], 4 ;;
008082E01E80     23C1		      ld4     r122 = [r46]
0000B7901E40     23C2		      sxt4    r121 = r121 ;;
			   }
			   { .mib 
000008000000     23D0		      nop.m   0
0000B7A01E80     23D1		      sxt4    r122 = r122
00A000001000     23D2		      br.call.sptk.many br0 = XPO$RMS_ERROR
			   }
			   { .mmi 
010818C00380     23E0		      adds    r14 = 384, r12 ;;
0080C0E00040     23E1		      ld8     r1 = [r14]
000008000000     23E2		      nop.i   0

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 122
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mfb 
000008000000     23F0		      nop.m   0
000008000000     23F1		      nop.f   0
008000022000     23F2		      br.sptk.few L$6 ;;								   // 001716
			   }
	         2400	L$179:												   // 001727
			   { .mii 
010802860A00     2400		      adds    r40 = 48, r40								   // 001732
012000800C80     2401		      addl    r50 = 131072, r0
000008000000     2402		      nop.i   0 ;;
			   }
			   { .mmi 
008082801A40     2410		      ld4     r105 = [r40] ;;
0100732D2C80     2411		      or      r50 = r105, r50
000008000000     2412		      nop.i   0 ;;
			   }
			   { .mmi 
00BC8A865400     2420		      st4     [r40] = r50, -48 ;;
000008000000     2421		      nop.m   0
000008000000     2422		      nop.i   0
			   }
	         2430	L$159:												   // 001669
			   { .mii 
010802868A00     2430		      adds    r40 = 52, r40								   // 001760
01C404200180     2431		      cmp4.eq pr6, pr0 = r0, REQ_LENGTH		// pr6, pr0 = r0, r66			   // 001769
000008000000     2432		      nop.i   0 ;;
			   }
			   { .mmi 
00A042841140     2440		      ld2     r69 = [r40], 32 ;;							   // 001760
008082801400     2441		      ld4     r80 = [r40]								   // 001762
01840008A080     2442		      cmp4.lt pr2, pr0 = r69, r0 ;;							   // 001760
			   }
			   { .mmi 
010804507480     2450		      adds    r82 = 3, r69
00BC8A8A3F00     2451		      st4     [r40] = NEXT_POS, -4		// [r40] = r81, -4			   // 001763
000008000000     2452		      nop.i   0 ;;
			   }
			   { .mmi 
010805201142     2460	       (pr2)  mov     r69 = r82									   // 001760
00BC8A8A1C00     2461		      st4     [r40] = r80, -16								   // 001762
000008000000     2462		      nop.i   0 ;;
			   }
			   { .mii 
000008000000     2470		      nop.m   0
0000B4501140     2471		      sxt4    r69 = r69 ;;								   // 001760
00A5EC50B140     2472		      shr     r69 = r69, 2 ;;
			   }
			   { .mfb 
00BC4A88B000     2480		      st2     [r40] = r69, -64
000008000000     2481		      nop.f   0
008600010006     2482	       (pr6)  br.cond.dpnt.few L$6 ;;								   // 001769
			   }
			   { .mlx 
01080A8B11C0     2490		      adds    r71 = 216, r40								   // 001771
000000000000     2491		      movl    r68 = 2129937 ;;
0190004462

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 123
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mfb 
008C84788000     24A0		      st4     [r71] = r68
000008000000     24A1		      nop.f   0
00800000C000     24A2		      br.sptk.few L$6 ;;
			   }
	         24B0	L$156:												   // 001660
			   { .mii 
01080A8B1180     24B0		      adds    r70 = 216, r40								   // 001662
01080A8B9280     24B1		      adds    r74 = 220, r40
000008000000     24B2		      nop.i   0
			   }
			   { .mlx 
000008000000     24C0		      nop.m   0
800000000000     24C1		      movl    r75 = 2138386 ;;
01942044A5
			   }
			   { .mmb 
008C84696000     24D0		      st4     [r70] = r75
008C84AAA000     24D1		      st4     [r74] = $XPO$STATUS		// [r74] = r85
008000006000     24D2		      br.sptk.few L$6 ;;
			   }
	         24E0	L$181:												   // 003176
			   { .mlx 
01080A8B1340     24E0		      adds    r77 = 216, r40								   // 003181
000000000000     24E1		      movl    r76 = 2134016 ;;
0192004026
			   }
			   { .mfi 
008C84D98000     24F0		      st4     [r77] = r76
000008000000     24F1		      nop.f   0
000008000000     24F2		      nop.i   0
			   }
	         2500	L$6:												   // 003221
			   { .mii 
01080A8B1380     2500		      adds    r78 = 216, r40
010802201600     2501		      mov     r88 = FAILURE_ACTION		// r88 = r34
000008000000     2502		      nop.i   0 ;;
			   }
			   { .mmi 
008084E013C0     2510		      ld4     r79 = [r78] ;;
000008000000     2511		      nop.m   0
00A03CF00000     2512		      tbit.z  pr0, pr7 = r79, 0 ;;
			   }
			   { .mmi 
010802101607     2520	       (pr7)  mov     r88 = SUCCESS_ACTION ;;		// r88 = r33
01C405800240     2521		      cmp4.eq pr9, pr0 = r0, $XPO$ACTION	// pr9, pr0 = r0, r88
000008000000     2522		      nop.i   0
			   }
			   { .mfb 
000008000000     2530		      nop.m   0
000008000000     2531		      nop.f   0
008600012009     2532	       (pr9)  br.cond.dpnt.few L$214
			   }
			   { .mii 
01080A8B9E80     2540		      adds    r122 = 220, r40
0000B5801600     2541		      sxt4    r88 = $XPO$ACTION			// r88 = r88

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 124
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

012000008640     2542		      mov     r25 = 4
			   }
			   { .mii 
012000003E00     2550		      mov     r120 = 1
0000B2001EC0     2551		      sxt4    r123 = IOB			// r123 = r32
0000B4F01E40     2552		      sxt4    r121 = r79 ;;
			   }
			   { .mii 
008087A01E80     2560		      ld4     r122 = [r122]
01080A8B1200     2561		      adds    r72 = 216, r40
010805811600     2562		      adds    r88 = 8, r88 ;;
			   }
			   { .mib 
000008000000     2570		      nop.m   0
0000B7A01E80     2571		      sxt4    r122 = r122
004000000000     2572		      nop.b   0
			   }
			   { .mmi 
00B0CD8F0040     2580		      ld8     r1 = [r88], -8 ;;
0080C5801600     2581		      ld8     r88 = [r88]
000008000000     2582		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     2590		      nop.m   0
000E001B0180     2591		      mov     br6 = r88
00210000C000     2592		      br.call.sptk.few br0 = br6
			   }
			   { .mmi 
010818C00380     25A0		      adds    r14 = 384, r12
008C84810000     25A1		      st4     [r72] = r8
000008000000     25A2		      nop.i   0 ;;
			   }
			   { .mfi 
0080C0E00040     25B0		      ld8     r1 = [r14]
000008000000     25B1		      nop.f   0
000008000000     25B2		      nop.i   0
			   }
	         25C0	L$214:
			   { .mmi 
01080A8B1780     25C0		      adds    r94 = 216, r40 ;;								   // 003227
008085E01780     25C1		      ld4     r94 = [r94]
000008000000     25C2		      nop.i   0 ;;
			   }
			   { .mib 
000008000000     25D0		      nop.m   0
00A015E000C0     25D1		      tbit.z  pr3, pr2 = r94, 0
008600008002     25D2	       (pr2)  br.cond.dpnt.few L$215
			   }
			   { .mii 
010802860A00     25E0		      adds    r40 = 48, r40								   // 003229
013FFDCFF240     25E1		      addl    r73 = -524289, r0
000008000000     25E2		      nop.i   0 ;;
			   }
			   { .mmi 
008082801800     25F0		      ld4     r96 = [r40] ;;
0100649C1240     25F1		      and     r73 = r96, r73
000008000000     25F2		      nop.i   0 ;;

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 125
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

			   }
			   { .mmi 
00BC8A893400     2600		      st4     [r40] = r73, -48 ;;
000008000000     2601		      nop.m   0
000008000000     2602		      nop.i   0
			   }
	         2610	L$215:												   // 003227
			   { .mii 
01080A8B0A00     2610		      adds    r40 = 216, r40								   // 003244
010818C00380     2611		      adds    r14 = 384, r12
0016000EE7C0     2612		      mov     pr = r119, -65474 ;;
			   }
			   { .mmi 
008082800200     2620		      ld4     r8 = [r40] ;;
000008000000     2621		      nop.m   0
0000B0800200     2622		      sxt4    r8 = r8
			   }
			   { .mii 
000008000000     2630		      nop.m   0
0001540EC000     2631		      mov.i   rspfs = r118
010818C00300     2632		      adds    r12 = 384, r12 ;;
			   }
			   { .mib 
000008000000     2640		      nop.m   0
000E001EA000     2641		      mov     br0 = r117
000108001100     2642		      br.ret.sptk.many br0 ;;
			   }
				      .endp   XPO$GET

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

				       .psect _XPO$DATA, CON, LCL, NOSHR, NOEXE, WRT, NOVEC
				      .lcomm  STREAM_TERMINATOR, 8, 8
				      .lcomm  $STR$STRING, 8, 8
				      .lcomm  $STR$STRING, 8, 8
				      .lcomm  $STR$STRING, 8, 8
				      .lcomm  P.AAA, 1, 1
				      .lcomm  fill$$1, 3, 4
				      .lcomm  P.AAB, 1, 1
				      .lcomm  fill$$2, 3, 4
				      .lcomm  P.AAC, 1, 1
				      .psect _XPO$DATA, CON, LCL, NOSHR, NOEXE, WRT, NOVEC
			STREAM_TERMINATOR:
00000000         0000		      data4   0x0 // data4 0
04000000         0004		      data4   0x4000000 // data4 67108864
			$STR$STRING:
    0001         0008		      data2   0x1 // data2 1
      0E         000A		      data1   0xE // data1 14
      01         000B		      data1   0x1 // data1 1
00000000         000C		      data4   P.AAA
			$STR$STRING:
    0001         0010		      data2   0x1 // data2 1
      0E         0012		      data1   0xE // data1 14
      01         0013		      data1   0x1 // data1 1
00000000         0014		      data4   P.AAB
			$STR$STRING:
    0001         0018		      data2   0x1 // data2 1

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 126
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

      0E         001A		      data1   0xE // data1 14
      01         001B		      data1   0x1 // data1 1
00000000         001C		      data4   P.AAC
				      .psect _XPO$PLIT, CON, LCL, NOSHR, NOEXE, NOWRT, NOVEC
			P.AAA:
      0A         0000		      data1   0xA // data1 10
			P.AAB:
      0D         0004		      data1   0xD // data1 13
			P.AAC:
      0A         0008		      data1   0xA // data1 10
				      .section .data
				      .type   XST$VALIDATE, @function 
				      .global  XST$VALIDATE
				      .section .data
				      .type   XST$COPY, @function 
				      .global  XST$COPY
				      .section .data
				      .type   XST$APPEND, @function 
				      .global  XST$APPEND
				      .section .data
				      .type   XPO$FREE_MEM, @function 
				      .global  XPO$FREE_MEM
				      .section .data
				      .type   XPO$ALLOC_MEM, @function 
				      .global  XPO$ALLOC_MEM
				      .section .data
				      .type   LIB$GET_EF, @function 
				      .global  LIB$GET_EF
				      .section .data
				      .type   SYS$QIOW, @function 
				      .global  SYS$QIOW
				      .section .data
				      .type   LIB$FREE_EF, @function 
				      .global  LIB$FREE_EF
				      .section .data
				      .type   SYS$GET, @function 
				      .global  SYS$GET
				      .section .data
				      .type   XST$APPEND, @function 
				      .global  XST$APPEND
				      .section .data
				      .type   XST$APPEND, @function 
				      .global  XST$APPEND
				      .section .data
				      .type   SYS$READ, @function 
				      .global  SYS$READ
				      .section .data
				      .type   SYS$GET, @function 
				      .global  SYS$GET
				      .section .data
				      .type   XST$APPEND, @function 
				      .global  XST$APPEND
				      .section .data
				      .type   XST$APPEND, @function 
				      .global  XST$APPEND
				      .section .data
				      .type   XPO$FREE_MEM, @function 

XGET                            Machine Code Listing             4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 127
X1.2-26                         XPO$GET                         19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

				      .global  XPO$FREE_MEM
				      .section .data
				      .type   XPO$ALLOC_MEM, @function 
				      .global  XPO$ALLOC_MEM
				      .section .data
				      .type   SYS$READ, @function 
				      .global  SYS$READ
				      .section .data
				      .type   OTS$MOVE, @function 
				      .global  OTS$MOVE
				      .section .data
				      .type   XPO$FREE_MEM, @function 
				      .global  XPO$FREE_MEM
				      .section .data
				      .type   XPO$ALLOC_MEM, @function 
				      .global  XPO$ALLOC_MEM
				      .section .data
				      .type   SYS$WRITE, @function 
				      .global  SYS$WRITE
				      .section .data
				      .type   SYS$READ, @function 
				      .global  SYS$READ
				      .section .data
				      .type   XPO$CLOSE, @function 
				      .global  XPO$CLOSE
				      .section .data
				      .type   XPO$OPEN, @function 
				      .global  XPO$OPEN
				      .section .data
				      .type   XPO$RMS_ERROR, @function 
				      .global  XPO$RMS_ERROR
				      .section .data
				      .type   XST$COPY, @function 
				      .global  XST$COPY


;				Library Statistics
;
;					     -------- Symbols --------	    Pages
;	File				     Total    Loaded   Percent      Mapped
;
;  DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14
;					       590       163        27       270
;  DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14
;					        91        24        26        27
;  SYS$COMMON:[SYSLIB]STARLET.L32;1	     28352        28         0      2178




                                Source Listing                   4-FEB-2004 11:01:36  BLISS-32I T1.1-053                Page 128
                                Source Listing                  19-MAR-2002 10:52:31  [LASTOVICA.XPORT.VMSGEN]XGET.BLI;2

COMMAND LINE:

BLISSXGET/VARIANT=3/LIST/DEBUG
