XPO$BACKUP - XPORT File Backup 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 1 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 0 1 MODULE XBACK ( IDENT = 'X00.13' %TITLE 'XPO$BACKUP - XPORT File Backup' 0 2 %BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) ) 0 3 %BLISS36( ,ENTRY( XPO$BACKUP ),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 is the XPORT file backup module. 1 33 ! 1 34 ! ENVIRONMENT: User mode - multiple host operating/file systems 1 35 ! 1 36 ! AUTHOR: Ward Clark, CREATION DATE: 21 February 1979 1 37 ! 1 38 !-- XBACK XPO$BACKUP - XPORT File Backup 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 2 X00.13 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 1 40 ! 1 41 ! TABLE OF CONTENTS: 1 42 ! 1 43 1 44 FORWARD ROUTINE 1 45 XPO$BACKUP; ! XPORT file backup 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( $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 57 1 58 ! 1 59 ! MACROS: 1 60 ! 1 61 1 62 %IF $TOPS10 OR $RSTS %THEN U 1 63 MACRO U 1 64 default_spec = U 1 65 '*:[*]*' %; U 1 66 %FI 1 67 1 68 %IF $TOPS20 %THEN U 1 69 MACRO U 1 70 default_spec = U 1 71 '*:<*>*' %; U 1 72 %FI 1 73 1 74 %IF $RT11 %THEN U 1 75 MACRO U 1 76 default_spec = U 1 77 '*:*' %; U 1 78 %FI 1 79 1 80 ! 1 81 ! EQUATED SYMBOLS: 1 82 ! 1 83 1 84 LITERAL 1 85 version_backup = $VMS OR $11M; ! Backup-by-version-number indicator 1 86 1 87 ! 1 88 ! PSECT DECLARATIONS: 1 89 ! 1 90 1 91 $XPO_PSECTS ! Declare XPORT PSECT names and attributes 1 92 1 93 ! 1 94 ! OWN STORAGE: 1 95 ! 1 96 XBACK XPO$BACKUP - XPORT File Backup 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 3 X00.13 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 1 97 ! 1 98 ! EXTERNAL REFERENCES: 1 99 ! XBACK XPO$BACKUP - XPORT File Backup 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 4 X00.13 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 1 101 GLOBAL ROUTINE XPO$BACKUP( iob, success_action, failure_action ) = 1 102 1 103 !++ 1 104 ! 1 105 ! FUNCTIONAL DESCRIPTION: 1 106 ! 1 107 ! This routine performs XPORT file backup processing. 1 108 ! 1 109 ! FORMAL PARAMETERS: 1 110 ! 1 111 ! iob - address of IOB 1 112 ! success_action - address of success action routine 1 113 ! failure_action - address of failure action routine 1 114 ! 1 115 ! IMPLICIT INPUTS: 1 116 ! 1 117 ! None 1 118 ! 1 119 ! IMPLICIT OUTPUTS: 1 120 ! 1 121 ! None 1 122 ! 1 123 ! COMPLETION CODES: (also returned in IOB$G_COMP_CODE) 1 124 ! 1 125 ! XPO$_NORMAL - file successfully backed up 1 126 ! 1 127 ! XPO$_BAD_IOB - invalid IOB 1 128 ! ( IOB$G_2ND_CODE = XPO$_BAD_LENGTH - invalid length ) 1 129 ! XPO$_BAD_IO_OPT - invalid I/O option (REMEMBER) 1 130 ! XPO$_BAD_TYPE - invalid backup file extension 1 131 ! (IOB$G_2ND_CODE = XPO$_CONFLICT - fields other than file type specified 1 132 ! or completion code from $XPO_PARSE_SPEC) 1 133 ! XPO$_BAD_RSLT - invalid old or new file-spec 1 134 ! (IOB$G_2ND_CODE = XPO$_MISSING - old or new file-spec missing 1 135 ! or XPO$_NO_BACKUP - terminal or temporary file cannot be backed up 1 136 ! or XPO$_BAD_TYPE - original file has backup extension 1 137 ! or XPO$_BAD_VER ($VMS or $11M) - invalid version 1 138 ! or completion code from $XPO_PARSE_SPEC) 1 139 ! XPO$_FREE_MEM - error deallocating IOB-related memory 1 140 ! (IOB$G_2ND_CODE = $XPO_FREE_MEM completion code) 1 141 ! XPO$_NO_DELETE - previous backup file cannot be deleted 1 142 ! (IOB$G_2ND_CODE = completion code from $XPO_NO_DELETE) 1 143 ! XPO$_NOT_CLOSED - old and/or new file is not closed 1 144 ! XPO$_RENAME_NEW - new file cannot be renamed 1 145 ! (IOB$G_2ND_CODE = completion code from $XPO_RENAME) 1 146 ! failure completion codes from XPO$RMS_CLEANUP (VMS) 1 147 ! XPO$_RENAME_OLD - old file cannot be renamed 1 148 ! (IOB$G_2ND_CODE = completion code from $XPO_RENAME) 1 149 ! 1 150 ! SIDE EFFECTS: 1 151 ! 1 152 ! None 1 153 ! 1 154 !-- 1 155 1 156 BEGIN 2 157 XBACK XPO$BACKUP - XPORT File Backup 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 5 X00.13 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 2 158 MAP 2 159 iob : REF $XPO_IOB(); ! Redefine the IOB parameter. 2 160 2 161 BIND 2 162 old_iob = .iob : $XPO_IOB(), ! Rename the old file IOB parameter 2 163 new_iob = .old_iob[IOB$A_ASSOC_IOB] : ! and declare the new file IOB. 2 164 $XPO_IOB(), 2 165 old_resultant = old_iob[IOB$T_RESULTANT] : ! Declare the old and new resultant file-specs. 2 166 $STR_DESCRIPTOR(), 2 167 new_resultant = new_iob[IOB$T_RESULTANT] : 2 168 $STR_DESCRIPTOR(); 2 169 2 170 LOCAL 2 171 %IF NOT version_backup %THEN U 2 172 dummy_parse : $XPO_SPEC_BLOCK, ! File extension parse block U 2 173 %FI 2 174 dummy_iob : $XPO_IOB(); ! Dummy IOB for file renaming 2 175 2 176 ! 2 177 ! XPORT routine initialization. 2 178 ! 2 179 2 180 $XPO_MAIN_BEGIN( IO ) ! Define the MAIN_BLOCK code block 3 181 ! and validate the caller's IOB. 3 182 3 183 $XPO_IOB_INIT( IOB = dummy_iob, ! Initialize the dummy IOB, P 3 184 OPTION = OUTPUT ); ! forcing output file-spec resolution on $XPO_DELETE. 3 185 3 186 ! 3 187 ! Check the IOB for invalid or conflicting information. 3 188 ! 3 189 3 190 ! Return an error code if the IOB is invalid 3 191 ! for one of the following reasons: 3 192 3 193 IF NOT .old_iob[IOB$V_CLOSED] OR ! both IOB's have not been explicitly closed 3 194 NOT .new_iob[IOB$V_CLOSED] 3 195 THEN 3 196 $XPO_QUIT( NOT_CLOSED ); 3 197 3 198 IF .old_resultant[STR$H_LENGTH] LEQ 0 OR ! one of the IOBs does not have a resultant file-spec 3 199 .new_resultant[STR$H_LENGTH] LEQ 0 3 200 THEN 3 201 $XPO_QUIT( BAD_RSLT, MISSING ); 3 202 3 203 IF .old_iob[IOB$V_TERMINAL] OR ! the old file is a terminal 3 204 .old_iob[IOB$V_TEMPORARY] ! the old file is a temporary file, 3 205 THEN 3 206 $XPO_QUIT( BAD_RSLT, NO_BACKUP ); 3 207 3 208 IF .iob[IOB$V_REMEMBER] ! OPTION=REMEMBER was specified 3 209 THEN 3 210 $XPO_QUIT( BAD_IO_OPT ); 3 211 3 212 %IF NOT version_backup %THEN U 3 213 ! U 3 214 ! Verify that the backup file extension is valid. XBACK XPO$BACKUP - XPORT File Backup 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 6 X00.13 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 U 3 215 ! U 3 216 U 3 217 $XPO_IF_NOT( $XPO_PARSE_SPEC( ! Parse the backup file type. U 3 218 FILE_SPEC = .old_iob[IOB$A_BACK_TYPE], U 3 219 SPEC_BLOCK = dummy_parse, U 3 220 FAILURE = 0 ) ) U 3 221 THEN U 3 222 $XPO_QUIT( BAD_TYPE, (.$XPO_STATUS) ); U 3 223 U 3 224 ! If the backup extension file-spec includes U 3 225 IF .dummy_parse[XPO$H_NODE] NEQ 0 OR ! a node name, U 3 226 .dummy_parse[XPO$H_DEVICE] NEQ 0 OR ! a device name, U 3 227 .dummy_parse[XPO$H_DIRECT] NEQ 0 OR ! a directory specification, U 3 228 .dummy_parse[XPO$H_FILE_NAME] NEQ 0 OR ! a file name U 3 229 .dummy_parse[XPO$H_FILE_VER] NEQ 0 OR ! or a file version number U 3 230 .dummy_parse[XPO$H_FILE_TYPE] LSS 2 ! or no file extension was specified, U 3 231 THEN ! U 3 232 $XPO_QUIT( BAD_TYPE ); ! return an error code to the caller. U 3 233 U 3 234 ! U 3 235 ! Validate the file type of the old file. U 3 236 ! U 3 237 U 3 238 $XPO_IF_NOT( $XPO_PARSE_SPEC( ! Parse the old file's resultant file-spec. U 3 239 FILE_SPEC = old_iob[IOB$T_RESULTANT], U 3 240 SPEC_BLOCK = dummy_parse, U 3 241 FAILURE = 0 ) ) U 3 242 THEN U 3 243 $XPO_QUIT( BAD_RSLT, (.$XPO_STATUS) ); U 3 244 U 3 245 IF $STR_EQL( STRING1 = .old_iob[IOB$A_BACK_TYPE], ! Verify that the file type of the old file is U 3 246 STRING2 = dummy_parse[XPO$T_FILE_TYPE], ! not the backup file type. U 3 247 FAILURE = 0 ) U 3 248 THEN U 3 249 $XPO_QUIT( BAD_RSLT, BAD_TYPE ); U 3 250 U 3 251 ! U 3 252 ! Delete a previous backup file, if one exists. U 3 253 ! U 3 254 U 3 255 IF NOT $XPO_DELETE( IOB = dummy_iob, U 3 256 FILE_SPEC = .old_iob[IOB$A_BACK_TYPE], U 3 257 DEFAULT = default_spec, U 3 258 RELATED = old_iob[IOB$T_RESULTANT], U 3 259 FAILURE = 0 ) U 3 260 THEN U 3 261 IF .dummy_iob[IOB$G_COMP_CODE] NEQ XPO$_NO_FILE ! If an existing backup file cannot be deleted, U 3 262 THEN ! U 3 263 $XPO_QUIT( NO_DELETE, ! return error codes to the caller. U 3 264 (.dummy_iob[IOB$G_COMP_CODE]) ); U 3 265 U 3 266 ! U 3 267 ! Reinitialize the dummy_iob U 3 268 ! U 3 269 U 3 270 $XPO_IOB_INIT( IOB = dummy_iob ); U 3 271 XBACK XPO$BACKUP - XPORT File Backup 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 7 X00.13 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 U 3 272 ! U 3 273 ! Rename the original file to make it a backup file. U 3 274 ! U 3 275 U 3 276 IF NOT $XPO_RENAME( IOB = dummy_iob, U 3 277 FILE_SPEC = old_iob[IOB$T_RESULTANT], U 3 278 NEW_SPEC = .old_iob[IOB$A_BACK_TYPE], U 3 279 NEW_DEFAULT = default_spec, U 3 280 NEW_RELATED = old_iob[IOB$T_RESULTANT], U 3 281 FAILURE = 0 ) U 3 282 THEN U 3 283 $XPO_QUIT( RENAME_OLD, U 3 284 (.dummy_iob[IOB$G_COMP_CODE]) ); U 3 285 %FI 3 286 3 287 ! 3 288 ! Rename the new file to be the same as the original file. 3 289 ! 3 290 3 291 %IF $VMS OR $11M %THEN ! *** $VMS = TEMPORARY RMS KLUDGE *** 3 292 BEGIN 4 293 LOCAL 4 294 version_pointer; 4 295 4 296 version_pointer = ! Find the beginning of the version number field. 4 297 CH$FIND_CH( .old_resultant[STR$H_LENGTH], 4 298 .old_resultant[STR$A_POINTER], %C';' ); 4 299 4 300 IF CH$FAIL( .version_pointer ) 4 301 THEN 4 302 $XPO_QUIT( BAD_RSLT, BAD_VER ); 4 303 4 304 IF NOT $XPO_RENAME( IOB = dummy_iob, P 4 305 FILE_SPEC = new_iob[IOB$T_RESULTANT], P 4 306 NEW_SPEC = (CH$DIFF(.version_pointer, P 4 307 .old_iob[$SUB_FIELD(IOB$T_RESULTANT,STR$A_POINTER)]), P 4 308 .old_iob[$SUB_FIELD(IOB$T_RESULTANT,STR$A_POINTER)]), P 4 309 FAILURE = 0 ) 5 310 THEN 4 311 $XPO_QUIT( RENAME_NEW, P 4 312 (.dummy_iob[IOB$G_COMP_CODE]) ); 4 313 END; 3 314 %ELSE U 3 315 IF NOT $XPO_RENAME( IOB = dummy_iob, U 3 316 FILE_SPEC = new_iob[IOB$T_RESULTANT], U 3 317 NEW_SPEC = old_iob[IOB$T_RESULTANT], U 3 318 OPTIONS = MAX_VERSION, U 3 319 FAILURE = 0 ) U 3 320 THEN U 3 321 $XPO_QUIT( RENAME_NEW, U 3 322 (.dummy_iob[IOB$G_COMP_CODE]) ); U 3 323 %FI 3 324 3 325 ! 3 326 ! Reset the old and new IOBs after a successful backup. 3 327 ! 3 328 XBACK XPO$BACKUP - XPORT File Backup 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 8 X00.13 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 3 329 $XPO_ZAP_IOB( old_iob ); ! Reset the old file IOB 3 330 $XPO_ZAP_IOB( new_iob ); ! and the new file IOB. 3 331 3 332 $XPO_QUIT( NORMAL ); ! Return a success code to the caller. 3 333 3 334 ! 3 335 ! End of MAIN_BLOCK code block. 3 336 ! 3 337 3 338 $XPO_MAIN_END; ! Terminate MAIN_BLOCK. 2 339 2 340 ! 2 341 ! Cleanup dynamic memory. 2 342 ! 2 343 2 344 $XPO_ZAP_IOB( dummy_iob ); ! Reset the local dummy IOB. 2 345 2 346 ! 2 347 ! Call an appropriate action routine. 2 348 ! 2 349 2 350 $XPO_ACTION_RTN( .iob ); ! Call a success or failure action routine. 2 351 2 352 ! 2 353 ! Cleanup the IOBs after a file backup failure. 2 354 ! 2 355 2 356 IF NOT .old_iob[IOB$G_COMP_CODE] ! If the file backup failed, 2 357 THEN ! 2 358 BEGIN ! 3 359 $XPO_ZAP_IOB( old_iob ); ! cleanup the old file IOB 3 360 $XPO_ZAP_IOB( new_iob ); ! and the new file IOB. 3 361 END; 2 362 2 363 ! 2 364 ! Return to the caller. 2 365 ! 2 366 2 367 RETURN .iob[IOB$G_COMP_CODE] ! Return the IOB completion code to the caller. 2 368 2 369 END; ! End of XPO$BACKUP routine 1 370 END 1 371 ELUDOM XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 9 X00.13 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC .proc XPO$BACKUP .align 32 .global XPO$BACKUP XPO$BACKUP: // 000101 { .mii 002C051ADBC0 0000 alloc r111 = rspfs, 3, 78, 5, 0 0000B20000C0 0001 sxt4 r3 = IOB // r3 = r32 // 000162 012000038280 0002 mov r10 = 28 // 000165 } { .mii 0119E0C00300 0010 adds r12 = -512, r12 // 000101 000188001B80 0011 mov r110 = br0 010800101C00 0012 mov r112 = r1 ;; } { .mii 010800300A00 0020 mov r40 = r3 // 000162 0108003500C0 0021 adds r3 = 40, r3 // 000163 000008000000 0022 nop.i 0 ;; } { .mmi 00B0883B0200 0030 ld4 r8 = [r3], -40 ;; 008040300240 0031 ld2 r9 = [r3] // 000180 0000B0800A40 0032 sxt4 r41 = r8 ;; // 000163 } { .mii 010000A06A80 0040 add r42 = r3, r10 // 000165 010000A52B00 0041 add r44 = r41, r10 // 000167 01CC0097A1C0 0042 cmp4.eq pr7, pr0 = 61, r9 ;; // 000180 } { .mfb 010802C00AC0 0050 mov r43 = r44 // 000167 000008000000 0051 nop.f 0 00860000A007 0052 (pr7) br.cond.dpnt.few L$5 // 000180 } { .mii 0108083B0480 0060 adds r18 = 216, r3 0108083B8500 0061 adds r20 = 220, r3 000008000000 0062 nop.i 0 } { .mlx 000008000000 0070 nop.m 0 800000000000 0071 movl r17 = 2146308 ;; 0198004108 } { .mlx 008C81222000 0080 st4 [r18] = r17 800000000000 0081 movl r19 = 2138210 ;; 0194005889 } { .mfb 008C81426000 0090 st4 [r20] = r19 000008000000 0091 nop.f 0 00800009E000 0092 br.sptk.few L$6 ;; } 00A0 L$5: { .mii XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 10 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 01080A8B8540 00A0 adds r21 = 220, r40 010810C78B40 00A1 adds r45 = 316, r12 // 000184 010800001CC0 00A2 mov r115 = r0 } { .mmi 0120080E9C80 00B0 mov r114 = 244 010810C21C40 00B1 adds r113 = 272, r12 012000800B80 00B2 addl r46 = 131072, r0 ;; } { .mib 008C81500000 00C0 st4 [r21] = r0 // 000180 010810C5CC00 00C1 adds r48 = 302, r12 // 000184 00A000001000 00C2 br.call.sptk.many br0 = OTS$FILL } { .mii 008082D00B40 00D0 ld4 r45 = [r45] 01202001CBC0 00D1 mov r47 = 526 010810C78C40 00D2 adds r49 = 316, r12 } { .mib 010810C20CC0 00E0 adds r51 = 272, r12 010807000040 00E1 mov r1 = r112 004000000000 00E2 nop.b 0 ;; } { .mlx 008C4305E000 00F0 st2 [r48] = r47 00000000000C 00F1 movl r50 = 50397245 0180008F59 } { .mmi 010072E5AB40 0100 or r45 = r45, r46 ;; 008C8315A000 0101 st4 [r49] = r45 000008000000 0102 nop.i 0 } { .mii 008C83364000 0110 st4 [r51] = r50 010802860A00 0111 adds r40 = 48, r40 // 000193 000008000000 0112 nop.i 0 ;; } { .mmi 00B08A8A0CC0 0120 ld4 r51 = [r40], -48 ;; 000008000000 0121 nop.m 0 00A403348D00 0122 extr.u r52 = r51, 18, 1 ;; } { .mib 000008000000 0130 nop.m 0 00A0334001C0 0131 tbit.z pr7, pr6 = r52, 0 008600008007 0132 (pr7) br.cond.dpnt.few L$11 } { .mmi 010802960A40 0140 adds r41 = 48, r41 ;; // 000194 00B08A9A0D40 0141 ld4 r53 = [r41], -48 000008000000 0142 nop.i 0 ;; } { .mii 000008000000 0150 nop.m 0 00A403548D40 0151 extr.u r53 = r53, 18, 1 ;; XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 11 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 00A043500240 0152 tbit.z pr9, pr8 = r53, 0 ;; } { .mfb 01C000001188 0160 (pr8) cmp.eq.unc pr6, pr0 = r0, r0 // 000193 000008000000 0161 nop.f 0 008600006006 0162 (pr6) br.cond.dpnt.few L$10 } 0170 L$11: { .mlx 01080A8B0DC0 0170 adds r55 = 216, r40 // 000196 000000000000 0171 movl r54 = 2138554 ;; 0194304E9B } { .mfb 008C8376C000 0180 st4 [r55] = r54 000008000000 0181 nop.f 0 008000080000 0182 br.sptk.few L$6 ;; } 0190 L$10: // 000193 { .mmi 008042A01C80 0190 ld2 r114 = [r42] ;; // 000198 018C57200000 0191 cmp4.lt pr0, pr10 = 0, r114 000008000000 0192 nop.i 0 } { .mfb 000008000000 01A0 nop.m 0 000008000000 01A1 nop.f 0 00860000600A 01A2 (pr10) br.cond.dpnt.few L$18 } { .mmi 008042C00B00 01B0 ld2 r44 = [r44] ;; // 000199 018C02C00340 01B1 cmp4.lt pr13, pr0 = 0, r44 000008000000 01B2 nop.i 0 } { .mfb 000008000000 01C0 nop.m 0 000008000000 01C1 nop.f 0 00860000A00D 01C2 (pr13) br.cond.dpnt.few L$19 } 01D0 L$18: // 000198 { .mii 01080A8B0E80 01D0 adds r58 = 216, r40 // 000201 01080A8B8F00 01D1 adds r60 = 220, r40 000008000000 01D2 nop.i 0 } { .mlx 000008000000 01E0 nop.m 0 800000000000 01E1 movl r57 = 2138282 ;; 0194104A9C } { .mlx 008C83A72000 01F0 st4 [r58] = r57 800000000000 01F1 movl r59 = 2138402 ;; 019420489D } { .mfb 008C83C76000 0200 st4 [r60] = r59 XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 12 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 000008000000 0201 nop.f 0 008000070000 0202 br.sptk.few L$6 ;; } 0210 L$19: // 000198 { .mii 000008000000 0210 nop.m 0 00A403350F40 0211 extr.u r61 = r51, 20, 1 // 000203 00A403354CC0 0212 extr.u r51 = r51, 21, 1 ;; // 000204 } { .mii 010163D02F40 0220 and r61 = 1, r61 // 000203 010163302CC0 0221 and r51 = 1, r51 ;; 01007337ACC0 0222 or r51 = r61, r51 ;; } { .mfb 01C4033003C0 0230 cmp4.eq pr15, pr0 = r0, r51 000008000000 0231 nop.f 0 00860000A00F 0232 (pr15) br.cond.dpnt.few L$21 } { .mii 01080A8B0FC0 0240 adds r63 = 216, r40 // 000206 01080A8B9040 0241 adds r65 = 220, r40 000008000000 0242 nop.i 0 } { .mlx 000008000000 0250 nop.m 0 000000000000 0251 movl r62 = 2138282 ;; 0194104A9F } { .mlx 008C83F7C000 0260 st4 [r63] = r62 000000000000 0261 movl r64 = 2138426 ;; 0194204EA0 } { .mfb 008C84180000 0270 st4 [r65] = r64 000008000000 0271 nop.f 0 008000062000 0272 br.sptk.few L$6 ;; } 0280 L$21: // 000203 { .mmi 010802858A00 0280 adds r40 = 44, r40 ;; // 000208 00B08A8A9080 0281 ld4 r66 = [r40], -44 000008000000 0282 nop.i 0 ;; } { .mii 000008000000 0290 nop.m 0 00A404251080 0291 extr.u r66 = r66, 20, 1 ;; 00A044200240 0292 tbit.z pr9, pr8 = r66, 0 } { .mfb 000008000000 02A0 nop.m 0 000008000000 02A1 nop.f 0 008600006009 02A2 (pr9) br.cond.dpnt.few L$23 } { .mlx 01080A8B1100 02B0 adds r68 = 216, r40 // 000210 XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 13 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 800000000000 02B1 movl r67 = 2138202 ;; 01940056A1 } { .mfb 008C84486000 02C0 st4 [r68] = r67 000008000000 02C1 nop.f 0 008000058000 02C2 br.sptk.few L$6 ;; } 02D0 L$23: // 000293 { .mii 010802A08A80 02D0 adds r42 = 4, r42 012000101CC0 02D1 add r115 = @ltoff($LITERAL$), r1 // 000297 012000003D00 02D2 mov r116 = 1 } { .mmi 010800001140 02E0 mov r69 = r0 ;; 008082A00A80 02E1 ld4 r42 = [r42] // 000298 000008000000 02E2 nop.i 0 ;; } { .mib 0080C7301CC0 02F0 ld8 r115 = $LITERAL$ // r115 = [r115] // 000297 0000B2A01C40 02F1 sxt4 r113 = r42 // 000298 00A000001000 02F2 br.call.sptk.many br0 = OTS$SEARCH // 000297 } { .mii 018430010000 0300 cmp4.lt pr0, pr6 = r8, r0 010002A10200 0301 add r8 = r8, r42 010807000040 0302 mov r1 = r112 ;; } { .mmi 010800801146 0310 (pr6) mov r69 = r8 ;; 01C43C500000 0311 cmp4.eq pr0, pr7 = r0, VERSION_POINTER // pr0, pr7 = r0, r69 // 000300 000008000000 0312 nop.i 0 } { .mfb 000008000000 0320 nop.m 0 000008000000 0321 nop.f 0 00860000A007 0322 (pr7) br.cond.dpnt.few L$24 } { .mii 01080A8B11C0 0330 adds r71 = 216, r40 // 000302 01080A8B9240 0331 adds r73 = 220, r40 000008000000 0332 nop.i 0 } { .mlx 000008000000 0340 nop.m 0 000000000000 0341 movl r70 = 2138282 ;; 0194104AA3 } { .mlx 008C8478C000 0350 st4 [r71] = r70 000000000000 0351 movl r72 = 2138306 ;; 01941050A4 } { .mfb 008C84990000 0360 st4 [r73] = r72 000008000000 0361 nop.f 0 XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 14 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 008000044000 0362 br.sptk.few L$6 ;; } 0370 L$24: // 000309 { .mii 010802840A00 0370 adds r40 = 32, r40 010800C6D380 0371 adds r78 = 54, r12 010800C31400 0372 adds r80 = 24, r12 } { .mmi 010800001CC0 0380 mov r115 = r0 0120080E9C80 0381 mov r114 = 244 010800C31C40 0382 adds r113 = 24, r12 ;; } { .mib 00B08A8C1280 0390 ld4 r74 = [r40], -32 010800C212C0 0391 adds r75 = 16, r12 00A000001000 0392 br.call.sptk.many br0 = OTS$FILL ;; } { .mii 008C44E5E000 03A0 st2 [r78] = r47 01002CA8B140 03A1 sub r69 = VERSION_POINTER, r74 // r69 = r69, r74 010800C25340 03A2 adds r77 = 18, r12 } { .mmi 008C85064000 03B0 st4 [r80] = r50 01201001D300 03B1 mov r76 = 270 010800C39440 03B2 adds r81 = 28, r12 } { .mii 010800C20C80 03C0 adds r50 = 16, r12 010800C293C0 03C1 adds r79 = 20, r12 010800C81480 03C2 adds r82 = 64, r12 ;; } { .mmi 008C44B8A000 03D0 st2 [r75] = r69 008C44D98000 03D1 st2 [r77] = r76 010800C81500 03D2 adds r84 = 64, r12 } { .mmi 008C85164000 03E0 st4 [r81] = r50 008C84F94000 03E1 st4 [r79] = r74 010810C79580 03E2 adds r86 = 316, r12 } { .mib 0080C5201480 03F0 ld8 r82 = [r82] 012000009540 03F1 mov r85 = 4 004000000000 03F2 nop.b 0 } { .mlx 010810C295C0 0400 adds r87 = 276, r12 800008000000 0401 movl r83 = 562949953421312 ;; 0180000029 } { .mii 010810C71600 0410 adds r88 = 312, r12 010810C21640 0411 adds r89 = 272, r12 012000006640 0412 mov r25 = 3 XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 15 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 } { .mmi 010807000040 0420 mov r1 = r112 0100753A5480 0421 or r82 = r82, r83 0000B0001CC0 0422 sxt4 r115 = r0 ;; } { .mii 000008000000 0430 nop.m 0 0000B0001C80 0431 sxt4 r114 = r0 0000B5901C40 0432 sxt4 r113 = r89 } { .mmb 008CC54A4000 0440 st8 [r84] = r82 008C056AA000 0441 st1 [r86] = r85 004000000000 0442 nop.b 0 } { .mii 008C85756000 0450 st4 [r87] = r43 010800C30AC0 0451 adds r43 = 24, r12 000008000000 0452 nop.i 0 ;; } { .mfb 008C85856000 0460 st4 [r88] = r43 000008000000 0461 nop.f 0 00A000001000 0462 br.call.sptk.many br0 = XPO$RENAME } { .mib 010807000040 0470 mov r1 = r112 00A0308001C0 0471 tbit.z pr7, pr6 = r8, 0 00860000A006 0472 (pr6) br.cond.dpnt.few L$28 // 000304 } { .mii 01080A8B16C0 0480 adds r91 = 216, r40 // 000312 010818CD1700 0481 adds r92 = 488, r12 000008000000 0482 nop.i 0 } { .mlx 01080A8B9740 0490 adds r93 = 220, r40 000000000000 0491 movl r90 = 2138650 ;; 01944046AD } { .mmi 008C85BB4000 04A0 st4 [r91] = r90 008085C01700 04A1 ld4 r92 = [r92] 000008000000 04A2 nop.i 0 ;; } { .mfb 008C85DB8000 04B0 st4 [r93] = r92 000008000000 04B1 nop.f 0 00800001A000 04B2 br.sptk.few L$6 ;; } 04C0 L$28: // 000329 { .mib 012000002640 04C0 mov r25 = 1 0000B2801C40 04C1 sxt4 r113 = r40 00A000001000 04C2 br.call.sptk.many br0 = XPO$ZAP_IOB } XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 16 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 { .mib 010807000040 04D0 mov r1 = r112 00A0308001C0 04D1 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600008006 04D2 (pr6) br.cond.dpnt.few L$30 } { .mii 01080A8B17C0 04E0 adds r95 = 216, r40 01080A8B9800 04E1 adds r96 = 220, r40 000008000000 04E2 nop.i 0 } { .mlx 000008000000 04F0 nop.m 0 000000000000 04F1 movl r94 = 2138362 ;; 0194105EAF } { .mmb 008C85FBC000 0500 st4 [r95] = r94 008C86010000 0501 st4 [r96] = $XPO$STATUS // [r96] = r8 008000010000 0502 br.sptk.few L$6 ;; } 0510 L$30: // 000330 { .mib 012000002640 0510 mov r25 = 1 0000B2901C40 0511 sxt4 r113 = r41 00A000001000 0512 br.call.sptk.many br0 = XPO$ZAP_IOB } { .mib 010807000040 0520 mov r1 = r112 00A0308001C0 0521 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600008006 0522 (pr6) br.cond.dpnt.few L$32 } { .mii 01080A8B1880 0530 adds r98 = 216, r40 01080A8B98C0 0531 adds r99 = 220, r40 000008000000 0532 nop.i 0 } { .mlx 000008000000 0540 nop.m 0 800000000000 0541 movl r97 = 2138362 ;; 0194105EB0 } { .mmb 008C862C2000 0550 st4 [r98] = r97 008C86310000 0551 st4 [r99] = $XPO$STATUS // [r99] = r8 008000006000 0552 br.sptk.few L$6 ;; } 0560 L$32: { .mlx 01080A8B1940 0560 adds r101 = 216, r40 // 000332 000000000000 0561 movl r100 = 2129921 ;; 0190004072 } { .mfi 008C865C8000 0570 st4 [r101] = r100 000008000000 0571 nop.f 0 000008000000 0572 nop.i 0 } XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 17 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 0580 L$6: // 000344 { .mii 01080A8B19C0 0580 adds r103 = 216, r40 // 000350 010810C21980 0581 adds r102 = 272, r12 // 000344 012000002640 0582 mov r25 = 1 ;; } { .mib 010802201A40 0590 mov r105 = FAILURE_ACTION // r105 = r34 // 000350 0000B6601C40 0591 sxt4 r113 = r102 // 000344 00A000001000 0592 br.call.sptk.many br0 = XPO$ZAP_IOB } { .mii 008086701A00 05A0 ld4 r104 = [r103] // 000350 010807000040 05A1 mov r1 = r112 ;; // 000344 00A036800000 05A2 tbit.z pr0, pr6 = r104, 0 ;; // 000350 } { .mmi 010802101A46 05B0 (pr6) mov r105 = SUCCESS_ACTION ;; // r105 = r33 01C406900200 05B1 cmp4.eq pr8, pr0 = r0, $XPO$ACTION // pr8, pr0 = r0, r105 000008000000 05B2 nop.i 0 } { .mfb 000008000000 05C0 nop.m 0 000008000000 05C1 nop.f 0 008600010008 05C2 (pr8) br.cond.dpnt.few L$35 } { .mii 01080A8B9CC0 05D0 adds r115 = 220, r40 0000B6901A40 05D1 sxt4 r105 = $XPO$ACTION // r105 = r105 01080A8B1B00 05D2 adds r108 = 216, r40 } { .mii 012000008640 05E0 mov r25 = 4 0000B2001D00 05E1 sxt4 r116 = IOB // r116 = r32 0000B6801C80 05E2 sxt4 r114 = r104 ;; } { .mii 008087301CC0 05F0 ld4 r115 = [r115] 012000003C40 05F1 mov r113 = 1 010806911A40 05F2 adds r105 = 8, r105 ;; } { .mib 000008000000 0600 nop.m 0 0000B7301CC0 0601 sxt4 r115 = r115 004000000000 0602 nop.b 0 } { .mmi 00B0CE9F0040 0610 ld8 r1 = [r105], -8 ;; 0080C6901A40 0611 ld8 r105 = [r105] 000008000000 0612 nop.i 0 ;; } { .mib 000008000000 0620 nop.m 0 000E001D2180 0621 mov br6 = r105 00210000C000 0622 br.call.sptk.few br0 = br6 } { .mii XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 18 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 008C86C10000 0630 st4 [r108] = r8 010807000040 0631 mov r1 = r112 000008000000 0632 nop.i 0 } 0640 L$35: { .mmi 01080A8B1B40 0640 adds r109 = 216, r40 ;; // 000356 008086D01B40 0641 ld4 r109 = [r109] 000008000000 0642 nop.i 0 ;; } { .mib 000008000000 0650 nop.m 0 00A036D001C0 0651 tbit.z pr7, pr6 = r109, 0 00860000C006 0652 (pr6) br.cond.dpnt.few L$36 } { .mib 012000002640 0660 mov r25 = 1 // 000359 0000B2801C40 0661 sxt4 r113 = r40 00A000001000 0662 br.call.sptk.many br0 = XPO$ZAP_IOB ;; } { .mii 012000002640 0670 mov r25 = 1 // 000360 0000B2901C40 0671 sxt4 r113 = r41 010807000040 0672 mov r1 = r112 // 000359 } { .mfb 000008000000 0680 nop.m 0 000008000000 0681 nop.f 0 004000000000 0682 nop.b 0 ;; } { .mfb 000008000000 0690 nop.m 0 000008000000 0691 nop.f 0 00A000001000 0692 br.call.sptk.many br0 = XPO$ZAP_IOB // 000360 } { .mfi 010807000040 06A0 mov r1 = r112 000008000000 06A1 nop.f 0 000008000000 06A2 nop.i 0 } 06B0 L$36: // 000356 { .mmi 01080A8B0A00 06B0 adds r40 = 216, r40 ;; // 000367 008082800200 06B1 ld4 r8 = [r40] 000008000000 06B2 nop.i 0 ;; } { .mib 000008000000 06C0 nop.m 0 0000B0800200 06C1 sxt4 r8 = r8 004000000000 06C2 nop.b 0 } { .mii 000008000000 06D0 nop.m 0 0001540DE000 06D1 mov.i rspfs = r111 010820C00300 06D2 adds r12 = 512, r12 ;; } { .mib XBACK Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 19 X00.13 XPO$BACKUP 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 000008000000 06E0 nop.m 0 000E001DC000 06E1 mov br0 = r110 000108001100 06E2 br.ret.sptk.many br0 ;; } .endp XPO$BACKUP Routine Size: 1776 bytes, Routine Base: _XPO$CODE + 0000 .psect $LITERAL$, CON, LCL, SHR, NOEXE, NOWRT, NOVEC 3B 0000 string ";" .section .data .type OTS$FILL, @function .global OTS$FILL .section .data .type OTS$SEARCH, @function .global OTS$SEARCH .section .data .type XPO$RENAME, @function .global XPO$RENAME .section .data .type XPO$ZAP_IOB, @function .global XPO$ZAP_IOB .section .data .type XPO$ZAP_IOB, @function .global XPO$ZAP_IOB .section .data .type XPO$ZAP_IOB, @function .global XPO$ZAP_IOB .section .data .type XPO$ZAP_IOB, @function .global XPO$ZAP_IOB .section .data .type XPO$ZAP_IOB, @function .global XPO$ZAP_IOB ; Library Statistics ; ; -------- Symbols -------- Pages ; File Total Loaded Percent Mapped ; ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14 ; 590 122 20 270 ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14 ; 91 17 18 27 0 372 0 373 0 374 Source Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 20 Source Listing 19-MAR-2002 10:12:02 [LASTOVICA.XPORT.VMSGEN]XBACK.BLI;1 COMMAND LINE: BLISSXBACK/VARIANT=3/LIST/DEBUG