| 1 | C \ e-+-+-+-+-+ H A E N Y X . F T -+-+-+-+-+\r |
| 2 | C\r |
| 3 | C MUST BE MAPPED INTO THE SAME LEVEL & OVERLAY WITH HAENYA ROUTINE\r |
| 4 | C THERE ARE SOME TEMPORARY VARIABLES WHICH MAY NOT BE DESTROYED WHILE\r |
| 5 | C SCANNING ONE DATA SET. ( T1,T2,T3,THRL,THRU)\r |
| 6 | C TAKE CARE FOR CORRECT OVERLAY PLACEMENT.\r |
| 7 | C\r |
| 8 | C * OR 3-MAY-83\r |
| 9 | C * UP 15-NOV-83\r |
| 10 | C * UP 21-NOV-83\r |
| 11 | C * UP 19-DEC-83\r |
| 12 | C * UP 26-APR-84\r |
| 13 | C * UP 28-MAY-84 RIGHT/LEFT SACCADE SEPERATION\r |
| 14 | C * UP 3-DEC-85 INCLUDES SCHMITT TRIGGER HANDLING\r |
| 15 | REAL FUNCTION NYXYSM(ID,CH)\r |
| 16 | C\r |
| 17 | C RETURNS THE DATA POINTS FOR NYADD PLOT ROUTINE\r |
| 18 | C INPUT PARAMETERS\r |
| 19 | C\r |
| 20 | INTEGER ID @ HOLDS THE INDEX TO THE DATA POINTS\r |
| 21 | * ,CH @ HOLDS CHANNEL NUMBER (FROM 0 TO CHNLS+1)\r |
| 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!!)\r |
| 23 | C\r |
| 24 | C ALGORITHM USED:\r |
| 25 | C NYXYSM:= .IF CH .EQ 2 .THEN NYTASM(ID) .ELIF\r |
| 26 | C CH .LT CHNLS+STRIGS .THEN XYSAM(ID,CH) .ELIF\r |
| 27 | C CH .EQ CHNLS+STRIGS .THEN XYSAM(ID,0)*NYSFAC+XYSAM(ID,1) .ELIF\r |
| 28 | C CH .EQ CHNLS+STRIGS+1 .THEN NYXYSM(ID,CH-1,...)+XYSAM(ID,2)*TABLEF\r |
| 29 | C .ELSE ID .FI\r |
| 30 | C\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 |
| 41 | C\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 |
| 48 | C\r |
| 49 | C\r |
| 50 | 10 CONTINUE\r |
| 51 | GOTO (102,102,103), CH-CHNLS-STRIGS+1\r |
| 52 | C\r |
| 53 | C\r |
| 54 | 101 CONTINUE\r |
| 55 | NYXYSM=NYTASM(ID)*NORM(K1) @ TABLE POSITION\r |
| 56 | RETURN\r |
| 57 | C\r |
| 58 | C\r |
| 59 | 102 CONTINUE\r |
| 60 | IF (THRL.NE.THRU) GOTO 21\r |
| 61 | 25 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 |
| 67 | 22 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 |
| 72 | C\r |
| 73 | 21 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 |
| 76 | 23 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 |
| 81 | 24 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 |
| 85 | C 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 |
| 91 | 29 CONTINUE\r |
| 92 | NYXYSM=NYXYSM*NORM(K1) @ CONVERT TO DEGREES\r |
| 93 | RETURN\r |
| 94 | C\r |
| 95 | C\r |
| 96 | 103 CONTINUE\r |
| 97 | NYXYSM=ID\r |
| 98 | RETURN\r |
| 99 | 1 FORMAT (' U/O SCHWELLENWERT (2F3.0) ',$)\r |
| 100 | 2 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 |