A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / haenyx.ft
1 C \ e-+-+-+-+-+ H A E N Y X . F T -+-+-+-+-+
2 C
3 C MUST BE MAPPED INTO THE SAME LEVEL & OVERLAY WITH HAENYA ROUTINE
4 C THERE ARE SOME TEMPORARY VARIABLES WHICH MAY NOT BE DESTROYED WHILE
5 C SCANNING ONE DATA SET. ( T1,T2,T3,THRL,THRU)
6 C TAKE CARE FOR CORRECT OVERLAY PLACEMENT.
7 C
8 C * OR 3-MAY-83
9 C * UP 15-NOV-83
10 C * UP 21-NOV-83
11 C * UP 19-DEC-83
12 C * UP 26-APR-84
13 C * UP 28-MAY-84 RIGHT/LEFT SACCADE SEPERATION
14 C * UP 3-DEC-85 INCLUDES SCHMITT TRIGGER HANDLING
15 REAL FUNCTION NYXYSM(ID,CH)
16 C
17 C RETURNS THE DATA POINTS FOR NYADD PLOT ROUTINE
18 C INPUT PARAMETERS
19 C
20 INTEGER ID @ HOLDS THE INDEX TO THE DATA POINTS
21 * ,CH @ HOLDS CHANNEL NUMBER (FROM 0 TO CHNLS+1)
22 COMMON CNYA: REAL NORM (2,8) @ HOLDS FACTOR FOR ADDITION AND CONVERSION TO DEG. ( 1 TO 8 BUT CH IS 0 TO 7 SO CH+1!!)
23 C
24 C ALGORITHM USED:
25 C NYXYSM:= .IF CH .EQ 2 .THEN NYTASM(ID) .ELIF
26 C CH .LT CHNLS+STRIGS .THEN XYSAM(ID,CH) .ELIF
27 C CH .EQ CHNLS+STRIGS .THEN XYSAM(ID,0)*NYSFAC+XYSAM(ID,1) .ELIF
28 C CH .EQ CHNLS+STRIGS+1 .THEN NYXYSM(ID,CH-1,...)+XYSAM(ID,2)*TABLEF
29 C .ELSE ID .FI
30 C
31 INCLUDE HAEBUF.FI
32 INCLUDE HAEGSA.FI
33 INCLUDE HAECNY.FI
34 INCLUDE HABRK.FI
35 \f REAL XYSAM,NYTASM
36 INTEGER SACBEG,SACEND,NXTSAC,ERR,T1,T2,T3,J,K1
37 REAL THRL,THRU @ LOWER/UPPER THRESHOLD FOR DFIR FUNCTION
38 DATA T1,T2,NXTSAC,THRL,THRU /3*1,2*0/
39 REAL COND
40 EXTERNAL XYSAM,NYTASM,COND
41 C
42 \fC
43 K1=CH+1 @ INDEX FOR CHANNEL# 1 ... 8
44 IF (CH.EQ.2) GOTO 101 @ SPECIAL HANDLING FOR TURN TABLE
45 IF (CH.GE.CHNLS+STRIGS) GOTO 10 @ RESULT MUST BE COMPUTED
46 NYXYSM=XYSAM(ID,CH)*NORM(K1) @ CONVERT TO DEGREES
47 RETURN
48 C
49 C
50 10 CONTINUE
51 GOTO (102,102,103), CH-CHNLS-STRIGS+1
52 C
53 C
54 101 CONTINUE
55 NYXYSM=NYTASM(ID)*NORM(K1) @ TABLE POSITION
56 RETURN
57 C
58 C
59 102 CONTINUE
60 IF (THRL.NE.THRU) GOTO 21
61 25 CONTINUE
62 IF(.NOT.BREAK(6)) GOTO 22 @ SW 6 ASKS FOR TRIGGER THRESHOLD
63 WRITE (TTO,1) @ ASK FOR THRESHOLD
64 READ (TTI,2) THRL,THRU
65 THRL=60.
66 THRU=60.
67 22 THRL=COND(THRL.LT.0,THRL,-THRL) @ COMPUTE CORRECT SIGN
68 THRU=COND(THRU.GE.0,THRU,-THRU)
69 NXTSAC=MAX0(5,ID)
70 T1=ID
71 T2=T1
72 C
73 21 CONTINUE
74 IF (ID.LT.T1) GOTO 25 @ TEST FOR NEW SCAN OF DATA POINTS
75 IF (ID.GE.T2) GOTO 24
76 23 CONTINUE
77 NYXYSM=(NYTASM(ID)-NYTASM(T1))*NORM(3) @ TURNTABLE POSITION AT THE END OF LAST SACCADE
78 NYXYSM=XYSAM(ID,0)*NORM(1)+XYSAM(ID,1)*NORM(2)
79 * +NYXYSM @ NYSTAGMUS+HEADPOSITION+TABLE
80 GOTO 29
81 24 T3=NXTSAC @ HERE WE START SEARCHING FOR NEXT SACCADE
82 CALL SACCAD (T3,ENDS*SAMRAT,THRL,THRU,SACBEG,SACEND,SACAMP,
83 * NXTSAC,ERR)
84 IF (ERR.NE.0) GOTO 23
85 C SEPERATION FOR LEFT/RIGHT TURNING
86 IF (SACAMP.LE.0.AND.TABDIR.EQ.1HR) GOTO 24 @ WRONG DIRECTION
87 IF (SACAMP.GE.0.AND.TABDIR.EQ.1HL) GOTO 24 @ WRONG DIRECTION
88 T1=T2 @ SAVE THE END OF THE LAST BUT ONE SACCADE FOUND
89 T2=SACEND @ THE END OF THE LAST SACCADE
90 GOTO 23
91 29 CONTINUE
92 NYXYSM=NYXYSM*NORM(K1) @ CONVERT TO DEGREES
93 RETURN
94 C
95 C
96 103 CONTINUE
97 NYXYSM=ID
98 RETURN
99 1 FORMAT (' U/O SCHWELLENWERT (2F3.0) ',$)
100 2 FORMAT (2F3.0)
101 END
102 \1a