*TITLESABMS -- NORMAL MOVEOUT APPLICATION FOR VELOCITY ANALYSIS 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** *A AUTHOR J. MENDEKE 00000020 *A DESIGNER HOOGSTRAAT, MCMILLAN, MENDEKE 00000030 *A LANGUAGE S/370 ASSEMBLER F 00000040 *A WRITTEN 06-22-76 00000050 * REVISED MO-DA-YR BY 00000060 * 00000100 SABMS CSECT 00000110 *A 00000120 *A 00000130 *A CALL SABMS (XTEM, IVEL, XTEMI, IX, IRLENG, 00000140 *A SAMPR, VAHWL, VASMA, NSNMO, VASMA2) 00000150 *A 00000160 *A INPUT XTEM = FLOATING POINT TRACE ADDRESS R4 00000170 *A INPUT IVEL = CONSTANT VELOCITY FOR NMO I4 00000180 *A INPUT XTEMI = INDEX IN XTEM TO START NMO I4 00000190 *A INPUT IX = TRACE X DISTANCE FROM SHOT POINT I4 00000200 *A INPUT IRLENG = RECORD LENGTH IN MS I4 00000210 *A INPUT SAMPR = SAMPLE RATE IN MS I4 00000220 *A INPUT VAHWL = HALF WINDOW IN SAMPLES I4 00000230 *A I / O VASMA = VEL. ANALYSIS SUM AREA R4 00000240 *A INPUT NSNMO = NO. OF SAMPLES TO MOVE OUT I4 00000250 *A I / O VASMA2 = VEL. ANALYSIS SUM SQ. AREA R4 00000260 *A 00000270 *A SABMS APPLYS NORMAL MOVE-OUT REMOVAL USING A CONSTANT 00000280 *A VELOCITY, OVER A SECTION OF THE INPUT TRACE AND SUMS 00000290 *A THE RESULT INTO THE SUM AREA 'VASMA' AND 'VASMA2'. 00000300 *A BLOCK MOVE TECHNIQUE USED. 00000310 * 00000320 COPY S1REG 00000330 * 00000340 BASER EQU R12 00000350 XTEM EQU R2 00000360 IVEL EQU R5 00000370 T0 EQU R11 00000380 VASMA EQU R4 00000390 VASMA2 EQU R14 00000400 * 00000410 B 12(0,R15) 00000420 DC X'06' 00000430 DC CL7'SASIS ' 00000440 * 00000450 STM R14,R12,12(R13) 00000460 BALR BASER,0 00000470 USING *,BASER 00000480 * 00000490 ST R13,SAVE13 00000500 LA R2,SEXIT 00000510 ST R2,8(,R13) 00000520 ST R13,SEXIT+4 00000530 LM R2,R11,0(R1) LOAD CALLING SEQUENCE 00000540 * 00000550 L R0,0(,R8) GET HALF WINDOW LENGTH 00000560 SLA R0,2 00000570 ST R0,HWLEN 00000580 * 00000590 L R0,4(,R8) GET WINDOW INCR 00000600 SLA R0,2 00000610 ST R0,WINC 00000620 * 00000630 LR VASMA2,R11 SAVE THE ADDRESS OF THE SQ. AREA 00000640 L T0,0(,R4) SAVE THE START ADDRESS OF XTEM 00000650 BCTR T0,0 AND CONVERT TO BYTES 00000660 SLL T0,2 00000670 * 00000680 * 00000690 LR VASMA,R9 SAVE THE ADDRESS OF THE SUM AREA 00000700 L R9,0(,R6) LOAD VALUE OF IRLENG 00000710 L R0,0(,R7) LOAD VALUE OF SAMPR 00000720 SR R8,R8 00000730 DR R8,R0 CONVERT TO SAMPLES 00000740 SLA R9,2 AND BYTES 00000750 * 00000760 S R9,=F'4' 00000770 ST R9,NOSAMP 00000780 * 00000790 L R10,0(,R10) 00000800 BCTR R10,0 00000810 SLA R10,2 CONVERT NO. OF SAMPLES TO NMO 00000820 AR R10,T0 TO BYTES AND STORE IN NSNMO 00000830 ST R10,NSNMO 00000840 * 00000850 L R9,0(,R5) LOAD VALUE OF IX 00000860 M R8,=F'8000' 00000870 BZ ANMO40 EXIT IF X = 0 00000880 DR R8,R0 DIVIDE DISTANCE BY SAMPLE RATE 00000890 ST R9,IX8000 00000900 * 00000910 L IVEL,0(,R3) SET INITIAL VELOCITY 00000920 * 00000930 * 00000940 SR R8,R8 INITIALIZE FIRST ROOT 00000950 DR R8,IVEL 00000960 ST R9,ROOT2 00000970 ST R9,TXL 00000980 * 00000990 * 00001000 * 00001010 ********************************************************************* 00001020 * LOOP TO COMPUTE THE NMO SAMPLE AND SUM INTO VASMA AND VASMA2 00001030 ********************************************************************* 00001040 L R7,IX8000 COMPUTE (X*8000/V)**2 00001050 SR R6,R6 00001060 DR R6,IVEL DIVIDE BY THE VELOCITY 00001070 MR R6,R7 00001080 LR IVEL,R7 00001090 * 00001100 ANMO10 LR R9,T0 00001110 LR R7,IVEL 00001120 LR R10,R9 FIRST CHECK END OF DATA 00001130 A R10,HWLEN 00001140 C R10,NSNMO 00001150 BH ANMO40 00001160 C R10,NOSAMP 00001170 BH ANMO40 00001180 LR R10,R9 00001190 A R10,WINC INCREMENT T0 00001200 LR T0,R10 00001210 SLA R9,1 COMPUTE (T0*8)**2 00001220 LR R10,R9 00001230 MR R8,R9 00001240 AR R7,R9 NOW HAVE (T0*8)**2+(X*8000/V)**2 00001250 BO BOMB KICK OFF IF OVERFLOW 00001260 * 00001270 LA R1,1 SET UP TO TAKE SQUARE ROOT 00001280 L R3,ROOT2 LOAD LAST ROOT 00001290 LTR R3,R3 00001300 BP ROOT10 00001310 LA R3,1 00001320 * 00001330 ROOT10 LR R9,R7 USE NEWTON ITERATION METHOD TO 00001340 LA R8,0 COMPUTE THE INTEGER SQUARE ROOT 00001350 DR R8,R3 00001360 AR R9,R3 00001370 SRA R9,1 00001380 LR R8,R9 00001390 SR R8,R3 00001400 LPR R8,R8 00001410 SR R8,R1 00001420 BNP ROOT20 CHECK IF ITERATIONS DONE 00001430 * 00001440 LPR R3,R9 00001450 B ROOT10 00001460 * 00001470 ROOT20 LR R8,R9 00001480 LA R9,8(R9) 00001490 ST R9,ROOT2 00001500 * 00001510 LA R9,0 00001520 SRDL R8,3 EXTRACT HI-FI INTERPOLATION 00001530 SLL R8,2 INDEX AND CONVERT TO BYTE INDEX 00001540 * 00001550 * 00001560 * 00001570 L R6,HWLEN 00001580 AR R6,R8 MAKE WINDOW SYMETRIC ABOUT TX 00001590 S R8,HWLEN 00001600 C R6,NOSAMP QUIT IF TX >= NOSAMP 00001610 BNL ANMO40 00001620 * 00001630 SRL R9,27 COMPUTE HI-FI TABLE INDEX 00001640 * 00001650 WLOOP LE FR0,0(XTEM,R8) LOAD XTEM(TX) 00001660 LE FR2,4(XTEM,R8) LOAD XTEM(TX+1) 00001670 ME FR0,TAB1(R9) PERFORM INTERPLOATION 00001680 ME FR2,TAB2(R9) 00001690 AER FR0,FR2 00001700 LER FR2,FR0 00001710 AE FR0,0(VASMA) SUM TO VASMA ARRAY 00001720 STE FR0,0(VASMA) AND REPLACE. 00001730 MER FR2,FR2 SQUARE AND STORE 00001740 STE FR2,0(VASMA2) 00001750 * 00001760 LA VASMA,4(,VASMA) BUMP TO NEXT INDEX IN VASMA 00001770 LA VASMA2,4(,VASMA2) BUMP TO NEXT INDEX IN VASMA2 00001780 * 00001790 CR R8,R6 00001800 BE ANMO10 00001810 LA R8,4(,R8) 00001820 B WLOOP 00001830 * 00001840 * RETURN TO CALLER 00001850 * 00001860 * 00001870 ANMO40 L R13,SAVE13 00001880 LM R14,R12,12(R13) 00001890 BR R14 00001900 * 00001910 BOMB L R15,=V(S2ANMB) 00001920 LA R1,IPRADR 00001930 LA R13,SEXIT 00001940 BR R15 00001950 * 00001960 DS 0F 00001970 IPRADR DC A(IPR) 00001980 SAVE13 DS F 00001990 ROOT2 DS F 00002000 NOSAMP DS F 00002010 NSNMO DS F 00002020 HWLEN DS F 00002030 WINC DS F 00002040 * 00002050 IX8000 DS F 00002060 TXL DS F 00002070 IPR DC F'6' 00002080 TAB1 DC E'1.0,0.875,0.750,0.625,0.500,0.375,0.250,0.125,0.0' 00002090 TAB2 DC E'0.0,0.125,0.250,0.375,0.500,0.625,0.750,0.875,1.0' 00002100 SEXIT DS 9D 00002110 * 00002120 LTORG 00002130 * 00002140 END 00002150