A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / haenyt.ft
1 C -+-+-+-+-+\ e H A E N Y T . F T \ f-+-+-+-+-+
2 C
3 C MUST BE MAPPED INTO THE SAME LEVEL AND OVERLAY WITH HAENYA.FT
4 C
5 C THIS ROUTINE IS CALLED FROM HAENYX.
6 C IT RETURNS THE FILTERED TABLE POSITION ( CH2 )
7 C
8 C * OR 24-APR-84 HA
9 C * UP 28-MAY-84 HA INSERTS THREE POINT FILTER
10 C
11 C NYAFIL: 0 ORIGINAL VALUE OF TABLE POSITION
12 C 1 11 POINT FILTER
13 C 2 LINEAR APPROXIMATION
14 C 3 3 POINT FILTER
15 C
16 REAL FUNCTION NYTASM (ID)
17 C
18 C INPUT PARAMETER IS
19 INTEGER ID @ HOLDS THE INDEX TO THE DATA POINTS
20 C
21 INCLUDE HAECNY.FI
22 REAL XYSAM
23 LOGICAL BETW
24 EXTERNAL XYSAM,BETW
25 C
26 \f INTEGER T1,J,I
27 REAL C(6) @ 11 POINT FILTER CONSTANTS
28 DATA C /.1038,.1956,.1608,.0488,.021,-.03/
29 C
30 C
31 IF (NYAFIL.GT.0.AND.NYAFIL.LE.3) GOTO 9
32 NYTASM=XYSAM(ID,2) @ NO FILTERING, RETURN ORIGINAL VALUE
33 RETURN
34 C
35 C
36 9 GOTO (10,20,30),NYAFIL
37 C
38 10 CONTINUE
39 C 11 POINT FILTER
40 T1=MAX0(ID,6)
41 NYTASM=0
42 DO 11 J=0,5
43 11 NYTASM=C(J+1)*(XYSAM(T1-J,2)+XYSAM(T1+J,2))+NYTASM @ 11 POINT FILTER OF TURN TABLE SIGNAL
44 RETURN
45 C
46 C LINEAR APPROXIMATION
47 C
48 20 CONTINUE @ LINEAR APROXIMATION
49 DO 21 I=1,8
50 IF (SMOTAB(1,I).LT.0) GOTO 23
51 IF (BETW(SMOTAB(1,I),ID,SMOTAB(2,I))) GOTO 22
52 IF (ID.LT.SMOTAB(1,I)) GOTO 22
53 IF (BETW(SMOTAB(2,I),ID,SMOTAB(1,MIN0(I+1,8)))) GOTO 23
54 21 CONTINUE
55 I=9 @ SAVE A JUMP OVER 23
56 23 I=MAX0(1,I-1) @ TAKE THE LAST VALUES
57 22 CONTINUE
58 NYTASM=SMOTBL(1,I)*ID+SMOTBL(2,I) @ STEIGUNG*ID+Y-ACHSENABSCHNITT
59 RETURN
60 C
61 C 3 POINT FILTER
62 C
63 30 T1=MAX0(ID,2)
64 NYTASM=XYSAM(T1,2)*.5+(XYSAM(T1-1,2)+XYSAM(T1+1,2))*.25
65 RETURN
66 END
67 \1a