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