*TITLESARTRC -- REMOVES A TRACE FROM THE STACK AND ADJUSTS COUNT 00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** *A AUTHOR D.D. REED 00000060 *A DESIGNER D.D. REED 00000070 *A LANGUAGE S/370 ASSEMBLER F 00000080 *A WRITTEN 12/13/76 00000090 * REVISED 00000110 *A 00000120 *A 00000150 *A CALL SARTRC ( XTEM, STACK, DIVS, NOSAMP ) 00000160 *A XTEM = INPUT/OUTPUT DATA ARRAY. R4 00000170 *A STACK = WORK ARRAY TO HOLD STACKED TRACES. R4 00000180 *A DIVS = WORK ARRAY TO HOLD STACK COUNTS. R4 00000190 *A NOSAMP = NUMBER OF SAMPLES I4 00000200 *A 00000210 *A 00000211 *A SARTRC PREPARES XTEM FOR SUBTRACTION FROM THE STACK. MUTED 00000220 *A PORTIONS OF A TRACE WERE NOT STACKED AND HENCE NOT NORMALIZED. 00000230 *A A MUTED PORTION IS DEFINED AS MORE THAN 2 CONSECUTIVE ZERO 00000240 *A SAMPLES. THE STACK IS RENORMALIZED AFTER REMOVAL. 00000250 *AEND 00000251 SARTRC CSECT 00000400 COPY S1REG 00000430 XTEM EQU R2 00000440 STACK EQU R3 00000450 DIVS EQU R4 00000460 BASER EQU R12 00000470 * 00000480 USING *,BASER 00000490 * 00000500 BASEADD STM R2,R12,28(R13) SAVE USERS REGISTERS 00000510 LR BASER,R15 00000520 * 00000530 LM R2,R5,0(R1) LOAD CALLING SEQUENCE 00000540 L R9,0(R5) LOAD VALUE OF NOSAMP 00000550 SLA R9,2 CONVERT TO BYTE COUNT 00000560 BZ RETURN EXIT IF NONE ON THIS CALL 00000570 * 00000571 LA R10,0 00000572 STACKTST LE FR0,0(DIVS,R10) CHECK TO SEE IF MORE THAN 1 00000573 CE FR0,=E'1.0' TRACE IN PILOT 00000574 BH REMOVE 00000575 LA R10,4(R10) 00000576 CR R10,R9 00000577 BL STACKTST 00000578 B RETURN 00000579 REMOVE S R9,=F'4' 00000580 * 00000590 LA R7,0 R7 IS INDEX TO XTEM AND STACK 00000610 LA R8,4 00000620 LA R11,0 R11 IS THE MUTED PORTION FLAG 00000630 * 00000640 PRST10 L R5,0(XTEM,R7) LOAD A SAMPLE (TYPE IS NOT 00000650 LTR R5,R5 IMPORTANT, SINCE THIS IS ONLY 00000660 BNZ PRST30 A TEST FOR ZERO OR NON-ZERO) 00000670 * 00000680 CR R7,R9 ZERO SAMPLE FOUND, CHECK NEXT 00000690 BE PRST30 ONE BUT NOT IF AT END OF ARRAY 00000700 * 00000710 LTR R11,R11 CHECK IF 'ZERO SAMPLE ENCOUNTER- 00000720 BNZ PRST50 ED' FLAG IS SET 00000730 * 00000740 L R6,4(XTEM,R7) FLAG NOT SET, LOAD NEXT SAMPLE 00000750 LTR R6,R6 AND TEST FOR ZERO OR NON-ZERO 00000760 BNZ PRST30 00000770 * 00000780 LR R11,R8 2 ZERO SAMPLES FOUND, SET FLAG 00000790 B PRST50 00000800 * 00000810 PRST30 LE FR0,0(DIVS,R7) THIS IS NOT A MUTED PORTION, 00000811 LE FR2,0(STACK,R7) DECREMENT COUNT AND SUBTRACT 00000812 MER FR2,FR0 FROM STACK AFTER UNNORMALIZING 00000813 SE FR0,=E'1.0' 00000814 STE FR0,0(DIVS,R7) 00000815 * 00000816 LA R11,0 TURN OFF MUTED-PORTION FLAG 00000860 * 00000870 SE FR2,0(XTEM,R7) FLOATING POINT SUBTRACT 00000880 LTER FR0,FR0 00000881 BZ STSTACK 00000882 DER FR2,FR0 NORMALIZE 00000890 STSTACK STE FR2,0(STACK,R7) 00000900 * 00000910 PRST50 BXLE R7,R8,PRST10 LOOP ON ENTIRE TRACE 00000930 * 00000940 RETURN LM R2,R12,28(R13) RESTORE REGISTERS 00000950 BR R14 00000960 * 00000970 * 00001280 LTORG 00001290 * 00001300 END 00001310