1 C -+-+-+-+-+
\ e H A E E O G . F T
\ e -+-+-+-+-+
13 \f EXTERNAL TOASCI,REASAC
19 * SACBEG,SACEND, @ BEGINNING & ENDING OF SACCADE
20 * NXTSAC, @ HERE WE START FOR THE NEXT SEARCH
21 * S0,S1, @ WINDOW TO SCAN FOR SACCADE
22 * ERR, @ SACCAD ERROR NUMBER
23 * SPEAKR(73),LSTPOS,VLSTPO, @ SPEAKER POSITIONS HISTOGRAM
24 * BHH,BMM,BSS,EHH,EMM,ESS, @ TO EDIT OUTPUT LINE
25 * SACSTK(2,7,73),I1,I2,I3,Q1,Q2,Q3(8),Q4(8) @ STATISTIK STACK
26 REAL THRL,THRU, @ LOWER AND UPPER THRESHOLD FOR SACCAD SUBROUTINE
27 * SACAMP, @ AMPLITUDE OF THE SACCADE (INSERTED BY SACCAD)
28 * TE1,TE2,TE3,TE4, @ TEMP STORAGE FOR OUTPUT EDITING
29 * AMPL,AMPU @ TO CALIBRATE THE SACCADE AMPLITUDE
31 C STATEMENT FUNCTIONS ARE
33 SPKPOS(IP0)=INT(XYSAM(IP0,SPKCN)*SPKFAC+SPKOFS+.5)
35 SPKPNT(IP1)=MIN0(MAX0((SPKPOS(IP1))/5+1,1),73)
37 EOFLOP(IP0)=IP0-S0.LT.SAMRAT @ END OF LOOP INDICATOR ( 1 SEC STILL REMAINS)
39 MODE(IP0)=XYSAM(IP0,MODCN)
42 IF (SAMCNT.EQ.0) RETURN @ NO SAMPLE IN BUFFER
43 IF (BREAK(11)) RETURN @ USER GETS RID OF PROGRAM
44 IF (OPTION.NE.12) CALL ASKHIM(2) @ EO* DOES NOT ASK FOR BEGIN, SPAN
45 IF (BREAK(11)) RETURN @ BLAH BLAH BLAH
51 IF (OPTION.NE.11) GOTO 30
53 READ (TTI,2) THRL,THRU @ NO SIGN PLEASE!
54 IF (BREAK(11)) RETURN @ USER GETS ....
55 IF (THRL.GE.0) GOTO 30 @ NO SIGN IS THE CORRECT ONE
56 WRITE (TTO,5) @ TYPE A MSG, NO SIGN PLEASE
57 THRL=-THRL @ AND BEHAVE LIKE A GENTLEMAN
58 30 THRL=-THRL @ LOWER LIMIT MUST BE NEGATIVE
59 BSS=TOASCI(MOD(BEGIN,60))
60 BMM=TOASCI(MOD(BEGIN/60,60))
61 BHH=TOASCI(BEGIN/3600)
62 ESS=TOASCI(MOD(ENDS,60))
63 EMM=TOASCI(MOD(ENDS/60,60))
66 WRITE (3,3) BHH,BMM,BSS,EHH,EMM,ESS,LABEL
67 WRITE (9,3) BHH,BMM,BSS,EHH,EMM,ESS,LABEL
69 S0=BEGIN*SAMRAT @ START OF MAJOR LOOP
72 CALL MOVE (-73*2*7,0,SACSTK) @ CLEAR STATISTIK BUFFER
73 CALL CMODE (S0,S1) @ COMPUTE S1, THE BOUNDER FOR SACCADE SEARCH
75 C COMPUTE MIN/MAX OF EOG SIGNAL
85 AMPL=REASAC(AMPL) @ CALIBRATE INTO DEG SCALE
88 BMM=TOASCI(MOD(I/60,60))
92 EMM=TOASCI(MOD(I/60,60))
95 WRITE (9,6) LABEL,BHH,BMM,BSS,EHH,EMM,ESS,
97 WRITE (3,6) LABEL,BHH,BMM,BSS,EHH,EMM,ESS,
100 C COUNT THE NUMBER OF SPEAKER TURNS FROM S0 TO S1 ( I.E. FOR THE SAME MODE SIGNAL )
102 CALL MOVE (-73,0,SPEAKR)
105 IF (J.EQ.LSTPOS .OR. J.EQ.VLSTPO) GOTO 110 @ PREVENT MULTIPLE COUNTING
106 SPEAKR(J)=SPEAKR(J)+1
107 VLSTPO=LSTPOS @ SAVE VERY LAST POSITION
108 LSTPOS=J @ SAVE LAST POSITION
111 POS1=S0 @ HERE WE START THE SEARCH LOOP
113 C MINOR LOOP TO FETCH THE SACCADE ONE BY ONE
115 10 CONTINUE @ LOOP TO FETCH THE NEXT SACCADE
116 CALL SACCAD(POS1,S1,THRL,THRU,SACBEG,SACEND,
118 TE1=SACBEG/FLOAT(SAMRAT) @ BEGINING OF THE SACCADE
119 BSS=TOASCI(MOD(TE1,60))
120 BMM=TOASCI(MOD(TE1/60,60))
122 TE2=(SACEND-SACBEG)/FLOAT(SAMRAT) @ DURATION
123 TE3=SPKPOS(SACBEG)-180. @ COMPUTE SPEAKER POSITION
124 I=MOD(INT(TE1*10.),10)
125 WRITE (3,4) BHH,BMM,BSS,I,TE2,SACAMP,TE3,ERR
127 C INSERT DATA INTO STATISTIK BUFFER
129 IF (ERR.NE.0) GOTO 20 @ ERROR FLAG SET, NO SACCADE FOUND
130 I1=NCOND(SACAMP.LT.0,1,2) @ SACAMP<0 --> 1 ELSE 2
131 I2=MIN1(ABS(SACAMP/5.)+1.,7.) @ 0-5, -10, -15, -20, -25, -30, >30
133 SACSTK(I1,I2,I3)=SACSTK(I1,I2,I3)+1 @ HISTOGRAM
136 20 POS1=NXTSAC @ PREP FOR THE NEXT LOOP
137 IF (S1-NXTSAC.GT.SAMRAT) GOTO 10 @ NO MODE CHANGE, SO CONTINUE MINOR LOOP
138 S0=S1+5 @ MODE CHANGES, REPEAT MAJOR LOOP
140 C PRINT THE HISTOGRAM
147 DO 40 I3=I,MIN0(I+5,73)
153 Q3(N)=SACSTK(1,N,I3)+Q3(N)
154 42 Q4(N)=SACSTK(2,N,I3)+Q4(N)
157 40 WRITE (9,8) SPEAKR(I3),((SACSTK(I1,I2,I3),I1=1,2),I2=1,7),
160 WRITE (9,9) (Q3(I),Q4(I),I=1,8)
161 WRITE (9,101) @ NEW PAGE
162 IF (EOFLOP(ENDS*SAMRAT)) RETURN @ WORK DONE
164 1 FORMAT (' U/O SCHWELLENWERT (2F3.0) ',$)
166 3 FORMAT (1H1,80X/1X,2(2(A2,1H:),A2,3H - ),5X,10A6)
167 4 FORMAT (1X,2(A2,1H:),A2,1H.,I1,F7.3,2F8.0,I5)
168 5 FORMAT (' KEINE VORZEICHEN BITTE, WEISS ICH SELBER RICHTIG!')
169 6 FORMAT (80X/1X,10A6/1X,2(2(A2,1H:)A2,3H - ),'MODE:',F6.0,
170 * ' SCHLAGFELD:',F6.0,2H /,F6.0/)
172 8 FORMAT (1H+,2X,I6,1H*,7(2I4,2X),1H*,2I4/1X)
173 9 FORMAT (10X,7(2I4,2X),1H#,2I4)