A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / haeprp.ft
CommitLineData
81e70d48
PH
1C -+-+-+-+-+ \ e H A E P R P . F T \ e -+-+-+-+-+\r
2C\r
3C PREP FOR THE FFT\r
4C\r
5 SUBROUTINE PRPFFT\r
6 INCLUDE HAEBUF.FI\r
7 INCLUDE HAEGSA.FI\r
8 INCLUDE HAEPTI.FI\r
9 INCLUDE HAETTY.FI\r
10 INCLUDE HABRK.FI\r
11C\r
12 INTEGER LOG2\r
13 EXTERNAL LOG2\r
14\fC\r
15 INTEGER I,J,K,DA(3),BAND,LIMIT @ DO LOOP COUNTERS & LIMITS\r
16 REAL TEMP,CPUTIM\r
17C\r
18C\r
1910 CONTINUE\r
20C\r
21C HERE WE TEST FOR CORRECT FREQUENCY LIMITS OF THE EEG BAND (1-5)\r
22 DO 12 BAND=1,5\r
23 DO 12 LIMIT=1,2\r
24 IF (FREQU(BAND,LIMIT).LE.SAMRAT/2) GOTO 12\r
25 WRITE (TTO,101) BAND,SAMRAT\r
26 FREQU(BAND,LIMIT)=COND(LIMIT.EQ.1,SAMRAT/2.-.1,SAMRAT/2.)\r
2712 CONTINUE\r
28C\r
29 IF (OPTION.NE.12 .OR. ENDS.LT.SPAN) CALL ASKHIM(4) @ CO* DOESN'T ASK SCILLY QUESTIONS IF THERE ARE CORRECT PARAMETERS\r
30C\r
31C TEST FOR VALID INPUT PARAMETERS\r
32C\r
33 IF BREAK(11) RETURN @ USER GETS RID OF PROGRAM\r
34 INCR=SAMRAT*SPAN @ NUMBER OF POINTS FOR EACH FFT --> INCR\r
35 IF (INCR.LE.2048) GOTO 22 @ MORE THAN 2048 POINTS TO SCAN?\r
36 WRITE (TTO,6) SPAN @ TOO LESS MEMORY\r
37 GOTO 10\r
3822 CONTINUE\r
39 IF (SPAN.LE.ENDS) GOTO 23 @ LESS THAN ONE PASS?\r
40 WRITE (TTO,8) SPAN,ENDS\r
41 GOTO 10\r
4223 CONTINUE\r
43 IF (ENDS.LE.SAMCNT/SAMRAT) GOTO 24 @ IF THE END DOES NOT EXCEED THE SAMPLE COUNT THEN WE GO 24 ELSE\r
44 I=SAMCNT/SAMRAT @ WE COMPUTE THE SAMPLING TIME IN SECONDS\r
45 WRITE (TTO,2) ENDS,I @ IN ORDER TO PRINT AN DIAGNOSTIC MSG\r
46 ENDS=SAMCNT/SAMRAT @ AND THE WE BUMP THE SAMPLING TIME INTO ENDS\r
4724 CONTINUE\r
48 EXPON=LOG2(INCR) @ TEST FOR POWER OF 2\r
49 IF (EXPON.GT.0) GOTO 20 @ IF INCR IS A POWER OF TWO THEN GOTO 20\r
50 WRITE (TTO,3) SAMRAT,SPAN @ NO POWER OF TWO\r
51 GOTO 10 @ READ NEXT VALUE\r
5220 TEMP=AMOD(FLOAT(ENDS-BEGIN),FLOAT(SPAN)) @ COMPUTE SECONDS TO TRANSFORM\r
53 IF (TEMP.LT.0.1) GOTO 30 @ ARE THERE SOME SECONDS LEFT?\r
54 TEMP=AMOD(FLOAT(SAMCNT)/FLOAT(SAMRAT),FLOAT(SPAN))\r
55 WRITE (TTO,4) TEMP @ TELL THE USER THERE IS SOMETHING REMAINING\r
5630 ENDS=BEGIN+(ENDS-BEGIN)/SPAN*SPAN @ COMPUTE THE END OF THE SPECTRUM TO SCAN\r
57C\r
58 I=NCOND(OVRLAP,2*(ENDS-BEGIN)/SPAN,(ENDS-BEGIN)/SPAN) @ IF THE INTERMEDIATE RESULTS FIT ONTO UNIT 5 THEN\r
59 I=I/4 @ FOUR DATA WORDS PER RECORD\r
60 I=I+STSCAN @ COMPUTE NUMBER OF RECORDS NESESCARY\r
61 IF (MAXBL5.GE.I) GOTO 40 @ RETURN ELSE PRINT AN ERROR MSG\r
62 WRITE (TTO,9) I\r
63 OPTION=0 @ PREVENT LOOPING IF CO*\r
64 GOTO 10\r
65C\r
66C\r
6740 FREQU(1,2)=AMIN1(SAMRAT/2.,FREQU(1,2)) @ HIGHEST FREQUENCY OF THE INPUT SIGNAL --> UPPER LIMIT OF THE FIRST BAND\r
68 IF BREAK(11) RETURN\r
69 CALL ADATE(DA) @ ASK FRTS FOR THE CURRENT DATE AND INSERT IT INTO THE HEADER\r
70 WRITE (3,1) SETNUM,CHANEL,LABEL,DA\r
71 WRITE (3,100) ((FREQU(I,J),J=1,2),I=1,5)\r
72 RETURN\r
73C\r
74C\r
751 FORMAT ('1SATZ:',I3,' KANAL',I2,' :',10A6,2(A2,1H/),A2)\r
76100 FORMAT (1H0,15X,5(F6.1,' -',F6.1,5X))\r
77101 FORMAT (' FUER EEG BAND',I2,' REICHT DIE MESSRATE VON',I4,\r
78 * ' HZ NICHT AUS. BANDGRENZE VERRINGERT.')\r
792 FORMAT (' RECHNUNG SOLL MIT',I5,' SEC UEBER DAS DATENENDE',\r
80 * I5,' SEC HINAUSGEHEN.')\r
813 FORMAT (' DAS PRODUKT AUS MESSRATE',I3,' [HZ] UND SPANNE',\r
82 * I3,' [SEK] IST KEINE ZWEIERPOTENZ.')\r
834 FORMAT (' AM ENDE DES SPEKTRUMS BLEIBEN',F4.1,' SEKUNDEN',\r
84 * ' UNBERUECKSICHTIGT.')\r
856 FORMAT (' MEHR ALS 2048 PUNKTE FUER EINE FFT:',I7)\r
868 FORMAT (' SPANNE MIT',I3,' SEK. GROESSER ALS DIE MESSZEIT',I3\r
87 * ,' SEKUNDEN.')\r
889 FORMAT (' FILE 5 FUER DIE ZWISCHENWERTE ZU KLEIN:',I5,\r
89 * ' SPANNE VERGROESSERN.')\r
90 END\r
91\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