mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-12 15:16:41 -05:00
2c17544f3f
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/WSJT/trunk@1 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
50 lines
1.6 KiB
Fortran
50 lines
1.6 KiB
Fortran
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
|