mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-18 18:12:12 -05:00
81 lines
2.1 KiB
FortranFixed
81 lines
2.1 KiB
FortranFixed
|
subroutine gencw(msg,wpm,freqcw,samfac,TRPeriod,iwave,nwave)
|
||
|
|
||
|
parameter (NMAX=150*11025)
|
||
|
character msg*22,word12*22,word3*22
|
||
|
integer*2 iwave(NMAX)
|
||
|
integer TRPeriod
|
||
|
|
||
|
integer*1 idat(5000),idat1(460),idat2(200),i1
|
||
|
real*8 dt,t,twopi,pha,dpha,tdit,samfac
|
||
|
data twopi/6.283185307d0/
|
||
|
|
||
|
nwords=0
|
||
|
do i=2,22
|
||
|
if(msg(i-1:i).eq.' ') go to 10
|
||
|
if(msg(i:i).eq.' ') then
|
||
|
nwords=nwords+1
|
||
|
j=j0
|
||
|
j0=i+1
|
||
|
endif
|
||
|
enddo
|
||
|
10 ntype=1 !Call1+Call2, CQ+Call
|
||
|
word12=msg
|
||
|
if(nwords.eq.3) then
|
||
|
word3=msg(j:j0-1)
|
||
|
word12(j-1:)=' '
|
||
|
ntype=3 !BC+RO, BC+RRR, BC+73
|
||
|
if(word3.eq.'OOO') ntype=2 !BC+OOO
|
||
|
endif
|
||
|
|
||
|
tdit=1.2d0/wpm !Key-down dit time, seconds
|
||
|
call morse(word12,idat1,nmax1) !Encode part 1 of msg
|
||
|
t1=tdit*nmax1 !Time for part1, once
|
||
|
nrpt1=TRPeriod/t1 !Repetitions of part 1
|
||
|
if(ntype.eq.2) nrpt1=0.75*TRPeriod/t1
|
||
|
if(ntype.eq.3) nrpt1=1
|
||
|
t1=nrpt1*t1 !Total time for part 1
|
||
|
nrpt2=0
|
||
|
t2=0.
|
||
|
if(ntype.ge.2) then
|
||
|
call morse(word3,idat2,nmax2) !Encode part 2
|
||
|
t2=tdit*nmax2 !Time for part 2, once
|
||
|
nrpt2=(TRPeriod-t1)/t2 !Repetitions of part 2
|
||
|
t2=nrpt2*t2 !Total time for part 2
|
||
|
endif
|
||
|
|
||
|
j=0
|
||
|
do n=1,nrpt1
|
||
|
do i=1,nmax1
|
||
|
j=j+1
|
||
|
idat(j)=idat1(i)
|
||
|
enddo
|
||
|
enddo
|
||
|
do n=1,nrpt2
|
||
|
do i=1,nmax2
|
||
|
j=j+1
|
||
|
idat(j)=idat2(i)
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
dt=1.d0/(11025.d0*samfac)
|
||
|
nwave=j*tdit/dt
|
||
|
pha=0.
|
||
|
dpha=twopi*freqcw*dt
|
||
|
t=0.
|
||
|
s=0.
|
||
|
u=wpm/(11025*0.03)
|
||
|
do i=1,nwave
|
||
|
t=t+dt
|
||
|
pha=pha+dpha
|
||
|
j=t/tdit + 1
|
||
|
! iwave(i)=0
|
||
|
! if(idat(j).ne.0) iwave(i)=nint(32767.d0*sin(pha))
|
||
|
s=s + u*(idat(j)-s)
|
||
|
iwave(i)=nint(s*32767.d0*sin(pha))
|
||
|
enddo
|
||
|
|
||
|
return
|
||
|
end
|
||
|
|
||
|
include 'gencwid.f'
|