XST$COPY - String Append Functi 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 1 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 0 1 MODULE SCOPY ( IDENT = 'X00.08' %TITLE 'XST$COPY - String Append Function' 0 2 %BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) ) 0 3 %BLISS36( ,ENTRY( XST$COPY ),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_COPY 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 !-- SCOPY XST$COPY - String Append Functi 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 2 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 1 40 ! 1 41 ! TABLE OF CONTENTS: 1 42 ! 1 43 1 44 FORWARD ROUTINE 1 45 XST$COPY; ! 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 ! SCOPY XST$COPY - String Append Functi 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 3 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 1 84 GLOBAL ROUTINE XST$COPY( 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_COPY 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 copy 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 ! SCOPY XST$COPY - String Append Functi 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 4 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 2 141 2 142 $STR_MAIN_BEGIN( COPY ) ! 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 copy processing depending on the target descriptor class. 3 151 ! 3 152 3 153 SELECTONE .target[STR$B_CLASS] OF 3 154 SET SCOPY XST$COPY - Copy to FIXED String 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 5 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 3 156 %TITLE 'XST$COPY - Copy to FIXED String' 3 157 3 158 !+ 3 159 ! 3 160 ! Copy source string to FIXED target string. 3 161 ! 3 162 !- 3 163 3 164 [ STR$K_CLASS_F ] : 3 165 3 166 BEGIN 4 167 IF NOT .options[STR$V_TRUNCATE] AND ! Make sure that the target area is big enuf. 4 168 .string[STR$H_LENGTH] GTRU .target[STR$H_LENGTH] 4 169 THEN 4 170 $STR_QUIT( BAD_TARGET, NO_SPACE ); 4 171 4 172 CH$COPY( .string[STR$H_LENGTH], ! Copy the source string into the target area 4 173 .string[STR$A_POINTER], ! truncating the source string if it is too big 4 174 %C' ', ! or padding it with blanks if the target area is too big. 4 175 .target[STR$H_LENGTH], 4 176 .target[STR$A_POINTER] ); 4 177 END; SCOPY XST$COPY - Copy to a DYNAMIC St 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 6 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 3 179 %TITLE 'XST$COPY - Copy to a DYNAMIC String' 3 180 3 181 !+ 3 182 ! 3 183 ! Copy source string to DYNAMIC target string. 3 184 ! 3 185 !- 3 186 3 187 [ STR$K_CLASS_D ] : 3 188 BEGIN 4 189 MACRO 4 190 round_up( length ) = M 4 191 ( M 4 192 %BLISS16( length + 3 AND %X'FFFC' ) M 4 193 %BLISS32( length + 7 AND %X'FFF8' ) M 4 194 %BLISS36( ((length + 4) / 5) * 5 ) M 4 195 ) %; 4 196 4 197 IF round_up( .string[STR$H_LENGTH] ) EQLU ! If the source string will exactly fit in the target area, 4 198 round_up( .target[STR$H_LENGTH] ) ! 5 199 THEN ! 4 200 BEGIN ! 5 201 CH$MOVE( .string[STR$H_LENGTH], ! move the source string into the target area 5 202 .string[STR$A_POINTER], ! 5 203 .target[STR$A_POINTER] ); ! 5 204 ! 5 205 target[STR$H_LENGTH] = ! and set the new target string length. 5 206 .string[STR$H_LENGTH]; 5 207 END 5 208 5 209 ELSE ! If the source string will not fit in the target area, 4 210 BEGIN ! a new target area must be allocated. 5 211 LOCAL 5 212 new_target_ptr; ! Pointer to the new target area 5 213 5 214 $XPO_IF_NOT( $XPO_GET_MEM( ! Allocate a new target area. P 5 215 CHARACTERS = .string[STR$H_LENGTH], P 5 216 RESULT = new_target_ptr, P 5 217 FAILURE = 0 ) ) 7 218 THEN 6 219 $STR_QUIT( (XPO$_GET_MEM), (.$XPO_STATUS) ); 5 220 5 221 CH$MOVE( .string[STR$H_LENGTH], ! Copy the source string into the target area. 5 222 .string[STR$A_POINTER], 5 223 .new_target_ptr ); 5 224 5 225 $XPO_IF_NOT( $XPO_FREE_MEM( ! Free the old target area. P 5 226 STRING = .target, P 5 227 FAILURE = 0 )) 7 228 THEN 6 229 $STR_QUIT( (XPO$_FREE_MEM), (.$XPO_STATUS) ); 5 230 5 231 ! Update the target area descriptor: 5 232 target[STR$H_LENGTH] = ! resulting string length 5 233 .string[STR$H_LENGTH]; ! 5 234 target[STR$A_POINTER] = .new_target_ptr; ! pointer to new target area 5 235 END; SCOPY XST$COPY - Copy to a DYNAMIC St 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 7 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 4 236 END; SCOPY XST$COPY - Copy to a BOUNDED St 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 8 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 3 238 %TITLE 'XST$COPY - Copy to a BOUNDED String' 3 239 3 240 !+ 3 241 ! 3 242 ! Copy source string to BOUNDED target string. 3 243 ! 3 244 !- 3 245 3 246 [ STR$K_CLASS_B ] : 3 247 3 248 BEGIN 4 249 IF .string[STR$H_LENGTH] LEQU ! Compare length of source string to the available 4 250 .target[STR$H_MAXLEN] - ! space in the target area. 4 251 .target[STR$H_PFXLEN] 4 252 THEN ! Source length LEQ target space: 4 253 string_length = .string[STR$H_LENGTH] ! setup to copy entire source string 4 254 4 255 ELSE ! Source length GTR target space: 4 256 IF .options[STR$V_TRUNCATE] 4 257 THEN ! OPTION=TRUNCATE specified: 4 258 string_length = .target[STR$H_MAXLEN] - ! setup to truncate source string 4 259 .target[STR$H_PFXLEN] 4 260 ELSE ! Truncation not permitted: 4 261 $STR_QUIT( BAD_TARGET, NO_SPACE ); ! return error codes to the caller 4 262 4 263 CH$MOVE( .string_length, ! Copy the source string into the target area. 4 264 .string[STR$A_POINTER], 4 265 .target[STR$A_POINTER] ); 4 266 4 267 ! Update the target descriptor: 4 268 target[STR$H_LENGTH] = .string_length; ! string length 4 269 END; SCOPY XST$COPY - Copy to a DYNAMIC_BO 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 9 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 3 271 %TITLE 'XST$COPY - Copy to a DYNAMIC_BOUNDED String' 3 272 3 273 !+ 3 274 ! 3 275 ! Copy 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_target_maxl, ! Maximum length of new target area 4 284 new_target_ptr; ! Address of the new target area 4 285 4 286 IF .string[STR$H_LENGTH] LEQU ! If the source string will fit in the target area, 4 287 .target[STR$H_MAXLEN] - ! 4 288 .target[STR$H_PFXLEN] ! 4 289 THEN ! 4 290 BEGIN ! 5 291 CH$MOVE( .string[STR$H_LENGTH], ! move the source string into the target area. 5 292 .string[STR$A_POINTER], 5 293 .target[STR$A_POINTER] ); 5 294 5 295 target[STR$H_LENGTH] = ! Set the new target string length. 5 296 .string[STR$H_LENGTH]; 5 297 END 5 298 5 299 ELSE ! If the source string will not fit in the target area, 4 300 BEGIN ! a new target area must be allocated. 5 301 5 302 new_target_maxl = .target[STR$H_MAXLEN]; ! Pickup the current target area size. 5 303 5 304 WHILE .new_target_maxl LSS ! Increase the memory size until it is large enough. 5 305 .string[STR$H_LENGTH] + .target[STR$H_PFXLEN] DO 5 306 new_target_maxl = .new_target_maxl + db_allocate; 5 307 5 308 $XPO_IF_NOT( $XPO_GET_MEM( ! Allocate a new target area. P 5 309 CHARACTERS = .new_target_maxl, P 5 310 RESULT = new_target_ptr, P 5 311 FAILURE = 0 ) ) 7 312 THEN 6 313 $STR_QUIT( (XPO$_GET_MEM), (.$XPO_STATUS) ); 5 314 5 315 CH$COPY( ! Copy the following strings into the target area: 5 316 .target[STR$H_PFXLEN], ! prefix string 5 317 CH$PLUS( .target[STR$A_POINTER], ! 5 318 -.target[STR$H_PFXLEN] ), ! 5 319 .string[STR$H_LENGTH], ! source string 5 320 .string[STR$A_POINTER], 5 321 0, .new_target_maxl, 5 322 .new_target_ptr ); 5 323 5 324 $XPO_IF_NOT( $XPO_FREE_MEM( ! Free the old target area. P 5 325 STRING = .target, P 5 326 FAILURE = 0 )) 7 327 THEN SCOPY XST$COPY - Copy to a DYNAMIC_BO 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 10 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 6 328 $STR_QUIT( (XPO$_FREE_MEM), (.$XPO_STATUS) ); 5 329 5 330 ! Update the target area descriptor: 5 331 target[STR$H_LENGTH] = ! resulting string length 5 332 .string[STR$H_LENGTH]; ! 5 333 target[STR$A_POINTER] = .new_target_ptr; ! pointer to new target area 5 334 target[STR$H_MAXLEN] = .new_target_maxl; ! maximum string length 5 335 END; 4 336 END; 3 337 3 338 TES; SCOPY XST$COPY - Convert to Upper Cas 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 11 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 3 340 %TITLE 'XST$COPY - Convert to Upper Case' 3 341 3 342 !+ 3 343 ! 3 344 ! Convert the copied string to upper case if requested. 3 345 ! 3 346 !- 3 347 3 348 IF .options[STR$V_UP_CASE] 3 349 THEN 3 350 BEGIN 4 351 LOCAL 4 352 character, ! A single ASCII character 4 353 pointer; ! Pointer into target string 4 354 4 355 pointer = CH$PLUS( .target[STR$A_POINTER], ! Point to the character preceding the copied string. 4 356 .target[STR$H_LENGTH] - .string_length - 1 ); 4 357 4 358 INCR index FROM 1 TO .string_length DO ! Loop through the copied string. 4 359 BEGIN 5 360 character = CH$A_RCHAR( pointer ); ! Pickup a single ASCII character. 5 361 5 362 IF .character GEQ %C'a' AND ! If it is a lower-case character, 5 363 .character LEQ %C'z' ! 5 364 THEN ! 5 365 CH$WCHAR( .character - %C' ', ! convert it to upper-case. 5 366 .pointer ); 5 367 END; 4 368 END; SCOPY XST$COPY - Routine Termination 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 12 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 3 370 %TITLE 'XST$COPY - Routine Termination' 3 371 3 372 !+ 3 373 ! 3 374 ! XST$COPY Routine Termination 3 375 ! 3 376 !- 3 377 3 378 ! 3 379 ! Setup a normal routine completion code. 3 380 ! 3 381 3 382 $STR_QUIT( NORMAL ); 3 383 3 384 $STR_MAIN_END; ! End of MAIN_BLOCK code block 2 385 2 386 ! 2 387 ! Call an appropriate action routine. 2 388 ! 2 389 2 390 $STR_ACTION_RTN( .options, .string, .target ); 2 391 2 392 ! 2 393 ! Free an temporary XPORT string used in this string copy. 2 394 ! 2 395 2 396 IF NOT .options[STR$V_NO_FREE_T] ! Unless this is an internal XPORT call, 2 397 THEN ! 2 398 $STR_FREE_TEMP( .string ); ! free the source string if it is a temporary string. 2 399 2 400 ! 2 401 ! Return the final completion code to the caller. 2 402 ! 2 403 2 404 RETURN .primary_code 2 405 2 406 END; 1 407 END 1 408 ELUDOM SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 13 X00.08 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC .proc XST$COPY .align 32 .global XST$COPY XST$COPY: // 000084 { .mii 002C04FABB40 0000 alloc r109 = rspfs, 5, 74, 6, 0 000188001B00 0001 mov r108 = br0 0119F8CE0300 0002 adds r12 = -16, r12 } { .mmi 010800101B80 0010 mov r110 = r1 012000002640 0011 mov r25 = 1 // 000144 0000B2101BC0 0012 sxt4 r111 = STRING ;; // r111 = 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 010806E00040 0030 mov r1 = r110 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 008000114000 0052 br.sptk.few L$4 ;; } 0060 L$2: // 000145 { .mib 012000002640 0060 mov r25 = 1 0000B2201BC0 0061 sxt4 r111 = TARGET // r111 = r34 00A000001000 0062 br.call.sptk.many br0 = XST$VALIDATE } { .mib 010806E00040 0070 mov r1 = r110 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 00800010C000 0092 br.sptk.few L$4 ;; } 00A0 L$5: SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 14 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 { .mii 000008000000 00A0 nop.m 0 0000B2100A80 00A1 sxt4 r42 = STRING // r42 = r33 // 000147 0000B2200AC0 00A2 sxt4 r43 = TARGET ;; // r43 = r34 // 000153 } { .mmi 010802B06AC0 00B0 adds r43 = 3, r43 008042A00B80 00B1 ld2 r46 = [r42] // 000147 000008000000 00B2 nop.i 0 ;; } { .mii 00B00ABFAB40 00C0 ld1 r45 = [r43], -3 // 000153 010802E000C0 00C1 mov r3 = r46 ;; // 000147 01CC42D02000 00C2 cmp4.eq pr0, pr8 = 1, r45 // 000153 } { .mfb 000008000000 00D0 nop.m 0 000008000000 00D1 nop.f 0 008600022008 00D2 (pr8) br.cond.dpnt.few L$9 } { .mii 000008000000 00E0 nop.m 0 00A402034BC0 00E1 extr.u r47 = OPTIONS, 13, 1 ;; // r47 = r32, 13, 1 // 000167 00A052F002C0 00E2 tbit.z pr11, pr10 = r47, 0 } { .mfb 000008000000 00F0 nop.m 0 000008000000 00F1 nop.f 0 00860000E00A 00F2 (pr10) br.cond.dpnt.few L$13 } { .mmi 008042B00C00 0100 ld2 r48 = [r43] ;; // 000168 01A46AE60300 0101 cmp4.ltu pr12, pr13 = r48, r46 000008000000 0102 nop.i 0 ;; } { .mib 01C00000128D 0110 (pr13) cmp.eq.unc pr10, pr0 = r0, r0 // 000167 01C0000012CC 0111 (pr12) cmp.eq.unc pr11, pr0 = r0, r0 00860000400B 0112 (pr11) br.cond.dpnt.few L$12 } { .mfb 000008000000 0120 nop.m 0 000008000000 0121 nop.f 0 00860000800A 0122 (pr10) br.cond.dpnt.few L$13 } 0130 L$12: { .mlx 000008000000 0130 nop.m 0 800000000000 0131 movl PRIMARY_CODE = 2402402 // r41 = 2402402 // 000170 0195025894 } { .mlx 000008000000 0140 nop.m 0 000000000000 0141 movl SECONDARY_CODE = 2402418 // r40 = 2402418 0195025C94 } { .mfb SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 15 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 000008000000 0150 nop.m 0 000008000000 0151 nop.f 0 0080000F4000 0152 br.sptk.few L$4 ;; } 0160 L$13: // 000167 { .mmi 010802A08C40 0160 adds r49 = 4, r42 // 000173 00A042B09C00 0161 ld2 r112 = [r43], 4 // 000175 0000B0301C80 0162 sxt4 r114 = r3 ;; // 000172 } { .mmi 00B08ABF8C80 0170 ld4 r50 = [r43], -4 // 000176 008083100A80 0171 ld4 r42 = [r49] // 000173 0000B7001C00 0172 sxt4 r112 = r112 ;; // 000172 } { .mii 000008000000 0180 nop.m 0 0000B3201BC0 0181 sxt4 r111 = r50 // 000176 0000B2A01C40 0182 sxt4 r113 = r42 // 000173 } { .mfb 000008000000 0190 nop.m 0 000008000000 0191 nop.f 0 00A000001000 0192 br.call.sptk.many br0 = OTS$MOVEM ;; // 000172 } { .mii 012000041C40 01A0 mov r113 = 32 010806E00040 01A1 mov r1 = r110 000008000000 01A2 nop.i 0 } { .mfb 000008000000 01B0 nop.m 0 000008000000 01B1 nop.f 0 004000000000 01B2 nop.b 0 ;; } { .mfb 000008000000 01C0 nop.m 0 000008000000 01C1 nop.f 0 00A000001000 01C2 br.call.sptk.many br0 = OTS$FILL } { .mfb 010806E00040 01D0 mov r1 = r110 000008000000 01D1 nop.f 0 0080000CA000 01D2 br.sptk.few L$16 ;; // 000153 } 01E0 L$9: { .mfb 01CC32D04000 01E0 cmp4.eq pr0, pr6 = 2, r45 000008000000 01E1 nop.f 0 008600040006 01E2 (pr6) br.cond.dpnt.few L$19 } { .mii 008042B00D00 01F0 ld2 r52 = [r43] // 000198 012FF80F0D80 01F1 addl r54 = 65528, r0 // 000197 01080030ED40 01F2 adds r53 = 7, r3 ;; } { .mii SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 16 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 01080340ED00 0200 adds r52 = 7, r52 // 000198 01006366AD40 0201 and r53 = r53, r54 ;; // 000197 010063668D00 0202 and r52 = r52, r54 ;; // 000198 } { .mfb 01C44346A000 0210 cmp4.eq pr0, pr8 = r53, r52 // 000197 000008000000 0211 nop.f 0 00860000C008 0212 (pr8) br.cond.dpnt.few L$21 } { .mii 010802B08AC0 0220 adds r43 = 4, r43 // 000203 010802A08A80 0221 adds r42 = 4, r42 // 000202 0000B0301C00 0222 sxt4 r112 = r3 ;; // 000201 } { .mmi 00B08ABF8E00 0230 ld4 r56 = [r43], -4 // 000203 00B08AAF8DC0 0231 ld4 r55 = [r42], -4 // 000202 000008000000 0232 nop.i 0 ;; } { .mii 000008000000 0240 nop.m 0 0000B3801BC0 0241 sxt4 r111 = r56 // 000203 0000B3701C40 0242 sxt4 r113 = r55 // 000202 } { .mfb 000008000000 0250 nop.m 0 000008000000 0251 nop.f 0 00A000001000 0252 br.call.sptk.many br0 = OTS$MOVE // 000201 } { .mib 008042A00A80 0260 ld2 r42 = [r42] // 000206 010806E00040 0261 mov r1 = r110 // 000201 0080000B6000 0262 br.sptk.few L$74 ;; // 000206 } 0270 L$21: // 000217 { .mii 010800C30F00 0270 adds r60 = 24, r12 010800C38F40 0271 adds r61 = 28, r12 000008000000 0272 nop.i 0 } { .mlx 010800C30F80 0280 adds r62 = 24, r12 800000000008 0281 movl r59 = 34471936 ;; 018007001D } { .mii 008C83C76000 0290 st4 [r60] = r59 01200000C640 0291 mov r25 = 6 0000B0001D00 0292 sxt4 r116 = r0 } { .mii 0119F80FFC40 02A0 adds r113 = -1, r0 0000B0001CC0 02A1 sxt4 r115 = r0 0000B0001C80 02A2 sxt4 r114 = r0 } { .mii 008C83D00000 02B0 st4 [r61] = r0 SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 17 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 0000B3E01C00 02B1 sxt4 r112 = r62 0000B0301BC0 02B2 sxt4 r111 = r3 } { .mfb 000008000000 02C0 nop.m 0 000008000000 02C1 nop.f 0 00A000001000 02C2 br.call.sptk.many br0 = XPO$ALLOC_MEM } { .mii 010800C38FC0 02D0 adds r63 = 28, r12 00A0308001C0 02D1 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 010806E00040 02D2 mov r1 = r110 ;; } { .mii 008083F00FC0 02E0 ld4 r63 = [r63] 01C000001206 02E1 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 ;; 010803F01008 02E2 (pr8) mov NEW_TARGET_PTR = r63 // r64 = r63 } { .mfb 000008000000 02F0 nop.m 0 000008000000 02F1 nop.f 0 008600006008 02F2 (pr8) br.cond.dpnt.few L$25 } { .mlx 010800800A00 0300 mov SECONDARY_CODE = $XPO$STATUS // r40 = r8 // 000219 800000000000 0301 movl PRIMARY_CODE = 2138370 // r41 = 2138370 0194204094 } { .mfb 000008000000 0310 nop.m 0 000008000000 0311 nop.f 0 0080000BC000 0312 br.sptk.few L$4 ;; } 0320 L$25: // 000217 { .mii 00A042A09C00 0320 ld2 r112 = [r42], 4 // 000221 0000B4001BC0 0321 sxt4 r111 = NEW_TARGET_PTR ;; // r111 = r64 // 000223 000008000000 0322 nop.i 0 } { .mii 00B08AAF9040 0330 ld4 r65 = [r42], -4 // 000222 0000B7001C00 0331 sxt4 r112 = r112 ;; // 000221 0000B4101C40 0332 sxt4 r113 = r65 // 000222 } { .mfb 000008000000 0340 nop.m 0 000008000000 0341 nop.f 0 00A000001000 0342 br.call.sptk.many br0 = OTS$MOVE ;; // 000221 } { .mii 01200000A640 0350 mov r25 = 5 // 000227 0000B0001CC0 0351 sxt4 r115 = r0 0000B0001C80 0352 sxt4 r114 = r0 } { .mii 0119F80FDC00 0360 adds r112 = -2, r0 0000B0001C40 0361 sxt4 r113 = r0 SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 18 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 0000B2201BC0 0362 sxt4 r111 = TARGET // r111 = r34 } { .mfb 010806E00040 0370 mov r1 = r110 // 000221 000008000000 0371 nop.f 0 004000000000 0372 nop.b 0 ;; } { .mfb 000008000000 0380 nop.m 0 000008000000 0381 nop.f 0 00A000001000 0382 br.call.sptk.many br0 = XPO$FREE_MEM // 000227 } { .mib 010806E00040 0390 mov r1 = r110 00A0308001C0 0391 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600006006 0392 (pr6) br.cond.dpnt.few L$29 } { .mlx 010800800A00 03A0 mov SECONDARY_CODE = $XPO$STATUS // r40 = r8 // 000229 800000000000 03A1 movl PRIMARY_CODE = 2138362 // r41 = 2138362 0194105E94 } { .mfb 000008000000 03B0 nop.m 0 000008000000 03B1 nop.f 0 0080000A8000 03B2 br.sptk.few L$4 ;; } 03C0 L$29: // 000227 { .mii 008042A00A80 03C0 ld2 r42 = [r42] // 000233 010802B08AC0 03C1 adds r43 = 4, r43 // 000234 000008000000 03C2 nop.i 0 ;; } { .mfb 00BC8AB81F00 03D0 st4 [r43] = NEW_TARGET_PTR, -4 // [r43] = r64, -4 000008000000 03D1 nop.f 0 008000088000 03D2 br.sptk.few L$74 ;; } 03E0 L$19: // 000153 { .mfb 01CC42D06000 03E0 cmp4.eq pr0, pr8 = 3, r45 000008000000 03E1 nop.f 0 008600020008 03E2 (pr8) br.cond.dpnt.few L$33 } { .mmi 010802B10AC0 03F0 adds r43 = 8, r43 ;; // 000250 00A042B05140 03F1 ld2 r69 = [r43], 2 000008000000 03F2 nop.i 0 ;; } { .mmi 00B04ABED180 0400 ld2 r70 = [r43], -10 ;; // 000251 01002C68B140 0401 sub r69 = r69, r70 // 000250 000008000000 0402 nop.i 0 ;; } { .mfb 01A40038A2C0 0410 cmp4.ltu pr11, pr0 = r69, r3 // 000249 000008000000 0411 nop.f 0 SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 19 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 00860000400B 0412 (pr11) br.cond.dpnt.few L$36 } { .mfb 010800300B80 0420 mov STRING_LENGTH = r3 // r46 = r3 // 000253 000008000000 0421 nop.f 0 008000008000 0422 br.sptk.few L$37 ;; // 000249 } 0430 L$36: { .mii 000008000000 0430 nop.m 0 00A4020351C0 0431 extr.u r71 = OPTIONS, 13, 1 ;; // r71 = r32, 13, 1 // 000256 00A064700340 0432 tbit.z pr13, pr12 = r71, 0 } { .mfb 000008000000 0440 nop.m 0 000008000000 0441 nop.f 0 00860000E00D 0442 (pr13) br.cond.dpnt.few L$39 } { .mfi 010804500B80 0450 mov STRING_LENGTH = r69 // r46 = r69 // 000258 000008000000 0451 nop.f 0 000008000000 0452 nop.i 0 } 0460 L$37: // 000249 { .mii 010802A09200 0460 adds r72 = 4, r42 // 000264 010802B08AC0 0461 adds r43 = 4, r43 // 000265 000008000000 0462 nop.i 0 ;; } { .mmi 00B08ABF9240 0470 ld4 r73 = [r43], -4 008084800A80 0471 ld4 r42 = [r72] // 000264 0000B2E01C00 0472 sxt4 r112 = STRING_LENGTH ;; // r112 = r46 // 000263 } { .mii 000008000000 0480 nop.m 0 0000B4901BC0 0481 sxt4 r111 = r73 // 000265 0000B2A01C40 0482 sxt4 r113 = r42 // 000264 } { .mfb 000008000000 0490 nop.m 0 000008000000 0491 nop.f 0 00A000001000 0492 br.call.sptk.many br0 = OTS$MOVE // 000263 } { .mib 008C42B5C000 04A0 st2 [r43] = STRING_LENGTH // [r43] = r46 // 000268 010806E00040 04A1 mov r1 = r110 // 000263 008000070000 04A2 br.sptk.few L$16 ;; // 000153 } 04B0 L$39: // 000256 { .mlx 000008000000 04B0 nop.m 0 000000000000 04B1 movl SECONDARY_CODE = 2402418 // r40 = 2402418 // 000261 0195025C94 } { .mlx 000008000000 04C0 nop.m 0 SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 20 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 800000000000 04C1 movl PRIMARY_CODE = 2402402 // r41 = 2402402 0195025894 } { .mfb 000008000000 04D0 nop.m 0 000008000000 04D1 nop.f 0 008000084000 04D2 br.sptk.few L$4 ;; } 04E0 L$33: // 000153 { .mmi 01200807D2C0 04E0 mov r75 = 190 ;; 01C434B5A000 04E1 cmp4.eq pr0, pr6 = r45, r75 000008000000 04E2 nop.i 0 } { .mfb 000008000000 04F0 nop.m 0 000008000000 04F1 nop.f 0 008600066006 04F2 (pr6) br.cond.dpnt.few L$16 } { .mmi 010802B10AC0 0500 adds r43 = 8, r43 ;; // 000287 00A042B05300 0501 ld2 r76 = [r43], 2 000008000000 0502 nop.i 0 ;; } { .mmi 00B04ABED340 0510 ld2 r77 = [r43], -10 ;; // 000288 01002CD99380 0511 sub r78 = r76, r77 // 000287 000008000000 0512 nop.i 0 ;; } { .mfb 01A40039C240 0520 cmp4.ltu pr9, pr0 = r78, r3 // 000286 000008000000 0521 nop.f 0 00860000C009 0522 (pr9) br.cond.dpnt.few L$44 } { .mib 010802A08A80 0530 adds r42 = 4, r42 // 000292 0000B0301C00 0531 sxt4 r112 = r3 // 000291 004000000000 0532 nop.b 0 ;; } { .mii 00B08AAF93C0 0540 ld4 r79 = [r42], -4 // 000292 010802B08AC0 0541 adds r43 = 4, r43 ;; // 000293 0000B4F01C40 0542 sxt4 r113 = r79 // 000292 } { .mmi 00B08ABF9400 0550 ld4 r80 = [r43], -4 ;; // 000293 000008000000 0551 nop.m 0 0000B5001BC0 0552 sxt4 r111 = r80 } { .mfb 000008000000 0560 nop.m 0 000008000000 0561 nop.f 0 00A000001000 0562 br.call.sptk.many br0 = OTS$MOVE // 000291 } { .mib 008042A00A80 0570 ld2 r42 = [r42] // 000296 010806E00040 0571 mov r1 = r110 // 000291 SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 21 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 008000054000 0572 br.sptk.few L$74 ;; // 000296 } 0580 L$44: // 000286 { .mii 010004D060C0 0580 add r3 = r3, r77 // 000305 010804C014C0 0581 mov NEW_TARGET_MAXL = r76 ;; // r83 = r76 // 000302 018438398000 0582 cmp4.lt pr0, pr7 = r76, r3 // 000304 } { .mfb 000008000000 0590 nop.m 0 000008000000 0591 nop.f 0 008600010007 0592 (pr7) br.cond.dpnt.few L$48 } { .mmi 0119E03E1500 05A0 adds r84 = -400, r3 ;; // 000305 01845D498000 05A1 cmp4.lt pr0, pr11 = r76, r84 // 000304 018445406240 05A2 cmp4.lt pr9, pr8 = r3, r84 ;; // 000305 } { .mbb 01C24000024B 05B0 (pr11) cmp.eq.or.andcm pr9, pr8 = r0, r0 008600002008 05B1 (pr8) br.cond.dpnt.few L$51 // 000304 008600008009 05B2 (pr9) br.cond.dpnt.few L$53 ;; } 05C0 L$51: { .mmi 01081D3C14C0 05C0 adds NEW_TARGET_MAXL = 480, // r83 = 480, r83 // 000306 NEW_TARGET_MAXL ;; 0184054A6300 05C1 cmp4.lt pr12, pr0 = NEW_TARGET_MAXL, r84 // pr12, pr0 = r83, r84 // 000304 000008000000 05C2 nop.i 0 } { .mfb 000008000000 05D0 nop.m 0 000008000000 05D1 nop.f 0 0095FFFFE00C 05D2 (pr12) br.cond.dptk.few L$51 } { .mfb 0184783A6000 05E0 cmp4.lt pr0, pr15 = NEW_TARGET_MAXL, r3 // pr0, pr15 = r83, r3 000008000000 05E1 nop.f 0 00860000600F 05E2 (pr15) br.cond.dpnt.few L$48 ;; } 05F0 L$53: { .mmi 0108053A14C0 05F0 adds r83 = 80, r83 ;; 0184003A6180 05F1 cmp4.lt pr6, pr0 = NEW_TARGET_MAXL, r3 // pr6, pr0 = r83, r3 000008000000 05F2 nop.i 0 } { .mfb 000008000000 0600 nop.m 0 000008000000 0601 nop.f 0 0095FFFFE006 0602 (pr6) br.cond.dptk.few L$53 } 0610 L$48: // 000311 { .mii 010800C21580 0610 adds r86 = 16, r12 010800C295C0 0611 adds r87 = 20, r12 000008000000 0612 nop.i 0 } SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 22 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 { .mlx 010800C21600 0620 adds r88 = 16, r12 800000000008 0621 movl r85 = 34471936 ;; 018007002A } { .mii 008C856AA000 0630 st4 [r86] = r85 01200000C640 0631 mov r25 = 6 0000B0001D00 0632 sxt4 r116 = r0 } { .mii 0119F80FFC40 0640 adds r113 = -1, r0 0000B0001CC0 0641 sxt4 r115 = r0 0000B0001C80 0642 sxt4 r114 = r0 } { .mii 008C85700000 0650 st4 [r87] = r0 0000B5801C00 0651 sxt4 r112 = r88 0000B5301BC0 0652 sxt4 r111 = NEW_TARGET_MAXL // r111 = r83 } { .mfb 000008000000 0660 nop.m 0 000008000000 0661 nop.f 0 00A000001000 0662 br.call.sptk.many br0 = XPO$ALLOC_MEM } { .mii 010800C29640 0670 adds r89 = 20, r12 00A0308001C0 0671 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 010806E00040 0672 mov r1 = r110 ;; } { .mii 008085901640 0680 ld4 r89 = [r89] 01C000001206 0681 (pr6) cmp.eq.unc pr8, pr0 = r0, r0 ;; 010805901688 0682 (pr8) mov NEW_TARGET_PTR = r89 // r90 = r89 } { .mfb 000008000000 0690 nop.m 0 000008000000 0691 nop.f 0 008600006008 0692 (pr8) br.cond.dpnt.few L$54 } { .mlx 010800800A00 06A0 mov SECONDARY_CODE = $XPO$STATUS // r40 = r8 // 000313 800000000000 06A1 movl PRIMARY_CODE = 2138370 // r41 = 2138370 0194204094 } { .mfb 000008000000 06B0 nop.m 0 000008000000 06B1 nop.f 0 008000048000 06B2 br.sptk.few L$4 ;; } 06C0 L$54: // 000311 { .mii 010802B08AC0 06C0 adds r43 = 4, r43 // 000317 0000B5301C00 06C1 sxt4 r112 = NEW_TARGET_MAXL // r112 = r83 // 000315 0000B5A01BC0 06C2 sxt4 r111 = NEW_TARGET_PTR ;; // r111 = r90 // 000322 } { .mmi SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 23 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 00A082B0D6C0 06D0 ld4 r91 = [r43], 6 ;; // 000317 00B04ABEDC80 06D1 ld2 r114 = [r43], -10 // 000316 010802A08A80 06D2 adds r42 = 4, r42 ;; // 000320 } { .mii 000008000000 06E0 nop.m 0 0000B5B016C0 06E1 sxt4 r91 = r91 // 000317 01002F201780 06E2 sub r94 = r0, r114 ;; // 000318 } { .mii 00B08AAF9740 06F0 ld4 r93 = [r42], -4 // 000320 0000B7201C80 06F1 sxt4 r114 = r114 // 000315 0000B5E01780 06F2 sxt4 r94 = r94 ;; // 000318 } { .mii 008042A017C0 0700 ld2 r95 = [r42] // 000319 010005EB7C40 0701 add r113 = r91, r94 // 000318 0000B5D01740 0702 sxt4 r93 = r93 // 000320 } { .mfb 000008000000 0710 nop.m 0 000008000000 0711 nop.f 0 00A000001000 0712 br.call.sptk.many br0 = OTS$MOVEM ;; // 000315 } { .mii 010805D01C40 0720 mov r113 = r93 0000B5F01C80 0721 sxt4 r114 = r95 010806E00040 0722 mov r1 = r110 } { .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 010800001C40 0750 mov r113 = r0 010806E00040 0751 mov r1 = r110 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 // 000326 0000B0001CC0 0781 sxt4 r115 = r0 SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 24 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 0000B0001C80 0782 sxt4 r114 = r0 } { .mii 0119F80FDC00 0790 adds r112 = -2, r0 0000B0001C40 0791 sxt4 r113 = r0 0000B2201BC0 0792 sxt4 r111 = TARGET // r111 = r34 } { .mfb 010806E00040 07A0 mov r1 = r110 // 000315 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 // 000326 } { .mib 010806E00040 07C0 mov r1 = r110 00A0308001C0 07C1 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600006006 07C2 (pr6) br.cond.dpnt.few L$58 } { .mlx 010800800A00 07D0 mov SECONDARY_CODE = $XPO$STATUS // r40 = r8 // 000328 800000000000 07D1 movl PRIMARY_CODE = 2138362 // r41 = 2138362 0194105E94 } { .mfb 000008000000 07E0 nop.m 0 000008000000 07E1 nop.f 0 008000022000 07E2 br.sptk.few L$4 ;; } 07F0 L$58: // 000326 { .mii 008042A00A80 07F0 ld2 r42 = [r42] // 000332 010802B08AC0 07F1 adds r43 = 4, r43 // 000333 000008000000 07F2 nop.i 0 ;; } { .mmi 00AC82BB4100 0800 st4 [r43] = NEW_TARGET_PTR, 4 ;; // [r43] = r90, 4 00BC4ABA7E00 0801 st2 [r43] = NEW_TARGET_MAXL, -8 // [r43] = r83, -8 // 000334 000008000000 0802 nop.i 0 ;; } 0810 L$74: // 000331 { .mfi 008C42B54000 0810 st2 [r43] = r42 000008000000 0811 nop.f 0 000008000000 0812 nop.i 0 } 0820 L$16: // 000153 { .mii 000008000000 0820 nop.m 0 00A402031880 0821 extr.u r98 = OPTIONS, 12, 1 ;; // r98 = r32, 12, 1 // 000348 00A046200240 0822 tbit.z pr9, pr8 = r98, 0 } { .mfb 000008000000 0830 nop.m 0 SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 25 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 000008000000 0831 nop.f 0 008600016009 0832 (pr9) br.cond.dpnt.few L$61 } { .mii 00A042B098C0 0840 ld2 r99 = [r43], 4 // 000356 018C52E00000 0841 cmp4.lt pr0, pr10 = 0, STRING_LENGTH // pr0, pr10 = 0, r46 // 000358 012000003900 0842 mov INDEX = 1 ;; // r100 = 1 } { .mii 008082B00AC0 0850 ld4 r43 = [r43] // 000355 01002AEC78C0 0851 sub r99 = r99, STRING_LENGTH ;; // r99 = r99, r46 // 000356 010006356AC0 0852 add r43 = r43, r99 } { .mfb 000008000000 0860 nop.m 0 000008000000 0861 nop.f 0 00860001000A 0862 (pr10) br.cond.dpnt.few L$61 ;; // 000358 } { .mfi 0119FABFEAC0 0870 adds r43 = -1, r43 // 000356 000008000000 0871 nop.f 0 000008000000 0872 nop.i 0 ;; } 0880 L$65: // 000358 { .mmi 010802B02AC0 0880 adds r43 = 1, r43 ;; 000008000000 0881 nop.m 0 0000B2B01940 0882 sxt4 r101 = POINTER ;; // r101 = r43 // 000360 } { .mmi 008006501980 0890 ld1 CHARACTER = [r101] ;; // r102 = [r101] 0119FE63F9C0 0891 adds r103 = -97, CHARACTER // r103 = -97, r102 // 000362 0119FE6C1980 0892 adds r102 = -32, r102 ;; } { .mfb 01AC06732340 08A0 cmp4.ltu pr13, pr0 = 25, r103 000008000000 08A1 nop.f 0 00860000400D 08A2 (pr13) br.cond.dpnt.few L$69 } { .mfi 008C065CC000 08B0 st1 [r101] = r102 // 000366 000008000000 08B1 nop.f 0 000008000000 08B2 nop.i 0 } 08C0 L$69: // 000362 { .mmi 010806403900 08C0 adds r100 = 1, r100 ;; 01847645C000 08C1 cmp4.lt pr0, pr14 = STRING_LENGTH, INDEX // pr0, pr14 = r46, r100 // 000358 000008000000 08C2 nop.i 0 } { .mfb 000008000000 08D0 nop.m 0 000008000000 08D1 nop.f 0 0095FFFF600E 08D2 (pr14) br.cond.dptk.few L$65 } 08E0 L$61: // 000348 { .mfi SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 26 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 012000002A40 08E0 mov PRIMARY_CODE = 1 // r41 = 1 // 000382 000008000000 08E1 nop.f 0 000008000000 08E2 nop.i 0 } 08F0 L$4: // 000390 { .mmi 010802401A40 08F0 mov r105 = FAILURE_ACTION ;; // r105 = r36 000008000000 08F1 nop.m 0 00A032900000 08F2 tbit.z pr0, pr6 = PRIMARY_CODE, 0 ;; // pr0, pr6 = r41, 0 } { .mmi 010802301A46 0900 (pr6) mov r105 = SUCCESS_ACTION ;; // r105 = r35 01C406900200 0901 cmp4.eq pr8, pr0 = r0, $STR$ACTION // pr8, pr0 = r0, r105 000008000000 0902 nop.i 0 } { .mfb 000008000000 0910 nop.m 0 000008000000 0911 nop.f 0 00860000E008 0912 (pr8) br.cond.dpnt.few L$71 } { .mii 01200000C640 0920 mov r25 = 6 0000B6901A40 0921 sxt4 r105 = $STR$ACTION // r105 = r105 0000B2201D00 0922 sxt4 r116 = TARGET // r116 = r34 } { .mii 012000005BC0 0930 mov r111 = 2 0000B2101CC0 0931 sxt4 r115 = STRING // r115 = r33 0000B2001C80 0932 sxt4 r114 = OPTIONS ;; // r114 = r32 } { .mii 010806911A40 0940 adds r105 = 8, r105 0000B2801C40 0941 sxt4 r113 = SECONDARY_CODE // r113 = r40 0000B2901C00 0942 sxt4 r112 = PRIMARY_CODE ;; // r112 = r41 } { .mmi 00B0CE9F0040 0950 ld8 r1 = [r105], -8 ;; 0080C6901A40 0951 ld8 r105 = [r105] 000008000000 0952 nop.i 0 ;; } { .mib 000008000000 0960 nop.m 0 000E001D2180 0961 mov br6 = r105 00210000C000 0962 br.call.sptk.few br0 = br6 } { .mii 010800800A40 0970 mov PRIMARY_CODE = r8 // r41 = r8 010806E00040 0971 mov r1 = r110 000008000000 0972 nop.i 0 } 0980 L$71: { .mii 000008000000 0980 nop.m 0 00A402038800 0981 extr.u r32 = OPTIONS, 14, 1 ;; // r32 = r32, 14, 1 // 000396 00A0320001C0 0982 tbit.z pr7, pr6 = r32, 0 } { .mfb SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 27 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 000008000000 0990 nop.m 0 000008000000 0991 nop.f 0 008600006006 0992 (pr6) br.cond.dpnt.few L$72 } { .mib 012000002640 09A0 mov r25 = 1 // 000398 0000B2101BC0 09A1 sxt4 r111 = STRING // r111 = r33 00A000001000 09A2 br.call.sptk.many br0 = XST$FREE_TEMP ;; } { .mfi 010806E00040 09B0 mov r1 = r110 000008000000 09B1 nop.f 0 000008000000 09B2 nop.i 0 } 09C0 L$72: // 000396 { .mii 000008000000 09C0 nop.m 0 0000B2900200 09C1 sxt4 r8 = PRIMARY_CODE // r8 = r41 // 000404 0001540DA000 09C2 mov.i rspfs = r109 ;; } { .mib 010800C20300 09D0 adds r12 = 16, r12 000E001D8000 09D1 mov br0 = r108 000108001100 09D2 br.ret.sptk.many br0 ;; } .endp XST$COPY Routine Size: 2528 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$MOVEM, @function .global OTS$MOVEM .section .data .type OTS$FILL, @function .global OTS$FILL .section .data .type OTS$MOVE, @function .global OTS$MOVE .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 XPO$ALLOC_MEM, @function .global XPO$ALLOC_MEM .section .data .type XPO$FREE_MEM, @function .global XPO$FREE_MEM .section .data SCOPY Machine Code Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 28 X00.08 XST$COPY 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 .type XST$FREE_TEMP, @function .global XST$FREE_TEMP ; Library Statistics ; ; -------- Symbols -------- Pages ; File Total Loaded Percent Mapped ; ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14 ; 590 60 10 270 ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14 ; 91 19 20 27 Source Listing 4-FEB-2004 11:02:00 BLISS-32I T1.1-053 Page 29 Source Listing 19-MAR-2002 10:11:37 [LASTOVICA.XPORT.VMSGEN]SCOPY.BLI;1 COMMAND LINE: BLISSSCOPY/LIST/DEBUG