XST$APPEND - String Append Func 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 1 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 0 1 MODULE SAPPEN ( IDENT = 'V1.2-07' %TITLE 'XST$APPEND - String Append Function' 0 2 %BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) ) 0 3 %BLISS36( ,ENTRY( XST$APPEND ),OTS='' ) 0 4 ) = 0 5 BEGIN 1 6 1 7 ! 1 8 ! COPYRIGHT (c) 1980 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 implements the $STR_APPEND function. 1 33 ! 1 34 ! ENVIRONMENT: User mode - multiple host operating/file systems 1 35 ! 1 36 ! AUTHOR: Ward Clark, CREATION DATE: 27 February 1980 1 37 ! 1 38 !-- SAPPEN XST$APPEND - String Append Func 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 2 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 1 40 ! 1 41 ! TABLE OF CONTENTS: 1 42 ! 1 43 1 44 FORWARD ROUTINE 1 45 XST$APPEND; ! BLISS string copy routine 1 46 1 47 ! 1 48 ! INCLUDE FILES: 1 49 ! 1 50 1 51 LIBRARY 'XPORT' ; ! Public XPORT control block and macro definitions 1 53 LIBRARY 'XPOSYS' ; ! Internal XPORT macro definitions 1 55 1 56 $XPO_SYS_TEST( $ALL ) ; %PRINT: This module was compiled for any VAX-11 system ; %PRINT: XPORT V1.3-51 XPOSYS V1.3-16 XPO$K_VERSION = 1 XPO$K_LEVEL = 3 1 57 1 58 ! 1 59 ! MACROS: 1 60 ! 1 61 1 62 ! 1 63 ! EQUATED SYMBOLS: 1 64 ! 1 65 1 66 LITERAL 1 67 db_allocate = ! Allocation increment for a DYNAMIC_BOUNDED string 1 68 %BLISS16( 20 ) %BLISS32( 80 ) %BLISS36( 80 ); 1 69 1 70 ! 1 71 ! PSECT DECLARATIONS: 1 72 ! 1 73 1 74 $XPO_PSECTS ! Declare XPORT PSECT names and attributes 1 75 1 76 ! 1 77 ! OWN STORAGE: 1 78 ! 1 79 1 80 ! 1 81 ! EXTERNAL REFERENCES: 1 82 ! SAPPEN XST$APPEND - String Append Func 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 3 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 1 84 GLOBAL ROUTINE XST$APPEND( options, string, target, success_action, failure_action ) = 1 85 1 86 !++ 1 87 ! 1 88 ! FUNCTIONAL DESCRIPTION: 1 89 ! 1 90 ! This routine implements the $STR_APPEND function. 1 91 ! 1 92 ! FORMAL PARAMETERS: 1 93 ! 1 94 ! options - string processing options 1 95 ! string - address of the source string descriptor 1 96 ! target - address of the target string descriptor 1 97 ! success_action - address of a success action routine 1 98 ! failure_action - address of a failure action routine 1 99 ! 1 100 ! IMPLICIT INPUTS: 1 101 ! 1 102 ! None 1 103 ! 1 104 ! IMPLICIT OUTPUTS: 1 105 ! 1 106 ! None 1 107 ! 1 108 ! COMPLETION CODES: (secondary passed to action routine only) 1 109 ! 1 110 ! STR$_NORMAL - string append was successful 1 111 ! 1 112 ! STR$_BAD_SOURCE - invalid source string 1 113 ! secondary = failure completion code from $STR_VALIDATE 1 114 ! STR$_BAD_TARGET - invalid target string 1 115 ! secondary = failure completion code from $STR_VALIDATE 1 116 ! or STR$_NO_SPACE - insufficient space 1 117 ! XPO$_FREE_MEM - dynamic memory deallocation error 1 118 ! secondary = failure completion code from $XPO_FREE_MEM 1 119 ! XPO$_GET_MEM - dynamic memory allocation error 1 120 ! secondary = failure completion code from $XPO_GET_MEM 1 121 ! 1 122 ! SIDE EFFECTS: 1 123 ! 1 124 ! None 1 125 ! 1 126 !-- 1 127 1 128 BEGIN 2 129 2 130 MAP 2 131 options : $STR_OPTIONS, 2 132 string : REF $STR_DESCRIPTOR(), 2 133 target : REF $STR_DESCRIPTOR( CLASS = BOUNDED ); 2 134 2 135 LOCAL 2 136 string_length; 2 137 2 138 ! 2 139 ! Initialization 2 140 ! SAPPEN XST$APPEND - String Append Func 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 4 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 2 141 2 142 $STR_MAIN_BEGIN( APPEND ) ! Beginning of MAIN_BLOCK code block 3 143 3 144 $STR_VALIDATE( .string, BAD_SOURCE ); ! Validate the source and target string descriptors. 3 145 $STR_VALIDATE( .target, BAD_TARGET ); 3 146 3 147 string_length = .string[STR$H_LENGTH]; ! Save the original string length for potential upcasing. 3 148 3 149 ! 3 150 ! Select appropriate string append processing depending on the target descriptor class. 3 151 ! 3 152 3 153 SELECTONE .target[STR$B_CLASS] OF 3 154 SET SAPPEN XST$APPEND - Append to FIXED or 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 5 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 3 156 %TITLE 'XST$APPEND - Append to FIXED or XPORT Temporary String' 3 157 3 158 !+ 3 159 ! 3 160 ! Append source string to FIXED or XPORT Temporary target string' 3 161 ! 3 162 !- 3 163 3 164 [ STR$K_CLASS_F, 3 165 STR$K_CLASS_XT ] : 3 166 3 167 $STR_QUIT( BAD_TARGET, BAD_CLASS ); ! Return error codes to the caller. SAPPEN XST$APPEND - Append to a DYNAMI 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 6 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 3 169 %TITLE 'XST$APPEND - Append to a DYNAMIC String' 3 170 3 171 !+ 3 172 ! 3 173 ! Append source string to DYNAMIC target string. 3 174 ! 3 175 !- 3 176 3 177 [ STR$K_CLASS_D ] : 3 178 BEGIN 4 179 LOCAL 4 180 new_string_len, ! Length of resulting string 4 181 new_target_ptr; ! Address of the new target area 4 182 4 183 MACRO 4 184 round_up( length ) = M 4 185 ( M 4 186 %BLISS16( length + 3 AND %X'FFFC' ) M 4 187 %BLISS32( length + 7 AND %X'FFF8' ) M 4 188 %BLISS36( ((length + 4) / 5) * 5 ) M 4 189 ) %; 4 190 4 191 new_string_len = .string[STR$H_LENGTH] + ! Calculate the length of the resulting string. 4 192 .target[STR$H_LENGTH]; 4 193 4 194 IF .new_string_len LEQU ! If the source string will fit in the target area, 4 195 round_up( .target[STR$H_LENGTH] ) ! 5 196 THEN ! 4 197 BEGIN ! 5 198 CH$MOVE( .string[STR$H_LENGTH], ! move the source string into the target area. 5 199 .string[STR$A_POINTER], ! 5 200 CH$PLUS( .target[STR$A_POINTER], ! 5 201 .target[STR$H_LENGTH] ) ); ! 5 202 ! 5 203 target[STR$H_LENGTH] = .new_string_len; ! and set the new target string length. 5 204 END 5 205 5 206 ELSE ! If the source string will not fit in the target area, 4 207 BEGIN ! a new target area must be allocated. 5 208 5 209 $XPO_IF_NOT( $XPO_GET_MEM( ! Allocate a new target area. P 5 210 CHARACTERS = .new_string_len, P 5 211 RESULT = new_target_ptr, P 5 212 FAILURE = 0 ) ) 7 213 THEN 6 214 $STR_QUIT( (XPO$_GET_MEM), (.$XPO_STATUS) ); 5 215 5 216 CH$COPY( .target[STR$H_LENGTH], ! Copy the current target string 5 217 .target[STR$A_POINTER], ! into the new target area 5 218 .string[STR$H_LENGTH], ! and append the source string to it. 5 219 .string[STR$A_POINTER], 5 220 0, .new_string_len, 5 221 .new_target_ptr ); 5 222 5 223 $XPO_IF_NOT( $XPO_FREE_MEM( ! Free the old target area. P 5 224 STRING = .target, P 5 225 FAILURE = 0 )) SAPPEN XST$APPEND - Append to a DYNAMI 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 7 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 7 226 THEN 6 227 $STR_QUIT( (XPO$_FREE_MEM), (.$XPO_STATUS) ); 5 228 5 229 ! Update the target area descriptor: 5 230 target[STR$H_LENGTH] = .new_string_len; ! resulting string length 5 231 target[STR$A_POINTER] = .new_target_ptr; ! pointer to new target area 5 232 END; 4 233 END; SAPPEN XST$APPEND - Append to a BOUNDE 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 8 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 3 235 %TITLE 'XST$APPEND - Append to a BOUNDED String' 3 236 3 237 !+ 3 238 ! 3 239 ! Append source string to BOUNDED target string. 3 240 ! 3 241 !- 3 242 3 243 [ STR$K_CLASS_B ] : 3 244 3 245 BEGIN 4 246 IF .string[STR$H_LENGTH] LEQU ! Compare length of source string to the available 4 247 .target[STR$H_MAXLEN] - ! space in the target area. 4 248 .target[STR$H_PFXLEN] - 4 249 .target[STR$H_LENGTH] 4 250 THEN ! Source length LEQ target space: 4 251 string_length = .string[STR$H_LENGTH] ! setup to copy entire source string 4 252 4 253 ELSE ! Source length GTR target space: 4 254 IF .options[STR$V_TRUNCATE] 4 255 THEN ! OPTION=TRUNCATE specified: 4 256 string_length = .target[STR$H_MAXLEN] - ! setup to truncate source string 4 257 .target[STR$H_PFXLEN] - 4 258 .target[STR$H_LENGTH] 4 259 ELSE ! Truncation not permitted: 4 260 $STR_QUIT( BAD_TARGET, NO_SPACE ); ! return error codes to the caller 4 261 4 262 CH$MOVE( .string_length, ! Copy the source string into the target area. 4 263 .string[STR$A_POINTER], 4 264 CH$PLUS( .target[STR$A_POINTER], .target[STR$H_LENGTH] ) ); 4 265 4 266 ! Update the target descriptor: 4 267 target[STR$H_LENGTH] = ! string length 4 268 .target[STR$H_LENGTH] + .string_length; 4 269 END; SAPPEN XST$APPEND - Append to a DYNAMI 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 9 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 3 271 %TITLE 'XST$APPEND - Append to a DYNAMIC_BOUNDED String' 3 272 3 273 !+ 3 274 ! 3 275 ! Append source string to a DYNAMIC_BOUNDED target string. 3 276 ! 3 277 !- 3 278 3 279 [ STR$K_CLASS_DB ] : 3 280 3 281 BEGIN 4 282 LOCAL 4 283 new_string_len, ! Length of resulting string 4 284 new_target_maxl, ! Maximum length of new target area 4 285 new_target_ptr; ! Address of the new target area 4 286 4 287 new_string_len = .string[STR$H_LENGTH] + ! Calculate the length of the resulting string. 4 288 .target[STR$H_LENGTH]; 4 289 4 290 IF .new_string_len LEQU .target[STR$H_MAXLEN] - ! If the source string will fit in the target area, 4 291 .target[STR$H_PFXLEN] ! 4 292 THEN ! 4 293 BEGIN ! 5 294 CH$MOVE( .string[STR$H_LENGTH], ! move the source string into the target area. 5 295 .string[STR$A_POINTER], 5 296 CH$PLUS( .target[STR$A_POINTER], .target[STR$H_LENGTH] ) ); 5 297 5 298 target[STR$H_LENGTH] = .new_string_len; ! Set the new target string length. 5 299 END 5 300 5 301 ELSE ! If the source string will not fit in the target area, 4 302 BEGIN ! a new target area must be allocated. 5 303 5 304 new_target_maxl = .target[STR$H_MAXLEN]; ! Pickup the current target area size. 5 305 5 306 WHILE .new_target_maxl LSS ! Increase the memory size until it is large enough. 5 307 .new_string_len + .target[STR$H_PFXLEN] DO 5 308 new_target_maxl = .new_target_maxl + db_allocate; 5 309 5 310 $XPO_IF_NOT( $XPO_GET_MEM( ! Allocate a new target area. P 5 311 CHARACTERS = .new_target_maxl, P 5 312 RESULT = new_target_ptr, P 5 313 FAILURE = 0 ) ) 7 314 THEN 6 315 $STR_QUIT( (XPO$_GET_MEM), (.$XPO_STATUS) ); 5 316 5 317 CH$COPY( ! Copy the following strings into the target area: 5 318 .target[STR$H_PFXLEN] + ! prefix string 5 319 .target[STR$H_LENGTH], ! current target string 5 320 CH$PLUS( .target[STR$A_POINTER], ! 5 321 -.target[STR$H_PFXLEN] ), ! 5 322 .string[STR$H_LENGTH], ! source string 5 323 .string[STR$A_POINTER], 5 324 0, .new_target_maxl, 5 325 .new_target_ptr ); 5 326 5 327 $XPO_IF_NOT( $XPO_FREE_MEM( ! Free the old target area. SAPPEN XST$APPEND - Append to a DYNAMI 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 10 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 P 5 328 STRING = .target, P 5 329 FAILURE = 0 )) 7 330 THEN 6 331 $STR_QUIT( (XPO$_FREE_MEM), (.$XPO_STATUS) ); 5 332 5 333 ! Update the target area descriptor: 5 334 target[STR$H_LENGTH] = .new_string_len; ! resulting string length 5 335 target[STR$A_POINTER] = .new_target_ptr; ! pointer to new target area 5 336 target[STR$H_MAXLEN] = .new_target_maxl; ! maximum string length 5 337 END; 4 338 END; 3 339 3 340 TES; SAPPEN XST$APPEND - Convert to Upper C 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 11 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 3 342 %TITLE 'XST$APPEND - Convert to Upper Case' 3 343 3 344 !+ 3 345 ! 3 346 ! Convert the appended string to upper case if requested. 3 347 ! 3 348 !- 3 349 3 350 IF .options[STR$V_UP_CASE] 3 351 THEN 3 352 BEGIN 4 353 LOCAL 4 354 character, ! A single ASCII character 4 355 pointer; ! Pointer into target string 4 356 4 357 pointer = CH$PLUS( .target[STR$A_POINTER], ! Point to the character preceding the appended string. 4 358 .target[STR$H_LENGTH] - .string_length - 1 ); 4 359 4 360 INCR index FROM 1 TO .string_length DO ! Loop through the copied string. 4 361 BEGIN 5 362 character = CH$A_RCHAR( pointer ); ! Pickup a single ASCII character. 5 363 5 364 IF .character GEQ %C'a' AND ! If it is a lower-case character, 5 365 .character LEQ %C'z' ! 5 366 THEN ! 5 367 CH$WCHAR( .character - %C' ', ! convert it to upper-case. 5 368 .pointer ); 5 369 END; 4 370 END; SAPPEN XST$APPEND - Routine Terminatio 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 12 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 3 372 %TITLE 'XST$APPEND - Routine Termination' 3 373 3 374 !+ 3 375 ! 3 376 ! XST$APPEND Routine Termination 3 377 ! 3 378 !- 3 379 3 380 ! 3 381 ! Setup a normal routine completion code. 3 382 ! 3 383 3 384 $STR_QUIT( NORMAL ); 3 385 3 386 $STR_MAIN_END; ! End of MAIN_BLOCK code block 2 387 2 388 ! 2 389 ! Call an appropriate action routine. 2 390 ! 2 391 2 392 $STR_ACTION_RTN( .options, .string, .target ); 2 393 2 394 ! 2 395 ! Free an temporary XPORT string used in this string append. 2 396 ! 2 397 2 398 IF NOT .options[STR$V_NO_FREE_T] ! If this is not an internal XPORT call, 2 399 THEN ! 2 400 $STR_FREE_TEMP( .string ); ! free the source string if it is a temporary string. 2 401 2 402 ! 2 403 ! Return the final completion code to the caller. 2 404 ! 2 405 2 406 RETURN .primary_code 2 407 2 408 END; 1 409 END 1 410 ELUDOM SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 13 V1.2-07 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC .proc XST$APPEND .align 32 .global XST$APPEND XST$APPEND: // 000084 { .mii 002C051AFBC0 0000 alloc r111 = rspfs, 5, 76, 6, 0 000188001B80 0001 mov r110 = br0 0119F8CE0300 0002 adds r12 = -16, r12 } { .mmi 010800101C00 0010 mov r112 = r1 012000002640 0011 mov r25 = 1 // 000144 0000B2101C40 0012 sxt4 r113 = STRING ;; // r113 = r33 } { .mfb 010800000A00 0020 mov SECONDARY_CODE = r0 // r40 = r0 // 000142 000008000000 0021 nop.f 0 00A000001000 0022 br.call.sptk.many br0 = XST$VALIDATE // 000144 } { .mib 010807000040 0030 mov r1 = r112 00A0308001C0 0031 tbit.z pr7, pr6 = $STR$STATUS, 0 // pr7, pr6 = r8, 0 008600006006 0032 (pr6) br.cond.dpnt.few L$2 ;; } { .mlx 010800800A00 0040 mov SECONDARY_CODE = $STR$STATUS // r40 = r8 800000000000 0041 movl PRIMARY_CODE = 2402378 // r41 = 2402378 0195025294 } { .mfb 000008000000 0050 nop.m 0 000008000000 0051 nop.f 0 008000112000 0052 br.sptk.few L$4 ;; } 0060 L$2: // 000145 { .mib 012000002640 0060 mov r25 = 1 0000B2201C40 0061 sxt4 r113 = TARGET // r113 = r34 00A000001000 0062 br.call.sptk.many br0 = XST$VALIDATE } { .mib 010807000040 0070 mov r1 = r112 00A0308001C0 0071 tbit.z pr7, pr6 = $STR$STATUS, 0 // pr7, pr6 = r8, 0 008600006006 0072 (pr6) br.cond.dpnt.few L$5 } { .mlx 010800800A00 0080 mov SECONDARY_CODE = $STR$STATUS // r40 = r8 800000000000 0081 movl PRIMARY_CODE = 2402402 // r41 = 2402402 0195025894 } { .mfb 000008000000 0090 nop.m 0 000008000000 0091 nop.f 0 00800010A000 0092 br.sptk.few L$4 ;; } 00A0 L$5: SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 14 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 { .mii 01200807AB40 00A0 mov r45 = 189 // 000153 0000B2100B00 00A1 sxt4 r44 = STRING // r44 = r33 // 000147 0000B2200A80 00A2 sxt4 r42 = TARGET ;; // r42 = r34 // 000153 } { .mmi 010802A06A80 00B0 adds r42 = 3, r42 008042C00BC0 00B1 ld2 r47 = [r44] // 000147 000008000000 00B2 nop.i 0 ;; } { .mii 00B00AAFAAC0 00C0 ld1 r43 = [r42], -3 // 000153 010802F01CC0 00C1 mov r115 = r47 ;; // 000147 01C402D562C0 00C2 cmp4.eq pr11, pr0 = r43, r45 // 000153 } { .mmi 01CC42B02240 00D0 cmp4.eq pr9, pr8 = 1, r43 ;; 01C24000000B 00D1 (pr11) cmp.eq.or.andcm pr0, pr8 = r0, r0 000008000000 00D2 nop.i 0 } { .mfb 000008000000 00E0 nop.m 0 000008000000 00E1 nop.f 0 008600008008 00E2 (pr8) br.cond.dpnt.few L$7 } { .mlx 000008000000 00F0 nop.m 0 800000000000 00F1 movl PRIMARY_CODE = 2402402 // r41 = 2402402 // 000167 0195025894 } { .mlx 000008000000 0100 nop.m 0 000000000000 0101 movl SECONDARY_CODE = 2402314 // r40 = 2402314 0195024294 } { .mfb 000008000000 0110 nop.m 0 000008000000 0111 nop.f 0 0080000FA000 0112 br.sptk.few L$4 ;; } 0120 L$7: // 000153 { .mfb 01CC62B04000 0120 cmp4.eq pr0, pr12 = 2, r43 000008000000 0121 nop.f 0 00860005000C 0122 (pr12) br.cond.dpnt.few L$11 } { .mii 008042A00C00 0130 ld2 r48 = [r42] // 000192 012FF80F0CC0 0131 addl r51 = 65528, r0 ;; // 000195 01080300EC40 0132 adds r49 = 7, r48 ;; } { .mii 0100030E6C80 0140 add NEW_STRING_LEN = r115, r48 // r50 = r115, r48 // 000191 010063362C40 0141 and r49 = r49, r51 ;; // 000195 01A4032623C0 0142 cmp4.ltu pr15, pr0 = r49, NEW_STRING_LEN // pr15, pr0 = r49, r50 // 000194 } { .mfb SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 15 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 000008000000 0150 nop.m 0 000008000000 0151 nop.f 0 00860000C00F 0152 (pr15) br.cond.dpnt.few L$14 } { .mii 010802A08A80 0160 adds r42 = 4, r42 // 000200 010802C08D40 0161 adds r53 = 4, r44 // 000199 0000B3000C00 0162 sxt4 r48 = r48 ;; // 000201 } { .mib 00B08AAF8D00 0170 ld4 r52 = [r42], -4 // 000200 0000B7301C80 0171 sxt4 r114 = r115 // 000198 004000000000 0172 nop.b 0 ;; } { .mii 008083500B00 0180 ld4 r44 = [r53] // 000199 0000B3400D00 0181 sxt4 r52 = r52 ;; // 000200 0000B2C00B00 0182 sxt4 r44 = r44 ;; // 000199 } { .mib 010003069C40 0190 add r113 = r52, r48 // 000201 010802C01CC0 0191 mov r115 = r44 // 000198 00A000001000 0192 br.call.sptk.many br0 = OTS$MOVE } { .mib 008C42A64000 01A0 st2 [r42] = NEW_STRING_LEN // [r42] = r50 // 000203 010807000040 01A1 mov r1 = r112 // 000198 0080000CE000 01A2 br.sptk.few L$17 ;; // 000194 } 01B0 L$14: // 000212 { .mii 010800C30E00 01B0 adds r56 = 24, r12 010800C38E40 01B1 adds r57 = 28, r12 000008000000 01B2 nop.i 0 } { .mlx 010800C30E80 01C0 adds r58 = 24, r12 800000000008 01C1 movl r55 = 34471936 ;; 018007001B } { .mii 008C8386E000 01D0 st4 [r56] = r55 01200000C640 01D1 mov r25 = 6 0000B0001D80 01D2 sxt4 r118 = r0 } { .mii 0119F80FFCC0 01E0 adds r115 = -1, r0 0000B0001D40 01E1 sxt4 r117 = r0 0000B0001D00 01E2 sxt4 r116 = r0 } { .mii 008C83900000 01F0 st4 [r57] = r0 0000B3A01C80 01F1 sxt4 r114 = r58 0000B3201C40 01F2 sxt4 r113 = NEW_STRING_LEN // r113 = r50 } { .mfb 000008000000 0200 nop.m 0 SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 16 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 000008000000 0201 nop.f 0 00A000001000 0202 br.call.sptk.many br0 = XPO$ALLOC_MEM } { .mii 010800C38EC0 0210 adds r59 = 28, r12 00A0308001C0 0211 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 010807000040 0212 mov r1 = r112 ;; } { .mii 008083B00EC0 0220 ld4 r59 = [r59] 01C000001206 0221 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 ;; 010803B00F08 0222 (pr8) mov NEW_TARGET_PTR = r59 // r60 = r59 } { .mfb 000008000000 0230 nop.m 0 000008000000 0231 nop.f 0 008600006008 0232 (pr8) br.cond.dpnt.few L$18 } { .mlx 010800800A00 0240 mov SECONDARY_CODE = $XPO$STATUS // r40 = r8 // 000214 800000000000 0241 movl PRIMARY_CODE = 2138370 // r41 = 2138370 0194204094 } { .mfb 000008000000 0250 nop.m 0 000008000000 0251 nop.f 0 0080000D2000 0252 br.sptk.few L$4 ;; } 0260 L$18: // 000212 { .mii 010802A08A80 0260 adds r42 = 4, r42 // 000217 0000B3201C80 0261 sxt4 r114 = NEW_STRING_LEN // r114 = r50 // 000216 0000B3C01C40 0262 sxt4 r113 = NEW_TARGET_PTR ;; // r113 = r60 // 000221 } { .mii 00B08AAF8F40 0270 ld4 r61 = [r42], -4 // 000217 010802C08B00 0271 adds r44 = 4, r44 ;; // 000219 0000B3D01CC0 0272 sxt4 r115 = r61 // 000217 } { .mmi 00B08ACF8F80 0280 ld4 r62 = [r44], -4 // 000219 008042A01D00 0281 ld2 r116 = [r42] // 000216 000008000000 0282 nop.i 0 ;; } { .mii 008042C00B00 0290 ld2 r44 = [r44] // 000218 0000B7401D00 0291 sxt4 r116 = r116 // 000216 0000B3E00F80 0292 sxt4 r62 = r62 // 000219 } { .mfb 000008000000 02A0 nop.m 0 000008000000 02A1 nop.f 0 00A000001000 02A2 br.call.sptk.many br0 = OTS$MOVEM ;; // 000216 } { .mii 010803E01CC0 02B0 mov r115 = r62 0000B2C01D00 02B1 sxt4 r116 = r44 SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 17 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 010807000040 02B2 mov r1 = r112 } { .mfb 000008000000 02C0 nop.m 0 000008000000 02C1 nop.f 0 004000000000 02C2 nop.b 0 ;; } { .mfb 000008000000 02D0 nop.m 0 000008000000 02D1 nop.f 0 00A000001000 02D2 br.call.sptk.many br0 = OTS$MOVEM } { .mii 010800001CC0 02E0 mov r115 = r0 010807000040 02E1 mov r1 = r112 000008000000 02E2 nop.i 0 } { .mfb 000008000000 02F0 nop.m 0 000008000000 02F1 nop.f 0 004000000000 02F2 nop.b 0 ;; } { .mfb 000008000000 0300 nop.m 0 000008000000 0301 nop.f 0 00A000001000 0302 br.call.sptk.many br0 = OTS$FILL } { .mii 01200000A640 0310 mov r25 = 5 // 000225 0000B0001D40 0311 sxt4 r117 = r0 0000B0001D00 0312 sxt4 r116 = r0 } { .mii 0119F80FDC80 0320 adds r114 = -2, r0 0000B0001CC0 0321 sxt4 r115 = r0 0000B2201C40 0322 sxt4 r113 = TARGET // r113 = r34 } { .mfb 010807000040 0330 mov r1 = r112 // 000216 000008000000 0331 nop.f 0 004000000000 0332 nop.b 0 ;; } { .mfb 000008000000 0340 nop.m 0 000008000000 0341 nop.f 0 00A000001000 0342 br.call.sptk.many br0 = XPO$FREE_MEM // 000225 } { .mib 010807000040 0350 mov r1 = r112 00A0308001C0 0351 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600006006 0352 (pr6) br.cond.dpnt.few L$22 } { .mlx 010800800A00 0360 mov SECONDARY_CODE = $XPO$STATUS // r40 = r8 // 000227 800000000000 0361 movl PRIMARY_CODE = 2138362 // r41 = 2138362 0194105E94 } SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 18 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 { .mfb 000008000000 0370 nop.m 0 000008000000 0371 nop.f 0 0080000AE000 0372 br.sptk.few L$4 ;; } 0380 L$22: // 000225 { .mmi 010802A08A80 0380 adds r42 = 4, r42 ;; // 000231 00BC8AA79F00 0381 st4 [r42] = NEW_TARGET_PTR, -4 // [r42] = r60, -4 000008000000 0382 nop.i 0 ;; } { .mfb 008C42A64000 0390 st2 [r42] = NEW_STRING_LEN // [r42] = r50 // 000230 000008000000 0391 nop.f 0 008000090000 0392 br.sptk.few L$17 ;; // 000194 } 03A0 L$11: // 000153 { .mfb 01CC42B06000 03A0 cmp4.eq pr0, pr8 = 3, r43 000008000000 03A1 nop.f 0 008600024008 03A2 (pr8) br.cond.dpnt.few L$26 } { .mmi 010802A10A80 03B0 adds r42 = 8, r42 ;; // 000247 00A042A050C0 03B1 ld2 r67 = [r42], 2 000008000000 03B2 nop.i 0 ;; } { .mmi 00B04AAED100 03C0 ld2 r68 = [r42], -10 ;; // 000248 008042A01140 03C1 ld2 r69 = [r42] // 000249 01002C4870C0 03C2 sub r67 = r67, r68 ;; // 000247 } { .mmi 01002C5870C0 03D0 sub r67 = r67, r69 ;; // 000248 01A4073862C0 03D1 cmp4.ltu pr11, pr0 = r67, r115 // 000246 000008000000 03D2 nop.i 0 } { .mfb 000008000000 03E0 nop.m 0 000008000000 03E1 nop.f 0 00860000400B 03E2 (pr11) br.cond.dpnt.few L$29 } { .mfb 010807300BC0 03F0 mov STRING_LENGTH = r115 // r47 = r115 // 000251 000008000000 03F1 nop.f 0 008000008000 03F2 br.sptk.few L$30 ;; // 000246 } 0400 L$29: { .mii 000008000000 0400 nop.m 0 00A402035180 0401 extr.u r70 = OPTIONS, 13, 1 ;; // r70 = r32, 13, 1 // 000254 00A064600340 0402 tbit.z pr13, pr12 = r70, 0 } { .mfb 000008000000 0410 nop.m 0 000008000000 0411 nop.f 0 00860001000D 0412 (pr13) br.cond.dpnt.few L$32 SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 19 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 } { .mfi 010804300BC0 0420 mov STRING_LENGTH = r67 // r47 = r67 // 000256 000008000000 0421 nop.f 0 000008000000 0422 nop.i 0 } 0430 L$30: // 000246 { .mii 010802A08A80 0430 adds r42 = 4, r42 // 000264 010802C09200 0431 adds r72 = 4, r44 // 000263 0000B4501140 0432 sxt4 r69 = r69 ;; // 000264 } { .mib 00B08AAF91C0 0440 ld4 r71 = [r42], -4 0000B2F01C80 0441 sxt4 r114 = STRING_LENGTH // r114 = r47 // 000262 004000000000 0442 nop.b 0 ;; } { .mii 008084800B00 0450 ld4 r44 = [r72] // 000263 0000B47011C0 0451 sxt4 r71 = r71 ;; // 000264 01000458FC40 0452 add r113 = r71, r69 } { .mib 000008000000 0460 nop.m 0 0000B2C01CC0 0461 sxt4 r115 = r44 // 000263 00A000001000 0462 br.call.sptk.many br0 = OTS$MOVE // 000262 } { .mii 008042A01240 0470 ld2 r73 = [r42] // 000268 010807000040 0471 mov r1 = r112 ;; // 000262 010002F93240 0472 add r73 = r73, STRING_LENGTH ;; // r73 = r73, r47 // 000268 } { .mfb 008C42A92000 0480 st2 [r42] = r73 // 000267 000008000000 0481 nop.f 0 008000072000 0482 br.sptk.few L$17 ;; // 000153 } 0490 L$32: // 000254 { .mlx 000008000000 0490 nop.m 0 000000000000 0491 movl SECONDARY_CODE = 2402418 // r40 = 2402418 // 000260 0195025C94 } { .mlx 000008000000 04A0 nop.m 0 800000000000 04A1 movl PRIMARY_CODE = 2402402 // r41 = 2402402 0195025894 } { .mfb 000008000000 04B0 nop.m 0 000008000000 04B1 nop.f 0 008000086000 04B2 br.sptk.few L$4 ;; } 04C0 L$26: // 000153 { .mmi 01200807D2C0 04C0 mov r75 = 190 ;; 01C434B56000 04C1 cmp4.eq pr0, pr6 = r43, r75 SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 20 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 000008000000 04C2 nop.i 0 } { .mfb 000008000000 04D0 nop.m 0 000008000000 04D1 nop.f 0 008600068006 04D2 (pr6) br.cond.dpnt.few L$17 } { .mmi 010802A10A80 04E0 adds r42 = 8, r42 ;; // 000290 00B04AAF1300 04E1 ld2 r76 = [r42], -8 000008000000 04E2 nop.i 0 ;; } { .mmi 00A042A15380 04F0 ld2 r78 = [r42], 10 ;; // 000288 00B04AAED340 04F1 ld2 r77 = [r42], -10 // 000291 010004EE7400 04F2 add NEW_STRING_LEN = r115, r78 ;; // r80 = r115, r78 // 000287 } { .mmi 01002CD993C0 0500 sub r79 = r76, r77 ;; // 000290 01A40509E240 0501 cmp4.ltu pr9, pr0 = r79, NEW_STRING_LEN // pr9, pr0 = r79, r80 000008000000 0502 nop.i 0 } { .mfb 000008000000 0510 nop.m 0 000008000000 0511 nop.f 0 00860000C009 0512 (pr9) br.cond.dpnt.few L$37 } { .mii 010802A08A80 0520 adds r42 = 4, r42 // 000296 010802C09480 0521 adds r82 = 4, r44 // 000295 0000B4E01380 0522 sxt4 r78 = r78 ;; // 000296 } { .mib 00B08AAF9440 0530 ld4 r81 = [r42], -4 0000B7301C80 0531 sxt4 r114 = r115 // 000294 004000000000 0532 nop.b 0 ;; } { .mii 008085200B00 0540 ld4 r44 = [r82] // 000295 0000B5101440 0541 sxt4 r81 = r81 ;; // 000296 0000B2C00B00 0542 sxt4 r44 = r44 ;; // 000295 } { .mib 010004EA3C40 0550 add r113 = r81, r78 // 000296 010802C01CC0 0551 mov r115 = r44 // 000294 00A000001000 0552 br.call.sptk.many br0 = OTS$MOVE } { .mib 008C42AA0000 0560 st2 [r42] = NEW_STRING_LEN // [r42] = r80 // 000298 010807000040 0561 mov r1 = r112 // 000294 008000056000 0562 br.sptk.few L$17 ;; // 000290 } 0570 L$37: { .mii 010004DA1340 0570 add r77 = NEW_STRING_LEN, r77 // r77 = r80, r77 // 000307 010804C01500 0571 mov NEW_TARGET_MAXL = r76 ;; // r84 = r76 // 000304 01843CD98000 0572 cmp4.lt pr0, pr7 = r76, r77 // 000306 SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 21 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 } { .mfb 000008000000 0580 nop.m 0 000008000000 0581 nop.f 0 008600010007 0582 (pr7) br.cond.dpnt.few L$41 } { .mmi 0119E4DE1540 0590 adds r85 = -400, r77 ;; // 000307 01845D598000 0591 cmp4.lt pr0, pr11 = r76, r85 // 000306 01844559A240 0592 cmp4.lt pr9, pr8 = r77, r85 ;; // 000307 } { .mbb 01C24000024B 05A0 (pr11) cmp.eq.or.andcm pr9, pr8 = r0, r0 008600002008 05A1 (pr8) br.cond.dpnt.few L$44 // 000306 008600008009 05A2 (pr9) br.cond.dpnt.few L$46 ;; } 05B0 L$44: { .mmi 01081D4C1500 05B0 adds NEW_TARGET_MAXL = 480, // r84 = 480, r84 // 000308 NEW_TARGET_MAXL ;; 0184055A8300 05B1 cmp4.lt pr12, pr0 = NEW_TARGET_MAXL, r85 // pr12, pr0 = r84, r85 // 000306 000008000000 05B2 nop.i 0 } { .mfb 000008000000 05C0 nop.m 0 000008000000 05C1 nop.f 0 0095FFFFE00C 05C2 (pr12) br.cond.dptk.few L$44 } { .mfb 01847CDA8000 05D0 cmp4.lt pr0, pr15 = NEW_TARGET_MAXL, r77 // pr0, pr15 = r84, r77 000008000000 05D1 nop.f 0 00860000600F 05D2 (pr15) br.cond.dpnt.few L$41 ;; } 05E0 L$46: { .mmi 0108054A1500 05E0 adds r84 = 80, r84 ;; 018404DA8180 05E1 cmp4.lt pr6, pr0 = NEW_TARGET_MAXL, r77 // pr6, pr0 = r84, r77 000008000000 05E2 nop.i 0 } { .mfb 000008000000 05F0 nop.m 0 000008000000 05F1 nop.f 0 0095FFFFE006 05F2 (pr6) br.cond.dptk.few L$46 } 0600 L$41: // 000313 { .mii 010800C215C0 0600 adds r87 = 16, r12 010800C29600 0601 adds r88 = 20, r12 000008000000 0602 nop.i 0 } { .mlx 010800C21640 0610 adds r89 = 16, r12 000000000008 0611 movl r86 = 34471936 ;; 018007002B } { .mii 008C857AC000 0620 st4 [r87] = r86 SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 22 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 01200000C640 0621 mov r25 = 6 0000B0001D80 0622 sxt4 r118 = r0 } { .mii 0119F80FFCC0 0630 adds r115 = -1, r0 0000B0001D40 0631 sxt4 r117 = r0 0000B0001D00 0632 sxt4 r116 = r0 } { .mii 008C85800000 0640 st4 [r88] = r0 0000B5901C80 0641 sxt4 r114 = r89 0000B5401C40 0642 sxt4 r113 = NEW_TARGET_MAXL // r113 = r84 } { .mfb 000008000000 0650 nop.m 0 000008000000 0651 nop.f 0 00A000001000 0652 br.call.sptk.many br0 = XPO$ALLOC_MEM } { .mii 010800C29680 0660 adds r90 = 20, r12 00A0308001C0 0661 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 010807000040 0662 mov r1 = r112 ;; } { .mii 008085A01680 0670 ld4 r90 = [r90] 01C000001206 0671 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 ;; 010805A016C8 0672 (pr8) mov NEW_TARGET_PTR = r90 // r91 = r90 } { .mfb 000008000000 0680 nop.m 0 000008000000 0681 nop.f 0 008600006008 0682 (pr8) br.cond.dpnt.few L$47 } { .mlx 010800800A00 0690 mov SECONDARY_CODE = $XPO$STATUS // r40 = r8 // 000315 800000000000 0691 movl PRIMARY_CODE = 2138370 // r41 = 2138370 0194204094 } { .mfb 000008000000 06A0 nop.m 0 000008000000 06A1 nop.f 0 008000048000 06A2 br.sptk.few L$4 ;; } 06B0 L$47: // 000313 { .mii 010802A08A80 06B0 adds r42 = 4, r42 // 000320 0000B5401C80 06B1 sxt4 r114 = NEW_TARGET_MAXL // r114 = r84 // 000317 0000B5B01C40 06B2 sxt4 r113 = NEW_TARGET_PTR ;; // r113 = r91 // 000325 } { .mmi 00A082A0D700 06C0 ld4 r92 = [r42], 6 ;; // 000320 00B04AAED740 06C1 ld2 r93 = [r42], -10 // 000318 010802C08B00 06C2 adds r44 = 4, r44 ;; // 000323 } { .mii 000008000000 06D0 nop.m 0 0000B5C01700 06D1 sxt4 r92 = r92 // 000320 SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 23 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 01002DD01800 06D2 sub r96 = r0, r93 ;; // 000321 } { .mmi 00B08ACF9780 06E0 ld4 r94 = [r44], -4 // 000323 008042A017C0 06E1 ld2 r95 = [r42] // 000319 0000B6001800 06E2 sxt4 r96 = r96 ;; // 000321 } { .mii 008042C00B00 06F0 ld2 r44 = [r44] // 000322 010005FBBD00 06F1 add r116 = r93, r95 // 000318 0100060B9CC0 06F2 add r115 = r92, r96 ;; // 000321 } { .mii 000008000000 0700 nop.m 0 0000B5E01780 0701 sxt4 r94 = r94 // 000323 0000B7401D00 0702 sxt4 r116 = r116 // 000317 } { .mfb 000008000000 0710 nop.m 0 000008000000 0711 nop.f 0 00A000001000 0712 br.call.sptk.many br0 = OTS$MOVEM ;; } { .mii 010805E01CC0 0720 mov r115 = r94 0000B2C01D00 0721 sxt4 r116 = r44 010807000040 0722 mov r1 = r112 } { .mfb 000008000000 0730 nop.m 0 000008000000 0731 nop.f 0 004000000000 0732 nop.b 0 ;; } { .mfb 000008000000 0740 nop.m 0 000008000000 0741 nop.f 0 00A000001000 0742 br.call.sptk.many br0 = OTS$MOVEM } { .mii 010800001CC0 0750 mov r115 = r0 010807000040 0751 mov r1 = r112 000008000000 0752 nop.i 0 } { .mfb 000008000000 0760 nop.m 0 000008000000 0761 nop.f 0 004000000000 0762 nop.b 0 ;; } { .mfb 000008000000 0770 nop.m 0 000008000000 0771 nop.f 0 00A000001000 0772 br.call.sptk.many br0 = OTS$FILL } { .mii 01200000A640 0780 mov r25 = 5 // 000329 0000B0001D40 0781 sxt4 r117 = r0 0000B0001D00 0782 sxt4 r116 = r0 } SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 24 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 { .mii 0119F80FDC80 0790 adds r114 = -2, r0 0000B0001CC0 0791 sxt4 r115 = r0 0000B2201C40 0792 sxt4 r113 = TARGET // r113 = r34 } { .mfb 010807000040 07A0 mov r1 = r112 // 000317 000008000000 07A1 nop.f 0 004000000000 07A2 nop.b 0 ;; } { .mfb 000008000000 07B0 nop.m 0 000008000000 07B1 nop.f 0 00A000001000 07B2 br.call.sptk.many br0 = XPO$FREE_MEM // 000329 } { .mib 010807000040 07C0 mov r1 = r112 00A0308001C0 07C1 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600006006 07C2 (pr6) br.cond.dpnt.few L$51 } { .mlx 010800800A00 07D0 mov SECONDARY_CODE = $XPO$STATUS // r40 = r8 // 000331 800000000000 07D1 movl PRIMARY_CODE = 2138362 // r41 = 2138362 0194105E94 } { .mfb 000008000000 07E0 nop.m 0 000008000000 07E1 nop.f 0 008000020000 07E2 br.sptk.few L$4 ;; } 07F0 L$51: // 000329 { .mmi 010802A08A80 07F0 adds r42 = 4, r42 ;; // 000335 00AC82AB6100 07F1 st4 [r42] = NEW_TARGET_PTR, 4 // [r42] = r91, 4 000008000000 07F2 nop.i 0 ;; } { .mmi 00BC4AAA9E00 0800 st2 [r42] = NEW_TARGET_MAXL, -8 ;; // [r42] = r84, -8 // 000336 008C42AA0000 0801 st2 [r42] = NEW_STRING_LEN // [r42] = r80 // 000334 000008000000 0802 nop.i 0 } 0810 L$17: // 000153 { .mii 000008000000 0810 nop.m 0 00A402031900 0811 extr.u r100 = OPTIONS, 12, 1 ;; // r100 = r32, 12, 1 // 000350 00A046400240 0812 tbit.z pr9, pr8 = r100, 0 } { .mfb 000008000000 0820 nop.m 0 000008000000 0821 nop.f 0 008600016009 0822 (pr9) br.cond.dpnt.few L$54 } { .mii 00A042A09940 0830 ld2 r101 = [r42], 4 // 000358 018C52F00000 0831 cmp4.lt pr0, pr10 = 0, STRING_LENGTH // pr0, pr10 = 0, r47 // 000360 012000003980 0832 mov INDEX = 1 ;; // r102 = 1 } SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 25 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 { .mii 008082A00A80 0840 ld4 r42 = [r42] // 000357 01002AFCB940 0841 sub r101 = r101, STRING_LENGTH ;; // r101 = r101, r47 // 000358 010006554A80 0842 add r42 = r42, r101 } { .mfb 000008000000 0850 nop.m 0 000008000000 0851 nop.f 0 00860001000A 0852 (pr10) br.cond.dpnt.few L$54 ;; // 000360 } { .mfi 0119FAAFEA80 0860 adds r42 = -1, r42 // 000358 000008000000 0861 nop.f 0 000008000000 0862 nop.i 0 ;; } 0870 L$58: // 000360 { .mmi 010802A02A80 0870 adds r42 = 1, r42 ;; 000008000000 0871 nop.m 0 0000B2A019C0 0872 sxt4 r103 = POINTER ;; // r103 = r42 // 000362 } { .mmi 008006701A00 0880 ld1 CHARACTER = [r103] ;; // r104 = [r103] 0119FE83FA40 0881 adds r105 = -97, CHARACTER // r105 = -97, r104 // 000364 0119FE8C1A00 0882 adds r104 = -32, r104 ;; } { .mfb 01AC06932340 0890 cmp4.ltu pr13, pr0 = 25, r105 000008000000 0891 nop.f 0 00860000400D 0892 (pr13) br.cond.dpnt.few L$62 } { .mfi 008C067D0000 08A0 st1 [r103] = r104 // 000368 000008000000 08A1 nop.f 0 000008000000 08A2 nop.i 0 } 08B0 L$62: // 000364 { .mmi 010806603980 08B0 adds r102 = 1, r102 ;; 01847665E000 08B1 cmp4.lt pr0, pr14 = STRING_LENGTH, INDEX // pr0, pr14 = r47, r102 // 000360 000008000000 08B2 nop.i 0 } { .mfb 000008000000 08C0 nop.m 0 000008000000 08C1 nop.f 0 0095FFFF600E 08C2 (pr14) br.cond.dptk.few L$58 } 08D0 L$54: // 000350 { .mfi 012000002A40 08D0 mov PRIMARY_CODE = 1 // r41 = 1 // 000384 000008000000 08D1 nop.f 0 000008000000 08D2 nop.i 0 } 08E0 L$4: // 000392 { .mmi 010802401AC0 08E0 mov r107 = FAILURE_ACTION ;; // r107 = r36 000008000000 08E1 nop.m 0 SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 26 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 00A032900000 08E2 tbit.z pr0, pr6 = PRIMARY_CODE, 0 ;; // pr0, pr6 = r41, 0 } { .mmi 010802301AC6 08F0 (pr6) mov r107 = SUCCESS_ACTION ;; // r107 = r35 01C406B00200 08F1 cmp4.eq pr8, pr0 = r0, $STR$ACTION // pr8, pr0 = r0, r107 000008000000 08F2 nop.i 0 } { .mfb 000008000000 0900 nop.m 0 000008000000 0901 nop.f 0 00860000E008 0902 (pr8) br.cond.dpnt.few L$64 } { .mii 01200000C640 0910 mov r25 = 6 0000B6B01AC0 0911 sxt4 r107 = $STR$ACTION // r107 = r107 0000B2201D80 0912 sxt4 r118 = TARGET // r118 = r34 } { .mii 012000007C40 0920 mov r113 = 3 0000B2101D40 0921 sxt4 r117 = STRING // r117 = r33 0000B2001D00 0922 sxt4 r116 = OPTIONS ;; // r116 = r32 } { .mii 010806B11AC0 0930 adds r107 = 8, r107 0000B2801CC0 0931 sxt4 r115 = SECONDARY_CODE // r115 = r40 0000B2901C80 0932 sxt4 r114 = PRIMARY_CODE ;; // r114 = r41 } { .mmi 00B0CEBF0040 0940 ld8 r1 = [r107], -8 ;; 0080C6B01AC0 0941 ld8 r107 = [r107] 000008000000 0942 nop.i 0 ;; } { .mib 000008000000 0950 nop.m 0 000E001D6180 0951 mov br6 = r107 00210000C000 0952 br.call.sptk.few br0 = br6 } { .mii 010800800A40 0960 mov PRIMARY_CODE = r8 // r41 = r8 010807000040 0961 mov r1 = r112 000008000000 0962 nop.i 0 } 0970 L$64: { .mii 000008000000 0970 nop.m 0 00A402038800 0971 extr.u r32 = OPTIONS, 14, 1 ;; // r32 = r32, 14, 1 // 000398 00A0320001C0 0972 tbit.z pr7, pr6 = r32, 0 } { .mfb 000008000000 0980 nop.m 0 000008000000 0981 nop.f 0 008600006006 0982 (pr6) br.cond.dpnt.few L$65 } { .mib 012000002640 0990 mov r25 = 1 // 000400 0000B2101C40 0991 sxt4 r113 = STRING // r113 = r33 00A000001000 0992 br.call.sptk.many br0 = XST$FREE_TEMP ;; SAPPEN Machine Code Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 27 V1.2-07 XST$APPEND 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 } { .mfi 010807000040 09A0 mov r1 = r112 000008000000 09A1 nop.f 0 000008000000 09A2 nop.i 0 } 09B0 L$65: // 000398 { .mii 000008000000 09B0 nop.m 0 0000B2900200 09B1 sxt4 r8 = PRIMARY_CODE // r8 = r41 // 000406 0001540DE000 09B2 mov.i rspfs = r111 ;; } { .mib 010800C20300 09C0 adds r12 = 16, r12 000E001DC000 09C1 mov br0 = r110 000108001100 09C2 br.ret.sptk.many br0 ;; } .endp XST$APPEND Routine Size: 2512 bytes, Routine Base: _XPO$CODE + 0000 .section .data .type XST$VALIDATE, @function .global XST$VALIDATE .section .data .type XST$VALIDATE, @function .global XST$VALIDATE .section .data .type OTS$MOVE, @function .global OTS$MOVE .section .data .type XPO$ALLOC_MEM, @function .global XPO$ALLOC_MEM .section .data .type OTS$MOVEM, @function .global OTS$MOVEM .section .data .type OTS$FILL, @function .global OTS$FILL .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 XPO$FREE_MEM, @function .global XPO$FREE_MEM .section .data .type XST$FREE_TEMP, @function .global XST$FREE_TEMP ; Library Statistics ; ; -------- Symbols -------- Pages ; File Total Loaded Percent Mapped Source Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 28 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 ; ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14 ; 590 62 10 270 ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14 ; 91 19 20 27 Source Listing 4-FEB-2004 11:01:58 BLISS-32I T1.1-053 Page 29 Source Listing 19-MAR-2002 10:11:33 [LASTOVICA.XPORT.VMSGEN]SAPPEN.BLI;1 COMMAND LINE: BLISSSAPPEN/LIST/DEBUG