mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 21:58:38 -05:00
50 lines
1.6 KiB
FortranFixed
50 lines
1.6 KiB
FortranFixed
|
subroutine gen6m(msg,samfac,iwave,nwave)
|
||
|
|
||
|
C Encodes a message into a wavefile for transmitting JT6M signals.
|
||
|
|
||
|
parameter (NMAX=21504) !NMAX=28*512*3/2: number of waveform samples
|
||
|
character*28 msg !Message to be generated
|
||
|
real*8 samfac
|
||
|
real*4 x(NMAX) !Data for wavefile
|
||
|
integer*2 iwave(NMAX) !Generated wave file
|
||
|
integer*4 imsg(28)
|
||
|
|
||
|
do i=27,1,-1 !Get message length
|
||
|
if(msg(i:i).ne.' ') go to 10
|
||
|
enddo
|
||
|
i=1
|
||
|
10 nmsg=i+1
|
||
|
if(mod(nmsg,2).eq.1) nmsg=nmsg+1 !Make it even
|
||
|
|
||
|
nwave=nmsg*512*3/2
|
||
|
do m=1,nmsg !Get character code numbers
|
||
|
ic=m
|
||
|
n=ichar(msg(ic:ic))
|
||
|
C Calculate i in range 0-42:
|
||
|
if(n.ge.ichar('0') .and. n.le.ichar('9')) i=n-ichar('0')
|
||
|
if(msg(ic:ic).eq.'.') i=10
|
||
|
if(msg(ic:ic).eq.',') i=11
|
||
|
if(msg(ic:ic).eq.' ') i=12
|
||
|
if(msg(ic:ic).eq.'/') i=13
|
||
|
if(msg(ic:ic).eq.'#') i=14
|
||
|
if(msg(ic:ic).eq.'?') i=15
|
||
|
if(msg(ic:ic).eq.'$') i=16
|
||
|
if(n.ge.ichar('a') .and. n.le.ichar('z')) i=n-ichar('a')+17
|
||
|
if(n.ge.ichar('A') .and. n.le.ichar('Z')) i=n-ichar('A')+17
|
||
|
imsg(m)=i
|
||
|
enddo
|
||
|
|
||
|
k=1
|
||
|
do i=1,nmsg,2
|
||
|
call gentone(x(k),-1,k) !Generate a sync tone
|
||
|
call gentone(x(k),imsg(i),k) !First character
|
||
|
call gentone(x(k),imsg(i+1),k) !Second character
|
||
|
enddo
|
||
|
|
||
|
do i=1,nwave
|
||
|
iwave(i)=nint(32767.0*x(i))
|
||
|
enddo
|
||
|
|
||
|
return
|
||
|
end
|