mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			98 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
		
		
			
		
	
	
			98 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								!---------------------------------------------------- decode2
							 | 
						||
| 
								 | 
							
								subroutine decode2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! Get data and parameters from gcom, then call the decoders
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  character fnamex*24
							 | 
						||
| 
								 | 
							
								  integer*2 d2d(30*11025)
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								  include 'gcom1.f90'
							 | 
						||
| 
								 | 
							
								  include 'gcom2.f90'
							 | 
						||
| 
								 | 
							
								  include 'gcom3.f90'
							 | 
						||
| 
								 | 
							
								  include 'gcom4.f90'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! ndecoding  data  Action
							 | 
						||
| 
								 | 
							
								!--------------------------------------
							 | 
						||
| 
								 | 
							
								!    0             Idle
							 | 
						||
| 
								 | 
							
								!    1       d2a   Standard decode, full file
							 | 
						||
| 
								 | 
							
								!    2       y1    Mouse pick, top half
							 | 
						||
| 
								 | 
							
								!    3       y1    Mouse pick, bottom half
							 | 
						||
| 
								 | 
							
								!    4       d2c   Decode recorded file
							 | 
						||
| 
								 | 
							
								!    5       d2a   Mouse pick, main window
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  lenpick=22050                !Length of FSK441 mouse-picked region
							 | 
						||
| 
								 | 
							
								  if(mode(1:4).eq.'JT6M') then
							 | 
						||
| 
								 | 
							
								     lenpick=4*11025
							 | 
						||
| 
								 | 
							
								     if(mousebutton.eq.3) lenpick=10*11025
							 | 
						||
| 
								 | 
							
								  endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  istart=1.0 + 11025*0.001*npingtime - lenpick/2
							 | 
						||
| 
								 | 
							
								  if(istart.lt.2) istart=2
							 | 
						||
| 
								 | 
							
								  if(ndecoding.eq.1) then
							 | 
						||
| 
								 | 
							
								! Normal decoding at end of Rx period (or at t=53s in JT65)
							 | 
						||
| 
								 | 
							
								     istart=1
							 | 
						||
| 
								 | 
							
								     call decode3(d2a,jza,istart,fnamea)
							 | 
						||
| 
								 | 
							
								  else if(ndecoding.eq.2) then
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								! Mouse pick, top half of waterfall
							 | 
						||
| 
								 | 
							
								! The following is empirical:
							 | 
						||
| 
								 | 
							
								     k=2048*ibuf0 + istart - 11025*mod(tbuf(ibuf0),dble(trperiod)) -3850
							 | 
						||
| 
								 | 
							
								     if(k.le.0)      k=k+NRxMax
							 | 
						||
| 
								 | 
							
								     if(k.gt.NrxMax) k=k-NRxMax
							 | 
						||
| 
								 | 
							
								     nt=ntime/86400
							 | 
						||
| 
								 | 
							
								     nt=86400*nt + tbuf(ibuf0)
							 | 
						||
| 
								 | 
							
								     if(receiving.eq.0) nt=nt-trperiod
							 | 
						||
| 
								 | 
							
								     call get_fname(hiscall,nt,trperiod,lauto,fnamex)
							 | 
						||
| 
								 | 
							
								     do i=1,lenpick
							 | 
						||
| 
								 | 
							
								        k=k+1
							 | 
						||
| 
								 | 
							
								        if(k.gt.NrxMax) k=k-NRxMax
							 | 
						||
| 
								 | 
							
								        d2b(i)=dgain*y1(k)
							 | 
						||
| 
								 | 
							
								     enddo
							 | 
						||
| 
								 | 
							
								     call decode3(d2b,lenpick,istart,fnamex)
							 | 
						||
| 
								 | 
							
								  else if(ndecoding.eq.3) then
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								!Mouse pick, bottom half of waterfall
							 | 
						||
| 
								 | 
							
								     ib0=ibuf0-161
							 | 
						||
| 
								 | 
							
								     if(lauto.eq.1 .and. mute.eq.0 .and. transmitting.eq.1) ib0=ibuf0-323
							 | 
						||
| 
								 | 
							
								     if(ib0.lt.1) ib0=ib0+1024
							 | 
						||
| 
								 | 
							
								     k=2048*ib0 + istart - 11025*mod(tbuf(ib0),dble(trperiod)) - 3850
							 | 
						||
| 
								 | 
							
								     if(k.le.0)      k=k+NRxMax
							 | 
						||
| 
								 | 
							
								     if(k.gt.NrxMax) k=k-NRxMax
							 | 
						||
| 
								 | 
							
								     nt=ntime/86400
							 | 
						||
| 
								 | 
							
								     nt=86400*nt + tbuf(ib0)
							 | 
						||
| 
								 | 
							
								     call get_fname(hiscall,nt,trperiod,lauto,fnamex)
							 | 
						||
| 
								 | 
							
								     do i=1,lenpick
							 | 
						||
| 
								 | 
							
								        k=k+1
							 | 
						||
| 
								 | 
							
								        if(k.gt.NrxMax) k=k-NRxMax
							 | 
						||
| 
								 | 
							
								        d2b(i)=dgain*y1(k)
							 | 
						||
| 
								 | 
							
								     enddo
							 | 
						||
| 
								 | 
							
								     call decode3(d2b,lenpick,istart,fnamex)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								!Recorded file
							 | 
						||
| 
								 | 
							
								  else if(ndecoding.eq.4) then
							 | 
						||
| 
								 | 
							
								     jzz=jzc
							 | 
						||
| 
								 | 
							
								     if(mousebutton.eq.0) istart=1
							 | 
						||
| 
								 | 
							
								     if(mousebutton.gt.0) then
							 | 
						||
| 
								 | 
							
								        jzz=lenpick
							 | 
						||
| 
								 | 
							
								        if(mode(1:4).eq.'JT6M') jzz=4*11025
							 | 
						||
| 
								 | 
							
								        istart=istart + 3300 - jzz/2
							 | 
						||
| 
								 | 
							
								        if(istart.lt.2) istart=2
							 | 
						||
| 
								 | 
							
								        if(istart+jzz.gt.jzc) istart=jzc-jzz
							 | 
						||
| 
								 | 
							
								     endif
							 | 
						||
| 
								 | 
							
								     call decode3(d2c(istart),jzz,istart,filename)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  else if(ndecoding.eq.5) then
							 | 
						||
| 
								 | 
							
								! Mouse pick, main window (but not from recorded file)
							 | 
						||
| 
								 | 
							
								     istart=istart - 1512
							 | 
						||
| 
								 | 
							
								     if(istart.lt.2) istart=2
							 | 
						||
| 
								 | 
							
								     if(istart+lenpick.gt.jza) istart=jza-lenpick
							 | 
						||
| 
								 | 
							
								     call decode3(d2a(istart),lenpick,istart,fnamea)
							 | 
						||
| 
								 | 
							
								  endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  fnameb=fnamea
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								999 return
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								end subroutine decode2
							 |