mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-08 18:16:02 -05:00
96 lines
2.6 KiB
Fortran
96 lines
2.6 KiB
Fortran
|
|
||
|
!---------------------------------------------------- decode3
|
||
|
subroutine decode3(d2,jz,istart,filename)
|
||
|
|
||
|
#ifdef Win32
|
||
|
use dfport
|
||
|
#endif
|
||
|
|
||
|
integer*2 d2(jz),d2d(60*11025)
|
||
|
real*8 sq
|
||
|
character*24 filename
|
||
|
character FileID*40
|
||
|
character mycall0*12,hiscall0*12,hisgrid0*6
|
||
|
logical savefile
|
||
|
include 'gcom1.f90'
|
||
|
include 'gcom2.f90'
|
||
|
|
||
|
if(ichar(filename(1:1)).eq.0) go to 999
|
||
|
|
||
|
FileID=filename
|
||
|
decodedfile=filename
|
||
|
lumsg=11
|
||
|
nqrn=nclip+5
|
||
|
nmode=1
|
||
|
if(mode(1:4).eq.'JT65') then
|
||
|
nmode=2
|
||
|
if(mode(5:5).eq.'A') mode65=1
|
||
|
if(mode(5:5).eq.'B') mode65=2
|
||
|
if(mode(5:5).eq.'C') mode65=4
|
||
|
endif
|
||
|
if(mode.eq.'Echo') nmode=3
|
||
|
if(mode.eq.'JT6M') nmode=4
|
||
|
mode441=1
|
||
|
|
||
|
sum=0.
|
||
|
do i=1,jz
|
||
|
sum=sum+d2(i)
|
||
|
enddo
|
||
|
nave=nint(sum/jz)
|
||
|
do i=1,jz
|
||
|
d2(i)=d2(i)-nave
|
||
|
d2d(i)=d2(i)
|
||
|
enddo
|
||
|
|
||
|
if(nblank.ne.0) call blanker(d2d,jz)
|
||
|
|
||
|
nseg=1
|
||
|
if(mode(1:4).eq.'JT65') then
|
||
|
i=index(FileID,'.')-3
|
||
|
if(FileID(i:i).eq.'1'.or.FileID(i:i).eq.'3'.or.FileID(i:i).eq.'5' &
|
||
|
.or.FileID(i:i).eq.'7'.or.FileID(i:i).eq.'9') nseg=2
|
||
|
endif
|
||
|
|
||
|
open(23,file=appdir(:lenappdir)//'/CALL3.TXT',status='unknown')
|
||
|
call wsjt1(d2d,jz,istart,samfacin,FileID,ndepth,MinSigdB, &
|
||
|
NQRN,DFTolerance,NSaveCum,MouseButton,NClearAve, &
|
||
|
nMode,NFreeze,NAFC,NZap,AppDir,utcdate,mode441,mode65, &
|
||
|
MyCall,HisCall,HisGrid,neme,nsked,naggressive,ntx2,s2, &
|
||
|
ps0,npkept,lumsg,basevb,rmspower,nslim2,psavg,ccf,Nseg, &
|
||
|
MouseDF,NAgain,LDecoded,nspecial,ndf,ss1,ss2)
|
||
|
close(23)
|
||
|
|
||
|
! See whether this file should be saved or erased from disk
|
||
|
if(nsave.eq.1 .and. ldecoded) filetokilla=''
|
||
|
if(nsave.eq.3 .or. (nsave.eq.2 .and. lauto.eq.1)) then
|
||
|
filetokilla=''
|
||
|
filetokillb=''
|
||
|
endif
|
||
|
if(mousebutton.ne.0) filetokilla=''
|
||
|
if(nsavelast.eq.1) filetokillb=''
|
||
|
nsavelast=0
|
||
|
ierr=unlink(filetokillb)
|
||
|
|
||
|
nclearave=0
|
||
|
nagain=0
|
||
|
if(mode(1:4).eq.'JT65') then
|
||
|
call pix2d65(d2d,jz)
|
||
|
else if(mode.eq.'FSK441') then
|
||
|
nz=s2(1,1)
|
||
|
call pix2d(d2d,jz,mousebutton,s2,64,nz,b)
|
||
|
else if(mode(1:4).eq.'JT6M' .and. mousebutton.eq.0) then
|
||
|
nz=s2(1,1)
|
||
|
call pix2d(d2d,jz,mousebutton,s2,64,nz,b)
|
||
|
endif
|
||
|
|
||
|
! Compute red and magenta cutves for small plot area, FSK441/JT6M only
|
||
|
if(mode.eq.'FSK441' .or. mode.eq.'JT6M') then
|
||
|
do i=1,128
|
||
|
if(mode.eq.'FSK441' .and. ps0(i).gt.0.0) ps0(i)=10.0*log10(ps0(i))
|
||
|
if(psavg(i).gt.0.0) psavg(i)=10.0*log10(psavg(i))
|
||
|
enddo
|
||
|
endif
|
||
|
|
||
|
999 return
|
||
|
end subroutine decode3
|