A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / haeeog.ft
CommitLineData
81e70d48
PH
1C -+-+-+-+-+ \ e H A E E O G . F T \ e -+-+-+-+-+\r
2C\r
3C EOG ANALYSIS\r
4C\r
5 SUBROUTINE EOGSCN\r
6 INCLUDE HAEBUF.FI\r
7 INCLUDE HAEPTI.FI\r
8 INCLUDE HAEGSA.FI\r
9 INCLUDE HAECEO.FI\r
10 INCLUDE HAETTY.FI\r
11 INCLUDE HABRK.FI\r
12C\r
13\f EXTERNAL TOASCI,REASAC\r
14 INTEGER TOASCI\r
15 REAL REASAC\r
16C\r
17C\r
18 INTEGER POS1,I,N,\r
19 * SACBEG,SACEND, @ BEGINNING & ENDING OF SACCADE\r
20 * NXTSAC, @ HERE WE START FOR THE NEXT SEARCH\r
21 * S0,S1, @ WINDOW TO SCAN FOR SACCADE\r
22 * ERR, @ SACCAD ERROR NUMBER\r
23 * SPEAKR(73),LSTPOS,VLSTPO, @ SPEAKER POSITIONS HISTOGRAM\r
24 * BHH,BMM,BSS,EHH,EMM,ESS, @ TO EDIT OUTPUT LINE\r
25 * SACSTK(2,7,73),I1,I2,I3,Q1,Q2,Q3(8),Q4(8) @ STATISTIK STACK \r
26 REAL THRL,THRU, @ LOWER AND UPPER THRESHOLD FOR SACCAD SUBROUTINE\r
27 * SACAMP, @ AMPLITUDE OF THE SACCADE (INSERTED BY SACCAD)\r
28 * TE1,TE2,TE3,TE4, @ TEMP STORAGE FOR OUTPUT EDITING\r
29 * AMPL,AMPU @ TO CALIBRATE THE SACCADE AMPLITUDE\r
30C\r
31C STATEMENT FUNCTIONS ARE\r
32C\r
33 SPKPOS(IP0)=INT(XYSAM(IP0,SPKCN)*SPKFAC+SPKOFS+.5)\r
34 INTEGER SPKPOS\r
35 SPKPNT(IP1)=MIN0(MAX0((SPKPOS(IP1))/5+1,1),73)\r
36 INTEGER SPKPNT\r
37 EOFLOP(IP0)=IP0-S0.LT.SAMRAT @ END OF LOOP INDICATOR ( 1 SEC STILL REMAINS)\r
38 LOGICAL EOFLOP\r
39 MODE(IP0)=XYSAM(IP0,MODCN)\r
40 INTEGER MODE\r
41C\r
42 IF (SAMCNT.EQ.0) RETURN @ NO SAMPLE IN BUFFER\r
43 IF (BREAK(11)) RETURN @ USER GETS RID OF PROGRAM\r
44 IF (OPTION.NE.12) CALL ASKHIM(2) @ EO* DOES NOT ASK FOR BEGIN, SPAN\r
45 IF (BREAK(11)) RETURN @ BLAH BLAH BLAH\r
46C\r
47C ASK FOR THRESHOLD\r
48C\r
49 THRL=40. @ DEFAULT\r
50 THRU=40.\r
51 IF (OPTION.NE.11) GOTO 30\r
52 WRITE (TTO,1)\r
53 READ (TTI,2) THRL,THRU @ NO SIGN PLEASE!\r
54 IF (BREAK(11)) RETURN @ USER GETS ....\r
55 IF (THRL.GE.0) GOTO 30 @ NO SIGN IS THE CORRECT ONE\r
56 WRITE (TTO,5) @ TYPE A MSG, NO SIGN PLEASE\r
57 THRL=-THRL @ AND BEHAVE LIKE A GENTLEMAN\r
5830 THRL=-THRL @ LOWER LIMIT MUST BE NEGATIVE\r
59 BSS=TOASCI(MOD(BEGIN,60))\r
60 BMM=TOASCI(MOD(BEGIN/60,60))\r
61 BHH=TOASCI(BEGIN/3600)\r
62 ESS=TOASCI(MOD(ENDS,60))\r
63 EMM=TOASCI(MOD(ENDS/60,60))\r
64 EHH=TOASCI(ENDS/3600)\r
65C\r
66 WRITE (3,3) BHH,BMM,BSS,EHH,EMM,ESS,LABEL\r
67 WRITE (9,3) BHH,BMM,BSS,EHH,EMM,ESS,LABEL\r
68C\r
69 S0=BEGIN*SAMRAT @ START OF MAJOR LOOP\r
70C\r
71\f100 CONTINUE\r
72 CALL MOVE (-73*2*7,0,SACSTK) @ CLEAR STATISTIK BUFFER\r
73 CALL CMODE (S0,S1) @ COMPUTE S1, THE BOUNDER FOR SACCADE SEARCH\r
74C\r
75C COMPUTE MIN/MAX OF EOG SIGNAL\r
76C\r
77 AMPL=999\r
78 AMPU=-AMPL\r
79 DO 120 I=S0,S1\r
80 TE1=XYSAM(I,0)\r
81 AMPL=AMIN1(AMPL,TE1)\r
82 AMPU=AMAX1(AMPU,TE1)\r
83120 CONTINUE\r
84 AMPU=REASAC(AMPU)\r
85 AMPL=REASAC(AMPL) @ CALIBRATE INTO DEG SCALE\r
86 I=S0/SAMRAT\r
87 BSS=TOASCI(MOD(I,60))\r
88 BMM=TOASCI(MOD(I/60,60))\r
89 BHH=TOASCI(I/3600)\r
90 I=S1/SAMRAT\r
91 ESS=TOASCI(MOD(I,60))\r
92 EMM=TOASCI(MOD(I/60,60))\r
93 EHH=TOASCI(I/3600)\r
94 TE1=MODE(S0)\r
95 WRITE (9,6) LABEL,BHH,BMM,BSS,EHH,EMM,ESS,\r
96 * TE1,AMPL,AMPU\r
97 WRITE (3,6) LABEL,BHH,BMM,BSS,EHH,EMM,ESS,\r
98 * TE1,AMPL,AMPU\r
99C\r
100C COUNT THE NUMBER OF SPEAKER TURNS FROM S0 TO S1 ( I.E. FOR THE SAME MODE SIGNAL )\r
101C\r
102 CALL MOVE (-73,0,SPEAKR)\r
103 DO 110 I=S0,S1,2\r
104 J=SPKPNT(I)\r
105 IF (J.EQ.LSTPOS .OR. J.EQ.VLSTPO) GOTO 110 @ PREVENT MULTIPLE COUNTING\r
106 SPEAKR(J)=SPEAKR(J)+1\r
107 VLSTPO=LSTPOS @ SAVE VERY LAST POSITION\r
108 LSTPOS=J @ SAVE LAST POSITION\r
109110 CONTINUE\r
110C\r
111 POS1=S0 @ HERE WE START THE SEARCH LOOP\r
112C\r
113C MINOR LOOP TO FETCH THE SACCADE ONE BY ONE\r
114C\r
11510 CONTINUE @ LOOP TO FETCH THE NEXT SACCADE\r
116 CALL SACCAD(POS1,S1,THRL,THRU,SACBEG,SACEND,\r
117 * SACAMP,NXTSAC,ERR)\r
118 TE1=SACBEG/FLOAT(SAMRAT) @ BEGINING OF THE SACCADE\r
119 BSS=TOASCI(MOD(TE1,60))\r
120 BMM=TOASCI(MOD(TE1/60,60))\r
121 BHH=TOASCI(TE1/3600)\r
122 TE2=(SACEND-SACBEG)/FLOAT(SAMRAT) @ DURATION\r
123 TE3=SPKPOS(SACBEG)-180. @ COMPUTE SPEAKER POSITION\r
124 I=MOD(INT(TE1*10.),10)\r
125 WRITE (3,4) BHH,BMM,BSS,I,TE2,SACAMP,TE3,ERR\r
126C\r
127C INSERT DATA INTO STATISTIK BUFFER\r
128C\r
129 IF (ERR.NE.0) GOTO 20 @ ERROR FLAG SET, NO SACCADE FOUND\r
130 I1=NCOND(SACAMP.LT.0,1,2) @ SACAMP<0 --> 1 ELSE 2\r
131 I2=MIN1(ABS(SACAMP/5.)+1.,7.) @ 0-5, -10, -15, -20, -25, -30, >30\r
132 I3=SPKPNT(SACBEG)\r
133 SACSTK(I1,I2,I3)=SACSTK(I1,I2,I3)+1 @ HISTOGRAM\r
134C\r
135C\r
13620 POS1=NXTSAC @ PREP FOR THE NEXT LOOP\r
137 IF (S1-NXTSAC.GT.SAMRAT) GOTO 10 @ NO MODE CHANGE, SO CONTINUE MINOR LOOP\r
138 S0=S1+5 @ MODE CHANGES, REPEAT MAJOR LOOP\r
139C\r
140C PRINT THE HISTOGRAM\r
141C\r
142 CALL MOVE (-8,0,Q3)\r
143 CALL MOVE (-8,0,Q4)\r
144 DO 40 I=1,73,6\r
145 J=-180+(I-1)*5\r
146 WRITE (9,7) J\r
147 DO 40 I3=I,MIN0(I+5,73)\r
148 Q1=0\r
149 Q2=0\r
150 DO 42 N=1,7\r
151 Q1=SACSTK(1,N,I3)+Q1\r
152 Q2=SACSTK(2,N,I3)+Q2\r
153 Q3(N)=SACSTK(1,N,I3)+Q3(N)\r
15442 Q4(N)=SACSTK(2,N,I3)+Q4(N)\r
155 Q3(8)=Q1+Q3(8)\r
156 Q4(8)=Q2+Q4(8)\r
15740 WRITE (9,8) SPEAKR(I3),((SACSTK(I1,I2,I3),I1=1,2),I2=1,7),\r
158 * Q1,Q2\r
159\r
160 WRITE (9,9) (Q3(I),Q4(I),I=1,8)\r
161 WRITE (9,101) @ NEW PAGE\r
162 IF (EOFLOP(ENDS*SAMRAT)) RETURN @ WORK DONE\r
163 GOTO 100\r
1641 FORMAT (' U/O SCHWELLENWERT (2F3.0) ',$)\r
1652 FORMAT (2F3.0)\r
1663 FORMAT (1H1,80X/1X,2(2(A2,1H:),A2,3H - ),5X,10A6)\r
1674 FORMAT (1X,2(A2,1H:),A2,1H.,I1,F7.3,2F8.0,I5)\r
1685 FORMAT (' KEINE VORZEICHEN BITTE, WEISS ICH SELBER RICHTIG!')\r
1696 FORMAT (80X/1X,10A6/1X,2(2(A2,1H:)A2,3H - ),'MODE:',F6.0,\r
170 * ' SCHLAGFELD:',F6.0,2H /,F6.0/)\r
1717 FORMAT (1X,I4)\r
1728 FORMAT (1H+,2X,I6,1H*,7(2I4,2X),1H*,2I4/1X)\r
1739 FORMAT (10X,7(2I4,2X),1H#,2I4)\r
174101 FORMAT (1H1)\r
175 END\r
176\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\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\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\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\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0