home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG091.ARK
/
UTIL.FOR
< prev
next >
Wrap
Text File
|
1984-04-29
|
5KB
|
188 lines
C*********************************************************************
C
C 1024 point signal processing utility program.
C
C Written by Victor De Pinto, 1979, 1980, 1981, 1982.
C Revised Jan. 27, 1982
C
PROGRAM UTIL
LOGICAL FN1(11), FN2(11), FLG
DIMENSION DAT(2,1024)
DATA FLG / .FALSE. /
WRITE (1,2)
2 FORMAT (' Signal Processing Utility. By Victor De Pinto.
X Jan. 27, 1982'//)
1 WRITE (1,100)
100 FORMAT (' --MAIN MENU-- Select function:'/
X ' 1 WRITE FILE TO CRT'/
X ' 2 CREATE REAL PULSE FILE'/
X ' 3 WINDOW FUNCTIONS (MENU)'/
X ' 4 ARITHMETIC FUNCTIONS (MENU)'/
X ' 5 PRINT FILE ON PRINTER'/
X ' 6 RMS VALUE OF REAL PARTS OF FILE'/
X ' 7 MODIFY FILE'/
X ' 8 TRANSLATE'/
X ' 9 PLOT FUNCTIONS (MENU)'/
X ' 10 RETURN TO OPERATING SYSTEM >> ' )
READ (1,111) J
111 FORMAT (I2)
GO TO (200,300,650,700,205,800,850,450,250,9999),J
GO TO 1
C
C WRITE FILE TO CONSOLE
C
200 L = 1
GO TO 209
C
C WRITE FILE TO LIST DEVICE
C
205 L = 2
C
209 WRITE (1,210)
210 FORMAT (' Data is printed point by point: Real and imaginary.'/
x ' To abort printout, type "Q" on console.'/
x ' ENTER INDEX OF FIRST POINT TO BE PRINTED: ')
READ (1,211) IFIRST
211 FORMAT (I4)
CALL READ ( DAT )
DO 220 J=IFIRST,1023,3
IF ( FLG ) GO TO 220
IF (J .EQ. 1022) GO TO 212
IF (J .EQ. 1023) GO TO 213
WRITE (L,221) J, DAT(1,J+1), DAT(2,J+1), DAT(1,J+2), DAT(2,J+2),
x DAT(1,J+3), DAT(2,J+3)
GO TO 215
212 WRITE (L,221) J, DAT(1,J+1), DAT(2,J+1), DAT(1,J+2), DAT(2,J+2)
GO TO 215
213 WRITE (L,221) J, DAT(1,J+1), DAT(2,J+1)
215 CALL QCHEK ( FLG )
220 CONTINUE
FLG = .FALSE.
221 FORMAT (' ', I4, ': ', 6G12.4)
IF (L .EQ. 2) GO TO 225
WRITE (1,222)
222 FORMAT (' HIT RETURN FOR MENU')
READ (1,111) J
GO TO 1
225 WRITE (L,226)
226 FORMAT (' ')
WRITE (1,226)
GO TO 1
C
C CREATE A PULSE FILE
C
300 WRITE (1,10)
10 FORMAT (' This routine creates a file containing a real
X pulse function.'/
X ' Index values range from 0 through 1023.')
WRITE (1,7)
7 FORMAT (' ENTER FIRST INDEX OF PULSE: ')
READ (1,8) ISTART
8 FORMAT (I4)
WRITE (1,9)
9 FORMAT ('+ENTER LAST INDEX OF PULSE: ')
READ (1,8) IEND
WRITE (1,13)
13 FORMAT ('+ENTER AMPLITUDE: ')
READ (1,6) SCALE
6 FORMAT (F10.0)
DO 14 J=1,ISTART
DAT(1,J) = 0.0
14 DAT(2,J) = 0.0
DO 15 J=IEND,1024
DAT(1,J) = 0.0
15 DAT(2,J) = 0.0
DO 11 J=ISTART,IEND
DAT(2,J+1) = 0.0
11 DAT(1,J+1) = SCALE
WRITE (1,852)
CALL NAME ( FN1 )
CALL OPEN (3, FN1, 0)
WRITE (3) DAT
ENDFILE 3
GO TO 1
C
C WINDOW
C
650 CALL WIND ( DAT )
GO TO 1
C
C ARITHMETIC OPERATIONS TO FILES
C
700 CALL FCHAIN ( 'ARIT COM', 0 )
GO TO 1
C
C PLOTTING FUNCTIONS
C
250 CALL PLOT ( DAT )
GO TO 1
C
C COMPUTE THE RMS LEVEL OF REAL PART OF A FILE
C
800 WRITE (1,801)
801 FORMAT (' THIS ROUTINE COMPUTES THE R.M.S. LEVEL
X OF THE REAL PARTS OF A FILE.')
CALL READ ( DAT )
SUM=0.0
DO 810 J=1,1024
810 SUM=SUM+DAT(1,J)**2
RMS=SQRT( SUM/1024.0)
WRITE (1,815) RMS
815 FORMAT (//' ** THE RMS LEVEL IS ', G14.7,' **'/)
GO TO 1
C
C MODIFY CONTENTS OF A FILE
C
850 WRITE (1,851)
851 FORMAT (' Source filename,')
CALL NAME ( FN1 )
WRITE (1,852)
852 FORMAT (' Destination filename,')
CALL NAME ( FN2 )
CALL OPEN (3, FN1, 0)
READ (3) DAT
ENDFILE 3
854 WRITE (1,855)
855 FORMAT (' What point? (Back to menu if negative) ')
READ (1,860) J
860 FORMAT (I4)
IF (J.LT.0) GO TO 870
WRITE (1,862) DAT(1,J+1), DAT(2,J+1)
862 FORMAT (' Present value is', 2G15.7)
WRITE (1,865)
865 FORMAT (' ENTER REAL PART <CR> IMAGINARY PART:'/)
READ (1,6) DAT(1,J+1), DAT(2,J+1)
GO TO 854
870 CALL OPEN (3, FN2, 0)
WRITE (3) DAT
ENDFILE 3
GO TO 1
C
C TRANSLATE
C
450 WRITE (1,455)
455 FORMAT (' Each data point is shifted circularly by N points.
X Enter N:'/)
READ (1,211) NX
WRITE (1,851)
CALL NAME ( FN1 )
WRITE (1,852)
CALL NAME ( FN2 )
CALL OPEN (3, FN1, 0)
READ (3) DAT
ENDFILE 3
DO 470 J=1,NX
T1 = DAT(1,1024)
T2 = DAT(2,1024)
DO 465 K=1,1023
INDEX = 1024 - K
DAT(1,INDEX+1) = DAT(1,INDEX)
465 DAT(2,INDEX+1) = DAT(2,INDEX)
DAT(1,1) = T1
470 DAT(2,1) = T2
CALL OPEN (3, FN2, 0)
WRITE (3) DAT
ENDFILE 3
GO TO 1
9999 E N D