Add README.md
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / haecal.ft
CommitLineData
81e70d48
PH
1C -+-+-+-+-+ \ e H A E C A L . F T \ e -+-+-+-+-+\r
2C\r
3C SACCADE CALIBRATION FOR EOG ANALYSIS\r
4C\r
5 SUBROUTINE CALSAC\r
6C\r
7 INCLUDE HAEBUF.FI\r
8 INCLUDE HAEGSA.FI\r
9 INCLUDE HAECEO.FI\r
10 INCLUDE HAEPTI.FI\r
11 INCLUDE HABRK.FI\r
12C\r
13\f INTEGER J,I,N,I1,I2,S0,S1\r
14 REAL SACOFS,TE1,SPKMIN,SPKMAX\r
15 EXTERNAL COND,XYSAM\r
16 REAL COND,XYSAM\r
17C\r
18C STATEMENT FUNCTIONS ARE\r
19C\r
20 SPKPOS(IP0)=INT(XYSAM(IP0,SPKCN)*SPKFAC+SPKOFS+.5)-180\r
21 INTEGER SPKPOS\r
22C\r
23C\r
24 IF (OPTION.EQ.11) GOTO 60 @ EI- PRINTS THE CALIBRATE VECTOR\r
25 IF (OPTION.EQ.2) GOTO 50 @ EI1 INSERT FACTOR 1 \r
26 CALL ASKHIM(2) @ ASK FOR BEGIN & ENDS\r
27 S0=BEGIN*SAMRAT\r
28 S1=ENDS*SAMRAT\r
29C\r
30C COMPUTE SPEAKER DC OFFSET\r
31C\r
32 SPKOFS=0\r
33 SPMIN=9999\r
34 SPMAX=-SPMIN\r
35 DO 70 I=S0,S1\r
36 TE1=SPKPOS(I)\r
37 SPMIN=AMIN1(SPMIN,TE1)\r
3870 SPMAX=AMAX1(SPMAX,TE1)\r
39 SPKOFS=-((SPMAX-SPMIN)*.5+SPMIN)\r
40C\r
41C\r
42 CALL MOVE (-18,0,EICH)\r
43 CALL MOVE (-18,0,PEICH)\r
44C\r
45 DO 10 I=S0,S1\r
46 I1=SPKPOS(I)\r
47 IF (MOD(I1,5).NE.0) GOTO 10\r
48 IF (IABS(I1).GT.30) GOTO 10\r
49 I2=IABS(I1/5)+1\r
50 I1=NCOND(I1.LT.0,1,2) @ POSITION BETWEEN -40 AND 40 DEG. 5 DEG STEPS +- 1 DEG ERROR \r
51 EICH(I1,I2)=XYSAM(I,0)+EICH(I1,I2)\r
52 PEICH(I1,I2)=PEICH(I1,I2)+1\r
5310 CONTINUE\r
54C\r
55C MITTELWERTE BERECHNEN\r
56C\r
57 DO 20 I=1,9\r
58 DO 20 J=1,2\r
5920 EICH(J,I)=EICH(J,I)/MAX0(PEICH(J,I),1) @ PREVENTS DIVIDE BY ZERO\r
60 IF (PEICH(2,1).NE.0) GOTO 25\r
61 WRITE (TTO,1)\r
62 WRITE (TTO,2) EICH,PEICH @ PRINT AN ERROR MSG\r
6350 CONTINUE @ EI1 COMES HERE\r
64 CALL MOVE (-18,1.,EICH)\r
65 CALIBR=0. @ NO CALIBRATION ASSUMED\r
66 SPKOFS=0 @ NO SPEAKER POSITION OFFSET\r
67 RETURN\r
6860 WRITE (3,2) EICH,PEICH @ PRINT THE CALIBRATE VECTOR\r
69 RETURN\r
7025 SACOFS=EICH(2,1) @ VALUE FOR 0 DEG\r
71 DO 30 I=2,9\r
72 DO 30 J=1,2\r
7330 EICH(J,I)=(EICH(J,I)-SACOFS)/((I-1)*5)\r
74 DO 35 I=2,9\r
75 DO 35 J=1,2\r
7635 EICH(J,I)=COND(PEICH(J,I),EICH(J,I),EICH(J,I-1))\r
77 DO 40 N=3,9\r
78 I=11-N\r
79 DO 40 J=1,2\r
8040 EICH(J,I)=COND(PEICH(J,I),EICH(J,I),(EICH(J,I+1)+EICH(J,I))*.5)\r
81 RETURN\r
821 FORMAT (' KEINEN NULLDURCHGANG DES LAUTSPRECHERS GEFUNDEN, ',\r
83 * 'KEINE EICHUNG!')\r
842 FORMAT (1X,1P,4(2E11.3,2X)/1X,5(2E11.3,2X)/1X,\r
85 * 0P,4(2F11.0,2X),/1X,5(2F11.0,2X))\r
86 END\r
87\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