*TITLESACVAN -- NORMAL MOVEOUT APPLICATION FOR CON. VEL. ANALYSIS 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** *A AUTHOR R. MCMILLAN 00000020 *A DESIGNER HOOGSTRAAT 00000030 *A LANGUAGE S/370 ASSEMBLER F 00000040 *A WRITTEN 02-20-76 00000050 * REVISED 02-20-76 BY R. MCMILLAN TO ADD INCVEL AS 00000060 * A PARAMETER INSTEAD OF 00000070 * PASSING AN ARRAY. NAME 00000080 * CHANGED FROM S2ANMO TO SACVAN 00000090 * REVISED 09-28-76 MENDEKE - REMOVED DT INVERSION 00000100 * AND ZERO PAD CODE. 00000110 * 00000120 * 00000130 * 00000140 SACVAN CSECT 00000150 *A 00000160 *A 00000170 *A CALL SACVAN ( XTEM, IVEL, INCVEL, IX, IRLENG, ISAMPR, IPR) 00000180 *A I/O XTEM = FLOATING POINT TRACE ADDRESS R4 00000190 *A INPUT IVEL = VELOCITY ARRAY AT SAMPLE INTERVALS I4 00000200 *A INPUT INCVEL = VELOCITY INCREMENT DOWN THE TRACE I4 00000210 *A INPUT IX = TRACE X DISTANCE FROM SHOT POINT I4 00000220 *A INPUT IRLENG = RECORD LENGTH IN MS I4 00000230 *A INPUT ISAMPR = SAMPLE RATE IN MS I4 00000240 *A INPUT IPR = PRINT UNIT FOR ERROR MESSAGE I4 00000250 *A 00000260 *A 00000270 *A SACVAN APPLYS HI-FI NORMAL MOVE-OUT REMOVAL, ACCORDING TO THE 00000280 *A INITIAL VELOCITY, VELOCITY INCREMENT, AND THE TRACE DISTANCE 00000290 *A IX. 00000300 *A 00000310 *A XTEM IS FILLED WITH ZEROS IF INPUT DATA RUNS OUT. 00000320 * ====================================================== 00000330 * 00000340 * ====================================================== 00000350 * * PROGRAM DEVELOPED BY 00000360 * * H * HOOGSTRAAT PROGRAMMING SERVICES LTD. 00000370 * * P S * BOX 20, SITE 7, SS #1 00000380 * * * * * * * * CALGARY, ALTA. CANADA PH 288-8088 00000390 * ====================================================== 00000400 * 00000410 COPY S1REG 00000420 * 00000430 BASER EQU R12 00000440 XTEM EQU R2 00000450 IVEL EQU R5 00000460 T0 EQU R11 00000470 * 00000480 B 12(0,R15) 00000490 DC X'06' 00000500 DC CL7'S2ANMO' 00000510 * 00000520 STM R14,R12,12(R13) 00000530 BALR BASER,0 00000540 USING *,BASER 00000550 * 00000560 ST R13,SAVE13 00000570 LA R2,SEXIT 00000580 ST R2,8(,R13) 00000590 ST R13,SEXIT+4 00000600 LM R2,R8,0(R1) LOAD CALLING SEQUENCE 00000610 ST R8,IPRADR SAVE ADDR. OF PRINT UNIT # 00000620 L R9,0(,R6) LOAD VALUE OF IRLENG 00000630 L R0,0(,R7) LOAD VALUE OF ISAMPR 00000640 SR R8,R8 00000650 DR R8,R0 CONVERT RECORD LENGTH TO SAMPLES 00000660 SLA R9,2 CONVERT TO NUMBER OF BYTES 00000670 S R9,=F'4' 00000680 ST R9,NOSAMP 00000690 * 00000700 L R9,0(,R5) LOAD VALUE OF IX 00000710 M R8,=F'8000' 00000720 BZ ANMO40 EXIT IF X = 0 00000730 DR R8,R0 DIVIDE DISTANCE BY SAMPLE RATE 00000740 ST R9,IX8000 00000750 * 00000760 L IVEL,0(,R3) SET INITIAL VELOCITY 00000770 L R4,0(,R4) GET VELOCITY INCREMENT 00000780 * 00000790 SR R8,R8 INITIALIZE FIRST ROOT 00000800 DR R8,IVEL 00000810 ST R9,ROOT2 00000820 * 00000830 LA T0,0 INITIALIZE T0 TO 0 00000840 ST R9,TXL 00000850 ********************************************************* 7 / 8 / 75 00000860 * LR R5,R0 SAVE SAMPLE RATE IN R5 00000870 * LA R13,100 SAVE TABLE INTERVAL IN R13 00000880 * 00000890 *ANMO10 LR R15,T0 COMPUTE INDEX TO VELOCITY TABLE 00000900 * SRL R15,2 CONVERT TO TIME FIRST. 00000910 * MR R14,R5 R15 = CURRENT TIME IN MS. 00000920 * DR R14,R13 R15 = VELOCITY TABLE INDEX. 00000930 * SLL R15,2 R14 = REMAINDER TIME. 00000940 * L R1,4(IVEL,R15) COMPUTE DIFFERENCE IN ADJ V'S 00000950 * S R1,0(IVEL,R15) 00000960 * MR R0,R14 INTERPOLATE USING THE REMAINDER 00000970 * DR R0,R13 TIME FOR CORRECT VELOCITY. 00000980 * A R1,0(IVEL,R15) 00000990 ******************************************************** 7 / 8 / 75 00001000 ANMO10 L R7,IX8000 COMPUTE (X*8000/V)**2 00001010 SR R6,R6 00001020 DR R6,IVEL DIVIDE BY THE VELOCITY 00001030 MR R6,R7 00001040 * 00001050 LR R9,T0 COMPUTE (T0*8)**2 00001060 SLA R9,1 00001070 LR R10,R9 00001080 MR R8,R9 00001090 AR R7,R9 NOW HAVE (T0*8)**2+(X*8000/V)**2 00001100 BO BOMB KICK OFF IF OVERFLOW 00001110 * 00001120 LA R1,1 SET UP TO TAKE SQUARE ROOT 00001130 L R3,ROOT2 LOAD LAST ROOT 00001140 LTR R3,R3 00001150 BP ROOT10 00001160 LA R3,1 00001170 * 00001180 ROOT10 LR R9,R7 USE NEWTON ITERATION METHOD TO 00001190 LA R8,0 COMPUTE THE INTEGER SQUARE ROOT 00001200 DR R8,R3 00001210 AR R9,R3 00001220 SRA R9,1 00001230 LR R8,R9 00001240 SR R8,R3 00001250 LPR R8,R8 00001260 SR R8,R1 00001270 BNP ROOT20 CHECK IF ITERATIONS DONE 00001280 * 00001290 LPR R3,R9 00001300 B ROOT10 00001310 * 00001320 ROOT20 LR R8,R9 00001330 LA R9,8(R9) 00001340 ST R9,ROOT2 00001350 * 00001360 B NOINV HONOR INVERSION IF ANY 00001370 * 00001380 DELETE SR R8,R8 00001390 ST R8,0(XTEM,T0) 00001400 B GO 00001410 * 00001420 NOINV ST R8,TXL 00001430 * 00001440 CR R8,R10 00001450 BE ANMO40 QUIT IF T0=TX 00001460 * 00001470 LA R9,0 00001480 SRDL R8,3 EXTRACT HI-FI INTERPOLATION 00001490 SLL R8,2 INDEX AND CONVERT TO BYTE INDEX 00001500 * 00001510 C R8,NOSAMP 00001520 BNL DELETE PAD WITH ZERO IF TX >= NOSAMP 00001530 * 00001540 SRL R9,27 COMPUTE HI-FI TABLE INDEX 00001550 * 00001560 LE FR0,0(XTEM,R8) LOAD XTEM(TX) 00001570 LE FR2,4(XTEM,R8) LOAD XTEM(TX+1) 00001580 ME FR0,TAB1(R9) PERFORM INTERPLOATION 00001590 ME FR2,TAB2(R9) 00001600 AER FR0,FR2 00001610 STE FR0,0(XTEM,T0) STORE XTEM(T0) 00001620 * 00001630 GO C T0,NOSAMP 00001640 BE ANMO40 QUIT IF T0=NOSAMP 00001650 LA T0,4(,T0) BUMP T0 TO NEXT INDEX 00001660 AR IVEL,R4 INCREMENT VELOCITY 00001670 * 00001680 B ANMO10 LOOP BACK FOR NEXT SAMPLE. 00001690 * 00001700 * 00001710 ANMO40 L R13,SAVE13 00001720 LM R14,R12,12(R13) 00001730 BR R14 RETURN TO CALLER 00001740 * 00001750 BOMB L R15,=V(S2ANMB) 00001760 LA R1,IPRADR 00001770 LA R13,SEXIT 00001780 BR R15 00001790 * 00001800 DS 0F 00001810 IPRADR DS F 00001820 SAVE13 DS F 00001830 ROOT2 DS F 00001840 NOSAMP DS F 00001850 IX8000 DS F 00001860 TXL DS F 00001870 TAB1 DC E'1.0,0.875,0.750,0.625,0.500,0.375,0.250,0.125,0.0' 00001880 TAB2 DC E'0.0,0.125,0.250,0.375,0.500,0.625,0.750,0.875,1.0' 00001890 SEXIT DS 9D 00001900 * 00001910 LTORG 00001920 * 00001930 END 00001940