mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 13:48:42 -05:00
56 lines
1.5 KiB
Fortran
56 lines
1.5 KiB
Fortran
|
subroutine geniscat(msg,msgsent,itone)
|
||
|
|
||
|
! Generate an ISCAT waveform.
|
||
|
|
||
|
parameter (NSZ=1291)
|
||
|
character msg*28,msgsent*28 !Message to be transmitted
|
||
|
integer imsg(30)
|
||
|
integer itone(NSZ)
|
||
|
real*8 sps
|
||
|
character c*42
|
||
|
integer icos(4) !Costas array
|
||
|
data icos/0,1,3,2/
|
||
|
data nsync/4/,nlen/2/,ndat/18/
|
||
|
data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ /.?@-'/
|
||
|
|
||
|
sps=256.d0*12000.d0/11025.d0
|
||
|
nsym=int(30*12000.d0/sps)
|
||
|
nblk=nsync+nlen+ndat
|
||
|
|
||
|
do i=22,1,-1
|
||
|
if(msg(i:i).ne.' ' .and. msg(i:i).ne.char(0)) exit
|
||
|
enddo
|
||
|
nmsg=i
|
||
|
msglen=nmsg+1
|
||
|
k=0
|
||
|
kk=1
|
||
|
imsg(1)=40 !Always start with BOM char: '@'
|
||
|
do i=1,nmsg !Define the tone sequence
|
||
|
imsg(i+1)=36 !Illegal char set to blank
|
||
|
do j=1,42
|
||
|
if(msg(i:i).eq.c(j:j)) imsg(i+1)=j-1
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
do i=1,nsym !Total symbols in 30 s
|
||
|
j=mod(i-1,nblk)+1
|
||
|
if(j.le.nsync) then
|
||
|
itone(i)=icos(j) !Insert 4x4 Costas array
|
||
|
else if(j.gt.nsync .and. j.le.nsync+nlen) then
|
||
|
itone(i)=msglen !Insert message-length indicator
|
||
|
if(j.ge.nsync+2) then
|
||
|
n=msglen + 5*(j-nsync-1)
|
||
|
if(n.gt.41) n=n-42
|
||
|
itone(i)=n
|
||
|
endif
|
||
|
else
|
||
|
k=k+1
|
||
|
kk=mod(k-1,msglen)+1
|
||
|
itone(i)=imsg(kk)
|
||
|
endif
|
||
|
enddo
|
||
|
msgsent=msg
|
||
|
|
||
|
return
|
||
|
end subroutine geniscat
|