mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -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
							 |